diff --git a/.cppcheck_suppressions b/.cppcheck_suppressions index 5b140152e7f08..b2ef5ac6c3f7e 100644 --- a/.cppcheck_suppressions +++ b/.cppcheck_suppressions @@ -1,21 +1,10 @@ -arrayIndexThenCheck -assignBoolToFloat +*:*/test/* + checkersReport -constParameterPointer constParameterReference -constStatement -constVariable -constVariablePointer constVariableReference -containerOutOfBounds +// cspell: ignore cstyle cstyleCast -ctuOneDefinitionRuleViolation -current_deleted_index -duplicateAssignExpression -duplicateBranch -duplicateBreak -duplicateCondition -duplicateExpression funcArgNamesDifferent functionConst functionStatic @@ -23,37 +12,24 @@ invalidPointerCast knownConditionTrueFalse missingInclude missingIncludeSystem -multiCondition noConstructor noExplicitConstructor noValidConfiguration -obstacle_cruise_planner passedByValue preprocessorErrorDirective -redundantAssignment -redundantContinue -redundantIfRemove redundantInitialization -returnByReference -selfAssignment -shadowArgument shadowFunction shadowVariable -stlFindInsert syntaxError +// cspell: ignore uninit uninitMemberVar unknownMacro unmatchedSuppression -unpreciseMathCall unreadVariable -unsignedLessThanZero unusedFunction -unusedScopedObject unusedStructMember -unusedVariable useInitializationList useStlAlgorithm -uselessCallsSubstr uselessOverride variableScope virtualCallInConstructor diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index df8673cd68724..1f25372c14d71 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,11 +1,15 @@ ### Automatically generated from package.xml ### common/autoware_ad_api_specs/** isamu.takagi@tier4.jp ryohsuke.mitsudome@tier4.jp common/autoware_auto_common/** opensource@apex.ai satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp +common/autoware_grid_map_utils/** maxime.clement@tier4.jp +common/autoware_motion_utils/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp common/autoware_overlay_rviz_plugin/autoware_mission_details_overlay_rviz_plugin/** ahmed.ebrahim@leodrive.ai common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/** khalil@leodrive.ai common/autoware_perception_rviz_plugin/** opensource@apex.ai satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp taiki.tanaka@tier4.jp takeshi.miura@tier4.jp yoshi.ri@tier4.jp common/autoware_point_types/** taichi.higashide@tier4.jp +common/autoware_test_utils/** kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp takamasa.horibe@tier4.jp zulfaqar.azmi@tier4.jp common/autoware_testing/** adam.dabrowski@robotec.ai satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp +common/autoware_universe_utils/** mamoru.sobue@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp common/bag_time_manager_rviz_plugin/** taiki.tanaka@tier4.jp common/component_interface_specs/** isamu.takagi@tier4.jp yukihiro.saito@tier4.jp common/component_interface_tools/** isamu.takagi@tier4.jp @@ -16,10 +20,8 @@ common/geography_utils/** koji.minoda@tier4.jp common/global_parameter_loader/** ryohsuke.mitsudome@tier4.jp common/glog_component/** takamasa.horibe@tier4.jp common/goal_distance_calculator/** taiki.tanaka@tier4.jp -common/autoware_grid_map_utils/** maxime.clement@tier4.jp common/interpolation/** fumiya.watanabe@tier4.jp takayuki.murooka@tier4.jp common/kalman_filter/** koji.minoda@tier4.jp takeshi.ishita@tier4.jp yukihiro.saito@tier4.jp -common/autoware_motion_utils/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp common/object_recognition_utils/** satoshi.tanaka@tier4.jp shunsuke.miura@tier4.jp takayuki.murooka@tier4.jp yoshi.ri@tier4.jp common/osqp_interface/** fumiya.watanabe@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp takayuki.murooka@tier4.jp common/path_distance_calculator/** isamu.takagi@tier4.jp @@ -30,7 +32,6 @@ common/signal_processing/** ali.boyali@tier4.jp fumiya.watanabe@tier4.jp kyoichi common/tensorrt_common/** dan.umeda@tier4.jp manato.hirabayashi@tier4.jp common/tier4_adapi_rviz_plugin/** hiroki.ota@tier4.jp isamu.takagi@tier4.jp kosuke.takeuchi@tier4.jp common/tier4_api_utils/** isamu.takagi@tier4.jp -common/autoware_universe_utils/** mamoru.sobue@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp common/tier4_camera_view_rviz_plugin/** makoto.ybauta@tier4.jp uken.ryu@tier4.jp common/tier4_datetime_rviz_plugin/** isamu.takagi@tier4.jp common/tier4_localization_rviz_plugin/** isamu.takagi@tier4.jp takamasa.horibe@tier4.jp @@ -50,24 +51,23 @@ control/autoware_external_cmd_selector/** fumiya.watanabe@tier4.jp satoshi.ota@t control/autoware_joy_controller/** fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp control/autoware_lane_departure_checker/** kyoichi.sugahara@tier4.jp makoto.kurihara@tier4.jp zulfaqar.azmi@tier4.jp control/autoware_mpc_lateral_controller/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp +control/autoware_operation_mode_transition_manager/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp control/autoware_pid_longitudinal_controller/** mamoru.sobue@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp +control/autoware_pure_pursuit/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp +control/autoware_shift_decider/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp control/autoware_smart_mpc_trajectory_follower/** kosuke.takeuchi@tier4.jp masayuki.aino@proxima-ai-tech.com takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp +control/autoware_trajectory_follower_base/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp +control/autoware_trajectory_follower_node/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp control/autoware_vehicle_cmd_gate/** takamasa.horibe@tier4.jp tomoya.kimura@tier4.jp control/control_performance_analysis/** berkay@leodrive.ai fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp control/obstacle_collision_checker/** fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp -control/operation_mode_transition_manager/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp control/predicted_path_checker/** berkay@leodrive.ai -control/autoware_smart_mpc_trajectory_follower/** masayuki.aino@proxima-ai-tech.com -control/autoware_trajectory_follower_base/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp -control/pure_pursuit/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp -control/shift_decider/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp -control/autoware_trajectory_follower_node/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp evaluator/autoware_control_evaluator/** daniel.sanchez@tier4.jp takayuki.murooka@tier4.jp +evaluator/autoware_planning_evaluator/** kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp evaluator/diagnostic_converter/** kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp takamasa.horibe@tier4.jp evaluator/kinematic_evaluator/** dominik.jargot@robotec.ai fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp evaluator/localization_evaluator/** dominik.jargot@robotec.ai koji.minoda@tier4.jp evaluator/perception_online_evaluator/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp kotaro.uetake@tier4.jp kyoichi.sugahara@tier4.jp shunsuke.miura@tier4.jp yoshi.ri@tier4.jp -evaluator/autoware_planning_evaluator/** kyoichi.sugahara@tier4.jp maxime.clement@tier4.jp launch/tier4_autoware_api_launch/** isamu.takagi@tier4.jp ryohsuke.mitsudome@tier4.jp launch/tier4_control_launch/** takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp launch/tier4_localization_launch/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp @@ -78,21 +78,20 @@ launch/tier4_sensing_launch/** yukihiro.saito@tier4.jp launch/tier4_simulator_launch/** keisuke.shima@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp launch/tier4_system_launch/** fumihito.ito@tier4.jp tetsuhiro.kawaguchi@tier4.jp launch/tier4_vehicle_launch/** yukihiro.saito@tier4.jp +localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp +localization/autoware_landmark_based_localizer/autoware_landmark_manager/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/autoware_pose_covariance_modifier/** melike@leodrive.ai +localization/autoware_stop_filter/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/ekf_localizer/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp takamasa.horibe@tier4.jp takeshi.ishita@tier4.jp yamato.ando@tier4.jp localization/geo_pose_projector/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/gyro_odometer/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp -localization/landmark_based_localizer/ar_tag_based_localizer/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp -localization/landmark_based_localizer/landmark_manager/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/localization_error_monitor/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/localization_util/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/ndt_scan_matcher/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/pose2twist/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp -localization/pose_estimator_arbiter/** kento.yabuuchi.2@tier4.jp +localization/pose_estimator_arbiter/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/pose_initializer/** anh.nguyen.2@tier4.jp isamu.takagi@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/pose_instability_detector/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp -localization/stop_filter/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp -localization/tree_structured_parzen_estimator/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/twist2accel/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp koji.minoda@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/yabloc/yabloc_common/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp localization/yabloc/yabloc_image_processing/** anh.nguyen.2@tier4.jp kento.yabuuchi.2@tier4.jp masahiro.sakamoto@tier4.jp ryu.yamamoto@tier4.jp shintaro.sakoda@tier4.jp taiki.yamada@tier4.jp yamato.ando@tier4.jp @@ -120,7 +119,6 @@ perception/lidar_apollo_instance_segmentation/** yukihiro.saito@tier4.jp perception/lidar_apollo_segmentation_tvm/** ambroise.vincent@arm.com xinyu.wang@tier4.jp perception/lidar_apollo_segmentation_tvm_nodes/** ambroise.vincent@arm.com xinyu.wang@tier4.jp perception/lidar_centerpoint/** kenzo.lobos@tier4.jp koji.minoda@tier4.jp -perception/lidar_centerpoint_tvm/** carl.liu@autocore.ai xinyu.wang@tier4.jp perception/lidar_transfusion/** amadeusz.szymko.2@tier4.jp kenzo.lobos@tier4.jp satoshi.tanaka@tier4.jp perception/multi_object_tracker/** taekjin.lee@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp perception/object_merger/** taekjin.lee@tier4.jp yoshi.ri@tier4.jp yukihiro.saito@tier4.jp @@ -146,71 +144,58 @@ perception/traffic_light_map_based_detector/** shunsuke.miura@tier4.jp tao.zhong perception/traffic_light_multi_camera_fusion/** shunsuke.miura@tier4.jp tao.zhong@tier4.jp perception/traffic_light_occlusion_predictor/** shunsuke.miura@tier4.jp tao.zhong@tier4.jp perception/traffic_light_visualization/** tao.zhong@tier4.jp yukihiro.saito@tier4.jp -planning/autoware_behavior_path_avoidance_by_lane_change_module/** fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp -planning/autoware_behavior_path_dynamic_obstacle_avoidance_module/** kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp takayuki.murooka@tier4.jp yuki.takagi@tier4.jp -planning/autoware_behavior_path_external_request_lane_change_module/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp -planning/autoware_behavior_path_goal_planner_module/** daniel.sanchez@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/autoware_behavior_path_lane_change_module/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp -planning/autoware_behavior_path_planner_common/** daniel.sanchez@tier4.jp fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp -planning/autoware_behavior_path_side_shift_module/** fumiya.watanabe@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/autoware_behavior_path_start_planner_module/** daniel.sanchez@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/autoware_behavior_path_static_obstacle_avoidance_module/** fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/** mamoru.sobue@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/** kyoichi.sugahara@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/** kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/** shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_planner/** kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp makoto.kurihara@tier4.jp mamoru.sobue@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takayuki.murooka@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/** fumiya.watanabe@tier4.jp isamu.takagi@tier4.jp mamoru.sobue@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_run_out_module/** kosuke.takeuchi@tier4.jp makoto.kurihara@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_stop_line_module/** fumiya.watanabe@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_template_module/** daniel.sanchez@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/** mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_virtual_traffic_light_module/** kosuke.takeuchi@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/autoware_behavior_velocity_walkway_module/** satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp planning/autoware_costmap_generator/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp planning/autoware_external_velocity_limit_selector/** satoshi.ota@tier4.jp shinnosuke.hirakawa@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp planning/autoware_freespace_planner/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp planning/autoware_freespace_planning_algorithms/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp planning/autoware_mission_planner/** isamu.takagi@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp ryohsuke.mitsudome@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp planning/autoware_objects_of_interest_marker_interface/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp zulfaqar.azmi@tier4.jp +planning/autoware_obstacle_cruise_planner/** kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp takayuki.murooka@tier4.jp yuki.takagi@tier4.jp +planning/autoware_obstacle_stop_planner/** berkay@leodrive.ai bnk@leodrive.ai satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp planning/autoware_path_optimizer/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp planning/autoware_path_smoother/** maxime.clement@tier4.jp takayuki.murooka@tier4.jp planning/autoware_planning_test_manager/** kyoichi.sugahara@tier4.jp takamasa.horibe@tier4.jp planning/autoware_planning_topic_converter/** kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp planning/autoware_planning_validator/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp planning/autoware_remaining_distance_time_calculator/** ahmed.ebrahim@leodrive.ai +planning/autoware_route_handler/** alqudah.mohammad@tier4.jp fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp takayuki.murooka@tier4.jp zulfaqar.azmi@tier4.jp planning/autoware_rtc_interface/** fumiya.watanabe@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp taiki.tanaka@tier4.jp planning/autoware_scenario_selector/** fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp planning/autoware_static_centerline_generator/** kosuke.takeuchi@tier4.jp takayuki.murooka@tier4.jp planning/autoware_surround_obstacle_checker/** go.sakayori@tier4.jp satoshi.ota@tier4.jp planning/autoware_velocity_smoother/** fumiya.watanabe@tier4.jp makoto.kurihara@tier4.jp satoshi.ota@tier4.jp takamasa.horibe@tier4.jp -planning/behavior_path_planner/** fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp -planning/autoware_behavior_path_sampling_planner_module/** daniel.sanchez@tier4.jp maxime.clement@tier4.jp -planning/autoware_behavior_path_side_shift_module/** fumiya.watanabe@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/autoware_behavior_path_start_planner_module/** daniel.sanchez@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/autoware_behavior_path_side_shift_module/** fumiya.watanabe@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_path_start_planner_module/** daniel.sanchez@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/** fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/** kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp takayuki.murooka@tier4.jp yuki.takagi@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_external_request_lane_change_module/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/** daniel.sanchez@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_lane_change_module/** alqudah.mohammad@tier4.jp fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_planner/** fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_planner_common/** daniel.sanchez@tier4.jp fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/** daniel.sanchez@tier4.jp maxime.clement@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_side_shift_module/** fumiya.watanabe@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_start_planner_module/** daniel.sanchez@tier4.jp kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/** fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp zulfaqar.azmi@tier4.jp planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/** mamoru.sobue@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/** kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp yuki.takagi@tier4.jp -planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/** ahmed.ebrahim@leodrive.ai fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/** kyoichi.sugahara@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/** kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/** ahmed.ebrahim@leodrive.ai fumiya.watanabe@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takamasa.horibe@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/** kosuke.takeuchi@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/** shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_planner/** kosuke.takeuchi@tier4.jp kyoichi.sugahara@tier4.jp makoto.kurihara@tier4.jp mamoru.sobue@tier4.jp maxime.clement@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp takayuki.murooka@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/** fumiya.watanabe@tier4.jp isamu.takagi@tier4.jp mamoru.sobue@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp planning/behavior_velocity_planner/autoware_behavior_velocity_run_out_module/** kosuke.takeuchi@tier4.jp makoto.kurihara@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomohito.ando@tier4.jp tomoya.kimura@tier4.jp -planning/behavior_velocity_planner/behavior_velocity_speed_bump_module/** mdogru@leodrive.ai shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_speed_bump_module/** mdogru@leodrive.ai shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_stop_line_module/** fumiya.watanabe@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp zhe.shen@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_template_module/** daniel.sanchez@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module/** mamoru.sobue@tier4.jp satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_virtual_traffic_light_module/** kosuke.takeuchi@tier4.jp shumpei.wakabayashi@tier4.jp tomoya.kimura@tier4.jp +planning/behavior_velocity_planner/autoware_behavior_velocity_walkway_module/** satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp planning/motion_velocity_planner/autoware_motion_velocity_dynamic_obstacle_stop_module/** mamoru.sobue@tier4.jp maxime.clement@tier4.jp planning/motion_velocity_planner/autoware_motion_velocity_obstacle_velocity_limiter_module/** maxime.clement@tier4.jp planning/motion_velocity_planner/autoware_motion_velocity_out_of_lane_module/** maxime.clement@tier4.jp shumpei.wakabayashi@tier4.jp takayuki.murooka@tier4.jp tomoya.kimura@tier4.jp planning/motion_velocity_planner/autoware_motion_velocity_planner_common/** maxime.clement@tier4.jp planning/motion_velocity_planner/autoware_motion_velocity_planner_node/** maxime.clement@tier4.jp -planning/autoware_objects_of_interest_marker_interface/** fumiya.watanabe@tier4.jp kosuke.takeuchi@tier4.jp zulfaqar.azmi@tier4.jp -planning/autoware_obstacle_cruise_planner/** kosuke.takeuchi@tier4.jp satoshi.ota@tier4.jp takayuki.murooka@tier4.jp yuki.takagi@tier4.jp -planning/obstacle_stop_planner/** berkay@leodrive.ai bnk@leodrive.ai satoshi.ota@tier4.jp shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp -planning/planning_test_utils/** kyoichi.sugahara@tier4.jp mamoru.sobue@tier4.jp takamasa.horibe@tier4.jp zulfaqar.azmi@tier4.jp -planning/planning_validator/** kosuke.takeuchi@tier4.jp takamasa.horibe@tier4.jp -planning/autoware_route_handler/** fumiya.watanabe@tier4.jp go.sakayori@tier4.jp kosuke.takeuchi@tier4.jp mamoru.sobue@tier4.jp takayuki.murooka@tier4.jp zulfaqar.azmi@tier4.jp -planning/rtc_interface/** fumiya.watanabe@tier4.jp kyoichi.sugahara@tier4.jp satoshi.ota@tier4.jp taiki.tanaka@tier4.jp -planning/rtc_replayer/** fumiya.watanabe@tier4.jp taiki.tanaka@tier4.jp planning/sampling_based_planner/autoware_bezier_sampler/** maxime.clement@tier4.jp planning/sampling_based_planner/autoware_frenet_planner/** maxime.clement@tier4.jp planning/sampling_based_planner/autoware_path_sampler/** maxime.clement@tier4.jp @@ -254,9 +239,9 @@ system/system_monitor/** fumihito.ito@tier4.jp tetsuhiro.kawaguchi@tier4.jp system/topic_state_monitor/** ryohsuke.mitsudome@tier4.jp system/velodyne_monitor/** fumihito.ito@tier4.jp tools/reaction_analyzer/** berkay@leodrive.ai -vehicle/autoware_accel_brake_map_calibrator/** taiki.tanaka@tier4.jp takeshi.miura@tier4.jp tomoya.kimura@tier4.jp +vehicle/autoware_accel_brake_map_calibrator/** eiki.nagata.2@tier4.jp taiki.tanaka@tier4.jp takeshi.miura@tier4.jp tomoya.kimura@tier4.jp vehicle/autoware_external_cmd_converter/** eiki.nagata.2@tier4.jp takamasa.horibe@tier4.jp -vehicle/autoware_raw_vehicle_cmd_converter/** makoto.kurihara@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp +vehicle/autoware_raw_vehicle_cmd_converter/** makoto.kurihara@tier4.jp sho.iwasawa.2@tier4.jp taiki.tanaka@tier4.jp takamasa.horibe@tier4.jp vehicle/autoware_steer_offset_estimator/** taiki.tanaka@tier4.jp vehicle/autoware_vehicle_info_utils/** shumpei.wakabayashi@tier4.jp taiki.tanaka@tier4.jp tomoya.kimura@tier4.jp diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 97b0e95452426..0000000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -**Note**: Confirm the [contribution guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/) before submitting a pull request. - -Click the `Preview` tab and select a PR template: - -- [Standard change](?expand=1&template=standard-change.md) -- [Small change](?expand=1&template=small-change.md) - -**Do NOT send a PR with this description.** diff --git a/.github/PULL_REQUEST_TEMPLATE/small-change.md b/.github/PULL_REQUEST_TEMPLATE/small-change.md deleted file mode 100644 index e15fdd992d114..0000000000000 --- a/.github/PULL_REQUEST_TEMPLATE/small-change.md +++ /dev/null @@ -1,44 +0,0 @@ -## Description - - - -## Tests performed - - - - -Not applicable. - -## Effects on system behavior - - - -Not applicable. - -## Interface changes - - - -## Pre-review checklist for the PR author - -The PR author **must** check the checkboxes below when creating the PR. - -- [ ] I've confirmed the [contribution guidelines]. -- [ ] The PR follows the [pull request guidelines]. - -## In-review checklist for the PR reviewers - -The PR reviewers **must** check the checkboxes below before approval. - -- [ ] The PR follows the [pull request guidelines]. - -## Post-review checklist for the PR author - -The PR author **must** check the checkboxes below before merging. - -- [ ] There are no open discussions or they are tracked via tickets. - -After all checkboxes are checked, anyone who has write access can merge the PR. - -[contribution guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/ -[pull request guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/ diff --git a/.github/PULL_REQUEST_TEMPLATE/standard-change.md b/.github/PULL_REQUEST_TEMPLATE/standard-change.md deleted file mode 100644 index 391af629751e0..0000000000000 --- a/.github/PULL_REQUEST_TEMPLATE/standard-change.md +++ /dev/null @@ -1,63 +0,0 @@ -## Description - - - -## Related links - - - -## Tests performed - - - -## Notes for reviewers - - - -## Interface changes - - - -### ROS Topic Changes - - - - - - -### ROS Parameter Changes - - - - - -## Effects on system behavior - - - -## Pre-review checklist for the PR author - -The PR author **must** check the checkboxes below when creating the PR. - -- [ ] I've confirmed the [contribution guidelines]. -- [ ] The PR follows the [pull request guidelines]. - -## In-review checklist for the PR reviewers - -The PR reviewers **must** check the checkboxes below before approval. - -- [ ] The PR follows the [pull request guidelines]. -- [ ] The PR has been properly tested. -- [ ] The PR has been reviewed by the code owners. - -## Post-review checklist for the PR author - -The PR author **must** check the checkboxes below before merging. - -- [ ] There are no open discussions or they are tracked via tickets. -- [ ] The PR is ready for merge. - -After all checkboxes are checked, anyone who has write access can merge the PR. - -[contribution guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/ -[pull request guidelines]: https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/ diff --git a/.github/cppcheck-problem-matcher.json b/.github/cppcheck-problem-matcher.json new file mode 100644 index 0000000000000..3b18feccd9bd2 --- /dev/null +++ b/.github/cppcheck-problem-matcher.json @@ -0,0 +1,16 @@ +{ + "problemMatcher": [ + { + "owner": "cppcheck", + "pattern": [ + { + "regexp": "^([^:]+):(\\d+):(\\d*):\\s(style|portability|performance|warning|error):\\s(.*)$", + "file": 1, + "line": 2, + "column": 3, + "message": 5 + } + ] + } + ] +} diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000000000..fcaf3601fef92 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,61 @@ +## Description + +## Related links + +**Parent Issue:** + +- Link + + + +## How was this PR tested? + +## Notes for reviewers + +None. + +## Interface changes + +None. + + + +## Effects on system behavior + +None. diff --git a/.github/sync-files.yaml b/.github/sync-files.yaml index 263df86438787..151890e2783d9 100644 --- a/.github/sync-files.yaml +++ b/.github/sync-files.yaml @@ -7,9 +7,6 @@ - source: .github/ISSUE_TEMPLATE/bug.yaml - source: .github/ISSUE_TEMPLATE/config.yml - source: .github/ISSUE_TEMPLATE/task.yaml - - source: .github/PULL_REQUEST_TEMPLATE.md - - source: .github/PULL_REQUEST_TEMPLATE/small-change.md - - source: .github/PULL_REQUEST_TEMPLATE/standard-change.md - source: .github/dependabot.yaml - source: .github/stale.yml - source: .github/workflows/cancel-previous-workflows.yaml diff --git a/.github/workflows/build-and-test-daily-arm64.yaml b/.github/workflows/build-and-test-daily-arm64.yaml index ee9caae26e5d6..65196f5b77a35 100644 --- a/.github/workflows/build-and-test-daily-arm64.yaml +++ b/.github/workflows/build-and-test-daily-arm64.yaml @@ -37,6 +37,16 @@ jobs: id: get-self-packages uses: autowarefoundation/autoware-github-actions/get-self-packages@v1 + - name: Export CUDA state as a variable for adding to cache key + run: | + build_type_cuda_state=nocuda + if [[ "${{ matrix.container-suffix }}" == "-cuda" ]]; then + build_type_cuda_state=cuda + fi + echo "BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" >> "${GITHUB_ENV}" + echo "::notice::BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" + shell: bash + - name: Build if: ${{ steps.get-self-packages.outputs.self-packages != '' }} uses: autowarefoundation/autoware-github-actions/colcon-build@v1 @@ -44,6 +54,7 @@ jobs: rosdistro: ${{ matrix.rosdistro }} target-packages: ${{ steps.get-self-packages.outputs.self-packages }} build-depends-repos: ${{ matrix.build-depends-repos }} + cache-key-element: ${{ env.BUILD_TYPE_CUDA_STATE }} - name: Test if: ${{ steps.get-self-packages.outputs.self-packages != '' }} @@ -62,6 +73,7 @@ jobs: fail_ci_if_error: false verbose: true flags: total-arm64 + token: ${{ secrets.CODECOV_TOKEN }} - name: Show disk space after the tasks run: df -h diff --git a/.github/workflows/build-and-test-daily.yaml b/.github/workflows/build-and-test-daily.yaml index 50e259053de46..816bcd412bb4c 100644 --- a/.github/workflows/build-and-test-daily.yaml +++ b/.github/workflows/build-and-test-daily.yaml @@ -37,6 +37,16 @@ jobs: id: get-self-packages uses: autowarefoundation/autoware-github-actions/get-self-packages@v1 + - name: Export CUDA state as a variable for adding to cache key + run: | + build_type_cuda_state=nocuda + if [[ "${{ matrix.container-suffix }}" == "-cuda" ]]; then + build_type_cuda_state=cuda + fi + echo "BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" >> "${GITHUB_ENV}" + echo "::notice::BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" + shell: bash + - name: Build if: ${{ steps.get-self-packages.outputs.self-packages != '' }} uses: autowarefoundation/autoware-github-actions/colcon-build@v1 @@ -44,6 +54,7 @@ jobs: rosdistro: ${{ matrix.rosdistro }} target-packages: ${{ steps.get-self-packages.outputs.self-packages }} build-depends-repos: ${{ matrix.build-depends-repos }} + cache-key-element: ${{ env.BUILD_TYPE_CUDA_STATE }} - name: Test if: ${{ steps.get-self-packages.outputs.self-packages != '' }} @@ -62,6 +73,7 @@ jobs: fail_ci_if_error: false verbose: true flags: total + token: ${{ secrets.CODECOV_TOKEN }} - name: Show disk space after the tasks run: df -h diff --git a/.github/workflows/build-and-test-differential-arm64.yaml b/.github/workflows/build-and-test-differential-arm64.yaml index 8f333a3ab22d1..3be2792e0929d 100644 --- a/.github/workflows/build-and-test-differential-arm64.yaml +++ b/.github/workflows/build-and-test-differential-arm64.yaml @@ -51,6 +51,16 @@ jobs: id: get-modified-packages uses: autowarefoundation/autoware-github-actions/get-modified-packages@v1 + - name: Export CUDA state as a variable for adding to cache key + run: | + build_type_cuda_state=nocuda + if [[ "${{ matrix.container-suffix }}" == "-cuda" ]]; then + build_type_cuda_state=cuda + fi + echo "BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" >> "${GITHUB_ENV}" + echo "::notice::BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" + shell: bash + - name: Build if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} uses: autowarefoundation/autoware-github-actions/colcon-build@v1 @@ -58,6 +68,7 @@ jobs: rosdistro: ${{ matrix.rosdistro }} target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }} build-depends-repos: ${{ matrix.build-depends-repos }} + cache-key-element: ${{ env.BUILD_TYPE_CUDA_STATE }} - name: Test id: test @@ -76,6 +87,7 @@ jobs: fail_ci_if_error: false verbose: true flags: differential-arm64 + token: ${{ secrets.CODECOV_TOKEN }} - name: Show disk space after the tasks run: df -h diff --git a/.github/workflows/build-and-test-differential.yaml b/.github/workflows/build-and-test-differential.yaml index e789b8744f03d..a95a070d19bd4 100644 --- a/.github/workflows/build-and-test-differential.yaml +++ b/.github/workflows/build-and-test-differential.yaml @@ -74,6 +74,16 @@ jobs: run: du -sh ${CCACHE_DIR} && ccache -s shell: bash + - name: Export CUDA state as a variable for adding to cache key + run: | + build_type_cuda_state=nocuda + if [[ "${{ matrix.container-suffix }}" == "-cuda" ]]; then + build_type_cuda_state=cuda + fi + echo "BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" >> "${GITHUB_ENV}" + echo "::notice::BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" + shell: bash + - name: Build if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} uses: autowarefoundation/autoware-github-actions/colcon-build@v1 @@ -81,6 +91,7 @@ jobs: rosdistro: ${{ matrix.rosdistro }} target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }} build-depends-repos: ${{ matrix.build-depends-repos }} + cache-key-element: ${{ env.BUILD_TYPE_CUDA_STATE }} - name: Show ccache stats after build run: du -sh ${CCACHE_DIR} && ccache -s @@ -103,6 +114,51 @@ jobs: fail_ci_if_error: false verbose: true flags: differential + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Show disk space after the tasks + run: df -h + + clang-tidy-differential: + needs: build-and-test-differential + runs-on: ubuntu-latest + container: ghcr.io/autowarefoundation/autoware:latest-prebuilt-cuda + steps: + - name: Set PR fetch depth + run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}" + + - name: Checkout PR branch and all PR commits + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: ${{ env.PR_FETCH_DEPTH }} + + - name: Show disk space before the tasks + run: df -h + + - name: Remove exec_depend + uses: autowarefoundation/autoware-github-actions/remove-exec-depend@v1 + + - name: Get modified packages + id: get-modified-packages + uses: autowarefoundation/autoware-github-actions/get-modified-packages@v1 + + - name: Get changed files (existing files only) + id: get-changed-files + run: | + echo "changed-files=$(git diff --name-only "origin/${{ github.base_ref }}"...HEAD | grep -E '\.(cpp|hpp)$' | while read -r file; do [ -e "$file" ] && echo -n "$file "; done)" >> $GITHUB_OUTPUT + shell: bash + + - name: Run clang-tidy + if: ${{ steps.get-changed-files.outputs.changed-files != '' }} + uses: autowarefoundation/autoware-github-actions/clang-tidy@v1 + with: + rosdistro: humble + target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }} + target-files: ${{ steps.get-changed-files.outputs.changed-files }} + clang-tidy-config-url: https://raw.githubusercontent.com/autowarefoundation/autoware/main/.clang-tidy-ci + build-depends-repos: build_depends.repos + cache-key-element: cuda - name: Show disk space after the tasks run: df -h diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index 00860986824e6..72f8679bff6ef 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -56,10 +56,26 @@ jobs: restore-keys: | ccache-main-${{ runner.arch }}-${{ matrix.rosdistro }}- + - name: Limit ccache size + run: | + rm -f "${CCACHE_DIR}/ccache.conf" + echo -e "# Set maximum cache size\nmax_size = 600MB" >> "${CCACHE_DIR}/ccache.conf" + shell: bash + - name: Show ccache stats before build run: du -sh ${CCACHE_DIR} && ccache -s shell: bash + - name: Export CUDA state as a variable for adding to cache key + run: | + build_type_cuda_state=nocuda + if [[ "${{ matrix.container-suffix }}" == "-cuda" ]]; then + build_type_cuda_state=cuda + fi + echo "BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" >> "${GITHUB_ENV}" + echo "::notice::BUILD_TYPE_CUDA_STATE=$build_type_cuda_state" + shell: bash + - name: Build if: ${{ steps.get-self-packages.outputs.self-packages != '' }} uses: autowarefoundation/autoware-github-actions/colcon-build@v1 @@ -67,6 +83,7 @@ jobs: rosdistro: ${{ matrix.rosdistro }} target-packages: ${{ steps.get-self-packages.outputs.self-packages }} build-depends-repos: ${{ matrix.build-depends-repos }} + cache-key-element: ${{ env.BUILD_TYPE_CUDA_STATE }} - name: Show ccache stats after build run: du -sh ${CCACHE_DIR} && ccache -s @@ -98,6 +115,7 @@ jobs: fail_ci_if_error: false verbose: true flags: total + token: ${{ secrets.CODECOV_TOKEN }} - name: Show disk space after the tasks run: df -h diff --git a/.github/workflows/clang-tidy-differential.yaml b/.github/workflows/clang-tidy-differential.yaml deleted file mode 100644 index a59287a6d9b37..0000000000000 --- a/.github/workflows/clang-tidy-differential.yaml +++ /dev/null @@ -1,61 +0,0 @@ -name: clang-tidy-differential - -on: - pull_request: - types: - - opened - - synchronize - - reopened - - labeled - -jobs: - make-sure-label-is-present: - uses: autowarefoundation/autoware-github-actions/.github/workflows/make-sure-label-is-present.yaml@v1 - with: - label: tag:run-clang-tidy-differential - - clang-tidy-differential: - needs: make-sure-label-is-present - if: ${{ needs.make-sure-label-is-present.outputs.result == 'true' }} - runs-on: ubuntu-latest - container: ghcr.io/autowarefoundation/autoware:latest-prebuilt-cuda - steps: - - name: Set PR fetch depth - run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}" - - - name: Checkout PR branch and all PR commits - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.sha }} - fetch-depth: ${{ env.PR_FETCH_DEPTH }} - - - name: Show disk space before the tasks - run: df -h - - - name: Remove exec_depend - uses: autowarefoundation/autoware-github-actions/remove-exec-depend@v1 - - - name: Get modified packages - id: get-modified-packages - uses: autowarefoundation/autoware-github-actions/get-modified-packages@v1 - - - name: Get modified files - id: get-modified-files - uses: tj-actions/changed-files@v42 - with: - files: | - **/*.cpp - **/*.hpp - - - name: Run clang-tidy - if: ${{ steps.get-modified-files.outputs.all_changed_files != '' }} - uses: autowarefoundation/autoware-github-actions/clang-tidy@v1 - with: - rosdistro: humble - target-packages: ${{ steps.get-modified-packages.outputs.modified-packages }} - target-files: ${{ steps.get-modified-files.outputs.all_changed_files }} - clang-tidy-config-url: https://raw.githubusercontent.com/autowarefoundation/autoware/main/.clang-tidy - build-depends-repos: build_depends.repos - - - name: Show disk space after the tasks - run: df -h diff --git a/.github/workflows/comment-on-pr.yaml b/.github/workflows/comment-on-pr.yaml new file mode 100644 index 0000000000000..e517016a300d9 --- /dev/null +++ b/.github/workflows/comment-on-pr.yaml @@ -0,0 +1,25 @@ +name: comment-on-pr +on: + pull_request_target: + +jobs: + comment-on-pr: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Initial PR comment + uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Thank you for contributing to the Autoware project! + + 🚧 If your pull request is in progress, [switch it to draft mode](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft). + + Please ensure: + - You've checked our [contribution guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/). + - Your PR follows our [pull request guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/pull-request-guidelines/). + - All required CI checks pass before [marking the PR ready for review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review). diff --git a/.github/workflows/cppcheck-daily.yaml b/.github/workflows/cppcheck-daily.yaml index 6a18bfb988b08..6defc8de4894a 100644 --- a/.github/workflows/cppcheck-daily.yaml +++ b/.github/workflows/cppcheck-daily.yaml @@ -13,29 +13,17 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - - name: Install dependencies + # cppcheck from apt does not yet support --check-level args, and thus install from snap + - name: Install Cppcheck from snap run: | - sudo apt-get update - sudo apt-get install -y build-essential cmake git libpcre3-dev - - # cppcheck from apt does not yet support --check-level args, and thus install from source - - name: Install Cppcheck from source - run: | - mkdir /tmp/cppcheck - git clone https://github.com/danmar/cppcheck.git /tmp/cppcheck - cd /tmp/cppcheck - git checkout 2.14.1 - mkdir build - cd build - cmake .. - make -j $(nproc) - sudo make install + sudo snap install cppcheck + # cspell: ignore suppr - name: Run Cppcheck on all files continue-on-error: true id: cppcheck run: | - cppcheck --enable=all --inconclusive --check-level=exhaustive --error-exitcode=1 --xml . 2> cppcheck-report.xml + cppcheck --enable=all --inconclusive --check-level=exhaustive --suppress=*:*/test/* --error-exitcode=1 --xml --inline-suppr . 2> cppcheck-report.xml shell: bash - name: Count errors by error ID and severity diff --git a/.github/workflows/cppcheck-differential.yaml b/.github/workflows/cppcheck-differential.yaml index 914abd7df86ea..90fae29730afb 100644 --- a/.github/workflows/cppcheck-differential.yaml +++ b/.github/workflows/cppcheck-differential.yaml @@ -8,58 +8,76 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v2 + - name: Set PR fetch depth + run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}" + + - name: Checkout PR branch and all PR commits + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: ${{ env.PR_FETCH_DEPTH }} - name: Install dependencies run: | sudo apt-get update - sudo apt-get install -y build-essential cmake git libpcre3-dev + sudo apt-get install -y git + + - name: Install colcon + run: | + sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' + curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - + sudo apt update + sudo apt install python3-colcon-common-extensions - # cppcheck from apt does not yet support --check-level args, and thus install from source - - name: Install Cppcheck from source + # cppcheck from apt does not yet support --check-level args, and thus install from snap + - name: Install Cppcheck from snap run: | - mkdir /tmp/cppcheck - git clone https://github.com/danmar/cppcheck.git /tmp/cppcheck - cd /tmp/cppcheck - git checkout 2.14.1 - mkdir build - cd build - cmake .. - make -j $(nproc) - sudo make install + sudo snap install cppcheck - - name: Get changed files - id: changed-files + - name: Fetch the base branch with enough history for a common merge-base commit + run: git fetch origin ${{ github.base_ref }} + shell: bash + + - name: Get modified packages + id: get-modified-packages + uses: autowarefoundation/autoware-github-actions/get-modified-packages@v1 + + - name: Get full paths of modified packages + id: get-full-paths run: | - git fetch origin ${{ github.base_ref }} --depth=1 - git diff --name-only FETCH_HEAD ${{ github.sha }} > changed_files.txt - cat changed_files.txt + modified_packages="${{ steps.get-modified-packages.outputs.modified-packages }}" + paths="" + for pkg in $modified_packages; do + path=$(colcon list --packages-select $pkg | awk '{print $2}' | xargs realpath) + paths="$paths $path" + done + echo "full-paths=$paths" >> $GITHUB_OUTPUT - - name: Run Cppcheck on changed files + # cspell: ignore suppr + - name: Run Cppcheck on modified packages + if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} continue-on-error: true id: cppcheck run: | - files=$(cat changed_files.txt | grep -E '\.(cpp|hpp)$' || true) - if [ -n "$files" ]; then - echo "Running Cppcheck on changed files: $files" - cppcheck --enable=all --inconclusive --check-level=exhaustive --error-exitcode=1 --suppressions-list=.cppcheck_suppressions $files 2> cppcheck-report.txt - else - echo "No C++ files changed." - touch cppcheck-report.txt - fi + echo "Running Cppcheck on modified packages: ${{ steps.get-modified-packages.outputs.modified-packages }}" + cppcheck --enable=all --inconclusive --check-level=exhaustive --error-exitcode=1 --suppressions-list=.cppcheck_suppressions --inline-suppr ${{ steps.get-full-paths.outputs.full-paths }} 2> cppcheck-report.txt shell: bash + - name: Setup Problem Matchers for cppcheck + run: echo "::add-matcher::.github/cppcheck-problem-matcher.json" + - name: Show cppcheck-report result + if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} run: | cat cppcheck-report.txt - name: Upload Cppcheck report + if: ${{ steps.get-modified-packages.outputs.modified-packages != '' }} uses: actions/upload-artifact@v2 with: name: cppcheck-report path: cppcheck-report.txt - name: Fail the job if Cppcheck failed - if: steps.cppcheck.outcome == 'failure' + if: ${{ steps.get-modified-packages.outputs.modified-packages != '' && steps.cppcheck.outcome == 'failure' }} run: exit 1 diff --git a/.gitignore b/.gitignore index 5ce2c268169c8..757d2d8a09bed 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ log/ # Python *.pyc + +#prettier +node_modules/ diff --git a/build_depends.repos b/build_depends.repos index bd93897d81d68..0522862dd0eb7 100644 --- a/build_depends.repos +++ b/build_depends.repos @@ -1,8 +1,21 @@ repositories: # core + # TODO(youtalk): Remove autoware_common when https://github.com/autowarefoundation/autoware/issues/4911 is closed core/autoware_common: type: git url: https://github.com/autowarefoundation/autoware_common.git + version: remove-autoware-cmake-utils + core/autoware_cmake: + type: git + url: https://github.com/autowarefoundation/autoware_cmake.git + version: main + core/autoware_utils: + type: git + url: https://github.com/autowarefoundation/autoware_utils.git + version: main + core/autoware_lanelet2_extension: + type: git + url: https://github.com/autowarefoundation/autoware_lanelet2_extension.git version: main core/autoware.core: type: git diff --git a/codecov.yaml b/codecov.yaml index 8ca2196768dac..ecc77815e97e6 100644 --- a/codecov.yaml +++ b/codecov.yaml @@ -1,11 +1,15 @@ +# https://docs.codecov.com/docs/commit-status#project-status + coverage: status: project: default: - target: auto + target: 0% # Make CI always succeed + threshold: 100% # Make CI always succeed patch: default: - target: auto + target: 0% # Make CI always succeed + threshold: 100% # Make CI always succeed comment: show_carryforward_flags: true @@ -16,7 +20,9 @@ flag_management: statuses: - name_prefix: project- type: project - target: auto + target: 0% # Make CI always succeed + threshold: 100% # Make CI always succeed - name_prefix: patch- type: patch - target: auto + target: 0% # Make CI always succeed + threshold: 100% # Make CI always succeed diff --git a/common/autoware_grid_map_utils/test/benchmark.cpp b/common/autoware_grid_map_utils/test/benchmark.cpp index 90545135b3e18..a63ed9985fef1 100644 --- a/common/autoware_grid_map_utils/test/benchmark.cpp +++ b/common/autoware_grid_map_utils/test/benchmark.cpp @@ -46,7 +46,7 @@ int main(int argc, char * argv[]) result_file << "#Size PolygonVertices PolygonIndexes grid_map_utils_constructor grid_map_utils_iteration " "grid_map_constructor grid_map_iteration\n"; - autoware_universe_utils::StopWatch stopwatch; + autoware::universe_utils::StopWatch stopwatch; constexpr auto nb_iterations = 10; constexpr auto polygon_side_vertices = diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/constants.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/constants.hpp index 278ea3fbcae80..9c1f7c876e73e 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/constants.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/constants.hpp @@ -15,9 +15,9 @@ #ifndef AUTOWARE__MOTION_UTILS__CONSTANTS_HPP_ #define AUTOWARE__MOTION_UTILS__CONSTANTS_HPP_ -namespace autoware_motion_utils +namespace autoware::motion_utils { constexpr double overlap_threshold = 0.1; -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__CONSTANTS_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/distance/distance.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/distance/distance.hpp index 4b4aec2f5b398..308528954eccc 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/distance/distance.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/distance/distance.hpp @@ -22,12 +22,12 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { std::optional calcDecelDistWithJerkAndAccConstraints( const double current_vel, const double target_vel, const double current_acc, const double acc_min, const double jerk_acc, const double jerk_dec); -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__DISTANCE__DISTANCE_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/factor/velocity_factor_interface.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/factor/velocity_factor_interface.hpp index fe8cab2b7a070..30eca6927db34 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/factor/velocity_factor_interface.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/factor/velocity_factor_interface.hpp @@ -24,7 +24,7 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { using autoware_adapi_v1_msgs::msg::PlanningBehavior; using autoware_adapi_v1_msgs::msg::VelocityFactor; @@ -49,6 +49,6 @@ class VelocityFactorInterface VelocityFactor velocity_factor_{}; }; -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__FACTOR__VELOCITY_FACTOR_INTERFACE_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/marker/marker_helper.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/marker/marker_helper.hpp index 44cab2ed8b52b..4679e3d9aba91 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/marker/marker_helper.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/marker/marker_helper.hpp @@ -21,7 +21,7 @@ #include -namespace autoware_motion_utils +namespace autoware::motion_utils { using geometry_msgs::msg::Pose; @@ -48,6 +48,6 @@ visualization_msgs::msg::MarkerArray createDeletedSlowDownVirtualWallMarker( visualization_msgs::msg::MarkerArray createDeletedDeadLineVirtualWallMarker( const rclcpp::Time & now, const int32_t id); -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__MARKER__MARKER_HELPER_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/marker/virtual_wall_marker_creator.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/marker/virtual_wall_marker_creator.hpp index c2ceaddd16871..07fcbd9840c88 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/marker/virtual_wall_marker_creator.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/marker/virtual_wall_marker_creator.hpp @@ -25,7 +25,7 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { /// @brief type of virtual wall associated with different marker styles and namespace @@ -76,6 +76,6 @@ class VirtualWallMarkerCreator /// @param now current time to be used for displaying the markers visualization_msgs::msg::MarkerArray create_markers(const rclcpp::Time & now = rclcpp::Time()); }; -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__MARKER__VIRTUAL_WALL_MARKER_CREATOR_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample.hpp index be0a9680ee378..19328179932c4 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample.hpp @@ -21,7 +21,7 @@ #include -namespace autoware_motion_utils +namespace autoware::motion_utils { /** * @brief A resampling function for a path(points). Note that in a default setting, position xy are @@ -234,6 +234,6 @@ autoware_planning_msgs::msg::Trajectory resampleTrajectory( const bool use_akima_spline_for_xy = false, const bool use_lerp_for_z = true, const bool use_zero_order_hold_for_twist = true, const bool resample_input_trajectory_stop_point = true); -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__RESAMPLE__RESAMPLE_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample_utils.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample_utils.hpp index f80088645243e..5d622c54da452 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample_utils.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/resample/resample_utils.hpp @@ -42,7 +42,7 @@ bool validate_size(const T & points) template bool validate_resampling_range(const T & points, const std::vector & resampling_intervals) { - const double points_length = autoware_motion_utils::calcArcLength(points); + const double points_length = autoware::motion_utils::calcArcLength(points); return points_length >= resampling_intervals.back(); } @@ -50,9 +50,9 @@ template bool validate_points_duplication(const T & points) { for (size_t i = 0; i < points.size() - 1; ++i) { - const auto & curr_pt = autoware_universe_utils::getPoint(points.at(i)); - const auto & next_pt = autoware_universe_utils::getPoint(points.at(i + 1)); - const double ds = autoware_universe_utils::calcDistance2d(curr_pt, next_pt); + const auto & curr_pt = autoware::universe_utils::getPoint(points.at(i)); + const auto & next_pt = autoware::universe_utils::getPoint(points.at(i + 1)); + const double ds = autoware::universe_utils::calcDistance2d(curr_pt, next_pt); if (ds < close_s_threshold) { return false; } @@ -67,27 +67,27 @@ bool validate_arguments(const T & input_points, const std::vector & resa // Check size of the arguments if (!validate_size(input_points)) { RCLCPP_DEBUG(get_logger(), "invalid argument: The number of input points is less than 2"); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); return false; } if (!validate_size(resampling_intervals)) { RCLCPP_DEBUG( get_logger(), "invalid argument: The number of resampling intervals is less than 2"); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); return false; } // Check resampling range if (!validate_resampling_range(input_points, resampling_intervals)) { RCLCPP_DEBUG(get_logger(), "invalid argument: resampling interval is longer than input points"); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); return false; } // Check duplication if (!validate_points_duplication(input_points)) { RCLCPP_DEBUG(get_logger(), "invalid argument: input points has some duplicated points"); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); return false; } @@ -100,23 +100,23 @@ bool validate_arguments(const T & input_points, const double resampling_interval // Check size of the arguments if (!validate_size(input_points)) { RCLCPP_DEBUG(get_logger(), "invalid argument: The number of input points is less than 2"); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); return false; } // check resampling interval - if (resampling_interval < autoware_motion_utils::overlap_threshold) { + if (resampling_interval < autoware::motion_utils::overlap_threshold) { RCLCPP_DEBUG( get_logger(), "invalid argument: resampling interval is less than %f", - autoware_motion_utils::overlap_threshold); - autoware_universe_utils::print_backtrace(); + autoware::motion_utils::overlap_threshold); + autoware::universe_utils::print_backtrace(); return false; } // Check duplication if (!validate_points_duplication(input_points)) { RCLCPP_DEBUG(get_logger(), "invalid argument: input points has some duplicated points"); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); return false; } diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/conversion.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/conversion.hpp index c28f76553f71e..d4f88c17c4d70 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/conversion.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/conversion.hpp @@ -23,7 +23,7 @@ #include -namespace autoware_motion_utils +namespace autoware::motion_utils { using TrajectoryPoints = std::vector; @@ -115,6 +115,6 @@ inline tier4_planning_msgs::msg::PathWithLaneId convertToPathWithLaneId( return output; } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__TRAJECTORY__CONVERSION_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/interpolation.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/interpolation.hpp index 18dbefa85918b..5272478cccd78 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/interpolation.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/interpolation.hpp @@ -25,7 +25,7 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { /** * @brief An interpolation function that finds the closest interpolated point on the trajectory from @@ -73,24 +73,24 @@ geometry_msgs::msg::Pose calcInterpolatedPose(const T & points, const double tar } if (points.size() < 2 || target_length < 0.0) { - return autoware_universe_utils::getPose(points.front()); + return autoware::universe_utils::getPose(points.front()); } double accumulated_length = 0; for (size_t i = 0; i < points.size() - 1; ++i) { - const auto & curr_pose = autoware_universe_utils::getPose(points.at(i)); - const auto & next_pose = autoware_universe_utils::getPose(points.at(i + 1)); - const double length = autoware_universe_utils::calcDistance3d(curr_pose, next_pose); + const auto & curr_pose = autoware::universe_utils::getPose(points.at(i)); + const auto & next_pose = autoware::universe_utils::getPose(points.at(i + 1)); + const double length = autoware::universe_utils::calcDistance3d(curr_pose, next_pose); if (accumulated_length + length > target_length) { const double ratio = (target_length - accumulated_length) / std::max(length, 1e-6); - return autoware_universe_utils::calcInterpolatedPose(curr_pose, next_pose, ratio); + return autoware::universe_utils::calcInterpolatedPose(curr_pose, next_pose, ratio); } accumulated_length += length; } - return autoware_universe_utils::getPose(points.back()); + return autoware::universe_utils::getPose(points.back()); } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__TRAJECTORY__INTERPOLATION_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/path_with_lane_id.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/path_with_lane_id.hpp index 43c8a14d0f3a3..0d875e636bad5 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/path_with_lane_id.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/path_with_lane_id.hpp @@ -20,7 +20,7 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { std::optional> getPathIndexRangeWithLaneId( const tier4_planning_msgs::msg::PathWithLaneId & path, const int64_t target_lane_id); @@ -41,6 +41,6 @@ size_t findNearestSegmentIndexFromLaneId( tier4_planning_msgs::msg::PathWithLaneId convertToRearWheelCenter( const tier4_planning_msgs::msg::PathWithLaneId & path, const double rear_to_cog, const bool enable_last_point_compensation = true); -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__TRAJECTORY__PATH_WITH_LANE_ID_HPP_ diff --git a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/trajectory.hpp b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/trajectory.hpp index 3c6539f027216..da37d04550f5e 100644 --- a/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/trajectory.hpp +++ b/common/autoware_motion_utils/include/autoware/motion_utils/trajectory/trajectory.hpp @@ -35,7 +35,7 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { static inline rclcpp::Logger get_logger() { @@ -51,7 +51,7 @@ template void validateNonEmpty(const T & points) { if (points.empty()) { - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); throw std::invalid_argument("[autoware_motion_utils] validateNonEmpty(): Points is empty."); } } @@ -72,22 +72,22 @@ extern template void validateNonEmpty void validateNonSharpAngle( const T & point1, const T & point2, const T & point3, - const double angle_threshold = autoware_universe_utils::pi / 4) + const double angle_threshold = autoware::universe_utils::pi / 4) { - const auto p1 = autoware_universe_utils::getPoint(point1); - const auto p2 = autoware_universe_utils::getPoint(point2); - const auto p3 = autoware_universe_utils::getPoint(point3); + const auto p1 = autoware::universe_utils::getPoint(point1); + const auto p2 = autoware::universe_utils::getPoint(point2); + const auto p3 = autoware::universe_utils::getPoint(point3); const std::vector vec_1to2 = {p2.x - p1.x, p2.y - p1.y, p2.z - p1.z}; const std::vector vec_3to2 = {p2.x - p3.x, p2.y - p3.y, p2.z - p3.z}; const auto product = std::inner_product(vec_1to2.begin(), vec_1to2.end(), vec_3to2.begin(), 0.0); - const auto dist_1to2 = autoware_universe_utils::calcDistance3d(p1, p2); - const auto dist_3to2 = autoware_universe_utils::calcDistance3d(p3, p2); + const auto dist_1to2 = autoware::universe_utils::calcDistance3d(p1, p2); + const auto dist_3to2 = autoware::universe_utils::calcDistance3d(p3, p2); constexpr double epsilon = 1e-3; if (std::cos(angle_threshold) < product / dist_1to2 / dist_3to2 + epsilon) { - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); throw std::invalid_argument( "[autoware_motion_utils] validateNonSharpAngle(): Too sharp angle."); } @@ -106,10 +106,10 @@ std::optional isDrivingForward(const T & points) } // check the first point direction - const auto & first_pose = autoware_universe_utils::getPose(points.at(0)); - const auto & second_pose = autoware_universe_utils::getPose(points.at(1)); + const auto & first_pose = autoware::universe_utils::getPose(points.at(0)); + const auto & second_pose = autoware::universe_utils::getPose(points.at(1)); - return autoware_universe_utils::isDrivingForward(first_pose, second_pose); + return autoware::universe_utils::isDrivingForward(first_pose, second_pose); } extern template std::optional @@ -135,10 +135,10 @@ std::optional isDrivingForwardWithTwist(const T & points_with_twist) return std::nullopt; } if (points_with_twist.size() == 1) { - if (0.0 < autoware_universe_utils::getLongitudinalVelocity(points_with_twist.front())) { + if (0.0 < autoware::universe_utils::getLongitudinalVelocity(points_with_twist.front())) { return true; } - if (0.0 > autoware_universe_utils::getLongitudinalVelocity(points_with_twist.front())) { + if (0.0 > autoware::universe_utils::getLongitudinalVelocity(points_with_twist.front())) { return false; } return std::nullopt; @@ -182,8 +182,8 @@ T removeOverlapPoints(const T & points, const size_t start_idx = 0) constexpr double eps = 1.0E-08; for (size_t i = start_idx + 1; i < points.size(); ++i) { - const auto prev_p = autoware_universe_utils::getPoint(dst.back()); - const auto curr_p = autoware_universe_utils::getPoint(points.at(i)); + const auto prev_p = autoware::universe_utils::getPoint(dst.back()); + const auto curr_p = autoware::universe_utils::getPoint(points.at(i)); if (std::abs(prev_p.x - curr_p.x) < eps && std::abs(prev_p.y - curr_p.y) < eps) { continue; } @@ -299,7 +299,7 @@ size_t findNearestIndex(const T & points, const geometry_msgs::msg::Point & poin size_t min_idx = 0; for (size_t i = 0; i < points.size(); ++i) { - const auto dist = autoware_universe_utils::calcSquaredDistance2d(points.at(i), point); + const auto dist = autoware::universe_utils::calcSquaredDistance2d(points.at(i), point); if (dist < min_dist) { min_dist = dist; min_idx = i; @@ -351,13 +351,13 @@ std::optional findNearestIndex( size_t min_idx = 0; for (size_t i = 0; i < points.size(); ++i) { - const auto squared_dist = autoware_universe_utils::calcSquaredDistance2d(points.at(i), pose); + const auto squared_dist = autoware::universe_utils::calcSquaredDistance2d(points.at(i), pose); if (squared_dist > max_squared_dist || squared_dist >= min_squared_dist) { continue; } - const auto yaw = autoware_universe_utils::calcYawDeviation( - autoware_universe_utils::getPose(points.at(i)), pose); + const auto yaw = autoware::universe_utils::calcYawDeviation( + autoware::universe_utils::getPose(points.at(i)), pose); if (std::fabs(yaw) > max_yaw) { continue; } @@ -409,7 +409,7 @@ double calcLongitudinalOffsetToSegment( "[autoware_motion_utils] " + std::string(__func__) + ": Failed to calculate longitudinal offset because the given segment index is out of the " "points size."); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); if (throw_exception) { throw std::out_of_range(error_message); } @@ -437,7 +437,7 @@ double calcLongitudinalOffsetToSegment( const std::string error_message( "[autoware_motion_utils] " + std::string(__func__) + ": Longitudinal offset calculation is not supported for the same points."); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); if (throw_exception) { throw std::runtime_error(error_message); } @@ -448,8 +448,8 @@ double calcLongitudinalOffsetToSegment( return std::nan(""); } - const auto p_front = autoware_universe_utils::getPoint(overlap_removed_points.at(seg_idx)); - const auto p_back = autoware_universe_utils::getPoint(overlap_removed_points.at(seg_idx + 1)); + const auto p_front = autoware::universe_utils::getPoint(overlap_removed_points.at(seg_idx)); + const auto p_back = autoware::universe_utils::getPoint(overlap_removed_points.at(seg_idx + 1)); const Eigen::Vector3d segment_vec{p_back.x - p_front.x, p_back.y - p_front.y, 0}; const Eigen::Vector3d target_vec{p_target.x - p_front.x, p_target.y - p_front.y, 0}; @@ -599,7 +599,7 @@ double calcLateralOffset( const std::string error_message( "[autoware_motion_utils] " + std::string(__func__) + ": Lateral offset calculation is not supported for the same points."); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); if (throw_exception) { throw std::runtime_error(error_message); } @@ -614,8 +614,8 @@ double calcLateralOffset( const auto p_front_idx = (p_indices > seg_idx) ? seg_idx : p_indices; const auto p_back_idx = p_front_idx + 1; - const auto p_front = autoware_universe_utils::getPoint(overlap_removed_points.at(p_front_idx)); - const auto p_back = autoware_universe_utils::getPoint(overlap_removed_points.at(p_back_idx)); + const auto p_front = autoware::universe_utils::getPoint(overlap_removed_points.at(p_front_idx)); + const auto p_back = autoware::universe_utils::getPoint(overlap_removed_points.at(p_back_idx)); const Eigen::Vector3d segment_vec{p_back.x - p_front.x, p_back.y - p_front.y, 0.0}; const Eigen::Vector3d target_vec{p_target.x - p_front.x, p_target.y - p_front.y, 0.0}; @@ -672,7 +672,7 @@ double calcLateralOffset( const std::string error_message( "[autoware_motion_utils] " + std::string(__func__) + ": Lateral offset calculation is not supported for the same points."); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); if (throw_exception) { throw std::runtime_error(error_message); } @@ -724,7 +724,7 @@ double calcSignedArcLength(const T & points, const size_t src_idx, const size_t double dist_sum = 0.0; for (size_t i = src_idx; i < dst_idx; ++i) { - dist_sum += autoware_universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); + dist_sum += autoware::universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); } return dist_sum; } @@ -772,7 +772,7 @@ std::vector calcSignedArcLengthPartialSum( double dist_sum = 0.0; partial_dist.push_back(dist_sum); for (size_t i = src_idx; i < dst_idx - 1; ++i) { - dist_sum += autoware_universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); + dist_sum += autoware::universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); partial_dist.push_back(dist_sum); } return partial_dist; @@ -959,10 +959,10 @@ std::vector calcCurvature(const T & points) } for (size_t i = 1; i < points.size() - 1; ++i) { - const auto p1 = autoware_universe_utils::getPoint(points.at(i - 1)); - const auto p2 = autoware_universe_utils::getPoint(points.at(i)); - const auto p3 = autoware_universe_utils::getPoint(points.at(i + 1)); - curvature_vec.at(i) = (autoware_universe_utils::calcCurvature(p1, p2, p3)); + const auto p1 = autoware::universe_utils::getPoint(points.at(i - 1)); + const auto p2 = autoware::universe_utils::getPoint(points.at(i)); + const auto p3 = autoware::universe_utils::getPoint(points.at(i + 1)); + curvature_vec.at(i) = (autoware::universe_utils::calcCurvature(p1, p2, p3)); } curvature_vec.at(0) = curvature_vec.at(1); curvature_vec.at(curvature_vec.size() - 1) = curvature_vec.at(curvature_vec.size() - 2); @@ -997,13 +997,13 @@ std::vector> calcCurvatureAndArcLength(const T & point std::vector> curvature_arc_length_vec; curvature_arc_length_vec.emplace_back(0.0, 0.0); for (size_t i = 1; i < points.size() - 1; ++i) { - const auto p1 = autoware_universe_utils::getPoint(points.at(i - 1)); - const auto p2 = autoware_universe_utils::getPoint(points.at(i)); - const auto p3 = autoware_universe_utils::getPoint(points.at(i + 1)); - const double curvature = autoware_universe_utils::calcCurvature(p1, p2, p3); + const auto p1 = autoware::universe_utils::getPoint(points.at(i - 1)); + const auto p2 = autoware::universe_utils::getPoint(points.at(i)); + const auto p3 = autoware::universe_utils::getPoint(points.at(i + 1)); + const double curvature = autoware::universe_utils::calcCurvature(p1, p2, p3); const double arc_length = - autoware_universe_utils::calcDistance2d(points.at(i - 1), points.at(i)) + - autoware_universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); + autoware::universe_utils::calcDistance2d(points.at(i - 1), points.at(i)) + + autoware::universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); curvature_arc_length_vec.emplace_back(curvature, arc_length); } curvature_arc_length_vec.emplace_back(0.0, 0.0); @@ -1078,7 +1078,7 @@ std::optional calcLongitudinalOffsetPoint( "[autoware_motion_utils] " + std::string(__func__) + " error: The given source index is out of the points size. Failed to calculate longitudinal " "offset."); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); if (throw_exception) { throw std::out_of_range(error_message); } @@ -1094,7 +1094,7 @@ std::optional calcLongitudinalOffsetPoint( } if (src_idx + 1 == points.size() && offset == 0.0) { - return autoware_universe_utils::getPoint(points.at(src_idx)); + return autoware::universe_utils::getPoint(points.at(src_idx)); } if (offset < 0.0) { @@ -1110,12 +1110,12 @@ std::optional calcLongitudinalOffsetPoint( const auto & p_front = points.at(i); const auto & p_back = points.at(i + 1); - const auto dist_segment = autoware_universe_utils::calcDistance2d(p_front, p_back); + const auto dist_segment = autoware::universe_utils::calcDistance2d(p_front, p_back); dist_sum += dist_segment; const auto dist_res = offset - dist_sum; if (dist_res <= 0.0) { - return autoware_universe_utils::calcInterpolatedPoint( + return autoware::universe_utils::calcInterpolatedPoint( p_back, p_front, std::abs(dist_res / dist_segment)); } } @@ -1209,7 +1209,7 @@ std::optional calcLongitudinalOffsetPose( "[autoware_motion_utils] " + std::string(__func__) + " error: The given source index is out of the points size. Failed to calculate longitudinal " "offset."); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); if (throw_exception) { throw std::out_of_range(error_message); } @@ -1223,7 +1223,7 @@ std::optional calcLongitudinalOffsetPose( } if (src_idx + 1 == points.size() && offset == 0.0) { - return autoware_universe_utils::getPose(points.at(src_idx)); + return autoware::universe_utils::getPose(points.at(src_idx)); } if (offset < 0.0) { @@ -1236,12 +1236,12 @@ std::optional calcLongitudinalOffsetPose( const auto & p_front = reverse_points.at(i); const auto & p_back = reverse_points.at(i + 1); - const auto dist_segment = autoware_universe_utils::calcDistance2d(p_front, p_back); + const auto dist_segment = autoware::universe_utils::calcDistance2d(p_front, p_back); dist_sum += dist_segment; const auto dist_res = -offset - dist_sum; if (dist_res <= 0.0) { - return autoware_universe_utils::calcInterpolatedPose( + return autoware::universe_utils::calcInterpolatedPose( p_back, p_front, std::abs(dist_res / dist_segment), set_orientation_from_position_direction); } @@ -1253,12 +1253,12 @@ std::optional calcLongitudinalOffsetPose( const auto & p_front = points.at(i); const auto & p_back = points.at(i + 1); - const auto dist_segment = autoware_universe_utils::calcDistance2d(p_front, p_back); + const auto dist_segment = autoware::universe_utils::calcDistance2d(p_front, p_back); dist_sum += dist_segment; const auto dist_res = offset - dist_sum; if (dist_res <= 0.0) { - return autoware_universe_utils::calcInterpolatedPose( + return autoware::universe_utils::calcInterpolatedPose( p_front, p_back, 1.0 - std::abs(dist_res / dist_segment), set_orientation_from_position_direction); } @@ -1358,8 +1358,8 @@ std::optional insertTargetPoint( return {}; } - const auto p_front = autoware_universe_utils::getPoint(points.at(seg_idx)); - const auto p_back = autoware_universe_utils::getPoint(points.at(seg_idx + 1)); + const auto p_front = autoware::universe_utils::getPoint(points.at(seg_idx)); + const auto p_back = autoware::universe_utils::getPoint(points.at(seg_idx + 1)); try { validateNonSharpAngle(p_front, p_target, p_back); @@ -1369,9 +1369,9 @@ std::optional insertTargetPoint( } const auto overlap_with_front = - autoware_universe_utils::calcDistance2d(p_target, p_front) < overlap_threshold; + autoware::universe_utils::calcDistance2d(p_target, p_front) < overlap_threshold; const auto overlap_with_back = - autoware_universe_utils::calcDistance2d(p_target, p_back) < overlap_threshold; + autoware::universe_utils::calcDistance2d(p_target, p_back) < overlap_threshold; const auto is_driving_forward = isDrivingForward(points); if (!is_driving_forward) { @@ -1381,31 +1381,31 @@ std::optional insertTargetPoint( geometry_msgs::msg::Pose target_pose; { const auto p_base = is_driving_forward.value() ? p_back : p_front; - const auto pitch = autoware_universe_utils::calcElevationAngle(p_target, p_base); - const auto yaw = autoware_universe_utils::calcAzimuthAngle(p_target, p_base); + const auto pitch = autoware::universe_utils::calcElevationAngle(p_target, p_base); + const auto yaw = autoware::universe_utils::calcAzimuthAngle(p_target, p_base); target_pose.position = p_target; - target_pose.orientation = autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, yaw); + target_pose.orientation = autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, yaw); } auto p_insert = points.at(seg_idx); - autoware_universe_utils::setPose(target_pose, p_insert); + autoware::universe_utils::setPose(target_pose, p_insert); geometry_msgs::msg::Pose base_pose; { const auto p_base = is_driving_forward.value() ? p_front : p_back; - const auto pitch = autoware_universe_utils::calcElevationAngle(p_base, p_target); - const auto yaw = autoware_universe_utils::calcAzimuthAngle(p_base, p_target); + const auto pitch = autoware::universe_utils::calcElevationAngle(p_base, p_target); + const auto yaw = autoware::universe_utils::calcAzimuthAngle(p_base, p_target); - base_pose.position = autoware_universe_utils::getPoint(p_base); - base_pose.orientation = autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, yaw); + base_pose.position = autoware::universe_utils::getPoint(p_base); + base_pose.orientation = autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, yaw); } if (!overlap_with_front && !overlap_with_back) { if (is_driving_forward.value()) { - autoware_universe_utils::setPose(base_pose, points.at(seg_idx)); + autoware::universe_utils::setPose(base_pose, points.at(seg_idx)); } else { - autoware_universe_utils::setPose(base_pose, points.at(seg_idx + 1)); + autoware::universe_utils::setPose(base_pose, points.at(seg_idx + 1)); } points.insert(points.begin() + seg_idx + 1, p_insert); return seg_idx + 1; @@ -1539,9 +1539,9 @@ std::optional insertTargetPoint( const double target_length = insert_point_length - calcSignedArcLength(points, src_segment_idx, *segment_idx); const double ratio = std::clamp(target_length / segment_length, 0.0, 1.0); - const auto p_target = autoware_universe_utils::calcInterpolatedPoint( - autoware_universe_utils::getPoint(points.at(*segment_idx)), - autoware_universe_utils::getPoint(points.at(*segment_idx + 1)), ratio); + const auto p_target = autoware::universe_utils::calcInterpolatedPoint( + autoware::universe_utils::getPoint(points.at(*segment_idx)), + autoware::universe_utils::getPoint(points.at(*segment_idx + 1)), ratio); return insertTargetPoint(*segment_idx, p_target, points, overlap_threshold); } @@ -1645,7 +1645,7 @@ std::optional insertStopPoint( } for (size_t i = *stop_idx; i < points_with_twist.size(); ++i) { - autoware_universe_utils::setLongitudinalVelocity(0.0, points_with_twist.at(i)); + autoware::universe_utils::setLongitudinalVelocity(0.0, points_with_twist.at(i)); } return stop_idx; @@ -1687,9 +1687,9 @@ std::optional insertStopPoint( double accumulated_length = 0; for (size_t i = 0; i < points_with_twist.size() - 1; ++i) { - const auto curr_pose = autoware_universe_utils::getPose(points_with_twist.at(i)); - const auto next_pose = autoware_universe_utils::getPose(points_with_twist.at(i + 1)); - const double length = autoware_universe_utils::calcDistance2d(curr_pose, next_pose); + const auto curr_pose = autoware::universe_utils::getPose(points_with_twist.at(i)); + const auto next_pose = autoware::universe_utils::getPose(points_with_twist.at(i + 1)); + const double length = autoware::universe_utils::calcDistance2d(curr_pose, next_pose); if (accumulated_length + length + overlap_threshold > distance_to_stop_point) { const double insert_length = distance_to_stop_point - accumulated_length; return insertStopPoint(i, insert_length, points_with_twist, overlap_threshold); @@ -1749,7 +1749,7 @@ std::optional insertStopPoint( } for (size_t i = *stop_idx; i < points_with_twist.size(); ++i) { - autoware_universe_utils::setLongitudinalVelocity(0.0, points_with_twist.at(i)); + autoware::universe_utils::setLongitudinalVelocity(0.0, points_with_twist.at(i)); } return stop_idx; @@ -1788,7 +1788,7 @@ std::optional insertStopPoint( const size_t stop_seg_idx, const geometry_msgs::msg::Point & stop_point, T & points_with_twist, const double overlap_threshold = 1e-3) { - const auto insert_idx = autoware_motion_utils::insertTargetPoint( + const auto insert_idx = autoware::motion_utils::insertTargetPoint( stop_seg_idx, stop_point, points_with_twist, overlap_threshold); if (!insert_idx) { @@ -1796,7 +1796,7 @@ std::optional insertStopPoint( } for (size_t i = insert_idx.value(); i < points_with_twist.size(); ++i) { - autoware_universe_utils::setLongitudinalVelocity(0.0, points_with_twist.at(i)); + autoware::universe_utils::setLongitudinalVelocity(0.0, points_with_twist.at(i)); } return insert_idx; @@ -1836,8 +1836,8 @@ std::optional insertDecelPoint( for (size_t i = insert_idx.value(); i < points_with_twist.size(); ++i) { const auto & original_velocity = - autoware_universe_utils::getLongitudinalVelocity(points_with_twist.at(i)); - autoware_universe_utils::setLongitudinalVelocity( + autoware::universe_utils::getLongitudinalVelocity(points_with_twist.at(i)); + autoware::universe_utils::setLongitudinalVelocity( std::min(original_velocity, velocity), points_with_twist.at(i)); } @@ -1860,30 +1860,30 @@ void insertOrientation(T & points, const bool is_driving_forward) { if (is_driving_forward) { for (size_t i = 0; i < points.size() - 1; ++i) { - const auto & src_point = autoware_universe_utils::getPoint(points.at(i)); - const auto & dst_point = autoware_universe_utils::getPoint(points.at(i + 1)); - const double pitch = autoware_universe_utils::calcElevationAngle(src_point, dst_point); - const double yaw = autoware_universe_utils::calcAzimuthAngle(src_point, dst_point); - autoware_universe_utils::setOrientation( - autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, yaw), points.at(i)); + const auto & src_point = autoware::universe_utils::getPoint(points.at(i)); + const auto & dst_point = autoware::universe_utils::getPoint(points.at(i + 1)); + const double pitch = autoware::universe_utils::calcElevationAngle(src_point, dst_point); + const double yaw = autoware::universe_utils::calcAzimuthAngle(src_point, dst_point); + autoware::universe_utils::setOrientation( + autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, yaw), points.at(i)); if (i == points.size() - 2) { // Terminal orientation is same as the point before it - autoware_universe_utils::setOrientation( - autoware_universe_utils::getPose(points.at(i)).orientation, points.at(i + 1)); + autoware::universe_utils::setOrientation( + autoware::universe_utils::getPose(points.at(i)).orientation, points.at(i + 1)); } } } else { for (size_t i = points.size() - 1; i >= 1; --i) { - const auto & src_point = autoware_universe_utils::getPoint(points.at(i)); - const auto & dst_point = autoware_universe_utils::getPoint(points.at(i - 1)); - const double pitch = autoware_universe_utils::calcElevationAngle(src_point, dst_point); - const double yaw = autoware_universe_utils::calcAzimuthAngle(src_point, dst_point); - autoware_universe_utils::setOrientation( - autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, yaw), points.at(i)); + const auto & src_point = autoware::universe_utils::getPoint(points.at(i)); + const auto & dst_point = autoware::universe_utils::getPoint(points.at(i - 1)); + const double pitch = autoware::universe_utils::calcElevationAngle(src_point, dst_point); + const double yaw = autoware::universe_utils::calcAzimuthAngle(src_point, dst_point); + autoware::universe_utils::setOrientation( + autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, yaw), points.at(i)); } // Initial orientation is same as the point after it - autoware_universe_utils::setOrientation( - autoware_universe_utils::getPose(points.at(1)).orientation, points.at(0)); + autoware::universe_utils::setOrientation( + autoware::universe_utils::getPose(points.at(1)).orientation, points.at(0)); } } @@ -1908,14 +1908,14 @@ template void removeFirstInvalidOrientationPoints(T & points, const double max_yaw_diff = M_PI_2) { for (auto itr = points.begin(); std::next(itr) != points.end();) { - const auto p1 = autoware_universe_utils::getPose(*itr); - const auto p2 = autoware_universe_utils::getPose(*std::next(itr)); + const auto p1 = autoware::universe_utils::getPose(*itr); + const auto p2 = autoware::universe_utils::getPose(*std::next(itr)); const double yaw1 = tf2::getYaw(p1.orientation); const double yaw2 = tf2::getYaw(p2.orientation); if ( - max_yaw_diff < std::abs(autoware_universe_utils::normalizeRadian(yaw1 - yaw2)) || - !autoware_universe_utils::isDrivingForward(p1, p2)) { + max_yaw_diff < std::abs(autoware::universe_utils::normalizeRadian(yaw1 - yaw2)) || + !autoware::universe_utils::isDrivingForward(p1, p2)) { points.erase(std::next(itr)); return; } else { @@ -2068,9 +2068,9 @@ size_t findFirstNearestIndexWithSoftConstraints( bool is_within_constraints = false; for (size_t i = 0; i < points.size(); ++i) { const auto squared_dist = - autoware_universe_utils::calcSquaredDistance2d(points.at(i), pose.position); - const auto yaw = autoware_universe_utils::calcYawDeviation( - autoware_universe_utils::getPose(points.at(i)), pose); + autoware::universe_utils::calcSquaredDistance2d(points.at(i), pose.position); + const auto yaw = autoware::universe_utils::calcYawDeviation( + autoware::universe_utils::getPose(points.at(i)), pose); if (squared_dist_threshold < squared_dist || yaw_threshold < std::abs(yaw)) { if (is_within_constraints) { @@ -2101,7 +2101,7 @@ size_t findFirstNearestIndexWithSoftConstraints( bool is_within_constraints = false; for (size_t i = 0; i < points.size(); ++i) { const auto squared_dist = - autoware_universe_utils::calcSquaredDistance2d(points.at(i), pose.position); + autoware::universe_utils::calcSquaredDistance2d(points.at(i), pose.position); if (squared_dist_threshold < squared_dist) { if (is_within_constraints) { @@ -2231,13 +2231,13 @@ std::optional calcDistanceToForwardStopPoint( } const auto nearest_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(points_with_twist, pose, max_dist, max_yaw); + autoware::motion_utils::findNearestSegmentIndex(points_with_twist, pose, max_dist, max_yaw); if (!nearest_segment_idx) { return std::nullopt; } - const auto stop_idx = autoware_motion_utils::searchZeroVelocityIndex( + const auto stop_idx = autoware::motion_utils::searchZeroVelocityIndex( points_with_twist, *nearest_segment_idx + 1, points_with_twist.size()); if (!stop_idx) { @@ -2278,9 +2278,9 @@ T cropForwardPoints( } double sum_length = - -autoware_motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); + -autoware::motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); for (size_t i = target_seg_idx + 1; i < points.size(); ++i) { - sum_length += autoware_universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); + sum_length += autoware::universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); if (forward_length < sum_length) { const size_t end_idx = i; return T{points.begin(), points.begin() + end_idx}; @@ -2318,9 +2318,9 @@ T cropBackwardPoints( } double sum_length = - -autoware_motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); + -autoware::motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); for (int i = target_seg_idx; 0 < i; --i) { - sum_length -= autoware_universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); + sum_length -= autoware::universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); if (sum_length < -backward_length) { const size_t begin_idx = i; return T{points.begin() + begin_idx, points.end()}; @@ -2419,7 +2419,7 @@ double calcYawDeviation( const std::string error_message( "[autoware_motion_utils] " + std::string(__func__) + " Given points size is less than 2. Failed to calculate yaw deviation."); - autoware_universe_utils::print_backtrace(); + autoware::universe_utils::print_backtrace(); if (throw_exception) { throw std::runtime_error(error_message); } @@ -2432,12 +2432,12 @@ double calcYawDeviation( const size_t seg_idx = findNearestSegmentIndex(overlap_removed_points, pose.position); - const double path_yaw = autoware_universe_utils::calcAzimuthAngle( - autoware_universe_utils::getPoint(overlap_removed_points.at(seg_idx)), - autoware_universe_utils::getPoint(overlap_removed_points.at(seg_idx + 1))); + const double path_yaw = autoware::universe_utils::calcAzimuthAngle( + autoware::universe_utils::getPoint(overlap_removed_points.at(seg_idx)), + autoware::universe_utils::getPoint(overlap_removed_points.at(seg_idx + 1))); const double pose_yaw = tf2::getYaw(pose.orientation); - return autoware_universe_utils::normalizeRadian(pose_yaw - path_yaw); + return autoware::universe_utils::normalizeRadian(pose_yaw - path_yaw); } extern template double calcYawDeviation>( @@ -2487,6 +2487,6 @@ extern template bool isTargetPointFront -namespace autoware_motion_utils +namespace autoware::motion_utils { using autoware_planning_msgs::msg::Trajectory; @@ -77,6 +77,6 @@ class VehicleArrivalChecker : public VehicleStopChecker void onTrajectory(const Trajectory::ConstSharedPtr msg); }; -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils #endif // AUTOWARE__MOTION_UTILS__VEHICLE__VEHICLE_STATE_CHECKER_HPP_ diff --git a/common/autoware_motion_utils/src/distance/distance.cpp b/common/autoware_motion_utils/src/distance/distance.cpp index 244b894bad473..d31e7ec709810 100644 --- a/common/autoware_motion_utils/src/distance/distance.cpp +++ b/common/autoware_motion_utils/src/distance/distance.cpp @@ -14,7 +14,7 @@ #include "autoware/motion_utils/distance/distance.hpp" -namespace autoware_motion_utils +namespace autoware::motion_utils { namespace { @@ -269,4 +269,4 @@ std::optional calcDecelDistWithJerkAndAccConstraints( return calcDecelDistPlanType3(current_vel, target_vel, current_acc, jerk_acc); } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/factor/velocity_factor_interface.cpp b/common/autoware_motion_utils/src/factor/velocity_factor_interface.cpp index f9ae98801801f..e405cdb655c02 100644 --- a/common/autoware_motion_utils/src/factor/velocity_factor_interface.cpp +++ b/common/autoware_motion_utils/src/factor/velocity_factor_interface.cpp @@ -19,7 +19,7 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { template void VelocityFactorInterface::set( @@ -31,7 +31,7 @@ void VelocityFactorInterface::set( velocity_factor_.behavior = behavior_; velocity_factor_.pose = stop_pose; velocity_factor_.distance = - static_cast(autoware_motion_utils::calcSignedArcLength(points, curr_point, stop_point)); + static_cast(autoware::motion_utils::calcSignedArcLength(points, curr_point, stop_point)); velocity_factor_.status = status; velocity_factor_.detail = detail; } @@ -46,4 +46,4 @@ template void VelocityFactorInterface::set &, const Pose &, const Pose &, const VelocityFactorStatus, const std::string &); -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/marker/marker_helper.cpp b/common/autoware_motion_utils/src/marker/marker_helper.cpp index 5cab196e22329..388c7102b825c 100644 --- a/common/autoware_motion_utils/src/marker/marker_helper.cpp +++ b/common/autoware_motion_utils/src/marker/marker_helper.cpp @@ -20,10 +20,10 @@ #include -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createDeletedDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createDeletedDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; using visualization_msgs::msg::MarkerArray; namespace @@ -85,14 +85,14 @@ inline visualization_msgs::msg::MarkerArray createDeletedVirtualWallMarkerArray( } } // namespace -namespace autoware_motion_utils +namespace autoware::motion_utils { visualization_msgs::msg::MarkerArray createStopVirtualWallMarker( const geometry_msgs::msg::Pose & pose, const std::string & module_name, const rclcpp::Time & now, const int32_t id, const double longitudinal_offset, const std::string & ns_prefix, const bool is_driving_forward) { - const auto pose_with_offset = autoware_universe_utils::calcOffsetPose( + const auto pose_with_offset = autoware::universe_utils::calcOffsetPose( pose, longitudinal_offset * (is_driving_forward ? 1.0 : -1.0), 0.0, 0.0); return createVirtualWallMarkerArray( pose_with_offset, module_name, ns_prefix + "stop_", now, id, @@ -104,7 +104,7 @@ visualization_msgs::msg::MarkerArray createSlowDownVirtualWallMarker( const int32_t id, const double longitudinal_offset, const std::string & ns_prefix, const bool is_driving_forward) { - const auto pose_with_offset = autoware_universe_utils::calcOffsetPose( + const auto pose_with_offset = autoware::universe_utils::calcOffsetPose( pose, longitudinal_offset * (is_driving_forward ? 1.0 : -1.0), 0.0, 0.0); return createVirtualWallMarkerArray( pose_with_offset, module_name, ns_prefix + "slow_down_", now, id, @@ -116,7 +116,7 @@ visualization_msgs::msg::MarkerArray createDeadLineVirtualWallMarker( const int32_t id, const double longitudinal_offset, const std::string & ns_prefix, const bool is_driving_forward) { - const auto pose_with_offset = autoware_universe_utils::calcOffsetPose( + const auto pose_with_offset = autoware::universe_utils::calcOffsetPose( pose, longitudinal_offset * (is_driving_forward ? 1.0 : -1.0), 0.0, 0.0); return createVirtualWallMarkerArray( pose_with_offset, module_name, ns_prefix + "dead_line_", now, id, @@ -140,4 +140,4 @@ visualization_msgs::msg::MarkerArray createDeletedDeadLineVirtualWallMarker( { return createDeletedVirtualWallMarkerArray("dead_line_", now, id); } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/marker/virtual_wall_marker_creator.cpp b/common/autoware_motion_utils/src/marker/virtual_wall_marker_creator.cpp index 658aa66208133..4fecaea1bb838 100644 --- a/common/autoware_motion_utils/src/marker/virtual_wall_marker_creator.cpp +++ b/common/autoware_motion_utils/src/marker/virtual_wall_marker_creator.cpp @@ -16,7 +16,7 @@ #include "autoware/motion_utils/marker/marker_helper.hpp" -namespace autoware_motion_utils +namespace autoware::motion_utils { void VirtualWallMarkerCreator::cleanup() @@ -55,13 +55,13 @@ visualization_msgs::msg::MarkerArray VirtualWallMarkerCreator::create_markers( for (const auto & virtual_wall : virtual_walls_) { switch (virtual_wall.style) { case stop: - create_fn = autoware_motion_utils::createStopVirtualWallMarker; + create_fn = autoware::motion_utils::createStopVirtualWallMarker; break; case slowdown: - create_fn = autoware_motion_utils::createSlowDownVirtualWallMarker; + create_fn = autoware::motion_utils::createSlowDownVirtualWallMarker; break; case deadline: - create_fn = autoware_motion_utils::createDeadLineVirtualWallMarker; + create_fn = autoware::motion_utils::createDeadLineVirtualWallMarker; break; } auto markers = create_fn( @@ -85,4 +85,4 @@ visualization_msgs::msg::MarkerArray VirtualWallMarkerCreator::create_markers( cleanup(); return marker_array; } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/resample/resample.cpp b/common/autoware_motion_utils/src/resample/resample.cpp index f0874264aee73..baf1c534a8a00 100644 --- a/common/autoware_motion_utils/src/resample/resample.cpp +++ b/common/autoware_motion_utils/src/resample/resample.cpp @@ -21,7 +21,7 @@ #include "interpolation/spline_interpolation.hpp" #include "interpolation/zero_order_hold.hpp" -namespace autoware_motion_utils +namespace autoware::motion_utils { std::vector resamplePointVector( const std::vector & points, @@ -50,7 +50,7 @@ std::vector resamplePointVector( for (size_t i = 1; i < points.size(); ++i) { const auto & prev_pt = points.at(i - 1); const auto & curr_pt = points.at(i); - const double ds = autoware_universe_utils::calcDistance2d(prev_pt, curr_pt); + const double ds = autoware::universe_utils::calcDistance2d(prev_pt, curr_pt); input_arclength.push_back(ds + input_arclength.back()); x.push_back(curr_pt.x); y.push_back(curr_pt.y); @@ -91,7 +91,7 @@ std::vector resamplePointVector( const std::vector & points, const double resample_interval, const bool use_akima_spline_for_xy, const bool use_lerp_for_z) { - const double input_length = autoware_motion_utils::calcArcLength(points); + const double input_length = autoware::motion_utils::calcArcLength(points); std::vector resampling_arclength; for (double s = 0.0; s < input_length; s += resample_interval) { @@ -103,7 +103,7 @@ std::vector resamplePointVector( } // Insert terminal point - if (input_length - resampling_arclength.back() < autoware_motion_utils::overlap_threshold) { + if (input_length - resampling_arclength.back() < autoware::motion_utils::overlap_threshold) { resampling_arclength.back() = input_length; } else { resampling_arclength.push_back(input_length); @@ -118,7 +118,7 @@ std::vector resamplePoseVector( const bool use_lerp_for_z) { // Remove overlap points for resampling - const auto points = autoware_motion_utils::removeOverlapPoints(points_raw); + const auto points = autoware::motion_utils::removeOverlapPoints(points_raw); // validate arguments if (!resample_utils::validate_arguments(points, resampled_arclength)) { @@ -144,8 +144,8 @@ std::vector resamplePoseVector( } const bool is_driving_forward = - autoware_universe_utils::isDrivingForward(points.at(0), points.at(1)); - autoware_motion_utils::insertOrientation(resampled_points, is_driving_forward); + autoware::universe_utils::isDrivingForward(points.at(0), points.at(1)); + autoware::motion_utils::insertOrientation(resampled_points, is_driving_forward); // Initial orientation is depend on the initial value of the resampled_arclength // when backward driving @@ -160,7 +160,7 @@ std::vector resamplePoseVector( const std::vector & points, const double resample_interval, const bool use_akima_spline_for_xy, const bool use_lerp_for_z) { - const double input_length = autoware_motion_utils::calcArcLength(points); + const double input_length = autoware::motion_utils::calcArcLength(points); std::vector resampling_arclength; for (double s = 0.0; s < input_length; s += resample_interval) { @@ -172,7 +172,7 @@ std::vector resamplePoseVector( } // Insert terminal point - if (input_length - resampling_arclength.back() < autoware_motion_utils::overlap_threshold) { + if (input_length - resampling_arclength.back() < autoware::motion_utils::overlap_threshold) { resampling_arclength.back() = input_length; } else { resampling_arclength.push_back(input_length); @@ -203,9 +203,9 @@ tier4_planning_msgs::msg::PathWithLaneId resamplePath( std::fabs(distance_to_resampling_point - resampling_arclength.at(j - 1)); const double dist_to_following_point = std::fabs(resampling_arclength.at(j) - distance_to_resampling_point); - if (dist_to_prev_point < autoware_motion_utils::overlap_threshold) { + if (dist_to_prev_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(j - 1) = distance_to_resampling_point; - } else if (dist_to_following_point < autoware_motion_utils::overlap_threshold) { + } else if (dist_to_following_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(j) = distance_to_resampling_point; } else { resampling_arclength.insert( @@ -260,7 +260,7 @@ tier4_planning_msgs::msg::PathWithLaneId resamplePath( const auto & prev_pt = input_path.points.at(i - 1).point; const auto & curr_pt = input_path.points.at(i).point; const double ds = - autoware_universe_utils::calcDistance2d(prev_pt.pose.position, curr_pt.pose.position); + autoware::universe_utils::calcDistance2d(prev_pt.pose.position, curr_pt.pose.position); input_arclength.push_back(ds + input_arclength.back()); input_pose.push_back(curr_pt.pose); v_lon.push_back(curr_pt.longitudinal_velocity_mps); @@ -370,7 +370,7 @@ tier4_planning_msgs::msg::PathWithLaneId resamplePath( transformed_input_path.at(i) = input_path.points.at(i).point; } // compute path length - const double input_path_len = autoware_motion_utils::calcArcLength(transformed_input_path); + const double input_path_len = autoware::motion_utils::calcArcLength(transformed_input_path); std::vector resampling_arclength; for (double s = 0.0; s < input_path_len; s += resample_interval) { @@ -382,7 +382,7 @@ tier4_planning_msgs::msg::PathWithLaneId resamplePath( } // Insert terminal point - if (input_path_len - resampling_arclength.back() < autoware_motion_utils::overlap_threshold) { + if (input_path_len - resampling_arclength.back() < autoware::motion_utils::overlap_threshold) { resampling_arclength.back() = input_path_len; } else { resampling_arclength.push_back(input_path_len); @@ -391,7 +391,7 @@ tier4_planning_msgs::msg::PathWithLaneId resamplePath( // Insert stop point if (resample_input_path_stop_point) { const auto distance_to_stop_point = - autoware_motion_utils::calcDistanceToForwardStopPoint(transformed_input_path, 0); + autoware::motion_utils::calcDistanceToForwardStopPoint(transformed_input_path, 0); if (distance_to_stop_point && !resampling_arclength.empty()) { for (size_t i = 1; i < resampling_arclength.size(); ++i) { if ( @@ -401,9 +401,9 @@ tier4_planning_msgs::msg::PathWithLaneId resamplePath( std::fabs(*distance_to_stop_point - resampling_arclength.at(i - 1)); const double dist_to_following_point = std::fabs(resampling_arclength.at(i) - *distance_to_stop_point); - if (dist_to_prev_point < autoware_motion_utils::overlap_threshold) { + if (dist_to_prev_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(i - 1) = *distance_to_stop_point; - } else if (dist_to_following_point < autoware_motion_utils::overlap_threshold) { + } else if (dist_to_following_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(i) = *distance_to_stop_point; } else { resampling_arclength.insert(resampling_arclength.begin() + i, *distance_to_stop_point); @@ -450,7 +450,7 @@ autoware_planning_msgs::msg::Path resamplePath( const auto & prev_pt = input_path.points.at(i - 1); const auto & curr_pt = input_path.points.at(i); const double ds = - autoware_universe_utils::calcDistance2d(prev_pt.pose.position, curr_pt.pose.position); + autoware::universe_utils::calcDistance2d(prev_pt.pose.position, curr_pt.pose.position); input_arclength.push_back(ds + input_arclength.back()); input_pose.push_back(curr_pt.pose); v_lon.push_back(curr_pt.longitudinal_velocity_mps); @@ -512,7 +512,7 @@ autoware_planning_msgs::msg::Path resamplePath( return input_path; } - const double input_path_len = autoware_motion_utils::calcArcLength(input_path.points); + const double input_path_len = autoware::motion_utils::calcArcLength(input_path.points); std::vector resampling_arclength; for (double s = 0.0; s < input_path_len; s += resample_interval) { @@ -524,7 +524,7 @@ autoware_planning_msgs::msg::Path resamplePath( } // Insert terminal point - if (input_path_len - resampling_arclength.back() < autoware_motion_utils::overlap_threshold) { + if (input_path_len - resampling_arclength.back() < autoware::motion_utils::overlap_threshold) { resampling_arclength.back() = input_path_len; } else { resampling_arclength.push_back(input_path_len); @@ -533,7 +533,7 @@ autoware_planning_msgs::msg::Path resamplePath( // Insert stop point if (resample_input_path_stop_point) { const auto distance_to_stop_point = - autoware_motion_utils::calcDistanceToForwardStopPoint(input_path.points, 0); + autoware::motion_utils::calcDistanceToForwardStopPoint(input_path.points, 0); if (distance_to_stop_point && !resampling_arclength.empty()) { for (size_t i = 1; i < resampling_arclength.size(); ++i) { if ( @@ -543,9 +543,9 @@ autoware_planning_msgs::msg::Path resamplePath( std::fabs(*distance_to_stop_point - resampling_arclength.at(i - 1)); const double dist_to_following_point = std::fabs(resampling_arclength.at(i) - *distance_to_stop_point); - if (dist_to_prev_point < autoware_motion_utils::overlap_threshold) { + if (dist_to_prev_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(i - 1) = *distance_to_stop_point; - } else if (dist_to_following_point < autoware_motion_utils::overlap_threshold) { + } else if (dist_to_following_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(i) = *distance_to_stop_point; } else { resampling_arclength.insert(resampling_arclength.begin() + i, *distance_to_stop_point); @@ -605,7 +605,7 @@ autoware_planning_msgs::msg::Trajectory resampleTrajectory( const auto & prev_pt = input_trajectory.points.at(i - 1); const auto & curr_pt = input_trajectory.points.at(i); const double ds = - autoware_universe_utils::calcDistance2d(prev_pt.pose.position, curr_pt.pose.position); + autoware::universe_utils::calcDistance2d(prev_pt.pose.position, curr_pt.pose.position); input_arclength.push_back(ds + input_arclength.back()); input_pose.push_back(curr_pt.pose); v_lon.push_back(curr_pt.longitudinal_velocity_mps); @@ -678,7 +678,8 @@ autoware_planning_msgs::msg::Trajectory resampleTrajectory( return input_trajectory; } - const double input_trajectory_len = autoware_motion_utils::calcArcLength(input_trajectory.points); + const double input_trajectory_len = + autoware::motion_utils::calcArcLength(input_trajectory.points); std::vector resampling_arclength; for (double s = 0.0; s < input_trajectory_len; s += resample_interval) { @@ -691,7 +692,8 @@ autoware_planning_msgs::msg::Trajectory resampleTrajectory( // Insert terminal point if ( - input_trajectory_len - resampling_arclength.back() < autoware_motion_utils::overlap_threshold) { + input_trajectory_len - resampling_arclength.back() < + autoware::motion_utils::overlap_threshold) { resampling_arclength.back() = input_trajectory_len; } else { resampling_arclength.push_back(input_trajectory_len); @@ -700,7 +702,7 @@ autoware_planning_msgs::msg::Trajectory resampleTrajectory( // Insert stop point if (resample_input_trajectory_stop_point) { const auto distance_to_stop_point = - autoware_motion_utils::calcDistanceToForwardStopPoint(input_trajectory.points, 0); + autoware::motion_utils::calcDistanceToForwardStopPoint(input_trajectory.points, 0); if (distance_to_stop_point && !resampling_arclength.empty()) { for (size_t i = 1; i < resampling_arclength.size(); ++i) { if ( @@ -710,9 +712,9 @@ autoware_planning_msgs::msg::Trajectory resampleTrajectory( std::fabs(*distance_to_stop_point - resampling_arclength.at(i - 1)); const double dist_to_following_point = std::fabs(resampling_arclength.at(i) - *distance_to_stop_point); - if (dist_to_prev_point < autoware_motion_utils::overlap_threshold) { + if (dist_to_prev_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(i - 1) = *distance_to_stop_point; - } else if (dist_to_following_point < autoware_motion_utils::overlap_threshold) { + } else if (dist_to_following_point < autoware::motion_utils::overlap_threshold) { resampling_arclength.at(i) = *distance_to_stop_point; } else { resampling_arclength.insert(resampling_arclength.begin() + i, *distance_to_stop_point); @@ -728,4 +730,4 @@ autoware_planning_msgs::msg::Trajectory resampleTrajectory( use_zero_order_hold_for_twist); } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/trajectory/conversion.cpp b/common/autoware_motion_utils/src/trajectory/conversion.cpp index 63efc7135cae2..368d3e0fbbb75 100644 --- a/common/autoware_motion_utils/src/trajectory/conversion.cpp +++ b/common/autoware_motion_utils/src/trajectory/conversion.cpp @@ -16,7 +16,7 @@ #include -namespace autoware_motion_utils +namespace autoware::motion_utils { /** * @brief Convert std::vector to @@ -51,4 +51,4 @@ std::vector convertToTrajectoryPoi return output; } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/trajectory/interpolation.cpp b/common/autoware_motion_utils/src/trajectory/interpolation.cpp index 4b00c6344a990..4a9eaeca58d30 100644 --- a/common/autoware_motion_utils/src/trajectory/interpolation.cpp +++ b/common/autoware_motion_utils/src/trajectory/interpolation.cpp @@ -22,7 +22,7 @@ using autoware_planning_msgs::msg::TrajectoryPoint; using tier4_planning_msgs::msg::PathPointWithLaneId; using tier4_planning_msgs::msg::PathWithLaneId; -namespace autoware_motion_utils +namespace autoware::motion_utils { TrajectoryPoint calcInterpolatedPoint( const Trajectory & trajectory, const geometry_msgs::msg::Pose & target_pose, @@ -37,14 +37,15 @@ TrajectoryPoint calcInterpolatedPoint( return trajectory.points.front(); } - const size_t segment_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( - trajectory.points, target_pose, dist_threshold, yaw_threshold); + const size_t segment_idx = + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + trajectory.points, target_pose, dist_threshold, yaw_threshold); // Calculate interpolation ratio const auto & curr_pt = trajectory.points.at(segment_idx); const auto & next_pt = trajectory.points.at(segment_idx + 1); - const auto v1 = autoware_universe_utils::point2tfVector(curr_pt, next_pt); - const auto v2 = autoware_universe_utils::point2tfVector(curr_pt, target_pose); + const auto v1 = autoware::universe_utils::point2tfVector(curr_pt, next_pt); + const auto v2 = autoware::universe_utils::point2tfVector(curr_pt, target_pose); if (v1.length2() < 1e-3) { return curr_pt; } @@ -57,7 +58,7 @@ TrajectoryPoint calcInterpolatedPoint( // pose interpolation interpolated_point.pose = - autoware_universe_utils::calcInterpolatedPose(curr_pt, next_pt, clamped_ratio); + autoware::universe_utils::calcInterpolatedPose(curr_pt, next_pt, clamped_ratio); // twist interpolation if (use_zero_order_hold_for_twist) { @@ -105,14 +106,15 @@ PathPointWithLaneId calcInterpolatedPoint( return path.points.front(); } - const size_t segment_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( - path.points, target_pose, dist_threshold, yaw_threshold); + const size_t segment_idx = + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + path.points, target_pose, dist_threshold, yaw_threshold); // Calculate interpolation ratio const auto & curr_pt = path.points.at(segment_idx); const auto & next_pt = path.points.at(segment_idx + 1); - const auto v1 = autoware_universe_utils::point2tfVector(curr_pt.point, next_pt.point); - const auto v2 = autoware_universe_utils::point2tfVector(curr_pt.point, target_pose); + const auto v1 = autoware::universe_utils::point2tfVector(curr_pt.point, next_pt.point); + const auto v2 = autoware::universe_utils::point2tfVector(curr_pt.point, target_pose); if (v1.length2() < 1e-3) { return curr_pt; } @@ -125,7 +127,7 @@ PathPointWithLaneId calcInterpolatedPoint( // pose interpolation interpolated_point.point.pose = - autoware_universe_utils::calcInterpolatedPose(curr_pt.point, next_pt.point, clamped_ratio); + autoware::universe_utils::calcInterpolatedPose(curr_pt.point, next_pt.point, clamped_ratio); // twist interpolation if (use_zero_order_hold_for_twist) { @@ -145,4 +147,4 @@ PathPointWithLaneId calcInterpolatedPoint( return interpolated_point; } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/trajectory/path_with_lane_id.cpp b/common/autoware_motion_utils/src/trajectory/path_with_lane_id.cpp index 52870ba2407d5..cd8de63f56c1d 100644 --- a/common/autoware_motion_utils/src/trajectory/path_with_lane_id.cpp +++ b/common/autoware_motion_utils/src/trajectory/path_with_lane_id.cpp @@ -21,7 +21,7 @@ #include #include -namespace autoware_motion_utils +namespace autoware::motion_utils { std::optional> getPathIndexRangeWithLaneId( @@ -116,15 +116,15 @@ tier4_planning_msgs::msg::PathWithLaneId convertToRearWheelCenter( // apply beta to CoG pose geometry_msgs::msg::Pose cog_pose_with_beta; - cog_pose_with_beta.position = autoware_universe_utils::getPoint(path.points.at(i)); + cog_pose_with_beta.position = autoware::universe_utils::getPoint(path.points.at(i)); cog_pose_with_beta.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw_vec.at(i) - beta); + autoware::universe_utils::createQuaternionFromYaw(yaw_vec.at(i) - beta); const auto rear_pose = - autoware_universe_utils::calcOffsetPose(cog_pose_with_beta, -rear_to_cog, 0.0, 0.0); + autoware::universe_utils::calcOffsetPose(cog_pose_with_beta, -rear_to_cog, 0.0, 0.0); // update pose - autoware_universe_utils::setPose(rear_pose, cog_path.points.at(i)); + autoware::universe_utils::setPose(rear_pose, cog_path.points.at(i)); } // compensate for the last pose @@ -136,4 +136,4 @@ tier4_planning_msgs::msg::PathWithLaneId convertToRearWheelCenter( return cog_path; } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/src/trajectory/trajectory.cpp b/common/autoware_motion_utils/src/trajectory/trajectory.cpp index a35e6ff02b84b..5d536c0772fea 100644 --- a/common/autoware_motion_utils/src/trajectory/trajectory.cpp +++ b/common/autoware_motion_utils/src/trajectory/trajectory.cpp @@ -14,7 +14,7 @@ #include "autoware/motion_utils/trajectory/trajectory.hpp" -namespace autoware_motion_utils +namespace autoware::motion_utils { // @@ -599,4 +599,4 @@ template bool isTargetPointFront -namespace autoware_motion_utils +namespace autoware::motion_utils { VehicleStopCheckerBase::VehicleStopCheckerBase(rclcpp::Node * node, double buffer_duration) : clock_(node->get_clock()), logger_(node->get_logger()) @@ -118,13 +118,13 @@ bool VehicleArrivalChecker::isVehicleStoppedAtStopPoint(const double stop_durati } const auto & p = odometry_ptr_->pose.pose.position; - const auto idx = autoware_motion_utils::searchZeroVelocityIndex(trajectory_ptr_->points); + const auto idx = autoware::motion_utils::searchZeroVelocityIndex(trajectory_ptr_->points); if (!idx) { return false; } - return std::abs(autoware_motion_utils::calcSignedArcLength( + return std::abs(autoware::motion_utils::calcSignedArcLength( trajectory_ptr_->points, p, idx.value())) < th_arrived_distance_m; } @@ -132,4 +132,4 @@ void VehicleArrivalChecker::onTrajectory(const Trajectory::ConstSharedPtr msg) { trajectory_ptr_ = msg; } -} // namespace autoware_motion_utils +} // namespace autoware::motion_utils diff --git a/common/autoware_motion_utils/test/src/distance/test_distance.cpp b/common/autoware_motion_utils/test/src/distance/test_distance.cpp index f32a92f5c5cbc..f6d6a9cc4dafd 100644 --- a/common/autoware_motion_utils/test/src/distance/test_distance.cpp +++ b/common/autoware_motion_utils/test/src/distance/test_distance.cpp @@ -16,7 +16,7 @@ #include "gtest/gtest.h" namespace { -using autoware_motion_utils::calcDecelDistWithJerkAndAccConstraints; +using autoware::motion_utils::calcDecelDistWithJerkAndAccConstraints; constexpr double epsilon = 1e-3; diff --git a/common/autoware_motion_utils/test/src/marker/test_virtual_wall_marker_creator.cpp b/common/autoware_motion_utils/test/src/marker/test_virtual_wall_marker_creator.cpp index 5ddb0b1a1e8f8..5e2e0cc4bdf02 100644 --- a/common/autoware_motion_utils/test/src/marker/test_virtual_wall_marker_creator.cpp +++ b/common/autoware_motion_utils/test/src/marker/test_virtual_wall_marker_creator.cpp @@ -38,9 +38,9 @@ bool has_ns_id( TEST(VirtualWallMarkerCreator, oneWall) { - autoware_motion_utils::VirtualWall wall; - autoware_motion_utils::VirtualWallMarkerCreator creator; - wall.style = autoware_motion_utils::VirtualWallType::stop; + autoware::motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWallMarkerCreator creator; + wall.style = autoware::motion_utils::VirtualWallType::stop; wall.pose.position.x = 1.0; wall.pose.position.y = 2.0; creator.add_virtual_wall(wall); @@ -63,16 +63,16 @@ TEST(VirtualWallMarkerCreator, oneWall) TEST(VirtualWallMarkerCreator, manyWalls) { - autoware_motion_utils::VirtualWall wall; - autoware_motion_utils::VirtualWallMarkerCreator creator; - wall.style = autoware_motion_utils::VirtualWallType::stop; + autoware::motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWallMarkerCreator creator; + wall.style = autoware::motion_utils::VirtualWallType::stop; wall.ns = "ns1_"; creator.add_virtual_wall(wall); creator.add_virtual_wall(wall); creator.add_virtual_wall(wall); wall.ns = "ns2_"; creator.add_virtual_wall(wall); - wall.style = autoware_motion_utils::VirtualWallType::slowdown; + wall.style = autoware::motion_utils::VirtualWallType::slowdown; wall.ns = "ns2_"; creator.add_virtual_wall(wall); creator.add_virtual_wall(wall); @@ -80,7 +80,7 @@ TEST(VirtualWallMarkerCreator, manyWalls) creator.add_virtual_wall(wall); creator.add_virtual_wall(wall); creator.add_virtual_wall(wall); - wall.style = autoware_motion_utils::VirtualWallType::deadline; + wall.style = autoware::motion_utils::VirtualWallType::deadline; wall.ns = "ns1_"; creator.add_virtual_wall(wall); wall.ns = "ns2_"; diff --git a/common/autoware_motion_utils/test/src/resample/test_resample.cpp b/common/autoware_motion_utils/test/src/resample/test_resample.cpp index 1f83da0726c42..62db1b665d07a 100644 --- a/common/autoware_motion_utils/test/src/resample/test_resample.cpp +++ b/common/autoware_motion_utils/test/src/resample/test_resample.cpp @@ -27,13 +27,13 @@ namespace { +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromRPY; +using autoware::universe_utils::transformPoint; using autoware_planning_msgs::msg::Path; using autoware_planning_msgs::msg::PathPoint; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromRPY; -using autoware_universe_utils::transformPoint; using tier4_planning_msgs::msg::PathPointWithLaneId; using tier4_planning_msgs::msg::PathWithLaneId; @@ -177,7 +177,7 @@ std::vector generateArclength(const size_t num_points, const double inte TEST(resample_vector_pose, resample_by_same_interval) { - using autoware_motion_utils::resamplePoseVector; + using autoware::motion_utils::resamplePoseVector; using geometry_msgs::msg::Pose; std::vector path(10); @@ -220,7 +220,7 @@ TEST(resample_vector_pose, resample_by_same_interval) TEST(resample_path_with_lane_id, resample_path_by_vector) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; // Output is same as input { auto path = generateTestPathWithLaneId(10, 1.0, 3.0, 1.0, 0.01); @@ -251,7 +251,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector) // Change the last point orientation path.points.back() = generateTestPathPointWithLaneId( - 9.0, 0.0, 0.0, autoware_universe_utils::pi / 3.0, 3.0, 1.0, 0.01, true, {9}); + 9.0, 0.0, 0.0, autoware::universe_utils::pi / 3.0, 3.0, 1.0, 0.01, true, {9}); { const auto resampled_path = resamplePath(path, resampled_arclength); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { @@ -276,7 +276,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector) const auto p = resampled_path.points.back(); const auto ans_p = path.points.back(); - const auto ans_quat = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); + const auto ans_quat = autoware::universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); EXPECT_NEAR(p.point.pose.position.x, ans_p.point.pose.position.x, epsilon); EXPECT_NEAR(p.point.pose.position.y, ans_p.point.pose.position.y, epsilon); EXPECT_NEAR(p.point.pose.position.z, ans_p.point.pose.position.z, epsilon); @@ -540,14 +540,14 @@ TEST(resample_path_with_lane_id, resample_path_by_vector) TEST(resample_path_with_lane_id, resample_path_by_vector_backward) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; { tier4_planning_msgs::msg::PathWithLaneId path; path.points.resize(10); for (size_t i = 0; i < 10; ++i) { path.points.at(i) = generateTestPathPointWithLaneId( - i * 1.0, 0.0, 0.0, autoware_universe_utils::pi, i * 1.0, i * 0.5, i * 0.1, false, + i * 1.0, 0.0, 0.0, autoware::universe_utils::pi, i * 1.0, i * 0.5, i * 0.1, false, {static_cast(i)}); } path.points.back().point.is_final = true; @@ -639,7 +639,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector_backward) } } - const auto ans_quat = autoware_universe_utils::createQuaternionFromYaw(M_PI); + const auto ans_quat = autoware::universe_utils::createQuaternionFromYaw(M_PI); for (size_t i = 0; i < resampled_path.points.size(); ++i) { const auto p = resampled_path.points.at(i).point; EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); @@ -659,7 +659,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector_backward) } path.points.back().point.is_final = true; path.points.at(0).point.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); + autoware::universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); std::vector resampled_arclength = {0.0, 1.2, 1.5, 5.3, 7.5, 9.0}; const auto resampled_path = resamplePath(path, resampled_arclength); @@ -750,7 +750,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector_backward) // Initial Orientation { - const auto ans_quat = autoware_universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); + const auto ans_quat = autoware::universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); const auto p = resampled_path.points.at(0).point; EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); EXPECT_NEAR(p.pose.orientation.y, ans_quat.y, epsilon); @@ -758,7 +758,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector_backward) EXPECT_NEAR(p.pose.orientation.w, ans_quat.w, epsilon); } - const auto ans_quat = autoware_universe_utils::createQuaternionFromYaw(M_PI); + const auto ans_quat = autoware::universe_utils::createQuaternionFromYaw(M_PI); for (size_t i = 1; i < resampled_path.points.size(); ++i) { const auto p = resampled_path.points.at(i).point; EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); @@ -771,7 +771,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector_backward) TEST(resample_path_with_lane_id, resample_path_by_vector_non_default) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; // Lerp x, y { @@ -919,7 +919,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector_non_default) } const double pitch = std::atan(1.0); - const auto ans_quat = autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, 0.0); + const auto ans_quat = autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, 0.0); for (size_t i = 0; i < resampled_path.points.size(); ++i) { const auto p = resampled_path.points.at(i).point; EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); @@ -1009,7 +1009,7 @@ TEST(resample_path_with_lane_id, resample_path_by_vector_non_default) TEST(resample_path_with_lane_id, resample_path_by_same_interval) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; // Same point resampling { @@ -1045,7 +1045,7 @@ TEST(resample_path_with_lane_id, resample_path_by_same_interval) } // Change the last point orientation path.points.back() = generateTestPathPointWithLaneId( - 9.0, 0.0, 0.0, autoware_universe_utils::pi / 3.0, 3.0, 1.0, 0.01, true, {9}); + 9.0, 0.0, 0.0, autoware::universe_utils::pi / 3.0, 3.0, 1.0, 0.01, true, {9}); { const auto resampled_path = resamplePath(path, 1.0); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { @@ -1070,7 +1070,7 @@ TEST(resample_path_with_lane_id, resample_path_by_same_interval) const auto p = resampled_path.points.back(); const auto ans_p = path.points.back(); - const auto ans_quat = autoware_universe_utils::createQuaternionFromYaw(0.0); + const auto ans_quat = autoware::universe_utils::createQuaternionFromYaw(0.0); EXPECT_NEAR(p.point.pose.position.x, ans_p.point.pose.position.x, epsilon); EXPECT_NEAR(p.point.pose.position.y, ans_p.point.pose.position.y, epsilon); EXPECT_NEAR(p.point.pose.position.z, ans_p.point.pose.position.z, epsilon); @@ -1194,7 +1194,7 @@ TEST(resample_path_with_lane_id, resample_path_by_same_interval) path.points.at(0).point.longitudinal_velocity_mps = 5.0; path.points.back().point.is_final = true; - const double ds = 1.0 - autoware_motion_utils::overlap_threshold; + const double ds = 1.0 - autoware::motion_utils::overlap_threshold; const auto resampled_path = resamplePath(path, ds); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { const auto p = resampled_path.points.at(i); @@ -1564,7 +1564,7 @@ TEST(resample_path_with_lane_id, resample_path_by_same_interval) TEST(resample_path, resample_path_by_vector) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; // Output is same as input { auto path = generateTestPath(10, 1.0, 3.0, 1.0, 0.01); @@ -1590,7 +1590,7 @@ TEST(resample_path, resample_path_by_vector) // Change the last point orientation path.points.back() = - generateTestPathPoint(9.0, 0.0, 0.0, autoware_universe_utils::pi / 3.0, 3.0, 1.0, 0.01); + generateTestPathPoint(9.0, 0.0, 0.0, autoware::universe_utils::pi / 3.0, 3.0, 1.0, 0.01); { const auto resampled_path = resamplePath(path, resampled_arclength); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { @@ -1610,7 +1610,7 @@ TEST(resample_path, resample_path_by_vector) const auto p = resampled_path.points.back(); const auto ans_p = path.points.back(); - const auto ans_quat = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); + const auto ans_quat = autoware::universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); EXPECT_NEAR(p.pose.position.x, ans_p.pose.position.x, epsilon); EXPECT_NEAR(p.pose.position.y, ans_p.pose.position.y, epsilon); EXPECT_NEAR(p.pose.position.z, ans_p.pose.position.z, epsilon); @@ -1812,7 +1812,7 @@ TEST(resample_path, resample_path_by_vector) TEST(resample_path, resample_path_by_vector_backward) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; { autoware_planning_msgs::msg::Path path; @@ -1884,7 +1884,7 @@ TEST(resample_path, resample_path_by_vector_backward) EXPECT_NEAR(p.heading_rate_rps, 0.9, epsilon); } - const auto ans_quat = autoware_universe_utils::createQuaternionFromYaw(M_PI); + const auto ans_quat = autoware::universe_utils::createQuaternionFromYaw(M_PI); for (size_t i = 0; i < resampled_path.points.size(); ++i) { const auto p = resampled_path.points.at(i); EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); @@ -1902,7 +1902,7 @@ TEST(resample_path, resample_path_by_vector_backward) path.points.at(i) = generateTestPathPoint(i * 1.0, 0.0, 0.0, M_PI, i * 1.0, i * 0.5, i * 0.1); } path.points.at(0).pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); + autoware::universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); std::vector resampled_arclength = {0.0, 1.2, 1.5, 5.3, 7.5, 9.0}; const auto resampled_path = resamplePath(path, resampled_arclength); @@ -1969,7 +1969,7 @@ TEST(resample_path, resample_path_by_vector_backward) // Initial Orientation { - const auto ans_quat = autoware_universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); + const auto ans_quat = autoware::universe_utils::createQuaternionFromYaw(M_PI + M_PI / 3.0); const auto p = resampled_path.points.at(0); EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); EXPECT_NEAR(p.pose.orientation.y, ans_quat.y, epsilon); @@ -1977,7 +1977,7 @@ TEST(resample_path, resample_path_by_vector_backward) EXPECT_NEAR(p.pose.orientation.w, ans_quat.w, epsilon); } - const auto ans_quat = autoware_universe_utils::createQuaternionFromYaw(M_PI); + const auto ans_quat = autoware::universe_utils::createQuaternionFromYaw(M_PI); for (size_t i = 1; i < resampled_path.points.size(); ++i) { const auto p = resampled_path.points.at(i); EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); @@ -1990,7 +1990,7 @@ TEST(resample_path, resample_path_by_vector_backward) TEST(resample_path, resample_path_by_vector_non_default) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; // Lerp x, y { @@ -2103,7 +2103,7 @@ TEST(resample_path, resample_path_by_vector_non_default) } const double pitch = std::atan(1.0); - const auto ans_quat = autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, 0.0); + const auto ans_quat = autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, 0.0); for (size_t i = 0; i < resampled_path.points.size(); ++i) { const auto p = resampled_path.points.at(i); EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); @@ -2175,7 +2175,7 @@ TEST(resample_path, resample_path_by_vector_non_default) TEST(resample_path, resample_path_by_same_interval) { - using autoware_motion_utils::resamplePath; + using autoware::motion_utils::resamplePath; // Same point resampling { @@ -2205,7 +2205,7 @@ TEST(resample_path, resample_path_by_same_interval) // Change the last point orientation path.points.back() = - generateTestPathPoint(9.0, 0.0, 0.0, autoware_universe_utils::pi / 3.0, 3.0, 1.0, 0.01); + generateTestPathPoint(9.0, 0.0, 0.0, autoware::universe_utils::pi / 3.0, 3.0, 1.0, 0.01); { const auto resampled_path = resamplePath(path, 1.0); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { @@ -2225,7 +2225,7 @@ TEST(resample_path, resample_path_by_same_interval) const auto p = resampled_path.points.back(); const auto ans_p = path.points.back(); - const auto ans_quat = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); + const auto ans_quat = autoware::universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); EXPECT_NEAR(p.pose.position.x, ans_p.pose.position.x, epsilon); EXPECT_NEAR(p.pose.position.y, ans_p.pose.position.y, epsilon); EXPECT_NEAR(p.pose.position.z, ans_p.pose.position.z, epsilon); @@ -2321,7 +2321,7 @@ TEST(resample_path, resample_path_by_same_interval) } path.points.at(0).longitudinal_velocity_mps = 5.0; - const double ds = 1.0 - autoware_motion_utils::overlap_threshold; + const double ds = 1.0 - autoware::motion_utils::overlap_threshold; const auto resampled_path = resamplePath(path, ds); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { const auto p = resampled_path.points.at(i); @@ -2633,7 +2633,7 @@ TEST(resample_path, resample_path_by_same_interval) TEST(resample_trajectory, resample_trajectory_by_vector) { - using autoware_motion_utils::resampleTrajectory; + using autoware::motion_utils::resampleTrajectory; // Output is same as input { auto traj = generateTestTrajectory(10, 1.0, 3.0, 1.0, 0.01, 0.5); @@ -2660,7 +2660,7 @@ TEST(resample_trajectory, resample_trajectory_by_vector) // Change the last point orientation traj.points.back() = generateTestTrajectoryPoint( - 9.0, 0.0, 0.0, autoware_universe_utils::pi / 3.0, 3.0, 1.0, 0.01, 0.5); + 9.0, 0.0, 0.0, autoware::universe_utils::pi / 3.0, 3.0, 1.0, 0.01, 0.5); { const auto resampled_path = resampleTrajectory(traj, resampled_arclength); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { @@ -2681,7 +2681,7 @@ TEST(resample_trajectory, resample_trajectory_by_vector) const auto p = resampled_path.points.back(); const auto ans_p = traj.points.back(); - const auto ans_quat = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); + const auto ans_quat = autoware::universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); EXPECT_NEAR(p.pose.position.x, ans_p.pose.position.x, epsilon); EXPECT_NEAR(p.pose.position.y, ans_p.pose.position.y, epsilon); EXPECT_NEAR(p.pose.position.z, ans_p.pose.position.z, epsilon); @@ -2891,7 +2891,7 @@ TEST(resample_trajectory, resample_trajectory_by_vector) TEST(resample_trajectory, resample_trajectory_by_vector_non_default) { - using autoware_motion_utils::resampleTrajectory; + using autoware::motion_utils::resampleTrajectory; // Lerp x, y { @@ -3013,7 +3013,7 @@ TEST(resample_trajectory, resample_trajectory_by_vector_non_default) } const double pitch = std::atan(1.0); - const auto ans_quat = autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, 0.0); + const auto ans_quat = autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, 0.0); for (size_t i = 0; i < resampled_traj.points.size(); ++i) { const auto p = resampled_traj.points.at(i); EXPECT_NEAR(p.pose.orientation.x, ans_quat.x, epsilon); @@ -3090,7 +3090,7 @@ TEST(resample_trajectory, resample_trajectory_by_vector_non_default) TEST(resample_trajectory, resample_trajectory_by_same_interval) { - using autoware_motion_utils::resampleTrajectory; + using autoware::motion_utils::resampleTrajectory; // Same point resampling { @@ -3122,7 +3122,7 @@ TEST(resample_trajectory, resample_trajectory_by_same_interval) // Change the last point orientation traj.points.back() = generateTestTrajectoryPoint( - 9.0, 0.0, 0.0, autoware_universe_utils::pi / 3.0, 3.0, 1.0, 0.01, 0.5); + 9.0, 0.0, 0.0, autoware::universe_utils::pi / 3.0, 3.0, 1.0, 0.01, 0.5); { const auto resampled_path = resampleTrajectory(traj, 1.0); for (size_t i = 0; i < resampled_path.points.size() - 1; ++i) { @@ -3143,7 +3143,7 @@ TEST(resample_trajectory, resample_trajectory_by_same_interval) const auto p = resampled_path.points.back(); const auto ans_p = traj.points.back(); - const auto ans_quat = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); + const auto ans_quat = autoware::universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); EXPECT_NEAR(p.pose.position.x, ans_p.pose.position.x, epsilon); EXPECT_NEAR(p.pose.position.y, ans_p.pose.position.y, epsilon); EXPECT_NEAR(p.pose.position.z, ans_p.pose.position.z, epsilon); @@ -3246,7 +3246,7 @@ TEST(resample_trajectory, resample_trajectory_by_same_interval) } traj.points.at(0).longitudinal_velocity_mps = 5.0; - const double ds = 1.0 - autoware_motion_utils::overlap_threshold; + const double ds = 1.0 - autoware::motion_utils::overlap_threshold; const auto resampled_traj = resampleTrajectory(traj, ds); for (size_t i = 0; i < resampled_traj.points.size() - 1; ++i) { const auto p = resampled_traj.points.at(i); diff --git a/common/autoware_motion_utils/test/src/trajectory/benchmark_calcLateralOffset.cpp b/common/autoware_motion_utils/test/src/trajectory/benchmark_calcLateralOffset.cpp index 6cbc0b1cc3c7e..dc828e885af64 100644 --- a/common/autoware_motion_utils/test/src/trajectory/benchmark_calcLateralOffset.cpp +++ b/common/autoware_motion_utils/test/src/trajectory/benchmark_calcLateralOffset.cpp @@ -22,9 +22,9 @@ namespace { +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromRPY; using autoware_planning_msgs::msg::Trajectory; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromRPY; constexpr double epsilon = 1e-6; @@ -66,7 +66,7 @@ TEST(trajectory_benchmark, DISABLED_calcLateralOffset) std::default_random_engine e1(r()); std::uniform_real_distribution uniform_dist(0.0, 1000.0); - using autoware_motion_utils::calcLateralOffset; + using autoware::motion_utils::calcLateralOffset; const auto traj = generateTestTrajectory(1000, 1.0, 0.0, 0.0, 0.1); constexpr auto nb_iteration = 10000; diff --git a/common/autoware_motion_utils/test/src/trajectory/test_interpolation.cpp b/common/autoware_motion_utils/test/src/trajectory/test_interpolation.cpp index 8f6fb82f8066b..b4b60ff403048 100644 --- a/common/autoware_motion_utils/test/src/trajectory/test_interpolation.cpp +++ b/common/autoware_motion_utils/test/src/trajectory/test_interpolation.cpp @@ -27,11 +27,11 @@ namespace { +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromRPY; +using autoware::universe_utils::transformPoint; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromRPY; -using autoware_universe_utils::transformPoint; using tier4_planning_msgs::msg::PathPointWithLaneId; using tier4_planning_msgs::msg::PathWithLaneId; @@ -124,7 +124,7 @@ T generateTestPath( TEST(Interpolation, interpolate_path_for_trajectory) { - using autoware_motion_utils::calcInterpolatedPoint; + using autoware::motion_utils::calcInterpolatedPoint; { autoware_planning_msgs::msg::Trajectory traj; @@ -348,7 +348,7 @@ TEST(Interpolation, interpolate_path_for_trajectory) TEST(Interpolation, interpolate_path_for_path) { - using autoware_motion_utils::calcInterpolatedPoint; + using autoware::motion_utils::calcInterpolatedPoint; { tier4_planning_msgs::msg::PathWithLaneId path; @@ -540,7 +540,7 @@ TEST(Interpolation, interpolate_path_for_path) TEST(Interpolation, interpolate_points_with_length) { - using autoware_motion_utils::calcInterpolatedPose; + using autoware::motion_utils::calcInterpolatedPose; { autoware_planning_msgs::msg::Trajectory traj; diff --git a/common/autoware_motion_utils/test/src/trajectory/test_path_with_lane_id.cpp b/common/autoware_motion_utils/test/src/trajectory/test_path_with_lane_id.cpp index b9e3a59e39b29..62e4ac74cb639 100644 --- a/common/autoware_motion_utils/test/src/trajectory/test_path_with_lane_id.cpp +++ b/common/autoware_motion_utils/test/src/trajectory/test_path_with_lane_id.cpp @@ -22,7 +22,7 @@ namespace { -using autoware_universe_utils::createPoint; +using autoware::universe_utils::createPoint; using tier4_planning_msgs::msg::PathPointWithLaneId; using tier4_planning_msgs::msg::PathWithLaneId; @@ -31,7 +31,7 @@ geometry_msgs::msg::Pose createPose( { geometry_msgs::msg::Pose p; p.position = createPoint(x, y, z); - p.orientation = autoware_universe_utils::createQuaternionFromRPY(roll, pitch, yaw); + p.orientation = autoware::universe_utils::createQuaternionFromRPY(roll, pitch, yaw); return p; } @@ -54,7 +54,7 @@ PathWithLaneId generateTestPathWithLaneId(const size_t num_points, const double TEST(path_with_lane_id, getPathIndexRangeWithLaneId) { - using autoware_motion_utils::getPathIndexRangeWithLaneId; + using autoware::motion_utils::getPathIndexRangeWithLaneId; using tier4_planning_msgs::msg::PathWithLaneId; // Usual cases @@ -99,8 +99,8 @@ TEST(path_with_lane_id, getPathIndexRangeWithLaneId) TEST(path_with_lane_id, findNearestIndexFromLaneId) { - using autoware_motion_utils::findNearestIndexFromLaneId; - using autoware_motion_utils::findNearestSegmentIndexFromLaneId; + using autoware::motion_utils::findNearestIndexFromLaneId; + using autoware::motion_utils::findNearestSegmentIndexFromLaneId; const auto path = generateTestPathWithLaneId(10, 1.0); @@ -164,7 +164,7 @@ TEST(path_with_lane_id, findNearestIndexFromLaneId) // NOTE: This test is temporary for the current implementation. TEST(path_with_lane_id, convertToRearWheelCenter) { - using autoware_motion_utils::convertToRearWheelCenter; + using autoware::motion_utils::convertToRearWheelCenter; PathWithLaneId path; diff --git a/common/autoware_motion_utils/test/src/trajectory/test_trajectory.cpp b/common/autoware_motion_utils/test/src/trajectory/test_trajectory.cpp index f22a2e62efa7b..4ff9b2a33ca13 100644 --- a/common/autoware_motion_utils/test/src/trajectory/test_trajectory.cpp +++ b/common/autoware_motion_utils/test/src/trajectory/test_trajectory.cpp @@ -28,9 +28,9 @@ namespace { using autoware_planning_msgs::msg::Trajectory; using TrajectoryPointArray = std::vector; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromRPY; -using autoware_universe_utils::transformPoint; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromRPY; +using autoware::universe_utils::transformPoint; constexpr double epsilon = 1e-6; @@ -94,7 +94,7 @@ void updateTrajectoryVelocityAt(T & points, const size_t idx, const double vel) TEST(trajectory, validateNonEmpty) { - using autoware_motion_utils::validateNonEmpty; + using autoware::motion_utils::validateNonEmpty; // Empty EXPECT_THROW(validateNonEmpty(Trajectory{}.points), std::invalid_argument); @@ -106,7 +106,7 @@ TEST(trajectory, validateNonEmpty) TEST(trajectory, validateNonSharpAngle_DefaultThreshold) { - using autoware_motion_utils::validateNonSharpAngle; + using autoware::motion_utils::validateNonSharpAngle; using autoware_planning_msgs::msg::TrajectoryPoint; TrajectoryPoint p1; @@ -135,9 +135,9 @@ TEST(trajectory, validateNonSharpAngle_DefaultThreshold) TEST(trajectory, validateNonSharpAngle_SetThreshold) { - using autoware_motion_utils::validateNonSharpAngle; + using autoware::motion_utils::validateNonSharpAngle; + using autoware::universe_utils::pi; using autoware_planning_msgs::msg::TrajectoryPoint; - using autoware_universe_utils::pi; TrajectoryPoint p1; p1.pose = createPose(0.0, 0.0, 0.0, 0.0, 0.0, 0.0); @@ -165,7 +165,7 @@ TEST(trajectory, validateNonSharpAngle_SetThreshold) TEST(trajectory, searchZeroVelocityIndex) { - using autoware_motion_utils::searchZeroVelocityIndex; + using autoware::motion_utils::searchZeroVelocityIndex; // Empty EXPECT_FALSE(searchZeroVelocityIndex(Trajectory{}.points)); @@ -244,7 +244,7 @@ TEST(trajectory, searchZeroVelocityIndex) TEST(trajectory, searchZeroVelocityIndex_from_pose) { - using autoware_motion_utils::searchZeroVelocityIndex; + using autoware::motion_utils::searchZeroVelocityIndex; // No zero velocity point { @@ -307,7 +307,7 @@ TEST(trajectory, searchZeroVelocityIndex_from_pose) TEST(trajectory, findNearestIndex_Pos_StraightTrajectory) { - using autoware_motion_utils::findNearestIndex; + using autoware::motion_utils::findNearestIndex; const auto traj = generateTestTrajectory(10, 1.0); @@ -338,7 +338,7 @@ TEST(trajectory, findNearestIndex_Pos_StraightTrajectory) TEST(trajectory, findNearestIndex_Pos_CurvedTrajectory) { - using autoware_motion_utils::findNearestIndex; + using autoware::motion_utils::findNearestIndex; const auto traj = generateTestTrajectory(10, 1.0, 0.0, 0.0, 0.1); @@ -348,7 +348,7 @@ TEST(trajectory, findNearestIndex_Pos_CurvedTrajectory) TEST(trajectory, findNearestIndex_Pose_NoThreshold) { - using autoware_motion_utils::findNearestIndex; + using autoware::motion_utils::findNearestIndex; const auto traj = generateTestTrajectory(10, 1.0); @@ -374,7 +374,7 @@ TEST(trajectory, findNearestIndex_Pose_NoThreshold) TEST(trajectory, findNearestIndex_Pose_DistThreshold) { - using autoware_motion_utils::findNearestIndex; + using autoware::motion_utils::findNearestIndex; const auto traj = generateTestTrajectory(10, 1.0); @@ -390,7 +390,7 @@ TEST(trajectory, findNearestIndex_Pose_DistThreshold) TEST(trajectory, findNearestIndex_Pose_YawThreshold) { - using autoware_motion_utils::findNearestIndex; + using autoware::motion_utils::findNearestIndex; const auto traj = generateTestTrajectory(10, 1.0); const auto max_d = std::numeric_limits::max(); @@ -409,7 +409,7 @@ TEST(trajectory, findNearestIndex_Pose_YawThreshold) TEST(trajectory, findNearestIndex_Pose_DistAndYawThreshold) { - using autoware_motion_utils::findNearestIndex; + using autoware::motion_utils::findNearestIndex; const auto traj = generateTestTrajectory(10, 1.0); @@ -423,7 +423,7 @@ TEST(trajectory, findNearestIndex_Pose_DistAndYawThreshold) TEST(trajectory, findNearestSegmentIndex) { - using autoware_motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::findNearestSegmentIndex; const auto traj = generateTestTrajectory(10, 1.0); @@ -463,7 +463,7 @@ TEST(trajectory, findNearestSegmentIndex) TEST(trajectory, calcLongitudinalOffsetToSegment_StraightTrajectory) { - using autoware_motion_utils::calcLongitudinalOffsetToSegment; + using autoware::motion_utils::calcLongitudinalOffsetToSegment; const auto traj = generateTestTrajectory(10, 1.0); const bool throw_exception = true; @@ -513,7 +513,7 @@ TEST(trajectory, calcLongitudinalOffsetToSegment_StraightTrajectory) TEST(trajectory, calcLongitudinalOffsetToSegment_CurveTrajectory) { - using autoware_motion_utils::calcLongitudinalOffsetToSegment; + using autoware::motion_utils::calcLongitudinalOffsetToSegment; const auto traj = generateTestTrajectory(10, 1.0, 0.0, 0.0, 0.1); @@ -525,7 +525,7 @@ TEST(trajectory, calcLongitudinalOffsetToSegment_CurveTrajectory) TEST(trajectory, calcLateralOffset) { - using autoware_motion_utils::calcLateralOffset; + using autoware::motion_utils::calcLateralOffset; const auto traj = generateTestTrajectory(10, 1.0); const bool throw_exception = true; @@ -566,7 +566,7 @@ TEST(trajectory, calcLateralOffset) TEST(trajectory, calcLateralOffset_without_segment_idx) { - using autoware_motion_utils::calcLateralOffset; + using autoware::motion_utils::calcLateralOffset; const auto traj = generateTestTrajectory(10, 1.0); const bool throw_exception = true; @@ -627,7 +627,7 @@ TEST(trajectory, calcLateralOffset_without_segment_idx) TEST(trajectory, calcLateralOffset_CurveTrajectory) { - using autoware_motion_utils::calcLateralOffset; + using autoware::motion_utils::calcLateralOffset; const auto traj = generateTestTrajectory(10, 1.0, 0.0, 0.0, 0.1); @@ -638,7 +638,7 @@ TEST(trajectory, calcLateralOffset_CurveTrajectory) TEST(trajectory, calcSignedArcLengthFromIndexToIndex) { - using autoware_motion_utils::calcSignedArcLength; + using autoware::motion_utils::calcSignedArcLength; const auto traj = generateTestTrajectory(10, 1.0); @@ -661,7 +661,7 @@ TEST(trajectory, calcSignedArcLengthFromIndexToIndex) TEST(trajectory, calcSignedArcLengthFromPointToIndex) { - using autoware_motion_utils::calcSignedArcLength; + using autoware::motion_utils::calcSignedArcLength; const auto traj = generateTestTrajectory(10, 1.0); @@ -690,7 +690,7 @@ TEST(trajectory, calcSignedArcLengthFromPointToIndex) TEST(trajectory, calcSignedArcLengthFromIndexToPoint) { - using autoware_motion_utils::calcSignedArcLength; + using autoware::motion_utils::calcSignedArcLength; const auto traj = generateTestTrajectory(10, 1.0); @@ -719,7 +719,7 @@ TEST(trajectory, calcSignedArcLengthFromIndexToPoint) TEST(trajectory, calcSignedArcLengthFromPointToPoint) { - using autoware_motion_utils::calcSignedArcLength; + using autoware::motion_utils::calcSignedArcLength; const auto traj = generateTestTrajectory(10, 1.0); @@ -782,7 +782,7 @@ TEST(trajectory, calcSignedArcLengthFromPointToPoint) TEST(trajectory, calcArcLength) { - using autoware_motion_utils::calcArcLength; + using autoware::motion_utils::calcArcLength; const auto traj = generateTestTrajectory(10, 1.0); @@ -795,7 +795,7 @@ TEST(trajectory, calcArcLength) TEST(trajectory, convertToTrajectory) { - using autoware_motion_utils::convertToTrajectory; + using autoware::motion_utils::convertToTrajectory; // Size check { @@ -807,7 +807,7 @@ TEST(trajectory, convertToTrajectory) TEST(trajectory, convertToTrajectoryPointArray) { - using autoware_motion_utils::convertToTrajectoryPointArray; + using autoware::motion_utils::convertToTrajectoryPointArray; const auto traj_input = generateTestTrajectory(100, 1.0); const auto traj = convertToTrajectoryPointArray(traj_input); @@ -823,7 +823,7 @@ TEST(trajectory, convertToTrajectoryPointArray) TEST(trajectory, calcDistanceToForwardStopPointFromIndex) { - using autoware_motion_utils::calcDistanceToForwardStopPoint; + using autoware::motion_utils::calcDistanceToForwardStopPoint; auto traj_input = generateTestTrajectory(100, 1.0, 3.0); traj_input.points.at(50).longitudinal_velocity_mps = 0.0; @@ -881,7 +881,7 @@ TEST(trajectory, calcDistanceToForwardStopPointFromIndex) TEST(trajectory, calcDistanceToForwardStopPointFromPose) { - using autoware_motion_utils::calcDistanceToForwardStopPoint; + using autoware::motion_utils::calcDistanceToForwardStopPoint; auto traj_input = generateTestTrajectory(100, 1.0, 3.0); traj_input.points.at(50).longitudinal_velocity_mps = 0.0; @@ -965,7 +965,7 @@ TEST(trajectory, calcDistanceToForwardStopPointFromPose) TEST(trajectory, calcDistanceToForwardStopPoint_DistThreshold) { - using autoware_motion_utils::calcDistanceToForwardStopPoint; + using autoware::motion_utils::calcDistanceToForwardStopPoint; auto traj_input = generateTestTrajectory(100, 1.0, 3.0); traj_input.points.at(50).longitudinal_velocity_mps = 0.0; @@ -1009,8 +1009,8 @@ TEST(trajectory, calcDistanceToForwardStopPoint_DistThreshold) TEST(trajectory, calcDistanceToForwardStopPoint_YawThreshold) { - using autoware_motion_utils::calcDistanceToForwardStopPoint; - using autoware_universe_utils::deg2rad; + using autoware::motion_utils::calcDistanceToForwardStopPoint; + using autoware::universe_utils::deg2rad; const auto max_d = std::numeric_limits::max(); auto traj_input = generateTestTrajectory(100, 1.0, 3.0); @@ -1061,10 +1061,10 @@ TEST(trajectory, calcDistanceToForwardStopPoint_YawThreshold) TEST(trajectory, calcLongitudinalOffsetPointFromIndex) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPoint; - using autoware_motion_utils::calcSignedArcLength; - using autoware_universe_utils::getPoint; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPoint; + using autoware::motion_utils::calcSignedArcLength; + using autoware::universe_utils::getPoint; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -1137,11 +1137,11 @@ TEST(trajectory, calcLongitudinalOffsetPointFromIndex) TEST(trajectory, calcLongitudinalOffsetPointFromPoint) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPoint; - using autoware_motion_utils::calcSignedArcLength; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::getPoint; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPoint; + using autoware::motion_utils::calcSignedArcLength; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::getPoint; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -1215,10 +1215,10 @@ TEST(trajectory, calcLongitudinalOffsetPointFromPoint) TEST(trajectory, calcLongitudinalOffsetPoseFromIndex) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPose; - using autoware_motion_utils::calcSignedArcLength; - using autoware_universe_utils::getPoint; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPose; + using autoware::motion_utils::calcSignedArcLength; + using autoware::universe_utils::getPoint; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -1299,10 +1299,10 @@ TEST(trajectory, calcLongitudinalOffsetPoseFromIndex) TEST(trajectory, calcLongitudinalOffsetPoseFromIndex_quatInterpolation) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPose; + using autoware::universe_utils::deg2rad; using autoware_planning_msgs::msg::TrajectoryPoint; - using autoware_universe_utils::deg2rad; Trajectory traj{}; @@ -1385,10 +1385,10 @@ TEST(trajectory, calcLongitudinalOffsetPoseFromIndex_quatInterpolation) TEST(trajectory, calcLongitudinalOffsetPoseFromIndex_quatSphericalInterpolation) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPose; + using autoware::universe_utils::deg2rad; using autoware_planning_msgs::msg::TrajectoryPoint; - using autoware_universe_utils::deg2rad; Trajectory traj{}; @@ -1477,11 +1477,11 @@ TEST(trajectory, calcLongitudinalOffsetPoseFromIndex_quatSphericalInterpolation) TEST(trajectory, calcLongitudinalOffsetPoseFromPoint) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPose; - using autoware_motion_utils::calcSignedArcLength; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::getPoint; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPose; + using autoware::motion_utils::calcSignedArcLength; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::getPoint; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -1563,12 +1563,12 @@ TEST(trajectory, calcLongitudinalOffsetPoseFromPoint) TEST(trajectory, calcLongitudinalOffsetPoseFromPoint_quatInterpolation) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPose; - using autoware_motion_utils::calcLongitudinalOffsetToSegment; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPose; + using autoware::motion_utils::calcLongitudinalOffsetToSegment; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; using autoware_planning_msgs::msg::TrajectoryPoint; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; Trajectory traj{}; @@ -1637,12 +1637,12 @@ TEST(trajectory, calcLongitudinalOffsetPoseFromPoint_quatInterpolation) TEST(trajectory, calcLongitudinalOffsetPoseFromPoint_quatSphericalInterpolation) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::calcLongitudinalOffsetPose; - using autoware_motion_utils::calcLongitudinalOffsetToSegment; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::calcLongitudinalOffsetPose; + using autoware::motion_utils::calcLongitudinalOffsetToSegment; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; using autoware_planning_msgs::msg::TrajectoryPoint; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; Trajectory traj{}; @@ -1715,13 +1715,13 @@ TEST(trajectory, calcLongitudinalOffsetPoseFromPoint_quatSphericalInterpolation) TEST(trajectory, insertTargetPoint) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -1928,19 +1928,19 @@ TEST(trajectory, insertTargetPoint) TEST(trajectory, insertTargetPoint_Reverse) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::createQuaternionFromYaw; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::createQuaternionFromYaw; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; constexpr double overlap_threshold = 1e-4; auto traj = generateTestTrajectory(10, 1.0); for (size_t i = 0; i < traj.points.size(); ++i) { - traj.points.at(i).pose.orientation = createQuaternionFromYaw(autoware_universe_utils::pi); + traj.points.at(i).pose.orientation = createQuaternionFromYaw(autoware::universe_utils::pi); } const auto total_length = calcArcLength(traj.points); @@ -1986,13 +1986,13 @@ TEST(trajectory, insertTargetPoint_Reverse) TEST(trajectory, insertTargetPoint_OverlapThreshold) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; constexpr double overlap_threshold = 1e-4; const auto traj = generateTestTrajectory(10, 1.0); @@ -2079,13 +2079,13 @@ TEST(trajectory, insertTargetPoint_OverlapThreshold) TEST(trajectory, insertTargetPoint_Length) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -2317,13 +2317,13 @@ TEST(trajectory, insertTargetPoint_Length) TEST(trajectory, insertTargetPoint_Length_Without_Target_Point) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -2503,13 +2503,13 @@ TEST(trajectory, insertTargetPoint_Length_Without_Target_Point) TEST(trajectory, insertTargetPoint_Length_Without_Target_Point_Non_Zero_Start_Idx) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0); @@ -2733,13 +2733,13 @@ TEST(trajectory, insertTargetPoint_Length_Without_Target_Point_Non_Zero_Start_Id TEST(trajectory, insertTargetPoint_Negative_Length_Without_Target_Point_Non_Zero_Start_Idx) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0); @@ -2920,13 +2920,13 @@ TEST(trajectory, insertTargetPoint_Negative_Length_Without_Target_Point_Non_Zero TEST(trajectory, insertTargetPoint_Length_from_a_pose) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertTargetPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertTargetPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0); const auto total_length = calcArcLength(traj.points); @@ -3272,13 +3272,13 @@ TEST(trajectory, insertTargetPoint_Length_from_a_pose) TEST(trajectory, insertStopPoint_from_a_source_index) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertStopPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertStopPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0, 10.0); @@ -3527,13 +3527,13 @@ TEST(trajectory, insertStopPoint_from_a_source_index) TEST(trajectory, insertStopPoint_from_front_point) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertStopPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertStopPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0, 10.0); @@ -3724,13 +3724,13 @@ TEST(trajectory, insertStopPoint_from_front_point) TEST(trajectory, insertStopPoint_from_a_pose) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertStopPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertStopPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0, 10.0); const auto total_length = calcArcLength(traj.points); @@ -4110,13 +4110,13 @@ TEST(trajectory, insertStopPoint_from_a_pose) TEST(trajectory, insertStopPoint_with_pose_and_segment_index) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertStopPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getPose; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertStopPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getPose; const auto traj = generateTestTrajectory(10, 1.0, 3.0); const auto total_length = calcArcLength(traj.points); @@ -4354,12 +4354,12 @@ TEST(trajectory, insertStopPoint_with_pose_and_segment_index) TEST(trajectory, insertDecelPoint_from_a_point) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::findNearestSegmentIndex; - using autoware_motion_utils::insertDecelPoint; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::getLongitudinalVelocity; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::findNearestSegmentIndex; + using autoware::motion_utils::insertDecelPoint; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::getLongitudinalVelocity; const auto traj = generateTestTrajectory(10, 1.0, 10.0); const auto total_length = calcArcLength(traj.points); @@ -4444,9 +4444,9 @@ TEST(trajectory, insertDecelPoint_from_a_point) TEST(trajectory, findFirstNearestIndexWithSoftConstraints) { - using autoware_motion_utils::findFirstNearestIndexWithSoftConstraints; - using autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; - using autoware_universe_utils::pi; + using autoware::motion_utils::findFirstNearestIndexWithSoftConstraints; + using autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; + using autoware::universe_utils::pi; const auto traj = generateTestTrajectory(10, 1.0); @@ -4970,7 +4970,7 @@ TEST(trajectory, findFirstNearestIndexWithSoftConstraints) TEST(trajectory, calcSignedArcLengthFromPointAndSegmentIndexToPointAndSegmentIndex) { - using autoware_motion_utils::calcSignedArcLength; + using autoware::motion_utils::calcSignedArcLength; const auto traj = generateTestTrajectory(10, 1.0); @@ -5040,7 +5040,7 @@ TEST(trajectory, calcSignedArcLengthFromPointAndSegmentIndexToPointAndSegmentInd TEST(trajectory, calcSignedArcLengthFromPointAndSegmentIndexToPointIndex) { - using autoware_motion_utils::calcSignedArcLength; + using autoware::motion_utils::calcSignedArcLength; const auto traj = generateTestTrajectory(10, 1.0); @@ -5119,7 +5119,7 @@ TEST(trajectory, calcSignedArcLengthFromPointAndSegmentIndexToPointIndex) TEST(trajectory, removeOverlapPoints) { - using autoware_motion_utils::removeOverlapPoints; + using autoware::motion_utils::removeOverlapPoints; const auto traj = generateTestTrajectory(10, 1.0, 1.0); const auto removed_traj = removeOverlapPoints(traj.points, 0); @@ -5246,101 +5246,101 @@ TEST(trajectory, removeOverlapPoints) TEST(trajectory, cropForwardPoints) { - using autoware_motion_utils::cropForwardPoints; + using autoware::motion_utils::cropForwardPoints; const auto traj = generateTestTrajectory(10, 1.0, 1.0); { // Normal case const auto cropped_traj_points = - cropForwardPoints(traj.points, autoware_universe_utils::createPoint(1.5, 1.5, 0.0), 1, 4.8); + cropForwardPoints(traj.points, autoware::universe_utils::createPoint(1.5, 1.5, 0.0), 1, 4.8); EXPECT_EQ(cropped_traj_points.size(), static_cast(7)); } { // Forward length is longer than points arc length. const auto cropped_traj_points = - cropForwardPoints(traj.points, autoware_universe_utils::createPoint(1.5, 1.5, 0.0), 1, 10.0); + cropForwardPoints(traj.points, autoware::universe_utils::createPoint(1.5, 1.5, 0.0), 1, 10.0); EXPECT_EQ(cropped_traj_points.size(), static_cast(10)); } { // Point is on the previous segment const auto cropped_traj_points = - cropForwardPoints(traj.points, autoware_universe_utils::createPoint(1.0, 1.0, 0.0), 0, 2.5); + cropForwardPoints(traj.points, autoware::universe_utils::createPoint(1.0, 1.0, 0.0), 0, 2.5); EXPECT_EQ(cropped_traj_points.size(), static_cast(4)); } { // Point is on the next segment const auto cropped_traj_points = - cropForwardPoints(traj.points, autoware_universe_utils::createPoint(1.0, 1.0, 0.0), 1, 2.5); + cropForwardPoints(traj.points, autoware::universe_utils::createPoint(1.0, 1.0, 0.0), 1, 2.5); EXPECT_EQ(cropped_traj_points.size(), static_cast(4)); } } TEST(trajectory, cropBackwardPoints) { - using autoware_motion_utils::cropBackwardPoints; + using autoware::motion_utils::cropBackwardPoints; const auto traj = generateTestTrajectory(10, 1.0, 1.0); { // Normal case const auto cropped_traj_points = - cropBackwardPoints(traj.points, autoware_universe_utils::createPoint(8.5, 8.5, 0.0), 8, 4.8); + cropBackwardPoints(traj.points, autoware::universe_utils::createPoint(8.5, 8.5, 0.0), 8, 4.8); EXPECT_EQ(cropped_traj_points.size(), static_cast(6)); } { // Backward length is longer than points arc length. - const auto cropped_traj_points = - cropBackwardPoints(traj.points, autoware_universe_utils::createPoint(8.5, 8.5, 0.0), 8, 10.0); + const auto cropped_traj_points = cropBackwardPoints( + traj.points, autoware::universe_utils::createPoint(8.5, 8.5, 0.0), 8, 10.0); EXPECT_EQ(cropped_traj_points.size(), static_cast(10)); } { // Point is on the previous segment const auto cropped_traj_points = - cropBackwardPoints(traj.points, autoware_universe_utils::createPoint(8.0, 8.0, 0.0), 7, 2.5); + cropBackwardPoints(traj.points, autoware::universe_utils::createPoint(8.0, 8.0, 0.0), 7, 2.5); EXPECT_EQ(cropped_traj_points.size(), static_cast(4)); } { // Point is on the next segment const auto cropped_traj_points = - cropBackwardPoints(traj.points, autoware_universe_utils::createPoint(8.0, 8.0, 0.0), 8, 2.5); + cropBackwardPoints(traj.points, autoware::universe_utils::createPoint(8.0, 8.0, 0.0), 8, 2.5); EXPECT_EQ(cropped_traj_points.size(), static_cast(4)); } } TEST(trajectory, cropPoints) { - using autoware_motion_utils::cropPoints; + using autoware::motion_utils::cropPoints; const auto traj = generateTestTrajectory(10, 1.0, 1.0); { // Normal case const auto cropped_traj_points = - cropPoints(traj.points, autoware_universe_utils::createPoint(3.5, 3.5, 0.0), 3, 2.3, 1.2); + cropPoints(traj.points, autoware::universe_utils::createPoint(3.5, 3.5, 0.0), 3, 2.3, 1.2); EXPECT_EQ(cropped_traj_points.size(), static_cast(3)); } { // Length is longer than points arc length. const auto cropped_traj_points = - cropPoints(traj.points, autoware_universe_utils::createPoint(3.5, 3.5, 0.0), 3, 10.0, 10.0); + cropPoints(traj.points, autoware::universe_utils::createPoint(3.5, 3.5, 0.0), 3, 10.0, 10.0); EXPECT_EQ(cropped_traj_points.size(), static_cast(10)); } { // Point is on the previous segment const auto cropped_traj_points = - cropPoints(traj.points, autoware_universe_utils::createPoint(3.0, 3.0, 0.0), 2, 2.2, 1.9); + cropPoints(traj.points, autoware::universe_utils::createPoint(3.0, 3.0, 0.0), 2, 2.2, 1.9); EXPECT_EQ(cropped_traj_points.size(), static_cast(4)); } { // Point is on the next segment const auto cropped_traj_points = - cropPoints(traj.points, autoware_universe_utils::createPoint(3.0, 3.0, 0.0), 3, 2.2, 1.9); + cropPoints(traj.points, autoware::universe_utils::createPoint(3.0, 3.0, 0.0), 3, 2.2, 1.9); EXPECT_EQ(cropped_traj_points.size(), static_cast(4)); } } TEST(Trajectory, removeFirstInvalidOrientationPoints) { - using autoware_motion_utils::insertOrientation; - using autoware_motion_utils::removeFirstInvalidOrientationPoints; + using autoware::motion_utils::insertOrientation; + using autoware::motion_utils::removeFirstInvalidOrientationPoints; const double max_yaw_diff = M_PI_2; @@ -5357,7 +5357,7 @@ TEST(Trajectory, removeFirstInvalidOrientationPoints) EXPECT_EQ(traj.points.at(i), modified_traj.points.at(i)); const double yaw1 = tf2::getYaw(modified_traj.points.at(i).pose.orientation); const double yaw2 = tf2::getYaw(modified_traj.points.at(i + 1).pose.orientation); - const double yaw_diff = std::abs(autoware_universe_utils::normalizeRadian(yaw1 - yaw2)); + const double yaw_diff = std::abs(autoware::universe_utils::normalizeRadian(yaw1 - yaw2)); EXPECT_LE(yaw_diff, max_yaw_diff); } }; @@ -5392,7 +5392,7 @@ TEST(Trajectory, removeFirstInvalidOrientationPoints) TEST(trajectory, calcYawDeviation) { - using autoware_motion_utils::calcYawDeviation; + using autoware::motion_utils::calcYawDeviation; using autoware_planning_msgs::msg::TrajectoryPoint; constexpr double tolerance = 1e-3; @@ -5419,9 +5419,9 @@ TEST(trajectory, calcYawDeviation) TEST(trajectory, isTargetPointFront) { - using autoware_motion_utils::isTargetPointFront; + using autoware::motion_utils::isTargetPointFront; + using autoware::universe_utils::createPoint; using autoware_planning_msgs::msg::TrajectoryPoint; - using autoware_universe_utils::createPoint; // Generate test trajectory const auto trajectory = generateTestTrajectory(10, 1.0); diff --git a/common/autoware_motion_utils/test/src/vehicle/test_vehicle_state_checker.cpp b/common/autoware_motion_utils/test/src/vehicle/test_vehicle_state_checker.cpp index d18aa8d283320..b2d2f3a2e8003 100644 --- a/common/autoware_motion_utils/test/src/vehicle/test_vehicle_state_checker.cpp +++ b/common/autoware_motion_utils/test/src/vehicle/test_vehicle_state_checker.cpp @@ -32,11 +32,11 @@ constexpr double STOP_DURATION_THRESHOLD_600_MS = 0.6; constexpr double STOP_DURATION_THRESHOLD_800_MS = 0.8; constexpr double STOP_DURATION_THRESHOLD_1000_MS = 1.0; -using autoware_motion_utils::VehicleArrivalChecker; -using autoware_motion_utils::VehicleStopChecker; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternion; -using autoware_universe_utils::createTranslation; +using autoware::motion_utils::VehicleArrivalChecker; +using autoware::motion_utils::VehicleStopChecker; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternion; +using autoware::universe_utils::createTranslation; using nav_msgs::msg::Odometry; class CheckerNode : public rclcpp::Node diff --git a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/assets/images/wheel.png b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/assets/images/wheel.png index 07b1e33132e43..04ea298a46829 100644 Binary files a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/assets/images/wheel.png and b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/assets/images/wheel.png differ diff --git a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/signal_display.hpp b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/signal_display.hpp index 0831ded468c99..5f5c9cee2da43 100644 --- a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/signal_display.hpp +++ b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/signal_display.hpp @@ -76,6 +76,7 @@ private Q_SLOTS: rviz_common::properties::IntProperty * property_left_; rviz_common::properties::IntProperty * property_top_; rviz_common::properties::ColorProperty * property_signal_color_; + rviz_common::properties::FloatProperty * property_handle_angle_scale_; std::unique_ptr steering_topic_property_; std::unique_ptr gear_topic_property_; std::unique_ptr speed_topic_property_; diff --git a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/steering_wheel_display.hpp b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/steering_wheel_display.hpp index dada3cddab911..0e42368f2e017 100644 --- a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/steering_wheel_display.hpp +++ b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/include/steering_wheel_display.hpp @@ -36,7 +36,8 @@ class SteeringWheelDisplay { public: SteeringWheelDisplay(); - void drawSteeringWheel(QPainter & painter, const QRectF & backgroundRect); + void drawSteeringWheel( + QPainter & painter, const QRectF & backgroundRect, float handle_angle_scale_); void updateSteeringData(const autoware_vehicle_msgs::msg::SteeringReport::ConstSharedPtr & msg); private: @@ -46,6 +47,7 @@ class SteeringWheelDisplay QImage wheelImage; QImage scaledWheelImage; QImage coloredImage(const QImage & source, const QColor & color); + autoware_vehicle_msgs::msg::SteeringReport::ConstSharedPtr last_msg_ptr_; }; } // namespace autoware_overlay_rviz_plugin diff --git a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/signal_display.cpp b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/signal_display.cpp index ccfdaa69f5d2a..1fd33a95fb34d 100644 --- a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/signal_display.cpp +++ b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/signal_display.cpp @@ -49,6 +49,9 @@ SignalDisplay::SignalDisplay() property_signal_color_ = new rviz_common::properties::ColorProperty( "Signal Color", QColor(QString("#00E678")), "Color of the signal arrows", this, SLOT(updateOverlayColor())); + property_handle_angle_scale_ = new rviz_common::properties::FloatProperty( + "Handle Angle Scale", 17.0, "Scale of the steering wheel handle angle", this, + SLOT(updateOverlaySize())); // Initialize the component displays steering_wheel_display_ = std::make_unique(); @@ -285,7 +288,8 @@ void SignalDisplay::drawWidget(QImage & hud) } if (steering_wheel_display_) { - steering_wheel_display_->drawSteeringWheel(painter, backgroundRect); + steering_wheel_display_->drawSteeringWheel( + painter, backgroundRect, property_handle_angle_scale_->getFloat()); } if (speed_display_) { diff --git a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/steering_wheel_display.cpp b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/steering_wheel_display.cpp index d2390b16e5373..28bd2b5c2a52e 100644 --- a/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/steering_wheel_display.cpp +++ b/common/autoware_overlay_rviz_plugin/autoware_overlay_rviz_plugin/src/steering_wheel_display.cpp @@ -59,19 +59,17 @@ void SteeringWheelDisplay::updateSteeringData( const autoware_vehicle_msgs::msg::SteeringReport::ConstSharedPtr & msg) { try { - // Assuming msg->steering_angle is the field you're interested in - float steeringAngle = msg->steering_tire_angle; - // we received it as a radian value, but we want to display it in degrees - steering_angle_ = - (steeringAngle * -180 / M_PI) * - 17; // 17 is the ratio between the steering wheel and the steering tire angle i assume + last_msg_ptr_ = msg; + + steering_angle_ = msg->steering_tire_angle; } catch (const std::exception & e) { // Log the error std::cerr << "Error in processMessage: " << e.what() << std::endl; } } -void SteeringWheelDisplay::drawSteeringWheel(QPainter & painter, const QRectF & backgroundRect) +void SteeringWheelDisplay::drawSteeringWheel( + QPainter & painter, const QRectF & backgroundRect, float handle_angle_scale_) { // Enable Antialiasing for smoother drawing painter.setRenderHint(QPainter::Antialiasing, true); @@ -80,7 +78,7 @@ void SteeringWheelDisplay::drawSteeringWheel(QPainter & painter, const QRectF & QImage wheel = coloredImage(scaledWheelImage, gray); // Rotate the wheel - float steeringAngle = steering_angle_; // No need to round here + float steeringAngle = std::round(handle_angle_scale_ * (steering_angle_ / M_PI) * -180.0); // Calculate the position int wheelCenterX = backgroundRect.left() + wheel.width() + 54 + 54; int wheelCenterY = backgroundRect.height() / 2; @@ -99,16 +97,40 @@ void SteeringWheelDisplay::drawSteeringWheel(QPainter & painter, const QRectF & // Draw the rotated image painter.drawImage(drawPoint.x(), drawPoint.y(), rotatedWheel); - QString steeringAngleStringAfterModulo = QString::number(fmod(steeringAngle, 360), 'f', 0); + std::ostringstream steering_angle_ss; + if (last_msg_ptr_) { + steering_angle_ss << std::fixed << std::setprecision(1) << steering_angle_ * 180.0 / M_PI + << "°"; + } else { + steering_angle_ss << "N/A"; + } + + QString steeringAngleString = QString::fromStdString(steering_angle_ss.str()); + // if the string doesn't have a negative sign, add a space to the front of the string + // to align the text in both cases (negative and positive) + if (steeringAngleString[0] != '-') { + steeringAngleString = " " + steeringAngleString; + } // Draw the steering angle text - QFont steeringFont("Quicksand", 9, QFont::Bold); + QFont steeringFont("Quicksand", 8, QFont::Bold); painter.setFont(steeringFont); painter.setPen(QColor(0, 0, 0, 255)); - QRect steeringRect( - wheelCenterX - wheelImage.width() / 2, wheelCenterY - wheelImage.height() / 2, - wheelImage.width(), wheelImage.height()); - painter.drawText(steeringRect, Qt::AlignCenter, steeringAngleStringAfterModulo + "°"); + // QRect steeringRect( + // wheelCenterX - wheelImage.width() / 2 + 1, wheelCenterY - wheelImage.height() / 2, + // wheelImage.width(), wheelImage.height()); + // painter.drawText(steeringRect, Qt::AlignCenter, steeringAngleString); + + // Measure the text + QFontMetrics fontMetrics(steeringFont); + QRect textRect = fontMetrics.boundingRect(steeringAngleString); + + // Center the text + int textX = wheelCenterX - textRect.width() / 2; + int textY = wheelCenterY - textRect.height() / 2; + + QRect steeringRect(textX, textY, textRect.width(), textRect.height()); + painter.drawText(steeringRect, Qt::AlignCenter, steeringAngleString); } QImage SteeringWheelDisplay::coloredImage(const QImage & source, const QColor & color) diff --git a/common/autoware_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp b/common/autoware_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp index 1d06454582a2f..910bd6ed815e6 100644 --- a/common/autoware_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp +++ b/common/autoware_perception_rviz_plugin/src/object_detection/object_polygon_detail.cpp @@ -526,10 +526,7 @@ visualization_msgs::msg::Marker::SharedPtr get_shape_marker_ptr( marker_ptr->scale = shape_msg.dimensions; marker_ptr->color.a = 0.75f; } - } else if (shape_msg.type == Shape::POLYGON) { - marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; - calc_polygon_line_list(shape_msg, marker_ptr->points); - } else { + } else { // including shape_msg.type == Shape::POLYGON marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; calc_polygon_line_list(shape_msg, marker_ptr->points); } @@ -562,10 +559,7 @@ visualization_msgs::msg::Marker::SharedPtr get_2d_shape_marker_ptr( } else if (shape_msg.type == Shape::CYLINDER) { marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; calc_2d_cylinder_bottom_line_list(shape_msg, marker_ptr->points); - } else if (shape_msg.type == Shape::POLYGON) { - marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; - calc_2d_polygon_bottom_line_list(shape_msg, marker_ptr->points); - } else { + } else { // including shape_msg.type == Shape::POLYGON marker_ptr->type = visualization_msgs::msg::Marker::LINE_LIST; calc_2d_polygon_bottom_line_list(shape_msg, marker_ptr->points); } diff --git a/common/autoware_point_types/package.xml b/common/autoware_point_types/package.xml index e05b604e90d13..ef19431d86514 100644 --- a/common/autoware_point_types/package.xml +++ b/common/autoware_point_types/package.xml @@ -4,7 +4,8 @@ autoware_point_types 0.1.0 The point types definition to use point_cloud_msg_wrapper - Taichi Higashide + David Wong + Max Schmeller Apache License 2.0 ament_cmake_core diff --git a/common/autoware_test_utils/CMakeLists.txt b/common/autoware_test_utils/CMakeLists.txt index 91adf935445b4..6a12539d06cbf 100644 --- a/common/autoware_test_utils/CMakeLists.txt +++ b/common/autoware_test_utils/CMakeLists.txt @@ -15,11 +15,10 @@ target_link_libraries(mock_data_parser ) if(BUILD_TESTING) - ament_add_ros_isolated_gtest(test_mock_data_parser - test/test_mock_data_parser.cpp) - - target_link_libraries(test_mock_data_parser - mock_data_parser) + ament_auto_add_gtest(test_autoware_test_utils + test/test_mock_data_parser.cpp + test/test_autoware_test_manager.cpp + ) endif() ament_auto_package(INSTALL_TO_SHARE diff --git a/common/autoware_test_utils/include/autoware_test_utils/autoware_test_utils.hpp b/common/autoware_test_utils/include/autoware_test_utils/autoware_test_utils.hpp index b4b5834f71fa1..2db4e6a9e9162 100644 --- a/common/autoware_test_utils/include/autoware_test_utils/autoware_test_utils.hpp +++ b/common/autoware_test_utils/include/autoware_test_utils/autoware_test_utils.hpp @@ -16,11 +16,11 @@ #define AUTOWARE_TEST_UTILS__AUTOWARE_TEST_UTILS_HPP_ #include +#include +#include +#include +#include #include -#include -#include -#include -#include #include #include @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -48,6 +49,7 @@ #include #include #include +#include #include namespace autoware::test_utils @@ -62,8 +64,8 @@ using autoware_planning_msgs::msg::Trajectory; using tier4_planning_msgs::msg::PathPointWithLaneId; using tier4_planning_msgs::msg::PathWithLaneId; using RouteSections = std::vector; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromRPY; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromRPY; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using geometry_msgs::msg::PoseStamped; @@ -512,6 +514,81 @@ void publishToTargetNode( autoware::test_utils::spinSomeNodes(test_node, target_node, repeat_count); } +/** + * @brief Manages publishing and subscribing to ROS topics for testing Autoware. + * + * The AutowareTestManager class provides utility functions to facilitate + * the publishing of messages to specified topics and the setting up of + * subscribers to listen for messages on specified topics. This class + * simplifies the setup of test environments in Autoware. + */ +class AutowareTestManager +{ +public: + AutowareTestManager() + { + test_node_ = std::make_shared("autoware_test_manager_node"); + pub_clock_ = test_node_->create_publisher("/clock", 1); + } + + template + void test_pub_msg( + rclcpp::Node::SharedPtr target_node, const std::string & topic_name, MessageType & msg) + { + if (publishers_.find(topic_name) == publishers_.end()) { + auto publisher = test_node_->create_publisher(topic_name, 10); + publishers_[topic_name] = std::static_pointer_cast(publisher); + } + + auto publisher = + std::dynamic_pointer_cast>(publishers_[topic_name]); + + autoware::test_utils::publishToTargetNode(test_node_, target_node, topic_name, publisher, msg); + RCLCPP_INFO(test_node_->get_logger(), "Published message on topic '%s'", topic_name.c_str()); + } + + template + void set_subscriber( + const std::string & topic_name, + std::function callback) + { + if (subscribers_.find(topic_name) == subscribers_.end()) { + std::shared_ptr> subscriber; + autoware::test_utils::createSubscription( + test_node_, topic_name, callback, subscriber); + subscribers_[topic_name] = std::static_pointer_cast(subscriber); + } else { + RCLCPP_WARN(test_node_->get_logger(), "Subscriber %s already set.", topic_name.c_str()); + } + } + + /** + * @brief Publishes a ROS Clock message with the specified time. + * + * This function publishes a ROS Clock message with the specified time. + * Be careful when using this function, as it can affect the behavior of + * the system under test. Consider using ament_add_ros_isolated_gtest to + * isolate the system under test from the ROS clock. + * + * @param time The time to publish. + */ + void jump_clock(const rclcpp::Time & time) + { + rosgraph_msgs::msg::Clock clock; + clock.clock = time; + pub_clock_->publish(clock); + } + +protected: + // Publisher + std::unordered_map> publishers_; + std::unordered_map> subscribers_; + rclcpp::Publisher::SharedPtr pub_clock_; + + // Node + rclcpp::Node::SharedPtr test_node_; +}; // class AutowareTestManager + } // namespace autoware::test_utils #endif // AUTOWARE_TEST_UTILS__AUTOWARE_TEST_UTILS_HPP_ diff --git a/common/autoware_test_utils/package.xml b/common/autoware_test_utils/package.xml index 778b9a42ca207..afcf44296a75d 100644 --- a/common/autoware_test_utils/package.xml +++ b/common/autoware_test_utils/package.xml @@ -16,6 +16,7 @@ autoware_cmake autoware_control_msgs + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs autoware_planning_msgs @@ -23,7 +24,6 @@ autoware_vehicle_msgs component_interface_specs component_interface_utils - lanelet2_extension lanelet2_io nav_msgs rclcpp diff --git a/common/autoware_test_utils/src/autoware_test_utils.cpp b/common/autoware_test_utils/src/autoware_test_utils.cpp index 563350dbe53cc..d870bcf9974a1 100644 --- a/common/autoware_test_utils/src/autoware_test_utils.cpp +++ b/common/autoware_test_utils/src/autoware_test_utils.cpp @@ -19,6 +19,8 @@ #include #include +#include + #include namespace autoware::test_utils @@ -54,14 +56,32 @@ lanelet::LaneletMapPtr loadMap(const std::string & lanelet2_filename) lanelet::ErrorMessages errors{}; lanelet::projection::MGRSProjector projector{}; lanelet::LaneletMapPtr map = lanelet::load(lanelet2_filename, projector, &errors); - if (errors.empty()) { - return map; + if (!errors.empty()) { + for (const auto & error : errors) { + RCLCPP_ERROR_STREAM(rclcpp::get_logger("map_loader"), error); + } + return nullptr; } - for (const auto & error : errors) { - RCLCPP_ERROR_STREAM(rclcpp::get_logger("map_loader"), error); + for (lanelet::Point3d point : map->pointLayer) { + if (point.hasAttribute("local_x")) { + point.x() = point.attribute("local_x").asDouble().value(); + } + if (point.hasAttribute("local_y")) { + point.y() = point.attribute("local_y").asDouble().value(); + } } - return nullptr; + + // realign lanelet borders using updated points + for (lanelet::Lanelet lanelet : map->laneletLayer) { + auto left = lanelet.leftBound(); + auto right = lanelet.rightBound(); + std::tie(left, right) = lanelet::geometry::align(left, right); + lanelet.setLeftBound(left); + lanelet.setRightBound(right); + } + + return map; } LaneletMapBin convertToMapBinMsg( diff --git a/common/autoware_test_utils/test/test_autoware_test_manager.cpp b/common/autoware_test_utils/test/test_autoware_test_manager.cpp new file mode 100644 index 0000000000000..688ec9df9ad42 --- /dev/null +++ b/common/autoware_test_utils/test/test_autoware_test_manager.cpp @@ -0,0 +1,71 @@ +// Copyright 2024 TIER IV +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "autoware_test_utils/autoware_test_utils.hpp" + +#include + +#include + +#include + +class RelayNode : public rclcpp::Node +{ +public: + RelayNode() : Node("relay_node") + { + subscription_ = this->create_subscription( + "input_topic", 10, [this](const std_msgs::msg::String::ConstSharedPtr msg) { + RCLCPP_INFO(this->get_logger(), "Received message: %s", msg->data.c_str()); + auto new_msg = std::make_shared(); + new_msg->data = msg->data; + publisher_->publish(*new_msg); + }); + + publisher_ = this->create_publisher("output_topic", 10); + } + +private: + rclcpp::Subscription::SharedPtr subscription_; + rclcpp::Publisher::SharedPtr publisher_; +}; + +TEST(AutowareTestManagerTest, TestRelayNode) +{ + rclcpp::init(0, nullptr); + + const std::string input_topic_name = "input_topic"; + const std::string output_topic_name = "output_topic"; + + // Setup target node and its test manager + auto target_node = std::make_shared(); + auto manager = std::make_shared(); + + // Setup subscriber for test manager + std::string received_msg; + manager->set_subscriber( + "output_topic", + [&received_msg](const std_msgs::msg::String::ConstSharedPtr msg) { received_msg = msg->data; }); + + // Publish a message to the relay node + std_msgs::msg::String msg; + msg.data = "Hello, Relay!"; + manager->test_pub_msg(target_node, input_topic_name, msg); + + // Spin to process callbacks + rclcpp::spin_some(target_node); + + // Check that the message was relayed and received by the test node + EXPECT_EQ(received_msg, "Hello, Relay!"); +} diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_geometry.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_geometry.hpp index c90cc714367f1..a0e24c68b7918 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_geometry.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_geometry.hpp @@ -25,7 +25,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { // 2D struct Point2d; @@ -93,12 +93,12 @@ inline Point3d fromMsg(const geometry_msgs::msg::Point & msg) point.z() = msg.z; return point; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils -BOOST_GEOMETRY_REGISTER_POINT_2D( // NOLINT - autoware_universe_utils::Point2d, double, cs::cartesian, x(), y()) // NOLINT -BOOST_GEOMETRY_REGISTER_POINT_3D( // NOLINT - autoware_universe_utils::Point3d, double, cs::cartesian, x(), y(), z()) // NOLINT -BOOST_GEOMETRY_REGISTER_RING(autoware_universe_utils::LinearRing2d) // NOLINT +BOOST_GEOMETRY_REGISTER_POINT_2D( // NOLINT + autoware::universe_utils::Point2d, double, cs::cartesian, x(), y()) // NOLINT +BOOST_GEOMETRY_REGISTER_POINT_3D( // NOLINT + autoware::universe_utils::Point3d, double, cs::cartesian, x(), y(), z()) // NOLINT +BOOST_GEOMETRY_REGISTER_RING(autoware::universe_utils::LinearRing2d) // NOLINT #endif // AUTOWARE__UNIVERSE_UTILS__GEOMETRY__BOOST_GEOMETRY_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_polygon_utils.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_polygon_utils.hpp index 477a1b4c27a6c..1313ec558fe01 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_polygon_utils.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/boost_polygon_utils.hpp @@ -24,7 +24,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { bool isClockwise(const Polygon2d & polygon); Polygon2d inverseClockwise(const Polygon2d & polygon); @@ -47,6 +47,6 @@ Polygon2d toFootprint( const double base_to_rear, const double width); double getArea(const autoware_perception_msgs::msg::Shape & shape); Polygon2d expandPolygon(const Polygon2d & input_polygon, const double offset); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__GEOMETRY__BOOST_POLYGON_UTILS_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/geometry.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/geometry.hpp index 0af9d30ad09c1..87c06dfd9cf08 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/geometry.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/geometry.hpp @@ -96,7 +96,7 @@ inline void doTransform( #endif } // namespace tf2 -namespace autoware_universe_utils +namespace autoware::universe_utils { template geometry_msgs::msg::Point getPoint(const T & p) @@ -577,6 +577,6 @@ std::optional intersect( const geometry_msgs::msg::Point & p1, const geometry_msgs::msg::Point & p2, const geometry_msgs::msg::Point & p3, const geometry_msgs::msg::Point & p4); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__GEOMETRY__GEOMETRY_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/pose_deviation.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/pose_deviation.hpp index 2f2b4a5d3dfb0..c3a602caf4232 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/geometry/pose_deviation.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/geometry/pose_deviation.hpp @@ -18,7 +18,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { struct PoseDeviation { @@ -39,6 +39,6 @@ double calcYawDeviation( PoseDeviation calcPoseDeviation( const geometry_msgs::msg::Pose & base_pose, const geometry_msgs::msg::Pose & target_pose); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__GEOMETRY__POSE_DEVIATION_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/math/constants.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/math/constants.hpp index 2c1f9fe646723..f06770c2925c7 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/math/constants.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/math/constants.hpp @@ -15,10 +15,10 @@ #ifndef AUTOWARE__UNIVERSE_UTILS__MATH__CONSTANTS_HPP_ #define AUTOWARE__UNIVERSE_UTILS__MATH__CONSTANTS_HPP_ -namespace autoware_universe_utils +namespace autoware::universe_utils { constexpr double pi = 3.14159265358979323846; // To be replaced by std::numbers::pi in C++20 constexpr double gravity = 9.80665; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__MATH__CONSTANTS_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/math/normalization.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/math/normalization.hpp index 502ed4b4f7b34..16af7f44415cc 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/math/normalization.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/math/normalization.hpp @@ -19,7 +19,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { inline double normalizeDegree(const double deg, const double min_deg = -180) { @@ -45,6 +45,6 @@ inline double normalizeRadian(const double rad, const double min_rad = -pi) return value - std::copysign(2 * pi, value); } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__MATH__NORMALIZATION_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/math/range.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/math/range.hpp index fabf67a683680..ed0ef455bfcfe 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/math/range.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/math/range.hpp @@ -20,7 +20,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template std::vector arange(const T start, const T stop, const T step = 1) @@ -73,6 +73,6 @@ std::vector linspace(const T start, const T stop, const size_t num) return out; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__MATH__RANGE_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/math/sin_table.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/math/sin_table.hpp index bf67a1b521b6d..e87d8a2e5fc40 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/math/sin_table.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/math/sin_table.hpp @@ -17,7 +17,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { constexpr size_t sin_table_size = 32769; @@ -25,6 +25,6 @@ constexpr size_t discrete_arcs_num_90 = 32768; constexpr size_t discrete_arcs_num_360 = 131072; extern const float g_sin_table[sin_table_size]; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__MATH__SIN_TABLE_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/math/trigonometry.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/math/trigonometry.hpp index 7f58735d35963..19a59523c7f08 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/math/trigonometry.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/math/trigonometry.hpp @@ -17,7 +17,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { float sin(float radian); @@ -26,6 +26,6 @@ float cos(float radian); std::pair sin_and_cos(float radian); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__MATH__TRIGONOMETRY_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/math/unit_conversion.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/math/unit_conversion.hpp index 66be4d99d5803..36ce8e9f39514 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/math/unit_conversion.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/math/unit_conversion.hpp @@ -17,7 +17,7 @@ #include "autoware/universe_utils/math/constants.hpp" -namespace autoware_universe_utils +namespace autoware::universe_utils { constexpr double deg2rad(const double deg) { @@ -36,6 +36,6 @@ constexpr double mps2kmph(const double mps) { return mps * 3600.0 / 1000.0; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__MATH__UNIT_CONVERSION_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_publisher.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_publisher.hpp index 0965f8ffbaefa..acd82995b1d84 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_publisher.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_publisher.hpp @@ -25,14 +25,14 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { namespace debug_publisher { template < class T_msg, class T, std::enable_if_t< - autoware_universe_utils::debug_traits::is_debug_message::value, std::nullptr_t> = + autoware::universe_utils::debug_traits::is_debug_message::value, std::nullptr_t> = nullptr> T_msg toDebugMsg(const T & data, const rclcpp::Time & stamp) { @@ -73,6 +73,6 @@ class DebugPublisher const char * ns_; std::unordered_map> pub_map_; }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__DEBUG_PUBLISHER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_traits.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_traits.hpp index 330b01b68a0b2..8420f930e0ce9 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_traits.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/debug_traits.hpp @@ -28,7 +28,7 @@ #include -namespace autoware_universe_utils::debug_traits +namespace autoware::universe_utils::debug_traits { template struct is_debug_message : std::false_type @@ -84,6 +84,6 @@ template <> struct is_debug_message : std::true_type { }; -} // namespace autoware_universe_utils::debug_traits +} // namespace autoware::universe_utils::debug_traits #endif // AUTOWARE__UNIVERSE_UTILS__ROS__DEBUG_TRAITS_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/logger_level_configure.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/logger_level_configure.hpp index 41163ea38b018..b1b11d33ab448 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/logger_level_configure.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/logger_level_configure.hpp @@ -27,7 +27,7 @@ // ... // // // Define logger_configure as a node class member variable -// std::unique_ptr logger_configure_; +// std::unique_ptr logger_configure_; // } // // ___In your_node.cpp___ @@ -45,7 +45,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { class LoggerLevelConfigure { @@ -64,5 +64,5 @@ class LoggerLevelConfigure const ConfigLogger::Response::SharedPtr response); }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__LOGGER_LEVEL_CONFIGURE_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/marker_helper.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/marker_helper.hpp index ad2d2f84f82e0..6991962c420d1 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/marker_helper.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/marker_helper.hpp @@ -22,7 +22,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { inline geometry_msgs::msg::Point createMarkerPosition(double x, double y, double z) { @@ -76,6 +76,6 @@ void appendMarkerArray( visualization_msgs::msg::MarkerArray * marker_array, const std::optional & current_time = {}); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__MARKER_HELPER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/msg_covariance.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/msg_covariance.hpp index 55caf1955b6ec..ff957a878440e 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/msg_covariance.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/msg_covariance.hpp @@ -15,7 +15,7 @@ #ifndef AUTOWARE__UNIVERSE_UTILS__ROS__MSG_COVARIANCE_HPP_ #define AUTOWARE__UNIVERSE_UTILS__ROS__MSG_COVARIANCE_HPP_ -namespace autoware_universe_utils +namespace autoware::universe_utils { namespace xyz_covariance_index { @@ -115,6 +115,6 @@ enum XYZ_UPPER_COV_IDX { Z_Z = 5, }; } // namespace xyz_upper_covariance_index -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__MSG_COVARIANCE_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/parameter.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/parameter.hpp index 5ef1837e0cece..89846688d365d 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/parameter.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/parameter.hpp @@ -19,7 +19,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template T getOrDeclareParameter(rclcpp::Node & node, const std::string & name) @@ -30,6 +30,6 @@ T getOrDeclareParameter(rclcpp::Node & node, const std::string & name) return node.declare_parameter(name); } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__PARAMETER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/pcl_conversion.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/pcl_conversion.hpp index cce8a75b37aa9..7fab38790921a 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/pcl_conversion.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/pcl_conversion.hpp @@ -20,7 +20,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { /** * @brief a faster implementation of converting sensor_msgs::msg::PointCloud2 to @@ -67,6 +67,6 @@ void transformPointCloudFromROSMsg( } } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__PCL_CONVERSION_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/polling_subscriber.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/polling_subscriber.hpp index a41e13229a826..1b7ea0bd69951 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/polling_subscriber.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/polling_subscriber.hpp @@ -23,7 +23,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { inline rclcpp::SensorDataQoS SingleDepthSensorQoS() @@ -159,6 +159,6 @@ class InterProcessPollingSubscriber= 2)>::typ }; }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__POLLING_SUBSCRIBER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/processing_time_publisher.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/processing_time_publisher.hpp index bb92d615b0a8d..96cddc595a5b9 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/processing_time_publisher.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/processing_time_publisher.hpp @@ -23,7 +23,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { class ProcessingTimePublisher { @@ -62,6 +62,6 @@ class ProcessingTimePublisher return oss.str(); } }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__PROCESSING_TIME_PUBLISHER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/published_time_publisher.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/published_time_publisher.hpp index 960295944a14b..60112d9e83cf3 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/published_time_publisher.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/published_time_publisher.hpp @@ -26,7 +26,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { class PublishedTimePublisher @@ -109,6 +109,6 @@ class PublishedTimePublisher // store them for each different publisher of the node std::map::SharedPtr, GidCompare> publishers_; }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__PUBLISHED_TIME_PUBLISHER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/self_pose_listener.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/self_pose_listener.hpp index 0bd9a4db5b674..cdcf78a9c5edc 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/self_pose_listener.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/self_pose_listener.hpp @@ -22,7 +22,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { class SelfPoseListener { @@ -53,6 +53,6 @@ class SelfPoseListener private: TransformListener transform_listener_; }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__SELF_POSE_LISTENER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/transform_listener.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/transform_listener.hpp index 176a11dcde529..e053ef3668034 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/transform_listener.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/transform_listener.hpp @@ -26,7 +26,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { class TransformListener { @@ -82,6 +82,6 @@ class TransformListener std::shared_ptr tf_buffer_; std::shared_ptr tf_listener_; }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__TRANSFORM_LISTENER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/update_param.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/update_param.hpp index 8bb505d765aef..bebb38af0b261 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/update_param.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/update_param.hpp @@ -20,7 +20,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template bool updateParam(const std::vector & params, const std::string & name, T & value) @@ -37,6 +37,6 @@ bool updateParam(const std::vector & params, const std::strin value = itr->template get_value(); return true; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__UPDATE_PARAM_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/uuid_helper.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/uuid_helper.hpp index 7d4892f724848..62c9f75f3f233 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/uuid_helper.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/uuid_helper.hpp @@ -23,7 +23,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { inline unique_identifier_msgs::msg::UUID generateUUID() { @@ -58,6 +58,6 @@ inline unique_identifier_msgs::msg::UUID toUUIDMsg(const boost::uuids::uuid & id return ros_uuid; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__UUID_HELPER_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/ros/wait_for_param.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/ros/wait_for_param.hpp index 0aaef92835653..1faaaa861b1c4 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/ros/wait_for_param.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/ros/wait_for_param.hpp @@ -21,7 +21,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template T waitForParam( @@ -47,6 +47,6 @@ T waitForParam( return {}; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__ROS__WAIT_FOR_PARAM_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/system/backtrace.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/system/backtrace.hpp index f195cd2b32391..0b025160bacf8 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/system/backtrace.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/system/backtrace.hpp @@ -15,11 +15,11 @@ #ifndef AUTOWARE__UNIVERSE_UTILS__SYSTEM__BACKTRACE_HPP_ #define AUTOWARE__UNIVERSE_UTILS__SYSTEM__BACKTRACE_HPP_ -namespace autoware_universe_utils +namespace autoware::universe_utils { void print_backtrace(); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__SYSTEM__BACKTRACE_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/system/stop_watch.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/system/stop_watch.hpp index 3df651825f1aa..eb5cb546b8c7f 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/system/stop_watch.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/system/stop_watch.hpp @@ -19,7 +19,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template < class OutputUnit = std::chrono::seconds, class InternalUnit = std::chrono::microseconds, @@ -58,6 +58,6 @@ class StopWatch std::unordered_map t_start_; }; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__SYSTEM__STOP_WATCH_HPP_ diff --git a/common/autoware_universe_utils/include/autoware/universe_utils/transform/transforms.hpp b/common/autoware_universe_utils/include/autoware/universe_utils/transform/transforms.hpp index f480a709d169e..8a92116b426ec 100644 --- a/common/autoware_universe_utils/include/autoware/universe_utils/transform/transforms.hpp +++ b/common/autoware_universe_utils/include/autoware/universe_utils/transform/transforms.hpp @@ -21,7 +21,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template void transformPointCloud( @@ -46,6 +46,6 @@ void transformPointCloud( pcl::transformPointCloud(cloud_in, cloud_out, transform); } } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils #endif // AUTOWARE__UNIVERSE_UTILS__TRANSFORM__TRANSFORMS_HPP_ diff --git a/common/autoware_universe_utils/src/geometry/boost_polygon_utils.cpp b/common/autoware_universe_utils/src/geometry/boost_polygon_utils.cpp index ce9232a8c1add..da3da42cbc41b 100644 --- a/common/autoware_universe_utils/src/geometry/boost_polygon_utils.cpp +++ b/common/autoware_universe_utils/src/geometry/boost_polygon_utils.cpp @@ -23,8 +23,8 @@ namespace { namespace bg = boost::geometry; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; void appendPointToPolygon(Polygon2d & polygon, const geometry_msgs::msg::Point & geom_point) { @@ -68,7 +68,7 @@ double getCircleArea(const geometry_msgs::msg::Vector3 & dimensions) } } // namespace -namespace autoware_universe_utils +namespace autoware::universe_utils { bool isClockwise(const Polygon2d & polygon) { @@ -123,16 +123,16 @@ Polygon2d toPolygon2d( Polygon2d polygon; if (shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { - const auto point0 = autoware_universe_utils::calcOffsetPose( + const auto point0 = autoware::universe_utils::calcOffsetPose( pose, shape.dimensions.x / 2.0, shape.dimensions.y / 2.0, 0.0) .position; - const auto point1 = autoware_universe_utils::calcOffsetPose( + const auto point1 = autoware::universe_utils::calcOffsetPose( pose, -shape.dimensions.x / 2.0, shape.dimensions.y / 2.0, 0.0) .position; - const auto point2 = autoware_universe_utils::calcOffsetPose( + const auto point2 = autoware::universe_utils::calcOffsetPose( pose, -shape.dimensions.x / 2.0, -shape.dimensions.y / 2.0, 0.0) .position; - const auto point3 = autoware_universe_utils::calcOffsetPose( + const auto point3 = autoware::universe_utils::calcOffsetPose( pose, shape.dimensions.x / 2.0, -shape.dimensions.y / 2.0, 0.0) .position; @@ -179,24 +179,24 @@ Polygon2d toPolygon2d( return isClockwise(polygon) ? polygon : inverseClockwise(polygon); } -autoware_universe_utils::Polygon2d toPolygon2d( +autoware::universe_utils::Polygon2d toPolygon2d( const autoware_perception_msgs::msg::DetectedObject & object) { - return autoware_universe_utils::toPolygon2d( + return autoware::universe_utils::toPolygon2d( object.kinematics.pose_with_covariance.pose, object.shape); } -autoware_universe_utils::Polygon2d toPolygon2d( +autoware::universe_utils::Polygon2d toPolygon2d( const autoware_perception_msgs::msg::TrackedObject & object) { - return autoware_universe_utils::toPolygon2d( + return autoware::universe_utils::toPolygon2d( object.kinematics.pose_with_covariance.pose, object.shape); } -autoware_universe_utils::Polygon2d toPolygon2d( +autoware::universe_utils::Polygon2d toPolygon2d( const autoware_perception_msgs::msg::PredictedObject & object) { - return autoware_universe_utils::toPolygon2d( + return autoware::universe_utils::toPolygon2d( object.kinematics.initial_pose_with_covariance.pose, object.shape); } @@ -206,16 +206,16 @@ Polygon2d toFootprint( { Polygon2d polygon; const auto point0 = - autoware_universe_utils::calcOffsetPose(base_link_pose, base_to_front, width / 2.0, 0.0) + autoware::universe_utils::calcOffsetPose(base_link_pose, base_to_front, width / 2.0, 0.0) .position; const auto point1 = - autoware_universe_utils::calcOffsetPose(base_link_pose, base_to_front, -width / 2.0, 0.0) + autoware::universe_utils::calcOffsetPose(base_link_pose, base_to_front, -width / 2.0, 0.0) .position; const auto point2 = - autoware_universe_utils::calcOffsetPose(base_link_pose, -base_to_rear, -width / 2.0, 0.0) + autoware::universe_utils::calcOffsetPose(base_link_pose, -base_to_rear, -width / 2.0, 0.0) .position; const auto point3 = - autoware_universe_utils::calcOffsetPose(base_link_pose, -base_to_rear, width / 2.0, 0.0) + autoware::universe_utils::calcOffsetPose(base_link_pose, -base_to_rear, width / 2.0, 0.0) .position; appendPointToPolygon(polygon, point0); @@ -272,4 +272,4 @@ Polygon2d expandPolygon(const Polygon2d & input_polygon, const double offset) boost::geometry::correct(expanded_polygon); return expanded_polygon; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/src/geometry/geometry.cpp b/common/autoware_universe_utils/src/geometry/geometry.cpp index e6a491671595a..1f4fd318e227b 100644 --- a/common/autoware_universe_utils/src/geometry/geometry.cpp +++ b/common/autoware_universe_utils/src/geometry/geometry.cpp @@ -32,7 +32,7 @@ void fromMsg(const geometry_msgs::msg::PoseStamped & msg, tf2::Stamped().x(point32.x).y(point32.y).z(point32.z); - const auto transformed_point = autoware_universe_utils::transformPoint(point, pose); + const auto transformed_point = autoware::universe_utils::transformPoint(point, pose); return geometry_msgs::build() .x(transformed_point.x) .y(transformed_point.y) @@ -383,4 +383,4 @@ std::optional intersect( return intersect_point; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/src/geometry/pose_deviation.cpp b/common/autoware_universe_utils/src/geometry/pose_deviation.cpp index 5c81519510c8e..77849e73f5dfd 100644 --- a/common/autoware_universe_utils/src/geometry/pose_deviation.cpp +++ b/common/autoware_universe_utils/src/geometry/pose_deviation.cpp @@ -28,7 +28,7 @@ #include #endif -namespace autoware_universe_utils +namespace autoware::universe_utils { double calcLateralDeviation( @@ -82,4 +82,4 @@ PoseDeviation calcPoseDeviation( return deviation; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/src/math/sin_table.cpp b/common/autoware_universe_utils/src/math/sin_table.cpp index bc0a5d7b09024..ce021869176ee 100644 --- a/common/autoware_universe_utils/src/math/sin_table.cpp +++ b/common/autoware_universe_utils/src/math/sin_table.cpp @@ -14,7 +14,7 @@ #include "autoware/universe_utils/math/sin_table.hpp" -namespace autoware_universe_utils +namespace autoware::universe_utils { const float g_sin_table[sin_table_size] = { @@ -8212,4 +8212,4 @@ const float g_sin_table[sin_table_size] = { 0.9999999816164293f, 0.9999999896592414f, 0.9999999954041073f, 0.9999999988510269f, 1.0000000000000000f}; -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/src/math/trigonometry.cpp b/common/autoware_universe_utils/src/math/trigonometry.cpp index 40a993343b1de..586b9075ba6d5 100644 --- a/common/autoware_universe_utils/src/math/trigonometry.cpp +++ b/common/autoware_universe_utils/src/math/trigonometry.cpp @@ -19,12 +19,12 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { float sin(float radian) { - float degree = radian * (180.f / static_cast(autoware_universe_utils::pi)) * + float degree = radian * (180.f / static_cast(autoware::universe_utils::pi)) * (discrete_arcs_num_360 / 360.f); size_t idx = (static_cast(std::round(degree)) % discrete_arcs_num_360 + discrete_arcs_num_360) % @@ -46,13 +46,13 @@ float sin(float radian) float cos(float radian) { - return sin(radian + static_cast(autoware_universe_utils::pi) / 2.f); + return sin(radian + static_cast(autoware::universe_utils::pi) / 2.f); } std::pair sin_and_cos(float radian) { constexpr float tmp = - (180.f / static_cast(autoware_universe_utils::pi)) * (discrete_arcs_num_360 / 360.f); + (180.f / static_cast(autoware::universe_utils::pi)) * (discrete_arcs_num_360 / 360.f); const float degree = radian * tmp; size_t idx = (static_cast(std::round(degree)) % discrete_arcs_num_360 + discrete_arcs_num_360) % @@ -72,4 +72,4 @@ std::pair sin_and_cos(float radian) } } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/src/ros/logger_level_configure.cpp b/common/autoware_universe_utils/src/ros/logger_level_configure.cpp index 77e8d9bf16d7f..d517b81b93224 100644 --- a/common/autoware_universe_utils/src/ros/logger_level_configure.cpp +++ b/common/autoware_universe_utils/src/ros/logger_level_configure.cpp @@ -16,7 +16,7 @@ #include -namespace autoware_universe_utils +namespace autoware::universe_utils { LoggerLevelConfigure::LoggerLevelConfigure(rclcpp::Node * node) : ros_logger_(node->get_logger()) { @@ -58,4 +58,4 @@ void LoggerLevelConfigure::onLoggerConfigService( return; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/src/ros/marker_helper.cpp b/common/autoware_universe_utils/src/ros/marker_helper.cpp index d4f97af2ef90f..507be41dea7bb 100644 --- a/common/autoware_universe_utils/src/ros/marker_helper.cpp +++ b/common/autoware_universe_utils/src/ros/marker_helper.cpp @@ -14,7 +14,7 @@ #include "autoware/universe_utils/ros/marker_helper.hpp" -namespace autoware_universe_utils +namespace autoware::universe_utils { visualization_msgs::msg::Marker createDefaultMarker( @@ -68,4 +68,4 @@ void appendMarkerArray( } } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/src/system/backtrace.cpp b/common/autoware_universe_utils/src/system/backtrace.cpp index f4c4312ce44fb..7af91bdcc60dc 100644 --- a/common/autoware_universe_utils/src/system/backtrace.cpp +++ b/common/autoware_universe_utils/src/system/backtrace.cpp @@ -23,7 +23,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { void print_backtrace() @@ -49,4 +49,4 @@ void print_backtrace() free(symbol_list); } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils diff --git a/common/autoware_universe_utils/test/src/geometry/test_boost_geometry.cpp b/common/autoware_universe_utils/test/src/geometry/test_boost_geometry.cpp index 764bb388fc74a..7c688e1982838 100644 --- a/common/autoware_universe_utils/test/src/geometry/test_boost_geometry.cpp +++ b/common/autoware_universe_utils/test/src/geometry/test_boost_geometry.cpp @@ -20,8 +20,8 @@ namespace bg = boost::geometry; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Point3d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Point3d; TEST(boost_geometry, boost_geometry_distance) { @@ -54,7 +54,7 @@ TEST(boost_geometry, to_2d) TEST(boost_geometry, toMsg) { - using autoware_universe_utils::toMsg; + using autoware::universe_utils::toMsg; { const Point3d p(1.0, 2.0, 3.0); @@ -68,7 +68,7 @@ TEST(boost_geometry, toMsg) TEST(boost_geometry, fromMsg) { - using autoware_universe_utils::fromMsg; + using autoware::universe_utils::fromMsg; geometry_msgs::msg::Point p_msg; p_msg.x = 1.0; diff --git a/common/autoware_universe_utils/test/src/geometry/test_boost_polygon_utils.cpp b/common/autoware_universe_utils/test/src/geometry/test_boost_polygon_utils.cpp index ed576ba0dceaf..4b75e8130a253 100644 --- a/common/autoware_universe_utils/test/src/geometry/test_boost_polygon_utils.cpp +++ b/common/autoware_universe_utils/test/src/geometry/test_boost_polygon_utils.cpp @@ -19,7 +19,7 @@ #include -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::Polygon2d; namespace { @@ -39,7 +39,7 @@ geometry_msgs::msg::Pose createPose(const double x, const double y, const double p.position.x = x; p.position.y = y; p.position.z = 0.0; - p.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + p.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); return p; } @@ -47,7 +47,7 @@ geometry_msgs::msg::Pose createPose(const double x, const double y, const double TEST(boost_geometry, boost_isClockwise) { - using autoware_universe_utils::isClockwise; + using autoware::universe_utils::isClockwise; // empty Polygon2d empty_polygon; @@ -72,8 +72,8 @@ TEST(boost_geometry, boost_isClockwise) TEST(boost_geometry, boost_inverseClockwise) { - using autoware_universe_utils::inverseClockwise; - using autoware_universe_utils::isClockwise; + using autoware::universe_utils::inverseClockwise; + using autoware::universe_utils::isClockwise; // empty Polygon2d empty_polygon; @@ -100,7 +100,7 @@ TEST(boost_geometry, boost_inverseClockwise) TEST(boost_geometry, boost_rotatePolygon) { constexpr double epsilon = 1e-6; - using autoware_universe_utils::rotatePolygon; + using autoware::universe_utils::rotatePolygon; // empty geometry_msgs::msg::Polygon empty_polygon; @@ -130,7 +130,7 @@ TEST(boost_geometry, boost_rotatePolygon) TEST(boost_geometry, boost_toPolygon2d) { - using autoware_universe_utils::toPolygon2d; + using autoware::universe_utils::toPolygon2d; { // bounding box const double x = 1.0; @@ -206,7 +206,7 @@ TEST(boost_geometry, boost_toPolygon2d) TEST(boost_geometry, boost_toFootprint) { - using autoware_universe_utils::toFootprint; + using autoware::universe_utils::toFootprint; // from base link { @@ -234,7 +234,7 @@ TEST(boost_geometry, boost_toFootprint) TEST(boost_geometry, boost_getArea) { - using autoware_universe_utils::getArea; + using autoware::universe_utils::getArea; { // bounding box const double x = 1.0; @@ -290,7 +290,7 @@ TEST(boost_geometry, boost_getArea) TEST(boost_geometry, boost_expandPolygon) { - using autoware_universe_utils::expandPolygon; + using autoware::universe_utils::expandPolygon; { // box with a certain offset Polygon2d box_poly{{{-1.0, -1.0}, {-1.0, 1.0}, {1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}}}; diff --git a/common/autoware_universe_utils/test/src/geometry/test_geometry.cpp b/common/autoware_universe_utils/test/src/geometry/test_geometry.cpp index 37e43c0ce08dd..194cd7d503d12 100644 --- a/common/autoware_universe_utils/test/src/geometry/test_geometry.cpp +++ b/common/autoware_universe_utils/test/src/geometry/test_geometry.cpp @@ -25,7 +25,7 @@ constexpr double epsilon = 1e-6; TEST(geometry, getPoint) { - using autoware_universe_utils::getPoint; + using autoware::universe_utils::getPoint; const double x_ans = 1.0; const double y_ans = 2.0; @@ -114,7 +114,7 @@ TEST(geometry, getPoint) TEST(geometry, getPose) { - using autoware_universe_utils::getPose; + using autoware::universe_utils::getPose; const double x_ans = 1.0; const double y_ans = 2.0; @@ -203,7 +203,7 @@ TEST(geometry, getPose) TEST(geometry, getLongitudinalVelocity) { - using autoware_universe_utils::getLongitudinalVelocity; + using autoware::universe_utils::getLongitudinalVelocity; const double velocity = 1.0; @@ -222,7 +222,7 @@ TEST(geometry, getLongitudinalVelocity) TEST(geometry, setPose) { - using autoware_universe_utils::setPose; + using autoware::universe_utils::setPose; const double x_ans = 1.0; const double y_ans = 2.0; @@ -292,9 +292,9 @@ TEST(geometry, setPose) TEST(geometry, setOrientation) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::setOrientation; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::setOrientation; geometry_msgs::msg::Pose p; const auto orientation = createQuaternionFromRPY(deg2rad(30), deg2rad(30), deg2rad(30)); @@ -308,7 +308,7 @@ TEST(geometry, setOrientation) TEST(geometry, setLongitudinalVelocity) { - using autoware_universe_utils::setLongitudinalVelocity; + using autoware::universe_utils::setLongitudinalVelocity; const double velocity = 1.0; @@ -327,7 +327,7 @@ TEST(geometry, setLongitudinalVelocity) TEST(geometry, createPoint) { - using autoware_universe_utils::createPoint; + using autoware::universe_utils::createPoint; const geometry_msgs::msg::Point p_out = createPoint(1.0, 2.0, 3.0); EXPECT_DOUBLE_EQ(p_out.x, 1.0); @@ -337,7 +337,7 @@ TEST(geometry, createPoint) TEST(geometry, createQuaternion) { - using autoware_universe_utils::createQuaternion; + using autoware::universe_utils::createQuaternion; // (0.18257419, 0.36514837, 0.54772256, 0.73029674) is normalized quaternion of (1, 2, 3, 4) const geometry_msgs::msg::Quaternion q_out = @@ -350,7 +350,7 @@ TEST(geometry, createQuaternion) TEST(geometry, createTranslation) { - using autoware_universe_utils::createTranslation; + using autoware::universe_utils::createTranslation; const geometry_msgs::msg::Vector3 v_out = createTranslation(1.0, 2.0, 3.0); EXPECT_DOUBLE_EQ(v_out.x, 1.0); @@ -360,8 +360,8 @@ TEST(geometry, createTranslation) TEST(geometry, createQuaternionFromRPY) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; { const auto q_out = createQuaternionFromRPY(0, 0, 0); @@ -390,8 +390,8 @@ TEST(geometry, createQuaternionFromRPY) TEST(geometry, createQuaternionFromYaw) { - using autoware_universe_utils::createQuaternionFromYaw; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::createQuaternionFromYaw; + using autoware::universe_utils::deg2rad; { const auto q_out = createQuaternionFromYaw(0); @@ -420,9 +420,9 @@ TEST(geometry, createQuaternionFromYaw) TEST(geometry, calcElevationAngle) { - using autoware_universe_utils::calcElevationAngle; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::calcElevationAngle; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; { const auto p1 = createPoint(1.0, 1.0, 1.0); @@ -468,9 +468,9 @@ TEST(geometry, calcElevationAngle) TEST(geometry, calcAzimuthAngle) { - using autoware_universe_utils::calcAzimuthAngle; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::calcAzimuthAngle; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::deg2rad; { const auto p1 = createPoint(0.0, 0.0, 9.0); @@ -521,7 +521,7 @@ TEST(geometry, calcAzimuthAngle) TEST(geometry, calcDistance2d) { - using autoware_universe_utils::calcDistance2d; + using autoware::universe_utils::calcDistance2d; geometry_msgs::msg::Point point; point.x = 1.0; @@ -538,7 +538,7 @@ TEST(geometry, calcDistance2d) TEST(geometry, calcSquaredDistance2d) { - using autoware_universe_utils::calcSquaredDistance2d; + using autoware::universe_utils::calcSquaredDistance2d; geometry_msgs::msg::Point point; point.x = 1.0; @@ -555,7 +555,7 @@ TEST(geometry, calcSquaredDistance2d) TEST(geometry, calcDistance3d) { - using autoware_universe_utils::calcDistance3d; + using autoware::universe_utils::calcDistance3d; geometry_msgs::msg::Point point; point.x = 1.0; @@ -572,9 +572,9 @@ TEST(geometry, calcDistance3d) TEST(geometry, getRPY) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getRPY; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getRPY; { const double ans_roll = deg2rad(5); @@ -610,9 +610,9 @@ TEST(geometry, getRPY) TEST(geometry, getRPY_wrapper) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::getRPY; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::getRPY; { const double ans_roll = deg2rad(45); @@ -652,9 +652,9 @@ TEST(geometry, getRPY_wrapper) TEST(geometry, transform2pose) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::transform2pose; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::transform2pose; { geometry_msgs::msg::Transform transform; @@ -703,9 +703,9 @@ TEST(geometry, transform2pose) TEST(geometry, pose2transform) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::pose2transform; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::pose2transform; { geometry_msgs::msg::Pose pose; @@ -756,9 +756,9 @@ TEST(geometry, pose2transform) TEST(geometry, point2tfVector) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::point2tfVector; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::point2tfVector; // Point { @@ -823,11 +823,11 @@ TEST(geometry, point2tfVector) TEST(geometry, transformPoint) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::Point2d; - using autoware_universe_utils::Point3d; - using autoware_universe_utils::transformPoint; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::Point2d; + using autoware::universe_utils::Point3d; + using autoware::universe_utils::transformPoint; { const Point2d p(1.0, 2.0); @@ -916,9 +916,9 @@ TEST(geometry, transformPoint) TEST(geometry, transformPose) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::transformPose; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::transformPose; geometry_msgs::msg::Pose pose; pose.position.x = 2.0; @@ -967,9 +967,9 @@ TEST(geometry, transformPose) TEST(geometry, inverseTransformPose) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::inverseTransformPose; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::inverseTransformPose; geometry_msgs::msg::Pose pose; pose.position.x = 2.0; @@ -1018,10 +1018,10 @@ TEST(geometry, inverseTransformPose) TEST(geometry, inverseTransformPoint) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::inverseTransformPoint; - using autoware_universe_utils::inverseTransformPose; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::inverseTransformPoint; + using autoware::universe_utils::inverseTransformPose; geometry_msgs::msg::Pose pose_transform; pose_transform.position.x = 1.0; @@ -1050,10 +1050,10 @@ TEST(geometry, inverseTransformPoint) TEST(geometry, transformVector) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::MultiPoint3d; - using autoware_universe_utils::transformVector; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::MultiPoint3d; + using autoware::universe_utils::transformVector; { const MultiPoint3d ps{{1.0, 2.0, 3.0}, {2.0, 3.0, 4.0}}; @@ -1078,51 +1078,51 @@ TEST(geometry, transformVector) TEST(geometry, calcCurvature) { - using autoware_universe_utils::calcCurvature; + using autoware::universe_utils::calcCurvature; // Straight Line { - geometry_msgs::msg::Point p1 = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); - geometry_msgs::msg::Point p2 = autoware_universe_utils::createPoint(1.0, 0.0, 0.0); - geometry_msgs::msg::Point p3 = autoware_universe_utils::createPoint(2.0, 0.0, 0.0); + geometry_msgs::msg::Point p1 = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); + geometry_msgs::msg::Point p2 = autoware::universe_utils::createPoint(1.0, 0.0, 0.0); + geometry_msgs::msg::Point p3 = autoware::universe_utils::createPoint(2.0, 0.0, 0.0); EXPECT_DOUBLE_EQ(calcCurvature(p1, p2, p3), 0.0); } // Clockwise Curved Road with a 1[m] radius { - geometry_msgs::msg::Point p1 = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); - geometry_msgs::msg::Point p2 = autoware_universe_utils::createPoint(1.0, 1.0, 0.0); - geometry_msgs::msg::Point p3 = autoware_universe_utils::createPoint(2.0, 0.0, 0.0); + geometry_msgs::msg::Point p1 = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); + geometry_msgs::msg::Point p2 = autoware::universe_utils::createPoint(1.0, 1.0, 0.0); + geometry_msgs::msg::Point p3 = autoware::universe_utils::createPoint(2.0, 0.0, 0.0); EXPECT_DOUBLE_EQ(calcCurvature(p1, p2, p3), -1.0); } // Clockwise Curved Road with a 5[m] radius { - geometry_msgs::msg::Point p1 = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); - geometry_msgs::msg::Point p2 = autoware_universe_utils::createPoint(5.0, 5.0, 0.0); - geometry_msgs::msg::Point p3 = autoware_universe_utils::createPoint(10.0, 0.0, 0.0); + geometry_msgs::msg::Point p1 = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); + geometry_msgs::msg::Point p2 = autoware::universe_utils::createPoint(5.0, 5.0, 0.0); + geometry_msgs::msg::Point p3 = autoware::universe_utils::createPoint(10.0, 0.0, 0.0); EXPECT_DOUBLE_EQ(calcCurvature(p1, p2, p3), -0.2); } // Counter-Clockwise Curved Road with a 1[m] radius { - geometry_msgs::msg::Point p1 = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); - geometry_msgs::msg::Point p2 = autoware_universe_utils::createPoint(-1.0, 1.0, 0.0); - geometry_msgs::msg::Point p3 = autoware_universe_utils::createPoint(-2.0, 0.0, 0.0); + geometry_msgs::msg::Point p1 = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); + geometry_msgs::msg::Point p2 = autoware::universe_utils::createPoint(-1.0, 1.0, 0.0); + geometry_msgs::msg::Point p3 = autoware::universe_utils::createPoint(-2.0, 0.0, 0.0); EXPECT_DOUBLE_EQ(calcCurvature(p1, p2, p3), 1.0); } // Counter-Clockwise Curved Road with a 5[m] radius { - geometry_msgs::msg::Point p1 = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); - geometry_msgs::msg::Point p2 = autoware_universe_utils::createPoint(-5.0, 5.0, 0.0); - geometry_msgs::msg::Point p3 = autoware_universe_utils::createPoint(-10.0, 0.0, 0.0); + geometry_msgs::msg::Point p1 = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); + geometry_msgs::msg::Point p2 = autoware::universe_utils::createPoint(-5.0, 5.0, 0.0); + geometry_msgs::msg::Point p3 = autoware::universe_utils::createPoint(-10.0, 0.0, 0.0); EXPECT_DOUBLE_EQ(calcCurvature(p1, p2, p3), 0.2); } // Give same points { - geometry_msgs::msg::Point p1 = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); - geometry_msgs::msg::Point p2 = autoware_universe_utils::createPoint(1.0, 0.0, 0.0); + geometry_msgs::msg::Point p1 = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); + geometry_msgs::msg::Point p2 = autoware::universe_utils::createPoint(1.0, 0.0, 0.0); ASSERT_ANY_THROW(calcCurvature(p1, p1, p1)); ASSERT_ANY_THROW(calcCurvature(p1, p1, p2)); ASSERT_ANY_THROW(calcCurvature(p1, p2, p1)); @@ -1132,11 +1132,11 @@ TEST(geometry, calcCurvature) TEST(geometry, calcOffsetPose) { - using autoware_universe_utils::calcOffsetPose; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::createQuaternion; - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::calcOffsetPose; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::createQuaternion; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; // Only translation { @@ -1224,12 +1224,12 @@ TEST(geometry, calcOffsetPose) TEST(geometry, isDrivingForward) { - using autoware_universe_utils::calcInterpolatedPoint; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::createQuaternion; - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; - using autoware_universe_utils::isDrivingForward; + using autoware::universe_utils::calcInterpolatedPoint; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::createQuaternion; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; + using autoware::universe_utils::isDrivingForward; const double epsilon = 1e-3; @@ -1286,8 +1286,8 @@ TEST(geometry, isDrivingForward) TEST(geometry, calcInterpolatedPoint) { - using autoware_universe_utils::calcInterpolatedPoint; - using autoware_universe_utils::createPoint; + using autoware::universe_utils::calcInterpolatedPoint; + using autoware::universe_utils::createPoint; { const auto src_point = createPoint(0.0, 0.0, 0.0); @@ -1343,11 +1343,11 @@ TEST(geometry, calcInterpolatedPoint) TEST(geometry, calcInterpolatedPose) { - using autoware_universe_utils::calcInterpolatedPose; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::createQuaternion; - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::calcInterpolatedPose; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::createQuaternion; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; const double epsilon = 1e-3; // Position Interpolation @@ -1527,11 +1527,11 @@ TEST(geometry, calcInterpolatedPose) TEST(geometry, calcInterpolatedPose_with_Spherical_Interpolation) { - using autoware_universe_utils::calcInterpolatedPose; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::createQuaternion; - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::calcInterpolatedPose; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::createQuaternion; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; const double epsilon = 1e-3; // Position Interpolation @@ -1675,7 +1675,7 @@ TEST(geometry, calcInterpolatedPose_with_Spherical_Interpolation) TEST(geometry, getTwist) { - using autoware_universe_utils::createVector3; + using autoware::universe_utils::createVector3; geometry_msgs::msg::Vector3 velocity = createVector3(1.0, 2.0, 3.0); geometry_msgs::msg::Vector3 angular = createVector3(0.1, 0.2, 0.3); @@ -1691,7 +1691,7 @@ TEST(geometry, getTwist) // getTwist { - auto t_out = autoware_universe_utils::createTwist(velocity, angular); + auto t_out = autoware::universe_utils::createTwist(velocity, angular); EXPECT_DOUBLE_EQ(t_out.linear.x, twist.linear.x); EXPECT_DOUBLE_EQ(t_out.linear.y, twist.linear.y); EXPECT_DOUBLE_EQ(t_out.linear.z, twist.linear.z); @@ -1703,32 +1703,32 @@ TEST(geometry, getTwist) TEST(geometry, getTwistNorm) { - using autoware_universe_utils::createVector3; + using autoware::universe_utils::createVector3; geometry_msgs::msg::TwistWithCovariance twist_with_covariance; twist_with_covariance.twist = geometry_msgs::build() .linear(createVector3(3.0, 4.0, 0.0)) .angular(createVector3(0.1, 0.2, 0.3)); - EXPECT_NEAR(autoware_universe_utils::calcNorm(twist_with_covariance.twist.linear), 5.0, epsilon); + EXPECT_NEAR(autoware::universe_utils::calcNorm(twist_with_covariance.twist.linear), 5.0, epsilon); } TEST(geometry, isTwistCovarianceValid) { - using autoware_universe_utils::createVector3; + using autoware::universe_utils::createVector3; geometry_msgs::msg::TwistWithCovariance twist_with_covariance; twist_with_covariance.twist = geometry_msgs::build() .linear(createVector3(1.0, 2.0, 3.0)) .angular(createVector3(0.1, 0.2, 0.3)); - EXPECT_EQ(autoware_universe_utils::isTwistCovarianceValid(twist_with_covariance), false); + EXPECT_EQ(autoware::universe_utils::isTwistCovarianceValid(twist_with_covariance), false); twist_with_covariance.covariance.at(0) = 1.0; - EXPECT_EQ(autoware_universe_utils::isTwistCovarianceValid(twist_with_covariance), true); + EXPECT_EQ(autoware::universe_utils::isTwistCovarianceValid(twist_with_covariance), true); } TEST(geometry, intersect) { - using autoware_universe_utils::createPoint; - using autoware_universe_utils::intersect; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::intersect; { // Normally crossing const auto p1 = createPoint(0.0, -1.0, 0.0); diff --git a/common/autoware_universe_utils/test/src/geometry/test_path_with_lane_id_geometry.cpp b/common/autoware_universe_utils/test/src/geometry/test_path_with_lane_id_geometry.cpp index 058149af2c192..4ed1c5497c6ae 100644 --- a/common/autoware_universe_utils/test/src/geometry/test_path_with_lane_id_geometry.cpp +++ b/common/autoware_universe_utils/test/src/geometry/test_path_with_lane_id_geometry.cpp @@ -18,7 +18,7 @@ TEST(geometry, getPoint_PathWithLaneId) { - using autoware_universe_utils::getPoint; + using autoware::universe_utils::getPoint; const double x_ans = 1.0; const double y_ans = 2.0; @@ -36,7 +36,7 @@ TEST(geometry, getPoint_PathWithLaneId) TEST(geometry, getPose_PathWithLaneId) { - using autoware_universe_utils::getPose; + using autoware::universe_utils::getPose; const double x_ans = 1.0; const double y_ans = 2.0; @@ -66,7 +66,7 @@ TEST(geometry, getPose_PathWithLaneId) TEST(geometry, getLongitudinalVelocity_PathWithLaneId) { - using autoware_universe_utils::getLongitudinalVelocity; + using autoware::universe_utils::getLongitudinalVelocity; const double velocity = 1.0; @@ -77,7 +77,7 @@ TEST(geometry, getLongitudinalVelocity_PathWithLaneId) TEST(geometry, setPose_PathWithLaneId) { - using autoware_universe_utils::setPose; + using autoware::universe_utils::setPose; const double x_ans = 1.0; const double y_ans = 2.0; @@ -109,7 +109,7 @@ TEST(geometry, setPose_PathWithLaneId) TEST(geometry, setLongitudinalVelocity_PathWithLaneId) { - using autoware_universe_utils::setLongitudinalVelocity; + using autoware::universe_utils::setLongitudinalVelocity; const double velocity = 1.0; diff --git a/common/autoware_universe_utils/test/src/geometry/test_pose_deviation.cpp b/common/autoware_universe_utils/test/src/geometry/test_pose_deviation.cpp index 0808223bb9ea2..c9a5c2cec4fac 100644 --- a/common/autoware_universe_utils/test/src/geometry/test_pose_deviation.cpp +++ b/common/autoware_universe_utils/test/src/geometry/test_pose_deviation.cpp @@ -20,9 +20,9 @@ TEST(geometry, pose_deviation) { - using autoware_universe_utils::calcPoseDeviation; - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::calcPoseDeviation; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::deg2rad; geometry_msgs::msg::Pose pose1; pose1.position.x = 1.0; diff --git a/common/autoware_universe_utils/test/src/math/test_constants.cpp b/common/autoware_universe_utils/test/src/math/test_constants.cpp index 47e76efd66f6e..6c449834157b0 100644 --- a/common/autoware_universe_utils/test/src/math/test_constants.cpp +++ b/common/autoware_universe_utils/test/src/math/test_constants.cpp @@ -18,14 +18,14 @@ TEST(constants, pi) { - using autoware_universe_utils::pi; + using autoware::universe_utils::pi; EXPECT_DOUBLE_EQ(pi, 3.14159265358979323846); } TEST(constants, gravity) { - using autoware_universe_utils::gravity; + using autoware::universe_utils::gravity; EXPECT_DOUBLE_EQ(gravity, 9.80665); } diff --git a/common/autoware_universe_utils/test/src/math/test_normalization.cpp b/common/autoware_universe_utils/test/src/math/test_normalization.cpp index 19b8a29019057..ae7f3cd7a7a4c 100644 --- a/common/autoware_universe_utils/test/src/math/test_normalization.cpp +++ b/common/autoware_universe_utils/test/src/math/test_normalization.cpp @@ -18,7 +18,7 @@ TEST(normalization, normalizeDegree) { - using autoware_universe_utils::normalizeDegree; + using autoware::universe_utils::normalizeDegree; // -180 <= deg < 180 { @@ -51,7 +51,7 @@ TEST(normalization, normalizeDegree) TEST(normalization, normalizeRadian) { - using autoware_universe_utils::normalizeRadian; + using autoware::universe_utils::normalizeRadian; // -M_PI <= deg < M_PI { diff --git a/common/autoware_universe_utils/test/src/math/test_range.cpp b/common/autoware_universe_utils/test/src/math/test_range.cpp index 400a6a4dd20c1..12be5b646957b 100644 --- a/common/autoware_universe_utils/test/src/math/test_range.cpp +++ b/common/autoware_universe_utils/test/src/math/test_range.cpp @@ -44,7 +44,7 @@ void expect_eq_vector(const std::vector & input, const std::vector & e TEST(arange_Test, arange_double) { - using autoware_universe_utils::arange; + using autoware::universe_utils::arange; // general cases { @@ -82,7 +82,7 @@ TEST(arange_Test, arange_double) TEST(arange_Test, arange_float) { - using autoware_universe_utils::arange; + using autoware::universe_utils::arange; // general cases { @@ -121,7 +121,7 @@ TEST(arange_Test, arange_float) TEST(arange_Test, arange_int) { - using autoware_universe_utils::arange; + using autoware::universe_utils::arange; // general cases { @@ -154,7 +154,7 @@ TEST(arange_Test, arange_int) TEST(test_linspace, linspace_double) { - using autoware_universe_utils::linspace; + using autoware::universe_utils::linspace; // general cases { @@ -182,7 +182,7 @@ TEST(test_linspace, linspace_double) TEST(test_linspace, linspace_float) { - using autoware_universe_utils::linspace; + using autoware::universe_utils::linspace; // general cases { @@ -211,7 +211,7 @@ TEST(test_linspace, linspace_float) TEST(test_linspace, linspace_int) { - using autoware_universe_utils::linspace; + using autoware::universe_utils::linspace; // general cases { diff --git a/common/autoware_universe_utils/test/src/math/test_trigonometry.cpp b/common/autoware_universe_utils/test/src/math/test_trigonometry.cpp index c4ba81a6b77ff..b55b27a34a6ac 100644 --- a/common/autoware_universe_utils/test/src/math/test_trigonometry.cpp +++ b/common/autoware_universe_utils/test/src/math/test_trigonometry.cpp @@ -21,31 +21,31 @@ TEST(trigonometry, sin) { - float x = 4.f * autoware_universe_utils::pi / 128.f; + float x = 4.f * autoware::universe_utils::pi / 128.f; for (int i = 0; i < 128; i++) { EXPECT_TRUE( std::abs( std::sin(x * static_cast(i)) - - autoware_universe_utils::sin(x * static_cast(i))) < 10e-5); + autoware::universe_utils::sin(x * static_cast(i))) < 10e-5); } } TEST(trigonometry, cos) { - float x = 4.f * autoware_universe_utils::pi / 128.f; + float x = 4.f * autoware::universe_utils::pi / 128.f; for (int i = 0; i < 128; i++) { EXPECT_TRUE( std::abs( std::cos(x * static_cast(i)) - - autoware_universe_utils::cos(x * static_cast(i))) < 10e-5); + autoware::universe_utils::cos(x * static_cast(i))) < 10e-5); } } TEST(trigonometry, sin_and_cos) { - float x = 4.f * autoware_universe_utils::pi / 128.f; + float x = 4.f * autoware::universe_utils::pi / 128.f; for (int i = 0; i < 128; i++) { - const auto sin_and_cos = autoware_universe_utils::sin_and_cos(x * static_cast(i)); + const auto sin_and_cos = autoware::universe_utils::sin_and_cos(x * static_cast(i)); EXPECT_TRUE(std::abs(std::sin(x * static_cast(i)) - sin_and_cos.first) < 10e-7); EXPECT_TRUE(std::abs(std::cos(x * static_cast(i)) - sin_and_cos.second) < 10e-7); } diff --git a/common/autoware_universe_utils/test/src/math/test_unit_conversion.cpp b/common/autoware_universe_utils/test/src/math/test_unit_conversion.cpp index e00b85f9e24f2..605b0e7d3c5a6 100644 --- a/common/autoware_universe_utils/test/src/math/test_unit_conversion.cpp +++ b/common/autoware_universe_utils/test/src/math/test_unit_conversion.cpp @@ -16,11 +16,11 @@ #include -using autoware_universe_utils::pi; +using autoware::universe_utils::pi; TEST(unit_conversion, deg2rad) { - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::deg2rad; EXPECT_DOUBLE_EQ(deg2rad(-720), -4 * pi); EXPECT_DOUBLE_EQ(deg2rad(0), 0); @@ -33,7 +33,7 @@ TEST(unit_conversion, deg2rad) TEST(unit_conversion, rad2deg) { - using autoware_universe_utils::rad2deg; + using autoware::universe_utils::rad2deg; EXPECT_DOUBLE_EQ(rad2deg(-4 * pi), -720); EXPECT_DOUBLE_EQ(rad2deg(0), 0); @@ -46,7 +46,7 @@ TEST(unit_conversion, rad2deg) TEST(unit_conversion, kmph2mps) { - using autoware_universe_utils::kmph2mps; + using autoware::universe_utils::kmph2mps; EXPECT_DOUBLE_EQ(kmph2mps(0), 0); EXPECT_DOUBLE_EQ(kmph2mps(36), 10); @@ -56,7 +56,7 @@ TEST(unit_conversion, kmph2mps) TEST(unit_conversion, mps2kmph) { - using autoware_universe_utils::mps2kmph; + using autoware::universe_utils::mps2kmph; EXPECT_DOUBLE_EQ(mps2kmph(0), 0); EXPECT_DOUBLE_EQ(mps2kmph(10), 36); diff --git a/common/autoware_universe_utils/test/src/ros/test_published_time_publisher.cpp b/common/autoware_universe_utils/test/src/ros/test_published_time_publisher.cpp index 238a97e901611..f9c0bd45c4fb4 100644 --- a/common/autoware_universe_utils/test/src/ros/test_published_time_publisher.cpp +++ b/common/autoware_universe_utils/test/src/ros/test_published_time_publisher.cpp @@ -24,7 +24,7 @@ class PublishedTimePublisherWithSubscriptionTest : public ::testing::Test { protected: std::shared_ptr node_{nullptr}; - std::shared_ptr published_time_publisher_ptr_{ + std::shared_ptr published_time_publisher_ptr_{ nullptr}; std::shared_ptr> first_test_publisher_ptr_{nullptr}; @@ -70,7 +70,7 @@ class PublishedTimePublisherWithSubscriptionTest : public ::testing::Test // Create a PublishedTimePublisher published_time_publisher_ptr_ = - std::make_shared(node_.get()); + std::make_shared(node_.get()); // Create the first subscriber first_test_subscriber_ptr_ = @@ -98,7 +98,7 @@ class PublishedTimePublisherWithoutSubscriptionTest : public ::testing::Test { protected: std::shared_ptr node_{nullptr}; - std::shared_ptr published_time_publisher_ptr_{ + std::shared_ptr published_time_publisher_ptr_{ nullptr}; std::shared_ptr> first_test_publisher_ptr_{nullptr}; @@ -135,7 +135,7 @@ class PublishedTimePublisherWithoutSubscriptionTest : public ::testing::Test // Create a PublishedTimePublisher published_time_publisher_ptr_ = - std::make_shared(node_.get()); + std::make_shared(node_.get()); rclcpp::spin_some(node_); } diff --git a/common/autoware_universe_utils/test/src/system/test_stop_watch.cpp b/common/autoware_universe_utils/test/src/system/test_stop_watch.cpp index 6bf9857595f98..55e10e9bd2ffd 100644 --- a/common/autoware_universe_utils/test/src/system/test_stop_watch.cpp +++ b/common/autoware_universe_utils/test/src/system/test_stop_watch.cpp @@ -21,7 +21,7 @@ TEST(system, StopWatch_sec) { - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::StopWatch; StopWatch stop_watch; @@ -50,7 +50,7 @@ TEST(system, StopWatch_sec) TEST(system, StopWatch_msec) { - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::StopWatch; StopWatch stop_watch; diff --git a/common/autoware_universe_utils/test/src/transform/test_transform.cpp b/common/autoware_universe_utils/test/src/transform/test_transform.cpp index e659ec0f2a749..2935600c9f446 100644 --- a/common/autoware_universe_utils/test/src/transform/test_transform.cpp +++ b/common/autoware_universe_utils/test/src/transform/test_transform.cpp @@ -31,7 +31,7 @@ TEST(system, transform_point_cloud) 42301.179688, -0.001429, -0.017543, 0.999845, -3.157415, 0.000000, 0.000000, 0.000000, 1.000000; pcl::PointCloud cloud_transformed; - autoware_universe_utils::transformPointCloud(cloud, cloud_transformed, transform); + autoware::universe_utils::transformPointCloud(cloud, cloud_transformed, transform); pcl::PointXYZI pt1_gt(89603.187500, 42270.878906, -13.056946, 4); @@ -53,8 +53,8 @@ TEST(system, empty_point_cloud) pcl::PointCloud cloud_transformed; EXPECT_NO_THROW( - autoware_universe_utils::transformPointCloud(cloud, cloud_transformed, transform)); + autoware::universe_utils::transformPointCloud(cloud, cloud_transformed, transform)); EXPECT_NO_FATAL_FAILURE( - autoware_universe_utils::transformPointCloud(cloud, cloud_transformed, transform)); + autoware::universe_utils::transformPointCloud(cloud, cloud_transformed, transform)); EXPECT_EQ(cloud_transformed.size(), 0ul); } diff --git a/common/geography_utils/package.xml b/common/geography_utils/package.xml index 414364e36ad29..bf2356a7fabf5 100644 --- a/common/geography_utils/package.xml +++ b/common/geography_utils/package.xml @@ -10,10 +10,10 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension geographic_msgs geographiclib geometry_msgs - lanelet2_extension lanelet2_io tier4_map_msgs diff --git a/common/geography_utils/src/lanelet2_projector.cpp b/common/geography_utils/src/lanelet2_projector.cpp index 532606248cd1f..ea32e08cd157a 100644 --- a/common/geography_utils/src/lanelet2_projector.cpp +++ b/common/geography_utils/src/lanelet2_projector.cpp @@ -13,9 +13,9 @@ // limitations under the License. #include +#include +#include #include -#include -#include #include diff --git a/common/geography_utils/src/projection.cpp b/common/geography_utils/src/projection.cpp index ac9ce19052702..d32252c28f5c0 100644 --- a/common/geography_utils/src/projection.cpp +++ b/common/geography_utils/src/projection.cpp @@ -13,9 +13,9 @@ // limitations under the License. #include +#include #include #include -#include namespace geography_utils { diff --git a/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator.hpp b/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator.hpp index 370765a81c743..69c8840b39421 100644 --- a/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator.hpp +++ b/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator.hpp @@ -25,7 +25,7 @@ namespace goal_distance_calculator { -using autoware_universe_utils::PoseDeviation; +using autoware::universe_utils::PoseDeviation; struct Param { diff --git a/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator_node.hpp b/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator_node.hpp index c1154884e8340..602688ffe51d7 100644 --- a/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator_node.hpp +++ b/common/goal_distance_calculator/include/goal_distance_calculator/goal_distance_calculator_node.hpp @@ -18,6 +18,7 @@ #include "goal_distance_calculator/goal_distance_calculator.hpp" #include +#include #include #include @@ -44,25 +45,18 @@ class GoalDistanceCalculatorNode : public rclcpp::Node private: // Subscriber - rclcpp::Subscription::SharedPtr sub_initial_pose_; - autoware_universe_utils::SelfPoseListener self_pose_listener_; - rclcpp::Subscription::SharedPtr sub_route_; - - // Data Buffer - geometry_msgs::msg::PoseStamped::ConstSharedPtr current_pose_; - autoware_planning_msgs::msg::LaneletRoute::SharedPtr route_; - - // Callback - void onRoute(const autoware_planning_msgs::msg::LaneletRoute::ConstSharedPtr & msg); + autoware::universe_utils::SelfPoseListener self_pose_listener_; + autoware::universe_utils::InterProcessPollingSubscriber + sub_route_{this, "/planning/mission_planning/route"}; // Publisher - autoware_universe_utils::DebugPublisher debug_publisher_; + autoware::universe_utils::DebugPublisher debug_publisher_; // Timer rclcpp::TimerBase::SharedPtr timer_; - bool isDataReady(); - bool isDataTimeout(); + bool tryGetCurrentPose(geometry_msgs::msg::PoseStamped::ConstSharedPtr current_pose); + bool tryGetRoute(autoware_planning_msgs::msg::LaneletRoute::ConstSharedPtr route); void onTimer(); // Parameter @@ -70,8 +64,6 @@ class GoalDistanceCalculatorNode : public rclcpp::Node Param param_; // Core - Input input_; - Output output_; std::unique_ptr goal_distance_calculator_; }; } // namespace goal_distance_calculator diff --git a/common/goal_distance_calculator/src/goal_distance_calculator.cpp b/common/goal_distance_calculator/src/goal_distance_calculator.cpp index 5491fe96c0848..a577d43675224 100755 --- a/common/goal_distance_calculator/src/goal_distance_calculator.cpp +++ b/common/goal_distance_calculator/src/goal_distance_calculator.cpp @@ -21,7 +21,7 @@ Output GoalDistanceCalculator::update(const Input & input) Output output{}; output.goal_deviation = - autoware_universe_utils::calcPoseDeviation(input.route->goal_pose, input.current_pose->pose); + autoware::universe_utils::calcPoseDeviation(input.route->goal_pose, input.current_pose->pose); return output; } diff --git a/common/goal_distance_calculator/src/goal_distance_calculator_node.cpp b/common/goal_distance_calculator/src/goal_distance_calculator_node.cpp index 7f4346dac63dc..24d54ee2fcf87 100644 --- a/common/goal_distance_calculator/src/goal_distance_calculator_node.cpp +++ b/common/goal_distance_calculator/src/goal_distance_calculator_node.cpp @@ -33,12 +33,6 @@ GoalDistanceCalculatorNode::GoalDistanceCalculatorNode(const rclcpp::NodeOptions self_pose_listener_(this), debug_publisher_(this, "goal_distance_calculator") { - using std::placeholders::_1; - - static constexpr std::size_t queue_size = 1; - rclcpp::QoS durable_qos(queue_size); - durable_qos.transient_local(); - // Node Parameter node_param_.update_rate = declare_parameter("update_rate"); node_param_.oneshot = declare_parameter("oneshot"); @@ -47,11 +41,6 @@ GoalDistanceCalculatorNode::GoalDistanceCalculatorNode(const rclcpp::NodeOptions goal_distance_calculator_ = std::make_unique(); goal_distance_calculator_->setParam(param_); - // Subscriber - sub_route_ = create_subscription( - "/planning/mission_planning/route", queue_size, - [&](const autoware_planning_msgs::msg::LaneletRoute::SharedPtr msg_ptr) { route_ = msg_ptr; }); - // Wait for first self pose self_pose_listener_.waitForFirstPose(); @@ -62,53 +51,54 @@ GoalDistanceCalculatorNode::GoalDistanceCalculatorNode(const rclcpp::NodeOptions goal_distance_calculator_ = std::make_unique(); } -bool GoalDistanceCalculatorNode::isDataReady() +bool GoalDistanceCalculatorNode::tryGetCurrentPose( + geometry_msgs::msg::PoseStamped::ConstSharedPtr current_pose) { - if (!current_pose_) { - RCLCPP_INFO_THROTTLE( - this->get_logger(), *this->get_clock(), 5000, "waiting for current_pose..."); - return false; - } - - if (!route_) { - RCLCPP_INFO_THROTTLE(this->get_logger(), *this->get_clock(), 5000, "waiting for route msg..."); - return false; - } - + auto current_pose_tmp = self_pose_listener_.getCurrentPose(); + if (!current_pose_tmp) return false; + current_pose = current_pose_tmp; return true; } -bool GoalDistanceCalculatorNode::isDataTimeout() +bool GoalDistanceCalculatorNode::tryGetRoute( + autoware_planning_msgs::msg::LaneletRoute::ConstSharedPtr route) { - constexpr double th_pose_timeout = 1.0; - const auto pose_time_diff = rclcpp::Time(current_pose_->header.stamp) - now(); - if (pose_time_diff.seconds() > th_pose_timeout) { - RCLCPP_WARN_THROTTLE(this->get_logger(), *this->get_clock(), 1000, "pose is timeout..."); - return true; - } - return false; + auto route_tmp = sub_route_.takeData(); + if (!route_tmp) return false; + route = route_tmp; + return true; } void GoalDistanceCalculatorNode::onTimer() { - current_pose_ = self_pose_listener_.getCurrentPose(); + Input input = Input(); - if (!isDataReady()) { + if (!tryGetCurrentPose(input.current_pose)) { + RCLCPP_INFO_THROTTLE( + this->get_logger(), *this->get_clock(), 5000, "waiting for current_pose..."); return; } - if (isDataTimeout()) { + if (!tryGetRoute(input.route)) { + RCLCPP_INFO_THROTTLE(this->get_logger(), *this->get_clock(), 5000, "waiting for route msg..."); return; } - input_.current_pose = current_pose_; - input_.route = route_; + // Check pose timeout + { + constexpr double th_pose_timeout = 1.0; + const auto pose_time_diff = rclcpp::Time(input.current_pose->header.stamp) - now(); + if (pose_time_diff.seconds() > th_pose_timeout) { + RCLCPP_WARN_THROTTLE(this->get_logger(), *this->get_clock(), 1000, "pose is timeout..."); + return; + } + } - output_ = goal_distance_calculator_->update(input_); + Output output = goal_distance_calculator_->update(input); { - using autoware_universe_utils::rad2deg; - const auto & deviation = output_.goal_deviation; + using autoware::universe_utils::rad2deg; + const auto & deviation = output.goal_deviation; debug_publisher_.publish( "deviation/lateral", deviation.lateral); diff --git a/common/interpolation/include/interpolation/spline_interpolation_points_2d.hpp b/common/interpolation/include/interpolation/spline_interpolation_points_2d.hpp index b2fc5c6c36e54..398d841c54710 100644 --- a/common/interpolation/include/interpolation/spline_interpolation_points_2d.hpp +++ b/common/interpolation/include/interpolation/spline_interpolation_points_2d.hpp @@ -53,7 +53,7 @@ class SplineInterpolationPoints2d { std::vector points_inner; for (const auto & p : points) { - points_inner.push_back(autoware_universe_utils::getPoint(p)); + points_inner.push_back(autoware::universe_utils::getPoint(p)); } calcSplineCoefficientsInner(points_inner); } diff --git a/common/interpolation/src/spline_interpolation_points_2d.cpp b/common/interpolation/src/spline_interpolation_points_2d.cpp index 11bc407e4c511..4d6d1639f2ac7 100644 --- a/common/interpolation/src/spline_interpolation_points_2d.cpp +++ b/common/interpolation/src/spline_interpolation_points_2d.cpp @@ -118,7 +118,7 @@ geometry_msgs::msg::Pose SplineInterpolationPoints2d::getSplineInterpolatedPose( geometry_msgs::msg::Pose pose; pose.position = getSplineInterpolatedPoint(idx, s); pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(getSplineInterpolatedYaw(idx, s)); + autoware::universe_utils::createQuaternionFromYaw(getSplineInterpolatedYaw(idx, s)); return pose; } diff --git a/common/interpolation/test/src/test_spline_interpolation_points_2d.cpp b/common/interpolation/test/src/test_spline_interpolation_points_2d.cpp index 2d582e2318600..4013832220cd8 100644 --- a/common/interpolation/test/src/test_spline_interpolation_points_2d.cpp +++ b/common/interpolation/test/src/test_spline_interpolation_points_2d.cpp @@ -25,7 +25,7 @@ constexpr double epsilon = 1e-6; TEST(spline_interpolation, splineYawFromPoints) { - using autoware_universe_utils::createPoint; + using autoware::universe_utils::createPoint; { // straight std::vector points; @@ -96,7 +96,7 @@ TEST(spline_interpolation, splineYawFromPoints) TEST(spline_interpolation, SplineInterpolationPoints2d) { - using autoware_universe_utils::createPoint; + using autoware::universe_utils::createPoint; // curve std::vector points; @@ -199,8 +199,8 @@ TEST(spline_interpolation, SplineInterpolationPoints2d) TEST(spline_interpolation, SplineInterpolationPoints2dPolymorphism) { + using autoware::universe_utils::createPoint; using autoware_planning_msgs::msg::TrajectoryPoint; - using autoware_universe_utils::createPoint; std::vector points; points.push_back(createPoint(-2.0, -10.0, 0.0)); diff --git a/common/object_recognition_utils/include/object_recognition_utils/matching.hpp b/common/object_recognition_utils/include/object_recognition_utils/matching.hpp index eb8a7b81dbfb9..ae50227df1166 100644 --- a/common/object_recognition_utils/include/object_recognition_utils/matching.hpp +++ b/common/object_recognition_utils/include/object_recognition_utils/matching.hpp @@ -28,7 +28,7 @@ namespace object_recognition_utils { -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::Polygon2d; // minimum area to avoid division by zero static const double MIN_AREA = 1e-6; @@ -37,7 +37,7 @@ inline double getConvexShapeArea(const Polygon2d & source_polygon, const Polygon boost::geometry::model::multi_polygon union_polygons; boost::geometry::union_(source_polygon, target_polygon, union_polygons); - autoware_universe_utils::Polygon2d hull; + autoware::universe_utils::Polygon2d hull; boost::geometry::convex_hull(union_polygons, hull); return boost::geometry::area(hull); } @@ -67,9 +67,9 @@ inline double getUnionArea(const Polygon2d & source_polygon, const Polygon2d & t template double get2dIoU(const T1 source_object, const T2 target_object, const double min_union_area = 0.01) { - const auto source_polygon = autoware_universe_utils::toPolygon2d(source_object); + const auto source_polygon = autoware::universe_utils::toPolygon2d(source_object); if (boost::geometry::area(source_polygon) < MIN_AREA) return 0.0; - const auto target_polygon = autoware_universe_utils::toPolygon2d(target_object); + const auto target_polygon = autoware::universe_utils::toPolygon2d(target_object); if (boost::geometry::area(target_polygon) < MIN_AREA) return 0.0; const double intersection_area = getIntersectionArea(source_polygon, target_polygon); @@ -84,9 +84,9 @@ double get2dIoU(const T1 source_object, const T2 target_object, const double min template double get2dGeneralizedIoU(const T1 & source_object, const T2 & target_object) { - const auto source_polygon = autoware_universe_utils::toPolygon2d(source_object); + const auto source_polygon = autoware::universe_utils::toPolygon2d(source_object); if (boost::geometry::area(source_polygon) < MIN_AREA) return 0.0; - const auto target_polygon = autoware_universe_utils::toPolygon2d(target_object); + const auto target_polygon = autoware::universe_utils::toPolygon2d(target_object); if (boost::geometry::area(target_polygon) < MIN_AREA) return 0.0; const double intersection_area = getIntersectionArea(source_polygon, target_polygon); @@ -100,10 +100,10 @@ double get2dGeneralizedIoU(const T1 & source_object, const T2 & target_object) template double get2dPrecision(const T1 source_object, const T2 target_object) { - const auto source_polygon = autoware_universe_utils::toPolygon2d(source_object); + const auto source_polygon = autoware::universe_utils::toPolygon2d(source_object); const double source_area = boost::geometry::area(source_polygon); if (source_area < MIN_AREA) return 0.0; - const auto target_polygon = autoware_universe_utils::toPolygon2d(target_object); + const auto target_polygon = autoware::universe_utils::toPolygon2d(target_object); if (boost::geometry::area(target_polygon) < MIN_AREA) return 0.0; const double intersection_area = getIntersectionArea(source_polygon, target_polygon); @@ -115,9 +115,9 @@ double get2dPrecision(const T1 source_object, const T2 target_object) template double get2dRecall(const T1 source_object, const T2 target_object) { - const auto source_polygon = autoware_universe_utils::toPolygon2d(source_object); + const auto source_polygon = autoware::universe_utils::toPolygon2d(source_object); if (boost::geometry::area(source_polygon) < MIN_AREA) return 0.0; - const auto target_polygon = autoware_universe_utils::toPolygon2d(target_object); + const auto target_polygon = autoware::universe_utils::toPolygon2d(target_object); const double target_area = boost::geometry::area(target_polygon); if (target_area < MIN_AREA) return 0.0; diff --git a/common/object_recognition_utils/src/predicted_path_utils.cpp b/common/object_recognition_utils/src/predicted_path_utils.cpp index e748d1165bef7..e26c9e6a7e1ea 100644 --- a/common/object_recognition_utils/src/predicted_path_utils.cpp +++ b/common/object_recognition_utils/src/predicted_path_utils.cpp @@ -38,7 +38,7 @@ boost::optional calcInterpolatedPose( if (relative_time - epsilon < time_step * path_idx) { const double offset = relative_time - time_step * (path_idx - 1); const double ratio = std::clamp(offset / time_step, 0.0, 1.0); - return autoware_universe_utils::calcInterpolatedPose(prev_pt, pt, ratio, false); + return autoware::universe_utils::calcInterpolatedPose(prev_pt, pt, ratio, false); } } @@ -90,7 +90,7 @@ autoware_perception_msgs::msg::PredictedPath resamplePredictedPath( // Set Position for (size_t i = 0; i < resampled_size; ++i) { - const auto p = autoware_universe_utils::createPoint( + const auto p = autoware::universe_utils::createPoint( interpolated_x.at(i), interpolated_y.at(i), interpolated_z.at(i)); resampled_path.path.at(i).position = p; resampled_path.path.at(i).orientation = interpolated_quat.at(i); diff --git a/common/object_recognition_utils/test/src/test_matching.cpp b/common/object_recognition_utils/test/src/test_matching.cpp index 1481492e40e71..6005ac8d1efbc 100644 --- a/common/object_recognition_utils/test/src/test_matching.cpp +++ b/common/object_recognition_utils/test/src/test_matching.cpp @@ -19,8 +19,8 @@ #include -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Point3d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Point3d; constexpr double epsilon = 1e-06; @@ -30,7 +30,7 @@ geometry_msgs::msg::Pose createPose(const double x, const double y, const double { geometry_msgs::msg::Pose p; p.position = geometry_msgs::build().x(x).y(y).z(0.0); - p.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + p.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); return p; } } // namespace diff --git a/common/object_recognition_utils/test/src/test_predicted_path_utils.cpp b/common/object_recognition_utils/test/src/test_predicted_path_utils.cpp index 94136c9c4da9c..305a1173acf12 100644 --- a/common/object_recognition_utils/test/src/test_predicted_path_utils.cpp +++ b/common/object_recognition_utils/test/src/test_predicted_path_utils.cpp @@ -18,17 +18,17 @@ #include -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Point3d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Point3d; constexpr double epsilon = 1e-06; namespace { +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromRPY; +using autoware::universe_utils::transformPoint; using autoware_perception_msgs::msg::PredictedPath; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromRPY; -using autoware_universe_utils::transformPoint; geometry_msgs::msg::Pose createPose( double x, double y, double z, double roll, double pitch, double yaw) @@ -62,9 +62,9 @@ PredictedPath createTestPredictedPath( TEST(predicted_path_utils, testCalcInterpolatedPose) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::createQuaternionFromYaw; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::createQuaternionFromYaw; + using autoware::universe_utils::deg2rad; using object_recognition_utils::calcInterpolatedPose; const auto path = createTestPredictedPath(100, 0.1, 1.0); @@ -128,9 +128,9 @@ TEST(predicted_path_utils, testCalcInterpolatedPose) TEST(predicted_path_utils, resamplePredictedPath_by_vector) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::createQuaternionFromYaw; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::createQuaternionFromYaw; + using autoware::universe_utils::deg2rad; using object_recognition_utils::resamplePredictedPath; const auto path = createTestPredictedPath(10, 1.0, 1.0); @@ -205,9 +205,9 @@ TEST(predicted_path_utils, resamplePredictedPath_by_vector) TEST(predicted_path_utils, resamplePredictedPath_by_sampling_time) { - using autoware_universe_utils::createQuaternionFromRPY; - using autoware_universe_utils::createQuaternionFromYaw; - using autoware_universe_utils::deg2rad; + using autoware::universe_utils::createQuaternionFromRPY; + using autoware::universe_utils::createQuaternionFromYaw; + using autoware::universe_utils::deg2rad; using object_recognition_utils::resamplePredictedPath; const auto path = createTestPredictedPath(10, 1.0, 1.0); diff --git a/common/path_distance_calculator/src/path_distance_calculator.cpp b/common/path_distance_calculator/src/path_distance_calculator.cpp index b503d926df53b..833c806cdd6db 100644 --- a/common/path_distance_calculator/src/path_distance_calculator.cpp +++ b/common/path_distance_calculator/src/path_distance_calculator.cpp @@ -25,15 +25,12 @@ PathDistanceCalculator::PathDistanceCalculator(const rclcpp::NodeOptions & options) : Node("path_distance_calculator", options), self_pose_listener_(this) { - sub_path_ = create_subscription( - "~/input/path", rclcpp::QoS(1), - [this](const autoware_planning_msgs::msg::Path::SharedPtr msg) { path_ = msg; }); pub_dist_ = create_publisher("~/output/distance", rclcpp::QoS(1)); using std::chrono_literals::operator""s; timer_ = rclcpp::create_timer(this, get_clock(), 1s, [this]() { - const auto path = path_; + const auto path = sub_path_.takeData(); const auto pose = self_pose_listener_.getCurrentPose(); if (!pose) { RCLCPP_WARN_THROTTLE(get_logger(), *get_clock(), 5000, "no pose"); @@ -48,7 +45,7 @@ PathDistanceCalculator::PathDistanceCalculator(const rclcpp::NodeOptions & optio return; } - const double distance = autoware_motion_utils::calcSignedArcLength( + const double distance = autoware::motion_utils::calcSignedArcLength( path->points, pose->pose.position, path->points.size() - 1); tier4_debug_msgs::msg::Float64Stamped msg; diff --git a/common/path_distance_calculator/src/path_distance_calculator.hpp b/common/path_distance_calculator/src/path_distance_calculator.hpp index ceef07ca268c4..6624f316401df 100644 --- a/common/path_distance_calculator/src/path_distance_calculator.hpp +++ b/common/path_distance_calculator/src/path_distance_calculator.hpp @@ -15,6 +15,7 @@ #ifndef PATH_DISTANCE_CALCULATOR_HPP_ #define PATH_DISTANCE_CALCULATOR_HPP_ +#include #include #include @@ -27,11 +28,11 @@ class PathDistanceCalculator : public rclcpp::Node explicit PathDistanceCalculator(const rclcpp::NodeOptions & options); private: - rclcpp::Subscription::SharedPtr sub_path_; + autoware::universe_utils::InterProcessPollingSubscriber + sub_path_{this, "~/input/path"}; rclcpp::Publisher::SharedPtr pub_dist_; rclcpp::TimerBase::SharedPtr timer_; - autoware_universe_utils::SelfPoseListener self_pose_listener_; - autoware_planning_msgs::msg::Path::SharedPtr path_; + autoware::universe_utils::SelfPoseListener self_pose_listener_; }; #endif // PATH_DISTANCE_CALCULATOR_HPP_ diff --git a/common/tensorrt_common/include/tensorrt_common/tensorrt_common.hpp b/common/tensorrt_common/include/tensorrt_common/tensorrt_common.hpp index aabaea7ca6339..6691c1fb9e97d 100644 --- a/common/tensorrt_common/include/tensorrt_common/tensorrt_common.hpp +++ b/common/tensorrt_common/include/tensorrt_common/tensorrt_common.hpp @@ -15,7 +15,9 @@ #ifndef TENSORRT_COMMON__TENSORRT_COMMON_HPP_ #define TENSORRT_COMMON__TENSORRT_COMMON_HPP_ +#ifndef YOLOX_STANDALONE #include +#endif #include #include @@ -86,6 +88,7 @@ struct BuildConfig profile_per_layer(profile_per_layer), clip_value(clip_value) { +#ifndef YOLOX_STANDALONE if ( std::find(valid_calib_type.begin(), valid_calib_type.end(), calib_type_str) == valid_calib_type.end()) { @@ -95,6 +98,7 @@ struct BuildConfig << "Default calibration type will be used: MinMax" << std::endl; std::cerr << message.str(); } +#endif } }; diff --git a/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.cpp b/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.cpp index bd5c3349d3c35..16c3f4b5def96 100644 --- a/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.cpp +++ b/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.cpp @@ -53,7 +53,7 @@ #include #include #include -#include +#include #include namespace tier4_camera_view_rviz_plugin diff --git a/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.hpp b/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.hpp index 3c0091740bd59..8ca2d27388413 100644 --- a/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.hpp +++ b/common/tier4_camera_view_rviz_plugin/src/bird_eye_view_controller.hpp @@ -46,7 +46,7 @@ #include "rviz_common/frame_position_tracking_view_controller.hpp" #include -#include +#include namespace rviz_common { @@ -72,7 +72,7 @@ class BirdEyeViewController : public rviz_common::FramePositionTrackingViewContr void onInitialize() override; - void handleMouseEvent(rviz_common::ViewportMouseEvent & evt) override; + void handleMouseEvent(rviz_common::ViewportMouseEvent & event) override; void lookAt(const Ogre::Vector3 & point) override; @@ -96,7 +96,7 @@ class BirdEyeViewController : public rviz_common::FramePositionTrackingViewContr void orientCamera(); void setPosition(const Ogre::Vector3 & pos_rel_target); - void move_camera(float x, float y); + void move_camera(float dx, float dy); void updateCamera(); Ogre::SceneNode * getCameraParent(Ogre::Camera * camera); diff --git a/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.cpp b/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.cpp index 9f4306a9d982a..ed47a15270c3a 100644 --- a/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.cpp +++ b/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.cpp @@ -56,7 +56,7 @@ #include #include #include -#include +#include #include #include diff --git a/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.hpp b/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.hpp index fef036ceccda3..d80fa4502a48f 100644 --- a/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.hpp +++ b/common/tier4_camera_view_rviz_plugin/src/third_person_view_controller.hpp @@ -45,7 +45,7 @@ #include "rviz_default_plugins/view_controllers/orbit/orbit_view_controller.hpp" -#include +#include #include @@ -68,7 +68,7 @@ class ThirdPersonViewController : public rviz_default_plugins::view_controllers: public: void onInitialize() override; - void handleMouseEvent(rviz_common::ViewportMouseEvent & evt) override; + void handleMouseEvent(rviz_common::ViewportMouseEvent & event) override; void lookAt(const Ogre::Vector3 & point) override; diff --git a/common/tier4_perception_rviz_plugin/src/tools/util.hpp b/common/tier4_perception_rviz_plugin/src/tools/util.hpp index 2126af001aeb5..bf951aad5006a 100644 --- a/common/tier4_perception_rviz_plugin/src/tools/util.hpp +++ b/common/tier4_perception_rviz_plugin/src/tools/util.hpp @@ -17,7 +17,7 @@ #include -#include +#include #include diff --git a/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display.hpp b/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display.hpp index 6d7109fbfa061..dc0cb0eb5188a 100644 --- a/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display.hpp +++ b/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display.hpp @@ -61,23 +61,23 @@ void visualizeBound( const auto [normal_vector_angle, adaptive_width] = [&]() -> std::pair { if (i == 0) { return std::make_pair( - autoware_universe_utils::calcAzimuthAngle(bound.at(i), bound.at(i + 1)) + M_PI_2, width); + autoware::universe_utils::calcAzimuthAngle(bound.at(i), bound.at(i + 1)) + M_PI_2, width); } if (i == bound.size() - 1) { return std::make_pair( - autoware_universe_utils::calcAzimuthAngle(bound.at(i - 1), bound.at(i)) + M_PI_2, width); + autoware::universe_utils::calcAzimuthAngle(bound.at(i - 1), bound.at(i)) + M_PI_2, width); } const auto & prev_p = bound.at(i - 1); const auto & curr_p = bound.at(i); const auto & next_p = bound.at(i + 1); - const float curr_to_prev_angle = autoware_universe_utils::calcAzimuthAngle(curr_p, prev_p); - const float curr_to_next_angle = autoware_universe_utils::calcAzimuthAngle(curr_p, next_p); + const float curr_to_prev_angle = autoware::universe_utils::calcAzimuthAngle(curr_p, prev_p); + const float curr_to_next_angle = autoware::universe_utils::calcAzimuthAngle(curr_p, next_p); const float normal_vector_angle = (curr_to_prev_angle + curr_to_next_angle) / 2.0; const float diff_angle = - autoware_universe_utils::normalizeRadian(normal_vector_angle - curr_to_next_angle); - if (diff_angle == 0.0) { + autoware::universe_utils::normalizeRadian(normal_vector_angle - curr_to_next_angle); + if (diff_angle <= 1e-7 && diff_angle >= -1e-7) { return std::make_pair(normal_vector_angle, width); } diff --git a/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display_base.hpp b/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display_base.hpp index 8edae446c46b0..25f890799465d 100644 --- a/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display_base.hpp +++ b/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/path/display_base.hpp @@ -86,8 +86,8 @@ bool validateFloats(const typename T::ConstSharedPtr & msg_ptr) { for (auto && path_point : msg_ptr->points) { if ( - !rviz_common::validateFloats(autoware_universe_utils::getPose(path_point)) && - !rviz_common::validateFloats(autoware_universe_utils::getLongitudinalVelocity(path_point))) { + !rviz_common::validateFloats(autoware::universe_utils::getPose(path_point)) && + !rviz_common::validateFloats(autoware::universe_utils::getLongitudinalVelocity(path_point))) { return false; } } @@ -358,8 +358,8 @@ class AutowarePathBaseDisplay : public rviz_common::MessageFilterDisplay for (size_t point_idx = 0; point_idx < msg_ptr->points.size(); point_idx++) { const auto & path_point = msg_ptr->points.at(point_idx); - const auto & pose = autoware_universe_utils::getPose(path_point); - const auto & velocity = autoware_universe_utils::getLongitudinalVelocity(path_point); + const auto & pose = autoware::universe_utils::getPose(path_point); + const auto & velocity = autoware::universe_utils::getLongitudinalVelocity(path_point); // path if (property_path_view_.getBool()) { @@ -454,9 +454,9 @@ class AutowarePathBaseDisplay : public rviz_common::MessageFilterDisplay (point_idx != msg_ptr->points.size() - 1) ? point_idx + 1 : point_idx; const auto & prev_path_pos = - autoware_universe_utils::getPose(msg_ptr->points.at(prev_idx)).position; + autoware::universe_utils::getPose(msg_ptr->points.at(prev_idx)).position; const auto & next_path_pos = - autoware_universe_utils::getPose(msg_ptr->points.at(next_idx)).position; + autoware::universe_utils::getPose(msg_ptr->points.at(next_idx)).position; Ogre::Vector3 position; position.x = pose.position.x; @@ -467,7 +467,7 @@ class AutowarePathBaseDisplay : public rviz_common::MessageFilterDisplay rviz_rendering::MovableText * text = slope_texts_.at(point_idx); const double slope = - autoware_universe_utils::calcElevationAngle(prev_path_pos, next_path_pos); + autoware::universe_utils::calcElevationAngle(prev_path_pos, next_path_pos); std::stringstream ss; ss << std::fixed << std::setprecision(2) << slope; @@ -511,7 +511,7 @@ class AutowarePathBaseDisplay : public rviz_common::MessageFilterDisplay for (size_t p_idx = 0; p_idx < msg_ptr->points.size(); p_idx++) { const auto & point = msg_ptr->points.at(p_idx); - const auto & pose = autoware_universe_utils::getPose(point); + const auto & pose = autoware::universe_utils::getPose(point); // footprint if (property_footprint_view_.getBool()) { Ogre::ColourValue color; diff --git a/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/utils.hpp b/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/utils.hpp index c82f5b5df3885..7e99af8b9efb6 100644 --- a/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/utils.hpp +++ b/common/tier4_planning_rviz_plugin/include/tier4_planning_rviz_plugin/utils.hpp @@ -29,7 +29,7 @@ bool isDrivingForward(const T points_with_twist, size_t target_idx) // 1. check velocity const double target_velocity = - autoware_universe_utils::getLongitudinalVelocity(points_with_twist.at(target_idx)); + autoware::universe_utils::getLongitudinalVelocity(points_with_twist.at(target_idx)); if (epsilon < target_velocity) { return true; } else if (target_velocity < -epsilon) { @@ -46,13 +46,13 @@ bool isDrivingForward(const T points_with_twist, size_t target_idx) const size_t first_idx = is_last_point ? target_idx - 1 : target_idx; const size_t second_idx = is_last_point ? target_idx : target_idx + 1; - const auto first_pose = autoware_universe_utils::getPose(points_with_twist.at(first_idx)); - const auto second_pose = autoware_universe_utils::getPose(points_with_twist.at(second_idx)); + const auto first_pose = autoware::universe_utils::getPose(points_with_twist.at(first_idx)); + const auto second_pose = autoware::universe_utils::getPose(points_with_twist.at(second_idx)); const double first_traj_yaw = tf2::getYaw(first_pose.orientation); const double driving_direction_yaw = - autoware_universe_utils::calcAzimuthAngle(first_pose.position, second_pose.position); + autoware::universe_utils::calcAzimuthAngle(first_pose.position, second_pose.position); if ( - std::abs(autoware_universe_utils::normalizeRadian(first_traj_yaw - driving_direction_yaw)) < + std::abs(autoware::universe_utils::normalizeRadian(first_traj_yaw - driving_direction_yaw)) < M_PI_2) { return true; } diff --git a/common/tier4_traffic_light_rviz_plugin/package.xml b/common/tier4_traffic_light_rviz_plugin/package.xml index b123f8e2bdc3c..8f2b075c8b090 100644 --- a/common/tier4_traffic_light_rviz_plugin/package.xml +++ b/common/tier4_traffic_light_rviz_plugin/package.xml @@ -10,9 +10,9 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs - lanelet2_extension libqt5-core libqt5-gui libqt5-widgets diff --git a/common/tier4_traffic_light_rviz_plugin/src/traffic_light_publish_panel.cpp b/common/tier4_traffic_light_rviz_plugin/src/traffic_light_publish_panel.cpp index db33abd72283d..2165587493a7a 100644 --- a/common/tier4_traffic_light_rviz_plugin/src/traffic_light_publish_panel.cpp +++ b/common/tier4_traffic_light_rviz_plugin/src/traffic_light_publish_panel.cpp @@ -22,9 +22,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.cpp b/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.cpp index a77e5769f7ff8..1d884d01065fa 100644 --- a/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.cpp +++ b/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.cpp @@ -231,14 +231,14 @@ void AccelerationMeterDisplay::updateVisualization() inner_arc_.y0 = line_width_ / 2.0; inner_arc_.x1 = w; inner_arc_.y1 = h; - inner_arc_.start_angle = autoware_universe_utils::rad2deg(min_range_theta - M_PI); - inner_arc_.end_angle = autoware_universe_utils::rad2deg(max_range_theta - min_range_theta); + inner_arc_.start_angle = autoware::universe_utils::rad2deg(min_range_theta - M_PI); + inner_arc_.end_angle = autoware::universe_utils::rad2deg(max_range_theta - min_range_theta); outer_arc_.x0 = w * 3 / 8; outer_arc_.y0 = h * 3 / 8; outer_arc_.x1 = w / 4; outer_arc_.y1 = h / 4; - outer_arc_.start_angle = autoware_universe_utils::rad2deg(min_range_theta - M_PI); - outer_arc_.end_angle = autoware_universe_utils::rad2deg(max_range_theta - min_range_theta); + outer_arc_.start_angle = autoware::universe_utils::rad2deg(min_range_theta - M_PI); + outer_arc_.end_angle = autoware::universe_utils::rad2deg(max_range_theta - min_range_theta); } } // namespace rviz_plugins diff --git a/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.hpp b/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.hpp index 86adc54306262..03fef97f536a5 100644 --- a/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.hpp +++ b/common/tier4_vehicle_rviz_plugin/src/tools/acceleration_meter.hpp @@ -67,8 +67,8 @@ private Q_SLOTS: private: static constexpr float meter_min_acceleration_ = -10.0f; static constexpr float meter_max_acceleration_ = 10.0f; - static constexpr float meter_min_angle_ = autoware_universe_utils::deg2rad(40.f); - static constexpr float meter_max_angle_ = autoware_universe_utils::deg2rad(320.f); + static constexpr float meter_min_angle_ = autoware::universe_utils::deg2rad(40.f); + static constexpr float meter_max_angle_ = autoware::universe_utils::deg2rad(320.f); static constexpr int line_width_ = 2; static constexpr int hand_width_ = 4; struct Line // for drawLine diff --git a/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.cpp b/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.cpp index 90bd6e91f9e4a..8f7348c87be3c 100644 --- a/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.cpp +++ b/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.cpp @@ -212,14 +212,14 @@ void ConsoleMeterDisplay::updateVisualization() inner_arc_.y0 = line_width_ / 2.0; inner_arc_.x1 = w; inner_arc_.y1 = h; - inner_arc_.start_angle = autoware_universe_utils::rad2deg(min_range_theta - M_PI); - inner_arc_.end_angle = autoware_universe_utils::rad2deg(max_range_theta - min_range_theta); + inner_arc_.start_angle = autoware::universe_utils::rad2deg(min_range_theta - M_PI); + inner_arc_.end_angle = autoware::universe_utils::rad2deg(max_range_theta - min_range_theta); outer_arc_.x0 = w * 3 / 8; outer_arc_.y0 = h * 3 / 8; outer_arc_.x1 = w / 4; outer_arc_.y1 = h / 4; - outer_arc_.start_angle = autoware_universe_utils::rad2deg(min_range_theta - M_PI); - outer_arc_.end_angle = autoware_universe_utils::rad2deg(max_range_theta - min_range_theta); + outer_arc_.start_angle = autoware::universe_utils::rad2deg(min_range_theta - M_PI); + outer_arc_.end_angle = autoware::universe_utils::rad2deg(max_range_theta - min_range_theta); } } // namespace rviz_plugins diff --git a/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.hpp b/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.hpp index fc54208ddb8c8..98cf8bbae4228 100644 --- a/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.hpp +++ b/common/tier4_vehicle_rviz_plugin/src/tools/console_meter.hpp @@ -63,10 +63,10 @@ private Q_SLOTS: // QImage hud_; private: - static constexpr float meter_min_velocity_ = autoware_universe_utils::kmph2mps(0.f); - static constexpr float meter_max_velocity_ = autoware_universe_utils::kmph2mps(60.f); - static constexpr float meter_min_angle_ = autoware_universe_utils::deg2rad(40.f); - static constexpr float meter_max_angle_ = autoware_universe_utils::deg2rad(320.f); + static constexpr float meter_min_velocity_ = autoware::universe_utils::kmph2mps(0.f); + static constexpr float meter_max_velocity_ = autoware::universe_utils::kmph2mps(60.f); + static constexpr float meter_min_angle_ = autoware::universe_utils::deg2rad(40.f); + static constexpr float meter_max_angle_ = autoware::universe_utils::deg2rad(320.f); static constexpr int line_width_ = 2; static constexpr int hand_width_ = 4; struct Line // for drawLine diff --git a/common/tier4_vehicle_rviz_plugin/src/tools/velocity_history.hpp b/common/tier4_vehicle_rviz_plugin/src/tools/velocity_history.hpp index 96345205289e6..cb191811ddbc3 100644 --- a/common/tier4_vehicle_rviz_plugin/src/tools/velocity_history.hpp +++ b/common/tier4_vehicle_rviz_plugin/src/tools/velocity_history.hpp @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include diff --git a/common/traffic_light_recognition_marker_publisher/package.xml b/common/traffic_light_recognition_marker_publisher/package.xml index 71a3e5238b388..0fa3959d69c47 100644 --- a/common/traffic_light_recognition_marker_publisher/package.xml +++ b/common/traffic_light_recognition_marker_publisher/package.xml @@ -12,11 +12,11 @@ ament_cmake autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs autoware_universe_utils geometry_msgs - lanelet2_extension rclcpp rclcpp_components visualization_msgs diff --git a/common/traffic_light_recognition_marker_publisher/src/traffic_light_recognition_marker_publisher.hpp b/common/traffic_light_recognition_marker_publisher/src/traffic_light_recognition_marker_publisher.hpp index c1cac302647a1..14bb0e39628f9 100644 --- a/common/traffic_light_recognition_marker_publisher/src/traffic_light_recognition_marker_publisher.hpp +++ b/common/traffic_light_recognition_marker_publisher/src/traffic_light_recognition_marker_publisher.hpp @@ -15,10 +15,10 @@ #ifndef TRAFFIC_LIGHT_RECOGNITION_MARKER_PUBLISHER_HPP_ #define TRAFFIC_LIGHT_RECOGNITION_MARKER_PUBLISHER_HPP_ -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/common/traffic_light_utils/package.xml b/common/traffic_light_utils/package.xml index 7adb856c3c447..59125d1583732 100644 --- a/common/traffic_light_utils/package.xml +++ b/common/traffic_light_utils/package.xml @@ -16,8 +16,8 @@ ament_lint_auto autoware_lint_common + autoware_lanelet2_extension autoware_perception_msgs - lanelet2_extension tier4_perception_msgs diff --git a/common/tvm_utility/example/yolo_v2_tiny/main.cpp b/common/tvm_utility/example/yolo_v2_tiny/main.cpp index 8fd0cde3c306d..38b3355ca38ba 100644 --- a/common/tvm_utility/example/yolo_v2_tiny/main.cpp +++ b/common/tvm_utility/example/yolo_v2_tiny/main.cpp @@ -120,7 +120,6 @@ class PostProcessorYoloV2Tiny : public tvm_utility::pipeline::PostProcessor. +To prevent the AEB from considering noisy points, euclidean clustering is performed on the filtered point cloud. The points in the point cloud that are not close enough to other points to form a cluster are discarded. Furthermore, each point in a cluster is compared against the `cluster_minimum_height` parameter, if no point inside a cluster has a height/z value greater than `cluster_minimum_height`, the whole cluster of points is discarded. The parameters `cluster_tolerance`, `minimum_cluster_size` and `maximum_cluster_size` can be used to tune the clustering and the size of objects to be ignored, for more information about the clustering method used by the AEB module, please check the official documentation on euclidean clustering of the PCL library: . Furthermore, a 2D convex hull is created around each detected cluster, the vertices of each hull represent the most extreme/outside points of the cluster. These vertices are then checked in the next step. -#### Rigorous filtering +##### Rigorous filtering -After Noise filtering, the module performs a geometric collision check to determine whether the filtered obstacles/hull vertices actually have possibility to collide with the ego vehicle. In this check, the ego vehicle is represented as a rectangle, and the point cloud obstacles are represented as points. Only the vertices with a possibility of collision are kept. Finally, the vertex that is closest to the ego vehicle is chosen as the candidate for collision checking: Since rss distance is used to judge if a collision will happen or not, if the closest vertex to the ego is deemed to be safe, the rest of the vertices (and the points in the clusters) will also be safe. +After Noise filtering, the module performs a geometric collision check to determine whether the filtered obstacles/hull vertices actually have possibility to collide with the ego vehicle. In this check, the ego vehicle is represented as a rectangle, and the point cloud obstacles are represented as points. Only the vertices with a possibility of collision are kept. ![rigorous_filtering](./image/obstacle_filtering_2.drawio.svg) -#### Obstacle velocity estimation +#### Using predicted objects to get target obstacles + +If the `use_predicted_object_data` parameter is set to true, the AEB can use predicted object data coming from the perception modules, to get target obstacle points. This is done by obtaining the 2D intersection points between the ego's predicted footprint path and each of the predicted objects enveloping polygon or bounding box. + +![predicted_object_and_path_intersection](./image/using-predicted-objects.drawio.svg) + +### Finding the closest target obstacle + +Once all target obstacles have been identified, the AEB module chooses the point that is closest to the ego vehicle as the candidate for collision checking. Only the closest point is considered because RSS distance is used to judge if a collision will happen or not, and if the closest vertex to the ego is deemed to be safe from collision, the rest of the target obstacles will also be safe. + +![closest_object](./image/closest-point.drawio.svg) + +### 4. Obstacle velocity estimation Once the position of the closest obstacle/point is determined, the AEB modules uses the history of previously detected objects to estimate the closest object relative speed using the following equations: @@ -110,7 +132,9 @@ Where $t_{1}$ and $t_{0}$ are the timestamps of the point clouds used to detect ![relative_speed](./image/object_relative_speed.drawio.svg) -Finally, the velocity vector is compared against the ego's predicted path to get the longitudinal velocity $v_{obj}$: +Note that, when the closest obstacle/point comes from using predicted object data, $v_{norm}$ is calculated by directly computing the norm of the predicted object's velocity in the x and y axes. + +The velocity vector is then compared against the ego's predicted path to get the longitudinal velocity $v_{obj}$: $$ v_{obj} = v_{norm} * Cos(yaw_{diff}) + v_{ego} @@ -118,21 +142,23 @@ $$ where $yaw_{diff}$ is the difference in yaw between the ego path and the displacement vector $$v_{pos} = o_{pos} - prev_{pos} $$ and $v_{ego}$ is the ego's current speed, which accounts for the movement of points caused by the ego moving and not the object. All these equations are performed disregarding the z axis (in 2D). -Note that, the object velocity is calculated against the ego's current movement direction. If the object moves in the opposite direction to the ego's movement, the object velocity is set to 0 m/s. That is because the RSS distance calculation assumes the ego and the object move in the same direction and it cannot deal with negative velocities. +Note that, the object velocity is calculated against the ego's current movement direction. If the object moves in the opposite direction to the ego's movement, the object velocity will be negative, which will reduce the rss distance on the next step. + +The resulting estimated object speed is added to a queue of speeds with timestamps. The AEB then checks for expiration of past speed estimations and eliminates expired speed measurements from the queue, the object expiration is determined by checking if the time elapsed since the speed was first added to the queue is larger than the parameter `previous_obstacle_keep_time`. Finally, the median speed of the queue is calculated. The median speed will be used to calculate the RSS distance used for collision checking. -### 4. Collision check with target obstacles using RSS distance +### 5. Collision check with target obstacles using RSS distance In the fourth step, it checks the collision with the closest obstacle point using RSS distance. RSS distance is formulated as: $$ -d = v_{ego}*t_{response} + v_{ego}^2/(2*a_{min}) - v_{obj}^2/(2*a_{obj_{min}}) + offset +d = v_{ego}*t_{response} + v_{ego}^2/(2*a_{min}) -(sign(v_{obj})) * v_{obj}^2/(2*a_{obj_{min}}) + offset $$ where $v_{ego}$ and $v_{obj}$ is current ego and obstacle velocity, $a_{min}$ and $a_{obj_{min}}$ is ego and object minimum acceleration (maximum deceleration), $t_{response}$ is response time of the ego vehicle to start deceleration. Therefore the distance from the ego vehicle to the obstacle is smaller than this RSS distance $d$, the ego vehicle send emergency stop signals. This is illustrated in the following picture. ![rss_check](./image/rss_check.drawio.svg) -### 5. Send emergency stop signals to `/diagnostics` +### 6. Send emergency stop signals to `/diagnostics` If AEB detects collision with point cloud obstacles in the previous step, it sends emergency signal to `/diagnostics` in this step. Note that in order to enable emergency stop, it has to send ERROR level emergency. Moreover, AEB user should modify the setting file to keep the emergency level, otherwise Autoware does not hold the emergency state. @@ -195,6 +221,4 @@ When vehicle odometry information is faulty, it is possible that the MPC fails t - The accuracy of the predicted path created from sensor data depends on the accuracy of sensors attached to the ego vehicle. -- Currently, the module calculates thee closest object velocity if it goes in the same direction as the ego vehicle, otherwise the velocity is set to 0 m/s since RSS distance calculation does not use negative velocities. - ![aeb_range](./image/range.drawio.svg) diff --git a/control/autoware_autonomous_emergency_braking/config/autonomous_emergency_braking.param.yaml b/control/autoware_autonomous_emergency_braking/config/autonomous_emergency_braking.param.yaml index 4233f8b6bebcb..482ddc50766f8 100644 --- a/control/autoware_autonomous_emergency_braking/config/autonomous_emergency_braking.param.yaml +++ b/control/autoware_autonomous_emergency_braking/config/autonomous_emergency_braking.param.yaml @@ -3,6 +3,8 @@ # Ego path calculation use_predicted_trajectory: true use_imu_path: false + use_pointcloud_data: true + use_predicted_object_data: true use_object_velocity_calculation: true min_generated_path_length: 0.5 imu_prediction_time_horizon: 1.5 @@ -26,6 +28,7 @@ # Point cloud clustering cluster_tolerance: 0.1 #[m] + cluster_minimum_height: 0.0 minimum_cluster_size: 10 maximum_cluster_size: 10000 diff --git a/control/autoware_autonomous_emergency_braking/image/closest-point.drawio.svg b/control/autoware_autonomous_emergency_braking/image/closest-point.drawio.svg new file mode 100644 index 0000000000000..154bba1fc9152 --- /dev/null +++ b/control/autoware_autonomous_emergency_braking/image/closest-point.drawio.svg @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Closest Point +
+
+
+
+ +
+
+
+
+
+ + + + + + + + +
+
+
+ Find the closest target obstacle +
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + +
+
+
+
diff --git a/control/autoware_autonomous_emergency_braking/image/obstacle_filtering_2.drawio.svg b/control/autoware_autonomous_emergency_braking/image/obstacle_filtering_2.drawio.svg index 1d12fe233ad8e..137872daebace 100644 --- a/control/autoware_autonomous_emergency_braking/image/obstacle_filtering_2.drawio.svg +++ b/control/autoware_autonomous_emergency_braking/image/obstacle_filtering_2.drawio.svg @@ -6,360 +6,249 @@ xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="616px" - height="534px" - viewBox="-0.5 -0.5 616 534" - content="<mxfile host="app.diagrams.net" modified="2024-06-13T07:23:40.787Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" etag="VWopeiBdF3bKI_lRsSXP" version="24.5.4" type="google" scale="1" border="0"> <diagram name="Page-1" id="nTw8mlOSOdTxmldlJuHK"> <mxGraphModel dx="941" dy="648" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-1" value="" style="group;opacity=30;" vertex="1" connectable="0" parent="1"> <mxGeometry x="340" y="602" width="420" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-2" value="" style="group;fillColor=#dae8fc;strokeColor=#6c8ebf;container=0;" vertex="1" connectable="0" parent="ty0ni0eQC3Mwg9WxKvAH-1"> <mxGeometry width="420" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-1"> <mxGeometry x="280" width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-1"> <mxGeometry x="140" width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-1"> <mxGeometry width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-6" value="" style="group" vertex="1" connectable="0" parent="1"> <mxGeometry x="340" y="647" width="420" height="85" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-7" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-6"> <mxGeometry x="280" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-6"> <mxGeometry x="140" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-9" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-6"> <mxGeometry width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-10" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTE5LjQ2IDQwIiBpZD0iTGF5ZXJfMiI+PGRlZnM+PHN0eWxlPi5jbHMtMXtjbGlwLXBhdGg6dXJsKCNjbGlwcGF0aCk7fS5jbHMtMntmaWxsOm5vbmU7fS5jbHMtMiwuY2xzLTN7c3Ryb2tlLXdpZHRoOjBweDt9LmNscy0ze2ZpbGw6IzIzMWYyMDt9PC9zdHlsZT48Y2xpcFBhdGggaWQ9ImNsaXBwYXRoIj48cmVjdCBoZWlnaHQ9IjQwIiB3aWR0aD0iMTE1LjExIiB4PSIuNSIgY2xhc3M9ImNscy0yIi8+PC9jbGlwUGF0aD48L2RlZnM+PGcgaWQ9IlJvYWRzIj48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSIzLjUiIHk9IjE5LjUiIHg9Ii41IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJtMTA0LjksMjAuNWgtNy4yMXYtMWg3LjIxdjFabS0xNC40MSwwaC03LjIxdi0xaDcuMjF2MVptLTE0LjQxLDBoLTcuMjF2LTFoNy4yMXYxWm0tMTQuNDEsMGgtNy4yMXYtMWg3LjIxdjFabS0xNC40MSwwaC03LjIxdi0xaDcuMjF2MVptLTE0LjQxLDBoLTcuMjF2LTFoNy4yMXYxWm0tMTQuNDEsMGgtNy4yMXYtMWg3LjIxdjFaIiBjbGFzcz0iY2xzLTMiLz48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSIzLjUiIHk9IjE5LjUiIHg9IjExMi4xMSIgY2xhc3M9ImNscy0zIi8+PGcgY2xhc3M9ImNscy0xIj48cG9seWdvbiBwb2ludHM9IjAgMi41OSAwIDMuNTIgMS4wMiAzLjUyIDEuMDIgMy41OSAxMTguNDYgMy41OSAxMTguNDYgMzYuNDEgMSAzNi40MSAxIDM2LjQgMCAzNi40IDAgMzcuNDEgMTE5LjQ2IDM3LjQxIDExOS40NiAyLjU5IDAgMi41OSIgY2xhc3M9ImNscy0zIi8+PC9nPjwvZz48L3N2Zz4=;" vertex="1" parent="1"> <mxGeometry x="180" y="618" width="595" height="200" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-11" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="456.7649999999999" y="677.5" as="targetPoint" /> <mxPoint x="350.0000000000002" y="677.4867690685733" as="sourcePoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-12" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNy4zMDU0NjA5bW0iCiAgIGhlaWdodD0iMy4xODI4MzIybW0iCiAgIHZpZXdCb3g9IjAgMCA3LjMwNTQ2MDkgMy4xODI4MzIyIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjMgKDE6MS4zKzIwMjMwNzIzMTQ1OSswZTE1MGVkNmM0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iYmVoYXZpb3JfcGF0aF9wbGFubmVyLnN2ZyIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzEiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjMDAwMDAwIgogICAgIGJvcmRlcm9wYWNpdHk9IjAuMjUiCiAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6em9vbT0iMTkuMTA5NTAxIgogICAgIGlua3NjYXBlOmN4PSIxNzkuODMyMDEiCiAgICAgaW5rc2NhcGU6Y3k9IjQ4MC40NDE2MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3NzAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA5NiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNzAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPjxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPjxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MS4zMjMzMjMsLTEzMi4wNTM0MikiPjxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGlkPSJyZWN0MSIKICAgICAgIHdpZHRoPSI3LjE1NTQ2MzciCiAgICAgICBoZWlnaHQ9IjMuMDMyODMxNCIKICAgICAgIHg9IjUxLjM5ODMyMyIKICAgICAgIHk9IjEzMi4xMjg0MiIKICAgICAgIHJ5PSIwLjkzNTU2ODM5IiAvPjxwYXRoCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGQ9Im0gNTYuNjM1MjgyLDEzNC43OTk4NCAtMS4xNDEzNjUsLTAuMjQ1NSBtIDEuMTQxMzY1LC0yLjA1ODEgLTEuMTQxMzY1LDAuMjQ1NSBtIC0yLjYzNzE1NiwyLjA4NDY3IDEuMjM4Mzg3LC0wLjI5ODYzIG0gLTEuMjM4Mzg3LC0yLjA1ODExIDEuMjM4Mzg3LDAuMjk4NjQgbSAwLjczOTM5MSwxLjc3MDY4IHYgMC4zNTcyNyBtIDAsLTIuNDkzOTYgdiAwLjM1NzI3IG0gLTAuNzgyMjUxLC0wLjAxNDEgaCAxLjQ1ODQwMSB2IDEuODA3ODkgaCAtMS40NTg0MDEgeiBtIC0wLjg0MDE1NCwtMC4zMzA4MyBoIDIuOTE2Mzk4IGMgMC41ODkwMTksMCAxLjA2MzIxMiwwLjMzOTM5IDEuMDYzMjEyLDAuNzYwOTYgdiAwLjk0NDg4IGMgMCwwLjQyMTU3IC0wLjQ3NDE5MywwLjc2MDk2IC0xLjA2MzIxMiwwLjc2MDk2IGggLTIuOTE2Mzk4IGMgLTAuNTg5MDE5LDAgLTEuMDYzMjEyLC0wLjMzOTM5IC0xLjA2MzIxMiwtMC43NjA5NiB2IC0wLjk0NDg4IGMgMCwtMC40MjE1NyAwLjQ3NDE5MywtMC43NjA5NiAxLjA2MzIxMiwtMC43NjA5NiB6IiAvPjwvZz48L3N2Zz4K;points=[[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0.1,0,0,0,0],[0.1,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[0.89,0,0,0,0],[0.89,1,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0]];imageBackground=none;imageAspect=0;perimeter=none;" vertex="1" parent="1"> <mxGeometry x="466.34" y="655" width="107.33" height="46" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-13" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="464" y="671" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-14" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="468.34000000000003" y="685" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-15" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="480" y="655" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-16" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"> <mxGeometry x="472" y="665" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-17" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAAKwAAABKCAYAAAAmLL9HAAAACXBIWXMAADT9AAA1CgHHClLTAAAJN0lEQVR4nO2dQW7bOBSGfxezLJDMbnbJADWjXdwTVD1B3BNEPcGkJxjNCeKeYJQT1DlBlBPU2QlEgbF33U0MdJ9Z8KmRnkhTylgSJfMDhIC2adHML/LxkXycPD09oQmBEHMAIYAZXUeNvsBz6GwBrOhKMymXTTJP6gg2EOIUQAxgDi9Qz37ZAlgCiDMp17YP7xRsIMQxlFD/2FPhPJ5dfIYS7qPpA0bBBkLMoJR/0k7ZPB4tGwDzTMqV7k2tYAMhIgAL6Lv/vAlPAaxMX+wpEwhRquhMyklfZekTaghnUOMgk4m5BXCVSZnwNyqCJbH+bfiSBYDFribbo8cLtgqZnFd06YT7kYu2JFhSf6rJfAsg8kJ9OV6wZki4CYAL9tYWQFjsxX8KljKtULVZbzIpo7YKeyh4wdoJhEgAXLKXNwBmeWP5S+GNGAMUK/UKIYBj+jsIAiHSvsvQEo8o+1lr98qZlFEgBFAW7QmUyRAD1MKSn/Uflv82k3L+8nK3RyBECCCC9wsPgVsAS90AykQgxBJV8+D3TMr1K0rE7M0tlCCcIhAiCoRYA7iDegq9WN3nAsDfgRBrmiWtQwSlwSIxAOSC5V/klCcgEGIWCLGC8l54v/AwOQHwJRBiSeMlI6S9BXt5DgCTs+l0DuBL4Y0tgFNXBBsIcQXg2vKxeyjvxpqutnkD5Ut8DeA3umycs/TDvgvVAt/p+gFlk36rkafoZzU1Lg9QXiejD59EvUa5F/0wOZtOFyhPvToz0DKMGnPuASRNbKP/WZYQ3m7OJ42STMrU9mGqsxjAO8N3hRbRJij//z9PzqbTlH1hxVnbBzSK1v3Qe6j55rSjcsyguiddWQ6Ze6jZKOtMJwk3QbXFLbmsNPkilCex7l9BNd9Fep9qpSdLJ5BPmZRhh2JdAPhqKMuh8w7AV6qjndD/a4aqGXQC1WKb4FqcTc6mU6cc2oEQMYA/2cvW7mPPZTiGsom53Vkkt5tzv+MYCQt/dz20D1D/H+u4x9Bzfsqk1AqfT7g4JVjqOu7Yyy6JdQNlky1dGZR2BdXLHPoJJqCmaA31axzoc8G+4h/omYSlXRHrFsq2P82kTA5NrIByNdFvPwXwEVU/6TmAtKbLKmIvH0HNZllxRrBkCvAnt5ZRv0cW0LufZi4MRF2B6kJnk56j6j/V5V8BuGEvR3Xu7YRgC8vMitx2KRKaheEutLybW3dVjqFAdRKiKtrLmjNaMUufkEdmJ04IFnrfZq0uYo/wliE3Rw6u+68L1U2IqnlQp5VdQ60zKGIVuiuC5eK86bJVI38fN0fmXqx2qI640E6oTm2kLB3aMvQuWFopxu1G6xO6Z2KWvunK1zsGqK64TRrXyMrHJ6e2DL0LFtWn6qHLgRbZTbx1jbu6/4iIWdpqk2oaBevCJhcFm3Z8f96dPfhBVnOozvgAbO/rqV0Q7ClLpx3fn7cCScf3HxMJS1tH/U1xQbD8R607vv8pS491mrULGtukTfnF/pHWKbmzeohzwAd8Tgu2sMwxxLPNt4HqmWot+2sRXne71mK8CBdaWKdw1ZUVCHFMe53y7UHFAcoJvXZXZ0V/W3RRd16wA6CwxoFvzNNxgRpz+kPFC3YYJGjWvZ5jpINHL1jHIZuVt6wbqNVjEwC/Qq2e2rDPXFDeUeEF6z4RS+fbShLgedkflLeFi5bnHTxesO4TsrQ2fiq9FlvyDh4vWPfh05XGPVCa5Ziji+HgBTswdrmOxuoZKOIF6z4lu9SybI/P3XObdvB4wbpPytKxriUtnEexK+/gcWFq1rObBNXwkyvaA5fbs6bdrEm7Rese38I6Dq0N4FtJTqAiovxLly5I3u0YF6F7wQ6DCM2Cxz1ghD5YwAt2EBQ2+/GWVsctRrx50tuwAyHf7Of48sLW8YIdGCTItOdi9IY3CRiH4Hxviy7qzgXBloIw1In+sWf4YKbr+48JXnd7jzLugmBb3wdkYc3SXrAvp/X9eS4Ids3SYcf35w9M1PH9x0TE0nvfH+eCYFOWDju+P1/9dE7RaDwNMETw2RVd+0W4KNjzLu1Y2qXLF4nEXd1/RMQsvbHtgNbsiLAu1uldsIaIIV1HLoxZ+nKM20vaguqKhyqNa2RtbPP2LliCB3+77LJbpoXP/Onubbv0kKA64l3/pmZs35ClU1sGVwS7xAtijO4Z3qofYcTbpfdBYft549i+1CDxzZVWm9cJwRqOaryoGWN0X2VYohoyMo/bf9pVOYYC1UmK6kDrhurSRszSVpsXcESwAJBJGaPaLS86nki4gj5u/4qOEPXg53GqK+jPg6jTus5QtXmTOvd2RrBExNJ5t9yJaAurorhojwBc04nU0SGaCRQqKT9N/RpVM6DJsUcJe3mLmiagU+d0AYM8WA4Y72KUGYBjOHaw3CPKT8vbHiIIlthxKLLxh7VUjgXKB0d7qnzOpKxjBpgagftMytCQZwZ1dGrO9hU053nWLmpL0Gni95q3rgMh0q58pPSPeGsoy6FzD9W41RFrCL3Nu8HuKN1ciyudYENbAbqAnjo+agdUd3JHwo06KMeKyvKeysPdb4fEFqoO3tMh1daZLDIB7lDdc7aF/aSekKVXk7PpdA7gC/si7bmffUAj0mvLx3J7co1uIni/gXr6XwP4jS4buhG163yn6wdUw/atRp4ZXSHMkWceAES7BE8mxBplc/XD5OnpCYEQ3I79i9xMTkC2TIIWIjp7OucWSqw2b0KM8uB7m0l5nLu1uKP3yiXXDXXLM+jDSnqGwQbAh0xK64F9hqNcl8CzHzZmbx7BwSAMhdOkvT05HG7xfBJ63eWGCap+3hgAJk9Pys1lcOHc0IjdWchcCPHsL3QV7nscq+fhEcreXQFIm46FDC7Nn66zomCP6SbcUHZetEOAO8D7nqBxEYNY8wDOj0BharZwyC3vZi/7PJnEM34KJ+RwsVZcX6W1BORm0DmCLwCsAyG0kfM8npdAQo2h3Fe6E3KuuOvrp0nAviiCWozADV9AqX4J5fdc9T2NOxS8SaCgMUc+7pjDrLEr3SJwrWALX7zECMOOe5xmA2UGaBtC4/JCyjAD8Lmlgnk8nL+gBljGXtvYwhah1eUxzE24x/NSchMzpg2pO6kl2CKBEHMo+yO3RbyAPU3YouynbRS74D+7OeKwBtsqIwAAAABJRU5ErkJggg==;direction=west;imageBackground=default;rotation=0;" vertex="1" parent="1"> <mxGeometry x="235.47000000000003" y="651.5" width="123.19" height="53" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-18" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"> <mxGeometry x="482" y="673" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-19" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="478.34000000000003" y="695" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-20" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="492" y="683" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-21" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNy4zMDU0NjA5bW0iCiAgIGhlaWdodD0iMy4xODI4MzIybW0iCiAgIHZpZXdCb3g9IjAgMCA3LjMwNTQ2MDkgMy4xODI4MzIyIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjMgKDE6MS4zKzIwMjMwNzIzMTQ1OSswZTE1MGVkNmM0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iYmVoYXZpb3JfcGF0aF9wbGFubmVyLnN2ZyIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzEiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjMDAwMDAwIgogICAgIGJvcmRlcm9wYWNpdHk9IjAuMjUiCiAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6em9vbT0iMTkuMTA5NTAxIgogICAgIGlua3NjYXBlOmN4PSIxNzkuODMyMDEiCiAgICAgaW5rc2NhcGU6Y3k9IjQ4MC40NDE2MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3NzAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA5NiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNzAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPjxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPjxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MS4zMjMzMjMsLTEzMi4wNTM0MikiPjxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGlkPSJyZWN0MSIKICAgICAgIHdpZHRoPSI3LjE1NTQ2MzciCiAgICAgICBoZWlnaHQ9IjMuMDMyODMxNCIKICAgICAgIHg9IjUxLjM5ODMyMyIKICAgICAgIHk9IjEzMi4xMjg0MiIKICAgICAgIHJ5PSIwLjkzNTU2ODM5IiAvPjxwYXRoCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGQ9Im0gNTYuNjM1MjgyLDEzNC43OTk4NCAtMS4xNDEzNjUsLTAuMjQ1NSBtIDEuMTQxMzY1LC0yLjA1ODEgLTEuMTQxMzY1LDAuMjQ1NSBtIC0yLjYzNzE1NiwyLjA4NDY3IDEuMjM4Mzg3LC0wLjI5ODYzIG0gLTEuMjM4Mzg3LC0yLjA1ODExIDEuMjM4Mzg3LDAuMjk4NjQgbSAwLjczOTM5MSwxLjc3MDY4IHYgMC4zNTcyNyBtIDAsLTIuNDkzOTYgdiAwLjM1NzI3IG0gLTAuNzgyMjUxLC0wLjAxNDEgaCAxLjQ1ODQwMSB2IDEuODA3ODkgaCAtMS40NTg0MDEgeiBtIC0wLjg0MDE1NCwtMC4zMzA4MyBoIDIuOTE2Mzk4IGMgMC41ODkwMTksMCAxLjA2MzIxMiwwLjMzOTM5IDEuMDYzMjEyLDAuNzYwOTYgdiAwLjk0NDg4IGMgMCwwLjQyMTU3IC0wLjQ3NDE5MywwLjc2MDk2IC0xLjA2MzIxMiwwLjc2MDk2IGggLTIuOTE2Mzk4IGMgLTAuNTg5MDE5LDAgLTEuMDYzMjEyLC0wLjMzOTM5IC0xLjA2MzIxMiwtMC43NjA5NiB2IC0wLjk0NDg4IGMgMCwtMC40MjE1NyAwLjQ3NDE5MywtMC43NjA5NiAxLjA2MzIxMiwtMC43NjA5NiB6IiAvPjwvZz48L3N2Zz4K;points=[[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0.1,0,0,0,0],[0.1,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[0.89,0,0,0,0],[0.89,1,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0]];imageBackground=none;imageAspect=0;perimeter=none;" vertex="1" parent="1"> <mxGeometry x="392.66999999999996" y="782" width="107.33" height="46" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-22" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;" edge="1" parent="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="468" y="676" as="sourcePoint" /> <mxPoint x="484" y="659" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-23" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0;entryY=0.875;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.369;exitY=0.304;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ty0ni0eQC3Mwg9WxKvAH-20"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="482" y="683" as="sourcePoint" /> <mxPoint x="484" y="659" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-24" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"> <mxGeometry x="481" y="684" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-25" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.406;entryY=0.732;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="473" y="689" as="sourcePoint" /> <mxPoint x="468.24800000000005" y="675.856" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-26" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.716;entryY=0.513;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="482" y="699" as="sourcePoint" /> <mxPoint x="473.068" y="689.104" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-27" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.716;entryY=0.513;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.366;exitY=0.246;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ty0ni0eQC3Mwg9WxKvAH-20"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="491" y="709" as="sourcePoint" /> <mxPoint x="482.068" y="699.104" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-28" value="" style="group;opacity=30;" vertex="1" connectable="0" parent="1"> <mxGeometry x="334.84" y="872" width="420" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-29" value="" style="group;fillColor=#dae8fc;strokeColor=#6c8ebf;container=0;" vertex="1" connectable="0" parent="ty0ni0eQC3Mwg9WxKvAH-28"> <mxGeometry width="420" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-30" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-28"> <mxGeometry x="280" width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-31" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-28"> <mxGeometry x="140" width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-32" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-28"> <mxGeometry width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-33" value="" style="group" vertex="1" connectable="0" parent="1"> <mxGeometry x="334.84" y="917" width="420" height="85" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-34" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-33"> <mxGeometry x="280" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-35" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-33"> <mxGeometry x="140" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-36" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" vertex="1" parent="ty0ni0eQC3Mwg9WxKvAH-33"> <mxGeometry width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-37" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTE5LjQ2IDQwIiBpZD0iTGF5ZXJfMiI+PGRlZnM+PHN0eWxlPi5jbHMtMXtjbGlwLXBhdGg6dXJsKCNjbGlwcGF0aCk7fS5jbHMtMntmaWxsOm5vbmU7fS5jbHMtMiwuY2xzLTN7c3Ryb2tlLXdpZHRoOjBweDt9LmNscy0ze2ZpbGw6IzIzMWYyMDt9PC9zdHlsZT48Y2xpcFBhdGggaWQ9ImNsaXBwYXRoIj48cmVjdCBoZWlnaHQ9IjQwIiB3aWR0aD0iMTE1LjExIiB4PSIuNSIgY2xhc3M9ImNscy0yIi8+PC9jbGlwUGF0aD48L2RlZnM+PGcgaWQ9IlJvYWRzIj48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSIzLjUiIHk9IjE5LjUiIHg9Ii41IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJtMTA0LjksMjAuNWgtNy4yMXYtMWg3LjIxdjFabS0xNC40MSwwaC03LjIxdi0xaDcuMjF2MVptLTE0LjQxLDBoLTcuMjF2LTFoNy4yMXYxWm0tMTQuNDEsMGgtNy4yMXYtMWg3LjIxdjFabS0xNC40MSwwaC03LjIxdi0xaDcuMjF2MVptLTE0LjQxLDBoLTcuMjF2LTFoNy4yMXYxWm0tMTQuNDEsMGgtNy4yMXYtMWg3LjIxdjFaIiBjbGFzcz0iY2xzLTMiLz48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSIzLjUiIHk9IjE5LjUiIHg9IjExMi4xMSIgY2xhc3M9ImNscy0zIi8+PGcgY2xhc3M9ImNscy0xIj48cG9seWdvbiBwb2ludHM9IjAgMi41OSAwIDMuNTIgMS4wMiAzLjUyIDEuMDIgMy41OSAxMTguNDYgMy41OSAxMTguNDYgMzYuNDEgMSAzNi40MSAxIDM2LjQgMCAzNi40IDAgMzcuNDEgMTE5LjQ2IDM3LjQxIDExOS40NiAyLjU5IDAgMi41OSIgY2xhc3M9ImNscy0zIi8+PC9nPjwvZz48L3N2Zz4=;" vertex="1" parent="1"> <mxGeometry x="174.84" y="888" width="595" height="200" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-38" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNy4zMDU0NjA5bW0iCiAgIGhlaWdodD0iMy4xODI4MzIybW0iCiAgIHZpZXdCb3g9IjAgMCA3LjMwNTQ2MDkgMy4xODI4MzIyIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjMgKDE6MS4zKzIwMjMwNzIzMTQ1OSswZTE1MGVkNmM0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iYmVoYXZpb3JfcGF0aF9wbGFubmVyLnN2ZyIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzEiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjMDAwMDAwIgogICAgIGJvcmRlcm9wYWNpdHk9IjAuMjUiCiAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6em9vbT0iMTkuMTA5NTAxIgogICAgIGlua3NjYXBlOmN4PSIxNzkuODMyMDEiCiAgICAgaW5rc2NhcGU6Y3k9IjQ4MC40NDE2MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3NzAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA5NiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNzAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPjxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPjxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MS4zMjMzMjMsLTEzMi4wNTM0MikiPjxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGlkPSJyZWN0MSIKICAgICAgIHdpZHRoPSI3LjE1NTQ2MzciCiAgICAgICBoZWlnaHQ9IjMuMDMyODMxNCIKICAgICAgIHg9IjUxLjM5ODMyMyIKICAgICAgIHk9IjEzMi4xMjg0MiIKICAgICAgIHJ5PSIwLjkzNTU2ODM5IiAvPjxwYXRoCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGQ9Im0gNTYuNjM1MjgyLDEzNC43OTk4NCAtMS4xNDEzNjUsLTAuMjQ1NSBtIDEuMTQxMzY1LC0yLjA1ODEgLTEuMTQxMzY1LDAuMjQ1NSBtIC0yLjYzNzE1NiwyLjA4NDY3IDEuMjM4Mzg3LC0wLjI5ODYzIG0gLTEuMjM4Mzg3LC0yLjA1ODExIDEuMjM4Mzg3LDAuMjk4NjQgbSAwLjczOTM5MSwxLjc3MDY4IHYgMC4zNTcyNyBtIDAsLTIuNDkzOTYgdiAwLjM1NzI3IG0gLTAuNzgyMjUxLC0wLjAxNDEgaCAxLjQ1ODQwMSB2IDEuODA3ODkgaCAtMS40NTg0MDEgeiBtIC0wLjg0MDE1NCwtMC4zMzA4MyBoIDIuOTE2Mzk4IGMgMC41ODkwMTksMCAxLjA2MzIxMiwwLjMzOTM5IDEuMDYzMjEyLDAuNzYwOTYgdiAwLjk0NDg4IGMgMCwwLjQyMTU3IC0wLjQ3NDE5MywwLjc2MDk2IC0xLjA2MzIxMiwwLjc2MDk2IGggLTIuOTE2Mzk4IGMgLTAuNTg5MDE5LDAgLTEuMDYzMjEyLC0wLjMzOTM5IC0xLjA2MzIxMiwtMC43NjA5NiB2IC0wLjk0NDg4IGMgMCwtMC40MjE1NyAwLjQ3NDE5MywtMC43NjA5NiAxLjA2MzIxMiwtMC43NjA5NiB6IiAvPjwvZz48L3N2Zz4K;points=[[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0.1,0,0,0,0],[0.1,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[0.89,0,0,0,0],[0.89,1,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0]];imageBackground=none;imageAspect=0;perimeter=none;" vertex="1" parent="1"> <mxGeometry x="461.17999999999995" y="925" width="107.33" height="46" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-39" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e3c800;strokeColor=#B09500;fontColor=#000000;" vertex="1" parent="1"> <mxGeometry x="458.84" y="941" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-40" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="463.18" y="955" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-41" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="474.84" y="925" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-42" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAAKwAAABKCAYAAAAmLL9HAAAACXBIWXMAADT9AAA1CgHHClLTAAAJN0lEQVR4nO2dQW7bOBSGfxezLJDMbnbJADWjXdwTVD1B3BNEPcGkJxjNCeKeYJQT1DlBlBPU2QlEgbF33U0MdJ9Z8KmRnkhTylgSJfMDhIC2adHML/LxkXycPD09oQmBEHMAIYAZXUeNvsBz6GwBrOhKMymXTTJP6gg2EOIUQAxgDi9Qz37ZAlgCiDMp17YP7xRsIMQxlFD/2FPhPJ5dfIYS7qPpA0bBBkLMoJR/0k7ZPB4tGwDzTMqV7k2tYAMhIgAL6Lv/vAlPAaxMX+wpEwhRquhMyklfZekTaghnUOMgk4m5BXCVSZnwNyqCJbH+bfiSBYDFribbo8cLtgqZnFd06YT7kYu2JFhSf6rJfAsg8kJ9OV6wZki4CYAL9tYWQFjsxX8KljKtULVZbzIpo7YKeyh4wdoJhEgAXLKXNwBmeWP5S+GNGAMUK/UKIYBj+jsIAiHSvsvQEo8o+1lr98qZlFEgBFAW7QmUyRAD1MKSn/Uflv82k3L+8nK3RyBECCCC9wsPgVsAS90AykQgxBJV8+D3TMr1K0rE7M0tlCCcIhAiCoRYA7iDegq9WN3nAsDfgRBrmiWtQwSlwSIxAOSC5V/klCcgEGIWCLGC8l54v/AwOQHwJRBiSeMlI6S9BXt5DgCTs+l0DuBL4Y0tgFNXBBsIcQXg2vKxeyjvxpqutnkD5Ut8DeA3umycs/TDvgvVAt/p+gFlk36rkafoZzU1Lg9QXiejD59EvUa5F/0wOZtOFyhPvToz0DKMGnPuASRNbKP/WZYQ3m7OJ42STMrU9mGqsxjAO8N3hRbRJij//z9PzqbTlH1hxVnbBzSK1v3Qe6j55rSjcsyguiddWQ6Ze6jZKOtMJwk3QbXFLbmsNPkilCex7l9BNd9Fep9qpSdLJ5BPmZRhh2JdAPhqKMuh8w7AV6qjndD/a4aqGXQC1WKb4FqcTc6mU6cc2oEQMYA/2cvW7mPPZTiGsom53Vkkt5tzv+MYCQt/dz20D1D/H+u4x9Bzfsqk1AqfT7g4JVjqOu7Yyy6JdQNlky1dGZR2BdXLHPoJJqCmaA31axzoc8G+4h/omYSlXRHrFsq2P82kTA5NrIByNdFvPwXwEVU/6TmAtKbLKmIvH0HNZllxRrBkCvAnt5ZRv0cW0LufZi4MRF2B6kJnk56j6j/V5V8BuGEvR3Xu7YRgC8vMitx2KRKaheEutLybW3dVjqFAdRKiKtrLmjNaMUufkEdmJ04IFnrfZq0uYo/wliE3Rw6u+68L1U2IqnlQp5VdQ60zKGIVuiuC5eK86bJVI38fN0fmXqx2qI640E6oTm2kLB3aMvQuWFopxu1G6xO6Z2KWvunK1zsGqK64TRrXyMrHJ6e2DL0LFtWn6qHLgRbZTbx1jbu6/4iIWdpqk2oaBevCJhcFm3Z8f96dPfhBVnOozvgAbO/rqV0Q7ClLpx3fn7cCScf3HxMJS1tH/U1xQbD8R607vv8pS491mrULGtukTfnF/pHWKbmzeohzwAd8Tgu2sMwxxLPNt4HqmWot+2sRXne71mK8CBdaWKdw1ZUVCHFMe53y7UHFAcoJvXZXZ0V/W3RRd16wA6CwxoFvzNNxgRpz+kPFC3YYJGjWvZ5jpINHL1jHIZuVt6wbqNVjEwC/Qq2e2rDPXFDeUeEF6z4RS+fbShLgedkflLeFi5bnHTxesO4TsrQ2fiq9FlvyDh4vWPfh05XGPVCa5Ziji+HgBTswdrmOxuoZKOIF6z4lu9SybI/P3XObdvB4wbpPytKxriUtnEexK+/gcWFq1rObBNXwkyvaA5fbs6bdrEm7Rese38I6Dq0N4FtJTqAiovxLly5I3u0YF6F7wQ6DCM2Cxz1ghD5YwAt2EBQ2+/GWVsctRrx50tuwAyHf7Of48sLW8YIdGCTItOdi9IY3CRiH4Hxviy7qzgXBloIw1In+sWf4YKbr+48JXnd7jzLugmBb3wdkYc3SXrAvp/X9eS4Ids3SYcf35w9M1PH9x0TE0nvfH+eCYFOWDju+P1/9dE7RaDwNMETw2RVd+0W4KNjzLu1Y2qXLF4nEXd1/RMQsvbHtgNbsiLAu1uldsIaIIV1HLoxZ+nKM20vaguqKhyqNa2RtbPP2LliCB3+77LJbpoXP/Onubbv0kKA64l3/pmZs35ClU1sGVwS7xAtijO4Z3qofYcTbpfdBYft549i+1CDxzZVWm9cJwRqOaryoGWN0X2VYohoyMo/bf9pVOYYC1UmK6kDrhurSRszSVpsXcESwAJBJGaPaLS86nki4gj5u/4qOEPXg53GqK+jPg6jTus5QtXmTOvd2RrBExNJ5t9yJaAurorhojwBc04nU0SGaCRQqKT9N/RpVM6DJsUcJe3mLmiagU+d0AYM8WA4Y72KUGYBjOHaw3CPKT8vbHiIIlthxKLLxh7VUjgXKB0d7qnzOpKxjBpgagftMytCQZwZ1dGrO9hU053nWLmpL0Gni95q3rgMh0q58pPSPeGsoy6FzD9W41RFrCL3Nu8HuKN1ciyudYENbAbqAnjo+agdUd3JHwo06KMeKyvKeysPdb4fEFqoO3tMh1daZLDIB7lDdc7aF/aSekKVXk7PpdA7gC/si7bmffUAj0mvLx3J7co1uIni/gXr6XwP4jS4buhG163yn6wdUw/atRp4ZXSHMkWceAES7BE8mxBplc/XD5OnpCYEQ3I79i9xMTkC2TIIWIjp7OucWSqw2b0KM8uB7m0l5nLu1uKP3yiXXDXXLM+jDSnqGwQbAh0xK64F9hqNcl8CzHzZmbx7BwSAMhdOkvT05HG7xfBJ63eWGCap+3hgAJk9Pys1lcOHc0IjdWchcCPHsL3QV7nscq+fhEcreXQFIm46FDC7Nn66zomCP6SbcUHZetEOAO8D7nqBxEYNY8wDOj0BharZwyC3vZi/7PJnEM34KJ+RwsVZcX6W1BORm0DmCLwCsAyG0kfM8npdAQo2h3Fe6E3KuuOvrp0nAviiCWozADV9AqX4J5fdc9T2NOxS8SaCgMUc+7pjDrLEr3SJwrWALX7zECMOOe5xmA2UGaBtC4/JCyjAD8Lmlgnk8nL+gBljGXtvYwhah1eUxzE24x/NSchMzpg2pO6kl2CKBEHMo+yO3RbyAPU3YouynbRS74D+7OeKwBtsqIwAAAABJRU5ErkJggg==;direction=west;imageBackground=default;rotation=0;" vertex="1" parent="1"> <mxGeometry x="230.31000000000003" y="921.5" width="123.19" height="53" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-43" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="473.18" y="965" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-44" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" vertex="1" parent="1"> <mxGeometry x="486.84" y="953" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-45" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNy4zMDU0NjA5bW0iCiAgIGhlaWdodD0iMy4xODI4MzIybW0iCiAgIHZpZXdCb3g9IjAgMCA3LjMwNTQ2MDkgMy4xODI4MzIyIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjMgKDE6MS4zKzIwMjMwNzIzMTQ1OSswZTE1MGVkNmM0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iYmVoYXZpb3JfcGF0aF9wbGFubmVyLnN2ZyIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzEiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjMDAwMDAwIgogICAgIGJvcmRlcm9wYWNpdHk9IjAuMjUiCiAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6em9vbT0iMTkuMTA5NTAxIgogICAgIGlua3NjYXBlOmN4PSIxNzkuODMyMDEiCiAgICAgaW5rc2NhcGU6Y3k9IjQ4MC40NDE2MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3NzAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA5NiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNzAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPjxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPjxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MS4zMjMzMjMsLTEzMi4wNTM0MikiPjxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGlkPSJyZWN0MSIKICAgICAgIHdpZHRoPSI3LjE1NTQ2MzciCiAgICAgICBoZWlnaHQ9IjMuMDMyODMxNCIKICAgICAgIHg9IjUxLjM5ODMyMyIKICAgICAgIHk9IjEzMi4xMjg0MiIKICAgICAgIHJ5PSIwLjkzNTU2ODM5IiAvPjxwYXRoCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGQ9Im0gNTYuNjM1MjgyLDEzNC43OTk4NCAtMS4xNDEzNjUsLTAuMjQ1NSBtIDEuMTQxMzY1LC0yLjA1ODEgLTEuMTQxMzY1LDAuMjQ1NSBtIC0yLjYzNzE1NiwyLjA4NDY3IDEuMjM4Mzg3LC0wLjI5ODYzIG0gLTEuMjM4Mzg3LC0yLjA1ODExIDEuMjM4Mzg3LDAuMjk4NjQgbSAwLjczOTM5MSwxLjc3MDY4IHYgMC4zNTcyNyBtIDAsLTIuNDkzOTYgdiAwLjM1NzI3IG0gLTAuNzgyMjUxLC0wLjAxNDEgaCAxLjQ1ODQwMSB2IDEuODA3ODkgaCAtMS40NTg0MDEgeiBtIC0wLjg0MDE1NCwtMC4zMzA4MyBoIDIuOTE2Mzk4IGMgMC41ODkwMTksMCAxLjA2MzIxMiwwLjMzOTM5IDEuMDYzMjEyLDAuNzYwOTYgdiAwLjk0NDg4IGMgMCwwLjQyMTU3IC0wLjQ3NDE5MywwLjc2MDk2IC0xLjA2MzIxMiwwLjc2MDk2IGggLTIuOTE2Mzk4IGMgLTAuNTg5MDE5LDAgLTEuMDYzMjEyLC0wLjMzOTM5IC0xLjA2MzIxMiwtMC43NjA5NiB2IC0wLjk0NDg4IGMgMCwtMC40MjE1NyAwLjQ3NDE5MywtMC43NjA5NiAxLjA2MzIxMiwtMC43NjA5NiB6IiAvPjwvZz48L3N2Zz4K;points=[[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0.1,0,0,0,0],[0.1,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[0.89,0,0,0,0],[0.89,1,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0]];imageBackground=none;imageAspect=0;perimeter=none;" vertex="1" parent="1"> <mxGeometry x="387.50999999999993" y="1052" width="107.33" height="46" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-46" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;" edge="1" parent="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="462.84" y="946" as="sourcePoint" /> <mxPoint x="478.84" y="929" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-47" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0;entryY=0.875;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.369;exitY=0.304;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ty0ni0eQC3Mwg9WxKvAH-44"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="476.84" y="953" as="sourcePoint" /> <mxPoint x="478.84" y="929" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-48" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.406;entryY=0.732;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="467.84" y="959" as="sourcePoint" /> <mxPoint x="463.088" y="945.856" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-49" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.716;entryY=0.513;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="476.84" y="969" as="sourcePoint" /> <mxPoint x="467.90799999999996" y="959.104" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-50" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.716;entryY=0.513;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.366;exitY=0.246;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ty0ni0eQC3Mwg9WxKvAH-44"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="485.84" y="979" as="sourcePoint" /> <mxPoint x="476.90799999999996" y="969.104" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-51" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.008;exitY=0.543;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ty0ni0eQC3Mwg9WxKvAH-42" target="ty0ni0eQC3Mwg9WxKvAH-39"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="353.5" y="949" as="sourcePoint" /> <mxPoint x="403.5" y="899" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-52" value="&lt;font style=&quot;font-size: 14px;&quot;&gt;Closest Point&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontColor=#000000;" vertex="1" connectable="0" parent="ty0ni0eQC3Mwg9WxKvAH-51"> <mxGeometry x="-0.084" y="1" relative="1" as="geometry"> <mxPoint x="3" y="-7" as="offset" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-53" value="Filter out points outside clusters and get a 2D convex hull of each cluster" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=18;" vertex="1" parent="1"> <mxGeometry x="159" y="564" width="600" height="40" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-54" value="Find the closest vertex of the convex hull(s)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=18;" vertex="1" parent="1"> <mxGeometry x="301" y="832" width="370" height="40" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-55" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"> <mxGeometry x="535" y="673" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-56" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.x;fillColor=#FF0000;opacity=40;" vertex="1" parent="1"> <mxGeometry x="529" y="668" width="20" height="19" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> " + height="265px" + viewBox="-0.5 -0.5 616 265" + content="<mxfile host="app.diagrams.net" modified="2024-06-21T02:42:01.489Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" etag="3pgNd0JrTgvgM2V0BwGE" version="24.6.0" type="google" scale="1" border="0"> <diagram name="Page-1" id="nTw8mlOSOdTxmldlJuHK"> <mxGraphModel dx="1137" dy="783" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-1" value="" style="group;opacity=30;" parent="1" connectable="0" vertex="1"> <mxGeometry x="340" y="602" width="420" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-2" value="" style="group;fillColor=#dae8fc;strokeColor=#6c8ebf;container=0;" parent="ty0ni0eQC3Mwg9WxKvAH-1" connectable="0" vertex="1"> <mxGeometry width="420" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" parent="ty0ni0eQC3Mwg9WxKvAH-1" vertex="1"> <mxGeometry x="280" width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" parent="ty0ni0eQC3Mwg9WxKvAH-1" vertex="1"> <mxGeometry x="140" width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=40;strokeWidth=5;" parent="ty0ni0eQC3Mwg9WxKvAH-1" vertex="1"> <mxGeometry width="140" height="155" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-6" value="" style="group" parent="1" connectable="0" vertex="1"> <mxGeometry x="340" y="647" width="420" height="85" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-7" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" parent="ty0ni0eQC3Mwg9WxKvAH-6" vertex="1"> <mxGeometry x="280" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" parent="ty0ni0eQC3Mwg9WxKvAH-6" vertex="1"> <mxGeometry x="140" width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-9" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;opacity=40;strokeWidth=5;" parent="ty0ni0eQC3Mwg9WxKvAH-6" vertex="1"> <mxGeometry width="140" height="60" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-10" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTE5LjQ2IDQwIiBpZD0iTGF5ZXJfMiI+PGRlZnM+PHN0eWxlPi5jbHMtMXtjbGlwLXBhdGg6dXJsKCNjbGlwcGF0aCk7fS5jbHMtMntmaWxsOm5vbmU7fS5jbHMtMiwuY2xzLTN7c3Ryb2tlLXdpZHRoOjBweDt9LmNscy0ze2ZpbGw6IzIzMWYyMDt9PC9zdHlsZT48Y2xpcFBhdGggaWQ9ImNsaXBwYXRoIj48cmVjdCBoZWlnaHQ9IjQwIiB3aWR0aD0iMTE1LjExIiB4PSIuNSIgY2xhc3M9ImNscy0yIi8+PC9jbGlwUGF0aD48L2RlZnM+PGcgaWQ9IlJvYWRzIj48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSIzLjUiIHk9IjE5LjUiIHg9Ii41IiBjbGFzcz0iY2xzLTMiLz48cGF0aCBkPSJtMTA0LjksMjAuNWgtNy4yMXYtMWg3LjIxdjFabS0xNC40MSwwaC03LjIxdi0xaDcuMjF2MVptLTE0LjQxLDBoLTcuMjF2LTFoNy4yMXYxWm0tMTQuNDEsMGgtNy4yMXYtMWg3LjIxdjFabS0xNC40MSwwaC03LjIxdi0xaDcuMjF2MVptLTE0LjQxLDBoLTcuMjF2LTFoNy4yMXYxWm0tMTQuNDEsMGgtNy4yMXYtMWg3LjIxdjFaIiBjbGFzcz0iY2xzLTMiLz48cmVjdCBoZWlnaHQ9IjEiIHdpZHRoPSIzLjUiIHk9IjE5LjUiIHg9IjExMi4xMSIgY2xhc3M9ImNscy0zIi8+PGcgY2xhc3M9ImNscy0xIj48cG9seWdvbiBwb2ludHM9IjAgMi41OSAwIDMuNTIgMS4wMiAzLjUyIDEuMDIgMy41OSAxMTguNDYgMy41OSAxMTguNDYgMzYuNDEgMSAzNi40MSAxIDM2LjQgMCAzNi40IDAgMzcuNDEgMTE5LjQ2IDM3LjQxIDExOS40NiAyLjU5IDAgMi41OSIgY2xhc3M9ImNscy0zIi8+PC9nPjwvZz48L3N2Zz4=;" parent="1" vertex="1"> <mxGeometry x="180" y="618" width="595" height="200" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-11" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="456.7649999999999" y="677.5" as="targetPoint" /> <mxPoint x="350.0000000000002" y="677.4867690685733" as="sourcePoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-12" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNy4zMDU0NjA5bW0iCiAgIGhlaWdodD0iMy4xODI4MzIybW0iCiAgIHZpZXdCb3g9IjAgMCA3LjMwNTQ2MDkgMy4xODI4MzIyIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjMgKDE6MS4zKzIwMjMwNzIzMTQ1OSswZTE1MGVkNmM0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iYmVoYXZpb3JfcGF0aF9wbGFubmVyLnN2ZyIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzEiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjMDAwMDAwIgogICAgIGJvcmRlcm9wYWNpdHk9IjAuMjUiCiAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6em9vbT0iMTkuMTA5NTAxIgogICAgIGlua3NjYXBlOmN4PSIxNzkuODMyMDEiCiAgICAgaW5rc2NhcGU6Y3k9IjQ4MC40NDE2MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3NzAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA5NiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNzAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPjxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPjxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MS4zMjMzMjMsLTEzMi4wNTM0MikiPjxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGlkPSJyZWN0MSIKICAgICAgIHdpZHRoPSI3LjE1NTQ2MzciCiAgICAgICBoZWlnaHQ9IjMuMDMyODMxNCIKICAgICAgIHg9IjUxLjM5ODMyMyIKICAgICAgIHk9IjEzMi4xMjg0MiIKICAgICAgIHJ5PSIwLjkzNTU2ODM5IiAvPjxwYXRoCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGQ9Im0gNTYuNjM1MjgyLDEzNC43OTk4NCAtMS4xNDEzNjUsLTAuMjQ1NSBtIDEuMTQxMzY1LC0yLjA1ODEgLTEuMTQxMzY1LDAuMjQ1NSBtIC0yLjYzNzE1NiwyLjA4NDY3IDEuMjM4Mzg3LC0wLjI5ODYzIG0gLTEuMjM4Mzg3LC0yLjA1ODExIDEuMjM4Mzg3LDAuMjk4NjQgbSAwLjczOTM5MSwxLjc3MDY4IHYgMC4zNTcyNyBtIDAsLTIuNDkzOTYgdiAwLjM1NzI3IG0gLTAuNzgyMjUxLC0wLjAxNDEgaCAxLjQ1ODQwMSB2IDEuODA3ODkgaCAtMS40NTg0MDEgeiBtIC0wLjg0MDE1NCwtMC4zMzA4MyBoIDIuOTE2Mzk4IGMgMC41ODkwMTksMCAxLjA2MzIxMiwwLjMzOTM5IDEuMDYzMjEyLDAuNzYwOTYgdiAwLjk0NDg4IGMgMCwwLjQyMTU3IC0wLjQ3NDE5MywwLjc2MDk2IC0xLjA2MzIxMiwwLjc2MDk2IGggLTIuOTE2Mzk4IGMgLTAuNTg5MDE5LDAgLTEuMDYzMjEyLC0wLjMzOTM5IC0xLjA2MzIxMiwtMC43NjA5NiB2IC0wLjk0NDg4IGMgMCwtMC40MjE1NyAwLjQ3NDE5MywtMC43NjA5NiAxLjA2MzIxMiwtMC43NjA5NiB6IiAvPjwvZz48L3N2Zz4K;points=[[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0.1,0,0,0,0],[0.1,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[0.89,0,0,0,0],[0.89,1,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0]];imageBackground=none;imageAspect=0;perimeter=none;" parent="1" vertex="1"> <mxGeometry x="466.34" y="655" width="107.33" height="46" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-13" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="1" vertex="1"> <mxGeometry x="464" y="671" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-14" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="1" vertex="1"> <mxGeometry x="468.34000000000003" y="685" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-15" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="1" vertex="1"> <mxGeometry x="480" y="655" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-16" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1"> <mxGeometry x="472" y="665" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-17" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAAKwAAABKCAYAAAAmLL9HAAAACXBIWXMAADT9AAA1CgHHClLTAAAJN0lEQVR4nO2dQW7bOBSGfxezLJDMbnbJADWjXdwTVD1B3BNEPcGkJxjNCeKeYJQT1DlBlBPU2QlEgbF33U0MdJ9Z8KmRnkhTylgSJfMDhIC2adHML/LxkXycPD09oQmBEHMAIYAZXUeNvsBz6GwBrOhKMymXTTJP6gg2EOIUQAxgDi9Qz37ZAlgCiDMp17YP7xRsIMQxlFD/2FPhPJ5dfIYS7qPpA0bBBkLMoJR/0k7ZPB4tGwDzTMqV7k2tYAMhIgAL6Lv/vAlPAaxMX+wpEwhRquhMyklfZekTaghnUOMgk4m5BXCVSZnwNyqCJbH+bfiSBYDFribbo8cLtgqZnFd06YT7kYu2JFhSf6rJfAsg8kJ9OV6wZki4CYAL9tYWQFjsxX8KljKtULVZbzIpo7YKeyh4wdoJhEgAXLKXNwBmeWP5S+GNGAMUK/UKIYBj+jsIAiHSvsvQEo8o+1lr98qZlFEgBFAW7QmUyRAD1MKSn/Uflv82k3L+8nK3RyBECCCC9wsPgVsAS90AykQgxBJV8+D3TMr1K0rE7M0tlCCcIhAiCoRYA7iDegq9WN3nAsDfgRBrmiWtQwSlwSIxAOSC5V/klCcgEGIWCLGC8l54v/AwOQHwJRBiSeMlI6S9BXt5DgCTs+l0DuBL4Y0tgFNXBBsIcQXg2vKxeyjvxpqutnkD5Ut8DeA3umycs/TDvgvVAt/p+gFlk36rkafoZzU1Lg9QXiejD59EvUa5F/0wOZtOFyhPvToz0DKMGnPuASRNbKP/WZYQ3m7OJ42STMrU9mGqsxjAO8N3hRbRJij//z9PzqbTlH1hxVnbBzSK1v3Qe6j55rSjcsyguiddWQ6Ze6jZKOtMJwk3QbXFLbmsNPkilCex7l9BNd9Fep9qpSdLJ5BPmZRhh2JdAPhqKMuh8w7AV6qjndD/a4aqGXQC1WKb4FqcTc6mU6cc2oEQMYA/2cvW7mPPZTiGsom53Vkkt5tzv+MYCQt/dz20D1D/H+u4x9Bzfsqk1AqfT7g4JVjqOu7Yyy6JdQNlky1dGZR2BdXLHPoJJqCmaA31axzoc8G+4h/omYSlXRHrFsq2P82kTA5NrIByNdFvPwXwEVU/6TmAtKbLKmIvH0HNZllxRrBkCvAnt5ZRv0cW0LufZi4MRF2B6kJnk56j6j/V5V8BuGEvR3Xu7YRgC8vMitx2KRKaheEutLybW3dVjqFAdRKiKtrLmjNaMUufkEdmJ04IFnrfZq0uYo/wliE3Rw6u+68L1U2IqnlQp5VdQ60zKGIVuiuC5eK86bJVI38fN0fmXqx2qI640E6oTm2kLB3aMvQuWFopxu1G6xO6Z2KWvunK1zsGqK64TRrXyMrHJ6e2DL0LFtWn6qHLgRbZTbx1jbu6/4iIWdpqk2oaBevCJhcFm3Z8f96dPfhBVnOozvgAbO/rqV0Q7ClLpx3fn7cCScf3HxMJS1tH/U1xQbD8R607vv8pS491mrULGtukTfnF/pHWKbmzeohzwAd8Tgu2sMwxxLPNt4HqmWot+2sRXne71mK8CBdaWKdw1ZUVCHFMe53y7UHFAcoJvXZXZ0V/W3RRd16wA6CwxoFvzNNxgRpz+kPFC3YYJGjWvZ5jpINHL1jHIZuVt6wbqNVjEwC/Qq2e2rDPXFDeUeEF6z4RS+fbShLgedkflLeFi5bnHTxesO4TsrQ2fiq9FlvyDh4vWPfh05XGPVCa5Ziji+HgBTswdrmOxuoZKOIF6z4lu9SybI/P3XObdvB4wbpPytKxriUtnEexK+/gcWFq1rObBNXwkyvaA5fbs6bdrEm7Rese38I6Dq0N4FtJTqAiovxLly5I3u0YF6F7wQ6DCM2Cxz1ghD5YwAt2EBQ2+/GWVsctRrx50tuwAyHf7Of48sLW8YIdGCTItOdi9IY3CRiH4Hxviy7qzgXBloIw1In+sWf4YKbr+48JXnd7jzLugmBb3wdkYc3SXrAvp/X9eS4Ids3SYcf35w9M1PH9x0TE0nvfH+eCYFOWDju+P1/9dE7RaDwNMETw2RVd+0W4KNjzLu1Y2qXLF4nEXd1/RMQsvbHtgNbsiLAu1uldsIaIIV1HLoxZ+nKM20vaguqKhyqNa2RtbPP2LliCB3+77LJbpoXP/Onubbv0kKA64l3/pmZs35ClU1sGVwS7xAtijO4Z3qofYcTbpfdBYft549i+1CDxzZVWm9cJwRqOaryoGWN0X2VYohoyMo/bf9pVOYYC1UmK6kDrhurSRszSVpsXcESwAJBJGaPaLS86nki4gj5u/4qOEPXg53GqK+jPg6jTus5QtXmTOvd2RrBExNJ5t9yJaAurorhojwBc04nU0SGaCRQqKT9N/RpVM6DJsUcJe3mLmiagU+d0AYM8WA4Y72KUGYBjOHaw3CPKT8vbHiIIlthxKLLxh7VUjgXKB0d7qnzOpKxjBpgagftMytCQZwZ1dGrO9hU053nWLmpL0Gni95q3rgMh0q58pPSPeGsoy6FzD9W41RFrCL3Nu8HuKN1ciyudYENbAbqAnjo+agdUd3JHwo06KMeKyvKeysPdb4fEFqoO3tMh1daZLDIB7lDdc7aF/aSekKVXk7PpdA7gC/si7bmffUAj0mvLx3J7co1uIni/gXr6XwP4jS4buhG163yn6wdUw/atRp4ZXSHMkWceAES7BE8mxBplc/XD5OnpCYEQ3I79i9xMTkC2TIIWIjp7OucWSqw2b0KM8uB7m0l5nLu1uKP3yiXXDXXLM+jDSnqGwQbAh0xK64F9hqNcl8CzHzZmbx7BwSAMhdOkvT05HG7xfBJ63eWGCap+3hgAJk9Pys1lcOHc0IjdWchcCPHsL3QV7nscq+fhEcreXQFIm46FDC7Nn66zomCP6SbcUHZetEOAO8D7nqBxEYNY8wDOj0BharZwyC3vZi/7PJnEM34KJ+RwsVZcX6W1BORm0DmCLwCsAyG0kfM8npdAQo2h3Fe6E3KuuOvrp0nAviiCWozADV9AqX4J5fdc9T2NOxS8SaCgMUc+7pjDrLEr3SJwrWALX7zECMOOe5xmA2UGaBtC4/JCyjAD8Lmlgnk8nL+gBljGXtvYwhah1eUxzE24x/NSchMzpg2pO6kl2CKBEHMo+yO3RbyAPU3YouynbRS74D+7OeKwBtsqIwAAAABJRU5ErkJggg==;direction=west;imageBackground=default;rotation=0;" parent="1" vertex="1"> <mxGeometry x="235.47000000000003" y="651.5" width="123.19" height="53" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-18" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1"> <mxGeometry x="482" y="673" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-19" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="1" vertex="1"> <mxGeometry x="478.34000000000003" y="695" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-20" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#60a917;strokeColor=#2D7600;fontColor=#ffffff;" parent="1" vertex="1"> <mxGeometry x="492" y="683" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-21" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNy4zMDU0NjA5bW0iCiAgIGhlaWdodD0iMy4xODI4MzIybW0iCiAgIHZpZXdCb3g9IjAgMCA3LjMwNTQ2MDkgMy4xODI4MzIyIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjMgKDE6MS4zKzIwMjMwNzIzMTQ1OSswZTE1MGVkNmM0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iYmVoYXZpb3JfcGF0aF9wbGFubmVyLnN2ZyIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzEiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjMDAwMDAwIgogICAgIGJvcmRlcm9wYWNpdHk9IjAuMjUiCiAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIGlua3NjYXBlOmRlc2tjb2xvcj0iI2QxZDFkMSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6em9vbT0iMTkuMTA5NTAxIgogICAgIGlua3NjYXBlOmN4PSIxNzkuODMyMDEiCiAgICAgaW5rc2NhcGU6Y3k9IjQ4MC40NDE2MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3NzAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA5NiIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNzAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPjxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPjxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MS4zMjMzMjMsLTEzMi4wNTM0MikiPjxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGlkPSJyZWN0MSIKICAgICAgIHdpZHRoPSI3LjE1NTQ2MzciCiAgICAgICBoZWlnaHQ9IjMuMDMyODMxNCIKICAgICAgIHg9IjUxLjM5ODMyMyIKICAgICAgIHk9IjEzMi4xMjg0MiIKICAgICAgIHJ5PSIwLjkzNTU2ODM5IiAvPjxwYXRoCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojZjhjZWNjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjE1O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIKICAgICAgIGQ9Im0gNTYuNjM1MjgyLDEzNC43OTk4NCAtMS4xNDEzNjUsLTAuMjQ1NSBtIDEuMTQxMzY1LC0yLjA1ODEgLTEuMTQxMzY1LDAuMjQ1NSBtIC0yLjYzNzE1NiwyLjA4NDY3IDEuMjM4Mzg3LC0wLjI5ODYzIG0gLTEuMjM4Mzg3LC0yLjA1ODExIDEuMjM4Mzg3LDAuMjk4NjQgbSAwLjczOTM5MSwxLjc3MDY4IHYgMC4zNTcyNyBtIDAsLTIuNDkzOTYgdiAwLjM1NzI3IG0gLTAuNzgyMjUxLC0wLjAxNDEgaCAxLjQ1ODQwMSB2IDEuODA3ODkgaCAtMS40NTg0MDEgeiBtIC0wLjg0MDE1NCwtMC4zMzA4MyBoIDIuOTE2Mzk4IGMgMC41ODkwMTksMCAxLjA2MzIxMiwwLjMzOTM5IDEuMDYzMjEyLDAuNzYwOTYgdiAwLjk0NDg4IGMgMCwwLjQyMTU3IC0wLjQ3NDE5MywwLjc2MDk2IC0xLjA2MzIxMiwwLjc2MDk2IGggLTIuOTE2Mzk4IGMgLTAuNTg5MDE5LDAgLTEuMDYzMjEyLC0wLjMzOTM5IC0xLjA2MzIxMiwtMC43NjA5NiB2IC0wLjk0NDg4IGMgMCwtMC40MjE1NyAwLjQ3NDE5MywtMC43NjA5NiAxLjA2MzIxMiwtMC43NjA5NiB6IiAvPjwvZz48L3N2Zz4K;points=[[0,0.25,0,0,0],[0,0.5,0,0,0],[0,0.75,0,0,0],[0.1,0,0,0,0],[0.1,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.75,0,0,0,0],[0.75,1,0,0,0],[0.89,0,0,0,0],[0.89,1,0,0,0],[1,0.25,0,0,0],[1,0.5,0,0,0],[1,0.75,0,0,0]];imageBackground=none;imageAspect=0;perimeter=none;" parent="1" vertex="1"> <mxGeometry x="392.66999999999996" y="782" width="107.33" height="46" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-22" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="468" y="676" as="sourcePoint" /> <mxPoint x="484" y="659" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-23" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0;entryY=0.875;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.369;exitY=0.304;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="ty0ni0eQC3Mwg9WxKvAH-20" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="482" y="683" as="sourcePoint" /> <mxPoint x="484" y="659" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-24" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1"> <mxGeometry x="481" y="684" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-25" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.406;entryY=0.732;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="473" y="689" as="sourcePoint" /> <mxPoint x="468.24800000000005" y="675.856" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-26" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.716;entryY=0.513;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="482" y="699" as="sourcePoint" /> <mxPoint x="473.068" y="689.104" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-27" value="" style="endArrow=none;html=1;rounded=0;fillColor=#60a917;strokeColor=#2D7600;entryX=0.716;entryY=0.513;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.366;exitY=0.246;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="ty0ni0eQC3Mwg9WxKvAH-20" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="491" y="709" as="sourcePoint" /> <mxPoint x="482.068" y="699.104" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-53" value="Filter out points outside clusters and get a 2D convex hull of each cluster" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=18;" parent="1" vertex="1"> <mxGeometry x="159" y="564" width="600" height="40" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-55" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1"> <mxGeometry x="535" y="673" width="8" height="8" as="geometry" /> </mxCell> <mxCell id="ty0ni0eQC3Mwg9WxKvAH-56" value="" style="verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.x;fillColor=#FF0000;opacity=40;" parent="1" vertex="1"> <mxGeometry x="529" y="668" width="20" height="19" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> " style="background-color: rgb(255, 255, 255);" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ + -
-
- Closest Point -
-
-
-
- -
-
-
- - - - - - - -
-
-
- Filter out points outside clusters and get a 2D convex hull of each cluster -
-
-
-
- -
-
-
- - - - - - - -
-
-
- Find the closest vertex of the convex hull(s) -
-
-
-
- -
+ + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Filter out points outside clusters and get a 2D convex hull of each cluster +
+
+
+
+ +
+
+
+
+ + + + + + + + + +
- - - - - -
diff --git a/control/autoware_autonomous_emergency_braking/image/using-predicted-objects.drawio.svg b/control/autoware_autonomous_emergency_braking/image/using-predicted-objects.drawio.svg new file mode 100644 index 0000000000000..244b609c7f009 --- /dev/null +++ b/control/autoware_autonomous_emergency_braking/image/using-predicted-objects.drawio.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Ego path footprint and object polygon intersection points +
+
+
+
+ +
+
+
+
+
diff --git a/control/autoware_autonomous_emergency_braking/include/autoware/autonomous_emergency_braking/node.hpp b/control/autoware_autonomous_emergency_braking/include/autoware/autonomous_emergency_braking/node.hpp index 1096def70d483..f6df46440d841 100644 --- a/control/autoware_autonomous_emergency_braking/include/autoware/autonomous_emergency_braking/node.hpp +++ b/control/autoware_autonomous_emergency_braking/include/autoware/autonomous_emergency_braking/node.hpp @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -59,15 +60,17 @@ using nav_msgs::msg::Odometry; using sensor_msgs::msg::Imu; using sensor_msgs::msg::PointCloud2; using PointCloud = pcl::PointCloud; +using autoware::universe_utils::Polygon2d; using autoware::vehicle_info_utils::VehicleInfo; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using diagnostic_updater::DiagnosticStatusWrapper; using diagnostic_updater::Updater; using visualization_msgs::msg::Marker; using visualization_msgs::msg::MarkerArray; using Path = std::vector; using Vector3 = geometry_msgs::msg::Vector3; +using autoware_perception_msgs::msg::PredictedObject; +using autoware_perception_msgs::msg::PredictedObjects; + struct ObjectData { rclcpp::Time stamp; @@ -116,12 +119,12 @@ class CollisionDataKeeper return this->checkObjectDataExpired(prev_closest_object_, previous_obstacle_keep_time_); } - ObjectData get() const + [[nodiscard]] ObjectData get() const { return (closest_object_.has_value()) ? closest_object_.value() : ObjectData(); } - ObjectData getPreviousObjectData() const + [[nodiscard]] ObjectData getPreviousObjectData() const { return (prev_closest_object_.has_value()) ? prev_closest_object_.value() : ObjectData(); } @@ -152,20 +155,21 @@ class CollisionDataKeeper }), obstacle_velocity_history_.end()); obstacle_velocity_history_.emplace_back( - std::make_pair(current_object_velocity, current_object_velocity_time_stamp)); + current_object_velocity, current_object_velocity_time_stamp); } - std::optional getMedianObstacleVelocity() const + [[nodiscard]] std::optional getMedianObstacleVelocity() const { if (obstacle_velocity_history_.empty()) return std::nullopt; std::vector raw_velocities; + raw_velocities.reserve(obstacle_velocity_history_.size()); for (const auto & vel_time_pair : obstacle_velocity_history_) { raw_velocities.emplace_back(vel_time_pair.first); } const size_t med1 = (raw_velocities.size() % 2 == 0) ? (raw_velocities.size()) / 2 - 1 - : (raw_velocities.size()) / 2.0; - const size_t med2 = (raw_velocities.size()) / 2.0; + : (raw_velocities.size()) / 2; + const size_t med2 = (raw_velocities.size()) / 2; std::nth_element(raw_velocities.begin(), raw_velocities.begin() + med1, raw_velocities.end()); const double vel1 = raw_velocities.at(med1); std::nth_element(raw_velocities.begin(), raw_velocities.begin() + med2, raw_velocities.end()); @@ -176,6 +180,13 @@ class CollisionDataKeeper std::optional calcObjectSpeedFromHistory( const ObjectData & closest_object, const Path & path, const double current_ego_speed) { + // in case the object comes from predicted objects info, we reuse the speed. + if (std::abs(closest_object.velocity) > std::numeric_limits::epsilon()) { + this->setPreviousObjectData(closest_object); + this->updateVelocityHistory(closest_object.velocity, closest_object.stamp); + return this->getMedianObstacleVelocity(); + } + if (this->checkPreviousObjectDataExpired()) { this->setPreviousObjectData(closest_object); this->resetVelocityHistory(); @@ -197,7 +208,7 @@ class CollisionDataKeeper const double p_vel = p_dist / p_dt; const auto nearest_idx = - autoware_motion_utils::findNearestIndex(path, nearest_collision_point); + autoware::motion_utils::findNearestIndex(path, nearest_collision_point); const auto & nearest_path_pose = path.at(nearest_idx); // When the ego moves backwards, the direction of movement axis is reversed const auto & traj_yaw = (current_ego_speed > 0.0) @@ -207,7 +218,7 @@ class CollisionDataKeeper p_vel * std::cos(p_yaw - traj_yaw) + std::abs(current_ego_speed); // Current RSS distance calculation does not account for negative velocities - return (estimated_velocity > 0.0) ? estimated_velocity : 0.0; + return estimated_velocity; }); if (!estimated_velocity_opt.has_value()) { @@ -236,14 +247,16 @@ class AEB : public rclcpp::Node explicit AEB(const rclcpp::NodeOptions & node_options); // subscriber - autoware_universe_utils::InterProcessPollingSubscriber sub_point_cloud_{ - this, "~/input/pointcloud", autoware_universe_utils::SingleDepthSensorQoS()}; - autoware_universe_utils::InterProcessPollingSubscriber sub_velocity_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_point_cloud_{ + this, "~/input/pointcloud", autoware::universe_utils::SingleDepthSensorQoS()}; + autoware::universe_utils::InterProcessPollingSubscriber sub_velocity_{ this, "~/input/velocity"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_imu_{this, "~/input/imu"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_predicted_traj_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_imu_{this, "~/input/imu"}; + autoware::universe_utils::InterProcessPollingSubscriber sub_predicted_traj_{ this, "~/input/predicted_trajectory"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_autoware_state_{ + autoware::universe_utils::InterProcessPollingSubscriber predicted_objects_sub_{ + this, "~/input/objects"}; + autoware::universe_utils::InterProcessPollingSubscriber sub_autoware_state_{ this, "/autoware/state"}; // publisher rclcpp::Publisher::SharedPtr pub_obstacle_pointcloud_; @@ -275,6 +288,10 @@ class AEB : public rclcpp::Node std::vector & objects, const pcl::PointCloud::Ptr obstacle_points_ptr); + void createObjectDataUsingPredictedObjects( + const Path & ego_path, const std::vector & ego_polys, + std::vector & objects); + void cropPointCloudWithEgoFootprintPath( const std::vector & ego_polys, pcl::PointCloud::Ptr filtered_objects); @@ -298,6 +315,7 @@ class AEB : public rclcpp::Node VelocityReport::ConstSharedPtr current_velocity_ptr_{nullptr}; Vector3::SharedPtr angular_velocity_ptr_{nullptr}; Trajectory::ConstSharedPtr predicted_traj_ptr_{nullptr}; + PredictedObjects::ConstSharedPtr predicted_objects_ptr_{nullptr}; AutowareState::ConstSharedPtr autoware_state_{nullptr}; tf2_ros::Buffer tf_buffer_{get_clock()}; @@ -313,6 +331,8 @@ class AEB : public rclcpp::Node bool publish_debug_pointcloud_; bool use_predicted_trajectory_; bool use_imu_path_; + bool use_pointcloud_data_; + bool use_predicted_object_data_; bool use_object_velocity_calculation_; double path_footprint_extra_margin_; double detection_range_min_height_; @@ -327,6 +347,7 @@ class AEB : public rclcpp::Node double a_ego_min_; double a_obj_min_; double cluster_tolerance_; + double cluster_minimum_height_; int minimum_cluster_size_; int maximum_cluster_size_; double imu_prediction_time_horizon_; diff --git a/control/autoware_autonomous_emergency_braking/include/autoware/autonomous_emergency_braking/utils.hpp b/control/autoware_autonomous_emergency_braking/include/autoware/autonomous_emergency_braking/utils.hpp new file mode 100644 index 0000000000000..4a6bc0ce2c11f --- /dev/null +++ b/control/autoware_autonomous_emergency_braking/include/autoware/autonomous_emergency_braking/utils.hpp @@ -0,0 +1,87 @@ +// Copyright 2024 TIER IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef AUTOWARE__AUTONOMOUS_EMERGENCY_BRAKING__UTILS_HPP_ +#define AUTOWARE__AUTONOMOUS_EMERGENCY_BRAKING__UTILS_HPP_ + +#include + +#include +#include +#include + +#include + +#include +#ifdef ROS_DISTRO_GALACTIC +#include +#include +#else +#include + +#include +#endif + +#include + +namespace autoware::motion::control::autonomous_emergency_braking::utils +{ +using autoware::universe_utils::Polygon2d; +using autoware_perception_msgs::msg::PredictedObject; +using autoware_perception_msgs::msg::PredictedObjects; +using geometry_msgs::msg::Point; +using geometry_msgs::msg::Pose; +using geometry_msgs::msg::TransformStamped; + +/** + * @brief Apply a transform to a predicted object + * @param input the predicted object + * @param transform_stamped the tf2 transform + */ +PredictedObject transformObjectFrame( + const PredictedObject & input, geometry_msgs::msg::TransformStamped & transform_stamped); + +/** + * @brief Get the predicted objects polygon as a geometry polygon + * @param current_pose the predicted object's pose + * @param obj_shape the object's shape + */ +Polygon2d convertPolygonObjectToGeometryPolygon( + const Pose & current_pose, const autoware_perception_msgs::msg::Shape & obj_shape); + +/** + * @brief Get the predicted objects cylindrical shape as a geometry polygon + * @param current_pose the predicted object's pose + * @param obj_shape the object's shape + */ +Polygon2d convertCylindricalObjectToGeometryPolygon( + const Pose & current_pose, const autoware_perception_msgs::msg::Shape & obj_shape); + +/** + * @brief Get the predicted objects bounding box shape as a geometry polygon + * @param current_pose the predicted object's pose + * @param obj_shape the object's shape + */ +Polygon2d convertBoundingBoxObjectToGeometryPolygon( + const Pose & current_pose, const double & base_to_front, const double & base_to_rear, + const double & base_to_width); + +/** + * @brief Get the predicted object's shape as a geometry polygon + * @param obj the object + */ +Polygon2d convertObjToPolygon(const PredictedObject & obj); +} // namespace autoware::motion::control::autonomous_emergency_braking::utils + +#endif // AUTOWARE__AUTONOMOUS_EMERGENCY_BRAKING__UTILS_HPP_ diff --git a/control/autoware_autonomous_emergency_braking/launch/autoware_autonomous_emergency_braking.launch.xml b/control/autoware_autonomous_emergency_braking/launch/autoware_autonomous_emergency_braking.launch.xml index 75b1a9dcf822d..fe0df41ca89c7 100644 --- a/control/autoware_autonomous_emergency_braking/launch/autoware_autonomous_emergency_braking.launch.xml +++ b/control/autoware_autonomous_emergency_braking/launch/autoware_autonomous_emergency_braking.launch.xml @@ -5,6 +5,7 @@ + @@ -15,5 +16,6 @@ + diff --git a/control/autoware_autonomous_emergency_braking/src/node.cpp b/control/autoware_autonomous_emergency_braking/src/node.cpp index 29ba9474b6e8e..fb0fc2d043cc5 100644 --- a/control/autoware_autonomous_emergency_braking/src/node.cpp +++ b/control/autoware_autonomous_emergency_braking/src/node.cpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "autoware/autonomous_emergency_braking/node.hpp" - +#include +#include #include #include #include @@ -21,7 +21,11 @@ #include #include +#include + #include +#include +#include #include #include @@ -35,6 +39,9 @@ #include #include #include + +#include +#include #ifdef ROS_DISTRO_GALACTIC #include #include @@ -46,6 +53,8 @@ namespace autoware::motion::control::autonomous_emergency_braking { +using autoware::motion::control::autonomous_emergency_braking::utils::convertObjToPolygon; +using autoware::universe_utils::Point2d; using diagnostic_msgs::msg::DiagnosticStatus; namespace bg = boost::geometry; @@ -70,37 +79,37 @@ Polygon2d createPolygon( appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_pose, longitudinal_offset, width, 0.0).position); + autoware::universe_utils::calcOffsetPose(base_pose, longitudinal_offset, width, 0.0).position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_pose, longitudinal_offset, -width, 0.0).position); + autoware::universe_utils::calcOffsetPose(base_pose, longitudinal_offset, -width, 0.0).position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_pose, -rear_overhang, -width, 0.0).position); + autoware::universe_utils::calcOffsetPose(base_pose, -rear_overhang, -width, 0.0).position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_pose, -rear_overhang, width, 0.0).position); + autoware::universe_utils::calcOffsetPose(base_pose, -rear_overhang, width, 0.0).position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_pose, longitudinal_offset, width, 0.0).position); + autoware::universe_utils::calcOffsetPose(next_pose, longitudinal_offset, width, 0.0).position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_pose, longitudinal_offset, -width, 0.0).position); + autoware::universe_utils::calcOffsetPose(next_pose, longitudinal_offset, -width, 0.0).position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_pose, -rear_overhang, -width, 0.0).position); + autoware::universe_utils::calcOffsetPose(next_pose, -rear_overhang, -width, 0.0).position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_pose, -rear_overhang, width, 0.0).position); + autoware::universe_utils::calcOffsetPose(next_pose, -rear_overhang, width, 0.0).position); - polygon = autoware_universe_utils::isClockwise(polygon) + polygon = autoware::universe_utils::isClockwise(polygon) ? polygon - : autoware_universe_utils::inverseClockwise(polygon); + : autoware::universe_utils::inverseClockwise(polygon); Polygon2d hull_polygon; bg::convex_hull(polygon, hull_polygon); - + bg::correct(hull_polygon); return hull_polygon; } @@ -124,6 +133,8 @@ AEB::AEB(const rclcpp::NodeOptions & node_options) publish_debug_pointcloud_ = declare_parameter("publish_debug_pointcloud"); use_predicted_trajectory_ = declare_parameter("use_predicted_trajectory"); use_imu_path_ = declare_parameter("use_imu_path"); + use_pointcloud_data_ = declare_parameter("use_pointcloud_data"); + use_predicted_object_data_ = declare_parameter("use_predicted_object_data"); use_object_velocity_calculation_ = declare_parameter("use_object_velocity_calculation"); path_footprint_extra_margin_ = declare_parameter("path_footprint_extra_margin"); detection_range_min_height_ = declare_parameter("detection_range_min_height"); @@ -140,6 +151,7 @@ AEB::AEB(const rclcpp::NodeOptions & node_options) a_obj_min_ = declare_parameter("a_obj_min"); cluster_tolerance_ = declare_parameter("cluster_tolerance"); + cluster_minimum_height_ = declare_parameter("cluster_minimum_height"); minimum_cluster_size_ = declare_parameter("minimum_cluster_size"); maximum_cluster_size_ = declare_parameter("maximum_cluster_size"); @@ -168,10 +180,12 @@ AEB::AEB(const rclcpp::NodeOptions & node_options) rcl_interfaces::msg::SetParametersResult AEB::onParameter( const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; updateParam(parameters, "publish_debug_pointcloud", publish_debug_pointcloud_); updateParam(parameters, "use_predicted_trajectory", use_predicted_trajectory_); updateParam(parameters, "use_imu_path", use_imu_path_); + updateParam(parameters, "use_pointcloud_data", use_pointcloud_data_); + updateParam(parameters, "use_predicted_object_data", use_predicted_object_data_); updateParam( parameters, "use_object_velocity_calculation", use_object_velocity_calculation_); updateParam(parameters, "path_footprint_extra_margin", path_footprint_extra_margin_); @@ -189,6 +203,7 @@ rcl_interfaces::msg::SetParametersResult AEB::onParameter( updateParam(parameters, "a_obj_min", a_obj_min_); updateParam(parameters, "cluster_tolerance", cluster_tolerance_); + updateParam(parameters, "cluster_minimum_height", cluster_minimum_height_); updateParam(parameters, "minimum_cluster_size", minimum_cluster_size_); updateParam(parameters, "maximum_cluster_size", maximum_cluster_size_); @@ -298,13 +313,31 @@ bool AEB::fetchLatestData() return missing("ego velocity"); } - const auto pointcloud_ptr = sub_point_cloud_.takeData(); - if (!pointcloud_ptr) { - return missing("object pointcloud message"); + if (use_pointcloud_data_) { + const auto pointcloud_ptr = sub_point_cloud_.takeData(); + if (!pointcloud_ptr) { + return missing("object pointcloud message"); + } + + onPointCloud(pointcloud_ptr); + if (!obstacle_ros_pointcloud_ptr_) { + return missing("object pointcloud"); + } + } else { + obstacle_ros_pointcloud_ptr_.reset(); } - onPointCloud(pointcloud_ptr); - if (!obstacle_ros_pointcloud_ptr_) { - return missing("object pointcloud"); + + if (use_predicted_object_data_) { + predicted_objects_ptr_ = predicted_objects_sub_.takeData(); + if (!predicted_objects_ptr_) { + return missing("predicted objects"); + } + } else { + predicted_objects_ptr_.reset(); + } + + if (!obstacle_ros_pointcloud_ptr_ && !predicted_objects_ptr_) { + return missing("object detection method (pointcloud or predicted objects)"); } const auto imu_ptr = sub_imu_.takeData(); @@ -381,27 +414,33 @@ bool AEB::checkCollision(MarkerArray & debug_markers) const auto & path, const colorTuple & debug_colors, const std::string & debug_ns, pcl::PointCloud::Ptr filtered_objects) { - // Crop out Pointcloud using an extra wide ego path - const auto expanded_ego_polys = - generatePathFootprint(path, expand_width_ + path_footprint_extra_margin_); - cropPointCloudWithEgoFootprintPath(expanded_ego_polys, filtered_objects); - // Check which points of the cropped point cloud are on the ego path, and get the closest one - std::vector objects_from_point_clusters; const auto ego_polys = generatePathFootprint(path, expand_width_); - const auto current_time = obstacle_ros_pointcloud_ptr_->header.stamp; - createObjectDataUsingPointCloudClusters( - path, ego_polys, current_time, objects_from_point_clusters, filtered_objects); + auto objects = std::invoke([&]() { + std::vector objects; + // Crop out Pointcloud using an extra wide ego path + if (use_pointcloud_data_) { + const auto expanded_ego_polys = + generatePathFootprint(path, expand_width_ + path_footprint_extra_margin_); + cropPointCloudWithEgoFootprintPath(expanded_ego_polys, filtered_objects); + const auto current_time = obstacle_ros_pointcloud_ptr_->header.stamp; + createObjectDataUsingPointCloudClusters( + path, ego_polys, current_time, objects, filtered_objects); + } + if (use_predicted_object_data_) { + createObjectDataUsingPredictedObjects(path, ego_polys, objects); + } + return objects; + }); // Get only the closest object and calculate its speed const auto closest_object_point = std::invoke([&]() -> std::optional { - const auto closest_object_point_itr = std::min_element( - objects_from_point_clusters.begin(), objects_from_point_clusters.end(), - [](const auto & o1, const auto & o2) { + const auto closest_object_point_itr = + std::min_element(objects.begin(), objects.end(), [](const auto & o1, const auto & o2) { return o1.distance_to_object < o2.distance_to_object; }); - if (closest_object_point_itr == objects_from_point_clusters.end()) { + if (closest_object_point_itr == objects.end()) { return std::nullopt; } const auto closest_object_speed = (use_object_velocity_calculation_) @@ -419,8 +458,8 @@ bool AEB::checkCollision(MarkerArray & debug_markers) { const auto [color_r, color_g, color_b, color_a] = debug_colors; addMarker( - this->get_clock()->now(), path, ego_polys, objects_from_point_clusters, - closest_object_point, color_r, color_g, color_b, color_a, debug_ns, debug_markers); + this->get_clock()->now(), path, ego_polys, objects, closest_object_point, color_r, color_g, + color_b, color_a, debug_ns, debug_markers); } // check collision using rss distance return (closest_object_point.has_value()) @@ -462,9 +501,9 @@ bool AEB::checkCollision(MarkerArray & debug_markers) // Debug print if (!filtered_objects->empty() && publish_debug_pointcloud_) { - const auto filtered_objects_ros_pointcloud_ptr_ = std::make_shared(); - pcl::toROSMsg(*filtered_objects, *filtered_objects_ros_pointcloud_ptr_); - pub_obstacle_pointcloud_->publish(*filtered_objects_ros_pointcloud_ptr_); + const auto filtered_objects_ros_pointcloud_ptr = std::make_shared(); + pcl::toROSMsg(*filtered_objects, *filtered_objects_ros_pointcloud_ptr); + pub_obstacle_pointcloud_->publish(*filtered_objects_ros_pointcloud_ptr); } return has_collision; } @@ -473,9 +512,17 @@ bool AEB::hasCollision(const double current_v, const ObjectData & closest_object { const double & obj_v = closest_object.velocity; const double & t = t_response_; - const double rss_dist = std::abs(current_v) * t + - (current_v * current_v) / (2 * std::fabs(a_ego_min_)) - - obj_v * obj_v / (2 * std::fabs(a_obj_min_)) + longitudinal_offset_; + + const double rss_dist = std::invoke([&]() { + const double pre_braking_covered_distance = std::abs(current_v) * t; + const double braking_distance = (current_v * current_v) / (2 * std::fabs(a_ego_min_)); + const double ego_stopping_distance = pre_braking_covered_distance + braking_distance; + const double obj_braking_distance = (obj_v > 0.0) + ? -(obj_v * obj_v) / (2 * std::fabs(a_obj_min_)) + : (obj_v * obj_v) / (2 * std::fabs(a_obj_min_)); + return ego_stopping_distance + obj_braking_distance + longitudinal_offset_; + }); + if (closest_object.distance_to_object < rss_dist) { // collision happens ObjectData collision_data = closest_object; @@ -494,8 +541,8 @@ Path AEB::generateEgoPath(const double curr_v, const double curr_w) double curr_y = 0.0; double curr_yaw = 0.0; geometry_msgs::msg::Pose ini_pose; - ini_pose.position = autoware_universe_utils::createPoint(curr_x, curr_y, 0.0); - ini_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(curr_yaw); + ini_pose.position = autoware::universe_utils::createPoint(curr_x, curr_y, 0.0); + ini_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(curr_yaw); path.push_back(ini_pose); if (std::abs(curr_v) < 0.1) { @@ -503,7 +550,7 @@ Path AEB::generateEgoPath(const double curr_v, const double curr_w) return path; } - constexpr double epsilon = 1e-6; + constexpr double epsilon = std::numeric_limits::epsilon(); const double & dt = imu_prediction_time_interval_; const double & horizon = imu_prediction_time_horizon_; for (double t = 0.0; t < horizon + epsilon; t += dt) { @@ -511,23 +558,23 @@ Path AEB::generateEgoPath(const double curr_v, const double curr_w) curr_y = curr_y + curr_v * std::sin(curr_yaw) * dt; curr_yaw = curr_yaw + curr_w * dt; geometry_msgs::msg::Pose current_pose; - current_pose.position = autoware_universe_utils::createPoint(curr_x, curr_y, 0.0); - current_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(curr_yaw); - if (autoware_universe_utils::calcDistance2d(path.back(), current_pose) < 1e-3) { + current_pose.position = autoware::universe_utils::createPoint(curr_x, curr_y, 0.0); + current_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(curr_yaw); + if (autoware::universe_utils::calcDistance2d(path.back(), current_pose) < 1e-3) { continue; } path.push_back(current_pose); } // If path is shorter than minimum path length - while (autoware_motion_utils::calcArcLength(path) < min_generated_path_length_) { + while (autoware::motion_utils::calcArcLength(path) < min_generated_path_length_) { curr_x = curr_x + curr_v * std::cos(curr_yaw) * dt; curr_y = curr_y + curr_v * std::sin(curr_yaw) * dt; curr_yaw = curr_yaw + curr_w * dt; geometry_msgs::msg::Pose current_pose; - current_pose.position = autoware_universe_utils::createPoint(curr_x, curr_y, 0.0); - current_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(curr_yaw); - if (autoware_universe_utils::calcDistance2d(path.back(), current_pose) < 1e-3) { + current_pose.position = autoware::universe_utils::createPoint(curr_x, curr_y, 0.0); + current_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(curr_yaw); + if (autoware::universe_utils::calcDistance2d(path.back(), current_pose) < 1e-3) { continue; } path.push_back(current_pose); @@ -553,11 +600,11 @@ std::optional AEB::generateEgoPath(const Trajectory & predicted_traj) // create path Path path; - path.resize(predicted_traj.points.size()); + path.reserve(predicted_traj.points.size()); for (size_t i = 0; i < predicted_traj.points.size(); ++i) { geometry_msgs::msg::Pose map_pose; tf2::doTransform(predicted_traj.points.at(i).pose, map_pose, transform_stamped); - path.at(i) = map_pose; + path.push_back(map_pose); if (i * mpc_prediction_time_interval_ > mpc_prediction_time_horizon_) { break; @@ -577,6 +624,93 @@ std::vector AEB::generatePathFootprint( return polygons; } +void AEB::createObjectDataUsingPredictedObjects( + const Path & ego_path, const std::vector & ego_polys, + std::vector & object_data_vector) +{ + if (predicted_objects_ptr_->objects.empty()) return; + + const double current_ego_speed = current_velocity_ptr_->longitudinal_velocity; + const auto & objects = predicted_objects_ptr_->objects; + const auto & stamp = predicted_objects_ptr_->header.stamp; + + // Ego position + const auto current_p = [&]() { + const auto & first_point_of_path = ego_path.front(); + const auto & p = first_point_of_path.position; + return autoware::universe_utils::createPoint(p.x, p.y, p.z); + }(); + + auto get_object_tangent_velocity = + [&](const PredictedObject & predicted_object, const auto & obj_pose) { + const double obj_vel_norm = std::hypot( + predicted_object.kinematics.initial_twist_with_covariance.twist.linear.x, + predicted_object.kinematics.initial_twist_with_covariance.twist.linear.y); + + const auto obj_yaw = tf2::getYaw(obj_pose.orientation); + const auto obj_idx = autoware::motion_utils::findNearestIndex(ego_path, obj_pose.position); + const auto path_yaw = (current_ego_speed > 0.0) + ? tf2::getYaw(ego_path.at(obj_idx).orientation) + : tf2::getYaw(ego_path.at(obj_idx).orientation) + M_PI; + return obj_vel_norm * std::cos(obj_yaw - path_yaw); + }; + + geometry_msgs::msg::TransformStamped transform_stamped{}; + try { + transform_stamped = tf_buffer_.lookupTransform( + "base_link", predicted_objects_ptr_->header.frame_id, stamp, + rclcpp::Duration::from_seconds(0.5)); + } catch (tf2::TransformException & ex) { + RCLCPP_ERROR_STREAM(get_logger(), "[AEB] Failed to look up transform from base_link to map"); + return; + } + + // Check which objects collide with the ego footprints + std::for_each(objects.begin(), objects.end(), [&](const auto & predicted_object) { + // get objects in base_link frame + const auto t_predicted_object = + utils::transformObjectFrame(predicted_object, transform_stamped); + const auto & obj_pose = t_predicted_object.kinematics.initial_pose_with_covariance.pose; + const auto obj_poly = convertObjToPolygon(t_predicted_object); + const double obj_tangent_velocity = get_object_tangent_velocity(t_predicted_object, obj_pose); + + for (const auto & ego_poly : ego_polys) { + // check collision with 2d polygon + std::vector collision_points_bg; + bg::intersection(ego_poly, obj_poly, collision_points_bg); + if (collision_points_bg.empty()) continue; + + // Create an object for each intersection point + bool collision_points_added{false}; + for (const auto & collision_point : collision_points_bg) { + const auto obj_position = + autoware::universe_utils::createPoint(collision_point.x(), collision_point.y(), 0.0); + const double obj_arc_length = + autoware::motion_utils::calcSignedArcLength(ego_path, current_p, obj_position); + if (std::isnan(obj_arc_length)) continue; + + // If the object is behind the ego, we need to use the backward long offset. The + // distance should be a positive number in any case + const bool is_object_in_front_of_ego = obj_arc_length > 0.0; + const double dist_ego_to_object = + (is_object_in_front_of_ego) ? obj_arc_length - vehicle_info_.max_longitudinal_offset_m + : obj_arc_length + vehicle_info_.min_longitudinal_offset_m; + + ObjectData obj; + obj.stamp = stamp; + obj.position = obj_position; + obj.velocity = obj_tangent_velocity; + obj.distance_to_object = std::abs(dist_ego_to_object); + object_data_vector.push_back(obj); + collision_points_added = true; + } + // The ego polygons are in order, so the first intersection points found are the closest + // points. It is not necessary to continue iterating the ego polys for the same object. + if (collision_points_added) break; + } + }); +} + void AEB::createObjectDataUsingPointCloudClusters( const Path & ego_path, const std::vector & ego_polys, const rclcpp::Time & stamp, std::vector & objects, const pcl::PointCloud::Ptr obstacle_points_ptr) @@ -605,9 +739,15 @@ void AEB::createObjectDataUsingPointCloudClusters( PointCloud::Ptr points_belonging_to_cluster_hulls(new PointCloud); for (const auto & indices : cluster_indices) { PointCloud::Ptr cluster(new PointCloud); + bool cluster_surpasses_threshold_height{false}; for (const auto & index : indices.indices) { - cluster->push_back((*obstacle_points_ptr)[index]); + const auto & p = (*obstacle_points_ptr)[index]; + cluster_surpasses_threshold_height = (cluster_surpasses_threshold_height) + ? cluster_surpasses_threshold_height + : (p.z > cluster_minimum_height_); + cluster->push_back(p); } + if (!cluster_surpasses_threshold_height) continue; // Make a 2d convex hull for the objects pcl::ConvexHull hull; hull.setDimension(2); @@ -624,13 +764,13 @@ void AEB::createObjectDataUsingPointCloudClusters( const auto current_p = [&]() { const auto & first_point_of_path = ego_path.front(); const auto & p = first_point_of_path.position; - return autoware_universe_utils::createPoint(p.x, p.y, p.z); + return autoware::universe_utils::createPoint(p.x, p.y, p.z); }(); for (const auto & p : *points_belonging_to_cluster_hulls) { - const auto obj_position = autoware_universe_utils::createPoint(p.x, p.y, p.z); + const auto obj_position = autoware::universe_utils::createPoint(p.x, p.y, p.z); const double obj_arc_length = - autoware_motion_utils::calcSignedArcLength(ego_path, current_p, obj_position); + autoware::motion_utils::calcSignedArcLength(ego_path, current_p, obj_position); if (std::isnan(obj_arc_length)) continue; // If the object is behind the ego, we need to use the backward long offset. The distance should @@ -692,36 +832,38 @@ void AEB::addMarker( const double color_r, const double color_g, const double color_b, const double color_a, const std::string & ns, MarkerArray & debug_markers) { - auto path_marker = autoware_universe_utils::createDefaultMarker( + auto path_marker = autoware::universe_utils::createDefaultMarker( "base_link", current_time, ns + "_path", 0L, Marker::LINE_STRIP, - autoware_universe_utils::createMarkerScale(0.2, 0.2, 0.2), - autoware_universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); + autoware::universe_utils::createMarkerScale(0.2, 0.2, 0.2), + autoware::universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); path_marker.points.resize(path.size()); for (size_t i = 0; i < path.size(); ++i) { path_marker.points.at(i) = path.at(i).position; } debug_markers.markers.push_back(path_marker); - auto polygon_marker = autoware_universe_utils::createDefaultMarker( + auto polygon_marker = autoware::universe_utils::createDefaultMarker( "base_link", current_time, ns + "_polygon", 0, Marker::LINE_LIST, - autoware_universe_utils::createMarkerScale(0.03, 0.0, 0.0), - autoware_universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); + autoware::universe_utils::createMarkerScale(0.03, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); for (const auto & poly : polygons) { for (size_t dp_idx = 0; dp_idx < poly.outer().size(); ++dp_idx) { const auto & boost_cp = poly.outer().at(dp_idx); const auto & boost_np = poly.outer().at((dp_idx + 1) % poly.outer().size()); - const auto curr_point = autoware_universe_utils::createPoint(boost_cp.x(), boost_cp.y(), 0.0); - const auto next_point = autoware_universe_utils::createPoint(boost_np.x(), boost_np.y(), 0.0); + const auto curr_point = + autoware::universe_utils::createPoint(boost_cp.x(), boost_cp.y(), 0.0); + const auto next_point = + autoware::universe_utils::createPoint(boost_np.x(), boost_np.y(), 0.0); polygon_marker.points.push_back(curr_point); polygon_marker.points.push_back(next_point); } } debug_markers.markers.push_back(polygon_marker); - auto object_data_marker = autoware_universe_utils::createDefaultMarker( + auto object_data_marker = autoware::universe_utils::createDefaultMarker( "base_link", current_time, ns + "_objects", 0, Marker::SPHERE_LIST, - autoware_universe_utils::createMarkerScale(0.5, 0.5, 0.5), - autoware_universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); + autoware::universe_utils::createMarkerScale(0.5, 0.5, 0.5), + autoware::universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); for (const auto & e : objects) { object_data_marker.points.push_back(e.position); } @@ -730,11 +872,11 @@ void AEB::addMarker( // Visualize planner type text if (closest_object.has_value()) { const auto & obj = closest_object.value(); - const auto color = autoware_universe_utils::createMarkerColor(0.95, 0.95, 0.95, 0.999); - auto closest_object_velocity_marker_array = autoware_universe_utils::createDefaultMarker( + const auto color = autoware::universe_utils::createMarkerColor(0.95, 0.95, 0.95, 0.999); + auto closest_object_velocity_marker_array = autoware::universe_utils::createDefaultMarker( "base_link", obj.stamp, ns + "_closest_object_velocity", 0, visualization_msgs::msg::Marker::TEXT_VIEW_FACING, - autoware_universe_utils::createMarkerScale(0.0, 0.0, 0.7), color); + autoware::universe_utils::createMarkerScale(0.0, 0.0, 0.7), color); closest_object_velocity_marker_array.pose.position = obj.position; const auto ego_velocity = current_velocity_ptr_->longitudinal_velocity; closest_object_velocity_marker_array.text = @@ -748,10 +890,10 @@ void AEB::addMarker( void AEB::addCollisionMarker(const ObjectData & data, MarkerArray & debug_markers) { - auto point_marker = autoware_universe_utils::createDefaultMarker( + auto point_marker = autoware::universe_utils::createDefaultMarker( "base_link", data.stamp, "collision_point", 0, Marker::SPHERE, - autoware_universe_utils::createMarkerScale(0.3, 0.3, 0.3), - autoware_universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.3)); + autoware::universe_utils::createMarkerScale(0.3, 0.3, 0.3), + autoware::universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.3)); point_marker.pose.position = data.position; debug_markers.markers.push_back(point_marker); } diff --git a/control/autoware_autonomous_emergency_braking/src/utils.cpp b/control/autoware_autonomous_emergency_braking/src/utils.cpp new file mode 100644 index 0000000000000..f3b5192855d84 --- /dev/null +++ b/control/autoware_autonomous_emergency_braking/src/utils.cpp @@ -0,0 +1,149 @@ +// Copyright 2024 TIER IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +namespace autoware::motion::control::autonomous_emergency_braking::utils +{ +using autoware::universe_utils::Polygon2d; +using autoware_perception_msgs::msg::PredictedObject; +using autoware_perception_msgs::msg::PredictedObjects; +using geometry_msgs::msg::Point; +using geometry_msgs::msg::Pose; +using geometry_msgs::msg::TransformStamped; +using geometry_msgs::msg::Vector3; + +PredictedObject transformObjectFrame( + const PredictedObject & input, geometry_msgs::msg::TransformStamped & transform_stamped) +{ + PredictedObject output = input; + const auto & linear_twist = input.kinematics.initial_twist_with_covariance.twist.linear; + const auto & angular_twist = input.kinematics.initial_twist_with_covariance.twist.angular; + const auto & pose = input.kinematics.initial_pose_with_covariance.pose; + + geometry_msgs::msg::Pose t_pose; + Vector3 t_linear_twist; + Vector3 t_angular_twist; + + tf2::doTransform(pose, t_pose, transform_stamped); + tf2::doTransform(linear_twist, t_linear_twist, transform_stamped); + tf2::doTransform(angular_twist, t_angular_twist, transform_stamped); + + output.kinematics.initial_pose_with_covariance.pose = t_pose; + output.kinematics.initial_twist_with_covariance.twist.linear = t_linear_twist; + output.kinematics.initial_twist_with_covariance.twist.angular = t_angular_twist; + return output; +} + +Polygon2d convertPolygonObjectToGeometryPolygon( + const Pose & current_pose, const autoware_perception_msgs::msg::Shape & obj_shape) +{ + Polygon2d object_polygon; + tf2::Transform tf_map2obj; + fromMsg(current_pose, tf_map2obj); + const auto obj_points = obj_shape.footprint.points; + object_polygon.outer().reserve(obj_points.size() + 1); + for (const auto & obj_point : obj_points) { + tf2::Vector3 obj(obj_point.x, obj_point.y, obj_point.z); + tf2::Vector3 tf_obj = tf_map2obj * obj; + object_polygon.outer().emplace_back(tf_obj.x(), tf_obj.y()); + } + object_polygon.outer().push_back(object_polygon.outer().front()); + boost::geometry::correct(object_polygon); + + return object_polygon; +} + +Polygon2d convertCylindricalObjectToGeometryPolygon( + const Pose & current_pose, const autoware_perception_msgs::msg::Shape & obj_shape) +{ + Polygon2d object_polygon; + + const double obj_x = current_pose.position.x; + const double obj_y = current_pose.position.y; + + constexpr int n = 20; + const double r = obj_shape.dimensions.x / 2; + object_polygon.outer().reserve(n + 1); + for (int i = 0; i < n; ++i) { + object_polygon.outer().emplace_back( + obj_x + r * std::cos(2.0 * M_PI / n * i), obj_y + r * std::sin(2.0 * M_PI / n * i)); + } + + object_polygon.outer().push_back(object_polygon.outer().front()); + boost::geometry::correct(object_polygon); + + return object_polygon; +} + +Polygon2d convertBoundingBoxObjectToGeometryPolygon( + const Pose & current_pose, const double & base_to_front, const double & base_to_rear, + const double & base_to_width) +{ + const auto mapped_point = [](const double & length_scalar, const double & width_scalar) { + tf2::Vector3 map; + map.setX(length_scalar); + map.setY(width_scalar); + map.setZ(0.0); + map.setW(1.0); + return map; + }; + + // set vertices at map coordinate + const tf2::Vector3 p1_map = std::invoke(mapped_point, base_to_front, -base_to_width); + const tf2::Vector3 p2_map = std::invoke(mapped_point, base_to_front, base_to_width); + const tf2::Vector3 p3_map = std::invoke(mapped_point, -base_to_rear, base_to_width); + const tf2::Vector3 p4_map = std::invoke(mapped_point, -base_to_rear, -base_to_width); + + // transform vertices from map coordinate to object coordinate + tf2::Transform tf_map2obj; + tf2::fromMsg(current_pose, tf_map2obj); + const tf2::Vector3 p1_obj = tf_map2obj * p1_map; + const tf2::Vector3 p2_obj = tf_map2obj * p2_map; + const tf2::Vector3 p3_obj = tf_map2obj * p3_map; + const tf2::Vector3 p4_obj = tf_map2obj * p4_map; + + Polygon2d object_polygon; + object_polygon.outer().reserve(5); + object_polygon.outer().emplace_back(p1_obj.x(), p1_obj.y()); + object_polygon.outer().emplace_back(p2_obj.x(), p2_obj.y()); + object_polygon.outer().emplace_back(p3_obj.x(), p3_obj.y()); + object_polygon.outer().emplace_back(p4_obj.x(), p4_obj.y()); + + object_polygon.outer().push_back(object_polygon.outer().front()); + boost::geometry::correct(object_polygon); + + return object_polygon; +} + +Polygon2d convertObjToPolygon(const PredictedObject & obj) +{ + Polygon2d object_polygon{}; + if (obj.shape.type == autoware_perception_msgs::msg::Shape::CYLINDER) { + object_polygon = utils::convertCylindricalObjectToGeometryPolygon( + obj.kinematics.initial_pose_with_covariance.pose, obj.shape); + } else if (obj.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { + const double & length_m = obj.shape.dimensions.x / 2; + const double & width_m = obj.shape.dimensions.y / 2; + object_polygon = utils::convertBoundingBoxObjectToGeometryPolygon( + obj.kinematics.initial_pose_with_covariance.pose, length_m, length_m, width_m); + } else if (obj.shape.type == autoware_perception_msgs::msg::Shape::POLYGON) { + object_polygon = utils::convertPolygonObjectToGeometryPolygon( + obj.kinematics.initial_pose_with_covariance.pose, obj.shape); + } else { + throw std::runtime_error("Unsupported shape type"); + } + return object_polygon; +} +} // namespace autoware::motion::control::autonomous_emergency_braking::utils diff --git a/control/autoware_control_validator/include/autoware/control_validator/control_validator.hpp b/control/autoware_control_validator/include/autoware/control_validator/control_validator.hpp index 4434dc23ebf96..ecb46aee123e3 100644 --- a/control/autoware_control_validator/include/autoware/control_validator/control_validator.hpp +++ b/control/autoware_control_validator/include/autoware/control_validator/control_validator.hpp @@ -69,9 +69,9 @@ class ControlValidator : public rclcpp::Node void setStatus(DiagnosticStatusWrapper & stat, const bool & is_ok, const std::string & msg); rclcpp::Subscription::SharedPtr sub_predicted_traj_; - autoware_universe_utils::InterProcessPollingSubscriber sub_kinematics_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_kinematics_{ this, "~/input/kinematics"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_reference_traj_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_reference_traj_{ this, "~/input/reference_trajectory"}; rclcpp::Publisher::SharedPtr pub_status_; rclcpp::Publisher::SharedPtr pub_markers_; diff --git a/control/autoware_control_validator/include/autoware/control_validator/utils.hpp b/control/autoware_control_validator/include/autoware/control_validator/utils.hpp index d64c718df3887..375ad557d02df 100644 --- a/control/autoware_control_validator/include/autoware/control_validator/utils.hpp +++ b/control/autoware_control_validator/include/autoware/control_validator/utils.hpp @@ -26,8 +26,8 @@ namespace autoware::control_validator { -using autoware_motion_utils::convertToTrajectory; -using autoware_motion_utils::convertToTrajectoryPointArray; +using autoware::motion_utils::convertToTrajectory; +using autoware::motion_utils::convertToTrajectoryPointArray; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; using geometry_msgs::msg::Pose; diff --git a/control/autoware_control_validator/src/debug_marker.cpp b/control/autoware_control_validator/src/debug_marker.cpp index 7fdd447f075df..d5d8644515ab1 100644 --- a/control/autoware_control_validator/src/debug_marker.cpp +++ b/control/autoware_control_validator/src/debug_marker.cpp @@ -48,7 +48,7 @@ void ControlValidatorDebugMarkerPublisher::pushPoseMarker( void ControlValidatorDebugMarkerPublisher::pushPoseMarker( const geometry_msgs::msg::Pose & pose, const std::string & ns, int id) { - using autoware_universe_utils::createMarkerColor; + using autoware::universe_utils::createMarkerColor; // append arrow marker std_msgs::msg::ColorRGBA color; @@ -64,9 +64,9 @@ void ControlValidatorDebugMarkerPublisher::pushPoseMarker( { color = createMarkerColor(0.0, 0.0, 1.0, 0.999); } - Marker marker = autoware_universe_utils::createDefaultMarker( + Marker marker = autoware::universe_utils::createDefaultMarker( "map", node_->get_clock()->now(), ns, getMarkerId(ns), Marker::ARROW, - autoware_universe_utils::createMarkerScale(0.2, 0.1, 0.3), color); + autoware::universe_utils::createMarkerScale(0.2, 0.1, 0.3), color); marker.lifetime = rclcpp::Duration::from_seconds(0.2); marker.pose = pose; @@ -76,10 +76,10 @@ void ControlValidatorDebugMarkerPublisher::pushPoseMarker( void ControlValidatorDebugMarkerPublisher::pushWarningMsg( const geometry_msgs::msg::Pose & pose, const std::string & msg) { - visualization_msgs::msg::Marker marker = autoware_universe_utils::createDefaultMarker( + visualization_msgs::msg::Marker marker = autoware::universe_utils::createDefaultMarker( "map", node_->get_clock()->now(), "warning_msg", 0, Marker::TEXT_VIEW_FACING, - autoware_universe_utils::createMarkerScale(0.0, 0.0, 1.0), - autoware_universe_utils::createMarkerColor(1.0, 0.1, 0.1, 0.999)); + autoware::universe_utils::createMarkerScale(0.0, 0.0, 1.0), + autoware::universe_utils::createMarkerColor(1.0, 0.1, 0.1, 0.999)); marker.lifetime = rclcpp::Duration::from_seconds(0.2); marker.pose = pose; marker.text = msg; @@ -90,8 +90,8 @@ void ControlValidatorDebugMarkerPublisher::pushVirtualWall(const geometry_msgs:: { const auto now = node_->get_clock()->now(); const auto stop_wall_marker = - autoware_motion_utils::createStopVirtualWallMarker(pose, "control_validator", now, 0); - autoware_universe_utils::appendMarkerArray(stop_wall_marker, &marker_array_virtual_wall_, now); + autoware::motion_utils::createStopVirtualWallMarker(pose, "control_validator", now, 0); + autoware::universe_utils::appendMarkerArray(stop_wall_marker, &marker_array_virtual_wall_, now); } void ControlValidatorDebugMarkerPublisher::publish() diff --git a/control/autoware_control_validator/src/utils.cpp b/control/autoware_control_validator/src/utils.cpp index e60c6ea723b4f..821d64c3af6e6 100644 --- a/control/autoware_control_validator/src/utils.cpp +++ b/control/autoware_control_validator/src/utils.cpp @@ -37,7 +37,7 @@ void insertPointInPredictedTrajectory( TrajectoryPoints & modified_trajectory, const Pose & reference_pose, const TrajectoryPoints & predicted_trajectory) { - const auto point_to_interpolate = autoware_motion_utils::calcInterpolatedPoint( + const auto point_to_interpolate = autoware::motion_utils::calcInterpolatedPoint( convertToTrajectory(predicted_trajectory), reference_pose); modified_trajectory.insert(modified_trajectory.begin(), point_to_interpolate); } @@ -59,7 +59,7 @@ bool removeFrontTrajectoryPoint( bool predicted_trajectory_point_removed = false; for (const auto & point : predicted_trajectory_points) { if ( - autoware_motion_utils::calcLongitudinalOffsetToSegment( + autoware::motion_utils::calcLongitudinalOffsetToSegment( trajectory_points, 0, point.pose.position) < 0.0) { modified_trajectory_points.erase(modified_trajectory_points.begin()); @@ -75,7 +75,7 @@ bool removeFrontTrajectoryPoint( Trajectory alignTrajectoryWithReferenceTrajectory( const Trajectory & trajectory, const Trajectory & predicted_trajectory) { - const auto last_seg_length = autoware_motion_utils::calcSignedArcLength( + const auto last_seg_length = autoware::motion_utils::calcSignedArcLength( trajectory.points, trajectory.points.size() - 2, trajectory.points.size() - 1); // If no overlapping between trajectory and predicted_trajectory, return empty trajectory @@ -85,9 +85,9 @@ Trajectory alignTrajectoryWithReferenceTrajectory( // predicted_trajectory: p1------------------pN // trajectory: t1------------------tN const bool & is_p_n_before_t1 = - autoware_motion_utils::calcLongitudinalOffsetToSegment( + autoware::motion_utils::calcLongitudinalOffsetToSegment( trajectory.points, 0, predicted_trajectory.points.back().pose.position) < 0.0; - const bool & is_p1_behind_t_n = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const bool & is_p1_behind_t_n = autoware::motion_utils::calcLongitudinalOffsetToSegment( trajectory.points, trajectory.points.size() - 2, predicted_trajectory.points.front().pose.position) - last_seg_length > @@ -149,11 +149,11 @@ double calcMaxLateralDistance( alignTrajectoryWithReferenceTrajectory(reference_trajectory, predicted_trajectory); double max_dist = 0; for (const auto & point : alined_predicted_trajectory.points) { - const auto p0 = autoware_universe_utils::getPoint(point); + const auto p0 = autoware::universe_utils::getPoint(point); // find nearest segment const size_t nearest_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(reference_trajectory.points, p0); - const double temp_dist = std::abs(autoware_motion_utils::calcLateralOffset( + autoware::motion_utils::findNearestSegmentIndex(reference_trajectory.points, p0); + const double temp_dist = std::abs(autoware::motion_utils::calcLateralOffset( reference_trajectory.points, p0, nearest_segment_idx)); if (temp_dist > max_dist) { max_dist = temp_dist; diff --git a/control/autoware_joy_controller/include/autoware/joy_controller/joy_controller.hpp b/control/autoware_joy_controller/include/autoware/joy_controller/joy_controller.hpp index cea29ad887121..a4dcbc841696e 100644 --- a/control/autoware_joy_controller/include/autoware/joy_controller/joy_controller.hpp +++ b/control/autoware_joy_controller/include/autoware/joy_controller/joy_controller.hpp @@ -33,7 +33,6 @@ #include #include -#include #include #include @@ -70,9 +69,9 @@ class AutowareJoyControllerNode : public rclcpp::Node rclcpp::CallbackGroup::SharedPtr callback_group_services_; // Subscriber - autoware_universe_utils::InterProcessPollingSubscriber sub_joy_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_joy_{ this, "input/joy"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_odom_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_odom_{ this, "input/odometry"}; rclcpp::Time last_joy_received_time_; @@ -110,7 +109,6 @@ class AutowareJoyControllerNode : public rclcpp::Node autoware_control_msgs::msg::Control prev_control_command_; tier4_external_api_msgs::msg::ControlCommand prev_external_control_command_; GearShiftType prev_shift_ = tier4_external_api_msgs::msg::GearShift::NONE; - TurnSignalType prev_turn_signal_ = tier4_external_api_msgs::msg::TurnSignal::NONE; GateModeType prev_gate_mode_ = tier4_control_msgs::msg::GateMode::AUTO; // Timer diff --git a/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/g29_joy_converter.hpp b/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/g29_joy_converter.hpp index ea253e86305b7..28c424e7d6452 100644 --- a/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/g29_joy_converter.hpp +++ b/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/g29_joy_converter.hpp @@ -17,6 +17,8 @@ #include "autoware/joy_controller/joy_converter/joy_converter_base.hpp" +#include + namespace autoware::joy_controller { class G29JoyConverter : public JoyConverterBase @@ -27,7 +29,7 @@ class G29JoyConverter : public JoyConverterBase float accel() const { constexpr float eps = 0.0000001; - if (std::fabs(AccelPedal()) < eps) { + if (std::abs(AccelPedal()) < eps) { return 0.0f; } return (AccelPedal() + 1.0f) / 2; @@ -36,7 +38,7 @@ class G29JoyConverter : public JoyConverterBase float brake() const { constexpr float eps = 0.0000001; - if (std::fabs(BrakePedal()) < eps) { + if (std::abs(BrakePedal()) < eps) { return 0.0f; } return (BrakePedal() + 1.0f) / 2; diff --git a/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/joy_converter_base.hpp b/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/joy_converter_base.hpp index fa6081721511c..6deae0445bf0b 100644 --- a/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/joy_converter_base.hpp +++ b/control/autoware_joy_controller/include/autoware/joy_controller/joy_converter/joy_converter_base.hpp @@ -17,8 +17,6 @@ #include -#include - namespace autoware::joy_controller { class JoyConverterBase @@ -49,6 +47,8 @@ class JoyConverterBase virtual bool vehicle_engage() const = 0; virtual bool vehicle_disengage() const = 0; + + virtual ~JoyConverterBase() = default; }; } // namespace autoware::joy_controller diff --git a/control/autoware_joy_controller/src/joy_controller_node.cpp b/control/autoware_joy_controller/src/joy_controller_node.cpp index cab15c93d753f..378109eacc574 100644 --- a/control/autoware_joy_controller/src/joy_controller_node.cpp +++ b/control/autoware_joy_controller/src/joy_controller_node.cpp @@ -23,7 +23,6 @@ #include #include #include -#include namespace { @@ -404,8 +403,8 @@ void AutowareJoyControllerNode::sendEmergencyRequest(bool emergency) request->emergency = emergency; client_emergency_stop_->async_send_request( - request, [this, emergency]( - rclcpp::Client::SharedFuture result) { + request, + [this](rclcpp::Client::SharedFuture result) { auto response = result.get(); if (tier4_api_utils::is_success(response->status)) { RCLCPP_INFO(get_logger(), "service succeeded"); diff --git a/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker.hpp b/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker.hpp index b5df59a45038c..b43a7d0d0369a 100644 --- a/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker.hpp +++ b/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker.hpp @@ -47,12 +47,12 @@ namespace autoware::lane_departure_checker { +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::PoseDeviation; +using autoware::universe_utils::Segment2d; using autoware_planning_msgs::msg::LaneletRoute; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::PoseDeviation; -using autoware_universe_utils::Segment2d; using tier4_planning_msgs::msg::PathWithLaneId; using TrajectoryPoints = std::vector; typedef boost::geometry::index::rtree> SegmentRtree; @@ -122,7 +122,7 @@ class LaneDepartureChecker std::vector> getLaneletsFromPath( const lanelet::LaneletMapPtr lanelet_map_ptr, const PathWithLaneId & path) const; - std::optional getFusedLaneletPolygonForPath( + std::optional getFusedLaneletPolygonForPath( const lanelet::LaneletMapPtr lanelet_map_ptr, const PathWithLaneId & path) const; bool checkPathWillLeaveLane( diff --git a/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker_node.hpp b/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker_node.hpp index 7f3fad0be4d28..876797a58df25 100644 --- a/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker_node.hpp +++ b/control/autoware_lane_departure_checker/include/autoware/lane_departure_checker/lane_departure_checker_node.hpp @@ -67,15 +67,15 @@ class LaneDepartureCheckerNode : public rclcpp::Node private: // Subscriber - autoware_universe_utils::InterProcessPollingSubscriber sub_odom_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_odom_{ this, "~/input/odometry"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_lanelet_map_bin_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_lanelet_map_bin_{ this, "~/input/lanelet_map_bin", rclcpp::QoS{1}.transient_local()}; - autoware_universe_utils::InterProcessPollingSubscriber sub_route_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_route_{ this, "~/input/route"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_reference_trajectory_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_reference_trajectory_{ this, "~/input/reference_trajectory"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_predicted_trajectory_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_predicted_trajectory_{ this, "~/input/predicted_trajectory"}; // Data Buffer @@ -99,8 +99,10 @@ class LaneDepartureCheckerNode : public rclcpp::Node void onPredictedTrajectory(const Trajectory::ConstSharedPtr msg); // Publisher - autoware_universe_utils::DebugPublisher debug_publisher_{this, "~/debug"}; - autoware_universe_utils::ProcessingTimePublisher processing_time_publisher_{this}; + autoware::universe_utils::DebugPublisher debug_publisher_{this, "~/debug"}; + autoware::universe_utils::ProcessingTimePublisher processing_diag_publisher_{ + this, "~/debug/processing_time_ms_diag"}; + rclcpp::Publisher::SharedPtr processing_time_publisher_; // Timer rclcpp::TimerBase::SharedPtr timer_; diff --git a/control/autoware_lane_departure_checker/package.xml b/control/autoware_lane_departure_checker/package.xml index 2a08db7288568..e0e877e618c65 100644 --- a/control/autoware_lane_departure_checker/package.xml +++ b/control/autoware_lane_departure_checker/package.xml @@ -13,6 +13,7 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_motion_utils autoware_planning_msgs @@ -22,7 +23,6 @@ diagnostic_updater eigen geometry_msgs - lanelet2_extension nav_msgs rclcpp rclcpp_components diff --git a/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker.cpp b/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker.cpp index 84de8441c5a40..132eba8dde0c9 100644 --- a/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker.cpp +++ b/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker.cpp @@ -30,12 +30,12 @@ #include #include -using autoware_motion_utils::calcArcLength; -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::LineString2d; -using autoware_universe_utils::MultiPoint2d; -using autoware_universe_utils::MultiPolygon2d; -using autoware_universe_utils::Point2d; +using autoware::motion_utils::calcArcLength; +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::LineString2d; +using autoware::universe_utils::MultiPoint2d; +using autoware::universe_utils::MultiPolygon2d; +using autoware::universe_utils::Point2d; namespace { @@ -102,7 +102,7 @@ Output LaneDepartureChecker::update(const Input & input) { Output output{}; - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; output.trajectory_deviation = calcTrajectoryDeviation( *input.reference_trajectory, input.current_odom->pose.pose, param_.ego_nearest_dist_threshold, @@ -169,9 +169,9 @@ PoseDeviation LaneDepartureChecker::calcTrajectoryDeviation( const Trajectory & trajectory, const geometry_msgs::msg::Pose & pose, const double dist_threshold, const double yaw_threshold) { - const auto nearest_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const auto nearest_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( trajectory.points, pose, dist_threshold, yaw_threshold); - return autoware_universe_utils::calcPoseDeviation(trajectory.points.at(nearest_idx).pose, pose); + return autoware::universe_utils::calcPoseDeviation(trajectory.points.at(nearest_idx).pose, pose); } TrajectoryPoints LaneDepartureChecker::resampleTrajectory( @@ -183,8 +183,8 @@ TrajectoryPoints LaneDepartureChecker::resampleTrajectory( for (size_t i = 1; i < trajectory.points.size() - 1; ++i) { const auto & point = trajectory.points.at(i); - const auto p1 = autoware_universe_utils::fromMsg(resampled.back().pose.position); - const auto p2 = autoware_universe_utils::fromMsg(point.pose.position); + const auto p1 = autoware::universe_utils::fromMsg(resampled.back().pose.position); + const auto p2 = autoware::universe_utils::fromMsg(point.pose.position); if (boost::geometry::distance(p1.to_2d(), p2.to_2d()) > interval) { resampled.push_back(point); @@ -205,8 +205,8 @@ TrajectoryPoints LaneDepartureChecker::cutTrajectory( for (size_t i = 1; i < trajectory.size(); ++i) { const auto & point = trajectory.at(i); - const auto p1 = autoware_universe_utils::fromMsg(cut.back().pose.position); - const auto p2 = autoware_universe_utils::fromMsg(point.pose.position); + const auto p1 = autoware::universe_utils::fromMsg(cut.back().pose.position); + const auto p2 = autoware::universe_utils::fromMsg(point.pose.position); const auto points_distance = boost::geometry::distance(p1.to_2d(), p2.to_2d()); const auto remain_distance = length - total_length; @@ -251,7 +251,7 @@ std::vector LaneDepartureChecker::createVehicleFootprints( std::vector vehicle_footprints; for (const auto & p : trajectory) { vehicle_footprints.push_back( - transformVector(local_vehicle_footprint, autoware_universe_utils::pose2transform(p.pose))); + transformVector(local_vehicle_footprint, autoware::universe_utils::pose2transform(p.pose))); } return vehicle_footprints; @@ -268,7 +268,7 @@ std::vector LaneDepartureChecker::createVehicleFootprints( std::vector vehicle_footprints; for (const auto & p : path.points) { vehicle_footprints.push_back(transformVector( - local_vehicle_footprint, autoware_universe_utils::pose2transform(p.point.pose))); + local_vehicle_footprint, autoware::universe_utils::pose2transform(p.point.pose))); } return vehicle_footprints; @@ -322,18 +322,18 @@ std::vector> LaneDepartureChecker::getLanele lanelet_map_ptr->laneletLayer, footprint_hull_basic_polygon, 0.0); } -std::optional +std::optional LaneDepartureChecker::getFusedLaneletPolygonForPath( const lanelet::LaneletMapPtr lanelet_map_ptr, const PathWithLaneId & path) const { const auto lanelets_distance_pair = getLaneletsFromPath(lanelet_map_ptr, path); auto to_polygon2d = - [](const lanelet::BasicPolygon2d & poly) -> autoware_universe_utils::Polygon2d { - autoware_universe_utils::Polygon2d p; + [](const lanelet::BasicPolygon2d & poly) -> autoware::universe_utils::Polygon2d { + autoware::universe_utils::Polygon2d p; auto & outer = p.outer(); for (const auto & p : poly) { - autoware_universe_utils::Point2d p2d(p.x(), p.y()); + autoware::universe_utils::Point2d p2d(p.x(), p.y()); outer.push_back(p2d); } boost::geometry::correct(p); @@ -341,15 +341,15 @@ LaneDepartureChecker::getFusedLaneletPolygonForPath( }; // Fuse lanelets into a single BasicPolygon2d - auto fused_lanelets = [&]() -> std::optional { + auto fused_lanelets = [&]() -> std::optional { if (lanelets_distance_pair.empty()) return std::nullopt; - autoware_universe_utils::MultiPolygon2d lanelet_unions; - autoware_universe_utils::MultiPolygon2d result; + autoware::universe_utils::MultiPolygon2d lanelet_unions; + autoware::universe_utils::MultiPolygon2d result; for (size_t i = 0; i < lanelets_distance_pair.size(); ++i) { const auto & route_lanelet = lanelets_distance_pair.at(i).second; const auto & p = route_lanelet.polygon2d().basicPolygon(); - autoware_universe_utils::Polygon2d poly = to_polygon2d(p); + autoware::universe_utils::Polygon2d poly = to_polygon2d(p); boost::geometry::union_(lanelet_unions, poly, result); lanelet_unions = result; result.clear(); diff --git a/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker_node.cpp b/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker_node.cpp index 84ab3877fe9f9..27b636f07d4ef 100644 --- a/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker_node.cpp +++ b/control/autoware_lane_departure_checker/src/lane_departure_checker_node/lane_departure_checker_node.cpp @@ -17,11 +17,11 @@ #include #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include @@ -31,7 +31,7 @@ #include #include -using autoware_universe_utils::rad2deg; +using autoware::universe_utils::rad2deg; namespace { @@ -170,6 +170,8 @@ LaneDepartureCheckerNode::LaneDepartureCheckerNode(const rclcpp::NodeOptions & o lane_departure_checker_->setParam(param_, vehicle_info); // Publisher + processing_time_publisher_ = + this->create_publisher("~/debug/processing_time_ms", 1); // Nothing // Diagnostic Updater @@ -251,7 +253,7 @@ bool LaneDepartureCheckerNode::isDataValid() void LaneDepartureCheckerNode::onTimer() { std::map processing_time_map; - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; stop_watch.tic("Total"); current_odom_ = sub_odom_.takeData(); @@ -347,7 +349,11 @@ void LaneDepartureCheckerNode::onTimer() } processing_time_map["Total"] = stop_watch.toc("Total"); - processing_time_publisher_.publish(processing_time_map); + processing_diag_publisher_.publish(processing_time_map); + tier4_debug_msgs::msg::Float64Stamped processing_time_msg; + processing_time_msg.stamp = get_clock()->now(); + processing_time_msg.data = processing_time_map["Total"]; + processing_time_publisher_->publish(processing_time_msg); } rcl_interfaces::msg::SetParametersResult LaneDepartureCheckerNode::onParameter( @@ -453,9 +459,9 @@ void LaneDepartureCheckerNode::checkTrajectoryDeviation( visualization_msgs::msg::MarkerArray LaneDepartureCheckerNode::createMarkerArray() const { - using autoware_universe_utils::createDefaultMarker; - using autoware_universe_utils::createMarkerColor; - using autoware_universe_utils::createMarkerScale; + using autoware::universe_utils::createDefaultMarker; + using autoware::universe_utils::createMarkerColor; + using autoware::universe_utils::createMarkerScale; visualization_msgs::msg::MarkerArray marker_array; diff --git a/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc.hpp b/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc.hpp index 058eb45bfaaff..902790f260e5e 100644 --- a/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc.hpp +++ b/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc.hpp @@ -271,7 +271,7 @@ class MPC */ std::pair executeOptimization( const MPCMatrix & mpc_matrix, const VectorXd & x0, const double prediction_dt, - const MPCTrajectory & trajectory, const double current_velocity); + const MPCTrajectory & trajectory); /** * @brief Resample the trajectory with the MPC resampling time. @@ -386,8 +386,7 @@ class MPC * @param reference_trajectory The reference trajectory. * @param current_velocity current velocity of ego. */ - VectorXd calcSteerRateLimitOnTrajectory( - const MPCTrajectory & trajectory, const double current_velocity) const; + VectorXd calcSteerRateLimitOnTrajectory(const MPCTrajectory & trajectory) const; //!< @brief logging with warn and return false template diff --git a/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_lateral_controller.hpp b/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_lateral_controller.hpp index 1f16bbc39bbbf..09399d1fa2dce 100644 --- a/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_lateral_controller.hpp +++ b/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_lateral_controller.hpp @@ -22,6 +22,8 @@ #include "autoware/trajectory_follower_base/lateral_controller_base.hpp" #include "rclcpp/rclcpp.hpp" +#include + #include "autoware_control_msgs/msg/lateral.hpp" #include "autoware_planning_msgs/msg/trajectory.hpp" #include "autoware_vehicle_msgs/msg/steering_report.hpp" @@ -52,7 +54,8 @@ class MpcLateralController : public trajectory_follower::LateralControllerBase { public: /// \param node Reference to the node used only for the component and parameter initialization. - explicit MpcLateralController(rclcpp::Node & node); + explicit MpcLateralController( + rclcpp::Node & node, std::shared_ptr diag_updater); virtual ~MpcLateralController(); private: @@ -63,6 +66,9 @@ class MpcLateralController : public trajectory_follower::LateralControllerBase rclcpp::Publisher::SharedPtr m_pub_debug_values; rclcpp::Publisher::SharedPtr m_pub_steer_offset; + std::shared_ptr + diag_updater_{}; // Diagnostic updater for publishing diagnostic data. + //!< @brief parameters for path smoothing TrajectoryFilteringParam m_trajectory_filtering_param; @@ -87,9 +93,16 @@ class MpcLateralController : public trajectory_follower::LateralControllerBase // Flag indicating whether to keep the steering control until it converges. bool m_keep_steer_control_until_converged; + // MPC solver checker. + bool m_is_mpc_solved{true}; + // trajectory buffer for detecting new trajectory std::deque m_trajectory_buffer; + void setStatus(diagnostic_updater::DiagnosticStatusWrapper & stat); + + void setupDiag(); + std::unique_ptr m_mpc; // MPC object for trajectory following. // Check is mpc output converged diff --git a/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_trajectory.hpp b/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_trajectory.hpp index 2edbfdd3e1e90..b761aa9f19d23 100644 --- a/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_trajectory.hpp +++ b/control/autoware_mpc_lateral_controller/include/autoware/mpc_lateral_controller/mpc_trajectory.hpp @@ -117,7 +117,7 @@ class MPCTrajectory point.pose.position.x = x.at(i); point.pose.position.y = y.at(i); point.pose.position.z = z.at(i); - point.pose.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw.at(i)); + point.pose.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw.at(i)); point.longitudinal_velocity_mps = vx.at(i); points.push_back(point); } diff --git a/control/autoware_mpc_lateral_controller/src/mpc.cpp b/control/autoware_mpc_lateral_controller/src/mpc.cpp index 309704596086e..ea97e9e6d5f39 100644 --- a/control/autoware_mpc_lateral_controller/src/mpc.cpp +++ b/control/autoware_mpc_lateral_controller/src/mpc.cpp @@ -25,9 +25,9 @@ namespace autoware::motion::control::mpc_lateral_controller { -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::normalizeRadian; -using autoware_universe_utils::rad2deg; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::normalizeRadian; +using autoware::universe_utils::rad2deg; MPC::MPC(rclcpp::Node & node) { @@ -76,9 +76,8 @@ bool MPC::calculateMPC( const auto mpc_matrix = generateMPCMatrix(mpc_resampled_ref_trajectory, prediction_dt); // solve Optimization problem - const auto [success_opt, Uex] = executeOptimization( - mpc_matrix, x0_delayed, prediction_dt, mpc_resampled_ref_trajectory, - current_kinematics.twist.twist.linear.x); + const auto [success_opt, Uex] = + executeOptimization(mpc_matrix, x0_delayed, prediction_dt, mpc_resampled_ref_trajectory); if (!success_opt) { return fail_warn_throttle("optimization failed. Stop MPC."); } @@ -167,10 +166,10 @@ void MPC::setReferenceTrajectory( const Odometry & current_kinematics) { const size_t nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( trajectory_msg.points, current_kinematics.pose.pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); - const double ego_offset_to_segment = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double ego_offset_to_segment = autoware::motion_utils::calcLongitudinalOffsetToSegment( trajectory_msg.points, nearest_seg_idx, current_kinematics.pose.pose.position); const auto mpc_traj_raw = MPCUtils::convertToMPCTrajectory(trajectory_msg); @@ -184,7 +183,7 @@ void MPC::setReferenceTrajectory( } const auto is_forward_shift = - autoware_motion_utils::isDrivingForward(mpc_traj_resampled.toTrajectoryPoints()); + autoware::motion_utils::isDrivingForward(mpc_traj_resampled.toTrajectoryPoints()); // if driving direction is unknown, use previous value m_is_forward_shift = is_forward_shift ? is_forward_shift.value() : m_is_forward_shift; @@ -244,7 +243,7 @@ void MPC::setReferenceTrajectory( void MPC::resetPrevResult(const SteeringReport & current_steer) { - // Consider limit. The prev value larger than limitation brakes the optimization constraint and + // Consider limit. The prev value larger than limitation breaks the optimization constraint and // results in optimization failure. const float steer_lim_f = static_cast(m_steer_lim); m_raw_steer_cmd_prev = std::clamp(current_steer.steering_tire_angle, -steer_lim_f, steer_lim_f); @@ -391,7 +390,7 @@ MPCTrajectory MPC::applyVelocityDynamicsFilter( } const size_t nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( autoware_traj.points, current_kinematics.pose.pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); @@ -501,7 +500,7 @@ MPCMatrix MPC::generateMPCMatrix( // get reference input (feed-forward) m_vehicle_model_ptr->setCurvature(ref_smooth_k); m_vehicle_model_ptr->calculateReferenceInput(Uref); - if (std::fabs(Uref(0, 0)) < autoware_universe_utils::deg2rad(m_param.zero_ff_steer_deg)) { + if (std::fabs(Uref(0, 0)) < autoware::universe_utils::deg2rad(m_param.zero_ff_steer_deg)) { Uref(0, 0) = 0.0; // ignore curvature noise } m.Uref_ex.block(i * DIM_U, 0, DIM_U, 1) = Uref; @@ -544,8 +543,7 @@ MPCMatrix MPC::generateMPCMatrix( * [ -au_lim * dt ] < [uN-uN-1] < [ au_lim * dt ] (*N... DIM_U) */ std::pair MPC::executeOptimization( - const MPCMatrix & m, const VectorXd & x0, const double prediction_dt, const MPCTrajectory & traj, - const double current_velocity) + const MPCMatrix & m, const VectorXd & x0, const double prediction_dt, const MPCTrajectory & traj) { VectorXd Uex; @@ -578,7 +576,7 @@ std::pair MPC::executeOptimization( VectorXd ub = VectorXd::Constant(DIM_U_N, m_steer_lim); // max steering angle // steering angle rate limit - VectorXd steer_rate_limits = calcSteerRateLimitOnTrajectory(traj, current_velocity); + VectorXd steer_rate_limits = calcSteerRateLimitOnTrajectory(traj); VectorXd ubA = steer_rate_limits * prediction_dt; VectorXd lbA = -steer_rate_limits * prediction_dt; ubA(0) = m_raw_steer_cmd_prev + steer_rate_limits(0) * m_ctrl_period; @@ -678,7 +676,7 @@ double MPC::getPredictionDeltaTime( { // Calculate the time min_prediction_length ahead from current_pose const auto autoware_traj = MPCUtils::convertToAutowareTrajectory(input); - const size_t nearest_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const size_t nearest_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( autoware_traj.points, current_kinematics.pose.pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); double sum_dist = 0; @@ -730,8 +728,7 @@ double MPC::calcDesiredSteeringRate( return steer_rate; } -VectorXd MPC::calcSteerRateLimitOnTrajectory( - const MPCTrajectory & trajectory, const double current_velocity) const +VectorXd MPC::calcSteerRateLimitOnTrajectory(const MPCTrajectory & trajectory) const { const auto interp = [&](const auto & steer_rate_limit_map, const auto & current) { std::vector reference, limits; @@ -765,12 +762,6 @@ VectorXd MPC::calcSteerRateLimitOnTrajectory( return reference.back(); }; - // when the vehicle is stopped, no steering rate limit. - const bool is_vehicle_stopped = std::fabs(current_velocity) < 0.01; - if (is_vehicle_stopped) { - return VectorXd::Zero(m_param.prediction_horizon); - } - // calculate steering rate limit VectorXd steer_rate_limits = VectorXd::Zero(m_param.prediction_horizon); for (int i = 0; i < m_param.prediction_horizon; ++i) { diff --git a/control/autoware_mpc_lateral_controller/src/mpc_lateral_controller.cpp b/control/autoware_mpc_lateral_controller/src/mpc_lateral_controller.cpp index 6aedb74e87c83..43acbb862b573 100644 --- a/control/autoware_mpc_lateral_controller/src/mpc_lateral_controller.cpp +++ b/control/autoware_mpc_lateral_controller/src/mpc_lateral_controller.cpp @@ -35,13 +35,16 @@ namespace autoware::motion::control::mpc_lateral_controller { -MpcLateralController::MpcLateralController(rclcpp::Node & node) +MpcLateralController::MpcLateralController( + rclcpp::Node & node, std::shared_ptr diag_updater) : clock_(node.get_clock()), logger_(node.get_logger().get_child("lateral_controller")) { const auto dp_int = [&](const std::string & s) { return node.declare_parameter(s); }; const auto dp_bool = [&](const std::string & s) { return node.declare_parameter(s); }; const auto dp_double = [&](const std::string & s) { return node.declare_parameter(s); }; + diag_updater_ = diag_updater; + m_mpc = std::make_unique(node); m_mpc->m_ctrl_period = node.get_parameter("ctrl_period").as_double(); @@ -152,6 +155,8 @@ MpcLateralController::MpcLateralController(rclcpp::Node & node) m_mpc->setLogger(logger_); m_mpc->setClock(clock_); + + setupDiag(); } MpcLateralController::~MpcLateralController() @@ -227,6 +232,24 @@ std::shared_ptr MpcLateralController::createSteerOffset return steering_offset_; } +void MpcLateralController::setStatus(diagnostic_updater::DiagnosticStatusWrapper & stat) +{ + if (m_is_mpc_solved) { + stat.summary(diagnostic_msgs::msg::DiagnosticStatus::OK, "MPC succeeded."); + } else { + const std::string error_msg = "The MPC solver failed. Call MRM to stop the car."; + stat.summary(diagnostic_msgs::msg::DiagnosticStatus::ERROR, error_msg); + } +} + +void MpcLateralController::setupDiag() +{ + auto & d = diag_updater_; + d->setHardwareID("mpc_lateral_controller"); + + d->add("MPC_solve_checker", [&](auto & stat) { setStatus(stat); }); +} + trajectory_follower::LateralOutput MpcLateralController::run( trajectory_follower::InputData const & input_data) { @@ -255,12 +278,16 @@ trajectory_follower::LateralOutput MpcLateralController::run( const bool is_mpc_solved = m_mpc->calculateMPC( m_current_steering, m_current_kinematic_state, ctrl_cmd, predicted_traj, debug_values); + m_is_mpc_solved = is_mpc_solved; // for diagnostic updater + + diag_updater_->force_update(); + // reset previous MPC result // Note: When a large deviation from the trajectory occurs, the optimization stops and // the vehicle will return to the path by re-planning the trajectory or external operation. // After the recovery, the previous value of the optimization may deviate greatly from // the actual steer angle, and it may make the optimization result unstable. - if (!is_mpc_solved) { + if (!is_mpc_solved || !is_under_control) { m_mpc->resetPrevResult(m_current_steering); } else { setSteeringToHistory(ctrl_cmd); @@ -408,7 +435,7 @@ bool MpcLateralController::isStoppedState() const // for the stop state judgement. However, it has been removed since the steering // control was turned off when approaching/exceeding the stop line on a curve or // emergency stop situation and it caused large tracking error. - const size_t nearest = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const size_t nearest = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( m_current_trajectory.points, m_current_kinematic_state.pose.pose, m_ego_nearest_dist_threshold, m_ego_nearest_yaw_threshold); @@ -497,7 +524,7 @@ bool MpcLateralController::isMpcConverged() // Find the maximum and minimum values of the steering angle in the past 1 second. double min_steering_value = m_mpc_steering_history[0].first.steering_tire_angle; - double max_steering_value = m_mpc_steering_history[0].first.steering_tire_angle; + double max_steering_value = min_steering_value; for (size_t i = 1; i < m_mpc_steering_history.size(); i++) { if (m_mpc_steering_history.at(i).first.steering_tire_angle < min_steering_value) { min_steering_value = m_mpc_steering_history.at(i).first.steering_tire_angle; @@ -616,7 +643,7 @@ bool MpcLateralController::isTrajectoryShapeChanged() const // TODO(Horibe): update implementation to check trajectory shape around ego vehicle. // Now temporally check the goal position. for (const auto & trajectory : m_trajectory_buffer) { - const auto change_distance = autoware_universe_utils::calcDistance2d( + const auto change_distance = autoware::universe_utils::calcDistance2d( trajectory.points.back().pose, m_current_trajectory.points.back().pose); if (change_distance > m_new_traj_end_dist) { return true; @@ -633,8 +660,8 @@ bool MpcLateralController::isValidTrajectory(const Trajectory & traj) const !isfinite(p.pose.orientation.w) || !isfinite(p.pose.orientation.x) || !isfinite(p.pose.orientation.y) || !isfinite(p.pose.orientation.z) || !isfinite(p.longitudinal_velocity_mps) || !isfinite(p.lateral_velocity_mps) || - !isfinite(p.lateral_velocity_mps) || !isfinite(p.heading_rate_rps) || - !isfinite(p.front_wheel_angle_rad) || !isfinite(p.rear_wheel_angle_rad)) { + !isfinite(p.heading_rate_rps) || !isfinite(p.front_wheel_angle_rad) || + !isfinite(p.rear_wheel_angle_rad)) { return false; } } diff --git a/control/autoware_mpc_lateral_controller/src/mpc_utils.cpp b/control/autoware_mpc_lateral_controller/src/mpc_utils.cpp index a2dd346a442b3..37eb47ab0396e 100644 --- a/control/autoware_mpc_lateral_controller/src/mpc_utils.cpp +++ b/control/autoware_mpc_lateral_controller/src/mpc_utils.cpp @@ -42,9 +42,9 @@ double calcLongitudinalOffset( namespace MPCUtils { -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::createQuaternionFromYaw; -using autoware_universe_utils::normalizeRadian; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::createQuaternionFromYaw; +using autoware::universe_utils::normalizeRadian; double calcDistance2d(const MPCTrajectory & trajectory, const size_t idx1, const size_t idx2) { @@ -240,7 +240,7 @@ std::vector calcTrajectoryCurvature( p2.y = traj.y.at(curr_idx); p3.y = traj.y.at(next_idx); try { - curvature_vec.at(curr_idx) = autoware_universe_utils::calcCurvature(p1, p2, p3); + curvature_vec.at(curr_idx) = autoware::universe_utils::calcCurvature(p1, p2, p3); } catch (...) { std::cerr << "[MPC] 2 points are too close to calculate curvature." << std::endl; curvature_vec.at(curr_idx) = 0.0; @@ -281,7 +281,7 @@ Trajectory convertToAutowareTrajectory(const MPCTrajectory & input) p.pose.position.x = input.x.at(i); p.pose.position.y = input.y.at(i); p.pose.position.z = input.z.at(i); - p.pose.orientation = autoware_universe_utils::createQuaternionFromYaw(input.yaw.at(i)); + p.pose.orientation = autoware::universe_utils::createQuaternionFromYaw(input.yaw.at(i)); p.longitudinal_velocity_mps = static_cast(input.vx.at(i)); output.points.push_back(p); @@ -346,7 +346,7 @@ bool calcNearestPoseInterp( return false; } - *nearest_index = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + *nearest_index = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( autoware_traj.points, self_pose, max_dist, max_yaw); const size_t traj_size = traj.size(); @@ -389,7 +389,7 @@ bool calcNearestPoseInterp( prev_traj_point.x = traj.x.at(prev); prev_traj_point.y = traj.y.at(prev); const double traj_seg_length = - autoware_universe_utils::calcDistance2d(prev_traj_point, next_traj_point); + autoware::universe_utils::calcDistance2d(prev_traj_point, next_traj_point); /* if distance between two points are too close */ if (traj_seg_length < 1.0E-5) { nearest_pose->position.x = traj.x.at(*nearest_index); @@ -460,7 +460,7 @@ void extendTrajectoryInYawDirection( const double dt = interval / extend_vel; const size_t num_extended_point = static_cast(extend_dist / interval); for (size_t i = 0; i < num_extended_point; ++i) { - extended_pose = autoware_universe_utils::calcOffsetPose(extended_pose, x_offset, 0.0, 0.0); + extended_pose = autoware::universe_utils::calcOffsetPose(extended_pose, x_offset, 0.0, 0.0); traj.push_back( extended_pose.position.x, extended_pose.position.y, extended_pose.position.z, traj.yaw.back(), extend_vel, traj.k.back(), traj.smooth_k.back(), traj.relative_time.back() + dt); diff --git a/control/autoware_operation_mode_transition_manager/src/node.hpp b/control/autoware_operation_mode_transition_manager/src/node.hpp index 46cc360355e67..d69d79f9640d8 100644 --- a/control/autoware_operation_mode_transition_manager/src/node.hpp +++ b/control/autoware_operation_mode_transition_manager/src/node.hpp @@ -49,9 +49,9 @@ class OperationModeTransitionManager : public rclcpp::Node const ChangeOperationModeAPI::Service::Response::SharedPtr response); using ControlModeCommandType = ControlModeCommand::Request::_mode_type; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_control_mode_report_{this, "control_mode_report"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_gate_operation_mode_{this, "gate_operation_mode"}; rclcpp::Client::SharedPtr cli_control_mode_; rclcpp::Publisher::SharedPtr pub_debug_info_; diff --git a/control/autoware_operation_mode_transition_manager/src/state.cpp b/control/autoware_operation_mode_transition_manager/src/state.cpp index ea2f9bf4bf03c..31cd32e6311a9 100644 --- a/control/autoware_operation_mode_transition_manager/src/state.cpp +++ b/control/autoware_operation_mode_transition_manager/src/state.cpp @@ -26,9 +26,9 @@ namespace autoware::operation_mode_transition_manager { -using autoware_motion_utils::findNearestIndex; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::calcYawDeviation; +using autoware::motion_utils::findNearestIndex; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::calcYawDeviation; AutonomousMode::AutonomousMode(rclcpp::Node * node) : logger_(node->get_logger()), clock_(node->get_clock()) @@ -126,7 +126,7 @@ bool AutonomousMode::isModeChangeCompleted() // check for lateral deviation const auto dist_deviation = - autoware_motion_utils::calcLateralOffset(trajectory_.points, kinematics_.pose.pose.position); + autoware::motion_utils::calcLateralOffset(trajectory_.points, kinematics_.pose.pose.position); if (std::isnan(dist_deviation)) { RCLCPP_INFO(logger_, "Not stable yet: lateral offset calculation failed."); return unstable(); @@ -138,7 +138,7 @@ bool AutonomousMode::isModeChangeCompleted() // check for yaw deviation const auto yaw_deviation = - autoware_motion_utils::calcYawDeviation(trajectory_.points, kinematics_.pose.pose); + autoware::motion_utils::calcYawDeviation(trajectory_.points, kinematics_.pose.pose); if (std::isnan(yaw_deviation)) { RCLCPP_INFO(logger_, "Not stable yet: lateral offset calculation failed."); return unstable(); diff --git a/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/longitudinal_controller_utils.hpp b/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/longitudinal_controller_utils.hpp index f0e231e354bc4..a36a0b4eefccd 100644 --- a/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/longitudinal_controller_utils.hpp +++ b/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/longitudinal_controller_utils.hpp @@ -87,13 +87,13 @@ std::pair lerpTrajectoryPoint( const T & points, const Pose & pose, const double max_dist, const double max_yaw) { TrajectoryPoint interpolated_point; - const size_t seg_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + const size_t seg_idx = autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( points, pose, max_dist, max_yaw); const double len_to_interpolated = - autoware_motion_utils::calcLongitudinalOffsetToSegment(points, seg_idx, pose.position); + autoware::motion_utils::calcLongitudinalOffsetToSegment(points, seg_idx, pose.position); const double len_segment = - autoware_motion_utils::calcSignedArcLength(points, seg_idx, seg_idx + 1); + autoware::motion_utils::calcSignedArcLength(points, seg_idx, seg_idx + 1); const double interpolate_ratio = std::clamp(len_to_interpolated / len_segment, 0.0, 1.0); { diff --git a/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/pid_longitudinal_controller.hpp b/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/pid_longitudinal_controller.hpp index ed9fcb3974c83..5805ef7db9f86 100644 --- a/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/pid_longitudinal_controller.hpp +++ b/control/autoware_pid_longitudinal_controller/include/autoware/pid_longitudinal_controller/pid_longitudinal_controller.hpp @@ -50,10 +50,10 @@ namespace autoware::motion::control::pid_longitudinal_controller { +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; using autoware_adapi_v1_msgs::msg::OperationModeState; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; using visualization_msgs::msg::Marker; namespace trajectory_follower = ::autoware::motion::control::trajectory_follower; @@ -64,7 +64,8 @@ class PidLongitudinalController : public trajectory_follower::LongitudinalContro { public: /// \param node Reference to the node used only for the component and parameter initialization. - explicit PidLongitudinalController(rclcpp::Node & node); + explicit PidLongitudinalController( + rclcpp::Node & node, std::shared_ptr diag_updater); private: struct Motion @@ -236,8 +237,8 @@ class PidLongitudinalController : public trajectory_follower::LongitudinalContro std::shared_ptr m_last_running_time{std::make_shared(clock_->now())}; // Diagnostic - - diagnostic_updater::Updater diagnostic_updater_; + std::shared_ptr + diag_updater_{}; // Diagnostic updater for publishing diagnostic data. struct DiagnosticData { double trans_deviation{0.0}; // translation deviation between nearest point and current_pose diff --git a/control/autoware_pid_longitudinal_controller/src/longitudinal_controller_utils.cpp b/control/autoware_pid_longitudinal_controller/src/longitudinal_controller_utils.cpp index 2a897f92a0efe..5eb6c87e063eb 100644 --- a/control/autoware_pid_longitudinal_controller/src/longitudinal_controller_utils.cpp +++ b/control/autoware_pid_longitudinal_controller/src/longitudinal_controller_utils.cpp @@ -58,12 +58,12 @@ bool isValidTrajectory(const Trajectory & traj) double calcStopDistance( const Pose & current_pose, const Trajectory & traj, const double max_dist, const double max_yaw) { - const auto stop_idx_opt = autoware_motion_utils::searchZeroVelocityIndex(traj.points); + const auto stop_idx_opt = autoware::motion_utils::searchZeroVelocityIndex(traj.points); const size_t end_idx = stop_idx_opt ? *stop_idx_opt : traj.points.size() - 1; - const size_t seg_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + const size_t seg_idx = autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( traj.points, current_pose, max_dist, max_yaw); - const double signed_length_on_traj = autoware_motion_utils::calcSignedArcLength( + const double signed_length_on_traj = autoware::motion_utils::calcSignedArcLength( traj.points, current_pose.position, seg_idx, traj.points.at(end_idx).pose.position, std::min(end_idx, traj.points.size() - 2)); @@ -93,7 +93,7 @@ double getPitchByTraj( const auto [prev_idx, next_idx] = [&]() { for (size_t i = start_idx + 1; i < trajectory.points.size(); ++i) { - const double dist = autoware_universe_utils::calcDistance3d( + const double dist = autoware::universe_utils::calcDistance3d( trajectory.points.at(start_idx), trajectory.points.at(i)); if (dist > wheel_base) { // calculate pitch from trajectory between rear wheel (nearest) and front center (i) @@ -105,7 +105,7 @@ double getPitchByTraj( std::min(start_idx, trajectory.points.size() - 2), trajectory.points.size() - 1); }(); - return autoware_universe_utils::calcElevationAngle( + return autoware::universe_utils::calcElevationAngle( trajectory.points.at(prev_idx).pose.position, trajectory.points.at(next_idx).pose.position); } @@ -166,7 +166,7 @@ geometry_msgs::msg::Pose findTrajectoryPoseAfterDistance( double remain_dist = distance; geometry_msgs::msg::Pose p = trajectory.points.back().pose; for (size_t i = src_idx; i < trajectory.points.size() - 1; ++i) { - const double dist = autoware_universe_utils::calcDistance3d( + const double dist = autoware::universe_utils::calcDistance3d( trajectory.points.at(i).pose, trajectory.points.at(i + 1).pose); if (remain_dist < dist) { if (remain_dist <= 0.0) { diff --git a/control/autoware_pid_longitudinal_controller/src/pid_longitudinal_controller.cpp b/control/autoware_pid_longitudinal_controller/src/pid_longitudinal_controller.cpp index dda6b9632a769..93496c85c741b 100644 --- a/control/autoware_pid_longitudinal_controller/src/pid_longitudinal_controller.cpp +++ b/control/autoware_pid_longitudinal_controller/src/pid_longitudinal_controller.cpp @@ -27,14 +27,16 @@ namespace autoware::motion::control::pid_longitudinal_controller { -PidLongitudinalController::PidLongitudinalController(rclcpp::Node & node) +PidLongitudinalController::PidLongitudinalController( + rclcpp::Node & node, std::shared_ptr diag_updater) : node_parameters_(node.get_node_parameters_interface()), clock_(node.get_clock()), - logger_(node.get_logger().get_child("longitudinal_controller")), - diagnostic_updater_(&node) + logger_(node.get_logger().get_child("longitudinal_controller")) { using std::placeholders::_1; + diag_updater_ = diag_updater; + // parameters timer m_longitudinal_ctrl_period = node.get_parameter("ctrl_period").as_double(); @@ -432,7 +434,7 @@ trajectory_follower::LongitudinalOutput PidLongitudinalController::run( publishDebugData(ctrl_cmd, control_data); // diagnostic - diagnostic_updater_.force_update(); + diag_updater_->force_update(); return output; } @@ -465,10 +467,10 @@ PidLongitudinalController::ControlData PidLongitudinalController::getControlData // check if the deviation is worth emergency m_diagnostic_data.trans_deviation = - autoware_universe_utils::calcDistance2d(current_interpolated_pose.first, current_pose); + autoware::universe_utils::calcDistance2d(current_interpolated_pose.first, current_pose); const bool is_dist_deviation_large = m_state_transition_params.emergency_state_traj_trans_dev < m_diagnostic_data.trans_deviation; - m_diagnostic_data.rot_deviation = std::abs(autoware_universe_utils::normalizeRadian( + m_diagnostic_data.rot_deviation = std::abs(autoware::universe_utils::normalizeRadian( tf2::getYaw(current_interpolated_pose.first.pose.orientation) - tf2::getYaw(current_pose.orientation))); const bool is_yaw_deviation_large = @@ -509,11 +511,11 @@ PidLongitudinalController::ControlData PidLongitudinalController::getControlData // ========================================================================================== // Remove overlapped points after inserting the interpolated points control_data.interpolated_traj.points = - autoware_motion_utils::removeOverlapPoints(control_data.interpolated_traj.points); - control_data.nearest_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + autoware::motion_utils::removeOverlapPoints(control_data.interpolated_traj.points); + control_data.nearest_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( control_data.interpolated_traj.points, nearest_point.pose, m_ego_nearest_dist_threshold, m_ego_nearest_yaw_threshold); - control_data.target_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + control_data.target_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( control_data.interpolated_traj.points, target_point.pose, m_ego_nearest_dist_threshold, m_ego_nearest_yaw_threshold); @@ -594,7 +596,7 @@ void PidLongitudinalController::updateControlState(const ControlData & control_d stop_dist > p.drive_state_stop_dist + p.drive_state_offset_stop_dist; const bool departure_condition_from_stopped = stop_dist > p.drive_state_stop_dist; - // NOTE: the same velocity threshold as autoware_motion_utils::searchZeroVelocity + // NOTE: the same velocity threshold as autoware::motion_utils::searchZeroVelocity static constexpr double vel_epsilon = 1e-3; // Let vehicle start after the steering is converged for control accuracy @@ -605,7 +607,7 @@ void PidLongitudinalController::updateControlState(const ControlData & control_d auto marker = createDefaultMarker( "map", clock_->now(), "stop_reason", 0, Marker::TEXT_VIEW_FACING, createMarkerScale(0.0, 0.0, 1.0), createMarkerColor(1.0, 1.0, 1.0, 0.999)); - marker.pose = autoware_universe_utils::calcOffsetPose( + marker.pose = autoware::universe_utils::calcOffsetPose( m_current_kinematic_state.pose.pose, m_wheel_base + m_front_overhang, m_vehicle_width / 2 + 2.0, 1.5); marker.text = "steering not\nconverged"; @@ -971,7 +973,7 @@ PidLongitudinalController::Motion PidLongitudinalController::keepBrakeBeforeStop } const auto traj = control_data.interpolated_traj; - const auto stop_idx = autoware_motion_utils::searchZeroVelocityIndex(traj.points); + const auto stop_idx = autoware::motion_utils::searchZeroVelocityIndex(traj.points); if (!stop_idx) { return output_motion; } @@ -1150,8 +1152,8 @@ void PidLongitudinalController::updateDebugVelAcc(const ControlData & control_da void PidLongitudinalController::setupDiagnosticUpdater() { - diagnostic_updater_.setHardwareID("autoware_pid_longitudinal_controller"); - diagnostic_updater_.add("control_state", this, &PidLongitudinalController::checkControlState); + diag_updater_->setHardwareID("autoware_pid_longitudinal_controller"); + diag_updater_->add("control_state", this, &PidLongitudinalController::checkControlState); } void PidLongitudinalController::checkControlState( diff --git a/control/autoware_pure_pursuit/include/autoware/pure_pursuit/autoware_pure_pursuit_node.hpp b/control/autoware_pure_pursuit/include/autoware/pure_pursuit/autoware_pure_pursuit_node.hpp index 1030b58e0f979..58ce03a0dbf26 100644 --- a/control/autoware_pure_pursuit/include/autoware/pure_pursuit/autoware_pure_pursuit_node.hpp +++ b/control/autoware_pure_pursuit/include/autoware/pure_pursuit/autoware_pure_pursuit_node.hpp @@ -78,10 +78,10 @@ class PurePursuitNode : public rclcpp::Node private: // Subscriber - autoware_universe_utils::SelfPoseListener self_pose_listener_{this}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::SelfPoseListener self_pose_listener_{this}; + autoware::universe_utils::InterProcessPollingSubscriber sub_trajectory_{this, "input/reference_trajectory"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_current_odometry_{this, "input/current_odometry"}; autoware_planning_msgs::msg::Trajectory::ConstSharedPtr trajectory_; diff --git a/control/autoware_pure_pursuit/src/autoware_pure_pursuit/autoware_pure_pursuit_lateral_controller.cpp b/control/autoware_pure_pursuit/src/autoware_pure_pursuit/autoware_pure_pursuit_lateral_controller.cpp index 8a82e60354f36..803a6ef1e8617 100644 --- a/control/autoware_pure_pursuit/src/autoware_pure_pursuit/autoware_pure_pursuit_lateral_controller.cpp +++ b/control/autoware_pure_pursuit/src/autoware_pure_pursuit/autoware_pure_pursuit_lateral_controller.cpp @@ -141,7 +141,7 @@ TrajectoryPoint PurePursuitLateralController::calcNextPose( const double ds, TrajectoryPoint & point, Lateral cmd) const { geometry_msgs::msg::Transform transform; - transform.translation = autoware_universe_utils::createTranslation(ds, 0.0, 0.0); + transform.translation = autoware::universe_utils::createTranslation(ds, 0.0, 0.0); transform.rotation = planning_utils::getQuaternionFromYaw(((tan(cmd.steering_tire_angle) * ds) / param_.wheel_base)); TrajectoryPoint output_p; @@ -158,17 +158,17 @@ void PurePursuitLateralController::setResampledTrajectory() { // Interpolate with constant interval distance. std::vector out_arclength; - const auto input_tp_array = autoware_motion_utils::convertToTrajectoryPointArray(trajectory_); - const auto traj_length = autoware_motion_utils::calcArcLength(input_tp_array); + const auto input_tp_array = autoware::motion_utils::convertToTrajectoryPointArray(trajectory_); + const auto traj_length = autoware::motion_utils::calcArcLength(input_tp_array); for (double s = 0; s < traj_length; s += param_.resampling_ds) { out_arclength.push_back(s); } trajectory_resampled_ = std::make_shared( - autoware_motion_utils::resampleTrajectory( - autoware_motion_utils::convertToTrajectory(input_tp_array), out_arclength)); + autoware::motion_utils::resampleTrajectory( + autoware::motion_utils::convertToTrajectory(input_tp_array), out_arclength)); trajectory_resampled_->points.back() = trajectory_.points.back(); trajectory_resampled_->header = trajectory_.header; - output_tp_array_ = autoware_motion_utils::convertToTrajectoryPointArray(*trajectory_resampled_); + output_tp_array_ = autoware::motion_utils::convertToTrajectoryPointArray(*trajectory_resampled_); } double PurePursuitLateralController::calcCurvature(const size_t closest_idx) @@ -202,10 +202,10 @@ double PurePursuitLateralController::calcCurvature(const size_t closest_idx) double current_curvature = 0.0; try { - current_curvature = autoware_universe_utils::calcCurvature( - autoware_universe_utils::getPoint(trajectory_resampled_->points.at(prev_idx)), - autoware_universe_utils::getPoint(trajectory_resampled_->points.at(closest_idx)), - autoware_universe_utils::getPoint(trajectory_resampled_->points.at(next_idx))); + current_curvature = autoware::universe_utils::calcCurvature( + autoware::universe_utils::getPoint(trajectory_resampled_->points.at(prev_idx)), + autoware::universe_utils::getPoint(trajectory_resampled_->points.at(closest_idx)), + autoware::universe_utils::getPoint(trajectory_resampled_->points.at(next_idx))); } catch (std::exception const & e) { // ...code that handles the error... RCLCPP_WARN(rclcpp::get_logger("pure_pursuit"), "%s", e.what()); @@ -268,7 +268,7 @@ void PurePursuitLateralController::averageFilterTrajectory( boost::optional PurePursuitLateralController::generatePredictedTrajectory() { - const auto closest_idx_result = autoware_motion_utils::findNearestIndex( + const auto closest_idx_result = autoware::motion_utils::findNearestIndex( output_tp_array_, current_odometry_.pose.pose, 3.0, M_PI_4); if (!closest_idx_result) { @@ -427,7 +427,7 @@ boost::optional PurePursuitLateralController::calcTargetCurvature( // Calculate target point for velocity/acceleration const auto closest_idx_result = - autoware_motion_utils::findNearestIndex(output_tp_array_, pose, 3.0, M_PI_4); + autoware::motion_utils::findNearestIndex(output_tp_array_, pose, 3.0, M_PI_4); if (!closest_idx_result) { RCLCPP_ERROR(logger_, "cannot find closest waypoint"); return {}; @@ -439,7 +439,7 @@ boost::optional PurePursuitLateralController::calcTargetCurvature( // calculate the lateral error const double lateral_error = - autoware_motion_utils::calcLateralOffset(trajectory_resampled_->points, pose.position); + autoware::motion_utils::calcLateralOffset(trajectory_resampled_->points, pose.position); // calculate the current curvature diff --git a/control/autoware_shift_decider/include/autoware/shift_decider/autoware_shift_decider.hpp b/control/autoware_shift_decider/include/autoware/shift_decider/autoware_shift_decider.hpp index cffdbf2cdf2ab..c7ce822d1ac18 100644 --- a/control/autoware_shift_decider/include/autoware/shift_decider/autoware_shift_decider.hpp +++ b/control/autoware_shift_decider/include/autoware/shift_decider/autoware_shift_decider.hpp @@ -43,11 +43,11 @@ class ShiftDecider : public rclcpp::Node void initTimer(double period_s); rclcpp::Publisher::SharedPtr pub_shift_cmd_; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_control_cmd_{this, "input/control_cmd"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_autoware_state_{this, "input/state"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_current_gear_{this, "input/current_gear"}; rclcpp::TimerBase::SharedPtr timer_; diff --git a/control/autoware_smart_mpc_trajectory_follower/.gitignore b/control/autoware_smart_mpc_trajectory_follower/.gitignore index d914a0aa99e5a..c5b22066b75c1 100644 --- a/control/autoware_smart_mpc_trajectory_follower/.gitignore +++ b/control/autoware_smart_mpc_trajectory_follower/.gitignore @@ -1,3 +1,4 @@ # Files generated when installing smart_mpc_trajectory_follower build/ *.egg-info/ +.cspell.json diff --git a/control/autoware_smart_mpc_trajectory_follower/README.md b/control/autoware_smart_mpc_trajectory_follower/README.md index fd135319ff900..bb31a1be3a8b5 100644 --- a/control/autoware_smart_mpc_trajectory_follower/README.md +++ b/control/autoware_smart_mpc_trajectory_follower/README.md @@ -3,7 +3,7 @@

- + # Smart MPC Trajectory Follower @@ -83,19 +83,29 @@ model_trainer.transform_rosbag_to_csv(rosbag_dir) Here, `rosbag_dir` represents the rosbag directory. At this time, all CSV files in `rosbag_dir` are automatically deleted first. -The paths of the rosbag directories used for training, `dir_0`, `dir_1`, `dir_2`,... and the directory `save_dir` where you save the models, the model can be saved in the python environment as follows: +We move on to an explanation of how the model is trained. +If `trained_model_parameter:memory_for_training:use_memory_for_training` in [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml) is set to `true`, training is performed on models that include LSTM, and if it is set to `false`, training is performed on models that do not include LSTM. +When using LSTM, cell states and hidden states are updated based on historical time series data and reflected in the prediction. + +The paths of the rosbag directories used for training and validation, `dir_0`, `dir_1`, `dir_2`,..., `dir_val_0`, `dir_val_1`, `dir_val_2`,... and the directory `save_dir` where you save the models, the model can be saved in the python environment as follows: ```python from autoware_smart_mpc_trajectory_follower.training_and_data_check import train_drive_NN_model model_trainer = train_drive_NN_model.train_drive_NN_model() -model_trainer.add_data_from_csv(dir_0) -model_trainer.add_data_from_csv(dir_1) -model_trainer.add_data_from_csv(dir_2) +model_trainer.add_data_from_csv(dir_0, add_mode="as_train") +model_trainer.add_data_from_csv(dir_1, add_mode="as_train") +model_trainer.add_data_from_csv(dir_2, add_mode="as_train") +... +model_trainer.add_data_from_csv(dir_val_0, add_mode="as_val") +model_trainer.add_data_from_csv(dir_val_1, add_mode="as_val") +model_trainer.add_data_from_csv(dir_val_2, add_mode="as_val") ... model_trainer.get_trained_model() model_trainer.save_models(save_dir) ``` +If `add_mode` is not specified or validation data is not added, the training data is split to be used for training and validation. + After performing the polynomial regression, the NN can be trained on the residuals as follows: ```python @@ -130,6 +140,7 @@ To perform a control test on autoware with the nominal model before training, ma

Record rosbag and train the model in the manner described in "Training of model and reflection in control", and move the generated files `model_for_test_drive.pth` and `polynomial_reg_info.npz` to the home directory. +Sample models, which work under the condition that`trained_model_parameter:memory_for_training:use_memory_for_training` in [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml) is set to `true`, can be obtained at [sample_models/wheel_base_changed](./sample_models/wheel_base_changed/). > [!NOTE] > Although the data used for training is small, for the sake of simplicity, we will see how much performance can be improved with this amount of data. @@ -158,58 +169,84 @@ First, to give wheel base 2.79 m in the python simulator, create the following f { "wheel_base": 2.79 } ``` -Next, run the following commands to test the slalom driving on the python simulator with the nominal model: +Next, after moving to `control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator`, run the following commands to test the slalom driving on the python simulator with the nominal control: -```python -import python_simulator -from autoware_smart_mpc_trajectory_follower.training_and_data_check import train_drive_NN_model -initial_error = [0.0, 0.03, 0.01, -0.01, 0.0, 0.0] -save_dir = "test_python_sim" -python_simulator.slalom_drive(save_dir=save_dir,use_trained_model=False,initial_error=initial_error) +```bash +python3 run_python_simulator.py nominal_test ``` -Here, `initial_error` is the initial error from the target trajectory, in the order of x-coordinate, y-coordinate, longitudinal velocity, yaw angle, longitudinal acceleration, and steer angle, -and `save_dir` is the directory where the driving test results are saved. +The result of the driving is stored in `test_python_nominal_sim`. -> [!NOTE] -> The value of `use_trained_model` given as the argument of `python_simulator.slalom_drive` takes precedence over the value of `trained_model_parameter:control_application:use_trained_model` in [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml). +The following results were obtained. -Run the following commands to perform training using driving data of the nominal model. +

+ +

-```python -model_trainer = train_drive_NN_model.train_drive_NN_model() -model_trainer.add_data_from_csv(save_dir) -model_trainer.save_train_data(save_dir) -model_trainer.get_trained_model(use_polynomial_reg=True) -model_trainer.save_models(save_dir=save_dir) +The center of the upper row represents the lateral deviation. + +Run the following commands to perform training using figure eight driving data under the control of pure pursuit. + +To perform training using a figure eight driving and driving based on the obtained model, run the following commands: + +```bash +python3 run_python_simulator.py ``` -This way, files `model_for_test_drive.pth` and `polynomial_reg_info.npz` are saved in `save_dir`. -The following results were obtained. +The result of the driving is stored in `test_python_trined_sim`. + +When `trained_model_parameter:memory_for_training:use_memory_for_training` in [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml) is set to `true`, the following results were obtained.

- +

-The center of the upper row represents the lateral deviation. +When `trained_model_parameter:memory_for_training:use_memory_for_training` in [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml) is set to `false`, the following results were obtained. -Finally, to drive with the training model, run the following commands: +

+ +

-```python -load_dir = save_dir -save_dir = "test_python_trained_sim" -python_simulator.slalom_drive(save_dir=save_dir,load_dir=load_dir,use_trained_model=True,initial_error=initial_error) +It can be seen that the lateral deviation has improved significantly. +However, the difference in driving with and without LSTM is not very apparent. + +To see the difference, for example, we can experiment with parameters such as steer_time_delay. + +First, to restore nominal model settings to default values, set the value of `nominal_parameter:vehicle_info:wheel_base` in [nominal_param.yaml](./autoware_smart_mpc_trajectory_follower/param/nominal_param.yaml) to 2.79, and run the following command: + +```bash +python3 -m smart_mpc_trajectory_follower.clear_pycache ``` -The following results were obtained. +Next, modify `sim_setting.json` as follows: + +```json +{ "steer_time_delay": 1.01 } +``` + +In this way, an experiment is performed when `steer_time_delay` is set to 1.01 sec. + +The result of the driving using the nominal model is as follows:

- +

-It can be seen that the lateral deviation has improved significantly. +The result of the driving using the trained model with LSTM is as follows: -Here we have described wheel base, but the parameters that can be passed to the python simulator are as follows. +

+ +

+ +The result of the driving using the trained model without LSTM is as follows: + +

+ +

+ +It can be seen that the performance with the model that includes LSTM is significantly better than with the model that does not. + +The parameters that can be passed to the python simulator are as follows. | Parameter | Type | Description | | ------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -226,6 +263,7 @@ Here we have described wheel base, but the parameters that can be passed to the | accel_map_scale | float | Parameter that magnifies the corresponding distortion from acceleration input values to actual acceleration realizations.
Correspondence information is kept in `control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/accel_map.csv`. | | acc_scaling | float | acceleration scaling | | steer_scaling | float | steer scaling | +| vehicle_type | int | Take values from 0 to 4 for pre-designed vehicle types.
A description of each vehicle type is given below. | For example, to give the simulation side 0.01 [rad] of steer bias and 0.001 [rad] of steer dead band, edit the `sim_setting.json` as follows. @@ -233,15 +271,74 @@ For example, to give the simulation side 0.01 [rad] of steer bias and 0.001 [rad { "steer_bias": 0.01, "steer_dead_band": 0.001 } ``` -#### Auto test on python simulator +##### vehicle_type_0 -Here, we describe a method for testing adaptive performance by giving the simulation side a predefined range of model parameters while the control side is given constant model parameters. +This vehicle type matches the default vehicle type used in the control. -First, to restore nominal model settings to default values, set the value of `nominal_parameter:vehicle_info:wheel_base` in [nominal_param.yaml](./autoware_smart_mpc_trajectory_follower/param/nominal_param.yaml) to 2.79, and run the following command: +| Parameter | value | +| ------------------- | ----- | +| wheel_base | 2.79 | +| acc_time_delay | 0.1 | +| steer_time_delay | 0.27 | +| acc_time_constant | 0.1 | +| steer_time_constant | 0.24 | +| acc_scaling | 1.0 | -```bash -python3 -m smart_mpc_trajectory_follower.clear_pycache -``` +##### vehicle_type_1 + +This vehicle type is intended for a heavy bus. + +| Parameter | value | +| ------------------- | ----- | +| wheel_base | 4.76 | +| acc_time_delay | 1.0 | +| steer_time_delay | 1.0 | +| acc_time_constant | 1.0 | +| steer_time_constant | 1.0 | +| acc_scaling | 0.2 | + +##### vehicle_type_2 + +This vehicle type is intended for a light bus. + +| Parameter | value | +| ------------------- | ----- | +| wheel_base | 4.76 | +| acc_time_delay | 0.5 | +| steer_time_delay | 0.5 | +| acc_time_constant | 0.5 | +| steer_time_constant | 0.5 | +| acc_scaling | 0.5 | + +##### vehicle_type_3 + +This vehicle type is intended for a small vehicle. + +| Parameter | value | +| ------------------- | ----- | +| wheel_base | 1.335 | +| acc_time_delay | 0.3 | +| steer_time_delay | 0.3 | +| acc_time_constant | 0.3 | +| steer_time_constant | 0.3 | +| acc_scaling | 1.5 | + +##### vehicle_type_4 + +This vehicle type is intended for a small robot. + +| Parameter | value | +| ------------------- | ----- | +| wheel_base | 0.395 | +| acc_time_delay | 0.2 | +| steer_time_delay | 0.2 | +| acc_time_constant | 0.2 | +| steer_time_constant | 0.2 | +| acc_scaling | 1.0 | + +#### Auto test on python simulator + +Here, we describe a method for testing adaptive performance by giving the simulation side a predefined range of model parameters while the control side is given constant model parameters. To run a driving experiment within the parameter change range set in [run_sim.py](./autoware_smart_mpc_trajectory_follower/python_simulator/run_sim.py), for example, move to `control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator` and run the following command: @@ -251,27 +348,43 @@ python3 run_sim.py --param_name steer_bias Here we described the experimental procedure for steer bias, and the same method can be used for other parameters. -If you want to do it for all parameters at once, run the following command: +To run the test for all parameters except limits at once, run the following command: ```bash -yes | python3 run_sim.py +python3 run_auto_test.py ``` +The results are stored in the `auto_test` directory. +After the executions were completed, the following results were obtained by running [plot_auto_test_result.ipynb](./autoware_smart_mpc_trajectory_follower/python_simulator/plot_auto_test_result.ipynb): + +

+ +

+ +The orange line shows the intermediate model trained using pure pursuit figure eight drive, and the blue line shows the final model trained using data from both the intermediate model and the figure eight drive. +In most cases, sufficient performance is obtained, but for `vehicle_type_1`, which is intended for a heavy bus, a lateral deviation of about 2 m was observed, which is not satisfactory. + In `run_sim.py`, the following parameters can be set: -| Parameter | Type | Description | -| ------------------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| USE_TRAINED_MODEL_DIFF | bool | Whether the derivative of the trained model is reflected in the control | -| DATA_COLLECTION_MODE | str | Which method will be used to collect the training data 
"ff": Straight line driving with feed-forward input
"pp": Figure eight driving with pure pursuit control
"mpc": Slalom driving with mpc | -| USE_POLYNOMIAL_REGRESSION | bool | Whether to perform polynomial regression before NN | -| USE_SELECTED_POLYNOMIAL | bool | When USE_POLYNOMIAL_REGRESSION is True, perform polynomial regression using only some preselected polynomials.
The choice of polynomials is intended to be able to absorb the contribution of some parameter shifts based on the nominal model of the vehicle. | -| FORCE_NN_MODEL_TO_ZERO | bool | Whether to force the NN model to zero (i.e., erase the contribution of the NN model).
When USE_POLYNOMIAL_REGRESSION is True, setting FORCE_MODEL_TO_ZERO to True allows the control to reflect the results of polynomial regression only, without using NN models. | -| FIT_INTERCEPT | bool | Whether to include bias in polynomial regression.
If it is False, perform the regression with a polynomial of the first degree or higher. | -| USE_INTERCEPT | bool | When a polynomial regression including bias is performed, whether to use or discard the resulting bias information.
It is meaningful only if FIT_INTERCEPT is True.
If it is False, discard the bias in the polynomial regression in the hope that the NN model can remove the bias term, even if the polynomial regression is performed with the bias included. | +| Parameter | Type | Description | +| ------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| USE_TRAINED_MODEL_DIFF | bool | Whether the derivative of the trained model is reflected in the control | +| DATA_COLLECTION_MODE | DataCollectionMode | Which method will be used to collect the training data 
"DataCollectionMode.ff": Straight line driving with feed-forward input
"DataCollectionMode.pp": Figure eight driving with pure pursuit control
"DataCollectionMode.mpc": Slalom driving with mpc | +| USE_POLYNOMIAL_REGRESSION | bool | Whether to perform polynomial regression before NN | +| USE_SELECTED_POLYNOMIAL | bool | When USE_POLYNOMIAL_REGRESSION is True, perform polynomial regression using only some preselected polynomials.
The choice of polynomials is intended to be able to absorb the contribution of some parameter shifts based on the nominal model of the vehicle. | +| FORCE_NN_MODEL_TO_ZERO | bool | Whether to force the NN model to zero (i.e., erase the contribution of the NN model).
When USE_POLYNOMIAL_REGRESSION is True, setting FORCE_MODEL_TO_ZERO to True allows the control to reflect the results of polynomial regression only, without using NN models. | +| FIT_INTERCEPT | bool | Whether to include bias in polynomial regression.
If it is False, perform the regression with a polynomial of the first degree or higher. | +| USE_INTERCEPT | bool | When a polynomial regression including bias is performed, whether to use or discard the resulting bias information.
It is meaningful only if FIT_INTERCEPT is True.
If it is False, discard the bias in the polynomial regression in the hope that the NN model can remove the bias term, even if the polynomial regression is performed with the bias included. | > [!NOTE] > When `run_sim.py` is run, the `use_trained_model_diff` set in `run_sim.py` takes precedence over the `trained_model_parameter:control_application:use_trained_model_diff` set in [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml). +#### Kernel density estimation of pure pursuit driving data + +The distribution of data obtained from pure pursuit runs can be displayed using Kernel density estimation. To do this, run [density_estimation.ipynb](./autoware_smart_mpc_trajectory_follower/python_simulator/density_estimation.ipynb). + +The correlation between the minimum value of the density estimate and the lateral deviation of the run results is low. A scalar indicator that better predicts the value of lateral deviation is under development. + ## Change of nominal parameters and their reloading The nominal parameters of vehicle model can be changed by editing the file [nominal_param.yaml](./autoware_smart_mpc_trajectory_follower/param/nominal_param.yaml). @@ -293,7 +406,7 @@ The nominal parameters include the following: ## Change of control parameters and their reloading -The control parameters can be changed by editing files [mpc_param.yaml](./smart_mpc_trajectory_follower/param/mpc_param.yaml) and [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml). +The control parameters can be changed by editing files [mpc_param.yaml](./autoware_smart_mpc_trajectory_follower/param/mpc_param.yaml) and [trained_model_param.yaml](./autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml). Although it is possible to reflect parameter changes by restarting autoware, the following command allows us to do so without leaving autoware running: ```bash @@ -304,21 +417,29 @@ The main parameters among the control parameters are as follows. ### `mpc_param.yaml` -| Parameter | Type | Description | -| ------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| mpc_parameter:system:mode | str | control mode
"ilqr": iLQR mode
"mppi": MPPI mode
"mppi_ilqr": the initial value of iLQR is given by the MPPI solution. | -| mpc_parameter:cost_parameters:Q | list[float] | Stage cost for states.
List of length 8, in order: straight deviation, lateral deviation, velocity deviation, yaw angle deviation, acceleration deviation, steer deviation, acceleration input deviation, steer input deviation cost weights. | -| mpc_parameter:cost_parameters:Q_c | list[float] | Cost in the horizon corresponding to the following timing_Q_c for the states.
The correspondence of the components of the list is the same as for Q. | -| mpc_parameter:cost_parameters:Q_f | list[float] | Termination cost for the states.
The correspondence of the components of the list is the same as for Q. | -| mpc_parameter:cost_parameters:R | list[float] | A list of length 2 where R[0] is weight of cost for the change rate of acceleration input value and R[1] is weight of cost for the change rate of steer input value. | -| mpc_parameter:mpc_setting:timing_Q_c | list[int] | Horizon numbers such that the stage cost for the states is set to Q_c. | +| Parameter | Type | Description | +| ------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| mpc_parameter:system:mode | str | control mode
"ilqr": iLQR mode
"mppi": MPPI mode
"mppi_ilqr": the initial value of iLQR is given by the MPPI solution. | +| mpc_parameter:cost_parameters:Q | list[float] | Stage cost for states.
List of length 8, in order: straight deviation, lateral deviation, velocity deviation, yaw angle deviation, acceleration deviation, steer deviation, acceleration input deviation, steer input deviation cost weights. | +| mpc_parameter:cost_parameters:Q_c | list[float] | Cost in the horizon corresponding to the following timing_Q_c for the states.
The correspondence of the components of the list is the same as for Q. | +| mpc_parameter:cost_parameters:Q_f | list[float] | Termination cost for the states.
The correspondence of the components of the list is the same as for Q. | +| mpc_parameter:cost_parameters:R | list[float] | A list of length 2 where R[0] is weight of cost for the change rate of acceleration input value and R[1] is weight of cost for the change rate of steer input value. | +| mpc_parameter:mpc_setting:timing_Q_c | list[int] | Horizon numbers such that the stage cost for the states is set to Q_c. | +| mpc_parameter:compensation:acc_fb_decay | float | Coefficient of damping in integrating the error between the observed and predicted acceleration values in the compensator outside the MPC. | +| mpc_parameter:compensation:acc_fb_gain | float | Gain of acceleration compensation. | +| mpc_parameter:compensation:max_error_acc | float | Maximum acceleration compensation (m/s^2) | +| mpc_parameter:compensation:steer_fb_decay | float | Coefficient of damping in integrating the error between the observed and predicted steering values in the compensator outside the MPC. | +| mpc_parameter:compensation:steer_fb_gain | float | Gain of steering compensation. | +| mpc_parameter:compensation:max_error_steer | float | Maximum steering compensation (rad) | ### `trained_model_param.yaml` -| Parameter | Type | Description | -| ------------------------------------------------------------------ | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| trained_model_parameter:control_application:use_trained_model | bool | Whether the trained model is reflected in the control or not. | -| trained_model_parameter:control_application:use_trained_model_diff | bool | Whether the derivative of the trained model is reflected on the control or not.
It is meaningful only when use_trained_model is True, and if False, the nominal model is used for the derivative of the dynamics, and trained model is used only for prediction. | +| Parameter | Type | Description | +| ------------------------------------------------------------------- | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| trained_model_parameter:control_application:use_trained_model | bool | Whether the trained model is reflected in the control or not. | +| trained_model_parameter:control_application:use_trained_model_diff | bool | Whether the derivative of the trained model is reflected on the control or not.
It is meaningful only when use_trained_model is True, and if False, the nominal model is used for the derivative of the dynamics, and trained model is used only for prediction. | +| trained_model_parameter:memory_for_training:use_memory_for_training | bool | Whether to use the model that includes LSTM for learning or not. | +| trained_model_parameter:memory_for_training:use_memory_diff | bool | Whether the derivative with respect to the cell state and hidden state at the previous time of LSTM is reflected in the control or not. | ## Request to release the slow stop mode @@ -336,3 +457,5 @@ ros2 topic pub /pympc_stop_mode_reset_request std_msgs/msg/String "data: ''" --o - It may take some time until the end of the planning to compile numba functions at the start of the first control. - In the stopping action near the goal our control switches to another simple control law. As a result, the stopping action may not work except near the goal. Stopping is also difficult if the acceleration map is significantly shifted. + +- If the dynamics deviates too much from the nominal model, as in `vehicle_type_1`, which is intended for heavy buses, it may not be well controlled. diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/mpc_param.yaml b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/mpc_param.yaml index 710d1cc992949..797976994ff7e 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/mpc_param.yaml +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/mpc_param.yaml @@ -1,11 +1,11 @@ mpc_parameter: system: - mode: mppi_ilqr # option: ilqr, mppi, mppi_ilqr + mode: ilqr # option: ilqr, mppi, mppi_ilqr mpc_setting: ctrl_time_step: 0.03333 mpc_freq: 3 N: 50 - steer_ctrl_queue_size: 50 + steer_ctrl_queue_size: 17 steer_ctrl_queue_size_core: 15 acc_ctrl_queue_size: 12 nx_0: 6 @@ -14,21 +14,21 @@ mpc_parameter: cost_parameters: Q: [0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Q_c: [1e+2, 1e+8, 1e+6, 1e+3, 1.0, 1.0, 1.0, 1.0] - Q_f: [1e+2, 1e+8, 1e+2, 1e+8, 1.0, 1.0, 1.0, 1.0] + Q_f: [1e+2, 1e+8, 1e+2, 1e+7, 1.0, 1.0, 1.0, 1.0] R: [10.0, 1000.0] acc_lim_weight: 100.0 steer_lim_weight: 100.0 acc_rate_lim_weight: 10000.0 steer_rate_lim_weight: 10000.0 - min_steer_rate_transform_for_start: 0.01 - power_steer_rate_transform_for_start: 5 - coef_steer_rate_transform_for_start: 3.0 - min_loose_lateral_cost: 0.00001 - power_loose_lateral_cost: 10 - threshold_loose_lateral_cost: 0.2 - min_loose_yaw_cost: 0.00001 - power_loose_yaw_cost: 1 - threshold_loose_yaw_cost: 0.1 + vel_steer_cost_coef_table: [0.01, 0.01, 0.08, 0.36, 1.0] + vel_steer_table: [0.01, 0.1, 0.2, 0.27, 0.33] + lateral_cost_coef_table: [0.00001, 0.0005, 0.06, 0.27, 1.0] + lateral_error_table: [0.01, 0.1, 0.15, 0.175, 0.2] + yaw_cost_coef_table: [0.00001, 1.0] + yaw_error_table: [0.00001, 0.1] + steer_rate_cost_table: [10.0, 5.0, 1.0] + curvature_table: [0.01, 0.03, 0.05] + use_max_curvature: true ilqr: ls_step: 0.9 max_iter_ls: 10 @@ -40,17 +40,31 @@ mpc_parameter: max_iter_mppi: 2 sample_num: 100 mppi_tol: 0.5 - mppi_step: 20 + mppi_step: 7 + pure_pursuit: + acc_kp: 0.5 + lookahead_time: 3.0 + min_lookahead: 10.0 + steer_kp_param: 2.0 + steer_kd_param: 2.0 + naive_pure_pursuit: + acc_kp: 0.5 + lookahead_coef: 1.0 + lookahead_intercept: 5.0 preprocessing: reference_horizon: 50 cap_pred_error: [0.5, 2.0] use_sg_for_nominal_inputs: true sg_deg_for_nominal_inputs: 0 sg_window_size_for_nominal_inputs: 10 - to_be_deprecated: - tighten_horizon: 20 - min_tighten_steer_rate: 1.0 - power_tighten_steer_rate_by_lateral_error: 1 - threshold_tighten_steer_rate_by_lateral_error: 0.05 - power_tighten_steer_rate_by_yaw_error: 1 - threshold_tighten_steer_rate_by_yaw_error: 0.05 + compensation: + acc_fb_decay: 0.1 + acc_fb_gain: 1.0 + acc_fb_sec_order_ratio: 1.0 + max_error_acc: 1e-3 + steer_fb_decay: 0.001 + steer_fb_gain: 1.0 + steer_fb_sec_order_ratio: 1.0 + max_error_steer: 1e-2 + limit: + read_limit_file: false diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml index 6d1973586a5eb..b144bde856016 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml @@ -5,6 +5,8 @@ trained_model_parameter: max_train_data_size: 10000 error_decay: [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] use_trained_model_diff: true + minimum_steer_diff: 0.03 + reflect_only_poly_diff: false use_sg_for_trained_model_diff: true sg_deg_for_trained_model_diff: 0 sg_window_size_for_trained_model_diff: 25 @@ -17,6 +19,12 @@ trained_model_parameter: use_theta_noise: false use_acc_noise: false use_steer_noise: false + memory_for_training: + use_memory_for_training: true + use_memory_diff: true + use_sg_for_memory_diff: true + sg_deg_for_memory_diff: 0 + sg_window_size_for_memory_diff: 10 smoothing: acc_sigma_for_learning: 5.0 steer_sigma_for_learning: 5.0 @@ -28,3 +36,29 @@ trained_model_parameter: theta_out_sigma_for_learning: 10.0 acc_out_sigma_for_learning: 5.0 steer_out_sigma_for_learning: 5.0 + normalize: + vel_normalize: 0.2 + acc_normalize: 1.0 + steer_normalize: 3.0 + weight: + NN_x_weight: 1.0 + NN_y_weight: 1.0 + NN_v_weight: 1.0 + NN_yaw_weight: 2.0 + NN_acc_weight: 1.0 + NN_steer_weight: 2.0 + NN_x_weight_diff: 0.001 + NN_y_weight_diff: 0.01 + NN_v_weight_diff: 0.001 + NN_yaw_weight_diff: 0.1 + NN_acc_weight_diff: 0.1 + NN_steer_weight_diff: 0.1 + NN_x_weight_two_diff: 0.0001 + NN_y_weight_two_diff: 0.001 + NN_v_weight_two_diff: 0.00001 + NN_yaw_weight_two_diff: 0.01 + NN_acc_weight_two_diff: 0.01 + NN_steer_weight_two_diff: 0.01 + finalize_x_weight: 10.0 + finalize_y_weight: 10.0 + finalize_v_weight: 10.0 diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/.gitignore b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/.gitignore index 9f6b19213255b..5b39e844b3405 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/.gitignore +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/.gitignore @@ -8,6 +8,7 @@ train_drive_*.png test_feedforward_*/ test_pure_pursuit_*/ test_python_*/ +test_*/ python_sim_log_*/ sim_setting.json auto_test_result_*.csv diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/assets.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/assets.py new file mode 100644 index 0000000000000..1bf9c7ac894d3 --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/assets.py @@ -0,0 +1,261 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from enum import Enum +import os + +import numpy as np + +CHANGE_PARAM_P1 = 0.8 +CHANGE_PARAM_P2 = 1.2 + + +class ControlType(Enum): + ff = "feed_forward" + pp_eight = "pure_pursuit_figure_eight" + pp_straight = "pure_pursuit_straight" + npp_eight = "naive_pure_pursuit_figure_eight" + mpc = "smart_mpc" + + def __str__(self) -> str: + return self.name + + +class DataCollectionMode(Enum): + ff = "feed_forward" + pp = "pure_pursuit" + npp = "naive_pure_pursuit" + mpc = "nominal_mpc" + + def __str__(self) -> str: + return self.name + + def toControlTypes(self) -> list[ControlType]: + if self.name == "pp": + return [ControlType.pp_eight, ControlType.pp_straight] + elif self.name == "npp": + return [ControlType.npp_eight] + elif self.name == "ff": + return [ControlType.ff] + elif self.name == "mpc": + return [ControlType.mpc] + else: + print(f"Error: unexpected DataCollectionMode: {self}") + raise Exception + + +class ChangeParam(Enum): + """Parameters to be changed when running the simulation.""" + + steer_bias = [ + -1.0 * np.pi / 180.0, + -0.8 * np.pi / 180.0, + -0.6 * np.pi / 180.0, + -0.4 * np.pi / 180.0, + -0.2 * np.pi / 180.0, + 0.0, + 0.2 * np.pi / 180.0, + 0.4 * np.pi / 180.0, + 0.6 * np.pi / 180.0, + 0.8 * np.pi / 180.0, + 1.0 * np.pi / 180.0, + ] + """steer midpoint (soft + hard)""" + + steer_rate_lim = [0.020, 0.050, 0.100, 0.150, 0.200, 0.300, 0.400, 0.500] + """Maximum steer angular velocity""" + + vel_rate_lim = [0.5, 1.0, 3.0, 5.0, 7.0, 9.0] + """Maximum acceleration/deceleration""" + + wheel_base = [0.5, 1.0, 1.5, 2.0, 3.0, 5.0, 7.0] + """wheel base""" + + steer_dead_band = [0.0000, 0.0012, 0.0025, 0.0050, 0.01] + """steer dead band""" + + adaptive_gear_ratio_coef = [ + [15.713, 0.053, 0.042, 15.713, 0.053, 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P1 * 15.713, 0.053, 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P2 * 15.713, 0.053, 0.042], + [15.713, 0.053, 0.042, 15.713, CHANGE_PARAM_P1 * 0.053, 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P1 * 15.713, CHANGE_PARAM_P1 * 0.053, 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P2 * 15.713, CHANGE_PARAM_P1 * 0.053, 0.042], + [15.713, 0.053, 0.042, 15.713, CHANGE_PARAM_P2 * 0.053, 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P1 * 15.713, CHANGE_PARAM_P2 * 0.053, 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P2 * 15.713, CHANGE_PARAM_P2 * 0.053, 0.042], + [15.713, 0.053, 0.042, 15.713, 0.053, CHANGE_PARAM_P1 * 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P1 * 15.713, 0.053, CHANGE_PARAM_P1 * 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P2 * 15.713, 0.053, CHANGE_PARAM_P1 * 0.042], + [15.713, 0.053, 0.042, 15.713, CHANGE_PARAM_P1 * 0.053, CHANGE_PARAM_P1 * 0.042], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P1 * 15.713, + CHANGE_PARAM_P1 * 0.053, + CHANGE_PARAM_P1 * 0.042, + ], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P2 * 15.713, + CHANGE_PARAM_P1 * 0.053, + CHANGE_PARAM_P1 * 0.042, + ], + [15.713, 0.053, 0.042, 15.713, CHANGE_PARAM_P2 * 0.053, CHANGE_PARAM_P1 * 0.042], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P1 * 15.713, + CHANGE_PARAM_P2 * 0.053, + CHANGE_PARAM_P1 * 0.042, + ], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P2 * 15.713, + CHANGE_PARAM_P2 * 0.053, + CHANGE_PARAM_P1 * 0.042, + ], + [15.713, 0.053, 0.042, 15.713, 0.053, CHANGE_PARAM_P2 * 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P1 * 15.713, 0.053, CHANGE_PARAM_P2 * 0.042], + [15.713, 0.053, 0.042, CHANGE_PARAM_P2 * 15.713, 0.053, CHANGE_PARAM_P2 * 0.042], + [15.713, 0.053, 0.042, 15.713, CHANGE_PARAM_P1 * 0.053, CHANGE_PARAM_P2 * 0.042], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P1 * 15.713, + CHANGE_PARAM_P1 * 0.053, + CHANGE_PARAM_P2 * 0.042, + ], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P2 * 15.713, + CHANGE_PARAM_P1 * 0.053, + CHANGE_PARAM_P2 * 0.042, + ], + [15.713, 0.053, 0.042, 15.713, CHANGE_PARAM_P2 * 0.053, CHANGE_PARAM_P2 * 0.042], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P1 * 15.713, + CHANGE_PARAM_P2 * 0.053, + CHANGE_PARAM_P2 * 0.042, + ], + [ + 15.713, + 0.053, + 0.042, + CHANGE_PARAM_P2 * 15.713, + CHANGE_PARAM_P2 * 0.053, + CHANGE_PARAM_P2 * 0.042, + ], + ] + """velocity-dependent gear ratio""" + + acc_time_delay = [0.00, 0.1, 0.27, 0.40, 0.60, 0.80, 1.01] + """acc time delay""" + + steer_time_delay = [0.00, 0.1, 0.27, 0.40, 0.60, 0.80, 1.02] + """steer time delay""" + + acc_time_constant = [0.01, 0.1, 0.20, 0.24, 0.40, 0.60, 0.80, 1.01] + """time constant""" + + steer_time_constant = [0.01, 0.1, 0.20, 0.24, 0.40, 0.60, 0.80, 1.02] + """time constant""" + + accel_map_scale = [0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0] + """pedal - real acceleration correspondence""" + + acc_scaling = [0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.01] + """Acceleration scaling coefficient""" + + steer_scaling = [0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.02] + """Steer scaling coefficient""" + + vehicle_type = [0, 1, 2, 3, 4] + """change to other vehicle parameters""" + + test_vehicle = [0, 1, 2, 3, 4, 5, 6, 7] + + +def test_dir_name( + root: str = ".", + data_collection_mode: DataCollectionMode | None = None, + control_type: ControlType | None = None, + trained: bool = False, + change_param: ChangeParam | None = None, + index: int | None = None, + validation_flag: bool = False, + use_memory_diff: bool = False, +) -> str: + """Generate string for directory name.""" + dir_name = root + "/test" + if control_type is not None: + dir_name += f"_{control_type.value}_sim" + elif data_collection_mode is not None: + dir_name += f"_{data_collection_mode}_aided_sim" + else: + dir_name += "_sim" + + if trained: + dir_name += "_trained" + if change_param is not None: + dir_name += f"_{change_param.name}" + if index is not None: + dir_name += f"_{index}th" + if validation_flag: + dir_name += "_val" + if use_memory_diff: + dir_name += "_mem_diff" + return dir_name + + +class DirGenerator: + """Class to store parameters for `test_dir_name`.""" + + def __init__(self, root: str): + # create directory if not exist + if not os.path.isdir(root): + os.mkdir(root) + self.root = root + + def test_dir_name( + self, + data_collection_mode: DataCollectionMode | None = None, + control_type: ControlType | None = None, + trained: bool = False, + change_param: ChangeParam | None = None, + index: int | None = None, + validation_flag: bool = False, + use_memory_diff: bool = False, + ): + return test_dir_name( + root=self.root, + data_collection_mode=data_collection_mode, + control_type=control_type, + trained=trained, + change_param=change_param, + index=index, + validation_flag=validation_flag, + use_memory_diff=use_memory_diff, + ) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/data_collection_utils.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/data_collection_utils.py new file mode 100644 index 0000000000000..5b681328ec7da --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/data_collection_utils.py @@ -0,0 +1,617 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import csv + +from autoware_smart_mpc_trajectory_follower.scripts import drive_functions +from numba import njit # type: ignore +import numpy as np +from numpy import arctan +from numpy import cos +from numpy import pi +from numpy import sin + +RANDOM_SEED_STEP_RESPONSE = 42 + + +def get_feedforward_nominal_input(t, trajectory_data): + """Calculate the nominal input for feed-forward driving.""" + total_time = trajectory_data[-1, 0] + t_current = t - (t // total_time) * total_time + nearest_index = np.argmin(np.abs(trajectory_data[:, 0] - t_current)) + return trajectory_data[nearest_index, [5, 6]] + + +def create_additional_sine_data( + seed, + t_range, + acc_amp_range, + acc_period_range, + steer_amp_range, + steer_period_range, + large_steer_amp_range, + large_steer_period_range, + start_large_steer_time, +): + """Create sine wave data to be added randomly to feed-forward runs.""" + np.random.seed(seed=seed) + t_acc = 0.0 + t_steer = 0.0 + t_large_steer = 0.0 + t_acc_list = [] + t_steer_list = [] + t_large_steer_list = [] + t_acc_list.append(t_acc) + t_steer_list.append(t_steer) + t_large_steer_list.append(t_large_steer) + t_large_steer += start_large_steer_time + t_large_steer_list.append(t_large_steer) + amp_acc_list = [] + amp_steer_list = [] + amp_large_steer_list = [] + amp_large_steer_list.append(0) + while True: + if max(t_acc, t_large_steer) >= t_steer: + period = ( + steer_period_range[1] - steer_period_range[0] + ) * np.random.uniform() + steer_period_range[0] + t_steer += period + t_steer_list.append(t_steer) + amp_steer_list.append(steer_amp_range * np.random.uniform()) + elif t_large_steer >= t_acc: + period = ( + acc_period_range[1] - acc_period_range[0] + ) * np.random.uniform() + acc_period_range[0] + t_acc += period + t_acc_list.append(t_acc) + amp_acc_list.append(acc_amp_range * np.random.uniform()) + else: + period = ( + large_steer_period_range[1] - large_steer_period_range[0] + ) * np.random.uniform() + large_steer_period_range[0] + t_large_steer += period + t_large_steer_list.append(t_large_steer) + amp_large_steer_list.append(large_steer_amp_range * np.random.uniform()) + if t_acc >= t_range[1] and t_steer >= t_range[1] and t_large_steer >= t_range[1]: + break + return ( + np.array(t_acc_list), + np.array(amp_acc_list), + np.array(t_steer_list), + np.array(amp_steer_list), + np.array(t_large_steer_list), + np.array(amp_large_steer_list), + ) + + +# cSpell:ignore njit fastmath numba +@njit(cache=False, fastmath=True) +def get_current_additional_sine( + t, + t_acc_array, + amp_acc_array, + t_steer_array, + amp_steer_array, + t_large_steer_array, + amp_large_steer_array, +): + """Calculate current values from already created sine wave data.""" + acc_index = 0 + steer_index = 0 + large_steer_index = 0 + for i in range(t_acc_array.shape[0] - 1): + if t < t_acc_array[i + 1]: + break + acc_index += 1 + for i in range(t_steer_array.shape[0] - 1): + if t < t_steer_array[i + 1]: + break + steer_index += 1 + for i in range(t_large_steer_array.shape[0] - 1): + if t < t_large_steer_array[i + 1]: + break + large_steer_index += 1 + acc = amp_acc_array[acc_index] * np.sin( + 2 + * np.pi + * (t - t_acc_array[acc_index]) + / (t_acc_array[acc_index + 1] - t_acc_array[acc_index]) + ) + steer = amp_steer_array[steer_index] * np.sin( + 2 + * np.pi + * (t - t_steer_array[steer_index]) + / (t_steer_array[steer_index + 1] - t_steer_array[steer_index]) + ) + steer += amp_large_steer_array[large_steer_index] * np.sin( + 2 + * np.pi + * (t - t_large_steer_array[large_steer_index]) + / (t_large_steer_array[large_steer_index + 1] - t_large_steer_array[large_steer_index]) + ) + return np.array([acc, steer]) + + +@njit(cache=False, fastmath=True) +def get_vel_sine(t, v_mid, v_range, period, constant_vel_time): + """Calculate current target velocity values already created sine wave data.""" + if t < period / 4: + vel = v_mid + v_range * np.sin(2 * np.pi * t / period) + elif t < period / 4 + constant_vel_time: + vel = v_mid + v_range + elif t < 3 * period / 4 + constant_vel_time: + vel = v_mid + v_range * np.sin(2 * np.pi * (t - constant_vel_time) / period) + elif t < 3 * period / 4 + 2 * constant_vel_time: + vel = v_mid - v_range + else: + vel = v_mid + v_range * np.sin(2 * np.pi * (t - 2 * constant_vel_time) / period) + + return vel + + +def get_periodic_count(counter, split_size): + return split_size - 0.5 - np.abs(counter % (2 * split_size - 1) - split_size + 0.5) + + +def compute_curvature_radius(trajectory_position_data, trajectory_yaw_data): + d_step = 5 + curvature_radius = [] + for i in range(len(trajectory_position_data)): + tmp_pos = trajectory_position_data[i] + tmp_yaw = trajectory_yaw_data[i] + tmp_computed_flag = False + for j in range(i, len(trajectory_position_data)): + distance = np.sqrt(((tmp_pos[:2] - trajectory_position_data[j, :2]) ** 2).sum()) + if distance >= d_step: + diff_yaw = tmp_yaw - trajectory_yaw_data[j] + if diff_yaw > np.pi: + diff_yaw -= 2 * np.pi + if diff_yaw < -np.pi: + diff_yaw += 2 * np.pi + curvature_radius.append(distance / (1e-12 + np.abs(diff_yaw))) + tmp_computed_flag = True + break + if tmp_computed_flag is False: + curvature_radius.append(1 * curvature_radius[-1]) + curvature_radius = np.array(curvature_radius) + return curvature_radius + + +def compute_curvature_radius_loop_trajectory(trajectory_position_data, trajectory_yaw_data): + data_length = len(trajectory_position_data) + augmented_trajectory_position_data = np.vstack( + [trajectory_position_data, trajectory_position_data[: data_length // 2]] + ) + augmented_trajectory_yaw_data = np.hstack( + [trajectory_yaw_data, trajectory_yaw_data[: data_length // 2]] + ) + return compute_curvature_radius( + augmented_trajectory_position_data, augmented_trajectory_yaw_data + )[:data_length] + + +class StraightLine: + """Straight line target velocity.""" + + def __init__(self, v_min=1.0, v_max=11.0, acc_max=1.2, constant_vel_time=5.0, split_size=5): + self.v_min = v_min + self.v_max = v_max + self.v_mid = 0.5 * (v_min + v_max) + self.period = 2 * np.pi * (v_max - self.v_mid) / acc_max + self.constant_vel_time = constant_vel_time + self.split_size = split_size + self.break_flag = False + + def get_current_velocity(self, t): + index = int(t / (self.period + 2 * self.constant_vel_time)) + t1 = t - (self.period + 2 * self.constant_vel_time) * index + if index < 2 * self.split_size: + adjust = 0.0 + if index >= self.split_size: + adjust = 0.5 + v_range = ( + (self.v_max - self.v_mid) + * (get_periodic_count(index, self.split_size) + 1 - adjust) + / self.split_size + ) + return get_vel_sine(t1, self.v_mid, v_range, self.period, self.constant_vel_time) + else: + if t1 > 2 * self.constant_vel_time: + self.break_flag = True + return self.v_mid + + +class FigureEight: + """Figure eight trajectory.""" + + def __init__( + self, + y_length: float, + x_length: float, + v_min=1.0, + v_max=11.0, + split_size=5, + acc_max=1.2, + constant_vel_time=5.0, + smoothing_trajectory_data_flag=False, + ): + if y_length >= x_length: + raise Exception("invalid argument: y_length must be less than x_length") + self.y_length = y_length + self.x_length = x_length + self.v_min = v_min + self.v_max = v_max + self.split_size = split_size + + self.v_mid = 0.5 * (v_min + v_max) + self.v_start = self.v_mid + + self.period = 2 * np.pi * (v_max - self.v_mid) / acc_max + self.constant_vel_time = constant_vel_time + + self.counter = 0 + self.previous_circle = "left_circle" + self.break_flag = False + self.accel_mode = 1 + self.smoothing_trajectory_data_flag = smoothing_trajectory_data_flag + + @property + def total_distance(self) -> float: + a = self.y_length + b = self.x_length + arc = a * pi + diagonal = 2 * np.sqrt((b - a) ** 2 + a**2) + return arc + diagonal + + def get_trajectory_points(self, step: float): + """Get the position and yaw angle in world coordinates of the figure eight. + + The return value is a 2-dimensional array of positions and a 1-dimensional array of yaw angles corresponding to `t`. + """ + a = self.y_length + b = self.x_length + + t_array = np.arange(start=0.0, stop=self.total_distance, step=step).astype("float") + x = t_array.copy() + y = t_array.copy() + yaw = t_array.copy() + curvature_radius = t_array.copy() + parts = [] + achievement_rates = [] + + # Boundary points between circular and linear trajectory + C = [-(b - a) / 2, -a / 2] + D = [(b - a) / 2, -a / 2] + + R = a / 2 # radius of the circle + OL = [-(b - a) / 2, 0] # center of the left circle + OR = [(b - a) / 2, 0] # center of the right circle + OB = np.sqrt((b - a) ** 2 + a**2) / 2 # half length of the linear trajectory + AD = 2 * OB + θB = arctan(a / (b - a)) # Angle that OB makes with respect to x-axis + BD = pi * a / 2 # the length of arc BD + AC = BD + CO = OB + + i_end = t_array.shape[0] + for i, t in enumerate(t_array): + if t > OB + BD + AD + AC + CO: + i_end = i + break + if 0 <= t and t <= OB: + x[i] = (b - a) * t / (2 * OB) + y[i] = a * t / (2 * OB) + yaw[i] = θB + curvature_radius[i] = 1e12 + parts.append("linear_positive") + achievement_rates.append(t / (2 * OB) + 0.5) + if OB <= t and t <= OB + BD: + t1 = t - OB + t1_rad = t1 / R + x[i] = OR[0] + R * cos(pi / 2 - t1_rad) + y[i] = OR[1] + R * sin(pi / 2 - t1_rad) + yaw[i] = -t1_rad + curvature_radius[i] = R + parts.append("right_circle") + achievement_rates.append(0.0) + if OB + BD <= t and t <= OB + BD + AD: + t2 = t - (OB + BD) + x[i] = D[0] - (b - a) * t2 / (2 * OB) + y[i] = D[1] + a * t2 / (2 * OB) + yaw[i] = pi - θB + curvature_radius[i] = 1e12 + parts.append("linear_negative") + achievement_rates.append(t2 / (2 * OB)) + if OB + BD + AD <= t and t <= OB + BD + AD + AC: + t3 = t - (OB + BD + AD) + t3_rad = t3 / R + x[i] = OL[0] + R * cos(pi / 2 + t3_rad) + y[i] = OL[1] + R * sin(pi / 2 + t3_rad) + yaw[i] = pi + t3_rad + curvature_radius[i] = R + parts.append("left_circle") + achievement_rates.append(0.0) + if OB + BD + AD + AC <= t and t <= OB + BD + AD + AC + CO: + t4 = t - (OB + BD + AD + AC) + x[i] = C[0] + (b - a) * t4 / (2 * OB) + y[i] = C[1] + a * t4 / (2 * OB) + yaw[i] = θB + curvature_radius[i] = 1e12 + parts.append("linear_positive") + achievement_rates.append(t4 / (2 * OB)) + + # drop rest + x = x[:i_end] + y = y[:i_end] + trajectory_position_data = np.array([x, y]).T + trajectory_yaw_data = yaw[:i_end] + curvature_radius = curvature_radius[:i_end] + parts = parts[:i_end] + achievement_rates = achievement_rates[:i_end] + + if self.smoothing_trajectory_data_flag: + window = 1000 + w = np.ones(window) / window + augmented_position_data = np.vstack( + [ + trajectory_position_data[-window:], + trajectory_position_data, + trajectory_position_data[:window], + ] + ) + trajectory_position_data[:, 0] = ( + 1 * np.convolve(augmented_position_data[:, 0], w, mode="same")[window:-window] + ) + trajectory_position_data[:, 1] = ( + 1 * np.convolve(augmented_position_data[:, 1], w, mode="same")[window:-window] + ) + augmented_yaw_data = np.hstack( + [ + trajectory_yaw_data[-window:], + trajectory_yaw_data, + trajectory_yaw_data[:window], + ] + ) + smoothed_trajectory_yaw_data = trajectory_yaw_data.copy() + for i in range(len(trajectory_yaw_data)): + tmp_yaw = trajectory_yaw_data[i] + tmp_data = ( + augmented_yaw_data[window + (i - window // 2) : window + (i + window // 2)] + - tmp_yaw + ) + for j in range(len(tmp_data)): + if tmp_data[j] > np.pi: + tmp_data[j] -= 2 * np.pi + if tmp_data[j] < -np.pi: + tmp_data[j] += 2 * np.pi + tmp_data = np.convolve(tmp_data, w, mode="same") + smoothed_trajectory_yaw_data[i] = ( + tmp_yaw + np.convolve(tmp_data, w, mode="same")[window // 2] + ) + if smoothed_trajectory_yaw_data[i] > np.pi: + smoothed_trajectory_yaw_data[i] -= 2 * np.pi + if smoothed_trajectory_yaw_data[i] < -np.pi: + smoothed_trajectory_yaw_data[i] += 2 * np.pi + + trajectory_yaw_data = smoothed_trajectory_yaw_data.copy() + + return ( + trajectory_position_data, + trajectory_yaw_data, + curvature_radius, + parts, + np.array(achievement_rates), + ) + + def get_current_velocity(self, t): + index = int(t / (self.period + 2 * self.constant_vel_time)) + t1 = t - (self.period + 2 * self.constant_vel_time) * index + if index < 2 * self.split_size: + adjust = 0.0 + if index >= self.split_size: + adjust = 0.5 + v_range = ( + (self.v_max - self.v_mid) + * (get_periodic_count(index, self.split_size) + 1 - adjust) + / self.split_size + ) + return get_vel_sine(t1, self.v_mid, v_range, self.period, self.constant_vel_time) + else: + self.break_flag = True + return self.v_mid + + +def get_pure_pursuit_info(x_current, trajectory_position_data, trajectory_yaw_data, previous_index): + """Calculate the target position and yaw angle required for pure pursuit.""" + search_range = ( + np.arange( + previous_index - trajectory_position_data.shape[0] // 4, + previous_index + trajectory_position_data.shape[0] // 4, + ) + % trajectory_position_data.shape[0] + ) + nearest_index = np.argmin( + ((trajectory_position_data[search_range] - x_current[:2].reshape(1, 2)) ** 2).sum(axis=1) + ) + return ( + trajectory_position_data[search_range[nearest_index]], + trajectory_yaw_data[search_range[nearest_index]], + search_range[nearest_index], + ) + + +def get_naive_pure_pursuit_info( + x_current, trajectory_position_data, trajectory_yaw_data, previous_index +): + """Calculate the target position and yaw angle required for naive pure pursuit.""" + search_range = ( + np.arange( + previous_index - trajectory_position_data.shape[0] // 4, + previous_index + trajectory_position_data.shape[0] // 4, + ) + % trajectory_position_data.shape[0] + ) + nearest_index = np.argmin( + ((trajectory_position_data[search_range] - x_current[:2].reshape(1, 2)) ** 2).sum(axis=1) + ) + lookahead_distance = ( + drive_functions.naive_pure_pursuit_lookahead_coef * x_current[2] + + drive_functions.naive_pure_pursuit_lookahead_intercept + ) + + aug_trajectory_position_data = np.vstack([trajectory_position_data, trajectory_position_data]) + i = 0 + while True: + tmp_distance = np.sqrt( + ( + (aug_trajectory_position_data[search_range[nearest_index] + i] - x_current[:2]) ** 2 + ).sum() + ) + if tmp_distance > lookahead_distance: + break + if (search_range[nearest_index] + i) == (len(aug_trajectory_position_data) - 1): + break + i += 1 + return ( + trajectory_position_data[search_range[nearest_index]], + trajectory_yaw_data[search_range[nearest_index]], + search_range[nearest_index], + aug_trajectory_position_data[search_range[nearest_index] + i], + ) + + +def restrict_target_vel(delta, v_m=2.0, v_M=15.0, steer_m=0.01, steer_M=0.3): + if np.abs(delta) < steer_m: + return v_M + elif np.abs(delta) < steer_M: + return (-(v_M - v_m) * delta + (v_M * steer_M - v_m * steer_m)) / (steer_M - steer_m) + else: + return v_m + + +def step_response( + t: float, + start_time: float, + interval: float, + max_input: float, + max_length: float, + min_length: float, +) -> float: + """Calculate the value of the step response.""" + if t < start_time: + return 0.0 + + step = int((t - start_time) // interval) + step_start_time = step * interval + start_time + + np.random.seed(seed=step + RANDOM_SEED_STEP_RESPONSE) + + if max_length > interval: + print(f"warning: max_length = {max_length} > interval = {interval}") + + length = np.random.uniform(min_length, min(max_length, interval)) + input_u = np.random.uniform(-max_input, max_input) + + if (t - step_start_time) >= length: + return 0.0 + + return input_u + + +class driving_log_updater: + """Class for updating logs when driving on the Python simulator.""" + + def __init__(self): + self.X_history = [] + self.U_history = [] + self.control_cmd_time_stamp_list = [] + self.control_cmd_steer_list = [] + self.control_cmd_acc_list = [] + self.kinematic_state_list = [] + self.acceleration_list = [] + self.steering_status_list = [] + self.control_cmd_orig_list = [] + self.operation_mode_list = [] + + def update(self, t_current, x_current, u_current): + """Update logs.""" + self.X_history.append(x_current) + self.U_history.append(u_current) + self.control_cmd_time_stamp_list.append(t_current) + self.control_cmd_steer_list.append(u_current[1]) + self.control_cmd_acc_list.append(u_current[0]) + if self.control_cmd_time_stamp_list[-1] - self.control_cmd_time_stamp_list[0] > 3.0: + self.control_cmd_time_stamp_list.pop(0) + self.control_cmd_steer_list.pop(0) + self.control_cmd_acc_list.pop(0) + t_sec = int(t_current) + t_n_sec = int(1e9 * (t_current - t_sec)) + kinematic_state = np.zeros(7) + acceleration = np.zeros(4) + steering_status = np.zeros(3) + control_cmd_orig = np.zeros(17) + operation_mode = np.zeros(3) + kinematic_state[0] = t_sec + kinematic_state[1] = t_n_sec + kinematic_state[2] = x_current[0] + kinematic_state[3] = x_current[1] + kinematic_state[4] = np.sin(0.5 * x_current[3]) + kinematic_state[5] = np.cos(0.5 * x_current[3]) + kinematic_state[6] = x_current[2] + self.kinematic_state_list.append(kinematic_state) + acceleration[0] = t_sec + acceleration[1] = t_n_sec + acceleration[3] = x_current[4] + self.acceleration_list.append(acceleration) + steering_status[0] = t_sec + steering_status[1] = t_n_sec + steering_status[2] = x_current[5] + self.steering_status_list.append(steering_status) + control_cmd_orig[0] = t_sec + control_cmd_orig[1] = t_n_sec + control_cmd_orig[8] = u_current[1] + control_cmd_orig[16] = u_current[0] + self.control_cmd_orig_list.append(control_cmd_orig) + operation_mode[0] = t_sec + operation_mode[1] = t_n_sec + operation_mode[2] = 2.0 + self.operation_mode_list.append(operation_mode) + + def save(self, save_dir): + """Save logs in csv format.""" + kinematic_states = np.zeros((len(self.kinematic_state_list), 48)) + kinematic_states[:, [0, 1, 4, 5, 9, 10, 47]] = np.array(self.kinematic_state_list) + np.savetxt(save_dir + "/kinematic_state.csv", kinematic_states, delimiter=",") + np.savetxt(save_dir + "/acceleration.csv", np.array(self.acceleration_list), delimiter=",") + np.savetxt( + save_dir + "/steering_status.csv", + np.array(self.steering_status_list), + delimiter=",", + ) + np.savetxt( + save_dir + "/control_cmd_orig.csv", + np.array(self.control_cmd_orig_list), + delimiter=",", + ) + np.savetxt( + save_dir + "/system_operation_mode_state.csv", + np.array(self.operation_mode_list), + delimiter=",", + ) + with open(save_dir + "/system_operation_mode_state.csv", "w") as f: + writer = csv.writer(f) + for i in range(len(self.operation_mode_list)): + operation_mode_plus_true = self.operation_mode_list[i].tolist() + operation_mode_plus_true.append("True") + writer.writerow(operation_mode_plus_true) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/density_estimation.ipynb b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/density_estimation.ipynb new file mode 100644 index 0000000000000..34e5fa94349f2 --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/density_estimation.ipynb @@ -0,0 +1,635 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# cSpell:ignore codemirror ipython nbconvert pygments nbformat kernelspec #" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from density_estimation import load_kinematic_states, KinematicStates\n", + "from assets import ControlType, ChangeParam\n", + "import json\n", + "\n", + "def load_kinematic_states_and_result(\n", + " load_dir: str, mem_diff=False, max_lateral_deviation: float = 5.0\n", + ") -> tuple[KinematicStates, float, float]:\n", + " \"\"\"Return the KinematicStates object and the lateral error of the simulation result.\n", + "\n", + " This read the given directory (the directory where the kinematic states are stored)\n", + " To read the lateral deviation, however, it goes to read the appropriate directory next to the given directory.\n", + "\n", + " Returns:\n", + " * KinematicStates: KinematicStates object\n", + " * float: the lateral error of the simulation result. this is not for trained data\n", + " * float: the lateral error of the simulation result. this is for trained data\n", + " \"\"\"\n", + " kinematic_states = load_kinematic_states(\n", + " control_type=None,\n", + " change_param=None,\n", + " index=None,\n", + " load_dir=load_dir,\n", + " )\n", + "\n", + " load_dir_for_result = load_dir.replace(ControlType.pp_eight.value, \"pp_aided\")\n", + " if mem_diff:\n", + " load_dir_for_result += \"_mem_diff\"\n", + " load_dir_for_trained_result = load_dir_for_result.replace(\"_aided_sim_\", \"_aided_sim_trained_\")\n", + "\n", + " with open(f\"{load_dir_for_result}/auto_test_performance_result.json\", \"r\") as f:\n", + " data = json.load(f)\n", + "\n", + " with open(f\"{load_dir_for_trained_result}/auto_test_performance_result.json\", \"r\") as f:\n", + " data_trained = json.load(f)\n", + "\n", + " total_abs_max_lateral_deviation = min(data.get(\"total_abs_max_lateral_deviation\"), max_lateral_deviation)\n", + " trained_total_abs_max_lateral_deviation = min(data_trained.get(\"total_abs_max_lateral_deviation\"), max_lateral_deviation)\n", + " return kinematic_states, total_abs_max_lateral_deviation, trained_total_abs_max_lateral_deviation\n", + "\n", + "\n", + "load_kinematic_states_and_result(\n", + " \"test_run_sim_20240607_163543/test_pure_pursuit_figure_eight_sim_steer_scaling_0th\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from typing import Callable\n", + "from density_estimation import Shape, calc_minimum_density_point, ScottCoef\n", + "from typing import Literal\n", + "\n", + "\n", + "def calc_scalar_indexes(\n", + " kinematic_states: KinematicStates,\n", + " fst: Literal[\"speed\", \"acc\", \"steer\"],\n", + " snd: Literal[\"speed\", \"acc\", \"steer\"],\n", + " fst_range: list[float],\n", + " snd_range: list[float],\n", + " bandwidths: list[float] | list[ScottCoef],\n", + " shape: Callable[..., bool] = Shape.trivial,\n", + ") -> np.ndarray:\n", + " \"\"\"Return an ndarray of scalar indexes calculated by the kernel density estimation.\n", + "\n", + " This takes as a parameter the method (the minimum value in a particular region) used to compute the scalar index of kernel density.\n", + " \"\"\"\n", + " array = np.array([])\n", + "\n", + " for bandwidth in bandwidths:\n", + " min_point, min_val = calc_minimum_density_point(\n", + " kinematic_states=kinematic_states,\n", + " fst=fst,\n", + " snd=snd,\n", + " fst_range=fst_range,\n", + " snd_range=snd_range,\n", + " shape=shape,\n", + " bandwidth=bandwidth,\n", + " )\n", + " array = np.append(array, min_val)\n", + "\n", + " return array\n", + "\n", + "\n", + "kinematic_states_steer_scaling_0th = load_kinematic_states(\n", + " ControlType.pp_eight, ChangeParam.steer_scaling, 0\n", + ")\n", + "\n", + "calc_scalar_indexes(\n", + " kinematic_states=kinematic_states_steer_scaling_0th,\n", + " fst=\"speed\",\n", + " snd=\"acc\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-1.5, 1.5],\n", + " bandwidths= [ScottCoef(i) for i in np.arange(0.5, 5.5, 0.5)],\n", + " shape=lambda x, y: Shape.ellipse(\n", + " Shape.ELLIPSE_CENTER, Shape.ELLIPSE_WIDTH, Shape.ELLIPSE_HEIGHT, x, y\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def correlation_between_scalar_indexes_and_lateral_errors(\n", + " load_dir_list: list[str],\n", + " fst: Literal[\"speed\", \"acc\", \"steer\"],\n", + " snd: Literal[\"speed\", \"acc\", \"steer\"],\n", + " fst_range: list[float],\n", + " snd_range: list[float],\n", + " bandwidths: list[float] | list[ScottCoef],\n", + " shape: Callable[..., bool] = Shape.trivial,\n", + ") -> np.ndarray:\n", + " accumulation = np.array([])\n", + " for load_dir in load_dir_list:\n", + " # The one that was additionally learned is named \"trained\"\n", + " kinematic_states, result, trained_result = load_kinematic_states_and_result(load_dir)\n", + " scalar_indexes = calc_scalar_indexes(\n", + " kinematic_states=kinematic_states,\n", + " fst=fst,\n", + " snd=snd,\n", + " fst_range=fst_range,\n", + " snd_range=snd_range,\n", + " bandwidths=bandwidths,\n", + " shape=shape,\n", + " )\n", + "\n", + " # cSpell:ignore corcoef #\n", + " # Add lateral errors to the end of the vector of scalar indexes for calculating the correlation coefficient with numpy.corcoef\n", + " scalar_indexes = np.append(arr=scalar_indexes, values=[result, trained_result])\n", + "\n", + " if accumulation.size == 0:\n", + " accumulation = accumulation.reshape(scalar_indexes.shape[0], -1)\n", + " accumulation = np.hstack((accumulation, scalar_indexes.reshape(-1,1)))\n", + "\n", + " return np.corrcoef(accumulation)[-1,:-2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def list_of_kde_and_error(\n", + " load_dir_list: list[str],\n", + " fst: Literal[\"speed\", \"acc\", \"steer\"],\n", + " snd: Literal[\"speed\", \"acc\", \"steer\"],\n", + " fst_range: list[float],\n", + " snd_range: list[float],\n", + " bandwidth: float | ScottCoef,\n", + " shape: Callable[..., bool] = Shape.trivial,\n", + ") -> np.ndarray:\n", + " accumulation = np.array([])\n", + " for load_dir in load_dir_list:\n", + " # The one that was additionally learned is named \"trained\"\n", + " kinematic_states, result, trained_result = load_kinematic_states_and_result(\n", + " load_dir\n", + " )\n", + " min_point, min_val = calc_minimum_density_point(\n", + " kinematic_states=kinematic_states,\n", + " fst=fst,\n", + " snd=snd,\n", + " fst_range=fst_range,\n", + " snd_range=snd_range,\n", + " shape=shape,\n", + " bandwidth=bandwidth,\n", + " )\n", + " accumulation = np.append(accumulation, [trained_result, min_val])\n", + " return accumulation.reshape(-1, 2)\n", + "\n", + "def plot_scatter_acc(bandwidth : float | ScottCoef) -> None:\n", + " data = list_of_kde_and_error (\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_3th\"\n", + " for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"acc\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-1.5, 1.5],\n", + " bandwidth=bandwidth,\n", + " shape=lambda x, y: Shape.ellipse(\n", + " Shape.ELLIPSE_CENTER, Shape.ELLIPSE_WIDTH, Shape.ELLIPSE_HEIGHT, x, y\n", + " ),\n", + " )\n", + " plt.scatter(data[:, 0], data[:, 1])\n", + "\n", + " plt.xlabel('Trained lateral error')\n", + " plt.ylabel('minimum value of KDE')\n", + "\n", + " plt.title('Kernel density and lateral error')\n", + "\n", + " plt.show()\n", + "\n", + "plot_scatter_acc(0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_scatter_steer(bandwidth : float | ScottCoef) -> None:\n", + " coef = 4.76/2.79\n", + " POINTS = np.array(\n", + " [\n", + " [1.0+0.3*5, coef * (0.15)],\n", + " [4.0, coef * (0.15)],\n", + " [11.0, 0.0],\n", + " [1.0+0.3*5, coef * -(0.15)],\n", + " [4, coef * -(0.15)],\n", + " ]\n", + " )\n", + " data = list_of_kde_and_error (\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_2th\"\n", + " for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"steer\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-0.3, 0.3],\n", + " bandwidth=bandwidth,\n", + " shape=lambda x, y: Shape.convex_hull(POINTS, x, y),\n", + " )\n", + " plt.scatter(data[:, 0], data[:, 1])\n", + "\n", + " plt.xlabel('Trained lateral error')\n", + " plt.ylabel('minimum value of KDE')\n", + "\n", + " plt.title('Kernel density and lateral error')\n", + "\n", + " plt.show()\n", + "\n", + "plot_scatter_steer(0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "correlation_between_scalar_indexes_and_lateral_errors(\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_3th\" for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"acc\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-1.5, 1.5],\n", + " bandwidths=np.arange(0.5, 5.5, 0.5),\n", + " shape=lambda x, y: Shape.ellipse(\n", + " Shape.ELLIPSE_CENTER, Shape.ELLIPSE_WIDTH, Shape.ELLIPSE_HEIGHT, x, y\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(correlation_between_scalar_indexes_and_lateral_errors(\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_3th\" for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"acc\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-1.5, 1.5],\n", + " bandwidths=np.arange(0.1, 1.1, 0.1),\n", + " shape=lambda x, y: Shape.ellipse(\n", + " Shape.ELLIPSE_CENTER, Shape.ELLIPSE_WIDTH, Shape.ELLIPSE_HEIGHT, x, y\n", + " ),\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(correlation_between_scalar_indexes_and_lateral_errors(\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_2th\" for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"acc\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-1.5, 1.5],\n", + " bandwidths=np.arange(0.1, 1.1, 0.1),\n", + " shape=lambda x, y: Shape.ellipse(\n", + " Shape.ELLIPSE_CENTER, Shape.ELLIPSE_WIDTH, Shape.ELLIPSE_HEIGHT, x, y\n", + " ),\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(correlation_between_scalar_indexes_and_lateral_errors(\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_3th\" for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"acc\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-1.5, 1.5],\n", + " bandwidths=[ScottCoef(i) for i in np.arange(0.5, 5.5, 0.5)],\n", + " shape=lambda x, y: Shape.ellipse(\n", + " Shape.ELLIPSE_CENTER, Shape.ELLIPSE_WIDTH, Shape.ELLIPSE_HEIGHT, x, y\n", + " ),\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.arange(1.5, 1.8, 0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "coef = 4.76/2.79 #get_estimated_wheel_base_coef(\"test_param_search_0_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_2th\")\n", + "for i in range(1):\n", + " POINTS = np.array(\n", + " [\n", + " [1.0+0.3*5, coef * (0.15-0.01*i)],\n", + " [4.0, coef * (0.15-0.01*i)],\n", + " [11.0, 0.0],\n", + " [1.0+0.3*5, coef * -(0.15-0.01*i)],\n", + " [4, coef * -(0.15-0.01*i)],\n", + " ]\n", + " )\n", + "\n", + " corrcoef_steer = correlation_between_scalar_indexes_and_lateral_errors(\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_3th\" for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"steer\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-0.3, 0.3],\n", + " bandwidths=np.arange(0.1, 1.1, 0.1),\n", + " shape=lambda x, y: Shape.convex_hull(POINTS, x, y),\n", + " )\n", + " print(i,corrcoef_steer)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "coef = 4.76/2.79 #get_estimated_wheel_base_coef(\"test_param_search_0_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_2th\")\n", + "for i in range(1):\n", + " POINTS = np.array(\n", + " [\n", + " [1.0+0.3*5, coef * (0.15-0.01*i)],\n", + " [4.0, coef * (0.15-0.01*i)],\n", + " [11.0, 0.0],\n", + " [1.0+0.3*5, coef * -(0.15-0.01*i)],\n", + " [4, coef * -(0.15-0.01*i)],\n", + " ]\n", + " )\n", + "\n", + " corrcoef_steer = correlation_between_scalar_indexes_and_lateral_errors(\n", + " load_dir_list=[\n", + " f\"test_param_search_{i}_test_vehicle/test_pure_pursuit_figure_eight_sim_test_vehicle_2th\" for i in range(5, 35)\n", + " ],\n", + " fst=\"speed\",\n", + " snd=\"steer\",\n", + " fst_range=[0.0, 12.0],\n", + " snd_range=[-0.3, 0.3],\n", + " bandwidths=np.arange(0.1, 1.1, 0.1),\n", + " shape=lambda x, y: Shape.convex_hull(POINTS, x, y),\n", + " )\n", + " print(i,corrcoef_steer)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from density_estimation import visualize_speed_acc, visualize_speed_steer, ScottCoef\n", + "\n", + "# cSpell:ignore nrows ncols #\n", + "fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(18, 12), tight_layout=True)\n", + "\n", + "ax1 : plt.Axes = axes[0]\n", + "ax2 : plt.Axes = axes[1]\n", + "\n", + "fig, ax1 = visualize_speed_acc(fig=fig, ax=ax1, kinematic_states=kinematic_states_steer_scaling_0th, bandwidth=ScottCoef(0.6))\n", + "ax1.plot()\n", + "\n", + "fig, ax2 = visualize_speed_steer(fig=fig, ax=ax2, kinematic_states=kinematic_states_steer_scaling_0th, bandwidth=ScottCoef(1.3))\n", + "ax2.plot()\n", + "\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from density_estimation import KinematicStates\n", + "\n", + "kinematic_states_steer_scaling_0th.plot(\"speed\", \"acc\", \"steer\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from density_estimation import Shape\n", + "\n", + "fig = kinematic_states_steer_scaling_0th.plot(\"speed\", \"acc\")\n", + "print(type(fig))\n", + "\n", + "ellipse_center = [6, 0]\n", + "ellipse_width = 6\n", + "ellipse_height = 2\n", + "\n", + "# cSpell:ignore yref showarrow arrowcolor #\n", + "fig.add_shape(\n", + " type=\"circle\",\n", + " xref=\"x\", yref=\"y\",\n", + " x0=ellipse_center[0] - ellipse_width / 2,\n", + " y0=ellipse_center[1] - ellipse_height / 2,\n", + " x1=ellipse_center[0] + ellipse_width / 2,\n", + " y1=ellipse_center[1] + ellipse_height / 2,\n", + " line=dict(color=\"RoyalBlue\"),\n", + " fillcolor=\"LightSkyBlue\",\n", + " opacity=0.5,\n", + " layer=\"below\"\n", + ")\n", + "\n", + "min_element, min_val = calc_minimum_density_point(\n", + " kinematic_states=kinematic_states_steer_scaling_0th,\n", + " bandwidth=0.50,\n", + " fst=\"speed\",\n", + " snd=\"acc\",\n", + " fst_range=[4, 8],\n", + " snd_range=[-1.0, 1.0],\n", + " shape=lambda x, y : Shape.ellipse(ellipse_center, ellipse_width, ellipse_height, x, y),\n", + ")\n", + "\n", + "fig.add_annotation(\n", + " x=min_element[0],\n", + " y=min_element[1],\n", + " text=f\"min val: {round(min_val, 4)} at {min_element}\",\n", + " showarrow=True,\n", + " arrowhead=1,\n", + " font=dict(\n", + " family=\"Arial, sans-serif\",\n", + " size=12,\n", + " color=\"blue\"\n", + " ),\n", + " align=\"center\",\n", + " arrowcolor=\"blue\",\n", + ")\n", + "\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kinematic_states_steer_scaling_0th.plot(\"acc\", \"steer\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from density_estimation import plot_kernel_density\n", + "\n", + "kinematic_states_steer_scaling_0th.plot(\"speed\", \"acc\").show()\n", + "plot_kernel_density(kinematic_states_steer_scaling_0th, \"speed\", \"acc\", [2, 10], [-2, 2])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calc_minimum_density_point(\n", + " kinematic_states=kinematic_states_steer_scaling_0th,\n", + " bandwidth=0.01,\n", + " fst=\"speed\",\n", + " snd=\"steer\",\n", + " fst_range=[2, 10],\n", + " snd_range=[-1.0, 1.0],\n", + " shape=lambda x, y : Shape.triangle([4, -0.2], [4, 0.2], [10, 0], x, y),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kinematic_states_steer_scaling_0th.plot(\"speed\", \"steer\").show()\n", + "plot_kernel_density(\n", + " kinematic_states=kinematic_states_steer_scaling_0th,\n", + " bandwidth=0.15,\n", + " fst=\"speed\",\n", + " snd=\"steer\",\n", + " fst_range=[2, 10],\n", + " snd_range=[-0.4, 0.2],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "kinematic_states_vehicle = load_kinematic_states(\n", + " ControlType.pp_eight, ChangeParam.vehicle_type, 0\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kinematic_states_vehicle.plot(\"speed\", \"acc\", \"steer\").show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kinematic_states_vehicle.plot(\"speed\", \"steer\").show()\n", + "plot_kernel_density(\n", + " kinematic_states=kinematic_states_vehicle,\n", + " fst=\"speed\",\n", + " snd=\"steer\",\n", + " fst_range=[2, 10],\n", + " snd_range=[-0.3, 0.4],\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/density_estimation.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/density_estimation.py new file mode 100644 index 0000000000000..0e5f58f352f5d --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/density_estimation.py @@ -0,0 +1,468 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Callable +from typing import Literal + +from assets import ChangeParam # type: ignore +from assets import ControlType +from assets import test_dir_name +from matplotlib.patches import Ellipse # type: ignore +import matplotlib.pyplot as plt # type: ignore +import numpy as np +import plotly.express as px # type: ignore +import plotly.graph_objs as go # type: ignore +from scipy.spatial import ConvexHull # type: ignore +from scipy.spatial import Delaunay +from sklearn.neighbors import KernelDensity # type: ignore +from sklearn.preprocessing import StandardScaler # type: ignore + + +class KinematicStates: + """The class for kinematic states, which includes speed, acceleration, and steering angle.""" + + def __init__(self, speed: np.ndarray, acc: np.ndarray, steer: np.ndarray): + self.speed = speed + self.acc = acc + self.steer = steer + + def to_ndarray(self, field_list: list[str] = ["speed", "acc", "steer"]) -> np.ndarray: + return np.stack( + arrays=[getattr(self, field) for field in field_list], + axis=1, + ) + + def plot( + self, + x_axis: Literal["speed", "acc", "steer"], + y_axis: Literal["speed", "acc", "steer"], + z_axis: Literal["speed", "acc", "steer"] | None = None, + ) -> go.Figure: + """Plot interactive scatter image of kinematic states in 2D or 3D.""" + if z_axis is None: + fig = px.scatter(x=getattr(self, x_axis), y=getattr(self, y_axis)) + fig.update_layout(xaxis_title=x_axis, yaxis_title=y_axis) + else: + fig = px.scatter_3d( + x=getattr(self, x_axis), + y=getattr(self, y_axis), + z=getattr(self, z_axis), + ) + fig.update_layout( + scene={"xaxis_title": x_axis, "yaxis_title": y_axis, "zaxis_title": z_axis} + ) + fig.update_traces(marker={"size": 1}) + return fig + + +def load_kinematic_states( + control_type: ControlType | None = None, + change_param: ChangeParam | None = None, + index: int | None = None, + load_dir: str | None = None, + verbose: bool = False, +) -> KinematicStates: + """Load kinematic states from the specified directory.""" + if load_dir is None: + load_dir = test_dir_name( + control_type=control_type, + change_param=change_param, + index=index, + ) + if verbose: + print(f"loaded directory: {load_dir}") + + # cSpell:ignore usecols + observed_speed_array = np.loadtxt( + fname=load_dir + "/kinematic_state.csv", delimiter=",", usecols=47 + ) + observed_acc_array = np.loadtxt( + fname=load_dir + "/acceleration.csv", + delimiter=",", + usecols=3, + ) + observed_steer_array = np.loadtxt( + fname=load_dir + "/steering_status.csv", + delimiter=",", + usecols=2, + ) + kinematic_states = KinematicStates( + speed=observed_speed_array, acc=observed_acc_array, steer=observed_steer_array + ) + return kinematic_states + + +class Shape: + """The class for shape functions, just a namespace.""" + + # config for ellipse + ELLIPSE_CENTER = [6.0, 0.0] + + ELLIPSE_WIDTH = 10.0 + + ELLIPSE_HEIGHT = 2.0 + + @staticmethod + def trivial(_x: float, _y: float) -> bool: + """Trivial shape function.""" + return True + + @staticmethod + def ellipse(center: list[float], width: float, hight: float, x: float, y: float) -> bool: + """Represent the interior of an ellipse. + + Args: + center: the coordinates of the center of the ellipse + width: the length of the ellipse along the x-axis + height: the length of the ellipse along the y-axis + """ + return (x - center[0]) ** 2 / (width / 2) ** 2 + (y - center[1]) ** 2 / ( + hight / 2 + ) ** 2 <= 1 + + @staticmethod + def triangle(A: list[float], B: list[float], C: list[float], x: float, y: float) -> bool: + """Represent the interior of a triangle. + + Determine if the given point is inside the triangle formed by connecting the given three points. + """ + + def sign(p, q, r): + """Check relation of `p`, `q`, `r`.""" + return (p[0] - r[0]) * (q[1] - r[1]) - (q[0] - r[0]) * (p[1] - r[1]) + + P = [x, y] + b1 = sign(P, A, B) < 0 + b2 = sign(P, B, C) < 0 + b3 = sign(P, C, A) < 0 + + # P is inside triangle ABC if all sides are on the same side + return b1 == b2 == b3 + + @staticmethod + def convex_hull(points: np.ndarray, x: float, y: float) -> bool: + """Determine if a point is within the convex hull. + + Parameters: + points (ndarray): An array of points forming the convex hull (Nx2). + x (float): The x-coordinate of the point to be checked. + y (float): The y-coordinate of the point to be checked. + + Returns: + bool: True if the point is within the convex hull, False otherwise. + """ + hull = ConvexHull(points) + delaunay = Delaunay(points[hull.vertices]) + return delaunay.find_simplex([x, y]) >= 0 + + +def get_search_points( + n_points: int, + x_range: list[float], + y_range: list[float], + z_range: list[float] = [], +): + """Help for density estimation.""" + x = np.linspace(x_range[0], x_range[1], num=n_points) + y = np.linspace(y_range[0], y_range[1], num=n_points) + if z_range != []: + z = np.linspace(z_range[0], z_range[1], num=n_points) + return np.array(np.meshgrid(x, y, z)).T.reshape(-1, 3) + return np.array(np.meshgrid(x, y)).T.reshape(-1, 2) + + +class ScottCoef: + """Multiple coefficient for bandwidth of Scott's algorithm.""" + + def __init__(self, val: float): + self.val = val + + +# cSpell:ignore silverman +def kde_score_func( + kinematic_states: KinematicStates, + fst: Literal["speed", "acc", "steer"], + snd: Literal["speed", "acc", "steer"], + bandwidth: float | Literal["scott", "silverman"] | ScottCoef = "scott", + verbose: bool = False, +) -> Callable[..., float]: + """Return the function which is a variation of `KernelDensity.score_samples` including step of standardization.""" + # standardize the kinematic states + scaler = StandardScaler() + scaler.fit(kinematic_states.to_ndarray([fst, snd])) + standardized_2d_kinematic_states = scaler.transform(kinematic_states.to_ndarray([fst, snd])) + + if not isinstance(bandwidth, ScottCoef): + # perform density estimation with standardization + if verbose: + print(f"info: bandwidth is set to {bandwidth}") + standardized_kde = KernelDensity(kernel="gaussian", bandwidth=bandwidth).fit( + standardized_2d_kinematic_states + ) + else: + scott_kde = KernelDensity(kernel="gaussian", bandwidth="scott").fit( + standardized_2d_kinematic_states + ) + scott_bandwidth = scott_kde.bandwidth_ + if verbose: + print(f"info: bandwidth is set to {scott_bandwidth * bandwidth.val}") + standardized_kde = KernelDensity( + kernel="gaussian", bandwidth=scott_bandwidth * bandwidth.val + ).fit(standardized_2d_kinematic_states) + + return lambda arr: standardized_kde.score_samples(scaler.transform(arr)) + + +def plot_kernel_density( + kinematic_states: KinematicStates, + fst: Literal["speed", "acc", "steer"], + snd: Literal["speed", "acc", "steer"], + fst_range: list[float], + snd_range: list[float], + point_number: int = 30, + bandwidth: float | Literal["scott", "silverman"] | ScottCoef = "scott", +) -> None: + kde_score = kde_score_func( + kinematic_states=kinematic_states, + fst=fst, + snd=snd, + bandwidth=bandwidth, + ) + grids = get_search_points(point_number, fst_range, snd_range) + kernel_densities = kde_score(grids) + Z = np.exp(kernel_densities).reshape(point_number, point_number).T + + x_range = np.linspace(fst_range[0], fst_range[1], point_number) + y_range = np.linspace(snd_range[0], snd_range[1], point_number) + fig = go.Figure(data=[go.Surface(z=Z, x=x_range, y=y_range)]) + + # cSpell:ignore zaxis + fig.update_layout( + title="3D Surface Plot of Kernel Density", + scene={ + "xaxis": {"title": fst}, + "yaxis": {"title": snd}, + "zaxis": {"title": "kernel density"}, + }, + ) + fig.show() + + +def calc_minimum_density_point( + kinematic_states: KinematicStates, + fst: Literal["speed", "acc", "steer"], + snd: Literal["speed", "acc", "steer"], + fst_range: list[float], + snd_range: list[float], + shape: Callable[..., bool] = Shape.trivial, + point_number: int = 30, + bandwidth: float | Literal["scott", "silverman"] | ScottCoef = "scott", +) -> tuple[np.ndarray, float]: + kde_score = kde_score_func( + kinematic_states=kinematic_states, + fst=fst, + snd=snd, + bandwidth=bandwidth, + ) + grids = get_search_points(point_number, fst_range, snd_range) + filtered_grids = np.array([point for point in grids if shape(point[0], point[1])]) + kernel_densities = kde_score(filtered_grids) + + min_value: float = np.exp(kernel_densities).min() + min_index = kernel_densities.argmin() # type: ignore + min_element = filtered_grids[min_index] + return min_element.reshape(1, -1)[0], min_value + + +def kde_data( + kinematic_states: KinematicStates, + fst: Literal["speed", "acc", "steer"], + snd: Literal["speed", "acc", "steer"], + fst_range: list[float], + snd_range: list[float], + n_points: int = 100, + bandwidth: float | Literal["scott", "silverman"] | ScottCoef = "scott", +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + kde_score = kde_score_func( + kinematic_states=kinematic_states, + fst=fst, + snd=snd, + bandwidth=bandwidth, + ) + + x = np.linspace(fst_range[0], fst_range[1], n_points) + y = np.linspace(snd_range[0], snd_range[1], n_points) + X, Y = np.meshgrid(x, y) + + grids = np.column_stack((X.flatten(), Y.flatten())).reshape((n_points**2, 2)) + Z = np.exp(kde_score(grids)).reshape(n_points, n_points) + return X, Y, Z + + +def visualize_speed_acc( + fig: plt.Figure, + ax: plt.Axes, + kinematic_states: KinematicStates, + bandwidth: float | Literal["scott", "silverman"] | ScottCoef = "scott", +) -> tuple[plt.Figure, plt.Axes]: + """Visualizes the speed and acceleration of kinematic states using kernel density estimation. + + This function plots a heatmap of the kernel density estimation of speed and acceleration + values from the given kinematic states. It also overlays an ellipse and marks the minimum + density point within the elliptical region. + + Parameters: + fig (plt.Figure): The figure object to be used for plotting. + ax (plt.Axes): The axes object to be used for plotting. + kinematic_states (KinematicStates): The kinematic states containing speed and acceleration data. + + Returns: + tuple[plt.Figure, plt.Axes]: The modified figure and axes objects. + """ + # config for kernel density estimation + fst: Literal["speed", "acc", "steer"] = "speed" + snd: Literal["speed", "acc", "steer"] = "acc" + fst_range = [0.0, 12.0] + snd_range = [-1.5, 1.5] + + ellipse: Ellipse = Ellipse( + xy=Shape.ELLIPSE_CENTER, + width=Shape.ELLIPSE_WIDTH, + height=Shape.ELLIPSE_HEIGHT, + angle=0, + edgecolor="orange", + fc="None", + lw=2, + ) + + # kernel density estimation + X, Y, Z = kde_data( + kinematic_states=kinematic_states, + fst=fst, + snd=snd, + fst_range=fst_range, + snd_range=snd_range, + n_points=100, + bandwidth=bandwidth, + ) + + # plot heatmap + # cSpell:ignore pcolormesh viridis + mesh_acc = ax.pcolormesh(X, Y, Z, cmap="viridis", shading="auto") + fig.colorbar(mesh_acc, ax=ax) + + # plot ellipse + ax.add_patch(ellipse) + + # Find the minimum value of kernel density in the elliptic region + min_element, min_val = calc_minimum_density_point( + kinematic_states=kinematic_states, + fst=fst, + snd=snd, + fst_range=fst_range, + snd_range=snd_range, + shape=lambda x, y: Shape.ellipse( + Shape.ELLIPSE_CENTER, Shape.ELLIPSE_WIDTH, Shape.ELLIPSE_HEIGHT, x, y + ), + bandwidth=bandwidth, + ) + rounded_min_val = round(min_val, 4) + rounded_min_element = [round(min_element[0], 4), round(min_element[1], 4)] + + # plot the minimum point as a white point + ax.plot(min_element[0], min_element[1], marker="o", color="white", markersize=2) + + ax.set_xlabel(fst, fontsize=12) + ax.set_ylabel(snd, fontsize=12) + ax.set_title(f"kernel density: min_density={rounded_min_val} at {rounded_min_element}") + + return fig, ax + + +def visualize_speed_steer( + fig: plt.Figure, + ax: plt.Axes, + kinematic_states: KinematicStates, + bandwidth: float | Literal["scott", "silverman"] | ScottCoef = "scott", +) -> tuple[plt.Figure, plt.Axes]: + """Visualizes the speed and steering angle of kinematic states using kernel density estimation. + + This function plots a heatmap of the kernel density estimation of speed and steering angle + values from the given kinematic states. It also overlays the convex hull and marks the minimum + density point within the convex hull. + + Parameters: + fig (plt.Figure): The figure object to be used for plotting. + ax (plt.Axes): The axes object to be used for plotting. + kinematic_states (KinematicStates): The kinematic states containing speed and steering angle data. + + Returns: + tuple[plt.Figure, plt.Axes]: The modified figure and axes objects. + """ + # vertexes of convex hull + POINTS = np.array( + [ + [1.0, 0.15], + [4.0, 0.15], + [11.0, 0.0], + [1.0, -0.15], + [4, -0.15], + ] + ) + + fst: Literal["speed", "acc", "steer"] = "speed" + snd: Literal["speed", "acc", "steer"] = "steer" + fst_range = [0.0, 12.0] + snd_range = [-0.3, 0.3] + + # calculate convex hull + hull = ConvexHull(POINTS) + + X_STEER, Y_STEER, Z_STEER = kde_data( + kinematic_states=kinematic_states, + fst=fst, + snd=snd, + fst_range=fst_range, + snd_range=snd_range, + n_points=200, + bandwidth=bandwidth, + ) + + # plot heatmap + mesh_steer = ax.pcolormesh(X_STEER, Y_STEER, Z_STEER, cmap="viridis", shading="auto") + fig.colorbar(mesh_steer, ax=ax) + + # plot edges of the convex hull + for simplex in hull.simplices: + ax.plot(POINTS[simplex, 0], POINTS[simplex, 1], color="orange") + + # calculate the minimum value of kernel density in the convex hull + min_element, min_val = calc_minimum_density_point( + kinematic_states=kinematic_states, + fst=fst, + snd=snd, + fst_range=fst_range, + snd_range=snd_range, + shape=lambda x, y: Shape.convex_hull(POINTS, x, y), + bandwidth=bandwidth, + ) + rounded_min_element = [round(min_element[0], 4), round(min_element[1], 4)] + + # plot the minimum point as a white point + ax.plot(min_element[0], min_element[1], marker="o", color="white", markersize=2) + + ax.set_xlabel(fst, fontsize=12) + ax.set_ylabel(snd, fontsize=12) + ax.set_title(f"kernel density: min_density={min_val: .4f} at {rounded_min_element}") + return fig, ax diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/get_estimated_wheel_base.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/get_estimated_wheel_base.py new file mode 100644 index 0000000000000..752740787d8ab --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/get_estimated_wheel_base.py @@ -0,0 +1,23 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from autoware_smart_mpc_trajectory_follower.scripts import drive_functions +import numpy as np + + +def get_estimated_wheel_base_coef(dir_name: str) -> float: + A = np.load(dir_name + "/polynomial_reg_info.npz")["A"] + estimated_wheel_base = 1 / (1 / drive_functions.L + A[3, 11]) + print("estimated wheel base:", estimated_wheel_base) + return estimated_wheel_base / drive_functions.L diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/plot_auto_test_result.ipynb b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/plot_auto_test_result.ipynb index dd4dc9ae25cb2..b876a635ef94a 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/plot_auto_test_result.ipynb +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/plot_auto_test_result.ipynb @@ -2,16 +2,18 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "e78db57e-3218-4515-9ae5-4458ea071a1c", "metadata": {}, "outputs": [], "source": [ - "# cspell: ignore kernelspec ipykernel codemirror ipython nbconvert pygments nbformat \n", + "# cspell: ignore kernelspec ipykernel codemirror ipython nbconvert pygments nbformat #\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", - "import pandas as pd" + "import pandas as pd\n", + "import os\n", + "import json" ] }, { @@ -21,6 +23,7 @@ "metadata": {}, "outputs": [], "source": [ + "from autoware_smart_mpc_trajectory_follower.scripts import drive_functions\n", "import python_simulator" ] }, @@ -33,31 +36,28 @@ "source": [ "# header of auto_test_result_*.csv\n", "header = [\n", - " \"param_name\", # 0\n", - " \"param_val\", # 1\n", - " \"max_abs_lateral_error\", # 2\n", - " \"max_abs_vel_error\", # 3\n", - " # \"max_abs_yaw_error\", # 4\n", - " # \"max_abs_acc_error\", # 5\n", - " # \"max_abs_steer_error\" # 6\n", + " \"max_abs_lateral_error\", \n", + " \"straight_line_abs_max_lateral_error\",\n", + " \"max_abs_vel_error\", \n", "]\n", "\n", "\n", "plot_param_list = [\n", " # [label, header_index, unit_for_plot, nominal_value]\n", - " [\"steer_bias\", 2, \"[deg]\", 0.0] ,\n", - " [\"steer_rate_lim\", 2, \"[rad/s]\", python_simulator.steer_rate_lim],\n", - " [\"vel_rate_lim\", 3, \"[m/ss]\", python_simulator.vel_rate_lim],\n", - " [\"steer_dead_band\", 2, \"[rad]\", python_simulator.steer_dead_band],\n", - " [\"wheel_base\",2, \"[m]\", python_simulator.L],\n", + " [\"steer_bias\", 0, \"[deg]\", 0.0] ,\n", + " #[\"steer_rate_lim\", 0, \"[rad/s]\", python_simulator.steer_rate_lim],\n", + " #[\"vel_rate_lim\", 2, \"[m/ss]\", python_simulator.vel_rate_lim],\n", + " [\"steer_dead_band\", 0, \"[rad]\", python_simulator.steer_dead_band],\n", + " [\"wheel_base\",0, \"[m]\", drive_functions.L],\n", " # [\"adaptive_gear_ratio_coef\", 2,\"[-]\", None],\n", - " [\"acc_time_delay\",3, \"[s]\", python_simulator.acc_time_delay],\n", - " [\"steer_time_delay\",2, \"[s]\", python_simulator.steer_time_delay],\n", - " [\"acc_time_constant\",3, \"[s]\", python_simulator.acc_time_constant],\n", - " [\"steer_time_constant\",2, \"[s]\", python_simulator.steer_time_constant],\n", - " [\"accel_map_scale\",3, \"[-]\", None],\n", - " [\"acc_scaling\",3, \"[-]\", 1],\n", - " [\"steer_scaling\",2, \"[-]\", 1],\n", + " [\"acc_time_delay\",2, \"[s]\", drive_functions.acc_time_delay],\n", + " [\"steer_time_delay\",0, \"[s]\", drive_functions.steer_time_delay],\n", + " [\"acc_time_constant\",2, \"[s]\", drive_functions.acc_time_constant],\n", + " [\"steer_time_constant\",0, \"[s]\", drive_functions.steer_time_constant],\n", + " [\"accel_map_scale\",2, \"[-]\", None],\n", + " [\"acc_scaling\",2, \"[-]\", 1],\n", + " [\"steer_scaling\",0, \"[-]\", 1],\n", + " [\"vehicle_type\", 0, \"[-]\",0],\n", "]\n", "print(plot_param_list)\n", "print(\"len(plot_param_list)\",len(plot_param_list))\n" @@ -72,85 +72,78 @@ }, "outputs": [], "source": [ + "mem_diff = True\n", + "root_dir = \"auto_test\"\n", + "\n", + "def get_dir_name(param_name, index, intermediate):\n", + " dir_name = root_dir + \"/test_pp_aided_sim_\"\n", + " if not intermediate:\n", + " dir_name += \"trained_\"\n", + " \n", + " dir_name += param_name + \"_\" + str(index) + \"th\"\n", + " if mem_diff:\n", + " dir_name += \"_mem_diff\"\n", + " return dir_name\n", "fig = plt.figure(figsize=(30, 18), tight_layout=True)\n", "\n", "ax_list = []\n", "for i in range(len(plot_param_list)):\n", - " ax_list.append(plt.subplot(4, 3, i+1))\n", + " ax_list.append(plt.subplot(4, 4, i+1))\n", "\n", - "# ff_data_result_csv = \"auto_test_result_final_model_control_trained_with_data_collected_by_ff_control.csv\"\n", - "nominal_data_result_csv = \"auto_test_result_final_model_control_trained_with_data_collected_by_nominal_control.csv\"\n", "\n", "df_info_list = [ \n", - " {\"file_name\": \"nominal/auto_test_result_nominal_model_control.csv\", \n", - " \"label_name\": \"nominal\"},\n", - "\n", - " # {\"file_name\": \"poly(selected) (data using FF)/\"+ff_data_result_csv, \n", - " # \"label_name\" : \"poly(selected) (data using FF)\"}, \n", - " # # {\"file_name\": \"poly(full) (data using FF)/\"+ff_data_result_csv, \n", - " # # \"label_name\" : \"poly(full) (data using FF)\"}, \n", - " # {\"file_name\": \"poly(selected)+NN (data using FF)/\"+ff_data_result_csv, \n", - " # \"label_name\" : \"poly(selected)+NN (data using FF)\"}, \n", - " # # {\"file_name\": \"poly(full)+NN (data using FF)/\"ff_data_result_csv, \n", - " # # \"label_name\" : \"poly(full)+NN (data using FF)\"},\n", - " # {\"file_name\": \"NN (data using FF)/\"+ff_data_result_csv, \n", - " # \"label_name\" : \"NN (data using FF)\"},\n", - " \n", - " {\"file_name\": \"poly(selected) (nominal control data)/\"+nominal_data_result_csv, \n", - " \"label_name\" : \"poly(selected) (nominal control data)\"}, \n", - " # {\"file_name\": \"poly(full) (nominal control data)/\"+nominal_data_result_csv, \n", - " # \"label_name\" : \"poly(full) (nominal control data)\"},\n", - " {\"file_name\": \"poly(selected)+NN (nominal control data)/\"+nominal_data_result_csv, \n", - " \"label_name\" : \"poly(selected)+NN (nominal control data)\"}, \n", - " # {\"file_name\": \"poly(full)+NN (nominal control data)/\"+nominal_data_result_csv, \n", - " # \"label_name\" : \"poly(full)+NN (nominal control data)\"},\n", - " {\"file_name\": \"NN (nominal control data)/\"+nominal_data_result_csv, \n", - " \"label_name\" : \"NN (nominal control data)\"}, \n", + " { \n", + " \"intermediate\" : False, \n", + " \"label_name\" : \"poly(selected)+NN (final model)\"},\n", + " { \n", + " \"intermediate\" : True, \n", + " \"label_name\" : \"poly(selected)+NN (intermediate model)\"},\n", "]\n", "\n", + "plot_intermediate = []\n", + "\n", "cmap = plt.get_cmap(\"tab10\") \n", "for l in range(len(df_info_list)):\n", - " df = pd.read_csv(df_info_list[l][\"file_name\"], header=None,sep=\",\")\n", + " #df = pd.read_csv(df_info_list[l][\"file_name\"], header=None,sep=\",\")\n", " for i in range(len(plot_param_list)):\n", - " index_bool = df[0].values==plot_param_list[i][0]\n", - " if any(index_bool):\n", - " x = df[1].values[index_bool]\n", - " \n", - " if plot_param_list[i][0]==\"adaptive_gear_ratio_coef\":\n", - " x = np.array(range(len(x)))\n", - " x = np.array([float(x[j]) for j in range(len(x))])\n", + " index = 0\n", + " x = []\n", + " y = []\n", + " while os.path.exists(get_dir_name(plot_param_list[i][0],index,df_info_list[l][\"intermediate\"])):\n", + " with open(get_dir_name(plot_param_list[i][0],index,df_info_list[l][\"intermediate\"])+\"/auto_test_performance_result.json\",\"r\") as f:\n", + " data=json.load(f)\n", + " x.append(list(list(data.values())[7].values())[0])\n", + " y.append(list(data.values())[plot_param_list[i][1]])\n", + " index += 1\n", + " if len(x) > 0:\n", + " x = np.array(x)\n", + " y = np.array(y)\n", " if plot_param_list[i][0]==\"steer_bias\":\n", " x *= 180.0/np.pi\n", - " \n", - " \n", - " y = df[plot_param_list[i][1]].values[index_bool]\n", + " if i==0:\n", " ax_list[i].plot(x,y,\"o-\",label=df_info_list[l][\"label_name\"],color=cmap(l))\n", " else:\n", - " pass\n", - " if i==0:\n", - " ax_list[i].plot([0],[0],\"o-\",label=df_info_list[l][\"label_name\"],color=cmap(l))\n", - "\n", + " ax_list[i].plot(x,y,\"o-\",label=df_info_list[l][\"label_name\"],color=cmap(l))\n", "\n", - "for i in range(len(plot_param_list)): \n", - " #ax_list[i].set_title(header[plot_param_list[i][1]]+\" / \"+plot_param_list[i][0], fontsize=16)\n", + "for i in range(len(plot_param_list)):\n", " ax_list[i].set_xlabel(plot_param_list[i][0] + \" \" + plot_param_list[i][2],fontsize=20)\n", " ax_list[i].set_ylabel(header[plot_param_list[i][1]],fontsize=20)\n", " ax_list[i].grid()\n", "\n", " if plot_param_list[i][3] is not None:\n", - " ax_list[i].plot([plot_param_list[i][3],plot_param_list[i][3]],[-0.1,2],\"k--\")\n", - " \n", + " ax_list[i].plot([plot_param_list[i][3],plot_param_list[i][3]],[-0.1,3],\"k--\")\n", + "\n", " # lateral_error\n", " if 2==plot_param_list[i][1]:\n", - " ax_list[i].set_ylim([-0.01,1.0])\n", + " ax_list[i].set_ylim([-0.01,2.5])\n", " # vel_error\n", " if 3==plot_param_list[i][1]:\n", " ax_list[i].set_ylim([-0.01,1.0])\n", "\n", - " # if(y.max()>2.0):\n", - " # ax_list[i].set_ylim([-0.1,2.0])\n", " if i==0:\n", " ax_list[i].legend(fontsize=13)\n", + " if plot_param_list[i][0]==\"vehicle_type\":\n", + " ax_list[i].text(0.5, 0.8, \"0: nominal vehicle\\n1: heavy-weight bus\\n2: light-weight bus\\n3: small vehicle\\n4: small robot\", va='center', ha='center', fontsize=15, transform=ax_list[i].transAxes)\n", "plt.savefig(\"auto_test_result.png\")\n", "plt.show()" ] diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/pure_pursuit_gain_updater.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/pure_pursuit_gain_updater.py new file mode 100644 index 0000000000000..6e6e4c76c6054 --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/pure_pursuit_gain_updater.py @@ -0,0 +1,198 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import warnings + +from autoware_smart_mpc_trajectory_follower.scripts import drive_functions +import numpy as np +from sklearn import linear_model + +warnings.simplefilter("ignore") + + +class pure_pursuit_gain_updater: + def __init__(self, max_time=10.0, max_input_delay=1.5): + self.vel_queue = [] + self.yaw_queue = [] + self.acc_queue = [] + self.steer_queue = [] + self.acc_input_queue = [] + self.steer_input_queue = [] + self.max_queue_size = round(max_time / drive_functions.ctrl_time_step) + self.max_input_delay_size = round(max_input_delay / drive_functions.ctrl_time_step) + self.A_wheel_base = np.zeros((2, 2)) + self.B_wheel_base = np.zeros(2) + + def state_queue_updater(self, vel, yaw, acc, steer): + self.vel_queue.append(vel) + self.yaw_queue.append(yaw) + self.acc_queue.append(acc) + self.steer_queue.append(steer) + if len(self.vel_queue) > self.max_queue_size: + self.vel_queue.pop(0) + self.yaw_queue.pop(0) + self.acc_queue.pop(0) + self.steer_queue.pop(0) + if len(self.vel_queue) > 1: + numerator = self.vel_queue[-2] * np.tan(self.steer_queue[-2]) + yaw_dot_error = ( + self.yaw_queue[-1] - self.yaw_queue[-2] + ) / drive_functions.ctrl_time_step + yaw_dot_error -= numerator / drive_functions.L + + X_wheel_base = np.array([[1.0, numerator]]) + self.A_wheel_base += X_wheel_base.T @ X_wheel_base + 1e-5 * np.eye(2) + self.B_wheel_base += yaw_dot_error * X_wheel_base[0] + + def input_queue_updater(self, acc_input, steer_input): + self.acc_input_queue.append(acc_input) + self.steer_input_queue.append(steer_input) + if len(self.acc_input_queue) > self.max_queue_size - 1: + self.acc_input_queue.pop(0) + self.steer_input_queue.pop(0) + + def get_acc_gain_scaling(self): + if len(self.vel_queue) < self.max_queue_size: + return 1.0 + acc_array = np.array(self.acc_queue) + acc_input_array = np.array(self.acc_input_queue) + + acc_dot = (acc_array[1:] - acc_array[:-1]) / drive_functions.ctrl_time_step + acc_estimation_error = np.inf + best_acc_coef = np.array( + [ + -drive_functions.ctrl_time_step / drive_functions.acc_time_constant, + drive_functions.ctrl_time_step / drive_functions.acc_time_constant, + ] + ) + for i in range(self.max_input_delay_size): + clf_acc = linear_model.ElasticNet( + fit_intercept=False, alpha=1e-10, l1_ratio=0.5, max_iter=100000 + ) + clf_acc.fit( + np.stack( + ( + acc_array[self.max_input_delay_size - 1 : -1], + acc_input_array[ + self.max_input_delay_size - 1 - i : len(acc_input_array) - i + ], + ), + 1, + ), + acc_dot[self.max_input_delay_size - 1 :], + ) + acc_error = ( + ( + clf_acc.coef_[0] * acc_array[self.max_input_delay_size - 1 : -1] + + clf_acc.coef_[1] + * acc_input_array[self.max_input_delay_size - 1 - i : len(acc_input_array) - i] + - acc_dot[self.max_input_delay_size - 1 :] + ) + ** 2 + ).sum() + + if acc_error < acc_estimation_error and clf_acc.coef_[0] < 0 and clf_acc.coef_[1] > 0: + acc_estimation_error = acc_error + best_acc_coef = clf_acc.coef_ + X_acc = np.stack( + ( + acc_array[self.max_input_delay_size - 1 : -1], + acc_input_array[self.max_input_delay_size - 1 - i : len(acc_input_array) - i], + ), + 1, + ) + X_acc = np.hstack((np.ones((X_acc.shape[0], 1)), X_acc)) + + A = X_acc.T @ X_acc + 1e-15 * X_acc.shape[0] * np.eye(3) + + B = X_acc.T @ acc_dot[self.max_input_delay_size - 1 :] + + coef = np.linalg.solve(A, B) + acc_error = ( + ( + coef[1] * acc_array[self.max_input_delay_size - 1 : -1] + + coef[2] + * acc_input_array[self.max_input_delay_size - 1 - i : len(acc_input_array) - i] + + coef[0] + - acc_dot[self.max_input_delay_size - 1 :] + ) + ** 2 + ).sum() + + if acc_error < acc_estimation_error and coef[1] < 0 and coef[2] > 0: + acc_estimation_error = acc_error + best_acc_coef = coef[[1, 2]] + estimated_acc_scaling = np.clip(-best_acc_coef[1] / best_acc_coef[0], 0.1, 10.0) + + return 1 / estimated_acc_scaling + + def get_steer_gain_scaling(self): + if len(self.vel_queue) < self.max_queue_size: + return 1.0 + + steer_array = np.array(self.steer_queue) + steer_input_array = np.array(self.steer_input_queue) + + estimated_wheel_base_scaling = 1.0 / np.clip( + 1 + np.linalg.solve(self.A_wheel_base, self.B_wheel_base)[1] * drive_functions.L, + 0.1, + 1.0, + ) + + steer_dot = (steer_array[1:] - steer_array[:-1]) / drive_functions.ctrl_time_step + + steer_estimation_error = np.inf + best_steer_coef = np.array( + [ + -drive_functions.ctrl_time_step / drive_functions.steer_time_constant, + drive_functions.ctrl_time_step / drive_functions.steer_time_constant, + ] + ) + for i in range(self.max_input_delay_size): + X_steer = np.stack( + ( + steer_array[self.max_input_delay_size - 1 : -1], + steer_input_array[ + self.max_input_delay_size - 1 - i : len(steer_input_array) - i + ], + ), + 1, + ) + X_steer = np.hstack((np.ones((X_steer.shape[0], 1)), X_steer)) + + A = X_steer.T @ X_steer + 1e-15 * X_steer.shape[0] * np.eye(3) + + B = X_steer.T @ steer_dot[self.max_input_delay_size - 1 :] + + coef = np.linalg.solve(A, B) + steer_error = ( + ( + coef[1] * steer_array[self.max_input_delay_size - 1 : -1] + + coef[2] + * steer_input_array[ + self.max_input_delay_size - 1 - i : len(steer_input_array) - i + ] + + coef[0] + - steer_dot[self.max_input_delay_size - 1 :] + ) + ** 2 + ).sum() + + if steer_error < steer_estimation_error and coef[1] < 0 and coef[2] > 0: + steer_estimation_error = steer_error + best_steer_coef = coef[[1, 2]] + + estimated_steer_scaling = np.clip(-best_steer_coef[1] / best_steer_coef[0], 0.1, 10.0) + + return np.clip(estimated_wheel_base_scaling / estimated_steer_scaling, 0.1, 10.0) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/python_simulator.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/python_simulator.py index 0eaa6ce1c0fbf..78ccc0dea3922 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/python_simulator.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/python_simulator.py @@ -12,23 +12,30 @@ # See the License for the specific language governing permissions and # limitations under the License. -# cspell: ignore numba njit simplejson fastmath interp suptitle fftfreq basefmt markerfmt - -import csv import datetime import os +from assets import ControlType # type: ignore from autoware_smart_mpc_trajectory_follower.scripts import drive_controller from autoware_smart_mpc_trajectory_follower.scripts import drive_functions -import matplotlib.pyplot as plt -from numba import njit +import data_collection_utils # type: ignore +from density_estimation import KinematicStates # type: ignore +from density_estimation import visualize_speed_acc +from density_estimation import visualize_speed_steer +import matplotlib.pyplot as plt # type: ignore +from numba import njit # type: ignore import numpy as np -import pandas as pd -import scipy.interpolate -import simplejson as json +import pandas as pd # type: ignore +import pure_pursuit_gain_updater # type: ignore +import scipy.interpolate # type: ignore +import simplejson as json # type: ignore +# cSpell:ignore numba simplejson print("\n\n### import python_simulator.py ###") +ACTIVATE_LIMITS = False +UPDATE_PP_GAIN = True + ctrl_time_step = drive_functions.ctrl_time_step sim_dt = 0.003333 # Simulation time step @@ -46,8 +53,12 @@ L = drive_functions.L N = drive_functions.N -steer_rate_lim = 0.35 -vel_rate_lim = 7.0 +if ACTIVATE_LIMITS: + steer_rate_lim = 0.35 + vel_rate_lim = 7.0 +else: + steer_rate_lim = 10.35 + vel_rate_lim = 107.0 mpc_freq = drive_functions.mpc_freq @@ -114,7 +125,7 @@ 1 * vgr_coef_a2, 1 * vgr_coef_b2, 1 * vgr_coef_c2, - ] + ] # type: ignore vgr_coef_a1 = sim_setting_dict["adaptive_gear_ratio_coef"][0] vgr_coef_b1 = sim_setting_dict["adaptive_gear_ratio_coef"][1] vgr_coef_c1 = sim_setting_dict["adaptive_gear_ratio_coef"][2] @@ -171,7 +182,7 @@ print("perturbed steer_time_constant", steer_time_constant) if "accel_map_scale" in sim_setting_dict.keys(): - nominal_setting_dict_display["accel_map_scale"] = None + nominal_setting_dict_display["accel_map_scale"] = None # type: ignore use_accel_map = True accel_map_scale = sim_setting_dict["accel_map_scale"] df = pd.read_csv("accel_map.csv", header=None) @@ -244,8 +255,9 @@ def accel_map_f(x, y): pass elif sim_setting_dict["vehicle_type"] == 1: # heavy-weight bus - steer_rate_lim = 5.0 - vel_rate_lim = 7.0 + if ACTIVATE_LIMITS: + steer_rate_lim = 5.0 + vel_rate_lim = 7.0 L = 4.76 acc_delay_step_sim = round(1.0 / sim_dt) steer_delay_step_sim = round(1.0 / sim_dt) @@ -254,8 +266,9 @@ def accel_map_f(x, y): acc_scaling = 0.2 elif sim_setting_dict["vehicle_type"] == 2: # light-weight bus - steer_rate_lim = 5.0 - vel_rate_lim = 7.0 + if ACTIVATE_LIMITS: + steer_rate_lim = 5.0 + vel_rate_lim = 7.0 L = 4.76 acc_delay_step_sim = round(0.5 / sim_dt) steer_delay_step_sim = round(0.5 / sim_dt) @@ -264,8 +277,9 @@ def accel_map_f(x, y): acc_scaling = 0.5 elif sim_setting_dict["vehicle_type"] == 3: # small vehicle - steer_rate_lim = 5.0 - vel_rate_lim = 7.0 + if ACTIVATE_LIMITS: + steer_rate_lim = 5.0 + vel_rate_lim = 7.0 L = 1.335 acc_delay_step_sim = round(0.3 / sim_dt) steer_delay_step_sim = round(0.3 / sim_dt) @@ -274,8 +288,9 @@ def accel_map_f(x, y): acc_scaling = 1.5 elif sim_setting_dict["vehicle_type"] == 4: # small robot - steer_rate_lim = 60.0 * (np.pi / 180.0) - vel_rate_lim = 3.0 + if ACTIVATE_LIMITS: + steer_rate_lim = 60.0 * (np.pi / 180.0) + vel_rate_lim = 3.0 L = 0.395 acc_delay_step_sim = round(0.2 / sim_dt) steer_delay_step_sim = round(0.2 / sim_dt) @@ -308,6 +323,109 @@ def accel_map_f(x, y): ) print("acc_scaling", nominal_setting_dict_display["acc_scaling"], acc_scaling) + if "test_vehicle" in sim_setting_dict.keys(): + nominal_setting_dict_display["steer_rate_lim"] = 1 * steer_rate_lim + nominal_setting_dict_display["vel_rate_lim"] = 1 * vel_rate_lim + nominal_setting_dict_display["wheel_base"] = 1 * L + nominal_setting_dict_display["acc_time_delay"] = sim_dt * acc_delay_step_sim + nominal_setting_dict_display["steer_time_delay"] = sim_dt * steer_delay_step_sim + nominal_setting_dict_display["acc_time_constant"] = 1 * acc_time_constant + nominal_setting_dict_display["steer_time_constant"] = 1 * steer_time_constant + nominal_setting_dict_display["acc_scaling"] = 1 * acc_scaling + if sim_setting_dict["test_vehicle"] == 0: + L = 5.76 + acc_delay_step_sim = round(0.2 / sim_dt) + steer_delay_step_sim = round(0.9 / sim_dt) + acc_time_constant = 0.4 + steer_time_constant = 0.8 + steer_scaling = 3.0 + acc_scaling = 0.5 + steer_dead_band = 0.002 + measurement_steer_bias = 0.2 * np.pi / 180.0 + elif sim_setting_dict["test_vehicle"] == 1: + L = 1.76 + acc_delay_step_sim = round(0.7 / sim_dt) + steer_delay_step_sim = round(0.8 / sim_dt) + acc_time_constant = 0.2 + steer_time_constant = 0.9 + steer_scaling = 0.3 + acc_scaling = 3.0 + steer_dead_band = 0.001 + measurement_steer_bias = 0.3 * np.pi / 180.0 + elif sim_setting_dict["test_vehicle"] == 2: + L = 4.56 + acc_delay_step_sim = round(0.4 / sim_dt) + steer_delay_step_sim = round(0.8 / sim_dt) + acc_time_constant = 0.4 + steer_time_constant = 0.9 + steer_scaling = 0.6 + acc_scaling = 0.3 + steer_dead_band = 0.004 + measurement_steer_bias = 0.7 * np.pi / 180.0 + elif sim_setting_dict["test_vehicle"] == 3: + # heavy-weight bus + L = 4.76 + acc_delay_step_sim = round(1.0 / sim_dt) + steer_delay_step_sim = round(1.0 / sim_dt) + acc_time_constant = 1.0 + steer_time_constant = 1.0 + acc_scaling = 0.2 + elif sim_setting_dict["test_vehicle"] == 4: + L = 3.56 + acc_delay_step_sim = round(0.3 / sim_dt) + steer_delay_step_sim = round(0.8 / sim_dt) + acc_time_constant = 0.3 + steer_time_constant = 0.9 + steer_scaling = 0.3 + acc_scaling = 0.3 + steer_dead_band = 0.003 + measurement_steer_bias = 0.3 * np.pi / 180.0 + elif sim_setting_dict["test_vehicle"] == 5: + L = 4.76 + acc_delay_step_sim = round(1.0 / sim_dt) + steer_delay_step_sim = round(0.7 / sim_dt) + acc_time_constant = 1.0 + steer_time_constant = 0.7 + acc_scaling = 0.2 + elif sim_setting_dict["test_vehicle"] == 6: + L = 4.76 + acc_delay_step_sim = round(1.0 / sim_dt) + steer_delay_step_sim = round(0.6 / sim_dt) + acc_time_constant = 1.0 + steer_time_constant = 0.6 + acc_scaling = 0.2 + elif sim_setting_dict["test_vehicle"] == 7: + L = 4.76 + acc_delay_step_sim = round(1.0 / sim_dt) + steer_delay_step_sim = round(0.5 / sim_dt) + acc_time_constant = 1.0 + steer_time_constant = 0.5 + acc_scaling = 0.2 + print("steer_rate_lim", nominal_setting_dict_display["steer_rate_lim"], steer_rate_lim) + print("vel_rate_lim", nominal_setting_dict_display["vel_rate_lim"], vel_rate_lim) + print("wheel_base", nominal_setting_dict_display["wheel_base"], L) + print( + "acc_time_delay", + nominal_setting_dict_display["acc_time_delay"], + sim_dt * acc_delay_step_sim, + ) + print( + "steer_time_delay", + nominal_setting_dict_display["steer_time_delay"], + sim_dt * steer_delay_step_sim, + ) + print( + "acc_time_constant", + nominal_setting_dict_display["acc_time_constant"], + acc_time_constant, + ) + print( + "steer_time_constant", + nominal_setting_dict_display["steer_time_constant"], + steer_time_constant, + ) + print("acc_scaling", nominal_setting_dict_display["acc_scaling"], acc_scaling) + # dynamics # @njit(cache=False, fastmath=True) # Commented out because we want to use scipy.interpolate2d @@ -336,13 +454,13 @@ def f_sim( else: delta_diff = 0.0 - actual_alpha = alpha + actual_alpha_input = acc_scaling * inputs[0] actual_delta = delta - measurement_steer_bias # Acceleration input value -> Actual acceleration input value distortion applied if use_accel_map: - if actual_alpha > 0: - actual_alpha = accel_map_f(v, actual_alpha)[0] # vel, acc_cmd + if actual_alpha_input > 0: + actual_alpha_input = accel_map_f(v, actual_alpha_input)[0] # vel, acc_cmd # Tire angle input value -> Actual tire angle input value distortion application steer_tire_angle_cmd = 1 * delta @@ -360,9 +478,9 @@ def f_sim( states_dot = np.zeros(6) states_dot[0] = v * np.cos(theta) states_dot[1] = v * np.sin(theta) - states_dot[2] = actual_alpha + states_dot[2] = alpha states_dot[3] = v * np.tan(actual_delta) / L - states_dot[4] = (acc_scaling * inputs[0] - alpha) / acc_time_constant + states_dot[4] = (actual_alpha_input - alpha) / acc_time_constant states_dot[5] = delta_diff / steer_time_constant return states_dot @@ -383,6 +501,7 @@ def F_sim( return states_next +# cSpell:ignore njit fastmath @njit(cache=False, fastmath=True) def d_inputs_to_inputs(u_old, d_inputs): """Compute the sequence of input values from the sequence of input change rates.""" @@ -469,360 +588,42 @@ def get_mpc_trajectory(x_current, trajectory_data, trajectory_interpolator_list) return X_des, U_des, x_current[:6] - trajectory_data[nearest_index, 1:7], break_flag -def get_feedforward_nominal_input(t, trajectory_data): - """Calculate the nominal input for feed-forward driving.""" - total_time = trajectory_data[-1, 0] - t_current = t - (t // total_time) * total_time - nearest_index = np.argmin(np.abs(trajectory_data[:, 0] - t_current)) - return trajectory_data[nearest_index, [5, 6]] - - -def create_additional_sine_data( - seed, - t_range, - acc_width_range, - acc_period_range, - steer_width_range, - steer_period_range, - large_steer_width_range, - large_steer_period_range, - start_large_steer_time, -): - """Create sine wave data to be added randomly to feed-forward runs.""" - np.random.seed(seed=seed) - t_acc = 0.0 - t_steer = 0.0 - t_large_steer = 0.0 - t_acc_list = [] - t_steer_list = [] - t_large_steer_list = [] - t_acc_list.append(t_acc) - t_steer_list.append(t_steer) - t_large_steer_list.append(t_large_steer) - t_large_steer += start_large_steer_time - t_large_steer_list.append(t_large_steer) - width_acc_list = [] - width_steer_list = [] - width_large_steer_list = [] - width_large_steer_list.append(0) - while True: - if max(t_acc, t_large_steer) >= t_steer: - period = ( - steer_period_range[1] - steer_period_range[0] - ) * np.random.uniform() + steer_period_range[0] - t_steer += period - t_steer_list.append(t_steer) - width_steer_list.append(steer_width_range * np.random.uniform()) - elif t_large_steer >= t_acc: - period = ( - acc_period_range[1] - acc_period_range[0] - ) * np.random.uniform() + acc_period_range[0] - t_acc += period - t_acc_list.append(t_acc) - width_acc_list.append(acc_width_range * np.random.uniform()) - else: - period = ( - large_steer_period_range[1] - large_steer_period_range[0] - ) * np.random.uniform() + large_steer_period_range[0] - t_large_steer += period - t_large_steer_list.append(t_large_steer) - width_large_steer_list.append(large_steer_width_range * np.random.uniform()) - if t_acc >= t_range[1] and t_steer >= t_range[1] and t_large_steer >= t_range[1]: - break - return ( - np.array(t_acc_list), - np.array(width_acc_list), - np.array(t_steer_list), - np.array(width_steer_list), - np.array(t_large_steer_list), - np.array(width_large_steer_list), - ) - - -@njit(cache=False, fastmath=True) -def get_current_additional_sine( - t, - t_acc_array, - width_acc_array, - t_steer_array, - width_steer_array, - t_large_steer_array, - width_large_steer_array, -): - """Calculate current values from already created sine wave data.""" - acc_index = 0 - steer_index = 0 - large_steer_index = 0 - for i in range(t_acc_array.shape[0] - 1): - if t < t_acc_array[i + 1]: - break - acc_index += 1 - for i in range(t_steer_array.shape[0] - 1): - if t < t_steer_array[i + 1]: - break - steer_index += 1 - for i in range(t_large_steer_array.shape[0] - 1): - if t < t_large_steer_array[i + 1]: - break - large_steer_index += 1 - acc = width_acc_array[acc_index] * np.sin( - 2 - * np.pi - * (t - t_acc_array[acc_index]) - / (t_acc_array[acc_index + 1] - t_acc_array[acc_index]) - ) - steer = width_steer_array[steer_index] * np.sin( - 2 - * np.pi - * (t - t_steer_array[steer_index]) - / (t_steer_array[steer_index + 1] - t_steer_array[steer_index]) - ) - steer += width_large_steer_array[large_steer_index] * np.sin( - 2 - * np.pi - * (t - t_large_steer_array[large_steer_index]) - / (t_large_steer_array[large_steer_index + 1] - t_large_steer_array[large_steer_index]) - ) - return np.array([acc, steer]) - - -def create_vel_sine_data(seed, t_range, vel_width_range, vel_period_range): - """Create sine wave data for target velocity.""" - np.random.seed(seed=seed) - t_vel = 0.0 - t_vel_list = [] - t_vel_list.append(t_vel) - width_vel_list = [] - while True: - period = ( - vel_period_range[1] - vel_period_range[0] - ) * np.random.uniform() + vel_period_range[0] - t_vel += period - t_vel_list.append(t_vel) - width_vel_list.append(vel_width_range * np.random.uniform()) - if t_vel >= t_range[1]: - break - return ( - np.array(t_vel_list), - np.array(width_vel_list), - ) - - -@njit(cache=False, fastmath=True) -def get_current_vel_sine(t, t_vel_array, width_vel_array, v_mid): - """Calculate current target velocity values from already created sine wave data.""" - vel_index = 0 - for i in range(t_vel_array.shape[0] - 1): - if t < t_vel_array[i + 1]: - break - vel_index += 1 - vel = v_mid + width_vel_array[vel_index] * np.sin( - 2 - * np.pi - * (t - t_vel_array[vel_index]) - / (t_vel_array[vel_index + 1] - t_vel_array[vel_index]) - ) - return vel - - -def get_figure_eight_point(t, circle_radius): - """ - Get the position and yaw angle in world coordinates of the figure eight given the circle radius. - - Here t is a 1-dimensional array of numpy and each t[i] represents the distance traveled. - The return value is a 2-dimensional array of positions and a 1-dimensional array of yaw angles corresponding to t. - """ - sign = -2 * (np.floor(t / (2 * np.pi * circle_radius)) % 2).astype(int) + 1 - x = circle_radius * np.sin(t / circle_radius) - y = sign * circle_radius * (1 - np.cos(t / circle_radius)) - yaw = ( - sign * ((t / circle_radius) % (2 * np.pi) - np.pi) + np.pi - ) # if sign == 1, then yaw = (t/circle_radius)%(2*np.pi). Else, yaw = 2*np.pi - (t/circle_radius)%(2*np.pi). - return np.array([x, y]).T, yaw - - -def pure_pursuit( - x_current, - target_position, - target_vel, - target_yaw, - acc_lim=7.0, - steer_lim=1.0, - wheel_base=drive_functions.L, - lookahead_time=3.0, - min_lookahead=3.0, - acc_kp=0.5, -): - """Calculate acceleration and steer angle input values based on pure pursuit.""" - present_position = x_current[:2] - present_longitudinal_velocity = x_current[2] - present_point_yaw = x_current[3] - longitudinal_vel_err = present_longitudinal_velocity - target_vel - acc_kp = 0.5 - acc_cmd = np.clip(-acc_kp * longitudinal_vel_err, -acc_lim, acc_lim) - - # compute steer cmd - cos_yaw = np.cos(target_yaw) - sin_yaw = np.sin(target_yaw) - diff_position = present_position - target_position - lat_err = -sin_yaw * diff_position[0] + cos_yaw * diff_position[1] - yaw_err = present_point_yaw - target_yaw - while True: - if yaw_err > np.pi: - yaw_err -= 2.0 * np.pi - if yaw_err < (-np.pi): - yaw_err += 2.0 * np.pi - if np.abs(yaw_err) < np.pi: - break - - lookahead = min_lookahead + lookahead_time * np.abs(present_longitudinal_velocity) - steer_kp = 2.0 * wheel_base / (lookahead * lookahead) - steer_kd = 2.0 * wheel_base / lookahead - steer_cmd = np.clip(-steer_kp * lat_err - steer_kd * yaw_err, -steer_lim, steer_lim) - return np.array([acc_cmd, steer_cmd]) - - -def get_pure_pursuit_info(x_current, trajectory_position_data, trajectory_yaw_data, previous_index): - """Calculate the target position and yaw angle required for pure pursuit.""" - search_range = ( - np.arange( - previous_index - trajectory_position_data.shape[0] // 4, - previous_index + trajectory_position_data.shape[0] // 4, - ) - % trajectory_position_data.shape[0] - ) - nearest_index = np.argmin( - ((trajectory_position_data[search_range] - x_current[:2].reshape(1, 2)) ** 2).sum(axis=1) - ) - return ( - trajectory_position_data[search_range[nearest_index]], - trajectory_yaw_data[search_range[nearest_index]], - search_range[nearest_index], - ) - - -class driving_log_updater: - """Class for updating logs when driving on the Python simulator.""" - - def __init__(self): - self.X_history = [] - self.U_history = [] - self.control_cmd_time_stamp_list = [] - self.control_cmd_steer_list = [] - self.control_cmd_acc_list = [] - self.kinematic_state_list = [] - self.acceleration_list = [] - self.steering_status_list = [] - self.control_cmd_orig_list = [] - self.operation_mode_list = [] - - def update(self, t_current, x_current, u_current): - """Update logs.""" - self.X_history.append(x_current) - self.U_history.append(u_current) - self.control_cmd_time_stamp_list.append(t_current) - self.control_cmd_steer_list.append(u_current[1]) - self.control_cmd_acc_list.append(u_current[0]) - if self.control_cmd_time_stamp_list[-1] - self.control_cmd_time_stamp_list[0] > 3.0: - self.control_cmd_time_stamp_list.pop(0) - self.control_cmd_steer_list.pop(0) - self.control_cmd_acc_list.pop(0) - t_sec = int(t_current) - t_n_sec = int(1e9 * (t_current - t_sec)) - kinematic_state = np.zeros(7) - acceleration = np.zeros(4) - steering_status = np.zeros(3) - control_cmd_orig = np.zeros(10) - operation_mode = np.zeros(3) - kinematic_state[0] = t_sec - kinematic_state[1] = t_n_sec - kinematic_state[2] = x_current[0] - kinematic_state[3] = x_current[1] - kinematic_state[4] = np.sin(0.5 * x_current[3]) - kinematic_state[5] = np.cos(0.5 * x_current[3]) - kinematic_state[6] = x_current[2] - self.kinematic_state_list.append(kinematic_state) - acceleration[0] = t_sec - acceleration[1] = t_n_sec - acceleration[3] = x_current[4] - self.acceleration_list.append(acceleration) - steering_status[0] = t_sec - steering_status[1] = t_n_sec - steering_status[2] = x_current[5] - self.steering_status_list.append(steering_status) - control_cmd_orig[0] = t_sec - control_cmd_orig[1] = t_n_sec - control_cmd_orig[4] = u_current[1] - control_cmd_orig[9] = u_current[0] - self.control_cmd_orig_list.append(control_cmd_orig) - operation_mode[0] = t_sec - operation_mode[1] = t_n_sec - operation_mode[2] = 2.0 - self.operation_mode_list.append(operation_mode) - - def save(self, save_dir): - """Save logs in csv format.""" - kinematic_states = np.zeros((len(self.kinematic_state_list), 48)) - kinematic_states[:, [0, 1, 4, 5, 9, 10, 47]] = np.array(self.kinematic_state_list) - np.savetxt(save_dir + "/kinematic_state.csv", kinematic_states, delimiter=",") - np.savetxt(save_dir + "/acceleration.csv", np.array(self.acceleration_list), delimiter=",") - np.savetxt( - save_dir + "/steering_status.csv", - np.array(self.steering_status_list), - delimiter=",", - ) - np.savetxt( - save_dir + "/control_cmd_orig.csv", - np.array(self.control_cmd_orig_list), - delimiter=",", - ) - np.savetxt( - save_dir + "/system_operation_mode_state.csv", - np.array(self.operation_mode_list), - delimiter=",", - ) - with open(save_dir + "/system_operation_mode_state.csv", "w") as f: - writer = csv.writer(f) - for i in range(len(self.operation_mode_list)): - operation_mode_plus_true = self.operation_mode_list[i].tolist() - operation_mode_plus_true.append("True") - writer.writerow(operation_mode_plus_true) - - -def slalom_drive( +def drive_sim( save_file=True, save_dir=None, load_dir=drive_functions.load_dir, visualize=True, use_trained_model=False, use_trained_model_diff=None, - control_type="mpc", # feedforward_test=False, - straight_line_test=False, + use_memory_diff=None, + control_type: ControlType = ControlType.mpc, initial_error=np.zeros(6), t_range=[0, 100], seed=1, - acc_width_range=0.005, + acc_amp_range=0.05, acc_period_range=[5.0, 20.0], - steer_width_range=0.005, - steer_period_range=[5.0, 20.0], - large_steer_width_range=0.00, + steer_amp_range=0.005, + steer_period_range=[5.0, 30.0], + large_steer_amp_range=0.00, large_steer_period_range=[5.0, 20.0], start_large_steer_time=40.0, - vel_width_range=5.0, - vel_period_range=[5.0, 20.0], - v_mid=6.0, - circle_radius=30.0, + acc_max=1.2, + constant_vel_time=5.0, + split_size=5, + y_length=60.0, + x_length=120.0, + step_response_max_input=0.01, + step_response_max_length=1.5, + step_response_start_time_ratio=0.0, + step_response_interval=5.0, + step_response_min_length=0.5, + smoothing_trajectory_data_flag=True, ): """Perform a slalom driving simulation.""" - if control_type == "pp": - print("\n[run figure_eight_drive]\n") - elif control_type == "ff": - print("\n[run feedforward_drive]\n") + if control_type != ControlType.mpc: + print(f"\n[run {control_type.value}]\n") else: - if not straight_line_test: - print("\n[run slalom_drive]\n") - else: - print("\n[straight_line_test]\n") + print("\n[run slalom_drive]\n") if save_file: if save_dir is None: save_dir_ = "python_sim_log_" + str(datetime.datetime.now()) @@ -830,40 +631,41 @@ def slalom_drive( save_dir_ = save_dir if not os.path.isdir(save_dir_): os.mkdir(save_dir_) - controller = drive_controller.drive_controller( - model_file_name=(load_dir + "/model_for_test_drive.pth"), - load_GP_dir=load_dir, - load_polynomial_reg_dir=load_dir, - use_trained_model=use_trained_model, - use_trained_model_diff=use_trained_model_diff, - load_train_data_dir=load_dir, - ) - mode = controller.mode - if control_type == "mpc": + if control_type == ControlType.mpc: + controller = drive_controller.drive_controller( + model_file_name=(load_dir + "/model_for_test_drive.pth"), + load_GP_dir=load_dir, + load_polynomial_reg_dir=load_dir, + use_trained_model=use_trained_model, + use_trained_model_diff=use_trained_model_diff, + use_memory_diff=use_memory_diff, + load_train_data_dir=load_dir, + ) + mode = controller.mode print("mode:", mode) + # cSpell:ignore interp plt.rcParams["figure.figsize"] = (8, 8) - t_eval = np.arange(*t_range, sim_dt) - if not straight_line_test: - trajectory_data = np.loadtxt("slalom_course_data.csv", delimiter=",") - else: - # Test by straight_line. To run, the following create_straight_line_test_csv() must be executed - trajectory_data = np.loadtxt("straight_line.csv", delimiter=",") + t_eval = np.arange(t_range[0], t_range[1], sim_dt) + trajectory_data = np.loadtxt("slalom_course_data.csv", delimiter=",") trajectory_interpolator_list = [ scipy.interpolate.interp1d(trajectory_data[:, 0], trajectory_data[:, 1 + i]) for i in range(trajectory_data.shape[1] - 1) ] - x_init = trajectory_data[0, 1:7] + initial_error - - x_current = x_init.copy() + x_init = trajectory_data[0, 1:7].copy() acc_des_queue = [0] * acc_delay_step_sim - steer_des_queue = [0] * steer_delay_step_sim + + initial_steer_input = ( + measurement_steer_bias + np.sign(measurement_steer_bias) * steer_dead_band + ) / steer_scaling + steer_des_queue = [initial_steer_input] * steer_delay_step_sim calculated = 0 break_flag = False tracking_error_list = [] + target_vel_list = [] total_abs_max_lateral_deviation = -1 straight_line_abs_max_lateral_deviation = -1 @@ -872,48 +674,80 @@ def slalom_drive( total_abs_max_acc_error = -1 total_abs_max_steer_error = -1 prev_u_actual_input = np.zeros(2) - log_updater = driving_log_updater() + log_updater = data_collection_utils.driving_log_updater() + pp_gain_updater = pure_pursuit_gain_updater.pure_pursuit_gain_updater() + acc_gain_scaling = 1.0 + steer_gain_scaling = 1.0 # L/2.79 + + acc_gain_scaling_decay = 0.9 + steer_gain_scaling_decay = 0.9 + + # used for "pp_eight" previous_pp_index = 0 - if control_type != "mpc": # feedforward_test: + if control_type != ControlType.mpc: # feedforward_test: ( t_acc_array, - width_acc_array, + amp_acc_array, t_steer_array, - width_steer_array, + amp_steer_array, t_large_steer_array, - width_large_steer_array, - ) = create_additional_sine_data( + amp_large_steer_array, + ) = data_collection_utils.create_additional_sine_data( seed, t_range, - acc_width_range, + acc_amp_range, acc_period_range, - steer_width_range, + steer_amp_range, steer_period_range, - large_steer_width_range, + large_steer_amp_range, large_steer_period_range, start_large_steer_time, ) - if control_type == "pp": - t_figure_eight = np.arange(*[0, 4 * np.pi * circle_radius], 0.01) - trajectory_position_data, trajectory_yaw_data = get_figure_eight_point( - t_figure_eight, circle_radius - ) - # plt.plot(trajectory_position_data[:,0],trajectory_position_data[:,1]) - # plt.show() - t_vel_array, width_vel_array = create_vel_sine_data( - seed, t_range, vel_width_range, vel_period_range - ) + if control_type in [ControlType.pp_eight, ControlType.pp_straight, ControlType.npp_eight]: + if control_type in [ControlType.pp_eight, ControlType.npp_eight]: + figure_eight = data_collection_utils.FigureEight( + y_length, + x_length, + acc_max=acc_max, + constant_vel_time=constant_vel_time, + split_size=split_size, + smoothing_trajectory_data_flag=smoothing_trajectory_data_flag, + ) + ( + trajectory_position_data, + trajectory_yaw_data, + curvature_radius, + parts, + achievement_rates, + ) = figure_eight.get_trajectory_points(0.01) + + x_init[:2] = trajectory_position_data[0] + x_init[3] = trajectory_yaw_data[0] + x_init[2] = figure_eight.v_start + else: + straight_line = data_collection_utils.StraightLine( + acc_max=acc_max, constant_vel_time=constant_vel_time, split_size=split_size + ) + x_init[2] = straight_line.v_mid + + x_init += initial_error + + x_current = x_init.copy() for i in range(t_eval.size): if i % ctrl_freq == 0: # update u_opt - if control_type == "mpc": # not feedforward_test: + if control_type in [ControlType.pp_eight, ControlType.pp_straight]: + pp_gain_updater.state_queue_updater( + x_current[2], x_current[3], x_current[4], x_current[5] + ) + + if control_type == ControlType.mpc: # not feedforward_test: X_des, U_des, tracking_error, break_flag = get_mpc_trajectory( x_current, trajectory_data, trajectory_interpolator_list ) tracking_error_list.append(tracking_error.copy()) - u_opt = controller.update_input_queue_and_get_optimal_control( log_updater.control_cmd_time_stamp_list, log_updater.control_cmd_acc_list, @@ -921,38 +755,177 @@ def slalom_drive( x_current, X_des, U_des, + t_eval[i], + t_eval[i], ) - elif control_type == "ff": - u_opt = get_current_additional_sine( + if t_eval[i] < 5.0: + u_opt[1] = initial_steer_input + elif control_type == ControlType.ff: + u_opt = data_collection_utils.get_current_additional_sine( t_eval[i], t_acc_array, - width_acc_array, + amp_acc_array, t_steer_array, - width_steer_array, + amp_steer_array, t_large_steer_array, - width_large_steer_array, + amp_large_steer_array, ) - u_opt[0] += get_feedforward_nominal_input(t_eval[i], trajectory_data)[0] - elif control_type == "pp": - target_position, target_yaw, previous_pp_index = get_pure_pursuit_info( + u_opt[0] += data_collection_utils.get_feedforward_nominal_input( + t_eval[i], trajectory_data + )[0] + + elif control_type == ControlType.pp_eight: + ( + target_position, + target_yaw, + previous_pp_index, + ) = data_collection_utils.get_pure_pursuit_info( x_current, trajectory_position_data, trajectory_yaw_data, previous_pp_index ) - target_vel = get_current_vel_sine(t_eval[i], t_vel_array, width_vel_array, v_mid) - u_opt = pure_pursuit(x_current, target_position, target_vel, target_yaw) - u_opt += get_current_additional_sine( + target_vel = figure_eight.get_current_velocity(t_eval[i]) + target_vel_list.append(np.array([t_eval[i], target_vel])) + u_opt = drive_functions.pure_pursuit_control( + pos_xy_obs=x_current[:2], + pos_yaw_obs=x_current[3], + longitudinal_vel_obs=x_current[2], + pos_xy_ref=target_position[:2], + pos_yaw_ref=target_yaw, + longitudinal_vel_ref=target_vel, + acc_gain_scaling=acc_gain_scaling, + steer_gain_scaling=steer_gain_scaling, + ) + u_opt += data_collection_utils.get_current_additional_sine( + t_eval[i], + t_acc_array, + amp_acc_array, + t_steer_array, + amp_steer_array, + t_large_steer_array, + amp_large_steer_array, + ) + u_opt[1] += data_collection_utils.step_response( + t_eval[i], + step_response_start_time_ratio * t_range[1], + step_response_interval, + step_response_max_input, + step_response_max_length, + step_response_min_length, + ) + break_flag = figure_eight.break_flag + elif control_type == ControlType.pp_straight: + target_vel = straight_line.get_current_velocity(t_eval[i]) + target_vel_list.append(np.array([t_eval[i], target_vel])) + target_position = np.array([x_current[0], 0.0]) + target_yaw = 0.0 + u_opt = drive_functions.pure_pursuit_control( + pos_xy_obs=x_current[:2], + pos_yaw_obs=x_current[3], + longitudinal_vel_obs=x_current[2], + pos_xy_ref=target_position[:2], + pos_yaw_ref=target_yaw, + longitudinal_vel_ref=target_vel, + acc_gain_scaling=acc_gain_scaling, + steer_gain_scaling=steer_gain_scaling, + ) + u_opt += data_collection_utils.get_current_additional_sine( t_eval[i], t_acc_array, - width_acc_array, + amp_acc_array, t_steer_array, - width_steer_array, + amp_steer_array, t_large_steer_array, - width_large_steer_array, + amp_large_steer_array, + ) + u_opt[1] += data_collection_utils.step_response( + t_eval[i], + step_response_start_time_ratio * t_range[1], + step_response_interval, + step_response_max_input, + step_response_max_length, + step_response_min_length, ) + break_flag = straight_line.break_flag + + elif control_type == ControlType.npp_eight: + ( + target_position, + target_yaw, + previous_pp_index, + target_position_ahead, + ) = data_collection_utils.get_naive_pure_pursuit_info( + x_current, trajectory_position_data, trajectory_yaw_data, previous_pp_index + ) + target_vel = figure_eight.get_current_velocity(t_eval[i]) + + applying_velocity_limit_by_lateral_acc_flag = True + if applying_velocity_limit_by_lateral_acc_flag: + max_lateral_accel = 0.3 + velocity_limit_by_lateral_acc = np.sqrt( + max_lateral_accel * curvature_radius[previous_pp_index] + ) + target_vel = min(target_vel, velocity_limit_by_lateral_acc) + + applying_velocity_limit_by_tracking_error_flag = True + if applying_velocity_limit_by_tracking_error_flag: + lateral_error = np.sqrt(((x_current[:2] - target_position[:2]) ** 2).sum()) + yaw_error = x_current[3] - target_yaw + if yaw_error > np.pi: + yaw_error -= 2 * np.pi + if yaw_error < -np.pi: + yaw_error += 2 * np.pi + + safety_velocity = 3.0 + lateral_error_threshold = 2.0 + yaw_error_threshold = 0.5 + if lateral_error_threshold < lateral_error or yaw_error_threshold < np.abs( + yaw_error + ): + target_vel = safety_velocity + + target_vel_list.append(np.array([t_eval[i], target_vel])) + u_opt = drive_functions.naive_pure_pursuit_control( + pos_xy_obs=x_current[:2], + pos_yaw_obs=x_current[3], + longitudinal_vel_obs=x_current[2], + pos_xy_ref_target=target_position_ahead[:2], + longitudinal_vel_ref_nearest=target_vel, + ) + u_opt += data_collection_utils.get_current_additional_sine( + t_eval[i], + t_acc_array, + amp_acc_array, + t_steer_array, + amp_steer_array, + t_large_steer_array, + amp_large_steer_array, + ) + u_opt[1] += data_collection_utils.step_response( + t_eval[i], + step_response_start_time_ratio * t_range[1], + step_response_interval, + step_response_max_input, + step_response_max_length, + step_response_min_length, + ) + break_flag = figure_eight.break_flag calculated += 1 log_updater.update(t_eval[i], x_current, u_opt) - if ( - visualize and (control_type in ["ff", "pp"]) and (i == t_eval.size - 1 or break_flag) - ): # feedforward_test and (i == t_eval.size - 1 or break_flag): + if control_type in [ControlType.pp_eight, ControlType.pp_straight]: + pp_gain_updater.input_queue_updater(u_opt[0], u_opt[1]) + if i % (100 * ctrl_freq) == 0 and UPDATE_PP_GAIN: # update u_opt + # pp_gain_updater.get_acc_gain_scaling() + acc_gain_scaling = ( + acc_gain_scaling_decay * acc_gain_scaling + + (1 - acc_gain_scaling_decay) * pp_gain_updater.get_acc_gain_scaling() + ) + if control_type == ControlType.pp_eight: + steer_gain_scaling = ( + steer_gain_scaling_decay * steer_gain_scaling + + (1 - steer_gain_scaling_decay) + * pp_gain_updater.get_steer_gain_scaling() + ) + + if visualize and (control_type != ControlType.mpc) and (i == t_eval.size - 1 or break_flag): X = np.array(log_updater.X_history) U = np.array(log_updater.U_history) @@ -967,11 +940,11 @@ def slalom_drive( + ", nominal_model: " + str(nominal_setting_dict_display) ) - fig = plt.figure(figsize=(18, 12), tight_layout=True) + # cSpell:ignore nrows ncols suptitle + fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(18, 12), tight_layout=True) fig.suptitle(title_str) - plt.subplot(231) - ax1 = plt.subplot(2, 3, 1) + ax1: plt.Axes = axes[0, 0] ax1.plot(X[:, 0], X[:, 1], label="trajectory") ax1.legend() ax1.set_xlabel("x_position [m]") @@ -980,13 +953,13 @@ def slalom_drive( time_normalize_1 = ctrl_freq * sim_dt f_s = int(1.0 / time_normalize_1) - ax2 = plt.subplot(2, 3, 2) + # cSpell:ignore numba simplejson fftfreq basefmt markerfmt + ax2: plt.Axes = axes[0, 1] X_acc = np.fft.fft(U[:, 0]) / len(U[:, 0]) # Fourier transform of waveforms freqs = np.fft.fftfreq(len(U[:, 0])) * f_s ax2.stem( freqs, np.abs(X_acc), - use_line_collection=True, basefmt="k-", markerfmt="cx", label="acc input", @@ -996,13 +969,12 @@ def slalom_drive( ax2.set_xlabel("freq") ax2.set_ylabel("amplitude") - ax3 = plt.subplot(2, 3, 3) + ax3: plt.Axes = axes[0, 2] X_steer = np.fft.fft(U[:, 1]) / len(U[:, 1]) # Fourier transform of waveforms freqs = np.fft.fftfreq(len(U[:, 1])) * f_s ax3.stem( freqs, np.abs(X_steer), - use_line_collection=True, basefmt="k-", markerfmt="cx", label="steer input", @@ -1012,27 +984,55 @@ def slalom_drive( ax3.set_xlabel("freq") ax3.set_ylabel("amplitude") - ax5 = plt.subplot(2, 3, 5) + if control_type in [ + ControlType.pp_eight, + ControlType.pp_straight, + ControlType.npp_eight, + ]: + ax4: plt.Axes = axes[1, 0] + ax4.plot( + np.array(target_vel_list)[:, 0], + np.array(target_vel_list)[:, 1], + label="vel target", + ) + ax4.plot(time_normalize_1 * np.arange(X.shape[0]), X[:, 2], label="vel") + ax4.legend() + + ax5: plt.Axes = axes[1, 1] ax5.plot(time_normalize_1 * np.arange(U.shape[0]), U[:, 0], label="acc input") ax5.legend() - ax6 = plt.subplot(2, 3, 6) + ax6: plt.Axes = axes[1, 2] ax6.plot(time_normalize_1 * np.arange(U.shape[0]), U[:, 1], label="steer input") ax6.legend() + kinematic_states = KinematicStates( + speed=X[:, 2], + acc=X[:, 4], + steer=X[:, 5], + ) + + ax7: plt.Axes = axes[2, 0] + fig, ax7 = visualize_speed_acc(fig=fig, ax=ax7, kinematic_states=kinematic_states) + ax7.plot() + + ax8: plt.Axes = axes[2, 1] + fig, ax8 = visualize_speed_steer(fig=fig, ax=ax8, kinematic_states=kinematic_states) + ax8.plot() + + ax9: plt.Axes = axes[2, 2] + ax9.axis("off") + if save_file: png_save_dir = save_dir_ else: png_save_dir = "." - if control_type == "ff": - plt.savefig(png_save_dir + "/python_simulator_feedforward_drive.png") - elif control_type == "pp": - plt.savefig(png_save_dir + "/python_simulator_pure_pursuit_drive.png") + plt.savefig(f"{png_save_dir}/python_simulator_{control_type.value}_drive.png") plt.close() if ( visualize - and (control_type == "mpc") + and (control_type == ControlType.mpc) and (i % 1000 * ctrl_freq == 999 * ctrl_freq or i == t_eval.size - 1 or break_flag) ): fig = plt.figure(figsize=(24, 15), tight_layout=True) @@ -1049,7 +1049,7 @@ def slalom_drive( ) fig.suptitle(title_str) - plt.subplot(331) + plt.subplot(3, 3, 1) ax1 = plt.subplot(3, 3, 1) X = np.array(log_updater.X_history) @@ -1064,7 +1064,7 @@ def slalom_drive( c="orange", label="reference_trajectory", ) - ax1.plot(X[:, 0], X[:, 1], label="trajectory") + ax1.plot(X[:, 0], X[:, 1], label="trajectory", color="tab:blue") if mode != "mppi": ax1.scatter( controller.nominal_traj_ilqr[:, 0], @@ -1112,51 +1112,15 @@ def slalom_drive( lateral_deviation, label="lateral_deviation", ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - np.zeros(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - 0.05 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - -0.05 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - 0.1 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - -0.1 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - 0.15 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - -0.15 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - 0.2 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) - ax2.plot( - time_normalize_1 * np.arange(tracking_error_array.shape[0]), - -0.2 * np.ones(tracking_error_array.shape[0]), - linestyle="dashed", - ) + + ax2_coef = [0.00, 0.05, -0.05, 0.10, -0.10, 0.15, -0.15, 0.20, -0.20] + for coe in ax2_coef: + ax2.plot( + time_normalize_1 * np.arange(tracking_error_array.shape[0]), + coe * np.ones(tracking_error_array.shape[0]), + linestyle="dashed", + ) + ax2.set_xlabel("Time [s]") ax2.set_ylabel("Lateral deviation [m]") ax2.legend() @@ -1177,14 +1141,23 @@ def slalom_drive( ) ax3 = plt.subplot(3, 3, 4) - ax3.plot(time_normalize_1 * np.arange(X.shape[0]), X[:, 2], label="velocity") ax3.plot( - time_normalize_1 * np.arange(X.shape[0]), X_des_hist[:, 2], label="velocity_target" + time_normalize_1 * np.arange(X.shape[0]), + X[:, 2], + label="velocity", + color="tab:blue", + ) + ax3.plot( + time_normalize_1 * np.arange(X.shape[0]), + X_des_hist[:, 2], + label="velocity_target", + color="orange", ) ax3.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), -tracking_error_array[:, 2], label="velocity_error", + color="lightgrey", ) if mode != "mppi": ax3.scatter( @@ -1193,6 +1166,7 @@ def slalom_drive( true_prediction[:, 2], s=4, label="velocity_true_prediction", + c="green", ) ax3.scatter( time_normalize_1 * (X.shape[0] - 1) @@ -1200,11 +1174,13 @@ def slalom_drive( controller.nominal_traj_ilqr[:, 2], s=4, label="velocity_prediction_ilqr", + c="red", ) ax3.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), np.zeros(tracking_error_array.shape[0]), linestyle="dashed", + color="darkred", ) ax3.set_xlabel("Time [s]") ax3.set_ylabel("velocity [m/s]") @@ -1222,12 +1198,20 @@ def slalom_drive( ) ax4 = plt.subplot(3, 3, 5) - ax4.plot(time_normalize_1 * np.arange(X.shape[0]), X[:, 3], label="yaw") - ax4.plot(time_normalize_1 * np.arange(X.shape[0]), X_des_hist[:, 3], label="yaw_target") + ax4.plot( + time_normalize_1 * np.arange(X.shape[0]), X[:, 3], label="yaw", color="tab:blue" + ) + ax4.plot( + time_normalize_1 * np.arange(X.shape[0]), + X_des_hist[:, 3], + label="yaw_target", + color="orange", + ) ax4.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), -tracking_error_array[:, 3], label="yaw_error", + color="lightgrey", ) if mode != "mppi": ax4.scatter( @@ -1236,6 +1220,7 @@ def slalom_drive( true_prediction[:, 3], s=4, label="yaw_true_prediction", + c="green", ) ax4.scatter( time_normalize_1 * (X.shape[0] - 1) @@ -1243,11 +1228,13 @@ def slalom_drive( controller.nominal_traj_ilqr[:, 3], s=4, label="yaw_prediction_ilqr", + c="red", ) ax4.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), np.zeros(tracking_error_array.shape[0]), linestyle="dashed", + c="darkred", ) ax4.set_xlabel("Time [s]") ax4.set_ylabel("yaw [rad]") @@ -1265,13 +1252,23 @@ def slalom_drive( ) ax5 = plt.subplot(3, 3, 7) - ax5.plot(time_normalize_1 * np.arange(X.shape[0]), X[:, 4], label="acc") - ax5.plot(time_normalize_1 * np.arange(X.shape[0]), U[:, 0], label="acc_input") - ax5.plot(time_normalize_1 * np.arange(X.shape[0]), X_des_hist[:, 4], label="acc_target") + ax5.plot( + time_normalize_1 * np.arange(X.shape[0]), X[:, 4], label="acc", color="tab:blue" + ) + ax5.plot( + time_normalize_1 * np.arange(X.shape[0]), U[:, 0], label="acc_input", color="violet" + ) + ax5.plot( + time_normalize_1 * np.arange(X.shape[0]), + X_des_hist[:, 4], + label="acc_target", + color="orange", + ) ax5.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), -tracking_error_array[:, 4], label="acc_error", + color="lightgrey", ) if mode != "mppi": ax5.scatter( @@ -1280,6 +1277,7 @@ def slalom_drive( true_prediction[:, 4], s=4, label="acc_true_prediction", + c="green", ) ax5.scatter( time_normalize_1 * (X.shape[0] - 1) @@ -1287,6 +1285,7 @@ def slalom_drive( controller.nominal_traj_ilqr[:, 4], s=4, label="acc_prediction_ilqr", + c="red", ) ax5.scatter( time_normalize_1 * (X.shape[0] - 1) @@ -1294,11 +1293,13 @@ def slalom_drive( nominal_inputs[:, 0], s=4, label="acc_input_schedule", + c="plum", ) ax5.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), np.zeros(tracking_error_array.shape[0]), linestyle="dashed", + color="darkred", ) ax5.set_xlabel("Time [s]") ax5.set_ylabel("acc [m/s^2]") @@ -1316,15 +1317,26 @@ def slalom_drive( ) ax6 = plt.subplot(3, 3, 8) - ax6.plot(time_normalize_1 * np.arange(X.shape[0]), X[:, 5], label="steer") - ax6.plot(time_normalize_1 * np.arange(X.shape[0]), U[:, 1], label="steer_input") ax6.plot( - time_normalize_1 * np.arange(X.shape[0]), X_des_hist[:, 7], label="steer_mpc_target" + time_normalize_1 * np.arange(X.shape[0]), X[:, 5], label="steer", color="tab:blue" + ) + ax6.plot( + time_normalize_1 * np.arange(X.shape[0]), + U[:, 1], + label="steer_input", + color="violet", + ) + ax6.plot( + time_normalize_1 * np.arange(X.shape[0]), + X_des_hist[:, 7], + label="steer_mpc_target", + color="orange", ) ax6.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), -tracking_error_array[:, 5], label="steer_error", + color="lightgrey", ) if mode != "mppi": ax6.scatter( @@ -1333,6 +1345,7 @@ def slalom_drive( true_prediction[:, 5], s=4, label="steer_true_prediction", + c="green", ) ax6.scatter( time_normalize_1 * (X.shape[0] - 1) @@ -1340,6 +1353,7 @@ def slalom_drive( controller.nominal_traj_ilqr[:, 5], s=4, label="steer_prediction_ilqr", + c="red", ) ax6.scatter( time_normalize_1 * (X.shape[0] - 1) @@ -1347,11 +1361,13 @@ def slalom_drive( nominal_inputs[:, 1], s=4, label="steer_input_schedule", + c="plum", ) ax6.plot( time_normalize_1 * np.arange(tracking_error_array.shape[0]), np.zeros(tracking_error_array.shape[0]), linestyle="dashed", + color="darkred", ) ax6.set_xlabel("Time [s]") ax6.set_ylabel("steer [rad]") @@ -1377,7 +1393,6 @@ def slalom_drive( ax7.stem( freqs, np.abs(X_steer) / len(steer_state), - use_line_collection=True, basefmt="k-", markerfmt="rx", label="steer_state", @@ -1397,7 +1412,6 @@ def slalom_drive( ax7.stem( freqs, np.abs(X_lateral_acc) / len(lateral_acc), - use_line_collection=True, basefmt="k-", markerfmt="gx", label="lateral_acc", @@ -1408,7 +1422,6 @@ def slalom_drive( ax7.stem( freqs, np.abs(X_lateral_jerk) / len(lateral_jerk), - use_line_collection=True, basefmt="k-", markerfmt="bx", label="lateral_jerk", @@ -1467,13 +1480,14 @@ def slalom_drive( x_current = x_next.copy() prev_u_actual_input = u_actual_input.copy() if break_flag: - controller.send_initialize_input_queue() - controller.stop_model_update() + if control_type == ControlType.mpc: + controller.send_initialize_input_queue() + controller.stop_model_update() break if save_file: log_updater.save(save_dir_) - if control_type == "mpc" and perturbed_sim_flag: + if control_type == ControlType.mpc and perturbed_sim_flag: auto_test_performance_result_dict = { "total_abs_max_lateral_deviation": total_abs_max_lateral_deviation, "straight_line_abs_max_lateral_deviation": straight_line_abs_max_lateral_deviation, @@ -1505,89 +1519,3 @@ def slalom_drive( print("how_many_time_controlled", calculated) return auto_test_performance_result_list - - -def create_straight_line_test_csv( - jerk=0.3, starting_vel=5.0, interval_1=2.0, interval_2=3.0, interval_3=10.0 -): - """Generate data for a straight line driving test.""" - t_1 = 10.0 - t_2 = t_1 + interval_1 # Increasing acceleration. - t_3 = t_2 + interval_2 # Constant acceleration - t_4 = t_3 + interval_1 # Decreasing acceleration. - t_5 = t_4 + interval_3 # acceleration = 0 - t_6 = t_5 + interval_1 # Decreasing acceleration. - t_7 = t_6 + interval_2 # Constant acceleration - t_8 = t_7 + interval_1 # Decreasing acceleration. - vel_t1 = starting_vel - x_t1 = starting_vel * t_1 - vel_t2 = vel_t1 + 0.5 * jerk * interval_1 * interval_1 - x_t2 = x_t1 + vel_t1 * interval_1 + 0.5 * jerk * interval_1 * interval_1 * interval_1 / 3 - vel_t3 = vel_t2 + jerk * interval_1 * interval_2 - x_t3 = x_t2 + vel_t2 * interval_2 + 0.5 * jerk * interval_1 * interval_2 * interval_2 - vel_t4 = vel_t3 + 0.5 * jerk * interval_1 * interval_1 - x_t4 = x_t3 + vel_t4 * interval_1 - 0.5 * jerk * interval_1 * interval_1 * interval_1 / 3 - vel_t5 = vel_t4 - x_t5 = x_t4 + vel_t4 * interval_3 - vel_t6 = vel_t5 - 0.5 * jerk * interval_1 * interval_1 - x_t6 = x_t5 + vel_t5 * interval_1 - 0.5 * jerk * interval_1 * interval_1 * interval_1 / 3 - vel_t7 = vel_t6 - jerk * interval_1 * interval_2 - x_t7 = x_t6 + vel_t6 * interval_2 - 0.5 * jerk * interval_1 * interval_2 * interval_2 - vel_t8 = vel_t7 - 0.5 * jerk * interval_1 * interval_1 - x_t8 = x_t7 + vel_t8 * interval_1 + 0.5 * jerk * interval_1 * interval_1 * interval_1 / 3 - - def calc_longitudinal_state(t): - if t < t_1: - return starting_vel * t, starting_vel, 0.0 - elif t < t_2: - return ( - x_t1 + vel_t1 * (t - t_1) + 0.5 * jerk * (t - t_1) * (t - t_1) * (t - t_1) / 3, - vel_t1 + 0.5 * jerk * (t - t_1) * (t - t_1), - jerk * (t - t_1), - ) - elif t < t_3: - return ( - x_t2 + vel_t2 * (t - t_2) + 0.5 * jerk * (t_2 - t_1) * (t - t_2) * (t - t_2), - vel_t2 + jerk * (t_2 - t_1) * (t - t_2), - jerk * (t_2 - t_1), - ) - elif t < t_4: - return ( - x_t4 - vel_t4 * (t_4 - t) + 0.5 * jerk * (t_4 - t) * (t_4 - t) * (t_4 - t) / 3, - vel_t4 - 0.5 * jerk * (t_4 - t) * (t_4 - t), - jerk * (t_4 - t), - ) - elif t < t_5: - return x_t4 + vel_t4 * (t - t_4), vel_t4, 0.0 - elif t < t_6: - return ( - x_t5 + vel_t5 * (t - t_5) - 0.5 * jerk * (t - t_5) * (t - t_5) * (t - t_5) / 3, - vel_t5 - 0.5 * jerk * (t - t_5) * (t - t_5), - -jerk * (t - t_5), - ) - elif t < t_7: - return ( - x_t6 + vel_t6 * (t - t_6) - 0.5 * jerk * (t_6 - t_5) * (t - t_6) * (t - t_6), - vel_t6 - jerk * (t_6 - t_5) * (t - t_6), - -jerk * (t_6 - t_5), - ) - elif t < t_8: - return ( - x_t8 - vel_t8 * (t_8 - t) - 0.5 * jerk * (t_8 - t) * (t_8 - t) * (t_8 - t) / 3, - vel_t8 + 0.5 * jerk * (t_8 - t) * (t_8 - t), - -jerk * (t_8 - t), - ) - else: - return x_t8 + vel_t8 * (t - t_8), vel_t8, 0.0 - - t_range = [0, 100] - time_stamps = np.arange(*t_range, 0.001) - trajectory_data = np.zeros((time_stamps.shape[0], 9)) - trajectory_data[:, 0] = time_stamps - for i in range(time_stamps.shape[0]): - ( - trajectory_data[i, 1], - trajectory_data[i, 3], - trajectory_data[i, 5], - ) = calc_longitudinal_state(time_stamps[i]) - np.savetxt("straight_line.csv", trajectory_data, delimiter=",") diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_auto_test.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_auto_test.py new file mode 100644 index 0000000000000..86ed6470dc14d --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_auto_test.py @@ -0,0 +1,33 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import subprocess + +if __name__ == "__main__": + params = [ + "steer_bias", + "steer_dead_band", + "wheel_base", + "acc_time_delay", + "steer_time_delay", + "acc_time_constant", + "steer_time_constant", + "accel_map_scale", + "acc_scaling", + "steer_scaling", + "vehicle_type", + ] + for param in params: + str_run = "python3 run_sim.py " + f" --param_name {param}" + " --root auto_test" + subprocess.run(str_run, shell=True) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_figure_eight_param_search.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_figure_eight_param_search.py new file mode 100644 index 0000000000000..9e1ee6f53e16f --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_figure_eight_param_search.py @@ -0,0 +1,63 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import subprocess + +import numpy as np + + +def print_progress(msg: str): + print("______________________________") + print("start running:", msg) + print("______________________________") + + +SEED = 44 +if __name__ == "__main__": + for k in range(100): + np.random.seed(seed=k + SEED) + acc_amp_range = np.random.uniform(0.005, 0.1) + acc_period_min = np.random.uniform(2.0, 10.0) + acc_period_max = acc_period_min + np.random.uniform(5.0, 30.0) + steer_amp_range = np.random.uniform(0.005, 0.1) + steer_period_min = np.random.uniform(2.0, 10.0) + steer_period_max = steer_period_min + np.random.uniform(5.0, 30.0) + step_response_max_input = np.random.uniform(0.001, 0.1) + step_response_min_length = np.random.uniform(0.02, 1.0) + step_response_max_length = step_response_min_length + np.random.uniform(0.03, 2.0) + step_response_interval = step_response_max_length + np.random.uniform(1.0, 20.0) + constant_vel_time = np.random.uniform(0.5, 20.0) + + dir_name = "test_param_search_" + str(k) + "_test_vehicle" + + for memory in range(2): + use_memory_diff_flag = " " + ("--use_memory_diff" if memory == 1 else "") + str_run = ( + "python3 test_figure_eight_param.py " + + f" --acc_amp_range {acc_amp_range}" + + f" --acc_period_min {acc_period_min}" + + f" --acc_period_max {acc_period_max}" + + f" --steer_amp_range {steer_amp_range}" + + f" --steer_period_min {steer_period_min}" + + f" --steer_period_max {steer_period_max}" + + f" --step_response_max_input {step_response_max_input}" + + f" --step_response_min_length {step_response_min_length}" + + f" --step_response_max_length {step_response_max_length}" + + f" --step_response_interval {step_response_interval}" + + f" --constant_vel_time {constant_vel_time}" + + f" --dir_name {dir_name}" + + use_memory_diff_flag + ) + print_progress(str_run) + subprocess.run(str_run, shell=True) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_python_simulator.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_python_simulator.py index 68d8a9f64e73f..739d8ea70a656 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_python_simulator.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_python_simulator.py @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +import sys + +from assets import ControlType from autoware_smart_mpc_trajectory_follower.training_and_data_check import train_drive_NN_model import numpy as np import python_simulator @@ -20,17 +23,40 @@ [0.001, 0.03, 0.01, -0.001, 0, 2 * python_simulator.measurement_steer_bias] ) -save_dir = "test_python_sim" -python_simulator.slalom_drive(save_dir=save_dir, initial_error=initial_error) -model_trainer = train_drive_NN_model.train_drive_NN_model() -model_trainer.add_data_from_csv(save_dir) -model_trainer.save_train_data(save_dir) -model_trainer.get_trained_model() -model_trainer.save_models(save_dir=save_dir) +if len(sys.argv) > 1: + if sys.argv[1] == "nominal_test": + save_dir = "test_python_nominal_sim" + python_simulator.drive_sim(save_dir=save_dir, initial_error=initial_error) + else: + print("Invalid argument") + sys.exit(1) +else: + train_dir = "test_python_pure_pursuit_train" + val_dir = "test_python_pure_pursuit_val" -save_dir = "test_python_trained_sim" -load_dir = "test_python_sim" -python_simulator.slalom_drive( - save_dir=save_dir, load_dir=load_dir, use_trained_model=True, initial_error=initial_error -) + python_simulator.drive_sim( + seed=0, + t_range=[0, 900.0], + control_type=ControlType.pp_eight, + save_dir=train_dir, + initial_error=initial_error, + ) + python_simulator.drive_sim( + seed=1, + t_range=[0, 900.0], + control_type=ControlType.pp_eight, + save_dir=val_dir, + initial_error=initial_error, + ) + + model_trainer = train_drive_NN_model.train_drive_NN_model() + model_trainer.add_data_from_csv(train_dir, add_mode="as_train") + model_trainer.add_data_from_csv(val_dir, add_mode="as_val") + model_trainer.get_trained_model(use_polynomial_reg=True) + model_trainer.save_models(save_dir=train_dir) + + save_dir = "test_python_trained_sim" + python_simulator.drive_sim( + save_dir=save_dir, load_dir=train_dir, use_trained_model=True, initial_error=initial_error + ) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_sim.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_sim.py index d2bb4ea26f0a6..f6e7337997edf 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_sim.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/run_sim.py @@ -11,11 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -# cspell: ignore oneline - import argparse -from enum import Enum +import datetime from importlib import reload as ir import json import os @@ -23,19 +20,17 @@ import traceback from typing import Dict +from assets import ChangeParam # type: ignore +from assets import ControlType +from assets import DataCollectionMode +from assets import DirGenerator from autoware_smart_mpc_trajectory_follower.training_and_data_check import train_drive_NN_model import numpy as np -import python_simulator - -parser = argparse.ArgumentParser() -parser.add_argument("--param_name", default=None) -args = parser.parse_args() - -P1 = 0.8 -P2 = 1.2 +import python_simulator # type: ignore USE_TRAINED_MODEL_DIFF = True -DATA_COLLECTION_MODE = "pp" # option: "pp": pure_pursuit, "ff": feed_forward, "mpc": smart_mpc +DATA_COLLECTION_MODE = DataCollectionMode.pp +CONTROL_TYPE_TO_SKIP = [ControlType.pp_straight] USE_POLYNOMIAL_REGRESSION = True USE_SELECTED_POLYNOMIAL = True FORCE_NN_MODEL_TO_ZERO = False @@ -45,93 +40,30 @@ USE_INTERCEPT = False # Should be True if FORCE_NN_MODEL_TO_ZERO is True -class ChangeParam(Enum): - """Parameters to be changed when running the simulation.""" - - steer_bias = [ - -1.0 * np.pi / 180.0, - -0.8 * np.pi / 180.0, - -0.6 * np.pi / 180.0, - -0.4 * np.pi / 180.0, - -0.2 * np.pi / 180.0, - 0.0, - 0.2 * np.pi / 180.0, - 0.4 * np.pi / 180.0, - 0.6 * np.pi / 180.0, - 0.8 * np.pi / 180.0, - 1.0 * np.pi / 180.0, - ] - """steer midpoint (soft + hard)""" - - steer_rate_lim = [0.020, 0.050, 0.100, 0.150, 0.200, 0.300, 0.400, 0.500] - """Maximum steer angular velocity""" - - vel_rate_lim = [0.5, 1.0, 3.0, 5.0, 7.0, 9.0] - """Maximum acceleration/deceleration""" - - wheel_base = [0.5, 1.0, 1.5, 2.0, 3.0, 5.0, 7.0] - """wheel base""" - - steer_dead_band = [0.0000, 0.0012, 0.0025, 0.0050, 0.01] - """steer dead band""" - - adaptive_gear_ratio_coef = [ - [15.713, 0.053, 0.042, 15.713, 0.053, 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, 0.053, 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, 0.053, 0.042], - [15.713, 0.053, 0.042, 15.713, P1 * 0.053, 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, P1 * 0.053, 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, P1 * 0.053, 0.042], - [15.713, 0.053, 0.042, 15.713, P2 * 0.053, 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, P2 * 0.053, 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, P2 * 0.053, 0.042], - [15.713, 0.053, 0.042, 15.713, 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, 15.713, P1 * 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, P1 * 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, P1 * 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, 15.713, P2 * 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, P2 * 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, P2 * 0.053, P1 * 0.042], - [15.713, 0.053, 0.042, 15.713, 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, 15.713, P1 * 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, P1 * 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, P1 * 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, 15.713, P2 * 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, P1 * 15.713, P2 * 0.053, P2 * 0.042], - [15.713, 0.053, 0.042, P2 * 15.713, P2 * 0.053, P2 * 0.042], - ] - """velocity-dependent gear ratio""" - - acc_time_delay = [0.00, 0.1, 0.27, 0.40, 0.60, 0.80, 1.01] - """acc time delay""" - - steer_time_delay = [0.00, 0.1, 0.27, 0.40, 0.60, 0.80, 1.02] - """steer time delay""" - - acc_time_constant = [0.01, 0.1, 0.20, 0.24, 0.40, 0.60, 0.80, 1.01] - """time constant""" - - steer_time_constant = [0.01, 0.1, 0.20, 0.24, 0.40, 0.60, 0.80, 1.02] - """time constant""" - - accel_map_scale = [0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0] - """pedal - real acceleration correspondence""" - - acc_scaling = [0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.01] - """Acceleration scaling coefficient""" - - steer_scaling = [0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.02] - """Steer scaling coefficient""" - - vehicle_type = [1, 2, 3, 4] - """change to other vehicle parameters""" - - -def run_simulator(change_param: ChangeParam): +def run_simulator( + change_param: ChangeParam, + root: str = ".", + batch_size=5, + patience_1=10, + patience_2=10, + acc_amp_range=0.05, + acc_period_range=[5.0, 20.0], + hidden_layer_sizes=(16, 16), + hidden_layer_lstm=8, + steer_amp_range=0.05, + steer_period_range=[5.0, 30.0], + acc_max=1.2, + constant_vel_time=5.0, + split_size=5, + step_response_max_input=0.01, + step_response_max_length=1.5, + step_response_start_time_ratio=0.0, + step_response_interval=5.0, + step_response_min_length=0.5, + use_memory_diff=True, # False, + skip_data_collection=False, + smoothing_trajectory_data_flag=True, +): """Run the simulator.""" # initialize parameters print("reset sim_setting_json") @@ -142,6 +74,8 @@ def run_simulator(change_param: ChangeParam): param_val_list = change_param.value start_time = time.time() + dir_generator = DirGenerator(root=root) + for j in range(len(param_val_list)): i = j + 0 with open("sim_setting.json", "r") as f: @@ -151,28 +85,18 @@ def run_simulator(change_param: ChangeParam): with open("sim_setting.json", "w") as f: json.dump(data, f) ir(python_simulator) + training_data_dirs = [] + val_data_dirs = [] try: initial_error = np.array( - [0.001, 0.03, 0.01, -0.001, 0, 2 * python_simulator.measurement_steer_bias] + [0.001, 0.03, 0.01, 0.0, 0, python_simulator.measurement_steer_bias] ) - if DATA_COLLECTION_MODE in ["ff", "pp"]: - if DATA_COLLECTION_MODE == "ff": - save_dir = "test_feedforward_sim" + change_param.name + str(i) - else: - save_dir = "test_pure_pursuit_sim" + change_param.name + str(i) - python_simulator.slalom_drive( - save_dir=save_dir, - control_type=DATA_COLLECTION_MODE, - t_range=[0, 200.0], - acc_width_range=0.005, - acc_period_range=[5.0, 20.0], - steer_width_range=0.005, - steer_period_range=[5.0, 20.0], - large_steer_width_range=0.05, - large_steer_period_range=[10.0, 20.0], - start_large_steer_time=150.0, - ) + if DATA_COLLECTION_MODE in [ + DataCollectionMode.ff, + DataCollectionMode.pp, + DataCollectionMode.npp, + ]: if FORCE_NN_MODEL_TO_ZERO: model_trainer = train_drive_NN_model.train_drive_NN_model() else: @@ -181,51 +105,108 @@ def run_simulator(change_param: ChangeParam): alpha_2_for_polynomial_regression=0.1**5, ) - model_trainer.add_data_from_csv(save_dir) - start_time_learning = time.time() - model_trainer.get_trained_model( - use_polynomial_reg=USE_POLYNOMIAL_REGRESSION, - use_selected_polynomial=USE_SELECTED_POLYNOMIAL, - force_NN_model_to_zero=FORCE_NN_MODEL_TO_ZERO, - fit_intercept=FIT_INTERCEPT, - use_intercept=USE_INTERCEPT, - ) - learning_computation_time = time.time() - start_time_learning - model_trainer.plot_trained_result(save_dir=save_dir) - model_trainer.save_models(save_dir=save_dir) + for control_type in DATA_COLLECTION_MODE.toControlTypes(): + if control_type in CONTROL_TYPE_TO_SKIP: + continue + add_mode = ["as_val", "as_train"] + y_length = 60.0 + x_length = 120.0 + initial_error_diff = np.zeros(6) + if control_type == ControlType.pp_eight: + initial_error_diff[0] = -(x_length - y_length) / 4.0 + initial_error_diff[1] = -y_length / 4.0 + else: + initial_error_diff[1] = -0.05 + for k in range(2): + save_dir = dir_generator.test_dir_name( + control_type=control_type, + change_param=change_param, + index=i, + validation_flag=(1 - k), + ) + if not skip_data_collection: + python_simulator.drive_sim( + save_dir=save_dir, + control_type=control_type, + seed=k + 1, + t_range=[0, 900.0], + acc_amp_range=acc_amp_range, + acc_period_range=acc_period_range, + steer_amp_range=steer_amp_range, + steer_period_range=steer_period_range, + large_steer_amp_range=0.0, + large_steer_period_range=[10.0, 20.0], + start_large_steer_time=150.0, + acc_max=acc_max, + constant_vel_time=constant_vel_time, + split_size=split_size, + y_length=(0.9 ** (1 - k)) * y_length, + x_length=(0.9 ** (1 - k)) * x_length, + step_response_max_input=step_response_max_input, + step_response_max_length=step_response_max_length, + step_response_start_time_ratio=step_response_start_time_ratio, + step_response_interval=step_response_interval, + step_response_min_length=step_response_min_length, + initial_error=initial_error + (1 - k) * initial_error_diff, + smoothing_trajectory_data_flag=smoothing_trajectory_data_flag, + ) + model_trainer.add_data_from_csv(save_dir, add_mode=add_mode[k]) + if k == 0: + val_data_dirs.append(save_dir) + else: + training_data_dirs.append(save_dir) + + if not skip_data_collection: + start_time_learning = time.time() + model_trainer.get_trained_model( + use_polynomial_reg=USE_POLYNOMIAL_REGRESSION, + use_selected_polynomial=USE_SELECTED_POLYNOMIAL, + force_NN_model_to_zero=FORCE_NN_MODEL_TO_ZERO, + fit_intercept=FIT_INTERCEPT, + use_intercept=USE_INTERCEPT, + hidden_layer_sizes=hidden_layer_sizes, + hidden_layer_lstm=hidden_layer_lstm, + batch_size=batch_size, + patience=patience_1, + ) + learning_computation_time = time.time() - start_time_learning + model_trainer.plot_trained_result(save_dir=save_dir) + model_trainer.save_models(save_dir=save_dir) + print("learning_computation_time:", learning_computation_time) + f = open( + save_dir + + f"/computational_time_learning_from_{DATA_COLLECTION_MODE}_data.txt", + "w", + ) + f.write(str(learning_computation_time)) + f.close() load_dir = save_dir - if DATA_COLLECTION_MODE == "ff": - save_dir = "test_python_ff_aided_sim_" + change_param.name + str(i) - elif DATA_COLLECTION_MODE == "pp": - save_dir = "test_python_pp_aided_sim_" + change_param.name + str(i) - auto_test_performance_result_list = python_simulator.slalom_drive( + save_dir = dir_generator.test_dir_name( + data_collection_mode=DATA_COLLECTION_MODE, + change_param=change_param, + index=i, + use_memory_diff=use_memory_diff, + ) + auto_test_performance_result_list = python_simulator.drive_sim( load_dir=load_dir, save_dir=save_dir, use_trained_model=True, use_trained_model_diff=USE_TRAINED_MODEL_DIFF, initial_error=initial_error, + use_memory_diff=use_memory_diff, ) + training_data_dirs.append(save_dir) - print("learning_computation_time:", learning_computation_time) - if DATA_COLLECTION_MODE == "ff": - f = open(save_dir + "/computational_time_learning_from_ff_data.txt", "w") - f.write(str(learning_computation_time)) - f.close() - f = open( - "auto_test_result_intermediate_model_control_trained_with_data_collected_by_ff_control.csv", - mode="a", - ) - elif DATA_COLLECTION_MODE == "pp": - f = open(save_dir + "/computational_time_learning_from_pp_data.txt", "w") - f.write(str(learning_computation_time)) - f.close() - f = open( - "auto_test_result_intermediate_model_control_trained_with_data_collected_by_pp_control.csv", - mode="a", - ) + f = open( + f"auto_test_result_intermediate_model_control_trained_with_data_collected_by_{control_type}_control.csv", + mode="a", + ) else: - save_dir = "test_python_sim_" + change_param.name + str(i) - auto_test_performance_result_list = python_simulator.slalom_drive( + save_dir = dir_generator.test_dir_name( + change_param=change_param, + index=i, + ) + auto_test_performance_result_list = python_simulator.drive_sim( save_dir=save_dir, initial_error=initial_error, ) @@ -236,7 +217,7 @@ def run_simulator(change_param: ChangeParam): str(param_val_list[j]).replace(",", "_"), *auto_test_performance_result_list, sep=",", - file=f + file=f, ) f.close() @@ -246,10 +227,16 @@ def run_simulator(change_param: ChangeParam): if not skip_learning_for_developing_testcase: ir(train_drive_NN_model) model_trainer = train_drive_NN_model.train_drive_NN_model() - learning_computation_time = None - if DATA_COLLECTION_MODE in ["ff", "pp"]: - model_trainer.add_data_from_csv(load_dir) - model_trainer.add_data_from_csv(save_dir) + learning_computation_time = None # type: ignore + if DATA_COLLECTION_MODE in [ + DataCollectionMode.ff, + DataCollectionMode.pp, + DataCollectionMode.npp, + ]: + for dir_name in val_data_dirs: + model_trainer.add_data_from_csv(dir_name, add_mode="as_val") + for dir_name in training_data_dirs: + model_trainer.add_data_from_csv(dir_name, add_mode="as_train") start_time_learning = time.time() model_trainer.update_saved_trained_model( path=load_dir + "/model_for_test_drive.pth", @@ -258,16 +245,25 @@ def run_simulator(change_param: ChangeParam): force_NN_model_to_zero=FORCE_NN_MODEL_TO_ZERO, fit_intercept=FIT_INTERCEPT, use_intercept=USE_INTERCEPT, + batch_size=batch_size, + patience=patience_2, ) learning_computation_time = time.time() - start_time_learning model_trainer.plot_trained_result(save_dir=save_dir) model_trainer.save_models(save_dir=save_dir) - if DATA_COLLECTION_MODE == "ff": - load_dir = "test_python_ff_aided_sim_" + change_param.name + str(i) - save_dir = "test_python_ff_aided_sim_trained_" + change_param.name + str(i) - elif DATA_COLLECTION_MODE == "pp": - load_dir = "test_python_pp_aided_sim_" + change_param.name + str(i) - save_dir = "test_python_pp_aided_sim_trained_" + change_param.name + str(i) + load_dir = dir_generator.test_dir_name( + data_collection_mode=DATA_COLLECTION_MODE, + change_param=change_param, + index=i, + use_memory_diff=use_memory_diff, + ) + save_dir = dir_generator.test_dir_name( + data_collection_mode=DATA_COLLECTION_MODE, + trained=True, + change_param=change_param, + index=i, + use_memory_diff=use_memory_diff, + ) else: model_trainer.add_data_from_csv(save_dir) start_time_learning = time.time() @@ -277,20 +273,35 @@ def run_simulator(change_param: ChangeParam): force_NN_model_to_zero=FORCE_NN_MODEL_TO_ZERO, fit_intercept=FIT_INTERCEPT, use_intercept=USE_INTERCEPT, + hidden_layer_sizes=hidden_layer_sizes, + hidden_layer_lstm=hidden_layer_lstm, + batch_size=batch_size, + patience=patience_1, ) learning_computation_time = time.time() - start_time_learning model_trainer.plot_trained_result(save_dir=save_dir) model_trainer.save_models(save_dir=save_dir) - load_dir = "test_python_sim_" + change_param.name + str(i) - save_dir = "test_python_sim_trained_" + change_param.name + str(i) - auto_test_performance_result_list = python_simulator.slalom_drive( + load_dir = dir_generator.test_dir_name( + change_param=change_param, + index=i, + use_memory_diff=use_memory_diff, + ) + save_dir = dir_generator.test_dir_name( + trained=True, + change_param=change_param, + index=i, + use_memory_diff=use_memory_diff, + ) + auto_test_performance_result_list = python_simulator.drive_sim( load_dir=load_dir, use_trained_model=True, use_trained_model_diff=USE_TRAINED_MODEL_DIFF, save_dir=save_dir, initial_error=initial_error, + use_memory_diff=use_memory_diff, ) + # cSpell:ignore oneline print("learning_computation_time: ", learning_computation_time) f = open(save_dir + "/test_info.txt", "w") f.write("commit id: " + str(os.popen("git log --oneline -1").read()) + "\n") @@ -307,55 +318,33 @@ def run_simulator(change_param: ChangeParam): f.write("USE_INTERCEPT: " + str(USE_INTERCEPT) + "\n") f.close() - if DATA_COLLECTION_MODE == "ff": - f = open( - "auto_test_result_final_model_control_trained_with_data_collected_by_ff_control.csv", - mode="a", - ) - elif DATA_COLLECTION_MODE == "pp": - f = open( - "auto_test_result_final_model_control_trained_with_data_collected_by_pp_control.csv", - mode="a", - ) - else: - f = open( - "auto_test_result_final_model_control_trained_with_data_collected_by_nominal_control.csv", - mode="a", - ) + f = open( + f"auto_test_result_final_model_control_trained_with_data_collected_by_{DATA_COLLECTION_MODE}_control.csv", + mode="a", + ) print( change_param.name, str(param_val_list[j]).replace(",", "_"), *auto_test_performance_result_list, sep=",", - file=f + file=f, ) f.close() print("experiment success") except Exception: print("# Catch Exception #") - print(traceback.print_exc()) + traceback.print_exc() auto_test_performance_result_list = [1e16] * 11 - if DATA_COLLECTION_MODE == "ff": - f = open( - "auto_test_result_final_model_control_trained_with_data_collected_by_ff_control.csv", - mode="a", - ) - elif DATA_COLLECTION_MODE == "pp": - f = open( - "auto_test_result_final_model_control_trained_with_data_collected_by_pp_control.csv", - mode="a", - ) - else: - f = open( - "auto_test_result_final_model_control_trained_with_data_collected_by_nominal_control.csv", - mode="a", - ) + f = open( + f"auto_test_result_final_model_control_trained_with_data_collected_by_{DATA_COLLECTION_MODE}_control.csv", + mode="a", + ) print( change_param.name, str(param_val_list[j]).replace(",", "_"), *auto_test_performance_result_list, sep=",", - file=f + file=f, ) f.close() print("experiment failure") @@ -373,20 +362,29 @@ def yes_no_input(): if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--param_name", default=None) + parser.add_argument("--root", default=".") + args = parser.parse_args() + + if args.root == "time": + args.root = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") + args.root = "test_run_sim_" + args.root + if args.param_name is None: print("Do you want to run the simulation for all parameters at once?") if yes_no_input(): for _, change_param in ChangeParam.__members__.items(): - run_simulator(change_param) + run_simulator(change_param, root=args.root) else: print("Enter the name of the parameter for which the simulation is to be run.") input_string = input() for name, change_param in ChangeParam.__members__.items(): if name == input_string: - run_simulator(change_param) + run_simulator(change_param, root=args.root) break else: for name, change_param in ChangeParam.__members__.items(): if name == args.param_name: - run_simulator(change_param) + run_simulator(change_param, root=args.root) break diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/test_figure_eight_param.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/test_figure_eight_param.py new file mode 100644 index 0000000000000..eaaeeaf8351b5 --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/python_simulator/test_figure_eight_param.py @@ -0,0 +1,112 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import argparse +import os + +from assets import ChangeParam # type: ignore +import numpy as np +import run_sim # type: ignore + +if __name__ == "__main__": + test_NN_size = [(16, 16), (8, 0)] + batch_size = 5 + + parser = argparse.ArgumentParser(description="Process some integers.") + parser.add_argument("--acc_amp_range", type=float) + parser.add_argument("--acc_period_min", type=float) + parser.add_argument("--acc_period_max", type=float) + parser.add_argument("--steer_amp_range", type=float) + parser.add_argument("--steer_period_min", type=float) + parser.add_argument("--steer_period_max", type=float) + parser.add_argument("--step_response_max_input", type=float) + parser.add_argument("--step_response_max_length", type=float) + parser.add_argument("--step_response_interval", type=float) + parser.add_argument("--step_response_min_length", type=float) + parser.add_argument("--constant_vel_time", type=float) + parser.add_argument("--use_memory_diff", action="store_true", help="Use memory diff.") + parser.add_argument("--dir_name", type=str, default="test_vehicles") + + args = parser.parse_args() + + acc_amp_range = args.acc_amp_range + acc_period_min = args.acc_period_min + acc_period_max = args.acc_period_max + steer_amp_range = args.steer_amp_range + steer_period_min = args.steer_period_min + steer_period_max = args.steer_period_max + step_response_max_input = args.step_response_max_input + step_response_max_length = args.step_response_max_length + step_response_interval = args.step_response_interval + step_response_min_length = args.step_response_min_length + constant_vel_time = args.constant_vel_time + use_memory_diff: bool = args.use_memory_diff + dir_name = args.dir_name + + if not os.path.isdir(dir_name): + os.mkdir(dir_name) + condition = np.array( + [ + acc_amp_range, + acc_period_min, + acc_period_max, + steer_amp_range, + steer_period_min, + steer_period_max, + step_response_max_input, + step_response_max_length, + step_response_interval, + step_response_min_length, + constant_vel_time, + ] + ) + print("condition: ", condition) + np.savetxt(dir_name + "/figure_eight_param.csv", condition, delimiter=",") + + if use_memory_diff: + run_sim.run_simulator( + change_param=ChangeParam.test_vehicle, + root=dir_name, + batch_size=batch_size, + hidden_layer_sizes=test_NN_size[0], + hidden_layer_lstm=test_NN_size[1][0], + acc_amp_range=acc_amp_range, + acc_period_range=[acc_period_min, acc_period_max], + steer_amp_range=steer_amp_range, + steer_period_range=[steer_period_min, steer_period_max], + step_response_max_input=step_response_max_input, + step_response_max_length=step_response_max_length, + step_response_interval=step_response_interval, + step_response_min_length=step_response_min_length, + constant_vel_time=constant_vel_time, + use_memory_diff=True, + skip_data_collection=True, + ) + else: + run_sim.run_simulator( + change_param=ChangeParam.test_vehicle, + root=dir_name, + batch_size=batch_size, + hidden_layer_sizes=test_NN_size[0], + hidden_layer_lstm=test_NN_size[1][0], + acc_amp_range=acc_amp_range, + acc_period_range=[acc_period_min, acc_period_max], + steer_amp_range=steer_amp_range, + steer_period_range=[steer_period_min, steer_period_max], + step_response_max_input=step_response_max_input, + step_response_max_length=step_response_max_length, + step_response_interval=step_response_interval, + step_response_min_length=step_response_min_length, + constant_vel_time=constant_vel_time, + use_memory_diff=False, + ) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_NN.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_NN.py index f13aa07b0f795..84a0486b1e074 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_NN.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_NN.py @@ -25,6 +25,37 @@ dim_acc_layer_1 = 16 dim_acc_layer_2 = 16 +loss_weights = torch.tensor( + [ + drive_functions.NN_x_weight, + drive_functions.NN_y_weight, + drive_functions.NN_yaw_weight, + drive_functions.NN_v_weight, + drive_functions.NN_acc_weight, + drive_functions.NN_steer_weight, + ] +) +loss_weights_diff = torch.tensor( + [ + drive_functions.NN_x_weight_diff, + drive_functions.NN_y_weight_diff, + drive_functions.NN_yaw_weight_diff, + drive_functions.NN_v_weight_diff, + drive_functions.NN_acc_weight_diff, + drive_functions.NN_steer_weight_diff, + ] +) +loss_weights_two_diff = torch.tensor( + [ + drive_functions.NN_x_weight_two_diff, + drive_functions.NN_y_weight_two_diff, + drive_functions.NN_yaw_weight_two_diff, + drive_functions.NN_v_weight_two_diff, + drive_functions.NN_acc_weight_two_diff, + drive_functions.NN_steer_weight_two_diff, + ] +) + def nominal_model_input(Var, lam, step): """Calculate prediction with nominal model that takes into account time constants for the first order and time delays related to the input.""" @@ -43,13 +74,41 @@ def nominal_model_input(Var, lam, step): def loss_fn_plus_tanh(loss_fn, pred, Y, tanh_gain, tanh_weight): """Compute the loss function to be used in the training.""" - loss = loss_fn(pred, Y) + loss = loss_fn(pred * loss_weights, Y * loss_weights) loss += tanh_weight * loss_fn( torch.tanh(tanh_gain * (pred[:, -1] - Y[:, -1])), torch.zeros(Y.shape[0]) ) return loss +def loss_fn_plus_tanh_with_memory( + loss_fn, pred, Y, tanh_gain, tanh_weight, first_order_weight, second_order_weight +): + """Compute the loss function to be used in the training.""" + loss = loss_fn(pred * loss_weights, Y * loss_weights) + loss += ( + first_order_weight + * loss_fn( + (pred[:, 1:] - pred[:, :-1]) * loss_weights_diff, + (Y[:, 1:] - Y[:, :-1]) * loss_weights_diff, + ) + / drive_functions.ctrl_time_step + ) + loss += ( + second_order_weight + * loss_fn( + (pred[:, 2:] + pred[:, :-2] - 2 * pred[:, 1:-1]) * loss_weights_two_diff, + (Y[:, 2:] + Y[:, :-2] - 2 * Y[:, 1:-1]) * loss_weights_two_diff, + ) + / (drive_functions.ctrl_time_step * drive_functions.ctrl_time_step) + ) + loss += tanh_weight * loss_fn( + torch.tanh(tanh_gain * (pred[:, :, -1] - Y[:, :, -1])), + torch.zeros((Y.shape[0], Y.shape[1])), + ) + return loss + + # example usage: `model = DriveNeuralNetwork(params...).to("cpu")` class DriveNeuralNetwork(nn.Module): """Define the neural net model to be used in vehicle control.""" @@ -80,8 +139,6 @@ def __init__( self.steer_input_index = np.concatenate( ([2], np.arange(steer_queue_size_core) + acc_queue_size + 3) ) - self.acc_input_index_ = np.arange(acc_queue_size) + 3 - self.steer_input_index_ = np.arange(steer_queue_size_core) + acc_queue_size + 3 self.steer_input_index_full = np.arange(steer_queue_size) + acc_queue_size + 3 self.acc_layer_1 = nn.Sequential( nn.Linear(self.acc_input_index.shape[0], dim_acc_layer_1), @@ -102,12 +159,12 @@ def __init__( nn.init.uniform_(self.steer_layer_1_tail[0].weight, a=lb, b=ub) nn.init.uniform_(self.steer_layer_1_tail[0].bias, a=lb, b=ub) - self.acc_layer_2 = nn.Sequential(nn.Linear(dim_acc_layer_1, dim_acc_layer_2), nn.Tanh()) + self.acc_layer_2 = nn.Sequential(nn.Linear(dim_acc_layer_1, dim_acc_layer_2), nn.ReLU()) nn.init.uniform_(self.acc_layer_2[0].weight, a=lb, b=ub) nn.init.uniform_(self.acc_layer_2[0].bias, a=lb, b=ub) self.steer_layer_2 = nn.Sequential( - nn.Linear(dim_steer_layer_1_head + dim_steer_layer_1_tail, dim_steer_layer_2), nn.Tanh() + nn.Linear(dim_steer_layer_1_head + dim_steer_layer_1_tail, dim_steer_layer_2), nn.ReLU() ) nn.init.uniform_(self.steer_layer_2[0].weight, a=lb, b=ub) nn.init.uniform_(self.steer_layer_2[0].bias, a=lb, b=ub) @@ -132,22 +189,148 @@ def __init__( self.steer_dropout = nn.Dropout(steer_drop_out) def forward(self, x): - acc_layer_1 = self.acc_layer_1(x[:, self.acc_input_index]) + acc_layer_1 = self.acc_layer_1(drive_functions.acc_normalize * x[:, self.acc_input_index]) steer_layer_1 = torch.cat( ( - self.steer_layer_1_head(x[:, self.steer_input_index]), - self.steer_layer_1_tail(x[:, self.steer_input_index_full]), + self.steer_layer_1_head( + drive_functions.steer_normalize * x[:, self.steer_input_index] + ), + self.steer_layer_1_tail( + drive_functions.steer_normalize * x[:, self.steer_input_index_full] + ), ), dim=1, ) acc_layer_2 = self.acc_layer_2(self.acc_dropout(acc_layer_1)) steer_layer_2 = self.steer_layer_2(self.steer_dropout(steer_layer_1)) - pre_pred = self.linear_relu_stack(torch.cat((x[:, [0]], acc_layer_2, steer_layer_2), dim=1)) + pre_pred = self.linear_relu_stack( + torch.cat( + (drive_functions.vel_normalize * x[:, [0]], acc_layer_2, steer_layer_2), dim=1 + ) + ) pred = self.finalize(torch.cat((pre_pred, acc_layer_2, steer_layer_2), dim=1)) return pred +class DriveNeuralNetworkWithMemory(nn.Module): + """Define the neural net model with memory to be used in vehicle control.""" + + def __init__( + self, + hidden_layer_sizes=(32, 16), + hidden_layer_lstm=64, + randomize=0.01, + acc_drop_out=0.0, + steer_drop_out=0.0, + acc_delay_step=drive_functions.acc_delay_step, + steer_delay_step=drive_functions.steer_delay_step, + acc_time_constant_ctrl=drive_functions.acc_time_constant, + steer_time_constant_ctrl=drive_functions.steer_time_constant, + acc_queue_size=drive_functions.acc_ctrl_queue_size, + steer_queue_size=drive_functions.steer_ctrl_queue_size, + steer_queue_size_core=drive_functions.steer_ctrl_queue_size_core, + ): + super().__init__() + self.acc_time_constant_ctrl = acc_time_constant_ctrl + self.acc_delay_step = acc_delay_step + self.steer_time_constant_ctrl = steer_time_constant_ctrl + self.steer_delay_step = steer_delay_step + + lb = -randomize + ub = randomize + self.acc_input_index = np.concatenate(([1], np.arange(acc_queue_size) + 3)) + self.steer_input_index = np.concatenate( + ([2], np.arange(steer_queue_size_core) + acc_queue_size + 3) + ) + self.steer_input_index_full = np.arange(steer_queue_size) + acc_queue_size + 3 + self.acc_layer_1 = nn.Sequential( + nn.Linear(self.acc_input_index.shape[0], dim_acc_layer_1), + nn.ReLU(), + ) + nn.init.uniform_(self.acc_layer_1[0].weight, a=lb, b=ub) + nn.init.uniform_(self.acc_layer_1[0].bias, a=lb, b=ub) + self.steer_layer_1_head = nn.Sequential( + nn.Linear(self.steer_input_index.shape[0], dim_steer_layer_1_head), + nn.ReLU(), + ) + nn.init.uniform_(self.steer_layer_1_head[0].weight, a=lb, b=ub) + nn.init.uniform_(self.steer_layer_1_head[0].bias, a=lb, b=ub) + + self.steer_layer_1_tail = nn.Sequential( + nn.Linear(self.steer_input_index_full.shape[0], dim_steer_layer_1_tail), nn.ReLU() + ) + nn.init.uniform_(self.steer_layer_1_tail[0].weight, a=lb, b=ub) + nn.init.uniform_(self.steer_layer_1_tail[0].bias, a=lb, b=ub) + + self.acc_layer_2 = nn.Sequential(nn.Linear(dim_acc_layer_1, dim_acc_layer_2), nn.ReLU()) + nn.init.uniform_(self.acc_layer_2[0].weight, a=lb, b=ub) + nn.init.uniform_(self.acc_layer_2[0].bias, a=lb, b=ub) + + self.steer_layer_2 = nn.Sequential( + nn.Linear(dim_steer_layer_1_head + dim_steer_layer_1_tail, dim_steer_layer_2), nn.ReLU() + ) + nn.init.uniform_(self.steer_layer_2[0].weight, a=lb, b=ub) + nn.init.uniform_(self.steer_layer_2[0].bias, a=lb, b=ub) + + self.lstm = nn.LSTM( + 1 + dim_acc_layer_2 + dim_steer_layer_2, hidden_layer_lstm, batch_first=True + ) + + nn.init.uniform_(self.lstm.weight_hh_l0, a=lb, b=ub) + nn.init.uniform_(self.lstm.weight_ih_l0, a=lb, b=ub) + nn.init.uniform_(self.lstm.bias_hh_l0, a=lb, b=ub) + nn.init.uniform_(self.lstm.bias_ih_l0, a=lb, b=ub) + + self.linear_relu_stack_1 = nn.Sequential( + nn.Linear(1 + dim_acc_layer_2 + dim_steer_layer_2, hidden_layer_sizes[0]), + nn.ReLU(), + ) + nn.init.uniform_(self.linear_relu_stack_1[0].weight, a=lb, b=ub) + nn.init.uniform_(self.linear_relu_stack_1[0].bias, a=lb, b=ub) + + self.linear_relu_stack_2 = nn.Sequential( + nn.Linear(hidden_layer_lstm + hidden_layer_sizes[0], hidden_layer_sizes[1]), + nn.ReLU(), + ) + nn.init.uniform_(self.linear_relu_stack_2[0].weight, a=lb, b=ub) + nn.init.uniform_(self.linear_relu_stack_2[0].bias, a=lb, b=ub) + + self.finalize = nn.Linear(hidden_layer_sizes[1] + dim_acc_layer_2 + dim_steer_layer_2, 6) + + nn.init.uniform_(self.finalize.weight, a=lb, b=ub) + nn.init.uniform_(self.finalize.bias, a=lb, b=ub) + + self.acc_dropout = nn.Dropout(acc_drop_out) + self.steer_dropout = nn.Dropout(steer_drop_out) + + def forward(self, x): + acc_layer_1 = self.acc_layer_1( + drive_functions.acc_normalize * x[:, :, self.acc_input_index] + ) + steer_layer_1 = torch.cat( + ( + self.steer_layer_1_head( + drive_functions.steer_normalize * x[:, :, self.steer_input_index] + ), + self.steer_layer_1_tail( + drive_functions.steer_normalize * x[:, :, self.steer_input_index_full] + ), + ), + dim=2, + ) + acc_layer_2 = self.acc_layer_2(self.acc_dropout(acc_layer_1)) + steer_layer_2 = self.steer_layer_2(self.steer_dropout(steer_layer_1)) + h_1 = torch.cat( + (drive_functions.vel_normalize * x[:, :, [0]], acc_layer_2, steer_layer_2), dim=2 + ) + pre_pred, _ = self.lstm(h_1) + pre_pred = torch.cat((pre_pred, self.linear_relu_stack_1(h_1)), dim=2) + pre_pred = self.linear_relu_stack_2(pre_pred) + pred = self.finalize(torch.cat((pre_pred, acc_layer_2, steer_layer_2), dim=2)) + return pred + + class EarlyStopping: """Class for early stopping in NN training.""" @@ -180,68 +363,110 @@ def __init__( A_for_linear_reg, b_for_linear_reg, deg, - acc_time_constant, - acc_delay_step, - steer_time_constant, - steer_delay_step, - acc_queue_size, - steer_queue_size, - steer_queue_size_core, + acc_delay_step=drive_functions.acc_delay_step, + steer_delay_step=drive_functions.steer_delay_step, + acc_queue_size=drive_functions.acc_ctrl_queue_size, + steer_queue_size=drive_functions.steer_ctrl_queue_size, + steer_queue_size_core=drive_functions.steer_ctrl_queue_size_core, + vel_normalize=drive_functions.vel_normalize, + acc_normalize=drive_functions.acc_normalize, + steer_normalize=drive_functions.steer_normalize, + ): + self.transform = proxima_calc.transform_model_to_eigen() + self.transform.set_params( + model.acc_layer_1[0].weight.detach().numpy().astype(np.float64), + model.steer_layer_1_head[0].weight.detach().numpy().astype(np.float64), + model.steer_layer_1_tail[0].weight.detach().numpy().astype(np.float64), + model.acc_layer_2[0].weight.detach().numpy().astype(np.float64), + model.steer_layer_2[0].weight.detach().numpy().astype(np.float64), + model.linear_relu_stack[0].weight.detach().numpy().astype(np.float64), + model.linear_relu_stack[2].weight.detach().numpy().astype(np.float64), + model.finalize.weight.detach().numpy().astype(np.float64), + model.acc_layer_1[0].bias.detach().numpy().astype(np.float64), + model.steer_layer_1_head[0].bias.detach().numpy().astype(np.float64), + model.steer_layer_1_tail[0].bias.detach().numpy().astype(np.float64), + model.acc_layer_2[0].bias.detach().numpy().astype(np.float64), + model.steer_layer_2[0].bias.detach().numpy().astype(np.float64), + model.linear_relu_stack[0].bias.detach().numpy().astype(np.float64), + model.linear_relu_stack[2].bias.detach().numpy().astype(np.float64), + model.finalize.bias.detach().numpy().astype(np.float64), + A_for_linear_reg, + b_for_linear_reg, + deg, + acc_delay_step, + steer_delay_step, + acc_queue_size, + steer_queue_size, + steer_queue_size_core, + vel_normalize, + acc_normalize, + steer_normalize, + ) + self.pred = self.transform.rot_and_d_rot_error_prediction + self.pred_only_state = self.transform.rotated_error_prediction + self.pred_with_diff = self.transform.rot_and_d_rot_error_prediction_with_diff + self.pred_with_poly_diff = self.transform.rot_and_d_rot_error_prediction_with_poly_diff + self.Pred = self.transform.Rotated_error_prediction + + +class transform_model_with_memory_to_c: + """Pass the necessary information to the C++ program to call the trained model at high speed.""" + + def __init__( + self, + model, + A_for_linear_reg, + b_for_linear_reg, + deg, + acc_delay_step=drive_functions.acc_delay_step, + steer_delay_step=drive_functions.steer_delay_step, + acc_queue_size=drive_functions.acc_ctrl_queue_size, + steer_queue_size=drive_functions.steer_ctrl_queue_size, + steer_queue_size_core=drive_functions.steer_ctrl_queue_size_core, + vel_normalize=drive_functions.vel_normalize, + acc_normalize=drive_functions.acc_normalize, + steer_normalize=drive_functions.steer_normalize, ): - transformer = proxima_calc.transform_model_to_eigen() - - numpy_weight_list = [] - numpy_bias_list = [] - for i, w in enumerate(model.parameters()): - if i % 2 == 0: - numpy_weight_list.append(w.detach().numpy().astype(np.float64)) - else: - numpy_bias_list.append(w.detach().numpy().astype(np.float64)) - array_weight_list_0 = numpy_weight_list[0] - array_bias_list_0 = numpy_bias_list[0] - array_weight_list_1 = numpy_weight_list[1] - array_bias_list_1 = numpy_bias_list[1] - array_weight_list_2 = numpy_weight_list[2] - array_bias_list_2 = numpy_bias_list[2] - array_weight_list_3 = numpy_weight_list[3] - array_bias_list_3 = numpy_bias_list[3] - array_weight_list_4 = numpy_weight_list[4] - array_bias_list_4 = numpy_bias_list[4] - array_weight_list_5 = numpy_weight_list[5] - array_bias_list_5 = numpy_bias_list[5] - array_weight_list_6 = numpy_weight_list[6] - array_bias_list_6 = numpy_bias_list[6] - array_weight_list_7 = numpy_weight_list[7] - array_bias_list_7 = numpy_bias_list[7] - - transformer.set_params( - array_weight_list_0, - array_weight_list_1, - array_weight_list_2, - array_weight_list_3, - array_weight_list_4, - array_weight_list_5, - array_weight_list_6, - array_weight_list_7, - array_bias_list_0, - array_bias_list_1, - array_bias_list_2, - array_bias_list_3, - array_bias_list_4, - array_bias_list_5, - array_bias_list_6, - array_bias_list_7, + self.transform = proxima_calc.transform_model_with_memory_to_eigen() + self.transform.set_params( + model.acc_layer_1[0].weight.detach().numpy().astype(np.float64), + model.steer_layer_1_head[0].weight.detach().numpy().astype(np.float64), + model.steer_layer_1_tail[0].weight.detach().numpy().astype(np.float64), + model.acc_layer_2[0].weight.detach().numpy().astype(np.float64), + model.steer_layer_2[0].weight.detach().numpy().astype(np.float64), + model.lstm.weight_ih_l0.detach().numpy().astype(np.float64), + model.lstm.weight_hh_l0.detach().numpy().astype(np.float64), + model.linear_relu_stack_1[0].weight.detach().numpy().astype(np.float64), + model.linear_relu_stack_2[0].weight.detach().numpy().astype(np.float64), + model.finalize.weight.detach().numpy().astype(np.float64), + model.acc_layer_1[0].bias.detach().numpy().astype(np.float64), + model.steer_layer_1_head[0].bias.detach().numpy().astype(np.float64), + model.steer_layer_1_tail[0].bias.detach().numpy().astype(np.float64), + model.acc_layer_2[0].bias.detach().numpy().astype(np.float64), + model.steer_layer_2[0].bias.detach().numpy().astype(np.float64), + model.lstm.bias_hh_l0.detach().numpy().astype(np.float64), + model.lstm.bias_ih_l0.detach().numpy().astype(np.float64), + model.linear_relu_stack_1[0].bias.detach().numpy().astype(np.float64), + model.linear_relu_stack_2[0].bias.detach().numpy().astype(np.float64), + model.finalize.bias.detach().numpy().astype(np.float64), + ) + self.transform.set_params_res( A_for_linear_reg, b_for_linear_reg, deg, - acc_time_constant, acc_delay_step, - steer_time_constant, steer_delay_step, acc_queue_size, steer_queue_size, steer_queue_size_core, + vel_normalize, + acc_normalize, + steer_normalize, ) - self.pred = transformer.rot_and_d_rot_error_prediction - self.pred_with_diff = transformer.rot_and_d_rot_error_prediction_with_diff - self.Pred = transformer.Rotated_error_prediction + self.pred = self.transform.rot_and_d_rot_error_prediction + self.pred_only_state = self.transform.rotated_error_prediction + self.pred_with_diff = self.transform.rot_and_d_rot_error_prediction_with_diff + self.pred_with_memory_diff = self.transform.rot_and_d_rot_error_prediction_with_memory_diff + self.pred_with_poly_diff = self.transform.rot_and_d_rot_error_prediction_with_poly_diff + self.Pred = self.transform.Rotated_error_prediction + self.test_lstm = self.transform.error_prediction diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_controller.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_controller.py index 3877f7177720b..4fb4fe3a951e1 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_controller.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_controller.py @@ -20,6 +20,7 @@ from importlib import reload as ir import threading import time +from typing import Literal from autoware_smart_mpc_trajectory_follower.scripts import drive_GP from autoware_smart_mpc_trajectory_follower.scripts import drive_NN @@ -57,8 +58,8 @@ class drive_controller: update_trained_model: bool | None """Whether to update the model online with the data under control.""" - mode: str | None - """which algorithm to use, "mppi", "ilqr", or "mppi_ilqr" """ + mode: Literal["pure_pursuit", "naive_pure_pursuit", "mppi", "ilqr", "mppi_ilqr"] | None + """which algorithm to use""" use_x_noise: bool | None """Whether to reflect the uncertainty of the straight-line position when performing iLQG""" @@ -109,6 +110,7 @@ def __init__( self, use_trained_model: bool | None = None, use_trained_model_diff=None, + use_memory_diff=None, update_trained_model=None, mode=None, use_x_noise=None, @@ -138,6 +140,14 @@ def __init__( ir(drive_iLQR) ir(drive_mppi) + if mode is None: + self.mode = drive_functions.mode + else: + self.mode = mode + + if mode == "pure_pursuit" or mode == "naive_pure_pursuit": + use_trained_model = False + if use_trained_model is None: self.use_trained_model = drive_functions.use_trained_model else: @@ -145,6 +155,7 @@ def __init__( if not self.use_trained_model: self.use_trained_model_diff = False self.update_trained_model = False + self.use_memory_diff = False else: if use_trained_model_diff is None: self.use_trained_model_diff = drive_functions.use_trained_model_diff @@ -154,10 +165,10 @@ def __init__( self.update_trained_model = drive_functions.update_trained_model else: self.update_trained_model = update_trained_model - if mode is None: - self.mode = drive_functions.mode - else: - self.mode = mode + if use_memory_diff is None: + self.use_memory_diff = drive_functions.use_memory_diff + else: + self.use_memory_diff = use_memory_diff self.acc_delay_step = drive_functions.acc_delay_step self.steer_delay_step = drive_functions.steer_delay_step @@ -230,6 +241,8 @@ def __init__( self.use_trained_model_diff, ) self.err = 0 + if self.use_trained_model and drive_functions.use_memory_for_training: + print("use_memory_diff", self.use_memory_diff) if self.use_trained_model: self.model = torch.load(model_file_name) polynomial_reg_info = np.load(self.load_polynomial_reg_dir + "/polynomial_reg_info.npz") @@ -237,30 +250,52 @@ def __init__( self.b_for_polynomial_reg = polynomial_reg_info["b"] self.deg = int(polynomial_reg_info["deg"]) self.polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) - transform_model = drive_NN.transform_model_to_c( - self.model, - self.A_for_polynomial_reg, - self.b_for_polynomial_reg, - self.deg, - self.acc_time_constant_ctrl, - self.acc_delay_step, - self.steer_time_constant_ctrl, - self.steer_delay_step, - drive_functions.acc_ctrl_queue_size, - drive_functions.steer_ctrl_queue_size, - drive_functions.steer_ctrl_queue_size_core, - ) - pred = transform_model.pred - Pred = transform_model.Pred - self.pred = pred - self.pred_with_diff = transform_model.pred_with_diff + if drive_functions.use_memory_for_training: + self.transform_model = drive_NN.transform_model_with_memory_to_c( + self.model, + self.A_for_polynomial_reg, + self.b_for_polynomial_reg, + self.deg, + self.acc_delay_step, + self.steer_delay_step, + drive_functions.acc_ctrl_queue_size, + drive_functions.steer_ctrl_queue_size, + drive_functions.steer_ctrl_queue_size_core, + ) + self.h = np.zeros(self.model.lstm.weight_hh_l0.shape[1]) + self.c = (self.h).copy() + if self.use_memory_diff: + self.ilqr.receive_memory_diff( + self.transform_model.transform.get_dhc_dx, + self.transform_model.transform.get_dhc_dhc, + self.transform_model.transform.get_dy_dhc, + ) + else: + self.transform_model = drive_NN.transform_model_to_c( + self.model, + self.A_for_polynomial_reg, + self.b_for_polynomial_reg, + self.deg, + self.acc_delay_step, + self.steer_delay_step, + drive_functions.acc_ctrl_queue_size, + drive_functions.steer_ctrl_queue_size, + drive_functions.steer_ctrl_queue_size_core, + ) + self.pred = self.transform_model.pred + if drive_functions.reflect_only_poly_diff: + self.pred_with_diff = self.transform_model.pred_with_poly_diff + elif self.use_memory_diff and drive_functions.use_memory_for_training: + self.pred_with_diff = self.transform_model.pred_with_memory_diff + else: + self.pred_with_diff = self.transform_model.pred_with_diff self.loss_fn = torch.nn.L1Loss() self.drive_optimizer = torch.optim.Adam( params=self.model.parameters(), lr=drive_learning_rate ) self.F_N_initial_diff = partial( drive_functions.F_with_model_initial_diff, - pred=pred, + pred=self.transform_model.pred, i=self.acc_delay_step, j=self.steer_delay_step, acc_time_constant_ctrl=self.acc_time_constant_ctrl, @@ -275,9 +310,17 @@ def __init__( acc_time_constant_ctrl=self.acc_time_constant_ctrl, steer_time_constant_ctrl=self.steer_time_constant_ctrl, ) + self.F_N_only_state = partial( + drive_functions.F_with_model, + pred=self.transform_model.pred_only_state, + i=self.acc_delay_step, + j=self.steer_delay_step, + acc_time_constant_ctrl=self.acc_time_constant_ctrl, + steer_time_constant_ctrl=self.steer_time_constant_ctrl, + ) self.F_N_for_candidates = partial( drive_functions.F_with_model_for_candidates, - Pred=Pred, + Pred=self.transform_model.Pred, i=self.acc_delay_step, j=self.steer_delay_step, acc_time_constant_ctrl=self.acc_time_constant_ctrl, @@ -292,6 +335,13 @@ def __init__( steer_time_constant_ctrl=self.steer_time_constant_ctrl, ) self.F_N_initial_diff = self.F_N_diff + self.F_N_only_state = partial( + drive_functions.F_with_history, + i=self.acc_delay_step, + j=self.steer_delay_step, + acc_time_constant_ctrl=self.acc_time_constant_ctrl, + steer_time_constant_ctrl=self.steer_time_constant_ctrl, + ) self.F_N_for_candidates = partial( drive_functions.F_with_history_for_candidates, i=self.acc_delay_step, @@ -367,12 +417,25 @@ def __init__( self.x_old = np.empty(6) + self.X_queue_for_learning: list[np.ndarray] = [] + self.acc_input_queue_for_learning: list[np.ndarray] = [] + self.steer_input_queue_for_learning: list[np.ndarray] = [] + self.time_stamp_queue_for_learning: list[float] = [] + self.X_smoothed_queue: list[np.ndarray] = [] + + self.pre_X_input_list: list[np.ndarray] = [] + self.pre_Y_output_list: list[np.ndarray] = [] + + self.time_stamp_for_update_lstm: list[float] = [] + self.X_queue_for_update_lstm: list[np.ndarray] = [] + def __del__(self): print("control finished") def get_optimal_control( self, x_current_: np.ndarray, + time_stamp: list[float], X_des_: np.ndarray, U_des: np.ndarray = np.zeros((drive_functions.N, drive_functions.nu_0)), ) -> np.ndarray: @@ -387,32 +450,43 @@ def get_optimal_control( X_des_, ) self.u_opt = X_des[0, drive_functions.nx_0 + np.arange(drive_functions.nu_0)] - self.u_old = self.u_opt.copy() - self.u_old2 = self.u_opt.copy() self.acc_input_queue = self.u_opt[0] * np.ones(drive_functions.acc_ctrl_queue_size) self.steer_input_queue = self.u_opt[1] * np.ones(drive_functions.steer_ctrl_queue_size) - self.nominal_inputs = drive_functions.U_des_from_X_des(self.u_old, X_des, diff_delta) + self.nominal_inputs = drive_functions.U_des_from_X_des(self.u_opt, X_des, diff_delta) self.previous_error = np.zeros(8) - self.X_queue_for_learning: list[np.ndarray] = [] - self.acc_input_queue_for_learning: list[np.ndarray] = [] - self.steer_input_queue_for_learning: list[np.ndarray] = [] - self.time_stamp_queue_for_learning: list[float] = [] - self.X_smoothed_queue: list[np.ndarray] = [] + self.X_queue_for_learning.clear() + self.acc_input_queue_for_learning.clear() + self.steer_input_queue_for_learning.clear() + self.time_stamp_queue_for_learning.clear() + self.X_smoothed_queue.clear() + + self.pre_X_input_list.clear() + self.pre_Y_output_list.clear() - self.pre_X_input_list: list[np.ndarray] = [] - self.pre_Y_output_list: list[np.ndarray] = [] + self.time_stamp_for_update_lstm.clear() + self.X_queue_for_update_lstm.clear() + if self.use_trained_model and drive_functions.use_memory_for_training: + self.h = np.zeros(self.model.lstm.weight_hh_l0.shape[1]) + self.c = (self.h).copy() self.initialize_X_smoothing_time_stamp = True + self.acc_fb_1 = 0.0 + self.acc_fb_2 = 0.0 + self.steer_fb_1 = 0.0 + self.steer_fb_2 = 0.0 + else: x_current = drive_functions.transform_yaw_for_x_current(self.x_old, x_current_) X_des, diff_delta = drive_functions.transform_yaw_for_X_des( x_current, X_des_, ) - self.u_old2 = self.u_old.copy() - self.u_old = self.u_opt.copy() - + if drive_functions.use_max_curvature: + curvature = np.abs(X_des[:, 5]).max() / drive_functions.L + else: + curvature = np.abs(X_des[:, 5]).mean() / drive_functions.L + steer_rate_cost_coef = drive_functions.calc_steer_rate_cost_coef(curvature) if self.init: self.X_current_queue = [] self.init = False @@ -421,6 +495,10 @@ def get_optimal_control( self.X_current = np.concatenate( (x_current, self.acc_input_queue[::-1], self.steer_input_queue[::-1]) ) + self.u_old = np.array([self.acc_input_queue[-1], self.steer_input_queue[-1]]) + if self.use_trained_model and drive_functions.use_memory_for_training: + if len(time_stamp) > 0: + self.update_lstm_info(time_stamp[-1]) self.X_current_queue.append(self.X_current.copy()) if len(self.X_current_queue) > drive_functions.mpc_freq: @@ -429,22 +507,38 @@ def get_optimal_control( self.nominal_inputs = drive_functions.sg_filter_for_nominal_inputs(self.nominal_inputs) if self.mode == "mppi" or self.mode == "mppi_ilqr": # Run mppi self.start_mppi = time.time() - self.mppi.receive_model(self.F_N_for_candidates) - self.nominal_inputs, self.u_opt_dot, nominal_traj = (self.mppi).compute_optimal_control( - self.X_current, - self.nominal_inputs, - X_des, - U_des, - self.previous_error[:6], - ) - self.nominal_traj_mppi = nominal_traj.copy() + proceed = True + for k in range(drive_functions.max_iter_mppi): + if not proceed: + break + if drive_functions.use_memory_for_training and self.use_trained_model: + self.transform_model.transform.set_lstm(self.h, self.c) + self.transform_model.transform.set_lstm_for_candidate( + self.h, self.c, drive_functions.sample_num + ) + self.mppi.receive_model(self.F_N_for_candidates, self.F_N_only_state) + self.nominal_inputs, self.u_opt_dot, nominal_traj, self.mppi_candidates, proceed = ( + self.mppi + ).compute_optimal_control( + self.X_current, + self.nominal_inputs, + X_des, + U_des, + self.previous_error[:6], + ) + self.nominal_traj_mppi = nominal_traj.copy() self.end_mppi = time.time() - if self.mode != "mppi": + if self.mode == "ilqr" or self.mode == "mppi_ilqr": self.start_ilqr = time.time() proceed = True for k in range(drive_functions.max_iter_ilqr): if not proceed: break + if drive_functions.use_memory_for_training and self.use_trained_model: + self.transform_model.transform.set_lstm(self.h, self.c) + self.transform_model.transform.set_lstm_for_candidate( + self.h, self.c, drive_functions.max_iter_ls + 1 + ) self.nominal_inputs = drive_functions.sg_filter_for_nominal_inputs( self.nominal_inputs ) @@ -465,6 +559,7 @@ def get_optimal_control( self.theta_noise, self.acc_noise, self.steer_noise, + steer_rate_cost_coef, ) self.nominal_traj_ilqr = nominal_traj.copy() self.nominal_inputs_ilqr = self.nominal_inputs.copy() @@ -490,7 +585,41 @@ def get_optimal_control( self.time_5 = self.ilqr.time_5 self.end_ilqr = time.time() + if self.mode == "pure_pursuit": + nominal_traj = np.zeros((drive_functions.N + 1, x_current_.shape[0])) + + u_opt = drive_functions.pure_pursuit_control( + pos_xy_obs=x_current_[:2], + pos_yaw_obs=x_current_[3], + longitudinal_vel_obs=x_current_[2], + pos_xy_ref=X_des_[0, :2], + pos_yaw_ref=X_des_[0, 3], + longitudinal_vel_ref=X_des_[0, 2], + ) + self.u_opt_dot = (u_opt - self.u_old) / drive_functions.ctrl_time_step + + if self.mode == "naive_pure_pursuit": + nominal_traj = np.zeros((drive_functions.N + 1, x_current_.shape[0])) + lookahead_distance = ( + drive_functions.naive_pure_pursuit_lookahead_coef * x_current_[2] + + drive_functions.naive_pure_pursuit_lookahead_intercept + ) + targetIndex = np.abs( + ((X_des_[:, :2] - x_current_[:2]) ** 2).sum(axis=1) - lookahead_distance**2 + ).argmin() + + u_opt = drive_functions.naive_pure_pursuit_control( + pos_xy_obs=x_current_[:2], + pos_yaw_obs=x_current_[3], + longitudinal_vel_obs=x_current_[2], + pos_xy_ref_target=X_des_[targetIndex, :2], + longitudinal_vel_ref_nearest=X_des_[0, 2], + ) + self.u_opt_dot = (u_opt - self.u_old) / drive_functions.ctrl_time_step + if self.use_trained_model: + if drive_functions.use_memory_for_training: + self.transform_model.transform.set_lstm(self.h, self.c) self.previous_error = drive_functions.error_decay * self.previous_error + ( 1 - drive_functions.error_decay ) * self.pred(self.X_current) @@ -505,6 +634,41 @@ def get_optimal_control( acc_lim, acc_rate_lim, ) = drive_functions.calc_limits(x_current[2], x_current[4], x_current[5]) + if not self.initialize_input_queue and ( + self.mode != "pure_pursuit" and self.mode != "naive_pure_pursuit" + ): + self.acc_fb_1, self.acc_fb_2 = np.clip( + drive_functions.acc_prediction_error_compensation( + self.X_current, + self.X_old, + self.u_old, + self.previous_error, + self.acc_fb_1, + self.acc_fb_2, + self.acc_time_stamp - self.acc_time_stamp_old, + ), + -drive_functions.max_error_acc, + drive_functions.max_error_acc, + ) + self.steer_fb_1, self.steer_fb_2 = np.clip( + drive_functions.steer_prediction_error_compensation( + self.X_current, + self.X_old, + self.u_old, + self.previous_error, + self.steer_fb_1, + self.steer_fb_2, + self.steer_time_stamp - self.steer_time_stamp_old, + ), + -drive_functions.max_error_steer, + drive_functions.max_error_steer, + ) + self.u_opt[0] += drive_functions.acc_fb_gain * ( + 2 * self.acc_fb_1 - drive_functions.acc_fb_sec_order_ratio * self.acc_fb_2 + ) + self.u_opt[1] += drive_functions.steer_fb_gain * ( + 2 * self.steer_fb_1 - drive_functions.steer_fb_sec_order_ratio * self.steer_fb_2 + ) self.u_opt = drive_functions.u_cut_off( self.u_opt, @@ -517,10 +681,13 @@ def get_optimal_control( ) self.initialize_input_queue = False - self.X_des_history.append(X_des[0]) + self.X_des_history.append(X_des_[0]) self.initial_guess_for_debug = (self.nominal_inputs).copy() self.x_old = x_current + self.X_old = (self.X_current).copy() + self.acc_time_stamp_old = self.acc_time_stamp + self.steer_time_stamp_old = self.steer_time_stamp return self.u_opt def update_input_queue( @@ -529,12 +696,16 @@ def update_input_queue( acc_history: list[float], steer_history: list[float], x_current_: np.ndarray, + acc_time_stamp: float, + steer_time_stamp: float, ) -> None: """Receives the history of the acceleration and steer inputs and their time stamps. And interpolates them to be the history of the time steps used by the controller. The return value can be passed to get_optimal_control. """ + self.acc_time_stamp = acc_time_stamp + self.steer_time_stamp = steer_time_stamp if not self.initialize_input_queue: if len(time_stamp) == 1: self.acc_input_queue[-1] = acc_history[0] @@ -849,6 +1020,39 @@ def update_input_queue( self.steer_input_queue_for_learning.pop(0) self.time_stamp_queue_for_learning.pop(0) + def update_lstm_info(self, time_stamp): + self.transform_model.transform.set_lstm(0 * self.h, 0 * self.c) + self.time_stamp_for_update_lstm.append(time_stamp) + self.X_queue_for_update_lstm.append(self.X_current) + if len(self.X_queue_for_update_lstm) > 1: + while self.time_stamp_for_update_lstm[-1] - self.time_stamp_for_update_lstm[ + 1 + ] > drive_functions.mpc_time_step * (drive_functions.N + 1): + self.time_stamp_for_update_lstm.pop(0) + self.X_queue_for_update_lstm.pop(0) + if ( + self.time_stamp_for_update_lstm[-1] - self.time_stamp_for_update_lstm[0] + > drive_functions.mpc_time_step + ): + horizon_num = min( + int( + (self.time_stamp_for_update_lstm[-1] - self.time_stamp_for_update_lstm[0]) + / drive_functions.mpc_time_step + ), + drive_functions.N, + ) + time_stamp_interp = ( + self.time_stamp_for_update_lstm[-1] + - drive_functions.mpc_time_step * np.arange(1, horizon_num + 1)[::-1] + ) + X_interp = scipy.interpolate.interp1d( + np.array(self.time_stamp_for_update_lstm), + np.array(self.X_queue_for_update_lstm).T, + )(time_stamp_interp) + self.transform_model.transform.update_memory_by_state_history(X_interp) + self.h = self.transform_model.transform.get_h() + self.c = self.transform_model.transform.get_c() + def update_input_queue_and_get_optimal_control( self, time_stamp, @@ -857,10 +1061,14 @@ def update_input_queue_and_get_optimal_control( x_current_, X_des_, U_des=np.zeros((drive_functions.N, drive_functions.nu_0)), + acc_time_stamp=0.0, + steer_time_stamp=0.0, ): """Run update_input_queue and get_optimal_control all at once.""" - self.update_input_queue(time_stamp, acc_history, steer_history, x_current_) - u_opt = self.get_optimal_control(x_current_, X_des_, U_des) + self.update_input_queue( + time_stamp, acc_history, steer_history, x_current_, acc_time_stamp, steer_time_stamp + ) + u_opt = self.get_optimal_control(x_current_, time_stamp, X_des_, U_des) return u_opt def update_model(self): @@ -888,25 +1096,27 @@ def update_model(self): loss.backward() self.drive_optimizer.step() - transform_model = drive_NN.transform_model_to_c( + self.transform_model = drive_NN.transform_model_to_c( self.model, self.A_for_polynomial_reg, self.b_for_polynomial_reg, self.deg, - self.acc_time_constant_ctrl, self.acc_delay_step, - self.steer_time_constant_ctrl, self.steer_delay_step, drive_functions.acc_ctrl_queue_size, drive_functions.steer_ctrl_queue_size, drive_functions.steer_ctrl_queue_size_core, ) - self.pred = transform_model.pred - self.Pred = transform_model.Pred - self.pred_with_diff = transform_model.pred_with_diff + self.pred = self.transform_model.pred + if drive_functions.reflect_only_poly_diff: + self.pred_with_diff = self.transform_model.pred_with_poly_diff + elif self.use_memory_diff and drive_functions.use_memory_for_training: + self.pred_with_diff = self.transform_model.pred_with_memory_diff + else: + self.pred_with_diff = self.transform_model.pred_with_diff self.F_N_initial_diff = partial( drive_functions.F_with_model_initial_diff, - pred=self.pred, + pred=self.transform_model.pred, i=self.acc_delay_step, j=self.steer_delay_step, acc_time_constant_ctrl=self.acc_time_constant_ctrl, @@ -920,9 +1130,17 @@ def update_model(self): acc_time_constant_ctrl=self.acc_time_constant_ctrl, steer_time_constant_ctrl=self.steer_time_constant_ctrl, ) + self.F_N_only_state = partial( + drive_functions.F_with_model, + pred=self.transform_model.pred_only_state, + i=self.acc_delay_step, + j=self.steer_delay_step, + acc_time_constant_ctrl=self.acc_time_constant_ctrl, + steer_time_constant_ctrl=self.steer_time_constant_ctrl, + ) self.F_N_for_candidates = partial( drive_functions.F_with_model_for_candidates, - Pred=self.Pred, + Pred=self.transform_model.Pred, i=self.acc_delay_step, j=self.steer_delay_step, acc_time_constant_ctrl=self.acc_time_constant_ctrl, diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_functions.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_functions.py index fb96e134f7746..81ad4f8b38790 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_functions.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_functions.py @@ -116,53 +116,40 @@ acc_time_constant = float(nominal_param["nominal_parameter"]["acceleration"]["acc_time_constant"]) steer_time_delay = float(nominal_param["nominal_parameter"]["steering"]["steer_time_delay"]) -steer_delay_step = min( - round(steer_time_delay / ctrl_time_step), steer_ctrl_queue_size_core - mpc_freq -) +steer_delay_step = min(round(steer_time_delay / ctrl_time_step), steer_ctrl_queue_size - mpc_freq) steer_time_constant = float(nominal_param["nominal_parameter"]["steering"]["steer_time_constant"]) -min_steer_rate_transform_for_start = float( - mpc_param["mpc_parameter"]["cost_parameters"]["min_steer_rate_transform_for_start"] -) -power_steer_rate_transform_for_start = int( - mpc_param["mpc_parameter"]["cost_parameters"]["power_steer_rate_transform_for_start"] + +vel_steer_cost_coef_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["vel_steer_cost_coef_table"], dtype=float ) -coef_steer_rate_transform_for_start = float( - mpc_param["mpc_parameter"]["cost_parameters"]["coef_steer_rate_transform_for_start"] +vel_steer_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["vel_steer_table"], dtype=float ) -min_tighten_steer_rate = float( - mpc_param["mpc_parameter"]["to_be_deprecated"]["min_tighten_steer_rate"] -) -power_tighten_steer_rate_by_lateral_error = int( - mpc_param["mpc_parameter"]["to_be_deprecated"]["power_tighten_steer_rate_by_lateral_error"] + +lateral_cost_coef_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["lateral_cost_coef_table"], dtype=float ) -threshold_tighten_steer_rate_by_lateral_error = float( - mpc_param["mpc_parameter"]["to_be_deprecated"]["threshold_tighten_steer_rate_by_lateral_error"] +lateral_error_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["lateral_error_table"], dtype=float ) -power_tighten_steer_rate_by_yaw_error = int( - mpc_param["mpc_parameter"]["to_be_deprecated"]["power_tighten_steer_rate_by_yaw_error"] +yaw_cost_coef_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["yaw_cost_coef_table"], dtype=float ) -threshold_tighten_steer_rate_by_yaw_error = float( - mpc_param["mpc_parameter"]["to_be_deprecated"]["threshold_tighten_steer_rate_by_yaw_error"] +yaw_error_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["yaw_error_table"], dtype=float ) -tighten_horizon = int(mpc_param["mpc_parameter"]["to_be_deprecated"]["tighten_horizon"]) -min_loose_lateral_cost = float( - mpc_param["mpc_parameter"]["cost_parameters"]["min_loose_lateral_cost"] -) -power_loose_lateral_cost = int( - mpc_param["mpc_parameter"]["cost_parameters"]["power_loose_lateral_cost"] + +steer_rate_cost_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["steer_rate_cost_table"], dtype=float ) -threshold_loose_lateral_cost = float( - mpc_param["mpc_parameter"]["cost_parameters"]["threshold_loose_lateral_cost"] +curvature_table = np.array( + mpc_param["mpc_parameter"]["cost_parameters"]["curvature_table"], dtype=float ) -min_loose_yaw_cost = float(mpc_param["mpc_parameter"]["cost_parameters"]["min_loose_yaw_cost"]) -power_loose_yaw_cost = int(mpc_param["mpc_parameter"]["cost_parameters"]["power_loose_yaw_cost"]) -threshold_loose_yaw_cost = float( - mpc_param["mpc_parameter"]["cost_parameters"]["threshold_loose_yaw_cost"] -) +use_max_curvature = str(mpc_param["mpc_parameter"]["cost_parameters"]["use_max_curvature"]) use_sg_for_nominal_inputs = bool( mpc_param["mpc_parameter"]["preprocessing"]["use_sg_for_nominal_inputs"] @@ -173,6 +160,20 @@ sg_window_size_for_nominal_inputs = int( mpc_param["mpc_parameter"]["preprocessing"]["sg_window_size_for_nominal_inputs"] ) + +acc_fb_decay = float(mpc_param["mpc_parameter"]["compensation"]["acc_fb_decay"]) +acc_fb_gain = float(mpc_param["mpc_parameter"]["compensation"]["acc_fb_gain"]) +acc_fb_sec_order_ratio = float(mpc_param["mpc_parameter"]["compensation"]["acc_fb_sec_order_ratio"]) +max_error_acc = float(mpc_param["mpc_parameter"]["compensation"]["max_error_acc"]) + +steer_fb_decay = float(mpc_param["mpc_parameter"]["compensation"]["steer_fb_decay"]) +steer_fb_gain = float(mpc_param["mpc_parameter"]["compensation"]["steer_fb_gain"]) +steer_fb_sec_order_ratio = float( + mpc_param["mpc_parameter"]["compensation"]["steer_fb_sec_order_ratio"] +) +max_error_steer = float(mpc_param["mpc_parameter"]["compensation"]["max_error_steer"]) + + trained_model_param_path = ( package_path["path"] + "/autoware_smart_mpc_trajectory_follower/param/trained_model_param.yaml" ) @@ -181,6 +182,16 @@ use_trained_model_diff = bool( trained_model_param["trained_model_parameter"]["control_application"]["use_trained_model_diff"] ) +minimum_steer_diff = float( + trained_model_param["trained_model_parameter"]["control_application"]["minimum_steer_diff"] +) +use_memory_diff = bool( + trained_model_param["trained_model_parameter"]["memory_for_training"]["use_memory_diff"] +) + +reflect_only_poly_diff = bool( + trained_model_param["trained_model_parameter"]["control_application"]["reflect_only_poly_diff"] +) use_sg_for_trained_model_diff = bool( trained_model_param["trained_model_parameter"]["control_application"][ "use_sg_for_trained_model_diff" @@ -197,6 +208,18 @@ ] ) +use_sg_for_memory_diff = bool( + trained_model_param["trained_model_parameter"]["memory_for_training"]["use_sg_for_memory_diff"] +) +sg_deg_for_trained_model_diff = int( + trained_model_param["trained_model_parameter"]["memory_for_training"]["sg_deg_for_memory_diff"] +) +sg_window_size_for_memory_diff = int( + trained_model_param["trained_model_parameter"]["memory_for_training"][ + "sg_window_size_for_memory_diff" + ] +) + use_sg_for_noise = bool( trained_model_param["trained_model_parameter"]["control_application"]["use_sg_for_noise"] ) @@ -209,6 +232,9 @@ ] ) +use_memory_for_training = bool( + trained_model_param["trained_model_parameter"]["memory_for_training"]["use_memory_for_training"] +) load_dir = os.environ["HOME"] save_dir = os.environ["HOME"] # +"/autoware" @@ -282,6 +308,66 @@ ) +vel_normalize = float(trained_model_param["trained_model_parameter"]["normalize"]["vel_normalize"]) +acc_normalize = float(trained_model_param["trained_model_parameter"]["normalize"]["acc_normalize"]) +steer_normalize = float( + trained_model_param["trained_model_parameter"]["normalize"]["steer_normalize"] +) + +NN_x_weight = float(trained_model_param["trained_model_parameter"]["weight"]["NN_x_weight"]) +NN_y_weight = float(trained_model_param["trained_model_parameter"]["weight"]["NN_y_weight"]) +NN_v_weight = float(trained_model_param["trained_model_parameter"]["weight"]["NN_v_weight"]) +NN_yaw_weight = float(trained_model_param["trained_model_parameter"]["weight"]["NN_yaw_weight"]) +NN_acc_weight = float(trained_model_param["trained_model_parameter"]["weight"]["NN_acc_weight"]) +NN_steer_weight = float(trained_model_param["trained_model_parameter"]["weight"]["NN_steer_weight"]) + +NN_x_weight_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_x_weight_diff"] +) +NN_y_weight_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_y_weight_diff"] +) +NN_v_weight_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_v_weight_diff"] +) +NN_yaw_weight_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_yaw_weight_diff"] +) +NN_acc_weight_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_acc_weight_diff"] +) +NN_steer_weight_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_steer_weight_diff"] +) + +NN_x_weight_two_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_x_weight_two_diff"] +) +NN_y_weight_two_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_y_weight_two_diff"] +) +NN_v_weight_two_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_v_weight_two_diff"] +) +NN_yaw_weight_two_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_yaw_weight_two_diff"] +) +NN_acc_weight_two_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_acc_weight_two_diff"] +) +NN_steer_weight_two_diff = float( + trained_model_param["trained_model_parameter"]["weight"]["NN_steer_weight_two_diff"] +) + +finalize_x_weight = float( + trained_model_param["trained_model_parameter"]["weight"]["finalize_x_weight"] +) +finalize_y_weight = float( + trained_model_param["trained_model_parameter"]["weight"]["finalize_y_weight"] +) +finalize_v_weight = float( + trained_model_param["trained_model_parameter"]["weight"]["finalize_v_weight"] +) # upper limit of input @@ -293,40 +379,52 @@ break control_dir_path += "/" -limit_yaml_path = None -for curDir, dirs, files in os.walk(control_dir_path): - for name in files: - if name == "vehicle_cmd_gate.param.yaml": - if curDir.split("/")[-2] == "vehicle_cmd_gate": - limit_yaml_path = curDir + "/" + name - break - -limit_params = None -if limit_yaml_path is not None: - with open(limit_yaml_path, "r") as yml: - limit_params = yaml.safe_load(yml) -else: - print("Error: limit_yaml_path is None") +read_limit_file = bool(mpc_param["mpc_parameter"]["limit"]["read_limit_file"]) +if read_limit_file: + limit_yaml_path = None + for curDir, dirs, files in os.walk(control_dir_path): + for name in files: + if name == "vehicle_cmd_gate.param.yaml": + if curDir.split("/")[-2] == "autoware_vehicle_cmd_gate": + limit_yaml_path = curDir + "/" + name + break + + limit_params = None + if limit_yaml_path is not None: + with open(limit_yaml_path, "r") as yml: + limit_params = yaml.safe_load(yml) + else: + print("Error: limit_yaml_path is None") -if limit_params is not None: - reference_speed_points = np.array( - limit_params["/**"]["ros__parameters"]["nominal"]["reference_speed_points"] - ) - steer_lim_points = np.array(limit_params["/**"]["ros__parameters"]["nominal"]["steer_lim"]) - steer_rate_lim_points = np.array( - limit_params["/**"]["ros__parameters"]["nominal"]["steer_rate_lim"] - ) - acc_lim_points = np.array(limit_params["/**"]["ros__parameters"]["nominal"]["lon_acc_lim"]) - acc_rate_lim_points = np.array( - limit_params["/**"]["ros__parameters"]["nominal"]["lon_jerk_lim"] - ) - lat_acc_lim_points = np.array(limit_params["/**"]["ros__parameters"]["nominal"]["lat_acc_lim"]) - lat_jerk_lim_points = np.array( - limit_params["/**"]["ros__parameters"]["nominal"]["lat_jerk_lim"] - ) + if limit_params is not None: + reference_speed_points = np.array( + limit_params["/**"]["ros__parameters"]["nominal"]["reference_speed_points"] + ) + steer_lim_points = np.array(limit_params["/**"]["ros__parameters"]["nominal"]["steer_lim"]) + steer_rate_lim_points = np.array( + limit_params["/**"]["ros__parameters"]["nominal"]["steer_rate_lim"] + ) + acc_lim_points = np.array(limit_params["/**"]["ros__parameters"]["nominal"]["lon_acc_lim"]) + acc_rate_lim_points = np.array( + limit_params["/**"]["ros__parameters"]["nominal"]["lon_jerk_lim"] + ) + lat_acc_lim_points = np.array( + limit_params["/**"]["ros__parameters"]["nominal"]["lat_acc_lim"] + ) + lat_jerk_lim_points = np.array( + limit_params["/**"]["ros__parameters"]["nominal"]["lat_jerk_lim"] + ) + else: + print("Error: limit_params is None") + sys.exit(1) else: - print("Error: limit_params is None") - sys.exit(1) + reference_speed_points = np.array([20.0, 30.0]) + steer_lim_points = np.array([10.0, 10.0]) + steer_rate_lim_points = np.array([10.0, 10.0]) + acc_lim_points = np.array([20.0, 20.0]) + acc_rate_lim_points = np.array([20.0, 20.0]) + lat_acc_lim_points = np.array([20.0, 20.0]) + lat_jerk_lim_points = np.array([20.0, 20.0]) @njit(cache=True, fastmath=True) @@ -413,6 +511,55 @@ def calc_limits( ) +@njit(cache=True, fastmath=True) +def calc_steer_rate_cost_coef(curvature: float) -> float: + """Calc steer rate cost coefficient.""" + interval_index = 0 + for i in range(curvature_table.shape[0]): + if curvature > curvature_table[i]: + interval_index += 1 + else: + break + if interval_index == 0: + steer_rate_cost_coef = steer_rate_cost_table[0] + + elif interval_index == steer_rate_cost_table.shape[0]: + steer_rate_cost_coef = steer_rate_cost_table[-1] + + else: + r = (curvature - curvature_table[interval_index - 1]) / ( + curvature_table[interval_index] - curvature_table[interval_index - 1] + ) + steer_rate_cost_coef = (1 - r) * steer_rate_cost_table[ + interval_index - 1 + ] + r * steer_rate_cost_table[interval_index] + + return steer_rate_cost_coef + + +@njit(cache=True, fastmath=True) +def calc_table_value(x: float, table_domain, table_target) -> float: + interval_index = 0 + for i in range(table_domain.shape[0]): + if x > table_domain[i]: + interval_index += 1 + else: + break + if interval_index == 0: + target_val = table_target[0] + + elif interval_index == table_target.shape[0]: + target_val = table_target[-1] + + else: + r = (x - table_domain[interval_index - 1]) / ( + table_domain[interval_index] - table_domain[interval_index - 1] + ) + target_val = (1 - r) * table_target[interval_index - 1] + r * table_target[interval_index] + + return target_val + + @njit(cache=True, fastmath=True) def transform_yaw(yaw_old: float, yaw_current_: float) -> float: """Transform the yaw angle so that the difference in yaw angle is less than or equal to π.""" @@ -431,7 +578,7 @@ def transform_yaw_for_x_current(x_old: np.ndarray, x_current_: np.ndarray) -> np return x_current -def transform_yaw_for_X_des(x_current: np.ndarray, X_des_: np.ndarray) -> np.ndarray: +def transform_yaw_for_X_des(x_current: np.ndarray, X_des_: np.ndarray) -> tuple[np.ndarray, float]: """Transform the yaw angle with respect to the target trajectory. X_des[0] is set to the current state. @@ -506,7 +653,11 @@ def calc_maximum_trajectory_error(traj: np.ndarray, X_des: np.ndarray) -> float: @njit(cache=False, fastmath=True) def transform_Q_R( - X_des: np.ndarray, U_des: np.ndarray, nominal_traj: np.ndarray, nominal_input: np.ndarray + X_des: np.ndarray, + U_des: np.ndarray, + nominal_traj: np.ndarray, + nominal_input: np.ndarray, + steer_rate_coef: float, ) -> tuple: """Calculate the MPC cost weight matrix from the current predicted trajectory and target trajectory. @@ -540,43 +691,17 @@ def transform_Q_R( lateral_error = np.abs((Rot.T @ (X_des[i, :2] - x_current[:2]))[1]) yaw_error = np.abs(X_des[i, 3] - x_current[3]) - cost_tr_steer_rate_by_error = max( - min_tighten_steer_rate, - max( - (lateral_error / threshold_tighten_steer_rate_by_lateral_error) - ** power_tighten_steer_rate_by_lateral_error, - (yaw_error / threshold_tighten_steer_rate_by_yaw_error) - ** power_tighten_steer_rate_by_yaw_error, - ), - ) - cost_tr_steer_rate = 1 / ( - min( - max( - min_steer_rate_transform_for_start, - (coef_steer_rate_transform_for_start * np.abs(v)) - ** power_steer_rate_transform_for_start, - ), - 1.0, - ) + + cost_tr_steer_rate = 1 / calc_table_value( + np.abs(v), vel_steer_table, vel_steer_cost_coef_table ) - if i >= tighten_horizon: - cost_tr_steer_rate = max(cost_tr_steer_rate, 1 / cost_tr_steer_rate_by_error) + if i in timing_Q_c or i == X_des.shape[0] - 1: - lateral_cost_coef = min( - max( - min_loose_lateral_cost, - (lateral_error / threshold_loose_lateral_cost) ** power_loose_lateral_cost, - ), - 1.0, + lateral_cost_coef = calc_table_value( + lateral_error, lateral_error_table, lateral_cost_coef_table ) Q_[1, 1] = lateral_cost_coef * Q_[1, 1] - yaw_cost_coef = min( - max( - min_loose_yaw_cost, - (yaw_error / threshold_loose_yaw_cost) ** power_loose_yaw_cost, - ), - 1.0, - ) + yaw_cost_coef = calc_table_value(yaw_error, yaw_error_table, yaw_cost_coef_table) Q_[3, 3] = yaw_cost_coef * Q_[3, 3] Q_[:2, :2] = Rot @ Q_[:2, :2] @ Rot.T @@ -605,6 +730,7 @@ def transform_Q_R( steer_lim_center[i] = -steer_lim if i != X_des.shape[0] - 1: R_ = R.copy() + R_[1, 1] = steer_rate_coef * R_[1, 1] if acc >= 0: R_[1, 1] = cost_tr_steer_rate * R_[1, 1] R_total[i] = R_ @@ -639,7 +765,12 @@ def transform_Q_R( @njit(cache=False, fastmath=True) def calc_cost( - X_des: np.ndarray, U_des: np.ndarray, Traj: np.ndarray, Inputs: np.ndarray, n: int + X_des: np.ndarray, + U_des: np.ndarray, + Traj: np.ndarray, + Inputs: np.ndarray, + n: int, + steer_rate_coef: float, ) -> np.ndarray: """Calculate the MPC cost of the nth horizon from several candidate predicted trajectories and target trajectories.""" Cost = np.zeros(Traj.shape[0]) @@ -661,43 +792,17 @@ def calc_cost( Qi = Q_.copy() lateral_error = np.abs((Rot.T @ (X_des[:2] - x_current[:2]))[1]) yaw_error = np.abs(X_des[3] - x_current[3]) - cost_tr_steer_rate_by_error = max( - min_tighten_steer_rate, - max( - (lateral_error / threshold_tighten_steer_rate_by_lateral_error) - ** power_tighten_steer_rate_by_lateral_error, - (yaw_error / threshold_tighten_steer_rate_by_yaw_error) - ** power_tighten_steer_rate_by_yaw_error, - ), - ) - cost_tr_steer_rate = 1 / ( - min( - max( - min_steer_rate_transform_for_start, - (coef_steer_rate_transform_for_start * np.abs(v)) - ** power_steer_rate_transform_for_start, - ), - 1.0, - ) + + cost_tr_steer_rate = 1 / calc_table_value( + np.abs(v), vel_steer_table, vel_steer_cost_coef_table ) - if n >= tighten_horizon: - cost_tr_steer_rate = max(cost_tr_steer_rate, 1 / cost_tr_steer_rate_by_error) + if n in timing_Q_c or n == N: - lateral_cost_coef = min( - max( - min_loose_lateral_cost, - (lateral_error / threshold_loose_lateral_cost) ** power_loose_lateral_cost, - ), - 1.0, + lateral_cost_coef = calc_table_value( + lateral_error, lateral_error_table, lateral_cost_coef_table ) Qi[1, 1] = lateral_cost_coef * Qi[1, 1] - yaw_cost_coef = min( - max( - min_loose_yaw_cost, - (yaw_error / threshold_loose_yaw_cost) ** power_loose_yaw_cost, - ), - 1.0, - ) + yaw_cost_coef = calc_table_value(yaw_error, yaw_error_table, yaw_cost_coef_table) Qi[3, 3] = yaw_cost_coef * Qi[3, 3] Qi[:2, :2] = Rot @ Qi[:2, :2] @ Rot.T Cost[i] += 0.5 * np.dot(Qi @ (x_current - X_des), x_current - X_des) @@ -736,6 +841,8 @@ def calc_cost( if n != N: R_ = R.copy() + R_[1, 1] = steer_rate_coef * R_[1, 1] + if acc >= 0: R_[1, 1] = cost_tr_steer_rate * R_[1, 1] @@ -795,22 +902,13 @@ def calc_cost_only_for_states(X_des: np.ndarray, Traj: np.ndarray, n: int) -> np Qi = Q_.copy() if n in timing_Q_c or n == N: lateral_error = np.abs((Rot.T @ (X_des[:2] - x_current[:2]))[1]) - lateral_cost_coef = min( - max( - min_loose_lateral_cost, - (lateral_error / threshold_loose_lateral_cost) ** power_loose_lateral_cost, - ), - 1.0, + lateral_cost_coef = calc_table_value( + lateral_error, lateral_error_table, lateral_cost_coef_table ) Qi[1, 1] = lateral_cost_coef * Qi[1, 1] yaw_error = np.abs(X_des[3] - x_current[3]) - yaw_cost_coef = min( - max( - min_loose_yaw_cost, - (yaw_error / threshold_loose_yaw_cost) ** power_loose_yaw_cost, - ), - 1.0, - ) + yaw_cost_coef = calc_table_value(yaw_error, yaw_error_table, yaw_cost_coef_table) + Qi[3, 3] = yaw_cost_coef * Qi[3, 3] Qi[:2, :2] = Rot @ Qi[:2, :2] @ Rot.T Cost[i] += 0.5 * np.dot(Qi @ (x_current - X_des), x_current - X_des) @@ -1077,12 +1175,14 @@ def F_multiple_for_candidates( def F_with_history( states: np.ndarray, inputs: np.ndarray, + previous_error=None, + k: int = 0, i: int = acc_delay_step, j: int = steer_delay_step, acc_time_constant_ctrl: float = acc_time_constant, steer_time_constant_ctrl: float = steer_time_constant, steer_dead_band_for_ctrl=steer_dead_band_for_ctrl, -) -> np.ndarray: +) -> tuple[np.ndarray, None]: """Integrate up to the MPC time width according to the nominal model. This includes the history of the input to the state. @@ -1097,12 +1197,12 @@ def F_with_history( ] = states[ nx_0 + acc_ctrl_queue_size : nx_0 + acc_ctrl_queue_size + steer_ctrl_queue_size - mpc_freq ].copy() - for k in range(mpc_freq): - states_next[nx_0 + mpc_freq - k - 1] = ( - states_next[nx_0 + mpc_freq - k] + ctrl_time_step * inputs[0] + for index in range(mpc_freq): + states_next[nx_0 + mpc_freq - index - 1] = ( + states_next[nx_0 + mpc_freq - index] + ctrl_time_step * inputs[0] ) - states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - k - 1] = ( - states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - k] + ctrl_time_step * inputs[1] + states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - index - 1] = ( + states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - index] + ctrl_time_step * inputs[1] ) actual_inputs = np.zeros((mpc_freq, inputs.shape[0])) @@ -1117,14 +1217,14 @@ def F_with_history( steer_dead_band_for_ctrl, ) - return states_next + return states_next, None def F_with_history_and_diff( states: np.ndarray, inputs: np.ndarray, previous_error: None = None, - init: None = None, + k: int = 0, i: int = acc_delay_step, j: int = steer_delay_step, acc_time_constant_ctrl: float = acc_time_constant, @@ -1156,18 +1256,18 @@ def F_with_history_and_diff( nx_0 + acc_ctrl_queue_size : nx_0 + acc_ctrl_queue_size + steer_ctrl_queue_size - mpc_freq, ] = np.eye(steer_ctrl_queue_size - mpc_freq) - for k in range(mpc_freq): - states_next[nx_0 + mpc_freq - k - 1] = ( - states_next[nx_0 + mpc_freq - k] + ctrl_time_step * inputs[0] + for index in range(mpc_freq): + states_next[nx_0 + mpc_freq - index - 1] = ( + states_next[nx_0 + mpc_freq - index] + ctrl_time_step * inputs[0] ) - states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - k - 1] = ( - states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - k] + ctrl_time_step * inputs[1] + states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - index - 1] = ( + states_next[nx_0 + acc_ctrl_queue_size + mpc_freq - index] + ctrl_time_step * inputs[1] ) - dF_dx[nx_0 + mpc_freq - k - 1, nx_0] = 1 - dF_dx[nx_0 + acc_ctrl_queue_size + mpc_freq - k - 1, nx_0 + acc_ctrl_queue_size] = 1 + dF_dx[nx_0 + mpc_freq - index - 1, nx_0] = 1 + dF_dx[nx_0 + acc_ctrl_queue_size + mpc_freq - index - 1, nx_0 + acc_ctrl_queue_size] = 1 - dF_du[nx_0 + mpc_freq - k - 1, 0] = (k + 1) * ctrl_time_step - dF_du[nx_0 + acc_ctrl_queue_size + mpc_freq - k - 1, 1] = (k + 1) * ctrl_time_step + dF_du[nx_0 + mpc_freq - index - 1, 0] = (index + 1) * ctrl_time_step + dF_du[nx_0 + acc_ctrl_queue_size + mpc_freq - index - 1, 1] = (index + 1) * ctrl_time_step actual_inputs = np.zeros((mpc_freq, inputs.shape[0])) actual_inputs[:, 0] = states_next[nx_0 + i + np.arange(mpc_freq)[::-1]].copy() @@ -1193,7 +1293,7 @@ def F_with_history_for_candidates( States: np.ndarray, Inputs: np.ndarray, Previous_error=None, - init=None, + k=0, i: int = acc_delay_step, j: int = steer_delay_step, acc_time_constant_ctrl: float = acc_time_constant, @@ -1215,12 +1315,12 @@ def F_with_history_for_candidates( :, nx_0 + acc_ctrl_queue_size : nx_0 + acc_ctrl_queue_size + steer_ctrl_queue_size - mpc_freq, ].copy() - for k in range(mpc_freq): - States_next[:, nx_0 + mpc_freq - k - 1] = ( - States_next[:, nx_0 + mpc_freq - k] + ctrl_time_step * Inputs[:, 0] + for index in range(mpc_freq): + States_next[:, nx_0 + mpc_freq - index - 1] = ( + States_next[:, nx_0 + mpc_freq - index] + ctrl_time_step * Inputs[:, 0] ) - States_next[:, nx_0 + acc_ctrl_queue_size + mpc_freq - k - 1] = ( - States_next[:, nx_0 + acc_ctrl_queue_size + mpc_freq - k] + States_next[:, nx_0 + acc_ctrl_queue_size + mpc_freq - index - 1] = ( + States_next[:, nx_0 + acc_ctrl_queue_size + mpc_freq - index] + ctrl_time_step * Inputs[:, 1] ) actual_Inputs = np.zeros((Inputs.shape[0], mpc_freq, nu_0)) @@ -1235,6 +1335,39 @@ def F_with_history_for_candidates( return States_next, None +def F_with_model( + states: np.ndarray, + inputs: np.ndarray, + previous_error: np.ndarray, + k: int, + pred: Callable, + i: int = acc_delay_step, + j: int = steer_delay_step, + acc_time_constant_ctrl: float = acc_time_constant, + steer_time_constant_ctrl: float = steer_time_constant, +) -> tuple[np.ndarray, np.ndarray]: + """Integrate up to the MPC time width according to the trained model.""" + if k == 0: + error = Error_decay * previous_error + (1 - Error_decay) * pred(states) + else: + error = Error_decay * Error_decay * Error_decay * previous_error + ( + 1 - Error_decay * Error_decay * Error_decay + ) * pred(states) + previous_error_ = error + states_next, _ = F_with_history( + states, + inputs, + i=i, + j=j, + acc_time_constant_ctrl=acc_time_constant_ctrl, + steer_time_constant_ctrl=steer_time_constant_ctrl, + ) + + states_next[:nx_0] += error * mpc_time_step + + return states_next, previous_error_ + + def F_with_model_initial_diff( states: np.ndarray, inputs: np.ndarray, @@ -1326,7 +1459,13 @@ def F_with_model_diff( dF_dx[:2, 3] += d_rot_error * mpc_time_step states_next[:nx_0] += rot_error * mpc_time_step - return states_next, dF_dx, dF_du, pred_with_diff[:, 2:] * mpc_time_step, pred_error_ + C = pred_with_diff[:, 2:] * mpc_time_step + steer_diff = ( + dF_dx[5, nx_0 + acc_ctrl_queue_size :].sum() + C[5, nx_0 + acc_ctrl_queue_size :].sum() + ) + if steer_diff < minimum_steer_diff: + C[5, -1] += minimum_steer_diff - steer_diff + return states_next, dF_dx, dF_du, C, pred_error_ def F_with_model_for_candidates( @@ -1366,6 +1505,137 @@ def F_with_model_for_candidates( return States_next, Previous_error_ +def acc_prediction_error_compensation( + states: np.ndarray, + previous_states: np.ndarray, + inputs: np.ndarray, + previous_error: np.ndarray, + acc_fb_1: float, + acc_fb_2: float, + acc_time_stamp_interval: float, +): + actual_acc_input = np.concatenate( + (np.array([inputs[0]]), previous_states[nx_0 : nx_0 + acc_ctrl_queue_size]) + )[acc_delay_step] + + predicted_acc = previous_states[4] + acc_time_stamp_interval * ( + previous_error[4] + (actual_acc_input - previous_states[4]) / acc_time_constant + ) + prediction_error = predicted_acc - states[4] + new_acc_fb_1 = np.exp(-acc_fb_decay) * acc_fb_1 + acc_fb_decay * prediction_error + new_acc_fb_2 = ( + acc_fb_decay * np.exp(-acc_fb_decay) * acc_fb_1 + np.exp(-acc_fb_decay) * acc_fb_2 + ) + return new_acc_fb_1, new_acc_fb_2 + + +def steer_prediction_error_compensation( + states: np.ndarray, + previous_states: np.ndarray, + inputs: np.ndarray, + previous_error: np.ndarray, + steer_fb_1: float, + steer_fb_2: float, + steer_time_stamp_interval: float, +): + actual_steer_input = np.concatenate( + (np.array([inputs[1]]), previous_states[nx_0 + acc_ctrl_queue_size :]) + )[steer_delay_step] + + delta_diff = actual_steer_input - previous_states[5] + if delta_diff >= steer_dead_band_for_ctrl: + delta_diff = delta_diff - steer_dead_band_for_ctrl + elif delta_diff <= -steer_dead_band_for_ctrl: + delta_diff = delta_diff + steer_dead_band_for_ctrl + else: + delta_diff = 0.0 + + predicted_steer = previous_states[5] + steer_time_stamp_interval * ( + previous_error[5] + delta_diff / steer_time_constant + ) + prediction_error = predicted_steer - states[5] + + new_steer_fb_1 = np.exp(-steer_fb_decay) * steer_fb_1 + steer_fb_decay * (prediction_error) + new_steer_fb_2 = ( + steer_fb_decay * np.exp(-steer_fb_decay) * steer_fb_1 + np.exp(-steer_fb_decay) * steer_fb_2 + ) + return new_steer_fb_1, new_steer_fb_2 + + +def pure_pursuit_control( + pos_xy_obs, + pos_yaw_obs, + longitudinal_vel_obs, + pos_xy_ref, + pos_yaw_ref, + longitudinal_vel_ref, + acc_gain_scaling=1.0, + steer_gain_scaling=1.0, +): + pure_pursuit_acc_kp = acc_gain_scaling * mpc_param["mpc_parameter"]["pure_pursuit"]["acc_kp"] + pure_pursuit_lookahead_time = mpc_param["mpc_parameter"]["pure_pursuit"]["lookahead_time"] + pure_pursuit_min_lookahead = mpc_param["mpc_parameter"]["pure_pursuit"]["min_lookahead"] + pure_pursuit_steer_kp_param = ( + steer_gain_scaling * mpc_param["mpc_parameter"]["pure_pursuit"]["steer_kp_param"] + ) + pure_pursuit_steer_kd_param = ( + steer_gain_scaling * mpc_param["mpc_parameter"]["pure_pursuit"]["steer_kd_param"] + ) + + longitudinal_vel_err = longitudinal_vel_obs - longitudinal_vel_ref + pure_pursuit_acc_cmd = -pure_pursuit_acc_kp * longitudinal_vel_err + + cos_yaw = np.cos(pos_yaw_ref) + sin_yaw = np.sin(pos_yaw_ref) + diff_position = pos_xy_obs - pos_xy_ref + lat_err = -sin_yaw * diff_position[0] + cos_yaw * diff_position[1] + yaw_err = pos_yaw_obs - pos_yaw_ref + while True: + if yaw_err > np.pi: + yaw_err -= 2.0 * np.pi + if yaw_err < (-np.pi): + yaw_err += 2.0 * np.pi + if np.abs(yaw_err) < np.pi: + break + + lookahead = pure_pursuit_min_lookahead + pure_pursuit_lookahead_time * np.abs( + longitudinal_vel_obs + ) + pure_pursuit_steer_kp = pure_pursuit_steer_kp_param * L / (lookahead * lookahead) + pure_pursuit_steer_kd = pure_pursuit_steer_kd_param * L / lookahead + pure_pursuit_steer_cmd = -pure_pursuit_steer_kp * lat_err - pure_pursuit_steer_kd * yaw_err + return np.array([pure_pursuit_acc_cmd, pure_pursuit_steer_cmd]) + + +naive_pure_pursuit_lookahead_coef = float( + mpc_param["mpc_parameter"]["naive_pure_pursuit"]["lookahead_coef"] +) +naive_pure_pursuit_lookahead_intercept = float( + mpc_param["mpc_parameter"]["naive_pure_pursuit"]["lookahead_intercept"] +) + + +def naive_pure_pursuit_control( + pos_xy_obs, + pos_yaw_obs, + longitudinal_vel_obs, + pos_xy_ref_target, + longitudinal_vel_ref_nearest, +): + pure_pursuit_acc_kp = mpc_param["mpc_parameter"]["naive_pure_pursuit"]["acc_kp"] + wheel_base = L + longitudinal_vel_err = longitudinal_vel_obs - longitudinal_vel_ref_nearest + pure_pursuit_acc_cmd = -pure_pursuit_acc_kp * longitudinal_vel_err + + alpha = ( + np.arctan2(pos_xy_ref_target[1] - pos_xy_obs[1], pos_xy_ref_target[0] - pos_xy_obs[0]) + - pos_yaw_obs + ) + angular_velocity_z = 2.0 * longitudinal_vel_ref_nearest * np.sin(alpha) / wheel_base + steer = np.arctan(angular_velocity_z * wheel_base / max(0.1, longitudinal_vel_ref_nearest)) + return np.array([pure_pursuit_acc_cmd, steer]) + + def sg_filter( inputs: np.ndarray, use_sg: bool, @@ -1439,6 +1709,11 @@ def calc_sg_filter_weight(sg_deg, sg_window_size): sg_vector_left_edge_for_trained_model_diff, sg_vector_right_edge_for_trained_model_diff, ) = calc_sg_filter_weight(sg_deg_for_trained_model_diff, sg_window_size_for_trained_model_diff) +( + sg_vector_for_memory_diff, + sg_vector_left_edge_for_memory_diff, + sg_vector_right_edge_for_memory_diff, +) = calc_sg_filter_weight(0, sg_window_size_for_memory_diff) ( sg_vector_for_noise, sg_vector_left_edge_for_noise, @@ -1463,6 +1738,16 @@ def calc_sg_filter_weight(sg_deg, sg_window_size): sg_vector=sg_vector_for_trained_model_diff, ) +sg_filter_for_memory_diff = partial( + sg_filter, + use_sg=use_sg_for_memory_diff, + sg_window_size=sg_window_size_for_memory_diff, # sg_window_size_for_trained_model_diff, + sg_vector_left_edge=sg_vector_left_edge_for_memory_diff, # sg_vector_left_edge_for_trained_model_diff, + sg_vector_right_edge=sg_vector_right_edge_for_memory_diff, # sg_vector_right_edge_for_trained_model_diff, + sg_vector=sg_vector_for_memory_diff, +) + + sg_filter_for_noise = partial( sg_filter, use_sg=use_sg_for_noise, diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_iLQR.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_iLQR.py index 2307586f23552..f3e374c5876cc 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_iLQR.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_iLQR.py @@ -33,11 +33,6 @@ ) acc_index = drive_functions.nx_0 steer_index = drive_functions.nx_0 + drive_functions.acc_ctrl_queue_size -actual_control_index = np.arange( - drive_functions.nx_0 - + drive_functions.acc_ctrl_queue_size - + drive_functions.steer_ctrl_queue_size_core -) actual_state_dim = drive_functions.nx_0 input_dim = drive_functions.nu_0 mpc_freq = drive_functions.mpc_freq @@ -52,7 +47,6 @@ def sparse_right_action_for_state_diff( Mat: np.ndarray, A: np.ndarray, - actual_control_index=actual_control_index, actual_state_dim=actual_state_dim, acc_ctrl_queue_size=acc_ctrl_queue_size, steer_ctrl_queue_size=steer_ctrl_queue_size, @@ -65,7 +59,7 @@ def sparse_right_action_for_state_diff( result = np.zeros( (Mat.shape[0], actual_state_dim + acc_ctrl_queue_size + steer_ctrl_queue_size) ) - result[:, actual_control_index] += Mat[:, :actual_state_dim] @ A + result += Mat[:, :actual_state_dim] @ A result[:, actual_state_dim : actual_state_dim + acc_ctrl_queue_size - mpc_freq] += Mat[ :, actual_state_dim + mpc_freq : actual_state_dim + acc_ctrl_queue_size @@ -97,7 +91,6 @@ def sparse_right_action_for_state_diff( def sparse_left_action_for_state_diff( A: np.ndarray, Mat: np.ndarray, - actual_control_index=actual_control_index, actual_state_dim=actual_state_dim, acc_ctrl_queue_size=acc_ctrl_queue_size, steer_ctrl_queue_size=steer_ctrl_queue_size, @@ -110,7 +103,7 @@ def sparse_left_action_for_state_diff( result = np.zeros( (actual_state_dim + acc_ctrl_queue_size + steer_ctrl_queue_size, Mat.shape[1]) ) - result[actual_control_index] += A.T @ Mat[:actual_state_dim] + result += A.T @ Mat[:actual_state_dim] result[actual_state_dim : actual_state_dim + acc_ctrl_queue_size - mpc_freq] += Mat[ actual_state_dim + mpc_freq : actual_state_dim + acc_ctrl_queue_size @@ -140,7 +133,6 @@ def sparse_left_action_for_state_diff( def vector_sparse_left_action_for_state_diff( A: np.ndarray, vec: np.ndarray, - actual_control_index=actual_control_index, actual_state_dim=actual_state_dim, acc_ctrl_queue_size=acc_ctrl_queue_size, steer_ctrl_queue_size=steer_ctrl_queue_size, @@ -151,7 +143,7 @@ def vector_sparse_left_action_for_state_diff( The remaining A₀ components are known a priori. """ result = np.zeros(actual_state_dim + acc_ctrl_queue_size + steer_ctrl_queue_size) - result[actual_control_index] += A.T @ vec[:actual_state_dim] + result += A.T @ vec[:actual_state_dim] result[actual_state_dim : actual_state_dim + acc_ctrl_queue_size - mpc_freq] += vec[ actual_state_dim + mpc_freq : actual_state_dim + acc_ctrl_queue_size @@ -245,8 +237,6 @@ def compute_iLQR_coef( steer_rate_lim_weights, steer_rate_lim_center, N, - nx, - nu, X_des, U_des, Sigma_x=None, @@ -261,29 +251,35 @@ def compute_iLQR_coef( dSigma_acc=None, Sigma_steer=None, dSigma_steer=None, - index_cost=index_cost, - acc_index=acc_index, - steer_index=steer_index, - actual_control_index=actual_control_index, - actual_state_dim=actual_state_dim, + acc_input_index=acc_index, + steer_input_index=steer_index, + state_dim=actual_state_dim, ): """Perform the main part of iLQR. Performs a Riccati recursion and returns the coefficients needed for the final output. """ + nx = A.shape[2] + nu = B.shape[2] P = np.zeros((N + 1, nx, nx)) w = np.zeros((N + 1, nx)) H_inv_G = np.zeros((N, nu, nx)) H_inv_g = np.zeros((N, nu)) - P[N][:7, :7] = Q_total[-1][:7, :7] - P[N][steer_index, steer_index] = Q_total[-1][7, 7] + P[N][:6, :6] = Q_total[-1][:6, :6] + P[N][acc_input_index, acc_input_index] = Q_total[-1][6, 6] + P[N][steer_input_index, steer_input_index] = Q_total[-1][7, 7] - P[N][acc_index, acc_index] += acc_lim_weights[N] - P[N][steer_index, steer_index] += steer_lim_weights[N] + P[N][acc_input_index, acc_input_index] += acc_lim_weights[N] + P[N][steer_input_index, steer_input_index] += steer_lim_weights[N] - w[N][index_cost] = Q_total[-1] @ (traj[N] - X_des[N]) - w[N, acc_index] += acc_lim_weights[N] * (traj[N, acc_index] - acc_lim_center[N]) - w[N, steer_index] += steer_lim_weights[N] * (traj[N, acc_index + 1] - steer_lim_center[N]) + Q_N_x = Q_total[-1] @ (traj[N] - X_des[N]) + + w[N][:6] = Q_N_x[:6] + w[N][acc_input_index] = Q_N_x[6] + w[N][steer_input_index] = Q_N_x[7] + + w[N, acc_input_index] += acc_lim_weights[N] * (traj[N, acc_index] - acc_lim_center[N]) + w[N, steer_input_index] += steer_lim_weights[N] * (traj[N, acc_index + 1] - steer_lim_center[N]) for i in range(N): j = N - i - 1 @@ -291,15 +287,23 @@ def compute_iLQR_coef( Rj = R_total[j] Aj = A[j] Pj1Aj = sparse_right_action_for_state_diff( - P[j + 1], Aj[:actual_state_dim, actual_control_index] + P[j + 1], Aj[:state_dim], actual_state_dim=state_dim ) - G = sparse_left_action_for_input_diff(Pj1Aj) + G = sparse_left_action_for_input_diff(Pj1Aj, actual_state_dim=state_dim) - H = sparse_left_action_for_input_diff(sparse_right_action_for_input_diff(P[j + 1])) + Rj + H = ( + sparse_left_action_for_input_diff( + sparse_right_action_for_input_diff(P[j + 1], actual_state_dim=state_dim), + actual_state_dim=state_dim, + ) + + Rj + ) H[0, 0] += acc_rate_lim_weights[j] H[1, 1] += steer_rate_lim_weights[j] - g_ = vector_sparse_left_action_for_input_diff(w[j + 1]) + Rj @ (inputs[j] - U_des[j]) + g_ = vector_sparse_left_action_for_input_diff(w[j + 1], actual_state_dim=state_dim) + Rj @ ( + inputs[j] - U_des[j] + ) g_[0] += acc_rate_lim_weights[j] * (inputs[j, 0] - acc_rate_lim_center[j]) g_[1] += steer_rate_lim_weights[j] * (inputs[j, 1] - steer_rate_lim_center[j]) @@ -311,25 +315,32 @@ def compute_iLQR_coef( H_inv_g[j] = H_inv @ g_ P[j] = ( - sparse_left_action_for_state_diff(Aj[:actual_state_dim, actual_control_index], Pj1Aj) + sparse_left_action_for_state_diff(Aj[:state_dim], Pj1Aj, actual_state_dim=state_dim) - G.T @ H_inv_G[j] ) - P[j][:7, :7] += Qj[:7, :7] - P[j][steer_index, steer_index] += Qj[7, 7] + P[j][:6, :6] += Qj[:6, :6] + P[j][acc_input_index, acc_input_index] += Qj[6, 6] + P[j][steer_input_index, steer_input_index] += Qj[7, 7] - P[j][acc_index, acc_index] += acc_lim_weights[j] - P[j][steer_index, steer_index] += steer_lim_weights[j] + P[j][acc_input_index, acc_input_index] += acc_lim_weights[j] + P[j][steer_input_index, steer_input_index] += steer_lim_weights[j] w[j] = ( vector_sparse_left_action_for_state_diff( - Aj[:actual_state_dim, actual_control_index], w[j + 1] + Aj[:state_dim], w[j + 1], actual_state_dim=state_dim ) - H_inv_G[j].T @ g_ ) - w[j, index_cost] += Qj @ (traj[j] - X_des[j]) - w[j, acc_index] += acc_lim_weights[j] * (traj[j, acc_index] - acc_lim_center[j]) - w[j, steer_index] += steer_lim_weights[j] * (traj[j, acc_index + 1] - steer_lim_center[j]) + Q_j_x = Qj @ (traj[j] - X_des[j]) + w[j, :6] += Q_j_x[:6] + w[j, acc_input_index] += Q_j_x[6] + w[j, steer_input_index] += Q_j_x[7] + + w[j, acc_input_index] += acc_lim_weights[j] * (traj[j, acc_index] - acc_lim_center[j]) + w[j, steer_input_index] += steer_lim_weights[j] * ( + traj[j, acc_index + 1] - steer_lim_center[j] + ) P_noise = np.zeros((nx, nx)) w_noise = np.zeros(nx) if Sigma_x is not None: @@ -395,19 +406,19 @@ class drive_iLQR: """Class that runs iLQR to compute optimal input values.""" ls_step: float - """ Line search step width """ + """ Line search step width.""" max_iter_ls: int - """ Number of candidates for line search. """ + """ Number of candidates for line search.""" max_iter_ilqr: int - """ Maximum number of iLQR iterations """ + """ Maximum number of iLQR iterations.""" ilqr_tol: float - """ Tolerance to terminate iLQR iterations """ + """ Tolerance to terminate iLQR iterations.""" use_trained_model_diff: bool - """ Whether to use the derivative of the trained model """ + """ Whether to use the derivative of the trained model.""" def __init__( self, @@ -429,6 +440,10 @@ def __init__( ls[i + 1] = ls_step * ls[i] ls[-1] = 0.0 self.ls = ls + self.add_state_hc = False + self.state_dim = actual_state_dim + self.acc_index = acc_index + self.steer_index = steer_index def calc_forward_trajectories_with_cost( self, @@ -437,6 +452,7 @@ def calc_forward_trajectories_with_cost( X_des: np.ndarray, U_des: np.ndarray, previous_error: np.ndarray, + steer_rate_cost_coef: float, ) -> tuple[np.ndarray, np.ndarray]: """Calculate the predicted trajectory and cost. @@ -456,6 +472,7 @@ def calc_forward_trajectories_with_cost( Traj[:, k, index_cost], Inputs[:, k, :], k, + steer_rate_cost_coef, ) Traj[:, k + 1], Previous_error = self.F_for_candidates( Traj[:, k], Inputs[:, k], Previous_error, k @@ -466,6 +483,7 @@ def calc_forward_trajectories_with_cost( Traj[:, N, index_cost], Inputs[:, N - 1, :], N, + steer_rate_cost_coef, ) return Traj, Cost @@ -485,18 +503,41 @@ def calc_forward_trajectory_with_diff( A = np.zeros((N, nx, nx)) B = np.zeros((N, nx, nu)) C = np.zeros((N, 6, nx)) + if self.add_state_hc: + D = np.zeros((N, 6 + self.h_dim_double, nx + self.h_dim_double)) previous_error_ = previous_error.copy() for k in range(N): if self.use_trained_model_diff: traj[k + 1], A[k], B[k], C[k], previous_error_ = self.F_with_diff( traj[k], inputs[k], previous_error_, k ) + if self.add_state_hc: + D[k][:6, 6 : 6 + self.h_dim_double] = ( + self.get_dy_dhc() * drive_functions.mpc_time_step + ) + dhc_dx = self.get_dhc_dx() + D[k][6:, :6] = dhc_dx[:, :6] + D[k][6:, 6 + self.h_dim_double :] = dhc_dx[:, 6:] + D[k][6:, 6 : 6 + self.h_dim_double] = self.get_dhc_dhc() else: traj[k + 1], A[k], B[k], previous_error_ = self.F_with_initial_diff( traj[k], inputs[k], previous_error_, k ) if self.use_trained_model_diff: A[:, :6] += drive_functions.sg_filter_for_trained_model_diff(C) + if self.add_state_hc: + D = drive_functions.sg_filter_for_memory_diff(D) + A_ = np.zeros((N, nx + self.h_dim_double, nx + self.h_dim_double)) + A_[:, :6, :6] = A[:, :6, :6] + A_[:, 6 + self.h_dim_double :, :6] = A[:, 6:, :6] + A_[:, :6, 6 + self.h_dim_double :] = A[:, :6, 6:] + A_[:, 6 + self.h_dim_double :, 6 + self.h_dim_double :] = A[:, 6:, 6:] + A_[:, : 6 + self.h_dim_double] += D + B_ = np.zeros((N, nx + self.h_dim_double, nu)) + B_[:, :6] = B[:, :6] + B_[:, 6 + self.h_dim_double :] = B[:, 6:] + return traj, A_, B_ + return traj, A, B def compute_optimal_control( @@ -512,14 +553,13 @@ def compute_optimal_control( theta_noise: Callable | None, acc_noise: Callable | None, steer_noise: Callable | None, + steer_rate_cost_coef: float, ) -> tuple[np.ndarray, np.ndarray, np.ndarray, bool]: """Calculate the optimal predictive trajectory and the input sequence at that time. It also determines whether the tolerance has been reached and returns whether the optimization should continue or not. Performs one iteration of iLQR. """ - nx = x_current.shape[0] - nu = inputs.shape[1] N = inputs.shape[0] self.time_1 = time.time() traj, A, B = self.calc_forward_trajectory_with_diff(x_current, inputs, previous_error) @@ -534,7 +574,7 @@ def compute_optimal_control( acc_rate_lim_center, steer_rate_lim_weights, steer_rate_lim_center, - ) = drive_functions.transform_Q_R(X_des, U_des, traj, inputs) + ) = drive_functions.transform_Q_R(X_des, U_des, traj, inputs, steer_rate_cost_coef) self.time_2 = time.time() if x_noise is None: Sigma_x = None @@ -584,44 +624,45 @@ def compute_optimal_control( Sigma_steer = drive_functions.sg_filter_for_noise(Sigma_steer) dSigma_steer = drive_functions.sg_filter_for_noise(dSigma_steer) P, w, H_inv_G, H_inv_g = compute_iLQR_coef( - traj[:, index_cost], - inputs, - A, - B, - Q_total, - R_total, - acc_lim_weights, - acc_lim_center, - steer_lim_weights, - steer_lim_center, - acc_rate_lim_weights, - acc_rate_lim_center, - steer_rate_lim_weights, - steer_rate_lim_center, - N, - nx, - nu, - X_des, - U_des, - Sigma_x, - dSigma_x, - Sigma_y, - dSigma_y, - Sigma_v, - dSigma_v, - Sigma_theta, - dSigma_theta, - Sigma_acc, - dSigma_acc, - Sigma_steer, - dSigma_steer, + traj=traj[:, index_cost], + inputs=inputs, + A=A, + B=B, + Q_total=Q_total, + R_total=R_total, + acc_lim_weights=acc_lim_weights, + acc_lim_center=acc_lim_center, + steer_lim_weights=steer_lim_weights, + steer_lim_center=steer_lim_center, + acc_rate_lim_weights=acc_rate_lim_weights, + acc_rate_lim_center=acc_rate_lim_center, + steer_rate_lim_weights=steer_rate_lim_weights, + steer_rate_lim_center=steer_rate_lim_center, + N=N, + X_des=X_des, + U_des=U_des, + Sigma_x=Sigma_x, + dSigma_x=dSigma_x, + Sigma_y=Sigma_y, + dSigma_y=dSigma_y, + Sigma_v=Sigma_v, + dSigma_v=dSigma_v, + Sigma_theta=Sigma_theta, + dSigma_theta=dSigma_theta, + Sigma_acc=Sigma_acc, + dSigma_acc=dSigma_acc, + Sigma_steer=Sigma_steer, + dSigma_steer=dSigma_steer, + acc_input_index=self.acc_index, + steer_input_index=self.steer_index, + state_dim=self.state_dim, ) self.time_3 = time.time() # start line search Inputs = calc_line_search_candidates(A, B, H_inv_g, H_inv_G, inputs, self.ls) self.time_4 = time.time() Traj, Cost = self.calc_forward_trajectories_with_cost( - x_current, Inputs, X_des, U_des, previous_error + x_current, Inputs, X_des, U_des, previous_error, steer_rate_cost_coef ) best_index = Cost.argmin() self.time_5 = time.time() @@ -642,3 +683,17 @@ def receive_model( self.F_with_initial_diff = F_with_initial_diff self.F_with_diff = F_with_diff self.F_for_candidates = F_for_candidates + + def receive_memory_diff( + self, get_dhc_dx: Callable, get_dhc_dhc: Callable, get_dy_dhc: Callable + ): + """Receive getter hc diff.""" + self.get_dhc_dx = get_dhc_dx + self.get_dhc_dhc = get_dhc_dhc + self.get_dy_dhc = get_dy_dhc + self.h_dim_double = get_dhc_dx().shape[0] + self.add_state_hc = True + print(self.h_dim_double) + self.state_dim += self.h_dim_double + self.acc_index += self.h_dim_double + self.steer_index += self.h_dim_double diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_mppi.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_mppi.py index 5e88c79172097..a5cf4c366046f 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_mppi.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/drive_mppi.py @@ -23,7 +23,7 @@ index_cost = np.concatenate( ( np.arange(drive_functions.nx_0 + 1), - [drive_functions.nx_0 + drive_functions.acc_ctrl_queue_size], + np.array([drive_functions.nx_0 + drive_functions.acc_ctrl_queue_size]), ) ) @@ -105,29 +105,14 @@ def calc_forward_trajectories_with_cost(self, x_current, Inputs, X_des, U_des, P Cost += drive_functions.calc_cost_only_for_states(X_des[N], Traj[:, N, index_cost], N) return Traj, Cost - def proceed_mppi_step(self, x_current, inputs, X_des, U_des, previous_error): + def compute_optimal_control(self, x_current, inputs, X_des, U_des, previous_error): """Proceed with MPPI iteration one time.""" N = inputs.shape[0] - previous_error_ = previous_error.reshape(1, -1).copy() - nominal_traj = np.zeros((N + 1, x_current.shape[0])) - nominal_traj[0] = x_current.copy() - for k in range(N): - if k == 0: - Traj_, previous_error_ = self.F_for_candidates( - nominal_traj[k].reshape(1, -1), inputs[k].reshape(1, -1), previous_error_, True - ) - nominal_traj[k + 1] = Traj_[0] - else: - Traj_, previous_error_ = self.F_for_candidates( - nominal_traj[k].reshape(1, -1), inputs[k].reshape(1, -1), previous_error_, False - ) - nominal_traj[k + 1] = Traj_[0] - Inputs = self.generate_sample_inputs(inputs) Previous_error = np.tile(previous_error, (self.sample_num, 1)) - _, Cost = self.calc_forward_trajectories_with_cost( + Traj, Cost = self.calc_forward_trajectories_with_cost( x_current, Inputs, X_des, U_des, Previous_error ) original_cost = Cost[0] @@ -135,36 +120,20 @@ def proceed_mppi_step(self, x_current, inputs, X_des, U_des, previous_error): Exps = np.exp(-(Cost - best_cost) / self.lam) Exps = Exps / Exps.sum() new_inputs = (Inputs.T @ Exps).T - previous_error_ = previous_error.reshape(1, -1).copy() + previous_error_ = previous_error.copy() new_traj = np.zeros((N + 1, x_current.shape[0])) new_traj[0] = x_current.copy() for k in range(N): - if k == 0: - Traj_, previous_error_ = self.F_for_candidates( - new_traj[k].reshape(1, -1), new_inputs[k].reshape(1, -1), previous_error_, True - ) - new_traj[k + 1] = Traj_[0] - else: - Traj_, previous_error_ = self.F_for_candidates( - new_traj[k].reshape(1, -1), new_inputs[k].reshape(1, -1), previous_error_, False - ) - new_traj[k + 1] = Traj_[0] + new_traj[k + 1], previous_error_ = self.F( + new_traj[k], new_inputs[k], previous_error_, k + ) if np.dot(Exps, Cost) < (1 - self.mppi_tol) * original_cost: proceed = True else: proceed = False - return new_traj, new_inputs, proceed - - def compute_optimal_control(self, x_current, inputs, X_des, U_des, previous_error): - """Calculate the optimal input based on MPPI.""" - for i in range(self.max_iter_mppi): - new_traj, new_inputs, proceed = self.proceed_mppi_step( - x_current, inputs, X_des, U_des, previous_error - ) - if not proceed: - break - return new_inputs, new_inputs[0], new_traj + return new_inputs, new_inputs[0], new_traj, Traj, proceed - def receive_model(self, F_for_candidates: Callable): + def receive_model(self, F_for_candidates: Callable, F): """Receive vehicle model for control.""" self.F_for_candidates = F_for_candidates + self.F = F diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/proxima_calc.cpp b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/proxima_calc.cpp index de65184ec9f8e..6dd39c72d433d 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/proxima_calc.cpp +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/proxima_calc.cpp @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +// cSpell:ignore lstm + #include #include @@ -20,29 +22,19 @@ #include namespace py = pybind11; -double nominal_model_input(Eigen::VectorXd var, double lam, int step) +Eigen::VectorXd tanh(const Eigen::VectorXd & v) { - double nominal_pred = var[0]; - nominal_pred += (var[step] - nominal_pred) * 0.03333 / lam; - nominal_pred += (var[step - 1] - nominal_pred) * 0.03333 / lam; - nominal_pred += (var[step - 2] - nominal_pred) * 0.03333 / lam; - return nominal_pred; + return v.array().tanh(); } -Eigen::RowVectorXd Nominal_model_input(Eigen::MatrixXd Var, double lam, int step) +Eigen::VectorXd d_tanh(const Eigen::VectorXd & v) { - Eigen::RowVectorXd nominal_pred = Var.row(0); - nominal_pred += (Var.row(step) - nominal_pred) * 0.03333 / lam; - nominal_pred += (Var.row(step - 1) - nominal_pred) * 0.03333 / lam; - nominal_pred += (Var.row(step - 2) - nominal_pred) * 0.03333 / lam; - return nominal_pred; + return 1 / (v.array().cosh() * v.array().cosh()); } - -Eigen::VectorXd d_tanh(Eigen::VectorXd v) +Eigen::VectorXd sigmoid(const Eigen::VectorXd & v) { - Eigen::VectorXd result = 1 / (v.array().cosh() * v.array().cosh()); - return result; + return 0.5 * (0.5 * v).array().tanh() + 0.5; } -Eigen::VectorXd relu(Eigen::VectorXd x) +Eigen::VectorXd relu(const Eigen::VectorXd & x) { Eigen::VectorXd x_ = x; for (int i = 0; i < x.size(); i++) { @@ -52,7 +44,7 @@ Eigen::VectorXd relu(Eigen::VectorXd x) } return x_; } -Eigen::VectorXd d_relu(Eigen::VectorXd x) +Eigen::VectorXd d_relu(const Eigen::VectorXd & x) { Eigen::VectorXd result = Eigen::VectorXd::Ones(x.size()); for (int i = 0; i < x.size(); i++) { @@ -62,8 +54,7 @@ Eigen::VectorXd d_relu(Eigen::VectorXd x) } return result; } - -Eigen::MatrixXd d_relu_product(Eigen::MatrixXd m, Eigen::VectorXd x) +Eigen::MatrixXd d_relu_product(const Eigen::MatrixXd & m, const Eigen::VectorXd & x) { Eigen::MatrixXd result = Eigen::MatrixXd::Zero(m.rows(), m.cols()); for (int i = 0; i < m.cols(); i++) { @@ -73,7 +64,7 @@ Eigen::MatrixXd d_relu_product(Eigen::MatrixXd m, Eigen::VectorXd x) } return result; } -Eigen::MatrixXd d_tanh_product(Eigen::MatrixXd m, Eigen::VectorXd x) +Eigen::MatrixXd d_tanh_product(const Eigen::MatrixXd & m, const Eigen::VectorXd & x) { Eigen::MatrixXd result = Eigen::MatrixXd(m.rows(), m.cols()); for (int i = 0; i < m.cols(); i++) { @@ -81,13 +72,34 @@ Eigen::MatrixXd d_tanh_product(Eigen::MatrixXd m, Eigen::VectorXd x) } return result; } -Eigen::MatrixXd test_product(Eigen::VectorXd v, Eigen::MatrixXd m) +Eigen::VectorXd d_tanh_product_vec(const Eigen::VectorXd & v, const Eigen::VectorXd & x) +{ + Eigen::VectorXd result = Eigen::VectorXd(v.size()); + for (int i = 0; i < v.size(); i++) { + result[i] = v[i] / (std::cosh(x[i]) * std::cosh(x[i])); + } + return result; +} +Eigen::MatrixXd d_sigmoid_product(const Eigen::MatrixXd & m, const Eigen::VectorXd & x) { - return v.asDiagonal() * m; + Eigen::MatrixXd result = Eigen::MatrixXd(m.rows(), m.cols()); + for (int i = 0; i < m.cols(); i++) { + result.col(i) = 0.25 * m.col(i) / (std::cosh(0.5 * x[i]) * std::cosh(0.5 * x[i])); + } + return result; } -Eigen::VectorXd get_polynomial_features(Eigen::VectorXd x, int deg, int dim) +Eigen::VectorXd d_sigmoid_product_vec(const Eigen::VectorXd & v, const Eigen::VectorXd & x) { - int n_features = x.size(); + Eigen::VectorXd result = Eigen::VectorXd(v.size()); + for (int i = 0; i < v.size(); i++) { + result[i] = 0.25 * v[i] / (std::cosh(0.5 * x[i]) * std::cosh(0.5 * x[i])); + } + return result; +} + +Eigen::VectorXd get_polynomial_features(const Eigen::VectorXd & x, const int deg, const int dim) +{ + const int n_features = x.size(); Eigen::VectorXd result = Eigen::VectorXd(dim); result.head(n_features) = x; if (deg >= 2) { @@ -98,11 +110,11 @@ Eigen::VectorXd get_polynomial_features(Eigen::VectorXd x, int deg, int dim) int current_idx = n_features; for (int i = 0; i < deg - 1; i++) { std::vector new_index = {}; - int end = index[index.size() - 1]; + const int end = index[index.size() - 1]; for (int feature_idx = 0; feature_idx < n_features; feature_idx++) { - int start = index[feature_idx]; + const int start = index[feature_idx]; new_index.push_back(current_idx); - int next_idx = current_idx + end - start; + const int next_idx = current_idx + end - start; result.segment(current_idx, end - start) = x[feature_idx] * result.segment(start, end - start); current_idx = next_idx; @@ -113,9 +125,10 @@ Eigen::VectorXd get_polynomial_features(Eigen::VectorXd x, int deg, int dim) } return result; } -Eigen::MatrixXd get_polynomial_features_with_diff(Eigen::VectorXd x, int deg, int dim) +Eigen::MatrixXd get_polynomial_features_with_diff( + const Eigen::VectorXd & x, const int deg, const int dim) { - int n_features = x.size(); + const int n_features = x.size(); Eigen::MatrixXd result = Eigen::MatrixXd::Zero(dim, n_features + 1); result.block(0, 0, n_features, 1) = x; result.block(0, 1, n_features, n_features) = Eigen::MatrixXd::Identity(n_features, n_features); @@ -127,11 +140,11 @@ Eigen::MatrixXd get_polynomial_features_with_diff(Eigen::VectorXd x, int deg, in int current_idx = n_features; for (int i = 0; i < deg - 1; i++) { std::vector new_index = {}; - int end = index[index.size() - 1]; + const int end = index[index.size() - 1]; for (int feature_idx = 0; feature_idx < n_features; feature_idx++) { - int start = index[feature_idx]; + const int start = index[feature_idx]; new_index.push_back(current_idx); - int next_idx = current_idx + end - start; + const int next_idx = current_idx + end - start; result.block(current_idx, 0, end - start, n_features + 1) = x[feature_idx] * result.block(start, 0, end - start, n_features + 1); result.block(current_idx, feature_idx + 1, end - start, 1) += @@ -147,124 +160,137 @@ Eigen::MatrixXd get_polynomial_features_with_diff(Eigen::VectorXd x, int deg, in class transform_model_to_eigen { private: - Eigen::MatrixXd weight_0; - Eigen::MatrixXd weight_1; - Eigen::MatrixXd weight_2; - Eigen::MatrixXd weight_3; - Eigen::MatrixXd weight_4; - Eigen::MatrixXd weight_5; - Eigen::MatrixXd weight_6; - Eigen::MatrixXd weight_7; - Eigen::VectorXd bias_0; - Eigen::VectorXd bias_1; - Eigen::VectorXd bias_2; - Eigen::VectorXd bias_3; - Eigen::VectorXd bias_4; - Eigen::VectorXd bias_5; - Eigen::VectorXd bias_6; - Eigen::VectorXd bias_7; - Eigen::MatrixXd A_linear_reg; - Eigen::VectorXd b_linear_reg; - int deg; - double acc_time_constant; - int acc_delay_step; - double steer_time_constant; - int steer_delay_step; - int acc_ctrl_queue_size; - int steer_ctrl_queue_size; - int steer_ctrl_queue_size_core; - double max_acc_error = 20.0; - double max_steer_error = 20.0; + Eigen::MatrixXd weight_acc_layer_1_; + Eigen::MatrixXd weight_steer_layer_1_head_; + Eigen::MatrixXd weight_steer_layer_1_tail_; + Eigen::MatrixXd weight_acc_layer_2_; + Eigen::MatrixXd weight_steer_layer_2_; + Eigen::MatrixXd weight_linear_relu_1_; + Eigen::MatrixXd weight_linear_relu_2_; + Eigen::MatrixXd weight_finalize_; + Eigen::VectorXd bias_acc_layer_1_; + Eigen::VectorXd bias_steer_layer_1_head_; + Eigen::VectorXd bias_steer_layer_1_tail_; + Eigen::VectorXd bias_acc_layer_2_; + Eigen::VectorXd bias_steer_layer_2_; + Eigen::VectorXd bias_linear_relu_1_; + Eigen::VectorXd bias_linear_relu_2_; + Eigen::VectorXd bias_linear_finalize_; + Eigen::MatrixXd A_linear_reg_; + Eigen::VectorXd b_linear_reg_; + int deg_; + int acc_delay_step_; + int steer_delay_step_; + int acc_ctrl_queue_size_; + int steer_ctrl_queue_size_; + int steer_ctrl_queue_size_core_; + double vel_normalize_; + double acc_normalize_; + double steer_normalize_; + static constexpr double max_acc_error_ = 20.0; + static constexpr double max_steer_error_ = 20.0; public: transform_model_to_eigen() {} void set_params( - Eigen::MatrixXd weight_0_, Eigen::MatrixXd weight_1_, Eigen::MatrixXd weight_2_, - Eigen::MatrixXd weight_3_, Eigen::MatrixXd weight_4_, Eigen::MatrixXd weight_5_, - Eigen::MatrixXd weight_6_, Eigen::MatrixXd weight_7_, Eigen::VectorXd bias_0_, - Eigen::VectorXd bias_1_, Eigen::VectorXd bias_2_, Eigen::VectorXd bias_3_, - Eigen::VectorXd bias_4_, Eigen::VectorXd bias_5_, Eigen::VectorXd bias_6_, - Eigen::VectorXd bias_7_, Eigen::MatrixXd A_linear_reg_, Eigen::VectorXd b_linear_reg_, int deg_, - double acc_time_constant_, int acc_delay_step_, double steer_time_constant_, - int steer_delay_step_, int acc_ctrl_queue_size_, int steer_ctrl_queue_size_, - int steer_ctrl_queue_size_core_) + const Eigen::MatrixXd & weight_acc_layer_1, const Eigen::MatrixXd & weight_steer_layer_1_head, + const Eigen::MatrixXd & weight_steer_layer_1_tail, const Eigen::MatrixXd & weight_acc_layer_2, + const Eigen::MatrixXd & weight_steer_layer_2, const Eigen::MatrixXd & weight_linear_relu_1, + const Eigen::MatrixXd & weight_linear_relu_2, const Eigen::MatrixXd & weight_finalize, + const Eigen::VectorXd & bias_acc_layer_1, const Eigen::VectorXd & bias_steer_layer_1_head, + const Eigen::VectorXd & bias_steer_layer_1_tail, const Eigen::VectorXd & bias_acc_layer_2, + const Eigen::VectorXd & bias_steer_layer_2, const Eigen::VectorXd & bias_linear_relu_1, + const Eigen::VectorXd & bias_linear_relu_2, const Eigen::VectorXd & bias_linear_finalize, + const Eigen::MatrixXd & A_linear_reg, const Eigen::VectorXd & b_linear_reg, const int deg, + const int acc_delay_step, const int steer_delay_step, const int acc_ctrl_queue_size, + const int steer_ctrl_queue_size, const int steer_ctrl_queue_size_core, + const double vel_normalize, const double acc_normalize, const double steer_normalize) { - weight_0 = weight_0_; - weight_1 = weight_1_; - weight_2 = weight_2_; - weight_3 = weight_3_; - weight_4 = weight_4_; - weight_5 = weight_5_; - weight_6 = weight_6_; - weight_7 = weight_7_; - bias_0 = bias_0_; - bias_1 = bias_1_; - bias_2 = bias_2_; - bias_3 = bias_3_; - bias_4 = bias_4_; - bias_5 = bias_5_; - bias_6 = bias_6_; - bias_7 = bias_7_; - A_linear_reg = A_linear_reg_; - b_linear_reg = b_linear_reg_; - deg = deg_; - acc_time_constant = acc_time_constant_; - acc_delay_step = acc_delay_step_; - steer_time_constant = steer_time_constant_; - steer_delay_step = steer_delay_step_; - acc_ctrl_queue_size = acc_ctrl_queue_size_; - steer_ctrl_queue_size = steer_ctrl_queue_size_; - steer_ctrl_queue_size_core = steer_ctrl_queue_size_core_; - } - Eigen::VectorXd error_prediction(Eigen::VectorXd x) + weight_acc_layer_1_ = weight_acc_layer_1; + weight_steer_layer_1_head_ = weight_steer_layer_1_head; + weight_steer_layer_1_tail_ = weight_steer_layer_1_tail; + weight_acc_layer_2_ = weight_acc_layer_2; + weight_steer_layer_2_ = weight_steer_layer_2; + weight_linear_relu_1_ = weight_linear_relu_1; + weight_linear_relu_2_ = weight_linear_relu_2; + weight_finalize_ = weight_finalize; + bias_acc_layer_1_ = bias_acc_layer_1; + bias_steer_layer_1_head_ = bias_steer_layer_1_head; + bias_steer_layer_1_tail_ = bias_steer_layer_1_tail; + bias_acc_layer_2_ = bias_acc_layer_2; + bias_steer_layer_2_ = bias_steer_layer_2; + bias_linear_relu_1_ = bias_linear_relu_1; + bias_linear_relu_2_ = bias_linear_relu_2; + bias_linear_finalize_ = bias_linear_finalize; + A_linear_reg_ = A_linear_reg; + b_linear_reg_ = b_linear_reg; + deg_ = deg; + acc_delay_step_ = acc_delay_step; + steer_delay_step_ = steer_delay_step; + acc_ctrl_queue_size_ = acc_ctrl_queue_size; + steer_ctrl_queue_size_ = steer_ctrl_queue_size; + steer_ctrl_queue_size_core_ = steer_ctrl_queue_size_core; + vel_normalize_ = vel_normalize; + acc_normalize_ = acc_normalize; + steer_normalize_ = steer_normalize; + } + Eigen::VectorXd error_prediction(const Eigen::VectorXd & x) const { - Eigen::VectorXd acc_sub(acc_ctrl_queue_size + 1); - acc_sub[0] = x[1]; - acc_sub.tail(acc_ctrl_queue_size) = x.segment(3, acc_ctrl_queue_size); + Eigen::VectorXd acc_sub(acc_ctrl_queue_size_ + 1); + acc_sub[0] = acc_normalize_ * x[1]; + acc_sub.tail(acc_ctrl_queue_size_) = acc_normalize_ * x.segment(3, acc_ctrl_queue_size_); - Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core + 1); - steer_sub[0] = x[2]; - steer_sub.tail(steer_ctrl_queue_size_core) = - x.segment(3 + acc_ctrl_queue_size, steer_ctrl_queue_size_core); - Eigen::VectorXd acc_layer_1 = relu(weight_0 * acc_sub + bias_0); + Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core_ + 1); + steer_sub[0] = steer_normalize_ * x[2]; + steer_sub.tail(steer_ctrl_queue_size_core_) = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_core_); + const Eigen::VectorXd acc_layer_1 = relu(weight_acc_layer_1_ * acc_sub + bias_acc_layer_1_); - Eigen::VectorXd steer_layer_1(bias_1.size() + bias_2.size()); - steer_layer_1.head(bias_1.size()) = relu(weight_1 * steer_sub + bias_1); + Eigen::VectorXd steer_layer_1( + bias_steer_layer_1_head_.size() + bias_steer_layer_1_tail_.size()); + steer_layer_1.head(bias_steer_layer_1_head_.size()) = + relu(weight_steer_layer_1_head_ * steer_sub + bias_steer_layer_1_head_); - Eigen::VectorXd steer_input_full = x.segment(3 + acc_ctrl_queue_size, steer_ctrl_queue_size); - steer_layer_1.tail(bias_2.size()) = relu(weight_2 * steer_input_full + bias_2); + const Eigen::VectorXd steer_input_full = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_); + steer_layer_1.tail(bias_steer_layer_1_tail_.size()) = + relu(weight_steer_layer_1_tail_ * steer_input_full + bias_steer_layer_1_tail_); - Eigen::VectorXd acc_layer_2 = (weight_3 * acc_layer_1 + bias_3).array().tanh(); + const Eigen::VectorXd acc_layer_2 = relu(weight_acc_layer_2_ * acc_layer_1 + bias_acc_layer_2_); - Eigen::VectorXd steer_layer_2 = (weight_4 * steer_layer_1 + bias_4).array().tanh(); + const Eigen::VectorXd steer_layer_2 = + relu(weight_steer_layer_2_ * steer_layer_1 + bias_steer_layer_2_); Eigen::VectorXd h1(1 + acc_layer_2.size() + steer_layer_2.size()); - h1[0] = x[0]; + h1[0] = vel_normalize_ * x[0]; h1.segment(1, acc_layer_2.size()) = acc_layer_2; h1.tail(steer_layer_2.size()) = steer_layer_2; - Eigen::VectorXd h2 = relu(weight_5 * h1 + bias_5); - Eigen::VectorXd h3 = relu(weight_6 * h2 + bias_6); + const Eigen::VectorXd h2 = relu(weight_linear_relu_1_ * h1 + bias_linear_relu_1_); + const Eigen::VectorXd h3 = relu(weight_linear_relu_2_ * h2 + bias_linear_relu_2_); Eigen::VectorXd h4(h3.size() + acc_layer_2.size() + steer_layer_2.size()); h4.head(h3.size()) = h3; h4.segment(h3.size(), acc_layer_2.size()) = acc_layer_2; h4.tail(steer_layer_2.size()) = steer_layer_2; - Eigen::VectorXd x_for_polynomial_reg(5); + Eigen::VectorXd x_for_polynomial_reg(9); x_for_polynomial_reg.head(3) = x.head(3); - x_for_polynomial_reg[3] = x[3 + acc_delay_step]; - x_for_polynomial_reg[4] = x[3 + acc_ctrl_queue_size + steer_delay_step]; + const int acc_start = 3 + std::max(acc_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(3, 3) = x.segment(acc_start, 3); + const int steer_start = 3 + acc_ctrl_queue_size_ + std::max(steer_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(6, 3) = x.segment(steer_start, 3); + Eigen::VectorXd y = - weight_7 * h4 + bias_7 + - A_linear_reg * get_polynomial_features(x_for_polynomial_reg, deg, A_linear_reg.cols()) + - b_linear_reg; - y[4] = std::min(std::max(y[4], -max_acc_error), max_acc_error); - y[5] = std::min(std::max(y[5], -max_steer_error), max_steer_error); + weight_finalize_ * h4 + bias_linear_finalize_ + + A_linear_reg_ * get_polynomial_features(x_for_polynomial_reg, deg_, A_linear_reg_.cols()) + + b_linear_reg_; + y[4] = std::min(std::max(y[4], -max_acc_error_), max_acc_error_); + y[5] = std::min(std::max(y[5], -max_steer_error_), max_steer_error_); return y; } - Eigen::VectorXd rot_and_d_rot_error_prediction(Eigen::VectorXd x) + Eigen::VectorXd rot_and_d_rot_error_prediction(const Eigen::VectorXd & x) const { - int x_dim = x.size(); - double theta = x[3]; - double v = x[2]; + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; double coef = 2.0 * std::abs(v); coef = coef * coef * coef * coef * coef * coef * coef; if (coef > 1.0) { @@ -279,8 +305,8 @@ class transform_model_to_eigen Therefore, it may be safe to always set coef = 1, and this variable may be eliminated once it is confirmed safe to do so. */ - double cos = std::cos(theta); - double sin = std::sin(theta); + const double cos = std::cos(theta); + const double sin = std::sin(theta); Eigen::Matrix2d Rot; Rot << cos, -sin, sin, cos; @@ -291,7 +317,7 @@ class transform_model_to_eigen vars[1] = x[4]; vars[2] = x[5]; vars.tail(x_dim - 6) = x.tail(x_dim - 6); - Eigen::VectorXd pred = error_prediction(vars); + const Eigen::VectorXd pred = error_prediction(vars); Eigen::VectorXd rot_and_d_rot_pred(8); rot_and_d_rot_pred.head(2) = Rot * pred.head(2); rot_and_d_rot_pred.segment(2, 4) = pred.segment(2, 4); @@ -299,117 +325,165 @@ class transform_model_to_eigen return coef * rot_and_d_rot_pred; } - Eigen::MatrixXd error_prediction_with_diff(Eigen::VectorXd x) + Eigen::MatrixXd error_prediction_with_diff(const Eigen::VectorXd & x) const { - Eigen::VectorXd acc_sub(acc_ctrl_queue_size + 1); - acc_sub[0] = x[1]; - acc_sub.tail(acc_ctrl_queue_size) = x.segment(3, acc_ctrl_queue_size); + Eigen::VectorXd acc_sub(acc_ctrl_queue_size_ + 1); + acc_sub[0] = acc_normalize_ * x[1]; + acc_sub.tail(acc_ctrl_queue_size_) = acc_normalize_ * x.segment(3, acc_ctrl_queue_size_); - Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core + 1); - steer_sub[0] = x[2]; - steer_sub.tail(steer_ctrl_queue_size_core) = - x.segment(3 + acc_ctrl_queue_size, steer_ctrl_queue_size_core); - Eigen::VectorXd steer_input_full = x.segment(3 + acc_ctrl_queue_size, steer_ctrl_queue_size); + Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core_ + 1); + steer_sub[0] = steer_normalize_ * x[2]; + steer_sub.tail(steer_ctrl_queue_size_core_) = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_core_); + const Eigen::VectorXd steer_input_full = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_); - Eigen::VectorXd u_acc_layer_1 = weight_0 * acc_sub + bias_0; - Eigen::VectorXd acc_layer_1 = relu(u_acc_layer_1); + const Eigen::VectorXd u_acc_layer_1 = weight_acc_layer_1_ * acc_sub + bias_acc_layer_1_; + const Eigen::VectorXd acc_layer_1 = relu(u_acc_layer_1); - Eigen::VectorXd u_steer_layer_1(bias_1.size() + bias_2.size()); - u_steer_layer_1.head(bias_1.size()) = weight_1 * steer_sub + bias_1; - u_steer_layer_1.tail(bias_2.size()) = weight_2 * steer_input_full + bias_2; - Eigen::VectorXd steer_layer_1 = relu(u_steer_layer_1); + Eigen::VectorXd u_steer_layer_1( + bias_steer_layer_1_head_.size() + bias_steer_layer_1_tail_.size()); + u_steer_layer_1.head(bias_steer_layer_1_head_.size()) = + weight_steer_layer_1_head_ * steer_sub + bias_steer_layer_1_head_; + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size()) = + weight_steer_layer_1_tail_ * steer_input_full + bias_steer_layer_1_tail_; + const Eigen::VectorXd steer_layer_1 = relu(u_steer_layer_1); - Eigen::VectorXd u_acc_layer_2 = weight_3 * acc_layer_1 + bias_3; - Eigen::VectorXd acc_layer_2 = u_acc_layer_2.array().tanh(); + const Eigen::VectorXd u_acc_layer_2 = weight_acc_layer_2_ * acc_layer_1 + bias_acc_layer_2_; + const Eigen::VectorXd acc_layer_2 = relu(u_acc_layer_2); - Eigen::VectorXd u_steer_layer_2 = weight_4 * steer_layer_1 + bias_4; - Eigen::VectorXd steer_layer_2 = u_steer_layer_2.array().tanh(); + const Eigen::VectorXd u_steer_layer_2 = + weight_steer_layer_2_ * steer_layer_1 + bias_steer_layer_2_; + const Eigen::VectorXd steer_layer_2 = relu(u_steer_layer_2); Eigen::VectorXd h1(1 + acc_layer_2.size() + steer_layer_2.size()); - h1[0] = x[0]; + h1[0] = vel_normalize_ * x[0]; h1.segment(1, acc_layer_2.size()) = acc_layer_2; h1.tail(steer_layer_2.size()) = steer_layer_2; - Eigen::VectorXd u2 = weight_5 * h1 + bias_5; - Eigen::VectorXd h2 = relu(u2); - Eigen::VectorXd u3 = weight_6 * h2 + bias_6; - Eigen::VectorXd h3 = relu(u3); + const Eigen::VectorXd u2 = weight_linear_relu_1_ * h1 + bias_linear_relu_1_; + const Eigen::VectorXd h2 = relu(u2); + const Eigen::VectorXd u3 = weight_linear_relu_2_ * h2 + bias_linear_relu_2_; + const Eigen::VectorXd h3 = relu(u3); Eigen::VectorXd h4(h3.size() + acc_layer_2.size() + steer_layer_2.size()); h4.head(h3.size()) = h3; h4.segment(h3.size(), acc_layer_2.size()) = acc_layer_2; h4.tail(steer_layer_2.size()) = steer_layer_2; - Eigen::VectorXd x_for_polynomial_reg(5); + + Eigen::VectorXd x_for_polynomial_reg(9); x_for_polynomial_reg.head(3) = x.head(3); - x_for_polynomial_reg[3] = x[3 + acc_delay_step]; - x_for_polynomial_reg[4] = x[3 + acc_ctrl_queue_size + steer_delay_step]; - Eigen::MatrixXd polynomial_features_with_diff = - get_polynomial_features_with_diff(x_for_polynomial_reg, deg, A_linear_reg.cols()); + const int acc_start = 3 + std::max(acc_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(3, 3) = x.segment(acc_start, 3); + const int steer_start = 3 + acc_ctrl_queue_size_ + std::max(steer_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(6, 3) = x.segment(steer_start, 3); + const Eigen::MatrixXd polynomial_features_with_diff = + get_polynomial_features_with_diff(x_for_polynomial_reg, deg_, A_linear_reg_.cols()); Eigen::VectorXd y = - weight_7 * h4 + bias_7 + - A_linear_reg * polynomial_features_with_diff.block(0, 0, A_linear_reg.cols(), 1) + - b_linear_reg; - y[4] = std::min(std::max(y[4], -max_acc_error), max_acc_error); - y[5] = std::min(std::max(y[5], -max_steer_error), max_steer_error); - // Eigen::MatrixXd dy_dh4 = weight_7; - - Eigen::MatrixXd dy_dh3 = weight_7.block(0, 0, y.size(), h3.size()); - Eigen::MatrixXd dy_dh2 = d_relu_product(dy_dh3, u3) * weight_6; - Eigen::MatrixXd dy_dh1 = d_relu_product(dy_dh2, u2) * weight_5; - - Eigen::MatrixXd dy_da2 = dy_dh1.block(0, 1, y.size(), acc_layer_2.size()) + - weight_7.block(0, h3.size(), y.size(), acc_layer_2.size()); - Eigen::MatrixXd dy_ds2 = + weight_finalize_ * h4 + bias_linear_finalize_ + + A_linear_reg_ * polynomial_features_with_diff.block(0, 0, A_linear_reg_.cols(), 1) + + b_linear_reg_; + y[4] = std::min(std::max(y[4], -max_acc_error_), max_acc_error_); + y[5] = std::min(std::max(y[5], -max_steer_error_), max_steer_error_); + + const Eigen::MatrixXd dy_dh3 = weight_finalize_.block(0, 0, y.size(), h3.size()); + const Eigen::MatrixXd dy_dh2 = d_relu_product(dy_dh3, u3) * weight_linear_relu_2_; + const Eigen::MatrixXd dy_dh1 = d_relu_product(dy_dh2, u2) * weight_linear_relu_1_; + + const Eigen::MatrixXd dy_da2 = + dy_dh1.block(0, 1, y.size(), acc_layer_2.size()) + + weight_finalize_.block(0, h3.size(), y.size(), acc_layer_2.size()); + const Eigen::MatrixXd dy_ds2 = dy_dh1.block(0, 1 + acc_layer_2.size(), y.size(), steer_layer_2.size()) + - weight_7.block(0, h3.size() + acc_layer_2.size(), y.size(), steer_layer_2.size()); - Eigen::MatrixXd dy_da1 = d_tanh_product(dy_da2, u_acc_layer_2) * weight_3; - Eigen::MatrixXd dy_ds1 = d_tanh_product(dy_ds2, u_steer_layer_2) * weight_4; + weight_finalize_.block(0, h3.size() + acc_layer_2.size(), y.size(), steer_layer_2.size()); + const Eigen::MatrixXd dy_da1 = d_relu_product(dy_da2, u_acc_layer_2) * weight_acc_layer_2_; + const Eigen::MatrixXd dy_ds1 = d_relu_product(dy_ds2, u_steer_layer_2) * weight_steer_layer_2_; - Eigen::MatrixXd dy_d_acc = d_relu_product(dy_da1, u_acc_layer_1) * weight_0; + const Eigen::MatrixXd dy_d_acc = d_relu_product(dy_da1, u_acc_layer_1) * weight_acc_layer_1_; Eigen::MatrixXd dy_d_steer = Eigen::MatrixXd::Zero(y.size(), steer_input_full.size() + 1); dy_d_steer.block(0, 1, y.size(), steer_input_full.size()) += d_relu_product( - dy_ds1.block(0, bias_1.size(), y.size(), bias_2.size()), - u_steer_layer_1.tail(bias_2.size())) * - weight_2; + dy_ds1.block(0, bias_steer_layer_1_head_.size(), y.size(), bias_steer_layer_1_tail_.size()), + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size())) * + weight_steer_layer_1_tail_; dy_d_steer.block(0, 0, y.size(), steer_sub.size()) += d_relu_product( - dy_ds1.block(0, 0, y.size(), bias_1.size()), u_steer_layer_1.head(bias_1.size())) * - weight_1; + dy_ds1.block(0, 0, y.size(), bias_steer_layer_1_head_.size()), + u_steer_layer_1.head(bias_steer_layer_1_head_.size())) * + weight_steer_layer_1_head_; Eigen::MatrixXd result = Eigen::MatrixXd::Zero(y.size(), x.size() + 1); result.col(0) = y; - result.col(1) = dy_dh1.col(0); - result.col(2) = dy_d_acc.col(0); - result.col(3) = dy_d_steer.col(0); - result.block(0, 4, y.size(), acc_ctrl_queue_size) = - dy_d_acc.block(0, 1, y.size(), acc_ctrl_queue_size); - result.block(0, 4 + acc_ctrl_queue_size, y.size(), steer_ctrl_queue_size) = - dy_d_steer.block(0, 1, y.size(), steer_ctrl_queue_size); - - Eigen::MatrixXd polynomial_reg_diff = - A_linear_reg * - polynomial_features_with_diff.block(0, 1, A_linear_reg.cols(), x_for_polynomial_reg.size()); + result.col(1) = vel_normalize_ * dy_dh1.col(0); + result.col(2) = acc_normalize_ * dy_d_acc.col(0); + result.col(3) = steer_normalize_ * dy_d_steer.col(0); + result.block(0, 4, y.size(), acc_ctrl_queue_size_) = + acc_normalize_ * dy_d_acc.block(0, 1, y.size(), acc_ctrl_queue_size_); + result.block(0, 4 + acc_ctrl_queue_size_, y.size(), steer_ctrl_queue_size_) = + steer_normalize_ * dy_d_steer.block(0, 1, y.size(), steer_ctrl_queue_size_); + + const Eigen::MatrixXd polynomial_reg_diff = + A_linear_reg_ * + polynomial_features_with_diff.block(0, 1, A_linear_reg_.cols(), x_for_polynomial_reg.size()); result.block(0, 1, y.size(), 3) += polynomial_reg_diff.block(0, 0, y.size(), 3); - result.block(0, 4 + acc_delay_step, y.size(), 1) += - polynomial_reg_diff.block(0, 3, y.size(), 1); - result.block(0, 4 + acc_ctrl_queue_size + steer_delay_step, y.size(), 1) += - polynomial_reg_diff.block(0, 4, y.size(), 1); + result.block(0, 1 + acc_start, y.size(), 3) += polynomial_reg_diff.block(0, 3, y.size(), 3); + result.block(0, 1 + steer_start, y.size(), 3) += polynomial_reg_diff.block(0, 6, y.size(), 3); return result; } - Eigen::MatrixXd rot_and_d_rot_error_prediction_with_diff(Eigen::VectorXd x) + Eigen::MatrixXd rot_and_d_rot_error_prediction_with_diff(const Eigen::VectorXd & x) const + { + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + + Eigen::Matrix2d dRot; + dRot << -sin, -cos, cos, -sin; + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + + const Eigen::MatrixXd pred_d_pred = error_prediction_with_diff(vars); + const Eigen::VectorXd pred = pred_d_pred.col(0); + const Eigen::MatrixXd d_pred = pred_d_pred.block(0, 1, 6, x_dim - 3); + Eigen::MatrixXd rot_and_d_rot_pred_with_diff = Eigen::MatrixXd::Zero(6, x_dim + 2); + Eigen::MatrixXd rot_pred_with_diff(6, x_dim - 3); + rot_pred_with_diff.block(0, 0, 2, x_dim - 3) = Rot * d_pred.block(0, 0, 2, x_dim - 3); + rot_pred_with_diff.block(2, 0, 4, x_dim - 3) = d_pred.block(2, 0, 4, x_dim - 3); + + rot_and_d_rot_pred_with_diff.block(0, 0, 2, 1) = Rot * pred.head(2); + rot_and_d_rot_pred_with_diff.block(2, 0, 4, 1) = pred.segment(2, 4); + rot_and_d_rot_pred_with_diff.block(0, 1, 2, 1) = dRot * pred.head(2); + rot_and_d_rot_pred_with_diff.col(2 + 2) = rot_pred_with_diff.col(0); + rot_and_d_rot_pred_with_diff.col(2 + 4) = rot_pred_with_diff.col(1); + rot_and_d_rot_pred_with_diff.col(2 + 5) = rot_pred_with_diff.col(2); + rot_and_d_rot_pred_with_diff.block(0, 2 + 6, 6, x_dim - 6) = + rot_pred_with_diff.block(0, 3, 6, x_dim - 6); + return coef * rot_and_d_rot_pred_with_diff; + } + Eigen::MatrixXd rot_and_d_rot_error_prediction_with_poly_diff(const Eigen::VectorXd & x) const { - int x_dim = x.size(); - double theta = x[3]; - double v = x[2]; + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; double coef = 2.0 * std::abs(v); coef = coef * coef * coef * coef * coef * coef * coef; if (coef > 1.0) { coef = 1.0; } - double cos = std::cos(theta); - double sin = std::sin(theta); + const double cos = std::cos(theta); + const double sin = std::sin(theta); Eigen::Matrix2d Rot; Rot << cos, -sin, sin, cos; @@ -421,9 +495,25 @@ class transform_model_to_eigen vars[2] = x[5]; vars.tail(x_dim - 6) = x.tail(x_dim - 6); - Eigen::MatrixXd pred_d_pred = error_prediction_with_diff(vars); - Eigen::VectorXd pred = pred_d_pred.col(0); - Eigen::MatrixXd d_pred = pred_d_pred.block(0, 1, 6, x_dim - 3); + const Eigen::VectorXd pred = error_prediction(vars); + Eigen::MatrixXd d_pred = Eigen::MatrixXd::Zero(6, x_dim - 3); + + Eigen::VectorXd x_for_polynomial_reg(9); + x_for_polynomial_reg.head(3) = x.head(3); + const int acc_start = 3 + std::max(acc_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(3, 3) = x.segment(acc_start, 3); + const int steer_start = 3 + acc_ctrl_queue_size_ + std::max(steer_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(6, 3) = x.segment(steer_start, 3); + + const Eigen::MatrixXd polynomial_features_with_diff = + get_polynomial_features_with_diff(x_for_polynomial_reg, deg_, A_linear_reg_.cols()); + const Eigen::MatrixXd polynomial_reg_diff = + A_linear_reg_ * + polynomial_features_with_diff.block(0, 1, A_linear_reg_.cols(), x_for_polynomial_reg.size()); + d_pred.block(0, 0, 6, 3) += polynomial_reg_diff.block(0, 0, 6, 3); + d_pred.block(0, 1 + acc_start, 6, 3) += polynomial_reg_diff.block(0, 3, 6, 3); + d_pred.block(0, 1 + steer_start, 6, 3) += polynomial_reg_diff.block(0, 6, 6, 3); + Eigen::MatrixXd rot_and_d_rot_pred_with_diff = Eigen::MatrixXd::Zero(6, x_dim + 2); Eigen::MatrixXd rot_pred_with_diff(6, x_dim - 3); rot_pred_with_diff.block(0, 0, 2, x_dim - 3) = Rot * d_pred.block(0, 0, 2, x_dim - 3); @@ -439,22 +529,47 @@ class transform_model_to_eigen rot_pred_with_diff.block(0, 3, 6, x_dim - 6); return coef * rot_and_d_rot_pred_with_diff; } - Eigen::MatrixXd Rotated_error_prediction(Eigen::MatrixXd X) + Eigen::VectorXd rotated_error_prediction(const Eigen::VectorXd & x) const { - int X_cols = X.cols(); - int x_dim = X.rows(); + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + const Eigen::VectorXd pred = error_prediction(vars); + Eigen::VectorXd rot_pred(6); + rot_pred.head(2) = coef * Rot * pred.head(2); + rot_pred.tail(4) = coef * pred.tail(4); + return rot_pred; + } + Eigen::MatrixXd Rotated_error_prediction(const Eigen::MatrixXd & X) const + { + const int X_cols = X.cols(); + const int x_dim = X.rows(); Eigen::MatrixXd Pred(6, X_cols); for (int i = 0; i < X_cols; i++) { - Eigen::VectorXd x = X.col(i); - double theta = x[3]; - double v = x[2]; + const Eigen::VectorXd x = X.col(i); + const double theta = x[3]; + const double v = x[2]; double coef = 2.0 * std::abs(v); coef = coef * coef * coef * coef * coef * coef * coef; if (coef > 1.0) { coef = 1.0; } - double cos = std::cos(theta); - double sin = std::sin(theta); + const double cos = std::cos(theta); + const double sin = std::sin(theta); Eigen::Matrix2d Rot; Rot << cos, -sin, sin, cos; Eigen::VectorXd vars(x_dim - 3); @@ -464,14 +579,952 @@ class transform_model_to_eigen vars[1] = x[4]; vars[2] = x[5]; vars.tail(x_dim - 6) = x.tail(x_dim - 6); - Eigen::VectorXd pred = error_prediction(vars); + const Eigen::VectorXd pred = error_prediction(vars); Pred.block(0, i, 2, 1) = coef * Rot * pred.head(2); Pred.block(2, i, 4, 1) = coef * pred.tail(4); } return Pred; } }; +class transform_model_with_memory_to_eigen +{ +private: + Eigen::MatrixXd weight_acc_layer_1_; + Eigen::MatrixXd weight_steer_layer_1_head_; + Eigen::MatrixXd weight_steer_layer_1_tail_; + Eigen::MatrixXd weight_acc_layer_2_; + Eigen::MatrixXd weight_steer_layer_2_; + Eigen::MatrixXd weight_lstm_ih_; + Eigen::MatrixXd weight_lstm_hh_; + Eigen::MatrixXd weight_linear_relu_1_; + Eigen::MatrixXd weight_linear_relu_2_; + Eigen::MatrixXd weight_finalize_; + Eigen::VectorXd bias_acc_layer_1_; + Eigen::VectorXd bias_steer_layer_1_head_; + Eigen::VectorXd bias_steer_layer_1_tail_; + Eigen::VectorXd bias_acc_layer_2_; + Eigen::VectorXd bias_steer_layer_2_; + Eigen::VectorXd bias_lstm_ih_; + Eigen::VectorXd bias_lstm_hh_; + Eigen::VectorXd bias_linear_relu_1_; + Eigen::VectorXd bias_linear_relu_2_; + Eigen::VectorXd bias_linear_finalize_; + Eigen::MatrixXd A_linear_reg_; + Eigen::VectorXd b_linear_reg_; + int deg_; + int acc_delay_step_; + int steer_delay_step_; + int acc_ctrl_queue_size_; + int steer_ctrl_queue_size_; + int steer_ctrl_queue_size_core_; + double vel_normalize_; + double acc_normalize_; + double steer_normalize_; + + static constexpr double max_acc_error_ = 20.0; + static constexpr double max_steer_error_ = 20.0; + Eigen::VectorXd h_, c_; + Eigen::MatrixXd H_, C_; + Eigen::MatrixXd dy_dhc_, dhc_dhc_, dhc_dx_; + Eigen::MatrixXd dy_dhc_pre_, dhc_dx_pre_; + +public: + transform_model_with_memory_to_eigen() {} + void set_params( + const Eigen::MatrixXd & weight_acc_layer_1, const Eigen::MatrixXd & weight_steer_layer_1_head, + const Eigen::MatrixXd & weight_steer_layer_1_tail, const Eigen::MatrixXd & weight_acc_layer_2, + const Eigen::MatrixXd & weight_steer_layer_2, const Eigen::MatrixXd & weight_lstm_ih, + const Eigen::MatrixXd & weight_lstm_hh, const Eigen::MatrixXd & weight_linear_relu_1, + const Eigen::MatrixXd & weight_linear_relu_2, const Eigen::MatrixXd & weight_finalize, + const Eigen::VectorXd & bias_acc_layer_1, const Eigen::VectorXd & bias_steer_layer_1_head, + const Eigen::VectorXd & bias_steer_layer_1_tail, const Eigen::VectorXd & bias_acc_layer_2, + const Eigen::VectorXd & bias_steer_layer_2, const Eigen::VectorXd & bias_lstm_ih, + const Eigen::VectorXd & bias_lstm_hh, const Eigen::VectorXd & bias_linear_relu_1, + const Eigen::VectorXd & bias_linear_relu_2, const Eigen::VectorXd & bias_linear_finalize) + { + weight_acc_layer_1_ = weight_acc_layer_1; + weight_steer_layer_1_head_ = weight_steer_layer_1_head; + weight_steer_layer_1_tail_ = weight_steer_layer_1_tail; + weight_acc_layer_2_ = weight_acc_layer_2; + weight_steer_layer_2_ = weight_steer_layer_2; + weight_lstm_ih_ = weight_lstm_ih; + weight_lstm_hh_ = weight_lstm_hh; + weight_linear_relu_1_ = weight_linear_relu_1; + weight_linear_relu_2_ = weight_linear_relu_2; + weight_finalize_ = weight_finalize; + bias_acc_layer_1_ = bias_acc_layer_1; + bias_steer_layer_1_head_ = bias_steer_layer_1_head; + bias_steer_layer_1_tail_ = bias_steer_layer_1_tail; + bias_acc_layer_2_ = bias_acc_layer_2; + bias_steer_layer_2_ = bias_steer_layer_2; + bias_lstm_ih_ = bias_lstm_ih; + bias_lstm_hh_ = bias_lstm_hh; + bias_linear_relu_1_ = bias_linear_relu_1; + bias_linear_relu_2_ = bias_linear_relu_2; + bias_linear_finalize_ = bias_linear_finalize; + } + void set_params_res( + const Eigen::MatrixXd & A_linear_reg, const Eigen::VectorXd & b_linear_reg, const int deg, + const int acc_delay_step, const int steer_delay_step, const int acc_ctrl_queue_size, + const int steer_ctrl_queue_size, const int steer_ctrl_queue_size_core, + const double vel_normalize, const double acc_normalize, const double steer_normalize) + { + A_linear_reg_ = A_linear_reg; + b_linear_reg_ = b_linear_reg; + deg_ = deg; + acc_delay_step_ = acc_delay_step; + steer_delay_step_ = steer_delay_step; + acc_ctrl_queue_size_ = acc_ctrl_queue_size; + steer_ctrl_queue_size_ = steer_ctrl_queue_size; + steer_ctrl_queue_size_core_ = steer_ctrl_queue_size_core; + vel_normalize_ = vel_normalize; + acc_normalize_ = acc_normalize; + steer_normalize_ = steer_normalize; + const int h_dim = weight_lstm_hh_.cols(); + h_ = Eigen::VectorXd::Zero(h_dim); + c_ = Eigen::VectorXd::Zero(h_dim); + dy_dhc_pre_ = Eigen::MatrixXd::Zero(6, 2 * h_dim); + dhc_dx_pre_ = + Eigen::MatrixXd::Zero(2 * h_dim, 3 + acc_ctrl_queue_size_ + steer_ctrl_queue_size_); + dy_dhc_ = Eigen::MatrixXd::Zero(6, 2 * h_dim); + dhc_dhc_ = Eigen::MatrixXd::Zero(2 * h_dim, 2 * h_dim); + dhc_dx_ = Eigen::MatrixXd::Zero(2 * h_dim, 6 + acc_ctrl_queue_size_ + steer_ctrl_queue_size_); + } + void set_lstm(const Eigen::VectorXd & h, const Eigen::VectorXd & c) + { + h_ = h; + c_ = c; + } + void set_lstm_for_candidate( + const Eigen::VectorXd & h, const Eigen::VectorXd & c, const int sample_size) + { + H_ = Eigen::MatrixXd::Zero(h.size(), sample_size); + C_ = Eigen::MatrixXd::Zero(c.size(), sample_size); + for (int i = 0; i < sample_size; i++) { + H_.col(i) = h; + C_.col(i) = c; + } + } + Eigen::VectorXd get_h() const { return h_; } + Eigen::VectorXd get_c() const { return c_; } + Eigen::MatrixXd get_dy_dhc() const { return dy_dhc_; } + Eigen::MatrixXd get_dhc_dhc() const { return dhc_dhc_; } + Eigen::MatrixXd get_dhc_dx() const { return dhc_dx_; } + Eigen::VectorXd error_prediction(const Eigen::VectorXd & x, const int cell_index) + { + Eigen::VectorXd acc_sub(acc_ctrl_queue_size_ + 1); + acc_sub[0] = acc_normalize_ * x[1]; + acc_sub.tail(acc_ctrl_queue_size_) = acc_normalize_ * x.segment(3, acc_ctrl_queue_size_); + Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core_ + 1); + steer_sub[0] = steer_normalize_ * x[2]; + steer_sub.tail(steer_ctrl_queue_size_core_) = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_core_); + const Eigen::VectorXd acc_layer_1 = relu(weight_acc_layer_1_ * acc_sub + bias_acc_layer_1_); + Eigen::VectorXd steer_layer_1( + bias_steer_layer_1_head_.size() + bias_steer_layer_1_tail_.size()); + steer_layer_1.head(bias_steer_layer_1_head_.size()) = + relu(weight_steer_layer_1_head_ * steer_sub + bias_steer_layer_1_head_); + + const Eigen::VectorXd steer_input_full = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_); + steer_layer_1.tail(bias_steer_layer_1_tail_.size()) = + relu(weight_steer_layer_1_tail_ * steer_input_full + bias_steer_layer_1_tail_); + + const Eigen::VectorXd acc_layer_2 = relu(weight_acc_layer_2_ * acc_layer_1 + bias_acc_layer_2_); + + const Eigen::VectorXd steer_layer_2 = + relu(weight_steer_layer_2_ * steer_layer_1 + bias_steer_layer_2_); + Eigen::VectorXd h1(1 + acc_layer_2.size() + steer_layer_2.size()); + h1[0] = vel_normalize_ * x[0]; + h1.segment(1, acc_layer_2.size()) = acc_layer_2; + h1.tail(steer_layer_2.size()) = steer_layer_2; + Eigen::VectorXd h, c; + if (cell_index < 0) { + h = h_; + c = c_; + } else { + h = H_.col(cell_index); + c = C_.col(cell_index); + } + + const Eigen::VectorXd i_new = sigmoid( + weight_lstm_ih_.block(0, 0, h_.size(), h1.size()) * h1 + bias_lstm_ih_.head(h_.size()) + + weight_lstm_hh_.block(0, 0, h_.size(), h_.size()) * h + bias_lstm_hh_.head(h_.size())); + const Eigen::VectorXd f_new = sigmoid( + weight_lstm_ih_.block(h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(h_.size(), h_.size()) + + weight_lstm_hh_.block(h_.size(), 0, h_.size(), h_.size()) * h + + bias_lstm_hh_.segment(h_.size(), h_.size())); + const Eigen::VectorXd g_new = tanh( + weight_lstm_ih_.block(2 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(2 * h_.size(), h_.size()) + + weight_lstm_hh_.block(2 * h_.size(), 0, h_.size(), h_.size()) * h + + bias_lstm_hh_.segment(2 * h_.size(), h_.size())); + const Eigen::VectorXd o_new = sigmoid( + weight_lstm_ih_.block(3 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(3 * h_.size(), h_.size()) + + weight_lstm_hh_.block(3 * h_.size(), 0, h_.size(), h_.size()) * h + + bias_lstm_hh_.segment(3 * h_.size(), h_.size())); + const Eigen::VectorXd c_new = f_new.array() * c.array() + i_new.array() * g_new.array(); + const Eigen::VectorXd h_new = o_new.array() * tanh(c_new).array(); + + Eigen::VectorXd h2(h_new.size() + bias_linear_relu_1_.size()); + h2.head(h_new.size()) = h_new; + h2.tail(bias_linear_relu_1_.size()) = relu(weight_linear_relu_1_ * h1 + bias_linear_relu_1_); + + const Eigen::VectorXd h3 = relu(weight_linear_relu_2_ * h2 + bias_linear_relu_2_); + Eigen::VectorXd h4(h3.size() + acc_layer_2.size() + steer_layer_2.size()); + h4.head(h3.size()) = h3; + h4.segment(h3.size(), acc_layer_2.size()) = acc_layer_2; + h4.tail(steer_layer_2.size()) = steer_layer_2; + + Eigen::VectorXd x_for_polynomial_reg(9); + x_for_polynomial_reg.head(3) = x.head(3); + const int acc_start = 3 + std::max(acc_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(3, 3) = x.segment(acc_start, 3); + const int steer_start = 3 + acc_ctrl_queue_size_ + std::max(steer_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(6, 3) = x.segment(steer_start, 3); + + Eigen::VectorXd y = + weight_finalize_ * h4 + bias_linear_finalize_ + + A_linear_reg_ * get_polynomial_features(x_for_polynomial_reg, deg_, A_linear_reg_.cols()) + + b_linear_reg_; + + y[4] = std::min(std::max(y[4], -max_acc_error_), max_acc_error_); + y[5] = std::min(std::max(y[5], -max_steer_error_), max_steer_error_); + + if (cell_index < 0) { + h_ = h_new; + c_ = c_new; + } else { + H_.col(cell_index) = h_new; + C_.col(cell_index) = c_new; + } + return y; + } + + Eigen::MatrixXd error_prediction_with_diff(const Eigen::VectorXd & x) + { + Eigen::VectorXd acc_sub(acc_ctrl_queue_size_ + 1); + acc_sub[0] = acc_normalize_ * x[1]; + acc_sub.tail(acc_ctrl_queue_size_) = acc_normalize_ * x.segment(3, acc_ctrl_queue_size_); + Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core_ + 1); + steer_sub[0] = steer_normalize_ * x[2]; + steer_sub.tail(steer_ctrl_queue_size_core_) = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_core_); + const Eigen::VectorXd steer_input_full = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_); + + const Eigen::VectorXd u_acc_layer_1 = weight_acc_layer_1_ * acc_sub + bias_acc_layer_1_; + const Eigen::VectorXd acc_layer_1 = relu(u_acc_layer_1); + + Eigen::VectorXd u_steer_layer_1( + bias_steer_layer_1_head_.size() + bias_steer_layer_1_tail_.size()); + u_steer_layer_1.head(bias_steer_layer_1_head_.size()) = + weight_steer_layer_1_head_ * steer_sub + bias_steer_layer_1_head_; + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size()) = + weight_steer_layer_1_tail_ * steer_input_full + bias_steer_layer_1_tail_; + const Eigen::VectorXd steer_layer_1 = relu(u_steer_layer_1); + + const Eigen::VectorXd u_acc_layer_2 = weight_acc_layer_2_ * acc_layer_1 + bias_acc_layer_2_; + const Eigen::VectorXd acc_layer_2 = relu(u_acc_layer_2); + + const Eigen::VectorXd u_steer_layer_2 = + weight_steer_layer_2_ * steer_layer_1 + bias_steer_layer_2_; + const Eigen::VectorXd steer_layer_2 = relu(u_steer_layer_2); + + Eigen::VectorXd h1(1 + acc_layer_2.size() + steer_layer_2.size()); + h1[0] = vel_normalize_ * x[0]; + h1.segment(1, acc_layer_2.size()) = acc_layer_2; + h1.tail(steer_layer_2.size()) = steer_layer_2; + + const Eigen::VectorXd u_i_new = + weight_lstm_ih_.block(0, 0, h_.size(), h1.size()) * h1 + bias_lstm_ih_.head(h_.size()) + + weight_lstm_hh_.block(0, 0, h_.size(), h_.size()) * h_ + bias_lstm_hh_.head(h_.size()); + const Eigen::VectorXd u_f_new = weight_lstm_ih_.block(h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(h_.size(), h_.size()) + + weight_lstm_hh_.block(h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(h_.size(), h_.size()); + const Eigen::VectorXd u_g_new = + weight_lstm_ih_.block(2 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(2 * h_.size(), h_.size()) + + weight_lstm_hh_.block(2 * h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(2 * h_.size(), h_.size()); + const Eigen::VectorXd u_o_new = + weight_lstm_ih_.block(3 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(3 * h_.size(), h_.size()) + + weight_lstm_hh_.block(3 * h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(3 * h_.size(), h_.size()); + const Eigen::VectorXd i_new = sigmoid(u_i_new); + const Eigen::VectorXd f_new = sigmoid(u_f_new); + const Eigen::VectorXd g_new = tanh(u_g_new); + const Eigen::VectorXd o_new = sigmoid(u_o_new); + + const Eigen::VectorXd c_new = f_new.array() * c_.array() + i_new.array() * g_new.array(); + const Eigen::VectorXd h_new = o_new.array() * tanh(c_new).array(); + + Eigen::VectorXd h2(h_new.size() + bias_linear_relu_1_.size()); + h2.head(h_new.size()) = h_new; + const Eigen::VectorXd u2 = weight_linear_relu_1_ * h1 + bias_linear_relu_1_; + h2.tail(bias_linear_relu_1_.size()) = relu(u2); + + const Eigen::VectorXd u3 = weight_linear_relu_2_ * h2 + bias_linear_relu_2_; + const Eigen::VectorXd h3 = relu(u3); + Eigen::VectorXd h4(h3.size() + acc_layer_2.size() + steer_layer_2.size()); + + h4.head(h3.size()) = h3; + h4.segment(h3.size(), acc_layer_2.size()) = acc_layer_2; + h4.tail(steer_layer_2.size()) = steer_layer_2; + + Eigen::VectorXd x_for_polynomial_reg(9); + x_for_polynomial_reg.head(3) = x.head(3); + const int acc_start = 3 + std::max(acc_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(3, 3) = x.segment(acc_start, 3); + const int steer_start = 3 + acc_ctrl_queue_size_ + std::max(steer_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(6, 3) = x.segment(steer_start, 3); + + const Eigen::MatrixXd polynomial_features_with_diff = + get_polynomial_features_with_diff(x_for_polynomial_reg, deg_, A_linear_reg_.cols()); + + Eigen::VectorXd y = + weight_finalize_ * h4 + bias_linear_finalize_ + + A_linear_reg_ * polynomial_features_with_diff.block(0, 0, A_linear_reg_.cols(), 1) + + b_linear_reg_; + + y[4] = std::min(std::max(y[4], -max_acc_error_), max_acc_error_); + y[5] = std::min(std::max(y[5], -max_steer_error_), max_steer_error_); + + const Eigen::MatrixXd dy_dh3 = weight_finalize_.block(0, 0, y.size(), h3.size()); + const Eigen::MatrixXd dy_dh2 = d_relu_product(dy_dh3, u3) * weight_linear_relu_2_; + const Eigen::MatrixXd dy_dh2_head = dy_dh2.block(0, 0, y.size(), h_new.size()); + const Eigen::MatrixXd dy_dh2_tail = + dy_dh2.block(0, h_new.size(), y.size(), bias_linear_relu_1_.size()); + + const Eigen::MatrixXd dy_do = dy_dh2_head * tanh(c_new).asDiagonal(); + const Eigen::MatrixXd dy_dc_new = d_tanh_product(dy_dh2_head * o_new.asDiagonal(), c_new); + Eigen::MatrixXd dy_dh1 = d_sigmoid_product(dy_do, u_o_new) * + weight_lstm_ih_.block(3 * h_.size(), 0, h_.size(), h1.size()); + + dy_dh1 += d_sigmoid_product(dy_dc_new * c_.asDiagonal(), u_f_new) * + weight_lstm_ih_.block(h_.size(), 0, h_.size(), h1.size()); + dy_dh1 += d_tanh_product(dy_dc_new * i_new.asDiagonal(), u_g_new) * + weight_lstm_ih_.block(2 * h_.size(), 0, h_.size(), h1.size()); + dy_dh1 += d_sigmoid_product(dy_dc_new * g_new.asDiagonal(), u_i_new) * + weight_lstm_ih_.block(0, 0, h_.size(), h1.size()); + + dy_dh1 += d_relu_product(dy_dh2_tail, u2) * weight_linear_relu_1_; + + const Eigen::MatrixXd dy_da2 = + dy_dh1.block(0, 1, y.size(), acc_layer_2.size()) + + weight_finalize_.block(0, h3.size(), y.size(), acc_layer_2.size()); + const Eigen::MatrixXd dy_ds2 = + dy_dh1.block(0, 1 + acc_layer_2.size(), y.size(), steer_layer_2.size()) + + weight_finalize_.block(0, h3.size() + acc_layer_2.size(), y.size(), steer_layer_2.size()); + const Eigen::MatrixXd dy_da1 = d_relu_product(dy_da2, u_acc_layer_2) * weight_acc_layer_2_; + const Eigen::MatrixXd dy_ds1 = d_relu_product(dy_ds2, u_steer_layer_2) * weight_steer_layer_2_; + + const Eigen::MatrixXd dy_d_acc = d_relu_product(dy_da1, u_acc_layer_1) * weight_acc_layer_1_; + Eigen::MatrixXd dy_d_steer = Eigen::MatrixXd::Zero(y.size(), steer_input_full.size() + 1); + dy_d_steer.block(0, 1, y.size(), steer_input_full.size()) += + d_relu_product( + dy_ds1.block(0, bias_steer_layer_1_head_.size(), y.size(), bias_steer_layer_1_tail_.size()), + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size())) * + weight_steer_layer_1_tail_; + dy_d_steer.block(0, 0, y.size(), steer_sub.size()) += + d_relu_product( + dy_ds1.block(0, 0, y.size(), bias_steer_layer_1_head_.size()), + u_steer_layer_1.head(bias_steer_layer_1_head_.size())) * + weight_steer_layer_1_head_; + + Eigen::MatrixXd result = Eigen::MatrixXd::Zero(y.size(), x.size() + 1); + + result.col(0) = y; + + result.col(1) = vel_normalize_ * dy_dh1.col(0); + result.col(2) = acc_normalize_ * dy_d_acc.col(0); + result.col(3) = steer_normalize_ * dy_d_steer.col(0); + result.block(0, 4, y.size(), acc_ctrl_queue_size_) = + acc_normalize_ * dy_d_acc.block(0, 1, y.size(), acc_ctrl_queue_size_); + result.block(0, 4 + acc_ctrl_queue_size_, y.size(), steer_ctrl_queue_size_) = + steer_normalize_ * dy_d_steer.block(0, 1, y.size(), steer_ctrl_queue_size_); + + const Eigen::MatrixXd polynomial_reg_diff = + A_linear_reg_ * + polynomial_features_with_diff.block(0, 1, A_linear_reg_.cols(), x_for_polynomial_reg.size()); + result.block(0, 1, y.size(), 3) += polynomial_reg_diff.block(0, 0, y.size(), 3); + result.block(0, 1 + acc_start, y.size(), 3) += polynomial_reg_diff.block(0, 3, y.size(), 3); + result.block(0, 1 + steer_start, y.size(), 3) += polynomial_reg_diff.block(0, 6, y.size(), 3); + + h_ = h_new; + c_ = c_new; + return result; + } + Eigen::MatrixXd error_prediction_with_memory_diff(const Eigen::VectorXd & x) + { + Eigen::VectorXd acc_sub(acc_ctrl_queue_size_ + 1); + acc_sub[0] = acc_normalize_ * x[1]; + acc_sub.tail(acc_ctrl_queue_size_) = acc_normalize_ * x.segment(3, acc_ctrl_queue_size_); + Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core_ + 1); + steer_sub[0] = steer_normalize_ * x[2]; + steer_sub.tail(steer_ctrl_queue_size_core_) = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_core_); + const Eigen::VectorXd steer_input_full = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_); + + const Eigen::VectorXd u_acc_layer_1 = weight_acc_layer_1_ * acc_sub + bias_acc_layer_1_; + const Eigen::VectorXd acc_layer_1 = relu(u_acc_layer_1); + + Eigen::VectorXd u_steer_layer_1( + bias_steer_layer_1_head_.size() + bias_steer_layer_1_tail_.size()); + u_steer_layer_1.head(bias_steer_layer_1_head_.size()) = + weight_steer_layer_1_head_ * steer_sub + bias_steer_layer_1_head_; + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size()) = + weight_steer_layer_1_tail_ * steer_input_full + bias_steer_layer_1_tail_; + const Eigen::VectorXd steer_layer_1 = relu(u_steer_layer_1); + + const Eigen::VectorXd u_acc_layer_2 = weight_acc_layer_2_ * acc_layer_1 + bias_acc_layer_2_; + const Eigen::VectorXd acc_layer_2 = relu(u_acc_layer_2); + + const Eigen::VectorXd u_steer_layer_2 = + weight_steer_layer_2_ * steer_layer_1 + bias_steer_layer_2_; + const Eigen::VectorXd steer_layer_2 = relu(u_steer_layer_2); + + Eigen::VectorXd h1(1 + acc_layer_2.size() + steer_layer_2.size()); + h1[0] = vel_normalize_ * x[0]; + h1.segment(1, acc_layer_2.size()) = acc_layer_2; + h1.tail(steer_layer_2.size()) = steer_layer_2; + + const Eigen::VectorXd u_i_new = + weight_lstm_ih_.block(0, 0, h_.size(), h1.size()) * h1 + bias_lstm_ih_.head(h_.size()) + + weight_lstm_hh_.block(0, 0, h_.size(), h_.size()) * h_ + bias_lstm_hh_.head(h_.size()); + const Eigen::VectorXd u_f_new = weight_lstm_ih_.block(h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(h_.size(), h_.size()) + + weight_lstm_hh_.block(h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(h_.size(), h_.size()); + const Eigen::VectorXd u_g_new = + weight_lstm_ih_.block(2 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(2 * h_.size(), h_.size()) + + weight_lstm_hh_.block(2 * h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(2 * h_.size(), h_.size()); + const Eigen::VectorXd u_o_new = + weight_lstm_ih_.block(3 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(3 * h_.size(), h_.size()) + + weight_lstm_hh_.block(3 * h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(3 * h_.size(), h_.size()); + const Eigen::VectorXd i_new = sigmoid(u_i_new); + const Eigen::VectorXd f_new = sigmoid(u_f_new); + const Eigen::VectorXd g_new = tanh(u_g_new); + const Eigen::VectorXd o_new = sigmoid(u_o_new); + + const Eigen::VectorXd c_new = f_new.array() * c_.array() + i_new.array() * g_new.array(); + const Eigen::VectorXd h_new = o_new.array() * tanh(c_new).array(); + + Eigen::VectorXd h2(h_new.size() + bias_linear_relu_1_.size()); + h2.head(h_new.size()) = h_new; + const Eigen::VectorXd u2 = weight_linear_relu_1_ * h1 + bias_linear_relu_1_; + h2.tail(bias_linear_relu_1_.size()) = relu(u2); + + const Eigen::VectorXd u3 = weight_linear_relu_2_ * h2 + bias_linear_relu_2_; + const Eigen::VectorXd h3 = relu(u3); + Eigen::VectorXd h4(h3.size() + acc_layer_2.size() + steer_layer_2.size()); + + h4.head(h3.size()) = h3; + h4.segment(h3.size(), acc_layer_2.size()) = acc_layer_2; + h4.tail(steer_layer_2.size()) = steer_layer_2; + + Eigen::VectorXd x_for_polynomial_reg(9); + x_for_polynomial_reg.head(3) = x.head(3); + const int acc_start = 3 + std::max(acc_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(3, 3) = x.segment(acc_start, 3); + const int steer_start = 3 + acc_ctrl_queue_size_ + std::max(steer_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(6, 3) = x.segment(steer_start, 3); + + const Eigen::MatrixXd polynomial_features_with_diff = + get_polynomial_features_with_diff(x_for_polynomial_reg, deg_, A_linear_reg_.cols()); + + Eigen::VectorXd y = + weight_finalize_ * h4 + bias_linear_finalize_ + + A_linear_reg_ * polynomial_features_with_diff.block(0, 0, A_linear_reg_.cols(), 1) + + b_linear_reg_; + + y[4] = std::min(std::max(y[4], -max_acc_error_), max_acc_error_); + y[5] = std::min(std::max(y[5], -max_steer_error_), max_steer_error_); + + const Eigen::MatrixXd dy_dh3 = weight_finalize_.block(0, 0, y.size(), h3.size()); + const Eigen::MatrixXd dy_dh2 = d_relu_product(dy_dh3, u3) * weight_linear_relu_2_; + const Eigen::MatrixXd dy_dh2_head = dy_dh2.block(0, 0, y.size(), h_new.size()); + const Eigen::MatrixXd dy_dh2_tail = + dy_dh2.block(0, h_new.size(), y.size(), bias_linear_relu_1_.size()); + + const Eigen::MatrixXd dy_do = dy_dh2_head * tanh(c_new).asDiagonal(); + const Eigen::MatrixXd dy_dc_new = d_tanh_product(dy_dh2_head * o_new.asDiagonal(), c_new); + + // calc dy_dhc_pre_, dhc_dhc_, dhc_dx_pre_ + const Eigen::VectorXd dc_du_f = d_sigmoid_product_vec(c_, u_f_new); + const Eigen::VectorXd dc_du_g = d_tanh_product_vec(i_new, u_g_new); + const Eigen::VectorXd dc_du_i = d_sigmoid_product_vec(g_new, u_i_new); + const Eigen::VectorXd dh_dc_new = d_tanh_product_vec(o_new, c_new); + const Eigen::VectorXd dh_du_o = d_sigmoid_product_vec(tanh(c_new), u_o_new); + + const Eigen::MatrixXd dc_dc = f_new.asDiagonal(); + const Eigen::MatrixXd dy_dc = dy_dc_new * dc_dc; + + Eigen::MatrixXd dc_dh = + dc_du_f.asDiagonal() * weight_lstm_hh_.block(h_.size(), 0, h_.size(), h_.size()); + dc_dh += dc_du_g.asDiagonal() * weight_lstm_hh_.block(2 * h_.size(), 0, h_.size(), h_.size()); + dc_dh += dc_du_i.asDiagonal() * weight_lstm_hh_.block(0, 0, h_.size(), h_.size()); + const Eigen::VectorXd dh_dc = dh_dc_new.array() * f_new.array(); + + Eigen::MatrixXd dh_dh = + dh_du_o.asDiagonal() * weight_lstm_hh_.block(3 * h_.size(), 0, h_.size(), h_.size()); + + dh_dh += dh_dc_new.asDiagonal() * dc_dh; + + const Eigen::MatrixXd dy_dh = dy_dh2_head * dh_dh; + Eigen::MatrixXd dc_dh1 = + dc_du_f.asDiagonal() * weight_lstm_ih_.block(h_.size(), 0, h_.size(), h1.size()); + dc_dh1 += dc_du_g.asDiagonal() * weight_lstm_ih_.block(2 * h_.size(), 0, h_.size(), h1.size()); + dc_dh1 += dc_du_i.asDiagonal() * weight_lstm_ih_.block(0, 0, h_.size(), h1.size()); + + Eigen::MatrixXd dh_dh1 = + dh_du_o.asDiagonal() * weight_lstm_ih_.block(3 * h_.size(), 0, h_.size(), h1.size()); + dh_dh1 += dh_dc_new.asDiagonal() * dc_dh1; + + const Eigen::MatrixXd dc_da2 = dc_dh1.block(0, 1, h_.size(), acc_layer_2.size()); + const Eigen::MatrixXd dc_ds2 = + dc_dh1.block(0, 1 + acc_layer_2.size(), h_.size(), steer_layer_2.size()); + + const Eigen::MatrixXd dh_da2 = dh_dh1.block(0, 1, h_.size(), acc_layer_2.size()); + const Eigen::MatrixXd dh_ds2 = + dh_dh1.block(0, 1 + acc_layer_2.size(), h_.size(), steer_layer_2.size()); + + const Eigen::MatrixXd dc_da1 = d_relu_product(dc_da2, u_acc_layer_2) * weight_acc_layer_2_; + const Eigen::MatrixXd dc_ds1 = d_relu_product(dc_ds2, u_steer_layer_2) * weight_steer_layer_2_; + + const Eigen::MatrixXd dh_da1 = d_relu_product(dh_da2, u_acc_layer_2) * weight_acc_layer_2_; + const Eigen::MatrixXd dh_ds1 = d_relu_product(dh_ds2, u_steer_layer_2) * weight_steer_layer_2_; + + const Eigen::MatrixXd dc_d_acc = d_relu_product(dc_da1, u_acc_layer_1) * weight_acc_layer_1_; + + Eigen::MatrixXd dc_d_steer = Eigen::MatrixXd::Zero(h_.size(), steer_input_full.size() + 1); + dc_d_steer.block(0, 1, h_.size(), steer_input_full.size()) += + d_relu_product( + dc_ds1.block( + 0, bias_steer_layer_1_head_.size(), h_.size(), bias_steer_layer_1_tail_.size()), + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size())) * + weight_steer_layer_1_tail_; + dc_d_steer.block(0, 0, h_.size(), steer_sub.size()) += + d_relu_product( + dc_ds1.block(0, 0, h_.size(), bias_steer_layer_1_head_.size()), + u_steer_layer_1.head(bias_steer_layer_1_head_.size())) * + weight_steer_layer_1_head_; + + const Eigen::MatrixXd dh_d_acc = d_relu_product(dh_da1, u_acc_layer_1) * weight_acc_layer_1_; + + Eigen::MatrixXd dh_d_steer = Eigen::MatrixXd::Zero(h_.size(), steer_input_full.size() + 1); + dh_d_steer.block(0, 1, h_.size(), steer_input_full.size()) += + d_relu_product( + dh_ds1.block( + 0, bias_steer_layer_1_head_.size(), h_.size(), bias_steer_layer_1_tail_.size()), + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size())) * + weight_steer_layer_1_tail_; + dh_d_steer.block(0, 0, h_.size(), steer_sub.size()) += + d_relu_product( + dh_ds1.block(0, 0, h_.size(), bias_steer_layer_1_head_.size()), + u_steer_layer_1.head(bias_steer_layer_1_head_.size())) * + weight_steer_layer_1_head_; + + Eigen::MatrixXd dc_dx = Eigen::MatrixXd(h_.size(), x.size()); + Eigen::MatrixXd dh_dx = Eigen::MatrixXd(h_.size(), x.size()); + dc_dx.col(0) = vel_normalize_ * dc_dh1.col(0); + dc_dx.col(1) = acc_normalize_ * dc_d_acc.col(0); + dc_dx.col(2) = steer_normalize_ * dc_d_steer.col(0); + dc_dx.block(0, 3, h_.size(), acc_ctrl_queue_size_) = + acc_normalize_ * dc_d_acc.block(0, 1, h_.size(), acc_ctrl_queue_size_); + dc_dx.block(0, 3 + acc_ctrl_queue_size_, h_.size(), steer_ctrl_queue_size_) = + steer_normalize_ * dc_d_steer.block(0, 1, h_.size(), steer_ctrl_queue_size_); + + dh_dx.col(0) = vel_normalize_ * dh_dh1.col(0); + dh_dx.col(1) = acc_normalize_ * dh_d_acc.col(0); + dh_dx.col(2) = steer_normalize_ * dh_d_steer.col(0); + dh_dx.block(0, 3, h_.size(), acc_ctrl_queue_size_) = + acc_normalize_ * dh_d_acc.block(0, 1, h_.size(), acc_ctrl_queue_size_); + dh_dx.block(0, 3 + acc_ctrl_queue_size_, h_.size(), steer_ctrl_queue_size_) = + steer_normalize_ * dh_d_steer.block(0, 1, h_.size(), steer_ctrl_queue_size_); + + dy_dhc_pre_.block(0, 0, y.size(), h_.size()) = dy_dh; + dy_dhc_pre_.block(0, h_.size(), y.size(), h_.size()) = dy_dc; + dhc_dhc_.block(0, 0, h_.size(), h_.size()) = dh_dh; + dhc_dhc_.block(h_.size(), 0, h_.size(), h_.size()) = dc_dh; + dhc_dhc_.block(0, h_.size(), h_.size(), h_.size()) = dh_dc.asDiagonal(); + dhc_dhc_.block(h_.size(), h_.size(), h_.size(), h_.size()) = dc_dc; + dhc_dx_pre_.block(0, 0, h_.size(), x.size()) = dh_dx; + dhc_dx_pre_.block(h_.size(), 0, h_.size(), x.size()) = dc_dx; + + // finished calc dy_dhc_pre_, dhc_dhc_, dhc_dx_pre_ + + Eigen::MatrixXd dy_dh1 = d_sigmoid_product(dy_do, u_o_new) * + weight_lstm_ih_.block(3 * h_.size(), 0, h_.size(), h1.size()); + + dy_dh1 += d_sigmoid_product(dy_dc_new * c_.asDiagonal(), u_f_new) * + weight_lstm_ih_.block(h_.size(), 0, h_.size(), h1.size()); + dy_dh1 += d_tanh_product(dy_dc_new * i_new.asDiagonal(), u_g_new) * + weight_lstm_ih_.block(2 * h_.size(), 0, h_.size(), h1.size()); + dy_dh1 += d_sigmoid_product(dy_dc_new * g_new.asDiagonal(), u_i_new) * + weight_lstm_ih_.block(0, 0, h_.size(), h1.size()); + + dy_dh1 += d_relu_product(dy_dh2_tail, u2) * weight_linear_relu_1_; + const Eigen::MatrixXd dy_da2 = + dy_dh1.block(0, 1, y.size(), acc_layer_2.size()) + + weight_finalize_.block(0, h3.size(), y.size(), acc_layer_2.size()); + const Eigen::MatrixXd dy_ds2 = + dy_dh1.block(0, 1 + acc_layer_2.size(), y.size(), steer_layer_2.size()) + + weight_finalize_.block(0, h3.size() + acc_layer_2.size(), y.size(), steer_layer_2.size()); + const Eigen::MatrixXd dy_da1 = d_relu_product(dy_da2, u_acc_layer_2) * weight_acc_layer_2_; + const Eigen::MatrixXd dy_ds1 = d_relu_product(dy_ds2, u_steer_layer_2) * weight_steer_layer_2_; + + const Eigen::MatrixXd dy_d_acc = d_relu_product(dy_da1, u_acc_layer_1) * weight_acc_layer_1_; + Eigen::MatrixXd dy_d_steer = Eigen::MatrixXd::Zero(y.size(), steer_input_full.size() + 1); + dy_d_steer.block(0, 1, y.size(), steer_input_full.size()) += + d_relu_product( + dy_ds1.block(0, bias_steer_layer_1_head_.size(), y.size(), bias_steer_layer_1_tail_.size()), + u_steer_layer_1.tail(bias_steer_layer_1_tail_.size())) * + weight_steer_layer_1_tail_; + dy_d_steer.block(0, 0, y.size(), steer_sub.size()) += + d_relu_product( + dy_ds1.block(0, 0, y.size(), bias_steer_layer_1_head_.size()), + u_steer_layer_1.head(bias_steer_layer_1_head_.size())) * + weight_steer_layer_1_head_; + + Eigen::MatrixXd result = Eigen::MatrixXd::Zero(y.size(), x.size() + 1); + + result.col(0) = y; + + result.col(1) = vel_normalize_ * dy_dh1.col(0); + result.col(2) = acc_normalize_ * dy_d_acc.col(0); + result.col(3) = steer_normalize_ * dy_d_steer.col(0); + result.block(0, 4, y.size(), acc_ctrl_queue_size_) = + acc_normalize_ * dy_d_acc.block(0, 1, y.size(), acc_ctrl_queue_size_); + result.block(0, 4 + acc_ctrl_queue_size_, y.size(), steer_ctrl_queue_size_) = + steer_normalize_ * dy_d_steer.block(0, 1, y.size(), steer_ctrl_queue_size_); + + const Eigen::MatrixXd polynomial_reg_diff = + A_linear_reg_ * + polynomial_features_with_diff.block(0, 1, A_linear_reg_.cols(), x_for_polynomial_reg.size()); + result.block(0, 1, y.size(), 3) += polynomial_reg_diff.block(0, 0, y.size(), 3); + result.block(0, 1 + acc_start, y.size(), 3) += polynomial_reg_diff.block(0, 3, y.size(), 3); + result.block(0, 1 + steer_start, y.size(), 3) += polynomial_reg_diff.block(0, 6, y.size(), 3); + + h_ = h_new; + c_ = c_new; + return result; + } + + void update_memory(const Eigen::VectorXd & x) + { + Eigen::VectorXd acc_sub(acc_ctrl_queue_size_ + 1); + acc_sub[0] = acc_normalize_ * x[1]; + acc_sub.tail(acc_ctrl_queue_size_) = acc_normalize_ * x.segment(3, acc_ctrl_queue_size_); + Eigen::VectorXd steer_sub(steer_ctrl_queue_size_core_ + 1); + steer_sub[0] = steer_normalize_ * x[2]; + steer_sub.tail(steer_ctrl_queue_size_core_) = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_core_); + const Eigen::VectorXd acc_layer_1 = relu(weight_acc_layer_1_ * acc_sub + bias_acc_layer_1_); + Eigen::VectorXd steer_layer_1( + bias_steer_layer_1_head_.size() + bias_steer_layer_1_tail_.size()); + steer_layer_1.head(bias_steer_layer_1_head_.size()) = + relu(weight_steer_layer_1_head_ * steer_sub + bias_steer_layer_1_head_); + + const Eigen::VectorXd steer_input_full = + steer_normalize_ * x.segment(3 + acc_ctrl_queue_size_, steer_ctrl_queue_size_); + steer_layer_1.tail(bias_steer_layer_1_tail_.size()) = + relu(weight_steer_layer_1_tail_ * steer_input_full + bias_steer_layer_1_tail_); + + const Eigen::VectorXd acc_layer_2 = relu(weight_acc_layer_2_ * acc_layer_1 + bias_acc_layer_2_); + + const Eigen::VectorXd steer_layer_2 = + relu(weight_steer_layer_2_ * steer_layer_1 + bias_steer_layer_2_); + Eigen::VectorXd h1(1 + acc_layer_2.size() + steer_layer_2.size()); + h1[0] = vel_normalize_ * x[0]; + h1.segment(1, acc_layer_2.size()) = acc_layer_2; + h1.tail(steer_layer_2.size()) = steer_layer_2; + + const Eigen::VectorXd i_new = sigmoid( + weight_lstm_ih_.block(0, 0, h_.size(), h1.size()) * h1 + bias_lstm_ih_.head(h_.size()) + + weight_lstm_hh_.block(0, 0, h_.size(), h_.size()) * h_ + bias_lstm_hh_.head(h_.size())); + const Eigen::VectorXd f_new = sigmoid( + weight_lstm_ih_.block(h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(h_.size(), h_.size()) + + weight_lstm_hh_.block(h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(h_.size(), h_.size())); + const Eigen::VectorXd g_new = tanh( + weight_lstm_ih_.block(2 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(2 * h_.size(), h_.size()) + + weight_lstm_hh_.block(2 * h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(2 * h_.size(), h_.size())); + const Eigen::VectorXd o_new = sigmoid( + weight_lstm_ih_.block(3 * h_.size(), 0, h_.size(), h1.size()) * h1 + + bias_lstm_ih_.segment(3 * h_.size(), h_.size()) + + weight_lstm_hh_.block(3 * h_.size(), 0, h_.size(), h_.size()) * h_ + + bias_lstm_hh_.segment(3 * h_.size(), h_.size())); + const Eigen::VectorXd c_new = f_new.array() * c_.array() + i_new.array() * g_new.array(); + const Eigen::VectorXd h_new = o_new.array() * tanh(c_new).array(); + h_ = h_new; + c_ = c_new; + } + Eigen::VectorXd rot_and_d_rot_error_prediction(const Eigen::VectorXd & x) + { + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + + Eigen::Matrix2d dRot; + dRot << -sin, -cos, cos, -sin; + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + const Eigen::VectorXd pred = error_prediction(vars, -1); + Eigen::VectorXd rot_and_d_rot_pred(8); + rot_and_d_rot_pred.head(2) = Rot * pred.head(2); + rot_and_d_rot_pred.segment(2, 4) = pred.segment(2, 4); + rot_and_d_rot_pred.tail(2) = dRot * pred.head(2); + + return coef * rot_and_d_rot_pred; + } + Eigen::MatrixXd rot_and_d_rot_error_prediction_with_diff(const Eigen::VectorXd & x) + { + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + + Eigen::Matrix2d dRot; + dRot << -sin, -cos, cos, -sin; + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + + const Eigen::MatrixXd pred_d_pred = error_prediction_with_diff(vars); + const Eigen::VectorXd pred = pred_d_pred.col(0); + const Eigen::MatrixXd d_pred = pred_d_pred.block(0, 1, 6, x_dim - 3); + Eigen::MatrixXd rot_and_d_rot_pred_with_diff = Eigen::MatrixXd::Zero(6, x_dim + 2); + Eigen::MatrixXd rot_pred_with_diff(6, x_dim - 3); + rot_pred_with_diff.block(0, 0, 2, x_dim - 3) = Rot * d_pred.block(0, 0, 2, x_dim - 3); + rot_pred_with_diff.block(2, 0, 4, x_dim - 3) = d_pred.block(2, 0, 4, x_dim - 3); + + rot_and_d_rot_pred_with_diff.block(0, 0, 2, 1) = Rot * pred.head(2); + rot_and_d_rot_pred_with_diff.block(2, 0, 4, 1) = pred.segment(2, 4); + rot_and_d_rot_pred_with_diff.block(0, 1, 2, 1) = dRot * pred.head(2); + rot_and_d_rot_pred_with_diff.col(2 + 2) = rot_pred_with_diff.col(0); + rot_and_d_rot_pred_with_diff.col(2 + 4) = rot_pred_with_diff.col(1); + rot_and_d_rot_pred_with_diff.col(2 + 5) = rot_pred_with_diff.col(2); + rot_and_d_rot_pred_with_diff.block(0, 2 + 6, 6, x_dim - 6) = + rot_pred_with_diff.block(0, 3, 6, x_dim - 6); + + return coef * rot_and_d_rot_pred_with_diff; + } + Eigen::MatrixXd rot_and_d_rot_error_prediction_with_memory_diff(const Eigen::VectorXd & x) + { + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + + Eigen::Matrix2d dRot; + dRot << -sin, -cos, cos, -sin; + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + + const Eigen::MatrixXd pred_d_pred = error_prediction_with_memory_diff(vars); + const Eigen::VectorXd pred = pred_d_pred.col(0); + const Eigen::MatrixXd d_pred = pred_d_pred.block(0, 1, 6, x_dim - 3); + Eigen::MatrixXd rot_and_d_rot_pred_with_diff = Eigen::MatrixXd::Zero(6, x_dim + 2); + Eigen::MatrixXd rot_pred_with_diff(6, x_dim - 3); + rot_pred_with_diff.block(0, 0, 2, x_dim - 3) = Rot * d_pred.block(0, 0, 2, x_dim - 3); + rot_pred_with_diff.block(2, 0, 4, x_dim - 3) = d_pred.block(2, 0, 4, x_dim - 3); + + rot_and_d_rot_pred_with_diff.block(0, 0, 2, 1) = Rot * pred.head(2); + rot_and_d_rot_pred_with_diff.block(2, 0, 4, 1) = pred.segment(2, 4); + rot_and_d_rot_pred_with_diff.block(0, 1, 2, 1) = dRot * pred.head(2); + rot_and_d_rot_pred_with_diff.col(2 + 2) = rot_pred_with_diff.col(0); + rot_and_d_rot_pred_with_diff.col(2 + 4) = rot_pred_with_diff.col(1); + rot_and_d_rot_pred_with_diff.col(2 + 5) = rot_pred_with_diff.col(2); + rot_and_d_rot_pred_with_diff.block(0, 2 + 6, 6, x_dim - 6) = + rot_pred_with_diff.block(0, 3, 6, x_dim - 6); + + dy_dhc_.block(0, 0, 2, 2 * h_.size()) = Rot * dy_dhc_pre_.block(0, 0, 2, 2 * h_.size()); + dy_dhc_.block(2, 0, 4, 2 * h_.size()) = dy_dhc_pre_.block(2, 0, 4, 2 * h_.size()); + + dhc_dx_.col(2) = dhc_dx_pre_.col(0); + dhc_dx_.col(4) = dhc_dx_pre_.col(1); + dhc_dx_.col(5) = dhc_dx_pre_.col(2); + dhc_dx_.block(0, 6, 2 * h_.size(), x_dim - 6) = + dhc_dx_pre_.block(0, 3, 2 * h_.size(), x_dim - 6); + + return coef * rot_and_d_rot_pred_with_diff; + } + Eigen::MatrixXd rot_and_d_rot_error_prediction_with_poly_diff(const Eigen::VectorXd & x) + { + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + + Eigen::Matrix2d dRot; + dRot << -sin, -cos, cos, -sin; + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + + const Eigen::VectorXd pred = error_prediction(vars, -1); + Eigen::MatrixXd d_pred = Eigen::MatrixXd::Zero(6, x_dim - 3); + + Eigen::VectorXd x_for_polynomial_reg(9); + x_for_polynomial_reg.head(3) = x.head(3); + const int acc_start = 3 + std::max(acc_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(3, 3) = x.segment(acc_start, 3); + const int steer_start = 3 + acc_ctrl_queue_size_ + std::max(steer_delay_step_ - 3, 0); + x_for_polynomial_reg.segment(6, 3) = x.segment(steer_start, 3); + + const Eigen::MatrixXd polynomial_features_with_diff = + get_polynomial_features_with_diff(x_for_polynomial_reg, deg_, A_linear_reg_.cols()); + const Eigen::MatrixXd polynomial_reg_diff = + A_linear_reg_ * + polynomial_features_with_diff.block(0, 1, A_linear_reg_.cols(), x_for_polynomial_reg.size()); + d_pred.block(0, 0, 6, 3) += polynomial_reg_diff.block(0, 0, 6, 3); + d_pred.block(0, 1 + acc_start, 6, 3) += polynomial_reg_diff.block(0, 3, 6, 3); + d_pred.block(0, 1 + steer_start, 6, 3) += polynomial_reg_diff.block(0, 6, 6, 3); + + Eigen::MatrixXd rot_and_d_rot_pred_with_diff = Eigen::MatrixXd::Zero(6, x_dim + 2); + Eigen::MatrixXd rot_pred_with_diff(6, x_dim - 3); + rot_pred_with_diff.block(0, 0, 2, x_dim - 3) = Rot * d_pred.block(0, 0, 2, x_dim - 3); + rot_pred_with_diff.block(2, 0, 4, x_dim - 3) = d_pred.block(2, 0, 4, x_dim - 3); + + rot_and_d_rot_pred_with_diff.block(0, 0, 2, 1) = Rot * pred.head(2); + rot_and_d_rot_pred_with_diff.block(2, 0, 4, 1) = pred.segment(2, 4); + rot_and_d_rot_pred_with_diff.block(0, 1, 2, 1) = dRot * pred.head(2); + rot_and_d_rot_pred_with_diff.col(2 + 2) = rot_pred_with_diff.col(0); + rot_and_d_rot_pred_with_diff.col(2 + 4) = rot_pred_with_diff.col(1); + rot_and_d_rot_pred_with_diff.col(2 + 5) = rot_pred_with_diff.col(2); + rot_and_d_rot_pred_with_diff.block(0, 2 + 6, 6, x_dim - 6) = + rot_pred_with_diff.block(0, 3, 6, x_dim - 6); + + return coef * rot_and_d_rot_pred_with_diff; + } + Eigen::VectorXd rotated_error_prediction(const Eigen::VectorXd & x) + { + const int x_dim = x.size(); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + const Eigen::VectorXd pred = error_prediction(vars, -1); + Eigen::VectorXd rot_pred(6); + rot_pred.head(2) = coef * Rot * pred.head(2); + rot_pred.tail(4) = coef * pred.tail(4); + return rot_pred; + } + Eigen::MatrixXd Rotated_error_prediction(const Eigen::MatrixXd & X) + { + const int X_cols = X.cols(); + const int x_dim = X.rows(); + Eigen::MatrixXd Pred(6, X_cols); + for (int i = 0; i < X_cols; i++) { + const Eigen::VectorXd x = X.col(i); + const double theta = x[3]; + const double v = x[2]; + double coef = 2.0 * std::abs(v); + coef = coef * coef * coef * coef * coef * coef * coef; + if (coef > 1.0) { + coef = 1.0; + } + const double cos = std::cos(theta); + const double sin = std::sin(theta); + Eigen::Matrix2d Rot; + Rot << cos, -sin, sin, cos; + Eigen::VectorXd vars(x_dim - 3); + + vars[0] = x[2]; + + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + const Eigen::VectorXd pred = error_prediction(vars, i); + Pred.block(0, i, 2, 1) = coef * Rot * pred.head(2); + Pred.block(2, i, 4, 1) = coef * pred.tail(4); + } + return Pred; + } + void update_memory_by_state_history(const Eigen::MatrixXd & X) + { + const int X_cols = X.cols(); + const int x_dim = X.rows(); + for (int i = 0; i < X_cols; i++) { + const Eigen::VectorXd x = X.col(i); + Eigen::VectorXd vars(x_dim - 3); + vars[0] = x[2]; + vars[1] = x[4]; + vars[2] = x[5]; + vars.tail(x_dim - 6) = x.tail(x_dim - 6); + update_memory(vars); + } + } +}; PYBIND11_MODULE(proxima_calc, m) { py::class_(m, "transform_model_to_eigen") @@ -483,5 +1536,40 @@ PYBIND11_MODULE(proxima_calc, m) .def( "rot_and_d_rot_error_prediction_with_diff", &transform_model_to_eigen::rot_and_d_rot_error_prediction_with_diff) + .def( + "rot_and_d_rot_error_prediction_with_poly_diff", + &transform_model_to_eigen::rot_and_d_rot_error_prediction_with_poly_diff) + .def("rotated_error_prediction", &transform_model_to_eigen::rotated_error_prediction) .def("Rotated_error_prediction", &transform_model_to_eigen::Rotated_error_prediction); + py::class_(m, "transform_model_with_memory_to_eigen") + .def(py::init()) + .def("set_params", &transform_model_with_memory_to_eigen::set_params) + .def("set_params_res", &transform_model_with_memory_to_eigen::set_params_res) + .def("set_lstm", &transform_model_with_memory_to_eigen::set_lstm) + .def("set_lstm_for_candidate", &transform_model_with_memory_to_eigen::set_lstm_for_candidate) + .def("get_h", &transform_model_with_memory_to_eigen::get_h) + .def("get_c", &transform_model_with_memory_to_eigen::get_c) + .def("get_dy_dhc", &transform_model_with_memory_to_eigen::get_dy_dhc) + .def("get_dhc_dx", &transform_model_with_memory_to_eigen::get_dhc_dx) + .def("get_dhc_dhc", &transform_model_with_memory_to_eigen::get_dhc_dhc) + .def("error_prediction", &transform_model_with_memory_to_eigen::error_prediction) + .def( + "rot_and_d_rot_error_prediction", + &transform_model_with_memory_to_eigen::rot_and_d_rot_error_prediction) + .def( + "rot_and_d_rot_error_prediction_with_diff", + &transform_model_with_memory_to_eigen::rot_and_d_rot_error_prediction_with_diff) + .def( + "rot_and_d_rot_error_prediction_with_memory_diff", + &transform_model_with_memory_to_eigen::rot_and_d_rot_error_prediction_with_memory_diff) + .def( + "rot_and_d_rot_error_prediction_with_poly_diff", + &transform_model_with_memory_to_eigen::rot_and_d_rot_error_prediction_with_poly_diff) + .def( + "update_memory_by_state_history", + &transform_model_with_memory_to_eigen::update_memory_by_state_history) + .def( + "rotated_error_prediction", &transform_model_with_memory_to_eigen::rotated_error_prediction) + .def( + "Rotated_error_prediction", &transform_model_with_memory_to_eigen::Rotated_error_prediction); } diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/pympc_trajectory_follower.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/pympc_trajectory_follower.py index 78a120fe601f2..f767dad223f0d 100755 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/pympc_trajectory_follower.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/scripts/pympc_trajectory_follower.py @@ -16,6 +16,7 @@ # cspell: ignore interp +from enum import Enum import time from autoware_adapi_v1_msgs.msg import OperationModeState @@ -26,10 +27,15 @@ from autoware_smart_mpc_trajectory_follower.scripts import drive_functions from autoware_vehicle_msgs.msg import SteeringReport from builtin_interfaces.msg import Duration +from diagnostic_msgs.msg import DiagnosticStatus +import diagnostic_updater +from diagnostic_updater import DiagnosticStatusWrapper from geometry_msgs.msg import AccelWithCovarianceStamped +from geometry_msgs.msg import Point from geometry_msgs.msg import PoseStamped from nav_msgs.msg import Odometry import numpy as np +from rcl_interfaces.msg import ParameterDescriptor import rclpy from rclpy.node import Node import scipy @@ -40,6 +46,15 @@ from tier4_debug_msgs.msg import BoolStamped from tier4_debug_msgs.msg import Float32MultiArrayStamped from tier4_debug_msgs.msg import Float32Stamped +from visualization_msgs.msg import Marker +from visualization_msgs.msg import MarkerArray + + +class ControlStatus(Enum): + DRIVE = 0 + STOPPING = 1 + STOPPED = 2 + EMERGENCY = 3 def getYaw(orientation_xyzw): @@ -55,6 +70,13 @@ def __init__(self): # ROS 2 super().__init__("pympc_trajectory_follower") + + self.declare_parameter( + "plot_sampling_paths", + False, + ParameterDescriptor(description="Publish MPPI sampling paths as MarkerArray."), + ) + self.sub_trajectory_ = self.create_subscription( Trajectory, "/planning/scenario_planning/trajectory", @@ -111,14 +133,6 @@ def __init__(self): ) self.sub_goal_pose_ - self.sub_step_response_trigger_ = self.create_subscription( - String, - "/pympc_step_response_trigger", - self.onStepResponseTrigger, - 1, - ) - self.sub_step_response_trigger_ - self.sub_reload_mpc_param_trigger_ = self.create_subscription( String, "/pympc_reload_mpc_param_trigger", @@ -253,6 +267,12 @@ def __init__(self): 1, ) + self.debug_mpc_sampling_paths_marker_array_ = self.create_publisher( + MarkerArray, + "/debug_mpc_sampling_paths_marker_array", + 1, + ) + self._present_trajectory = None self._present_kinematic_state = None self._present_acceleration = None @@ -265,13 +285,14 @@ def __init__(self): self.emergency_stop_mode_flag = False self.stop_mode_reset_request = False - self.step_response_flag = False - self.step_response_trigger = False - self.step_response_time_step = 0 self.last_acc_cmd = 0.0 self.last_steer_cmd = 0.0 self.past_control_trajectory_mode = 1 + self.diagnostic_updater = diagnostic_updater.Updater(self) + self.setup_diagnostic_updater() + self.control_state = ControlStatus.STOPPED + def onTrajectory(self, msg): self._present_trajectory = msg @@ -289,16 +310,11 @@ def onOperationMode(self, msg): def onStopModeResetRequest(self, msg): self.stop_mode_reset_request = True - self.step_response_flag = False self.get_logger().info("receive stop mode reset request") def onGoalPose(self, msg): self._goal_pose = msg - def onStepResponseTrigger(self, msg): - self.step_response_trigger = True - self.get_logger().info("receive step response trigger") - def onReloadMpcParamTrigger(self, msg): self.get_logger().info("receive reload mpc param trigger") @@ -421,12 +437,14 @@ def control(self): orientation_deviation_threshold = 60 * np.pi / 180.0 # The moment the threshold is exceeded, it enters emergency stop mode. + control_state = self.control_state if is_applying_control: if ( position_deviation > position_deviation_threshold or orientation_deviation > orientation_deviation_threshold ): self.emergency_stop_mode_flag = True + control_state = ControlStatus.EMERGENCY # Normal return from emergency stop mode when within the threshold value and a request to cancel the stop mode has been received. if ( @@ -443,42 +461,7 @@ def control(self): self.stop_mode_reset_request = False # [3] Control logic calculation - # [3-1] pure pursuit - # [3-1-1] compute pure pursuit acc cmd - longitudinal_vel_err = ( - present_linear_velocity - trajectory_longitudinal_velocity[nearestIndex] - ) - acc_kp = 0.5 - acc_lim = 2.0 - pure_pursuit_acc_cmd = np.clip(-acc_kp * longitudinal_vel_err, -acc_lim, acc_lim)[0] - - # [3-1-2] compute pure pursuit steer cmd - nearest_trajectory_point_yaw = getYaw(trajectory_orientation[nearestIndex]) - cos_yaw = np.cos(nearest_trajectory_point_yaw) - sin_yaw = np.sin(nearest_trajectory_point_yaw) - diff_position = present_position - trajectory_position[nearestIndex] - lat_err = -sin_yaw * diff_position[0] + cos_yaw * diff_position[1] - yaw_err = getYaw(present_orientation) - nearest_trajectory_point_yaw - while True: - if yaw_err > np.pi: - yaw_err -= 2.0 * np.pi - if yaw_err < (-np.pi): - yaw_err += 2.0 * np.pi - if np.abs(yaw_err) < np.pi: - break - wheel_base = drive_functions.L # 4.0 - lookahead_time = 3.0 - min_lookahead = 3.0 - lookahead = min_lookahead + lookahead_time * np.abs(present_linear_velocity[0]) - steer_kp = 2.0 * wheel_base / (lookahead * lookahead) - steer_kd = 2.0 * wheel_base / lookahead - steer_lim = 0.6 - pure_pursuit_steer_cmd = np.clip( - -steer_kp * lat_err - steer_kd * yaw_err, -steer_lim, steer_lim - )[0] - - # [3-2] MPC control logic calculation - # [3-2-1] State variables in the MPC + # [3-1] State variables in the MPC present_mpc_x = np.array( [ present_position[0], @@ -490,7 +473,7 @@ def control(self): ] ) - # [3-2-2] resampling trajectory by time (except steer angle). + # [3-2] resampling trajectory by time (except steer angle). X_des = np.zeros((drive_functions.N + 1, 8)) dist = np.sqrt(((trajectory_position[1:] - trajectory_position[:-1]) ** 2).sum(axis=1)) timestamp_from_start = [0.0] @@ -532,7 +515,7 @@ def control(self): X_des[:, 4] = acceleration_interpolate(timestamp_mpc) X_des[:, 6] = 1 * X_des[:, 4] - # [3-2-3] resampling trajectory by time (steer angle) + # [3-3] resampling trajectory by time (steer angle) previous_des_steer = 0.0 steer_trajectory2 = np.zeros(len(timestamp_mpc)) downsampling = 5 @@ -621,9 +604,17 @@ def control(self): X_des[:, 5] = steer_trajectory2 X_des[:, 7] = 1 * X_des[:, 5] - # [3-2-4] mpc computation + # [3-4] (optimal) control computation U_des = np.zeros((drive_functions.N, 2)) start_calc_u_opt = time.time() + acc_time_stamp = ( + self._present_acceleration.header.stamp.sec + + 1e-9 * self._present_acceleration.header.stamp.nanosec + ) + steer_time_stamp = ( + self._present_steering_status.stamp.sec + + 1e-9 * self._present_steering_status.stamp.nanosec + ) u_opt = self.controller.update_input_queue_and_get_optimal_control( self.control_cmd_time_stamp_list, self.control_cmd_acc_list, @@ -631,12 +622,14 @@ def control(self): present_mpc_x, X_des, U_des, + acc_time_stamp, + steer_time_stamp, ) end_calc_u_opt = time.time() mpc_acc_cmd = u_opt[0] mpc_steer_cmd = u_opt[1] - # [3-3] Enter goal stop mode (override command value) to maintain stop at goal + # [3-5] Enter goal stop mode (override command value) to maintain stop at goal self.goal_stop_mode_flag = False if self._goal_pose is not None: goal_position = np.array( @@ -652,39 +645,13 @@ def control(self): if distance_from_goal < goal_distance_threshold: self.goal_stop_mode_flag = True - # [3-4] Override when doing step response - if self.step_response_trigger: - self.step_response_time_step = 0 - self.step_response_flag = True - self.step_response_trigger = False - - if self.step_response_flag: - step_response_elapsed_time = self.step_response_time_step * self.timer_period_callback - mpc_acc_cmd = 1.0 * self.last_acc_cmd - if step_response_elapsed_time < 3.0: - mpc_steer_cmd = 0.0 - else: - mpc_steer_cmd = -0.005 - self.get_logger().info( - "step_response_elapsed_time: " - + str(step_response_elapsed_time) - + ", mpc_steer_cmd: " - + str(mpc_steer_cmd) - ) - self.step_response_time_step += 1 - - # [3-5] Determine the control logic to be finally applied and publish it + # [3-6] Determine the control logic to be finally applied and publish it acc_cmd = 0.0 steer_cmd = 0.0 if (not self.emergency_stop_mode_flag) and (not self.goal_stop_mode_flag): # in normal mode acc_cmd = mpc_acc_cmd steer_cmd = mpc_steer_cmd - - overwrite_cmd_by_pure_pursuit_flag = False - if overwrite_cmd_by_pure_pursuit_flag: - steer_cmd = pure_pursuit_steer_cmd - acc_cmd = pure_pursuit_acc_cmd else: # in stop mode acc_cmd_decrease_limit = 5.0 * self.timer_period_callback # lon_jerk_lim @@ -698,12 +665,13 @@ def control(self): steer_cmd = self.last_steer_cmd + steer_cmd_decrease_limit else: steer_cmd = 0.0 + control_state = ControlStatus.STOPPING cmd_msg = Control() cmd_msg.stamp = cmd_msg.lateral.stamp = cmd_msg.longitudinal.stamp = ( self.get_clock().now().to_msg() ) - cmd_msg.longitudinal.speed = trajectory_longitudinal_velocity[nearestIndex] + cmd_msg.longitudinal.velocity = trajectory_longitudinal_velocity[nearestIndex] cmd_msg.longitudinal.acceleration = acc_cmd cmd_msg.lateral.steering_tire_angle = steer_cmd @@ -722,6 +690,15 @@ def control(self): self.control_cmd_steer_list.pop(0) self.control_cmd_acc_list.pop(0) + # [3-7] Update control state + if control_state != ControlStatus.EMERGENCY: + stopped_velocity_threshold = 0.1 + if present_linear_velocity[0] <= stopped_velocity_threshold: + control_state = ControlStatus.STOPPED + elif control_state != ControlStatus.STOPPING: + control_state = ControlStatus.DRIVE + self.control_state = control_state + # [4] Update MPC internal variables if not is_applying_control: self.controller.send_initialize_input_queue() @@ -842,6 +819,56 @@ def control(self): data=(end_ctrl_time - start_ctrl_time), ) ) + if self.controller.mode == "mppi" or self.controller.mode == "mppi_ilqr": + if self.get_parameter("plot_sampling_paths").get_parameter_value().bool_value: + marker_array = MarkerArray() + for i in range(self.controller.mppi_candidates.shape[0]): + marker = Marker() + marker.type = marker.LINE_STRIP + marker.header.stamp = cmd_msg.stamp + marker.header.frame_id = "map" + marker.id = i + marker.action = marker.ADD + + marker.scale.x = 0.05 + marker.scale.y = 0.0 + marker.scale.z = 0.0 + + marker.color.a = 1.0 + marker.color.r = np.random.uniform() + marker.color.g = np.random.uniform() + marker.color.b = np.random.uniform() + + marker.lifetime.nanosec = 500000000 + marker.frame_locked = True + + marker.points = [] + + for j in range(self.controller.mppi_candidates.shape[1]): + tmp_point = Point() + tmp_point.x = self.controller.mppi_candidates[i, j, 0] + tmp_point.y = self.controller.mppi_candidates[i, j, 1] + tmp_point.z = self._present_kinematic_state.pose.pose.position.z + marker.points.append(tmp_point) + marker_array.markers.append(marker) + self.debug_mpc_sampling_paths_marker_array_.publish(marker_array) + + self.diagnostic_updater.force_update() + + def setup_diagnostic_updater(self): + self.diagnostic_updater.setHardwareID("pympc_trajectory_follower") + self.diagnostic_updater.add("control_state", self.check_control_state) + + def check_control_state(self, stat: DiagnosticStatusWrapper): + msg = "emergency occurred" if self.control_state == ControlStatus.EMERGENCY else "OK" + level = ( + DiagnosticStatus.ERROR + if self.control_state == ControlStatus.EMERGENCY + else DiagnosticStatus.OK + ) + stat.summary(level, msg) + stat.add("control_state", str(self.control_state)) + return stat def main(args=None): diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/add_training_data_from_csv.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/add_training_data_from_csv.py index 5338f3cbaddce..006a51bfe6557 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/add_training_data_from_csv.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/add_training_data_from_csv.py @@ -22,12 +22,34 @@ import json import os from pathlib import Path +import subprocess from autoware_smart_mpc_trajectory_follower.scripts import drive_functions import numpy as np import scipy.interpolate from scipy.ndimage import gaussian_filter from scipy.spatial.transform import Rotation +from sklearn import linear_model +from sklearn.preprocessing import PolynomialFeatures + +ctrl_index_for_polynomial_reg = np.concatenate( + ( + np.arange(3), + 3 + + max(drive_functions.acc_delay_step - drive_functions.mpc_freq, 0) + + np.arange(drive_functions.mpc_freq), + 3 + + drive_functions.acc_ctrl_queue_size + + max(drive_functions.steer_delay_step - drive_functions.mpc_freq, 0) + + np.arange(drive_functions.mpc_freq), + ) +) + + +if drive_functions.use_memory_for_training: + default_add_mode = "divide" +else: + default_add_mode = "as_train" def data_smoothing(data: np.ndarray, sigma: float) -> np.ndarray: @@ -53,19 +75,29 @@ class add_data_from_csv: """Class for loading csv files containing driving data, converting them into teacher data for the NN training, and storing them in lists.""" X_input_list: list[np.ndarray] - """Input side of NN teacher data""" + """Input side of NN teacher data.""" Y_output_list: list[np.ndarray] - """Output side of NN teacher data""" + """Output side of NN teacher data.""" - def __init__(self): + def __init__( + self, alpha_1_for_polynomial_regression=0.1**5, alpha_2_for_polynomial_regression=0.1**5 + ): self.X_input_list = [] self.Y_output_list = [] + self.X_val_list = [] + self.Y_val_list = [] + self.division_indices = [] + self.division_indices_val = [] + self.alpha_1_for_polynomial_regression = alpha_1_for_polynomial_regression + self.alpha_2_for_polynomial_regression = alpha_2_for_polynomial_regression def clear_data(self): """Clear the teacher data for the training.""" self.X_input_list.clear() self.Y_output_list.clear() + self.X_val_list.clear() + self.Y_val_list.clear() def transform_rosbag_to_csv(self, dir_name: str, delete_csv_first: bool = True) -> None: """Convert rosbag file to CSV format.""" @@ -73,19 +105,20 @@ def transform_rosbag_to_csv(self, dir_name: str, delete_csv_first: bool = True) with open(package_path_json, "r") as file: package_path = json.load(file) dir_exe = os.getcwd() - os.system( + subprocess.run( "cp " + package_path["path"] + "/autoware_smart_mpc_trajectory_follower/training_and_data_check/rosbag2.bash " - + dir_name + + dir_name, + shell=True, ) os.chdir(dir_name) if len(glob.glob("*.csv")) > 0 and delete_csv_first: - os.system("rm *.csv") - os.system("bash rosbag2.bash") + subprocess.run("rm *.csv", shell=True) + subprocess.run("bash rosbag2.bash", shell=True) os.chdir(dir_exe) - def add_data_from_csv(self, dir_name: str) -> None: + def add_data_from_csv(self, dir_name: str, add_mode=default_add_mode) -> None: """Adding teacher data for training from a CSV file.""" acc_ctrl_queue_size = drive_functions.acc_ctrl_queue_size steer_ctrl_queue_size = drive_functions.steer_ctrl_queue_size @@ -119,7 +152,7 @@ def add_data_from_csv(self, dir_name: str) -> None: steer_sm = data_smoothing(steer, drive_functions.steer_sigma_for_learning) control_cmd = np.loadtxt( - dir_name + "/control_cmd_orig.csv", delimiter=",", usecols=[0, 1, 4, 9] + dir_name + "/control_cmd_orig.csv", delimiter=",", usecols=[0, 1, 8, 16] ) acc_des = control_cmd[:, 3] acc_des_sm = data_smoothing(acc_des, drive_functions.acc_des_sigma_for_learning) @@ -279,10 +312,30 @@ def get_interpolated_input(s): Y_smooth[:, 5] = data_smoothing( Y_output_list_array[:, 5], drive_functions.steer_out_sigma_for_learning ) - - for i in range(len(X_input_list)): - self.X_input_list.append(X_input_list[i]) - self.Y_output_list.append(Y_smooth[i]) + if add_mode == "divide": + for i in range(len(X_input_list)): + if i < 3 * len(X_input_list) / 4: + self.X_input_list.append(X_input_list[i]) + self.Y_output_list.append(Y_smooth[i]) + else: + self.X_val_list.append(X_input_list[i]) + self.Y_val_list.append(Y_smooth[i]) + + self.division_indices.append(len(self.X_input_list)) + self.division_indices_val.append(len(self.X_val_list)) + + elif add_mode == "as_train": + for i in range(len(X_input_list)): + self.X_input_list.append(X_input_list[i]) + self.Y_output_list.append(Y_smooth[i]) + + self.division_indices.append(len(self.X_input_list)) + if add_mode == "as_val": + for i in range(len(X_input_list)): + self.X_val_list.append(X_input_list[i]) + self.Y_val_list.append(Y_smooth[i]) + + self.division_indices_val.append(len(self.X_val_list)) def save_train_data(self, save_dir=".") -> None: """Save neural net teacher data.""" @@ -291,3 +344,126 @@ def save_train_data(self, save_dir=".") -> None: X_input=np.array(self.X_input_list), Y_output=np.array(self.Y_output_list), ) + + def get_polynomial_regression_result( + self, + X_input_list: list[np.ndarray], + Y_output_list: list[np.ndarray], + use_polynomial_reg: bool, + use_selected_polynomial: bool, + deg: int, + fit_intercept: bool, + use_intercept: bool, + ) -> tuple[np.ndarray, np.ndarray]: + """Get the results of a polynomial regression.""" + X_input = np.array(X_input_list) + Y_output = np.array(Y_output_list) + if use_selected_polynomial: + self.deg = 2 + else: + self.deg = deg + self.A, self.b, Y_output_minus = polynomial_regression( + X_input, + Y_output, + self.alpha_1_for_polynomial_regression, + self.alpha_2_for_polynomial_regression, + use_polynomial_reg, + use_selected_polynomial, + self.deg, + fit_intercept, + use_intercept, + ) + return X_input, Y_output_minus + + +def polynomial_regression( + X, + Y, + alpha_1, + alpha_2, + use_polynomial_reg, + use_selected_polynomial, + deg, + fit_intercept, + use_intercept, + fit_acc_steer=False, +): + polynomial_features = PolynomialFeatures(degree=deg, include_bias=False) + alpha = alpha_1 + alpha_2 + if use_polynomial_reg: + if use_selected_polynomial: + clf_1 = linear_model.ElasticNet( + fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 + ) + clf_2 = linear_model.ElasticNet( + fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 + ) + clf_3 = linear_model.ElasticNet( + fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 + ) + X_poly = polynomial_features.fit_transform(X[:, ctrl_index_for_polynomial_reg]) + A = np.zeros((Y.shape[1], X_poly.shape[1])) + b = np.zeros(Y.shape[1]) + clf_1.fit(X_poly[:, [0, ctrl_index_for_polynomial_reg.shape[0] + 2]], Y[:, [3]]) + # clf_2.fit(X_poly[:, [1, 3,4,5]], Y[:, [4]]) + + acc_input_sum = np.zeros((3, 1)) + acc_input_sum[0, 0] = drive_functions.ctrl_time_step / drive_functions.acc_time_constant + acc_input_sum[1, 0] = acc_input_sum[0, 0] * (1 - acc_input_sum[0, 0]) + acc_input_sum[2, 0] = acc_input_sum[1, 0] * (1 - acc_input_sum[0, 0]) + clf_2.fit(X_poly[:, [3, 4, 5]] @ acc_input_sum, Y[:, [4]]) + + # clf_3.fit(X_poly[:, [2, 6,7,8]], Y[:, [5]]) + + steer_input_sum = np.zeros((3, 1)) + steer_input_sum[0, 0] = ( + drive_functions.ctrl_time_step / drive_functions.steer_time_constant + ) + steer_input_sum[1, 0] = steer_input_sum[0, 0] * (1 - steer_input_sum[0, 0]) + steer_input_sum[2, 0] = steer_input_sum[1, 0] * (1 - steer_input_sum[0, 0]) + clf_3.fit(X_poly[:, [6, 7, 8]] @ steer_input_sum, Y[:, [5]]) + + A[3, [0, ctrl_index_for_polynomial_reg.shape[0] + 2]] = clf_1.coef_ + # A[4, [1, 3,4,5]] = clf_2.coef_ + if fit_acc_steer: + A[4, [3, 4, 5]] = clf_2.coef_ * acc_input_sum.flatten() + + # A[5, [2, 6,7,8]] = clf_3.coef_ + if fit_acc_steer: + A[5, [6, 7, 8]] = clf_3.coef_ * steer_input_sum.flatten() + + if fit_intercept: + b[3] = clf_1.intercept_ + if fit_acc_steer: + b[4] = clf_2.intercept_ + b[5] = clf_3.intercept_ + + if not use_intercept: + b = 0 * b + return A, b, Y - X_poly @ A.T - b + else: + clf = linear_model.ElasticNet( + fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 + ) + X_poly = polynomial_features.fit_transform(X[:, ctrl_index_for_polynomial_reg]) + clf.fit(X_poly, Y) + if fit_intercept: + if use_intercept: + return ( + clf.coef_, + clf.intercept_, + Y - clf.predict(X_poly), + ) + else: + return ( + clf.coef_, + 0 * clf.intercept_, + Y - clf.predict(X_poly) + clf.intercept_, + ) + else: + return clf.coef_, np.zeros(Y.shape[1]), Y - clf.predict(X_poly) + else: + poly_dim = polynomial_features.fit_transform( + X[0, ctrl_index_for_polynomial_reg].reshape(1, -1) + ).shape[1] + return np.zeros((Y.shape[1], poly_dim)), np.zeros(Y.shape[1]), Y diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/data_checker.ipynb b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/data_checker.ipynb index 9ddd5fb6fad2a..c93b091b00888 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/data_checker.ipynb +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/data_checker.ipynb @@ -7,7 +7,7 @@ "metadata": {}, "outputs": [], "source": [ - "# cspell: ignore ndimage usecols kernelspec ipykernel codemirror ipython nbconvert pygments nbformat \n", + "# cspell: ignore ndimage usecols kernelspec ipykernel codemirror ipython nbconvert pygments nbformat #\n", "import numpy as np\n", "from scipy.spatial.transform import Rotation\n", "import scipy.interpolate\n", @@ -31,7 +31,7 @@ " total_time_default=kinematic[-1,0]+1e-9*kinematic[-1,1]-start_time\n", " vehicle_steer = np.loadtxt(dir_name+\"/steering_status.csv\",delimiter=',',usecols=[0,1,2])\n", " steer = vehicle_steer[:,2]\n", - " control_cmd = np.loadtxt(dir_name+\"/control_cmd_orig.csv\",delimiter=',',usecols=[0,1,4,9])\n", + " control_cmd = np.loadtxt(dir_name+\"/control_cmd_orig.csv\",delimiter=',',usecols=[0,1,8,16])\n", " steer_des = control_cmd[:,2]\n", " plt.plot(control_cmd[:,0] + 1e-9*control_cmd[:,1],steer_des,label=\"proxima_input\")\n", " plt.plot(vehicle_steer[:,0] + 1e-9*vehicle_steer[:,1],steer,label=\"observed\")\n", @@ -79,7 +79,7 @@ " total_time_default=kinematic[-1,0]+1e-9*kinematic[-1,1]-start_time\n", " loc_acc = np.loadtxt(dir_name + \"/acceleration.csv\", delimiter=\",\", usecols=[0, 1, 3])\n", " acc = loc_acc[:,2]\n", - " control_cmd = np.loadtxt(dir_name+\"/control_cmd_orig.csv\",delimiter=',',usecols=[0,1,4,9])\n", + " control_cmd = np.loadtxt(dir_name+\"/control_cmd_orig.csv\",delimiter=',',usecols=[0,1,8,16])\n", " acc_des = control_cmd[:,3]\n", " plt.plot(control_cmd[:,0] + 1e-9*control_cmd[:,1],acc_des,label=\"proxima_input\")\n", " plt.plot(loc_acc[:,0] + 1e-9*loc_acc[:,1],acc,label=\"observed\")\n", diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/execute_train_drive_NN_model.ipynb b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/execute_train_drive_NN_model.ipynb index c2955883d5699..1f8934256831e 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/execute_train_drive_NN_model.ipynb +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/execute_train_drive_NN_model.ipynb @@ -7,7 +7,7 @@ "metadata": {}, "outputs": [], "source": [ - "# cspell: ignore kernelspec ipykernel codemirror ipython nbconvert pygments nbformat \n", + "# cspell: ignore kernelspec ipykernel codemirror ipython nbconvert pygments nbformat #\n", "import train_drive_NN_model" ] }, diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_GP_model.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_GP_model.py index 914ed7b53c6ec..c16e301f2ebb8 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_GP_model.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_GP_model.py @@ -15,8 +15,10 @@ # cspell: ignore lengthscale savez import GPy +from autoware_smart_mpc_trajectory_follower.training_and_data_check import ( + add_training_data_from_csv, +) import numpy as np -from smart_mpc_trajectory_follower.training_and_data_check import add_training_data_from_csv class train_drive_GP_model(add_training_data_from_csv.add_data_from_csv): diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model.py index 449ddda45f460..cf1b54e2868de 100644 --- a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model.py +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model.py @@ -12,707 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -# cspell: ignore optim savez suptitle - """Class for training neural nets from driving data.""" -from autoware_smart_mpc_trajectory_follower.scripts import drive_NN from autoware_smart_mpc_trajectory_follower.scripts import drive_functions from autoware_smart_mpc_trajectory_follower.training_and_data_check import ( - add_training_data_from_csv, + train_drive_NN_model_with_memory, ) -import matplotlib.pyplot as plt -import numpy as np -from sklearn import linear_model -from sklearn.preprocessing import PolynomialFeatures -import torch -from torch import nn -from torch.utils.data import DataLoader -from torch.utils.data import TensorDataset - -ctrl_index_for_polynomial_reg = np.concatenate( - ( - np.arange(3), - [3 + drive_functions.acc_delay_step], - [3 + drive_functions.acc_ctrl_queue_size + drive_functions.steer_delay_step], - ) +from autoware_smart_mpc_trajectory_follower.training_and_data_check import ( + train_drive_NN_model_without_memory, ) - -def nominal_model_acc(v: float, alpha_0: float, alpha: float) -> np.ndarray: - """Predicted acceleration value according to the nominal model.""" - nominal_pred = alpha_0 - nominal_v = v + nominal_pred * drive_functions.ctrl_time_step - nominal_pred = ( - nominal_pred - + (alpha - nominal_pred) - * drive_functions.ctrl_time_step - / drive_functions.acc_time_constant - ) - nominal_v = v + nominal_pred * drive_functions.ctrl_time_step - nominal_pred = ( - nominal_pred - + (alpha - nominal_pred) - * drive_functions.ctrl_time_step - / drive_functions.acc_time_constant - ) - nominal_v = v + nominal_pred * drive_functions.ctrl_time_step - nominal_pred = ( - nominal_pred - + (alpha - nominal_pred) - * drive_functions.ctrl_time_step - / drive_functions.acc_time_constant - ) - return np.array([nominal_v, nominal_pred]) - - -def nominal_model_steer(delta_0: float, delta: float) -> float: - """Predicted steer angle according to the nominal model.""" - nominal_pred = delta_0 - nominal_pred = ( - nominal_pred - + (delta - nominal_pred) - * drive_functions.ctrl_time_step - / drive_functions.steer_time_constant - ) - nominal_pred = ( - nominal_pred - + (delta - nominal_pred) - * drive_functions.ctrl_time_step - / drive_functions.steer_time_constant - ) - nominal_pred = ( - nominal_pred - + (delta - nominal_pred) - * drive_functions.ctrl_time_step - / drive_functions.steer_time_constant - ) - return nominal_pred - - -class train_drive_NN_model(add_training_data_from_csv.add_data_from_csv): - """Class for training neural nets from driving data.""" - - tanh_gain: float - """Gain of tanh in the NN cost function""" - - lam: float - """Weights of the tanh term in the NN cost function.""" - - tol: float - """Tolerances for terminating training iterations.""" - - alpha_1: float - """L¹ regularization weights in the NN cost function""" - - alpha_2: float - """L² regularization weights in the NN cost function.""" - - alpha_1_for_polynomial_regression: float - """L¹ regularization weights for polynomial regression""" - - alpha_2_for_polynomial_regression: float - """L² regularization weights for polynomial regression""" - - x_loss: list[float] - """List of values for the loss function of the x component in the NN training.""" - - y_loss: list[float] - """List of values for the loss function of the y component in the NN training.""" - - v_loss: list[float] - """List of values for the loss function of the velocity component in the NN training.""" - - theta_loss: list[float] - """List of values for the loss function of the yaw angle component in the NN training.""" - - acc_loss: list[float] - """List of values for the loss function of the acceleration component in the NN training.""" - - steer_loss: list[float] - """List of values for the loss function of the steer angle component in the NN training.""" - - steer_loss_plus_tanh: list[float] - """List of values of the loss function for the steer angle component with tanh term in the NN training.""" - - total_loss: list[float] - """In NN training x_loss, ... , acc_loss, steer_loss_plus_tanh summed list of values""" - - model: drive_NN.DriveNeuralNetwork - """trained neural network model""" - - A: np.ndarray - """Coefficient matrix of polynomial regression model.""" - - b: np.ndarray - """Constant terms in polynomial regression models (bias)""" - - def __init__( - self, - tanh_gain=10, - lam=0.1, - tol=0.00001, - alpha_1=0.1**7, - alpha_2=0.1**7, - alpha_1_for_polynomial_regression=0.1**5, - alpha_2_for_polynomial_regression=0.1**5, - ): - super(train_drive_NN_model, self).__init__() - self.tanh_gain = tanh_gain - self.lam = lam - self.tol = tol - self.alpha_1 = alpha_1 - self.alpha_2 = alpha_2 - self.alpha_1_for_polynomial_regression = alpha_1_for_polynomial_regression - self.alpha_2_for_polynomial_regression = alpha_2_for_polynomial_regression - self.x_loss = [] - self.y_loss = [] - self.v_loss = [] - self.theta_loss = [] - self.acc_loss = [] - self.steer_loss = [] - self.steer_loss_plus_tanh = [] - self.total_loss = [] - - def train_model( - self, - model: drive_NN.DriveNeuralNetwork, - X_input: np.ndarray, - Y_output: np.ndarray, - learning_rates: list[float], - patience: int = 10, - batch_size: int | None = 50, - max_iter: int = 100000, - ) -> None: - """Train the model.""" - if batch_size is None: - batch_size = X_input.shape[0] // 50 - self.x_loss.clear() - self.y_loss.clear() - self.v_loss.clear() - self.theta_loss.clear() - self.acc_loss.clear() - self.steer_loss.clear() - self.steer_loss_plus_tanh.clear() - self.total_loss.clear() - sample_size = X_input.shape[0] - num_train = int(3 * sample_size / 4) - id_all = np.random.choice(sample_size, sample_size, replace=False) - id_train = id_all[:num_train] - id_val = id_all[num_train:] - X_tensor = torch.tensor(X_input.astype(np.float32)).clone() - Y_tensor = torch.tensor(Y_output.astype(np.float32)).clone() - X_train = X_tensor[id_train] - Y_train = Y_tensor[id_train] - X_val = X_tensor[id_val] - Y_val = Y_tensor[id_val] - - print("sample_size: ", X_input.shape[0]) - print("patience:", patience) - loss_fn = torch.nn.L1Loss() - learning_rate = learning_rates[0] - optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate) - - drive_data = DataLoader( - TensorDataset(X_train, Y_train), batch_size=batch_size, shuffle=True - ) - initial_loss = drive_NN.loss_fn_plus_tanh( - loss_fn, - torch.tensor(np.zeros(Y_val.shape), dtype=torch.float32), - Y_val, - self.tanh_gain, - self.lam, - ) - print("initial_loss:", initial_loss.detach().item()) - early_stopping = drive_NN.EarlyStopping( - initial_loss=initial_loss, tol=self.tol, patience=patience - ) - k = 0 - print("learning_rate:", learning_rates[0]) - for i in range(max_iter): - model.train() - for X_batch, y_batch in drive_data: - y_pred = model(X_batch) - loss = drive_NN.loss_fn_plus_tanh( - loss_fn, y_pred, y_batch, self.tanh_gain, self.lam - ) - for w in model.parameters(): - loss = ( - loss + self.alpha_1 * torch.norm(w, p=1) + self.alpha_2 * torch.norm(w) ** 2 - ) - optimizer.zero_grad() - loss.backward() - optimizer.step() - - model.eval() - pred = model(X_val) - self.total_loss.append( - drive_NN.loss_fn_plus_tanh(loss_fn, pred, Y_val, self.tanh_gain, self.lam) - .detach() - .item() - ) - self.x_loss.append(loss_fn(pred[:, [0]], Y_val[:, [0]]).detach().item()) - self.y_loss.append(loss_fn(pred[:, [1]], Y_val[:, [1]]).detach().item()) - self.v_loss.append(loss_fn(pred[:, [2]], Y_val[:, [2]]).detach().item()) - self.theta_loss.append(loss_fn(pred[:, [3]], Y_val[:, [3]]).detach().item()) - self.acc_loss.append(loss_fn(pred[:, [4]], Y_val[:, [4]]).detach().item()) - self.steer_loss.append(loss_fn(pred[:, [5]], Y_val[:, [5]]).detach().item()) - self.steer_loss_plus_tanh.append( - loss_fn(pred[:, [5]], Y_val[:, [5]]).detach().item() - + self.lam - * loss_fn( - torch.tanh(self.tanh_gain * (pred[:, -1] - Y_val[:, -1])), - torch.zeros(Y_val.shape[0]), - ) - .detach() - .item() - ) - if i % 10 == 1: - current_loss = drive_NN.loss_fn_plus_tanh( - loss_fn, model(X_val), Y_val, self.tanh_gain, self.lam - ) - print(current_loss.detach().item(), i) - if early_stopping(current_loss): - k += 1 - if k == len(learning_rates): - break - else: - learning_rate = learning_rates[k] - print("update learning_rate to ", learning_rates[k]) - optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate) - early_stopping = drive_NN.EarlyStopping( - initial_loss=initial_loss, tol=self.tol, patience=patience - ) - - def get_polynomial_regression_result( - self, - X_input_list: list[np.ndarray], - Y_output_list: list[np.ndarray], - use_polynomial_reg: bool, - use_selected_polynomial: bool, - deg: int, - fit_intercept: bool, - use_intercept: bool, - ) -> tuple[np.ndarray, np.ndarray]: - """Get the results of a polynomial regression.""" - X_input = np.array(X_input_list) - X_input_core = X_input[ - :, - : 3 + drive_functions.acc_ctrl_queue_size + drive_functions.steer_ctrl_queue_size_core, - ].copy() - Y_output = np.array(Y_output_list) - if use_selected_polynomial: - self.deg = 2 - else: - self.deg = deg - self.A, self.b, Y_output_minus = polynomial_regression( - X_input_core, - Y_output, - self.alpha_1_for_polynomial_regression, - self.alpha_2_for_polynomial_regression, - use_polynomial_reg, - use_selected_polynomial, - self.deg, - fit_intercept, - use_intercept, - ) - return X_input, Y_output_minus - - def plot_trained_result( - self, show_flag=False, save_dir=".", plot_range=np.arange(500, 1200) - ) -> None: - """Plot the results of the training.""" - polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) - - X_input = np.array(self.X_input_list) - Y_output = np.array(self.Y_output_list) - X_tensor = torch.tensor(X_input.astype(np.float32)).clone() - acc_ctrl_queue_size = drive_functions.acc_ctrl_queue_size - steer_ctrl_queue_size = drive_functions.steer_ctrl_queue_size - ctrl_time_step = drive_functions.ctrl_time_step - Y_pred = ( - self.model(X_tensor).detach().numpy() - + polynomial_features.fit_transform(X_input[:, ctrl_index_for_polynomial_reg]) - @ (self.A).T - + self.b - ) - x = max(acc_ctrl_queue_size, steer_ctrl_queue_size) * ctrl_time_step - y_labels = [ - "x_error [m]", - "y_error [m]", - "vel_error [m/s]", - "yaw_error [rad]", - "acc_error [m/s^2]", - "steer_error [rad]", - ] - - plt.figure(figsize=(24, 15), tight_layout=True) - plt.subplot(231) - ax = [] - for i in range(6): - ax.append(plt.subplot(2, 3, i + 1)) - ax[-1].plot( - drive_functions.ctrl_time_step * plot_range + x, - Y_output[plot_range, i] * drive_functions.mpc_time_step, - label="nominal_error", - ) - ax[-1].plot( - drive_functions.ctrl_time_step * plot_range + x, - Y_pred[plot_range, i] * drive_functions.mpc_time_step, - label="pred_error", - ) - ax[-1].set_xlabel("sec") - ax[-1].set_ylabel(y_labels[i]) - ax[-1].legend() - if show_flag: - plt.show() - else: - plt.savefig(save_dir + "/train_drive_NN_model_fig.png") - plt.close() - - def plot_loss(self, show_flag=False, save_dir=".") -> None: - """Plot the progression of values of the loss function of the training.""" - plt.figure(figsize=(24, 15), tight_layout=True) - - y_loss_labels = [ - "total_loss", - "x_loss", - "y_loss", - "vel_loss", - "yaw_loss", - "acc_loss", - "steer_loss", - "steer_plus_tanh_loss", - ] - plt.subplot(241) - ax_2 = [] - loss_list = [ - np.array(self.total_loss), - np.array(self.x_loss), - np.array(self.y_loss), - np.array(self.v_loss), - np.array(self.theta_loss), - np.array(self.acc_loss), - np.array(self.steer_loss), - np.array(self.steer_loss_plus_tanh), - ] - for i in range(8): - ax_2.append(plt.subplot(2, 4, i + 1)) - ax_2[-1].plot( - np.arange(loss_list[i].shape[0]), - loss_list[i], - label="loss", - ) - ax_2[-1].set_xlabel("iteration") - ax_2[-1].set_ylabel(y_loss_labels[i]) - ax_2[-1].legend() - if show_flag: - plt.show() - else: - plt.savefig(save_dir + "/loss.png") - plt.close() - - def get_trained_model( - self, - learning_rates: list[float] = [1e-3, 1e-4, 1e-5, 1e-6], - randomize=0.01, - acc_drop_out=0.0, - steer_drop_out=0.0, - patience: int = 10, - batch_size: int | None = 50, - max_iter=100000, - use_polynomial_reg=False, - use_selected_polynomial=True, - force_NN_model_to_zero=False, - fit_intercept=True, - use_intercept=None, - deg: int = 2, - ): - """Train on a model for which initial values are randomly given in a suitable range.""" - if use_intercept is None: - if force_NN_model_to_zero: - use_intercept = True - else: - use_intercept = False - X_input, Y_output_minus = self.get_polynomial_regression_result( - self.X_input_list, - self.Y_output_list, - use_polynomial_reg, - use_selected_polynomial, - deg, - fit_intercept, - use_intercept, - ) - self.model = drive_NN.DriveNeuralNetwork( - randomize=randomize, - acc_drop_out=acc_drop_out, - steer_drop_out=steer_drop_out, - acc_queue_size=drive_functions.acc_ctrl_queue_size, - steer_queue_size=drive_functions.steer_ctrl_queue_size, - ) - if force_NN_model_to_zero: - for w in self.model.parameters(): - w.data = nn.Parameter(torch.zeros(w.shape)) - else: - self.train_model( - self.model, X_input, Y_output_minus, learning_rates, patience, batch_size, max_iter - ) - - def update_trained_model( - self, - learning_rates=[1e-4, 1e-5, 1e-6], - patience=5, - batch_size=50, - max_iter=100000, - use_polynomial_reg=False, - use_selected_polynomial=True, - force_NN_model_to_zero=False, - fit_intercept=True, - use_intercept=None, - deg: int = 2, - ): - """Update `self.model` with additional learning.""" - if use_intercept is None: - if force_NN_model_to_zero: - use_intercept = True - else: - use_intercept = False - X_input, Y_output_minus = self.get_polynomial_regression_result( - self.X_input_list, - self.Y_output_list, - use_polynomial_reg, - use_selected_polynomial, - deg, - fit_intercept, - use_intercept, - ) - if force_NN_model_to_zero: - for w in self.model.parameters(): - w.data = nn.Parameter(torch.zeros(w.shape)) - else: - self.train_model( - self.model, X_input, Y_output_minus, learning_rates, patience, batch_size, max_iter - ) - - def update_saved_trained_model( - self, - path="model_for_test_drive.pth", - learning_rates: list[float] = [1e-4, 1e-5, 1e-6], - patience=5, - batch_size: int | None = 50, - max_iter=100000, - use_polynomial_reg=False, - use_selected_polynomial=True, - force_NN_model_to_zero=False, - fit_intercept=True, - use_intercept=None, - deg: int = 2, - ) -> None: - """Load the saved model and update the model with additional training.""" - if use_intercept is None: - if force_NN_model_to_zero: - use_intercept = True - else: - use_intercept = False - X_input, Y_output_minus = self.get_polynomial_regression_result( - self.X_input_list, - self.Y_output_list, - use_polynomial_reg, - use_selected_polynomial, - deg, - fit_intercept, - use_intercept, - ) - self.model = torch.load(path) - if force_NN_model_to_zero: - for w in self.model.parameters(): - w.data = nn.Parameter(torch.zeros(w.shape)) - else: - self.train_model( - self.model, X_input, Y_output_minus, learning_rates, patience, batch_size, max_iter - ) - - def save_model(self, save_dir=".", path="model_for_test_drive.pth") -> None: - """Save trained NN models.""" - torch.save(self.model, save_dir + "/" + path) - - def save_polynomial_reg_info(self, save_dir=".", path="polynomial_reg_info") -> None: - """Save the coefficients and degree of the resulting polynomial regression.""" - np.savez(save_dir + "/" + path, A=self.A, b=self.b, deg=self.deg) - - def save_models( - self, - save_dir=".", - model_name="model_for_test_drive.pth", - polynomial_reg_info_name="polynomial_reg_info", - ) -> None: - """Run save_model and save_polynomial_reg_info.""" - self.save_model(save_dir, model_name) - self.save_polynomial_reg_info(save_dir, polynomial_reg_info_name) - - def predict_error( - self, v: float, alpha_0: float, delta_0: float, alpha: float, delta: float - ) -> np.ndarray: - """Predicts the prediction error when following a nominal model.""" - polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) - x_input = np.zeros( - 3 + drive_functions.acc_ctrl_queue_size + drive_functions.steer_ctrl_queue_size - ) - x_input[0] = v - x_input[1] = alpha_0 - x_input[2] = delta_0 - x_input[3 : 3 + drive_functions.acc_ctrl_queue_size] += alpha - x_input[3 + drive_functions.acc_ctrl_queue_size :] += delta - x_input_tensor = torch.tensor(x_input.reshape(1, -1).astype(np.float32)) - return ( - self.model(x_input_tensor)[0].detach().numpy() - + self.A - @ polynomial_features.fit_transform( - x_input[ctrl_index_for_polynomial_reg].reshape(1, -1) - )[0] - + self.b - ) - - def sim( - self, v: float, alpha_0: float, alpha: float, delta_0: float, delta: float, iter_times: int - ) -> tuple[float, float, float]: - """Simulate velocity, acceleration and steer changes according to a trained model.""" - v_pred = v - alpha_pred = alpha_0 - delta_pred = delta_0 - for i in range(iter_times): - pred = ( - np.concatenate( - ( - nominal_model_acc(v_pred, alpha_pred, alpha), - np.array([nominal_model_steer(delta_pred, delta)]), - ) - ) - + self.predict_error(v_pred, alpha_pred, delta_pred, alpha, delta)[[2, 4, 5]] - * drive_functions.mpc_time_step - ) - v_pred = pred[0] - alpha_pred = pred[1] - steer_pred = pred[2] - return v_pred, alpha_pred, steer_pred - - def plot_acc_map(self, iter_times: int, starting_steer=0.0, target_steer=0.0) -> None: - """Run `sim` `iter_times` times. The simulation time is approximately 0.1*iter_times. - - Draw the resulting acceleration map. - """ - acc = np.arange(-1, 1, 0.05) - v_tests = np.arange(0, 12, 0.3) - acc_result = np.zeros((acc.shape[0], v_tests.shape[0])) - v_result = np.zeros((acc.shape[0], v_tests.shape[0])) - steer_result = np.zeros((acc.shape[0], v_tests.shape[0])) - for i in range(acc.shape[0]): - v_tests_tmp = v_tests - 0.1 * iter_times * acc[i] - for j in range(v_tests.shape[0]): - v_result[i, j], acc_result[i, j], steer_result[i, j] = self.sim( - v_tests_tmp[j], acc[i], acc[i], starting_steer, target_steer, iter_times - ) - fig = plt.figure() - ax = fig.add_subplot(111, projection="3d") - ax.plot_surface(np.tile(acc, (v_tests.shape[0], 1)).T, v_result, acc_result) - ax.set_xlabel("acc_input [m/s^2]") - ax.set_ylabel("vel [m/s]") - ax.set_zlabel("acc_sim [m/s^2]") - fig.suptitle(str(iter_times * drive_functions.mpc_time_step) + " sec simulation") - plt.show() - - def plot_steer_map(self, iter_times: int, starting_acc=0.0, target_acc=0.0) -> None: - """Run `sim` `iter_times` times. The simulation time is approximately 0.1*iter_times. - - Draw the resulting steer map. - """ - steer = np.arange(-1, 1, 0.05) - v_tests = np.arange(0, 12, 0.3) - acc_result = np.zeros((steer.shape[0], v_tests.shape[0])) - v_result = np.zeros((steer.shape[0], v_tests.shape[0])) - steer_result = np.zeros((steer.shape[0], v_tests.shape[0])) - for i in range(steer.shape[0]): - for j in range(v_tests.shape[0]): - v_result[i, j], acc_result[i, j], steer_result[i, j] = self.sim( - v_tests[j], starting_acc, target_acc, steer[i], steer[i], iter_times - ) - fig = plt.figure() - ax = fig.add_subplot(111, projection="3d") - ax.plot_surface(np.tile(steer, (v_tests.shape[0], 1)).T, v_result, steer_result) - ax.set_xlabel("steer_input [rad]") - ax.set_ylabel("vel [m/s]") - ax.set_zlabel("steer_sim [rad]") - fig.suptitle(str(iter_times * drive_functions.mpc_time_step) + " sec simulation") - plt.show() - - -def polynomial_regression( - X, - Y, - alpha_1, - alpha_2, - use_polynomial_reg, - use_selected_polynomial, - deg, - fit_intercept, - use_intercept, -): - polynomial_features = PolynomialFeatures(degree=deg, include_bias=False) - alpha = alpha_1 + alpha_2 - if use_polynomial_reg: - if use_selected_polynomial: - clf_1 = linear_model.ElasticNet( - fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 - ) - clf_2 = linear_model.ElasticNet( - fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 - ) - clf_3 = linear_model.ElasticNet( - fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 - ) - X_poly = polynomial_features.fit_transform(X[:, ctrl_index_for_polynomial_reg]) - Y_error = Y.copy() - A = np.zeros((Y.shape[1], X_poly.shape[1])) - b = np.zeros(Y.shape[1]) - clf_1.fit(X_poly[:, [0, 7]], Y[:, [3]]) - clf_2.fit(X_poly[:, [1, 3]], Y[:, [4]]) - clf_3.fit(X_poly[:, [2, 4]], Y[:, [5]]) - A[3, [0, 7]] = clf_1.coef_ - A[4, [1, 3]] = clf_2.coef_ - A[5, [2, 4]] = clf_3.coef_ - if fit_intercept: - b[3] = clf_1.intercept_ - b[4] = clf_2.intercept_ - b[5] = clf_3.intercept_ - Y_error[:, 3] -= clf_1.predict(X_poly[:, [0, 7]]) - Y_error[:, 4] -= clf_2.predict(X_poly[:, [1, 3]]) - Y_error[:, 5] -= clf_3.predict(X_poly[:, [2, 4]]) - if not use_intercept: - Y_error += b - b = 0 * b - return A, b, Y_error - else: - clf = linear_model.ElasticNet( - fit_intercept=fit_intercept, alpha=alpha, l1_ratio=alpha_1 / alpha, max_iter=100000 - ) - X_poly = polynomial_features.fit_transform(X[:, ctrl_index_for_polynomial_reg]) - clf.fit(X_poly, Y) - if fit_intercept: - if use_intercept: - return ( - clf.coef_, - clf.intercept_, - Y - clf.predict(X_poly), - ) - else: - return ( - clf.coef_, - 0 * clf.intercept_, - Y - clf.predict(X_poly) + clf.intercept_, - ) - else: - return clf.coef_, np.zeros(Y.shape[1]), Y - clf.predict(X_poly) - else: - poly_dim = polynomial_features.fit_transform( - X[0, ctrl_index_for_polynomial_reg].reshape(1, -1) - ).shape[1] - return np.zeros((Y.shape[1], poly_dim)), np.zeros(Y.shape[1]), Y +if drive_functions.use_memory_for_training: + train_drive_NN_model = train_drive_NN_model_with_memory.train_drive_NN_model_with_memory +else: + train_drive_NN_model = train_drive_NN_model_without_memory.train_drive_NN_model_without_memory diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model_with_memory.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model_with_memory.py new file mode 100644 index 0000000000000..84e0bbe7a7a83 --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model_with_memory.py @@ -0,0 +1,664 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# cspell: ignore optim savez suptitle + +"""Class for training neural nets with memory from driving data.""" +from autoware_smart_mpc_trajectory_follower.scripts import drive_NN +from autoware_smart_mpc_trajectory_follower.scripts import drive_functions +from autoware_smart_mpc_trajectory_follower.training_and_data_check import ( + add_training_data_from_csv, +) +import matplotlib.pyplot as plt # type: ignore +import numpy as np +from sklearn.preprocessing import PolynomialFeatures # type: ignore +import torch +from torch import nn +from torch.utils.data import DataLoader +from torch.utils.data import TensorDataset + +ctrl_index_for_polynomial_reg = np.concatenate( + ( + np.arange(3), + 3 + + max(drive_functions.acc_delay_step - drive_functions.mpc_freq, 0) + + np.arange(drive_functions.mpc_freq), + 3 + + drive_functions.acc_ctrl_queue_size + + max(drive_functions.steer_delay_step - drive_functions.mpc_freq, 0) + + np.arange(drive_functions.mpc_freq), + ) +) + + +def transform_to_sequence_data(X, seq_size, indices): + X_seq = [] + start_num = 0 + for i in range(len(indices)): + j = 0 + while start_num + j + drive_functions.mpc_freq * seq_size <= indices[i]: + X_seq.append(X[start_num + j + drive_functions.mpc_freq * np.arange(seq_size)]) + j += 1 + start_num = indices[i] + + return np.array(X_seq) + + +class train_drive_NN_model_with_memory(add_training_data_from_csv.add_data_from_csv): + """Class for training neural nets from driving data.""" + + tanh_gain: float + """Gain of tanh in the NN cost function.""" + + lam: float + """Weights of the tanh term in the NN cost function.""" + + tol: float + """Tolerances for terminating training iterations.""" + + alpha_1: float + """L¹ regularization weights in the NN cost function.""" + + alpha_2: float + """L² regularization weights in the NN cost function.""" + + alpha_1_for_polynomial_regression: float + """L¹ regularization weights for polynomial regression.""" + + alpha_2_for_polynomial_regression: float + """L² regularization weights for polynomial regression.""" + + x_loss: list[float] + """List of values for the loss function of the x component in the NN training.""" + + y_loss: list[float] + """List of values for the loss function of the y component in the NN training.""" + + v_loss: list[float] + """List of values for the loss function of the velocity component in the NN training.""" + + theta_loss: list[float] + """List of values for the loss function of the yaw angle component in the NN training.""" + + acc_loss: list[float] + """List of values for the loss function of the acceleration component in the NN training.""" + + steer_loss: list[float] + """List of values for the loss function of the steer angle component in the NN training.""" + + steer_loss_plus_tanh: list[float] + """List of values of the loss function for the steer angle component with tanh term in the NN training.""" + + total_loss: list[float] + """In NN training x_loss, ... , acc_loss, steer_loss_plus_tanh summed list of values.""" + + model: drive_NN.DriveNeuralNetworkWithMemory + """trained neural network model.""" + + A: np.ndarray + """Coefficient matrix of polynomial regression model.""" + + b: np.ndarray + """Constant terms in polynomial regression models (bias).""" + + def __init__( + self, + tanh_gain=10, + lam=0.1, + tol=0.00001, + alpha_1=0.1**7, + alpha_2=0.1**7, + alpha_1_for_polynomial_regression=0.1**5, + alpha_2_for_polynomial_regression=0.1**5, + seq_size=2 * drive_functions.N + 1, + first_order_weight=1.0, + second_order_weight=1.0, + ): + super(train_drive_NN_model_with_memory, self).__init__() + self.tanh_gain = tanh_gain + self.lam = lam + self.tol = tol + self.alpha_1 = alpha_1 + self.alpha_2 = alpha_2 + self.alpha_1_for_polynomial_regression = alpha_1_for_polynomial_regression + self.alpha_2_for_polynomial_regression = alpha_2_for_polynomial_regression + self.x_loss = [] + self.y_loss = [] + self.v_loss = [] + self.theta_loss = [] + self.acc_loss = [] + self.steer_loss = [] + self.steer_loss_plus_tanh = [] + self.total_loss = [] + self.seq_size = seq_size + self.first_order_weight = first_order_weight + self.second_order_weight = second_order_weight + + def train_model( + self, + model: drive_NN.DriveNeuralNetworkWithMemory, + X_input: np.ndarray, + Y_output: np.ndarray, + learning_rates: list[float], + patience: int = 10, + batch_size: int | None = 5, + max_iter: int = 100000, + X_val_np=None, + Y_val_np=None, + ) -> None: + """Train the model.""" + if batch_size is None: + batch_size = X_input.shape[0] // 50 + self.x_loss.clear() + self.y_loss.clear() + self.v_loss.clear() + self.theta_loss.clear() + self.acc_loss.clear() + self.steer_loss.clear() + self.steer_loss_plus_tanh.clear() + self.total_loss.clear() + + if X_val_np is None: + X_tensor = torch.tensor( + transform_to_sequence_data(X_input, self.seq_size, self.division_indices).astype( + np.float32 + ) + ).clone() + Y_tensor = torch.tensor( + transform_to_sequence_data(Y_output, self.seq_size, self.division_indices).astype( + np.float32 + ) + ).clone() + sample_size = X_tensor.shape[0] + num_train = int(3 * sample_size / 4) + id_all = np.random.choice(sample_size, sample_size, replace=False) + id_train = id_all[:num_train] + id_val = id_all[num_train:] + X_train = X_tensor[id_train] + Y_train = Y_tensor[id_train] + X_val = X_tensor[id_val] + Y_val = Y_tensor[id_val] + print("sample_size: ", X_input.shape[0]) + else: + X_train = torch.tensor( + transform_to_sequence_data(X_input, self.seq_size, self.division_indices).astype( + np.float32 + ) + ).clone() + Y_train = torch.tensor( + transform_to_sequence_data(Y_output, self.seq_size, self.division_indices).astype( + np.float32 + ) + ).clone() + X_val = torch.tensor( + transform_to_sequence_data( + X_val_np, self.seq_size, self.division_indices_val + ).astype(np.float32) + ).clone() + Y_val = torch.tensor( + transform_to_sequence_data( + Y_val_np, self.seq_size, self.division_indices_val + ).astype(np.float32) + ).clone() + print("sample_size", X_input.shape[0] + X_val_np.shape[0]) + print("patience:", patience) + loss_fn = torch.nn.L1Loss() + learning_rate = learning_rates[0] + optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate) + + drive_data = DataLoader( + TensorDataset(X_train, Y_train), batch_size=batch_size, shuffle=True + ) + initial_loss = drive_NN.loss_fn_plus_tanh_with_memory( + loss_fn, + torch.tensor(np.zeros(Y_val.shape)[:, self.seq_size // 2 :], dtype=torch.float32), + Y_val[:, self.seq_size // 2 :], + self.tanh_gain, + self.lam, + self.first_order_weight, + self.second_order_weight, + ) + print("initial_loss:", initial_loss.detach().item()) + early_stopping = drive_NN.EarlyStopping( + initial_loss=initial_loss, tol=self.tol, patience=patience + ) + k = 0 + print("learning_rate:", learning_rates[0]) + for i in range(max_iter): + model.train() + for X_batch, y_batch in drive_data: + y_pred = model(X_batch) + loss = drive_NN.loss_fn_plus_tanh_with_memory( + loss_fn, + y_pred[:, self.seq_size // 2 :], + y_batch[:, self.seq_size // 2 :], + self.tanh_gain, + self.lam, + self.first_order_weight, + self.second_order_weight, + ) + for w in model.named_parameters(): + loss = ( + loss + + self.alpha_1 * torch.norm(w[1], p=1) + + self.alpha_2 * torch.norm(w[1]) ** 2 + ) + if w[0] in ["finalize.weight", "finalize.bias"]: + loss = loss + (drive_functions.finalize_x_weight - 1) * ( + self.alpha_1 * torch.norm(w[1][0], p=1) + + self.alpha_2 * torch.norm(w[1][0]) ** 2 + ) + loss = loss + (drive_functions.finalize_y_weight - 1) * ( + self.alpha_1 * torch.norm(w[1][1], p=1) + + self.alpha_2 * torch.norm(w[1][1]) ** 2 + ) + loss = loss + (drive_functions.finalize_v_weight - 1) * ( + self.alpha_1 * torch.norm(w[1][2], p=1) + + self.alpha_2 * torch.norm(w[1][2]) ** 2 + ) + optimizer.zero_grad() + loss.backward() + optimizer.step() + + model.eval() + pred = model(X_val) + self.total_loss.append( + drive_NN.loss_fn_plus_tanh_with_memory( + loss_fn, + pred[:, self.seq_size // 2 :], + Y_val[:, self.seq_size // 2 :], + self.tanh_gain, + self.lam, + self.first_order_weight, + self.second_order_weight, + ) + .detach() + .item() + ) + self.x_loss.append( + loss_fn(pred[:, self.seq_size // 2 :, [0]], Y_val[:, self.seq_size // 2 :, [0]]) + .detach() + .item() + ) + self.y_loss.append( + loss_fn(pred[:, self.seq_size // 2 :, [1]], Y_val[:, self.seq_size // 2 :, [1]]) + .detach() + .item() + ) + self.v_loss.append( + loss_fn(pred[:, self.seq_size // 2 :, [2]], Y_val[:, self.seq_size // 2 :, [2]]) + .detach() + .item() + ) + self.theta_loss.append( + loss_fn(pred[:, self.seq_size // 2 :, [3]], Y_val[:, self.seq_size // 2 :, [3]]) + .detach() + .item() + ) + self.acc_loss.append( + loss_fn(pred[:, self.seq_size // 2 :, [4]], Y_val[:, self.seq_size // 2 :, [4]]) + .detach() + .item() + ) + self.steer_loss.append( + loss_fn(pred[:, self.seq_size // 2 :, [5]], Y_val[:, self.seq_size // 2 :, [5]]) + .detach() + .item() + ) + self.steer_loss_plus_tanh.append( + loss_fn(pred[:, self.seq_size // 2 :, [5]], Y_val[:, self.seq_size // 2 :, [5]]) + .detach() + .item() + + self.lam + * loss_fn( + torch.tanh( + self.tanh_gain + * (pred[:, self.seq_size // 2 :, -1] - Y_val[:, self.seq_size // 2 :, -1]) + ), + torch.zeros((Y_val.shape[0], Y_val.shape[1] - self.seq_size // 2)), + ) + .detach() + .item() + ) + + current_loss = drive_NN.loss_fn_plus_tanh_with_memory( + loss_fn, + model(X_val)[:, self.seq_size // 2 :], + Y_val[:, self.seq_size // 2 :], + self.tanh_gain, + self.lam, + self.first_order_weight, + self.second_order_weight, + ) + if i % 10 == 1: + print(current_loss.detach().item(), i) + if early_stopping(current_loss): + k += 1 + if k == len(learning_rates): + break + else: + learning_rate = learning_rates[k] + print("update learning_rate to ", learning_rates[k]) + optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate) + early_stopping = drive_NN.EarlyStopping( + initial_loss=initial_loss, tol=self.tol, patience=patience + ) + + def plot_loss(self, show_flag=False, save_dir=".") -> None: + """Plot the progression of values of the loss function of the training.""" + plt.figure(figsize=(24, 15), tight_layout=True) + + y_loss_labels = [ + "total_loss", + "x_loss", + "y_loss", + "vel_loss", + "yaw_loss", + "acc_loss", + "steer_loss", + "steer_plus_tanh_loss", + ] + plt.subplot(2, 4, 1) + ax_2 = [] + loss_list = [ + np.array(self.total_loss), + np.array(self.x_loss), + np.array(self.y_loss), + np.array(self.v_loss), + np.array(self.theta_loss), + np.array(self.acc_loss), + np.array(self.steer_loss), + np.array(self.steer_loss_plus_tanh), + ] + for i in range(8): + ax_2.append(plt.subplot(2, 4, i + 1)) + ax_2[-1].plot( + np.arange(loss_list[i].shape[0]), + loss_list[i], + label="loss", + ) + ax_2[-1].set_xlabel("iteration") + ax_2[-1].set_ylabel(y_loss_labels[i]) + ax_2[-1].legend() + if show_flag: + plt.show() + else: + plt.savefig(save_dir + "/loss.png") + plt.close() + + def plot_trained_result( + self, show_flag=False, save_dir=".", plot_range=np.arange(500, 1200) + ) -> None: + """Plot the results of the training.""" + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + + X_input = np.array(self.X_input_list) + Y_output = np.array(self.Y_output_list) + X_tensor = torch.tensor(X_input.astype(np.float32)).clone() + acc_ctrl_queue_size = drive_functions.acc_ctrl_queue_size + steer_ctrl_queue_size = drive_functions.steer_ctrl_queue_size + ctrl_time_step = drive_functions.ctrl_time_step + Y_pred = np.zeros(Y_output.shape) + start_index = 0 + for i in range(len(self.division_indices)): + Y_pred[start_index : self.division_indices[i]] = ( + self.model(X_tensor[start_index : self.division_indices[i]].unsqueeze(dim=0))[0] + .detach() + .numpy() + + polynomial_features.fit_transform( + X_input[start_index : self.division_indices[i], ctrl_index_for_polynomial_reg] + ) + @ (self.A).T + + self.b + ) + start_index = self.division_indices[i] + x = max(acc_ctrl_queue_size, steer_ctrl_queue_size) * ctrl_time_step + y_labels = [ + "x_error [m]", + "y_error [m]", + "vel_error [m/s]", + "yaw_error [rad]", + "acc_error [m/s^2]", + "steer_error [rad]", + ] + + plt.figure(figsize=(24, 15), tight_layout=True) + plt.subplot(2, 3, 1) + ax = [] + for i in range(6): + ax.append(plt.subplot(2, 3, i + 1)) + ax[-1].plot( + drive_functions.ctrl_time_step * plot_range + x, + Y_output[plot_range, i] * drive_functions.mpc_time_step, + label="nominal_error", + ) + ax[-1].plot( + drive_functions.ctrl_time_step * plot_range + x, + Y_pred[plot_range, i] * drive_functions.mpc_time_step, + label="pred_error", + ) + ax[-1].set_xlabel("sec") + ax[-1].set_ylabel(y_labels[i]) + ax[-1].legend() + if show_flag: + plt.show() + else: + plt.savefig(save_dir + "/train_drive_NN_model_fig.png") + plt.close() + + def get_trained_model( + self, + hidden_layer_sizes=(16, 16), + hidden_layer_lstm=8, + learning_rates: list[float] = [1e-3, 1e-4, 1e-5, 1e-6], + randomize=0.01, + acc_drop_out=0.0, + steer_drop_out=0.0, + patience: int = 10, + batch_size: int | None = 5, + max_iter=100000, + use_polynomial_reg=False, + use_selected_polynomial=True, + force_NN_model_to_zero=False, + fit_intercept=True, + use_intercept=None, + deg: int = 2, + ): + """Train on a model for which initial values are randomly given in a suitable range.""" + if use_intercept is None: + if force_NN_model_to_zero: + use_intercept = True + else: + use_intercept = False + X_input, Y_output_minus = self.get_polynomial_regression_result( + self.X_input_list, + self.Y_output_list, + use_polynomial_reg, + use_selected_polynomial, + deg, + fit_intercept, + use_intercept, + ) + + if len(self.X_val_list) > 0: + X_val = np.array(self.X_val_list) + Y_val = np.array(self.Y_val_list) + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + Y_val = ( + Y_val + - polynomial_features.fit_transform(X_val[:, ctrl_index_for_polynomial_reg]) + @ (self.A).T + - self.b + ) + else: + X_val = None + Y_val = None + self.model = drive_NN.DriveNeuralNetworkWithMemory( + hidden_layer_sizes=hidden_layer_sizes, + hidden_layer_lstm=hidden_layer_lstm, + randomize=randomize, + acc_drop_out=acc_drop_out, + steer_drop_out=steer_drop_out, + acc_queue_size=drive_functions.acc_ctrl_queue_size, + steer_queue_size=drive_functions.steer_ctrl_queue_size, + ) + if force_NN_model_to_zero: + for w in self.model.parameters(): + w.data = nn.Parameter(torch.zeros(w.shape)) + else: + self.train_model( + self.model, + X_input, + Y_output_minus, + learning_rates, + patience, + batch_size, + max_iter, + X_val, + Y_val, + ) + + def update_trained_model( + self, + learning_rates=[1e-4, 1e-5, 1e-6], + patience=10, + batch_size=5, + max_iter=100000, + use_polynomial_reg=False, + use_selected_polynomial=True, + force_NN_model_to_zero=False, + fit_intercept=True, + use_intercept=None, + deg: int = 2, + ): + """Update `self.model` with additional learning.""" + if use_intercept is None: + if force_NN_model_to_zero: + use_intercept = True + else: + use_intercept = False + X_input, Y_output_minus = self.get_polynomial_regression_result( + self.X_input_list, + self.Y_output_list, + use_polynomial_reg, + use_selected_polynomial, + deg, + fit_intercept, + use_intercept, + ) + if len(self.X_val_list) > 0: + X_val = np.array(self.X_val_list) + Y_val = np.array(self.Y_val_list) + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + Y_val = ( + Y_val + - polynomial_features.fit_transform(X_val[:, ctrl_index_for_polynomial_reg]) + @ (self.A).T + - self.b + ) + else: + X_val = None + Y_val = None + if force_NN_model_to_zero: + for w in self.model.parameters(): + w.data = nn.Parameter(torch.zeros(w.shape)) + else: + self.train_model( + self.model, + X_input, + Y_output_minus, + learning_rates, + patience, + batch_size, + max_iter, + X_val, + Y_val, + ) + + def update_saved_trained_model( + self, + path="model_for_test_drive.pth", + learning_rates: list[float] = [1e-4, 1e-5, 1e-6], + patience=10, + batch_size: int | None = 5, + max_iter=100000, + use_polynomial_reg=False, + use_selected_polynomial=True, + force_NN_model_to_zero=False, + fit_intercept=True, + use_intercept=None, + deg: int = 2, + ) -> None: + """Load the saved model and update the model with additional training.""" + if use_intercept is None: + if force_NN_model_to_zero: + use_intercept = True + else: + use_intercept = False + X_input, Y_output_minus = self.get_polynomial_regression_result( + self.X_input_list, + self.Y_output_list, + use_polynomial_reg, + use_selected_polynomial, + deg, + fit_intercept, + use_intercept, + ) + if len(self.X_val_list) > 0: + X_val = np.array(self.X_val_list) + Y_val = np.array(self.Y_val_list) + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + Y_val = ( + Y_val + - polynomial_features.fit_transform(X_val[:, ctrl_index_for_polynomial_reg]) + @ (self.A).T + - self.b + ) + else: + X_val = None + Y_val = None + self.model = torch.load(path) + if force_NN_model_to_zero: + for w in self.model.parameters(): + w.data = nn.Parameter(torch.zeros(w.shape)) + else: + self.train_model( + self.model, + X_input, + Y_output_minus, + learning_rates, + patience, + batch_size, + max_iter, + X_val, + Y_val, + ) + + def save_model(self, save_dir=".", path="model_for_test_drive.pth") -> None: + """Save trained NN models.""" + torch.save(self.model, save_dir + "/" + path) + + def save_polynomial_reg_info(self, save_dir=".", path="polynomial_reg_info") -> None: + """Save the coefficients and degree of the resulting polynomial regression.""" + np.savez(save_dir + "/" + path, A=self.A, b=self.b, deg=self.deg) + + def save_models( + self, + save_dir=".", + model_name="model_for_test_drive.pth", + polynomial_reg_info_name="polynomial_reg_info", + ) -> None: + """Run save_model and save_polynomial_reg_info.""" + self.save_model(save_dir, model_name) + self.save_polynomial_reg_info(save_dir, polynomial_reg_info_name) diff --git a/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model_without_memory.py b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model_without_memory.py new file mode 100644 index 0000000000000..0117bb1707682 --- /dev/null +++ b/control/autoware_smart_mpc_trajectory_follower/autoware_smart_mpc_trajectory_follower/training_and_data_check/train_drive_NN_model_without_memory.py @@ -0,0 +1,704 @@ +# Copyright 2024 Proxima Technology Inc, TIER IV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# cspell: ignore optim savez suptitle + +"""Class for training neural nets from driving data.""" +from autoware_smart_mpc_trajectory_follower.scripts import drive_NN +from autoware_smart_mpc_trajectory_follower.scripts import drive_functions +from autoware_smart_mpc_trajectory_follower.training_and_data_check import ( + add_training_data_from_csv, +) +import matplotlib.pyplot as plt # type: ignore +import numpy as np +from sklearn.preprocessing import PolynomialFeatures # type: ignore +import torch +from torch import nn +from torch.utils.data import DataLoader +from torch.utils.data import TensorDataset + +ctrl_index_for_polynomial_reg = np.concatenate( + ( + np.arange(3), + 3 + + max(drive_functions.acc_delay_step - drive_functions.mpc_freq, 0) + + np.arange(drive_functions.mpc_freq), + 3 + + drive_functions.acc_ctrl_queue_size + + max(drive_functions.steer_delay_step - drive_functions.mpc_freq, 0) + + np.arange(drive_functions.mpc_freq), + ) +) + + +def nominal_model_acc(v: float, alpha_0: float, alpha: float) -> np.ndarray: + """Predicted acceleration value according to the nominal model.""" + nominal_pred = alpha_0 + nominal_v = v + nominal_pred * drive_functions.ctrl_time_step + nominal_pred = ( + nominal_pred + + (alpha - nominal_pred) + * drive_functions.ctrl_time_step + / drive_functions.acc_time_constant + ) + nominal_v = v + nominal_pred * drive_functions.ctrl_time_step + nominal_pred = ( + nominal_pred + + (alpha - nominal_pred) + * drive_functions.ctrl_time_step + / drive_functions.acc_time_constant + ) + nominal_v = v + nominal_pred * drive_functions.ctrl_time_step + nominal_pred = ( + nominal_pred + + (alpha - nominal_pred) + * drive_functions.ctrl_time_step + / drive_functions.acc_time_constant + ) + return np.array([nominal_v, nominal_pred]) + + +def nominal_model_steer(delta_0: float, delta: float) -> float: + """Predicted steer angle according to the nominal model.""" + nominal_pred = delta_0 + nominal_pred = ( + nominal_pred + + (delta - nominal_pred) + * drive_functions.ctrl_time_step + / drive_functions.steer_time_constant + ) + nominal_pred = ( + nominal_pred + + (delta - nominal_pred) + * drive_functions.ctrl_time_step + / drive_functions.steer_time_constant + ) + nominal_pred = ( + nominal_pred + + (delta - nominal_pred) + * drive_functions.ctrl_time_step + / drive_functions.steer_time_constant + ) + return nominal_pred + + +class train_drive_NN_model_without_memory(add_training_data_from_csv.add_data_from_csv): + """Class for training neural nets from driving data.""" + + tanh_gain: float + """Gain of tanh in the NN cost function""" + + lam: float + """Weights of the tanh term in the NN cost function.""" + + tol: float + """Tolerances for terminating training iterations.""" + + alpha_1: float + """L¹ regularization weights in the NN cost function""" + + alpha_2: float + """L² regularization weights in the NN cost function.""" + + alpha_1_for_polynomial_regression: float + """L¹ regularization weights for polynomial regression""" + + alpha_2_for_polynomial_regression: float + """L² regularization weights for polynomial regression""" + + x_loss: list[float] + """List of values for the loss function of the x component in the NN training.""" + + y_loss: list[float] + """List of values for the loss function of the y component in the NN training.""" + + v_loss: list[float] + """List of values for the loss function of the velocity component in the NN training.""" + + theta_loss: list[float] + """List of values for the loss function of the yaw angle component in the NN training.""" + + acc_loss: list[float] + """List of values for the loss function of the acceleration component in the NN training.""" + + steer_loss: list[float] + """List of values for the loss function of the steer angle component in the NN training.""" + + steer_loss_plus_tanh: list[float] + """List of values of the loss function for the steer angle component with tanh term in the NN training.""" + + total_loss: list[float] + """In NN training x_loss, ... , acc_loss, steer_loss_plus_tanh summed list of values""" + + model: drive_NN.DriveNeuralNetwork + """trained neural network model""" + + A: np.ndarray + """Coefficient matrix of polynomial regression model.""" + + b: np.ndarray + """Constant terms in polynomial regression models (bias)""" + + def __init__( + self, + tanh_gain=10, + lam=0.1, + tol=0.00001, + alpha_1=0.1**7, + alpha_2=0.1**7, + alpha_1_for_polynomial_regression=0.1**5, + alpha_2_for_polynomial_regression=0.1**5, + ): + super(train_drive_NN_model_without_memory, self).__init__( + alpha_1_for_polynomial_regression, alpha_2_for_polynomial_regression + ) + self.tanh_gain = tanh_gain + self.lam = lam + self.tol = tol + self.alpha_1 = alpha_1 + self.alpha_2 = alpha_2 + self.alpha_1_for_polynomial_regression = alpha_1_for_polynomial_regression + self.alpha_2_for_polynomial_regression = alpha_2_for_polynomial_regression + self.x_loss = [] + self.y_loss = [] + self.v_loss = [] + self.theta_loss = [] + self.acc_loss = [] + self.steer_loss = [] + self.steer_loss_plus_tanh = [] + self.total_loss = [] + + def train_model( + self, + model: drive_NN.DriveNeuralNetwork, + X_input: np.ndarray, + Y_output: np.ndarray, + learning_rates: list[float], + patience: int = 10, + batch_size: int | None = 50, + max_iter: int = 100000, + X_val_np=None, + Y_val_np=None, + ) -> None: + """Train the model.""" + if batch_size is None: + batch_size = X_input.shape[0] // 50 + self.x_loss.clear() + self.y_loss.clear() + self.v_loss.clear() + self.theta_loss.clear() + self.acc_loss.clear() + self.steer_loss.clear() + self.steer_loss_plus_tanh.clear() + self.total_loss.clear() + if X_val_np is None: + sample_size = X_input.shape[0] + num_train = int(3 * sample_size / 4) + id_all = np.random.choice(sample_size, sample_size, replace=False) + id_train = id_all[:num_train] + id_val = id_all[num_train:] + X_tensor = torch.tensor(X_input.astype(np.float32)).clone() + Y_tensor = torch.tensor(Y_output.astype(np.float32)).clone() + X_train = X_tensor[id_train] + Y_train = Y_tensor[id_train] + X_val = X_tensor[id_val] + Y_val = Y_tensor[id_val] + print("sample_size: ", X_input.shape[0]) + else: + X_train = torch.tensor(X_input.astype(np.float32)).clone() + Y_train = torch.tensor(Y_output.astype(np.float32)).clone() + X_val = torch.tensor(X_val_np.astype(np.float32)).clone() + Y_val = torch.tensor(Y_val_np.astype(np.float32)).clone() + print("sample_size", X_input.shape[0] + X_val_np.shape[0]) + print("patience:", patience) + loss_fn = torch.nn.L1Loss() + learning_rate = learning_rates[0] + optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate) + + drive_data = DataLoader( + TensorDataset(X_train, Y_train), batch_size=batch_size, shuffle=True + ) + initial_loss = drive_NN.loss_fn_plus_tanh( + loss_fn, + torch.tensor(np.zeros(Y_val.shape), dtype=torch.float32), + Y_val, + self.tanh_gain, + self.lam, + ) + print("initial_loss:", initial_loss.detach().item()) + early_stopping = drive_NN.EarlyStopping( + initial_loss=initial_loss, tol=self.tol, patience=patience + ) + k = 0 + print("learning_rate:", learning_rates[0]) + for i in range(max_iter): + model.train() + for X_batch, y_batch in drive_data: + y_pred = model(X_batch) + loss = drive_NN.loss_fn_plus_tanh( + loss_fn, y_pred, y_batch, self.tanh_gain, self.lam + ) + for w in model.parameters(): + loss = ( + loss + self.alpha_1 * torch.norm(w, p=1) + self.alpha_2 * torch.norm(w) ** 2 + ) + if w[0] in ["finalize.weight", "finalize.bias"]: + loss = loss + (drive_functions.finalize_x_weight - 1) * ( + self.alpha_1 * torch.norm(w[1][0], p=1) + + self.alpha_2 * torch.norm(w[1][0]) ** 2 + ) + loss = loss + (drive_functions.finalize_y_weight - 1) * ( + self.alpha_1 * torch.norm(w[1][1], p=1) + + self.alpha_2 * torch.norm(w[1][1]) ** 2 + ) + loss = loss + (drive_functions.finalize_v_weight - 1) * ( + self.alpha_1 * torch.norm(w[1][2], p=1) + + self.alpha_2 * torch.norm(w[1][2]) ** 2 + ) + optimizer.zero_grad() + loss.backward() + optimizer.step() + + model.eval() + pred = model(X_val) + self.total_loss.append( + drive_NN.loss_fn_plus_tanh(loss_fn, pred, Y_val, self.tanh_gain, self.lam) + .detach() + .item() + ) + self.x_loss.append(loss_fn(pred[:, [0]], Y_val[:, [0]]).detach().item()) + self.y_loss.append(loss_fn(pred[:, [1]], Y_val[:, [1]]).detach().item()) + self.v_loss.append(loss_fn(pred[:, [2]], Y_val[:, [2]]).detach().item()) + self.theta_loss.append(loss_fn(pred[:, [3]], Y_val[:, [3]]).detach().item()) + self.acc_loss.append(loss_fn(pred[:, [4]], Y_val[:, [4]]).detach().item()) + self.steer_loss.append(loss_fn(pred[:, [5]], Y_val[:, [5]]).detach().item()) + self.steer_loss_plus_tanh.append( + loss_fn(pred[:, [5]], Y_val[:, [5]]).detach().item() + + self.lam + * loss_fn( + torch.tanh(self.tanh_gain * (pred[:, -1] - Y_val[:, -1])), + torch.zeros(Y_val.shape[0]), + ) + .detach() + .item() + ) + current_loss = drive_NN.loss_fn_plus_tanh( + loss_fn, model(X_val), Y_val, self.tanh_gain, self.lam + ) + if i % 10 == 1: + print(current_loss.detach().item(), i) + if early_stopping(current_loss): + k += 1 + if k == len(learning_rates): + break + else: + learning_rate = learning_rates[k] + print("update learning_rate to ", learning_rates[k]) + optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate) + early_stopping = drive_NN.EarlyStopping( + initial_loss=initial_loss, tol=self.tol, patience=patience + ) + + def plot_trained_result( + self, show_flag=False, save_dir=".", plot_range=np.arange(500, 1200) + ) -> None: + """Plot the results of the training.""" + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + + X_input = np.array(self.X_input_list) + Y_output = np.array(self.Y_output_list) + X_tensor = torch.tensor(X_input.astype(np.float32)).clone() + acc_ctrl_queue_size = drive_functions.acc_ctrl_queue_size + steer_ctrl_queue_size = drive_functions.steer_ctrl_queue_size + ctrl_time_step = drive_functions.ctrl_time_step + Y_pred = ( + self.model(X_tensor).detach().numpy() + + polynomial_features.fit_transform(X_input[:, ctrl_index_for_polynomial_reg]) + @ (self.A).T + + self.b + ) + x = max(acc_ctrl_queue_size, steer_ctrl_queue_size) * ctrl_time_step + y_labels = [ + "x_error [m]", + "y_error [m]", + "vel_error [m/s]", + "yaw_error [rad]", + "acc_error [m/s^2]", + "steer_error [rad]", + ] + + plt.figure(figsize=(24, 15), tight_layout=True) + plt.subplot(2, 3, 1) + ax = [] + for i in range(6): + ax.append(plt.subplot(2, 3, i + 1)) + ax[-1].plot( + drive_functions.ctrl_time_step * plot_range + x, + Y_output[plot_range, i] * drive_functions.mpc_time_step, + label="nominal_error", + ) + ax[-1].plot( + drive_functions.ctrl_time_step * plot_range + x, + Y_pred[plot_range, i] * drive_functions.mpc_time_step, + label="pred_error", + ) + ax[-1].set_xlabel("sec") + ax[-1].set_ylabel(y_labels[i]) + ax[-1].legend() + if show_flag: + plt.show() + else: + plt.savefig(save_dir + "/train_drive_NN_model_fig.png") + plt.close() + + def plot_loss(self, show_flag=False, save_dir=".") -> None: + """Plot the progression of values of the loss function of the training.""" + plt.figure(figsize=(24, 15), tight_layout=True) + + y_loss_labels = [ + "total_loss", + "x_loss", + "y_loss", + "vel_loss", + "yaw_loss", + "acc_loss", + "steer_loss", + "steer_plus_tanh_loss", + ] + plt.subplot(2, 4, 1) + ax_2 = [] + loss_list = [ + np.array(self.total_loss), + np.array(self.x_loss), + np.array(self.y_loss), + np.array(self.v_loss), + np.array(self.theta_loss), + np.array(self.acc_loss), + np.array(self.steer_loss), + np.array(self.steer_loss_plus_tanh), + ] + for i in range(8): + ax_2.append(plt.subplot(2, 4, i + 1)) + ax_2[-1].plot( + np.arange(loss_list[i].shape[0]), + loss_list[i], + label="loss", + ) + ax_2[-1].set_xlabel("iteration") + ax_2[-1].set_ylabel(y_loss_labels[i]) + ax_2[-1].legend() + if show_flag: + plt.show() + else: + plt.savefig(save_dir + "/loss.png") + plt.close() + + def get_trained_model( + self, + hidden_layer_sizes=(32, 16), + hidden_layer_lstm=None, + learning_rates: list[float] = [1e-3, 1e-4, 1e-5, 1e-6], + randomize=0.01, + acc_drop_out=0.0, + steer_drop_out=0.0, + patience: int = 10, + batch_size: int | None = 50, + max_iter=100000, + use_polynomial_reg=False, + use_selected_polynomial=True, + force_NN_model_to_zero=False, + fit_intercept=True, + use_intercept=None, + deg: int = 2, + ): + """Train on a model for which initial values are randomly given in a suitable range.""" + if use_intercept is None: + if force_NN_model_to_zero: + use_intercept = True + else: + use_intercept = False + X_input, Y_output_minus = self.get_polynomial_regression_result( + self.X_input_list, + self.Y_output_list, + use_polynomial_reg, + use_selected_polynomial, + deg, + fit_intercept, + use_intercept, + ) + if len(self.X_val_list) > 0: + X_val = np.array(self.X_val_list) + Y_val = np.array(self.Y_val_list) + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + Y_val = ( + Y_val + - polynomial_features.fit_transform(X_val[:, ctrl_index_for_polynomial_reg]) + @ (self.A).T + - self.b + ) + else: + X_val = None + Y_val = None + self.model = drive_NN.DriveNeuralNetwork( + hidden_layer_sizes=hidden_layer_sizes, + randomize=randomize, + acc_drop_out=acc_drop_out, + steer_drop_out=steer_drop_out, + acc_queue_size=drive_functions.acc_ctrl_queue_size, + steer_queue_size=drive_functions.steer_ctrl_queue_size, + ) + if force_NN_model_to_zero: + for w in self.model.parameters(): + w.data = nn.Parameter(torch.zeros(w.shape)) + else: + self.train_model( + self.model, + X_input, + Y_output_minus, + learning_rates, + patience, + batch_size, + max_iter, + X_val, + Y_val, + ) + + def update_trained_model( + self, + learning_rates=[1e-4, 1e-5, 1e-6], + patience=10, + batch_size=50, + max_iter=100000, + use_polynomial_reg=False, + use_selected_polynomial=True, + force_NN_model_to_zero=False, + fit_intercept=True, + use_intercept=None, + deg: int = 2, + ): + """Update `self.model` with additional learning.""" + if use_intercept is None: + if force_NN_model_to_zero: + use_intercept = True + else: + use_intercept = False + X_input, Y_output_minus = self.get_polynomial_regression_result( + self.X_input_list, + self.Y_output_list, + use_polynomial_reg, + use_selected_polynomial, + deg, + fit_intercept, + use_intercept, + ) + if len(self.X_val_list) > 0: + X_val = np.array(self.X_val_list) + Y_val = np.array(self.Y_val_list) + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + Y_val = ( + Y_val + - polynomial_features.fit_transform(X_val[:, ctrl_index_for_polynomial_reg]) + @ (self.A).T + - self.b + ) + else: + X_val = None + Y_val = None + if force_NN_model_to_zero: + for w in self.model.parameters(): + w.data = nn.Parameter(torch.zeros(w.shape)) + else: + self.train_model( + self.model, + X_input, + Y_output_minus, + learning_rates, + patience, + batch_size, + max_iter, + X_val, + Y_val, + ) + + def update_saved_trained_model( + self, + path="model_for_test_drive.pth", + learning_rates: list[float] = [1e-4, 1e-5, 1e-6], + patience=10, + batch_size: int | None = 50, + max_iter=100000, + use_polynomial_reg=False, + use_selected_polynomial=True, + force_NN_model_to_zero=False, + fit_intercept=True, + use_intercept=None, + deg: int = 2, + ) -> None: + """Load the saved model and update the model with additional training.""" + if use_intercept is None: + if force_NN_model_to_zero: + use_intercept = True + else: + use_intercept = False + X_input, Y_output_minus = self.get_polynomial_regression_result( + self.X_input_list, + self.Y_output_list, + use_polynomial_reg, + use_selected_polynomial, + deg, + fit_intercept, + use_intercept, + ) + if len(self.X_val_list) > 0: + X_val = np.array(self.X_val_list) + Y_val = np.array(self.Y_val_list) + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + Y_val = ( + Y_val + - polynomial_features.fit_transform(X_val[:, ctrl_index_for_polynomial_reg]) + @ (self.A).T + - self.b + ) + else: + X_val = None + Y_val = None + self.model = torch.load(path) + if force_NN_model_to_zero: + for w in self.model.parameters(): + w.data = nn.Parameter(torch.zeros(w.shape)) + else: + self.train_model( + self.model, + X_input, + Y_output_minus, + learning_rates, + patience, + batch_size, + max_iter, + X_val, + Y_val, + ) + + def save_model(self, save_dir=".", path="model_for_test_drive.pth") -> None: + """Save trained NN models.""" + torch.save(self.model, save_dir + "/" + path) + + def save_polynomial_reg_info(self, save_dir=".", path="polynomial_reg_info") -> None: + """Save the coefficients and degree of the resulting polynomial regression.""" + np.savez(save_dir + "/" + path, A=self.A, b=self.b, deg=self.deg) + + def save_models( + self, + save_dir=".", + model_name="model_for_test_drive.pth", + polynomial_reg_info_name="polynomial_reg_info", + ) -> None: + """Run save_model and save_polynomial_reg_info.""" + self.save_model(save_dir, model_name) + self.save_polynomial_reg_info(save_dir, polynomial_reg_info_name) + + def predict_error( + self, v: float, alpha_0: float, delta_0: float, alpha: float, delta: float + ) -> np.ndarray: + """Predicts the prediction error when following a nominal model.""" + polynomial_features = PolynomialFeatures(degree=self.deg, include_bias=False) + x_input = np.zeros( + 3 + drive_functions.acc_ctrl_queue_size + drive_functions.steer_ctrl_queue_size + ) + x_input[0] = v + x_input[1] = alpha_0 + x_input[2] = delta_0 + x_input[3 : 3 + drive_functions.acc_ctrl_queue_size] += alpha + x_input[3 + drive_functions.acc_ctrl_queue_size :] += delta + x_input_tensor = torch.tensor(x_input.reshape(1, -1).astype(np.float32)) + return ( + self.model(x_input_tensor)[0].detach().numpy() + + self.A + @ polynomial_features.fit_transform( + x_input[ctrl_index_for_polynomial_reg].reshape(1, -1) + )[0] + + self.b + ) + + def sim( + self, v: float, alpha_0: float, alpha: float, delta_0: float, delta: float, iter_times: int + ) -> tuple[float, float, float]: + """Simulate velocity, acceleration and steer changes according to a trained model.""" + v_pred = v + alpha_pred = alpha_0 + delta_pred = delta_0 + for i in range(iter_times): + pred = ( + np.concatenate( + ( + nominal_model_acc(v_pred, alpha_pred, alpha), + np.array([nominal_model_steer(delta_pred, delta)]), + ) + ) + + self.predict_error(v_pred, alpha_pred, delta_pred, alpha, delta)[[2, 4, 5]] + * drive_functions.mpc_time_step + ) + v_pred = pred[0] + alpha_pred = pred[1] + steer_pred = pred[2] + return v_pred, alpha_pred, steer_pred + + def plot_acc_map(self, iter_times: int, starting_steer=0.0, target_steer=0.0) -> None: + """Run `sim` `iter_times` times. The simulation time is approximately 0.1*iter_times. + + Draw the resulting acceleration map. + """ + acc = np.arange(-1, 1, 0.05) + v_tests = np.arange(0, 12, 0.3) + acc_result = np.zeros((acc.shape[0], v_tests.shape[0])) + v_result = np.zeros((acc.shape[0], v_tests.shape[0])) + steer_result = np.zeros((acc.shape[0], v_tests.shape[0])) + for i in range(acc.shape[0]): + v_tests_tmp = v_tests - 0.1 * iter_times * acc[i] + for j in range(v_tests.shape[0]): + v_result[i, j], acc_result[i, j], steer_result[i, j] = self.sim( + v_tests_tmp[j], acc[i], acc[i], starting_steer, target_steer, iter_times + ) + fig = plt.figure() + ax = fig.add_subplot(111, projection="3d") + ax.plot_surface(np.tile(acc, (v_tests.shape[0], 1)).T, v_result, acc_result) + ax.set_xlabel("acc_input [m/s^2]") + ax.set_ylabel("vel [m/s]") + ax.set_zlabel("acc_sim [m/s^2]") + fig.suptitle(str(iter_times * drive_functions.mpc_time_step) + " sec simulation") + plt.show() + + def plot_steer_map(self, iter_times: int, starting_acc=0.0, target_acc=0.0) -> None: + """Run `sim` `iter_times` times. The simulation time is approximately 0.1*iter_times. + + Draw the resulting steer map. + """ + steer = np.arange(-1, 1, 0.05) + v_tests = np.arange(0, 12, 0.3) + acc_result = np.zeros((steer.shape[0], v_tests.shape[0])) + v_result = np.zeros((steer.shape[0], v_tests.shape[0])) + steer_result = np.zeros((steer.shape[0], v_tests.shape[0])) + for i in range(steer.shape[0]): + for j in range(v_tests.shape[0]): + v_result[i, j], acc_result[i, j], steer_result[i, j] = self.sim( + v_tests[j], starting_acc, target_acc, steer[i], steer[i], iter_times + ) + fig = plt.figure() + ax = fig.add_subplot(111, projection="3d") + ax.plot_surface(np.tile(steer, (v_tests.shape[0], 1)).T, v_result, steer_result) + ax.set_xlabel("steer_input [rad]") + ax.set_ylabel("vel [m/s]") + ax.set_zlabel("steer_sim [rad]") + fig.suptitle(str(iter_times * drive_functions.mpc_time_step) + " sec simulation") + plt.show() diff --git a/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_nominal_model.png b/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_nominal_model.png index 3a96faa8dcba1..0d2321c2c079e 100644 Binary files a/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_nominal_model.png and b/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_nominal_model.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_trained_model.png b/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_trained_model.png index 3396b9e7dd444..e826f7f137ae9 100644 Binary files a/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_trained_model.png and b/control/autoware_smart_mpc_trajectory_follower/images/lateral_error_trained_model.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/proxima_test_result_with_lstm.png b/control/autoware_smart_mpc_trajectory_follower/images/proxima_test_result_with_lstm.png new file mode 100644 index 0000000000000..43cff7ea80384 Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/images/proxima_test_result_with_lstm.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model.png deleted file mode 100644 index 84e64dde20e17..0000000000000 Binary files a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model.png and /dev/null differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model_steer_time_delay.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model_steer_time_delay.png new file mode 100644 index 0000000000000..dc64ca3d7fa0c Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model_steer_time_delay.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model_wheel_base.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model_wheel_base.png new file mode 100644 index 0000000000000..0c6d882b9a687 Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_nominal_model_wheel_base.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model.png deleted file mode 100644 index 481375fcf68b1..0000000000000 Binary files a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model.png and /dev/null differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_lstm_steer_time_delay.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_lstm_steer_time_delay.png new file mode 100644 index 0000000000000..b01dce7fa3d2b Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_lstm_steer_time_delay.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_lstm_wheel_base.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_lstm_wheel_base.png new file mode 100644 index 0000000000000..974b01302e641 Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_lstm_wheel_base.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_steer_time_delay.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_steer_time_delay.png new file mode 100644 index 0000000000000..7638d6ec86595 Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_steer_time_delay.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_wheel_base.png b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_wheel_base.png new file mode 100644 index 0000000000000..d0bed59bd0ab5 Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/images/python_sim_lateral_error_trained_model_wheel_base.png differ diff --git a/control/autoware_smart_mpc_trajectory_follower/package.xml b/control/autoware_smart_mpc_trajectory_follower/package.xml index 01b9478aeeaee..46ce55058a000 100644 --- a/control/autoware_smart_mpc_trajectory_follower/package.xml +++ b/control/autoware_smart_mpc_trajectory_follower/package.xml @@ -2,7 +2,7 @@ autoware_smart_mpc_trajectory_follower - 1.0.0 + 2.0.0 Nodes to follow a trajectory by generating control commands using smart mpc diff --git a/control/autoware_smart_mpc_trajectory_follower/sample_models/wheel_base_changed/model_for_test_drive.pth b/control/autoware_smart_mpc_trajectory_follower/sample_models/wheel_base_changed/model_for_test_drive.pth new file mode 100644 index 0000000000000..1aec4fe8c71ff Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/sample_models/wheel_base_changed/model_for_test_drive.pth differ diff --git a/control/autoware_smart_mpc_trajectory_follower/sample_models/wheel_base_changed/polynomial_reg_info.npz b/control/autoware_smart_mpc_trajectory_follower/sample_models/wheel_base_changed/polynomial_reg_info.npz new file mode 100644 index 0000000000000..be3e01443b805 Binary files /dev/null and b/control/autoware_smart_mpc_trajectory_follower/sample_models/wheel_base_changed/polynomial_reg_info.npz differ diff --git a/control/autoware_smart_mpc_trajectory_follower/setup.py b/control/autoware_smart_mpc_trajectory_follower/setup.py index fee1d04e826c0..22844b0f2d869 100644 --- a/control/autoware_smart_mpc_trajectory_follower/setup.py +++ b/control/autoware_smart_mpc_trajectory_follower/setup.py @@ -1,25 +1,30 @@ # cspell: ignore numba import glob import json -import os from pathlib import Path +import subprocess from setuptools import find_packages from setuptools import setup -os.system("pip3 install numba==0.58.1 --force-reinstall") -os.system("pip3 install pybind11") -os.system("pip3 install GPy") -os.system("pip3 install torch") -package_path = {} -package_path["path"] = str(Path(__file__).parent) -with open("autoware_smart_mpc_trajectory_follower/package_path.json", "w") as f: - json.dump(package_path, f) -build_cpp_command = "g++ -Ofast -Wall -shared -std=c++11 -fPIC $(python3 -m pybind11 --includes) " -build_cpp_command += "autoware_smart_mpc_trajectory_follower/scripts/proxima_calc.cpp " -build_cpp_command += "-o autoware_smart_mpc_trajectory_follower/scripts/proxima_calc$(python3-config --extension-suffix) " -build_cpp_command += "-lrt -I/usr/include/eigen3" -os.system(build_cpp_command) +SKIP_PRE_INSTALL_FLAG = False + +if not SKIP_PRE_INSTALL_FLAG: + subprocess.run("pip3 install numba==0.58.1 --force-reinstall", shell=True) + subprocess.run("pip3 install pybind11", shell=True) + subprocess.run("pip3 install GPy", shell=True) + subprocess.run("pip3 install torch", shell=True) + package_path = {} + package_path["path"] = str(Path(__file__).parent) + with open("autoware_smart_mpc_trajectory_follower/package_path.json", "w") as f: + json.dump(package_path, f) + build_cpp_command = ( + "g++ -Ofast -Wall -shared -std=c++11 -fPIC $(python3 -m pybind11 --includes) " + ) + build_cpp_command += "autoware_smart_mpc_trajectory_follower/scripts/proxima_calc.cpp " + build_cpp_command += "-o autoware_smart_mpc_trajectory_follower/scripts/proxima_calc$(python3-config --extension-suffix) " + build_cpp_command += "-lrt -I/usr/include/eigen3" + subprocess.run(build_cpp_command, shell=True) so_path = ( "scripts/" @@ -28,8 +33,8 @@ ] ) setup( - name="smart_mpc_trajectory_follower", - version="1.0.0", + name="autoware_smart_mpc_trajectory_follower", + version="2.0.0", packages=find_packages(), package_data={ "autoware_smart_mpc_trajectory_follower": ["package_path.json", so_path], diff --git a/control/autoware_trajectory_follower_node/CMakeLists.txt b/control/autoware_trajectory_follower_node/CMakeLists.txt index 945d3224d76e5..26488bd474149 100644 --- a/control/autoware_trajectory_follower_node/CMakeLists.txt +++ b/control/autoware_trajectory_follower_node/CMakeLists.txt @@ -37,23 +37,25 @@ if(BUILD_TESTING) target_link_libraries( ${TRAJECTORY_FOLLOWER_NODES_TEST} ${CONTROLLER_NODE}) - find_package(autoware_testing REQUIRED) - # smoke test for MPC controller - add_smoke_test(${PROJECT_NAME} ${CONTROLLER_NODE}_exe - PARAM_FILENAMES "lateral/mpc.param.yaml longitudinal/pid.param.yaml -trajectory_follower_node.param.yaml" - TEST_PARAM_FILENAMES "test_controller_mpc.param.yaml test_controller_pid.param.yaml -test_vehicle_info.param.yaml test_nearest_search.param.yaml" - TARGET_INFIX "mpc" - ) - # smoke test for pure pursuit controller - add_smoke_test(${PROJECT_NAME} ${CONTROLLER_NODE}_exe - PARAM_FILENAMES "lateral/pure_pursuit.param.yaml longitudinal/pid.param.yaml -trajectory_follower_node.param.yaml" - TEST_PARAM_FILENAMES "test_controller_pure_pursuit.param.yaml test_controller_pid.param.yaml -test_vehicle_info.param.yaml test_nearest_search.param.yaml" - TARGET_INFIX "pure_pursuit" - ) + # Temporary disabled, tracked by: + # https://github.com/autowarefoundation/autoware.universe/issues/7733 +# find_package(autoware_testing REQUIRED) +# # smoke test for MPC controller +# add_smoke_test(${PROJECT_NAME} ${CONTROLLER_NODE}_exe +# PARAM_FILENAMES "lateral/mpc.param.yaml longitudinal/pid.param.yaml +#trajectory_follower_node.param.yaml" +# TEST_PARAM_FILENAMES "test_controller_mpc.param.yaml test_controller_pid.param.yaml +#test_vehicle_info.param.yaml test_nearest_search.param.yaml" +# TARGET_INFIX "mpc" +# ) +# # smoke test for pure pursuit controller +# add_smoke_test(${PROJECT_NAME} ${CONTROLLER_NODE}_exe +# PARAM_FILENAMES "lateral/pure_pursuit.param.yaml longitudinal/pid.param.yaml +#trajectory_follower_node.param.yaml" +# TEST_PARAM_FILENAMES "test_controller_pure_pursuit.param.yaml test_controller_pid.param.yaml +#test_vehicle_info.param.yaml test_nearest_search.param.yaml" +# TARGET_INFIX "pure_pursuit" +# ) endif() diff --git a/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/controller_node.hpp b/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/controller_node.hpp index 06873c31cc6cc..a5f8665328f34 100644 --- a/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/controller_node.hpp +++ b/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/controller_node.hpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "autoware_control_msgs/msg/control.hpp" #include "autoware_control_msgs/msg/longitudinal.hpp" @@ -54,8 +55,8 @@ using trajectory_follower::LongitudinalOutput; namespace trajectory_follower_node { +using autoware::universe_utils::StopWatch; using autoware_adapi_v1_msgs::msg::OperationModeState; -using autoware_universe_utils::StopWatch; using tier4_debug_msgs::msg::Float64Stamped; namespace trajectory_follower = ::autoware::motion::control::trajectory_follower; @@ -73,24 +74,29 @@ class TRAJECTORY_FOLLOWER_PUBLIC Controller : public rclcpp::Node double timeout_thr_sec_; boost::optional longitudinal_output_{boost::none}; + std::shared_ptr diag_updater_ = + std::make_shared( + this); // Diagnostic updater for publishing diagnostic data. + std::shared_ptr longitudinal_controller_; std::shared_ptr lateral_controller_; // Subscribers - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_ref_path_{this, "~/input/reference_trajectory"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_odometry_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_odometry_{ this, "~/input/current_odometry"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber< + autoware_vehicle_msgs::msg::SteeringReport> sub_steering_{this, "~/input/current_steering"}; - autoware_universe_utils::InterProcessPollingSubscriber< + autoware::universe_utils::InterProcessPollingSubscriber< geometry_msgs::msg::AccelWithCovarianceStamped> sub_accel_{this, "~/input/current_accel"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_operation_mode_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_operation_mode_{ this, "~/input/current_operation_mode"}; // Publishers @@ -129,9 +135,9 @@ class TRAJECTORY_FOLLOWER_PUBLIC Controller : public rclcpp::Node const trajectory_follower::InputData & input_data, const trajectory_follower::LateralOutput & lat_out) const; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; void publishProcessingTime( const double t_ms, const rclcpp::Publisher::SharedPtr pub); diff --git a/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/simple_trajectory_follower.hpp b/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/simple_trajectory_follower.hpp index 0c179ad1996f4..c23128ebfb695 100644 --- a/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/simple_trajectory_follower.hpp +++ b/control/autoware_trajectory_follower_node/include/autoware/trajectory_follower_node/simple_trajectory_follower.hpp @@ -44,9 +44,9 @@ class SimpleTrajectoryFollower : public rclcpp::Node ~SimpleTrajectoryFollower() = default; private: - autoware_universe_utils::InterProcessPollingSubscriber sub_kinematics_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_kinematics_{ this, "~/input/kinematics"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_trajectory_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_trajectory_{ this, "~/input/trajectory"}; rclcpp::Publisher::SharedPtr pub_cmd_; rclcpp::TimerBase::SharedPtr timer_; diff --git a/control/autoware_trajectory_follower_node/src/controller_node.cpp b/control/autoware_trajectory_follower_node/src/controller_node.cpp index 7876a38247bc9..d5167f5096786 100644 --- a/control/autoware_trajectory_follower_node/src/controller_node.cpp +++ b/control/autoware_trajectory_follower_node/src/controller_node.cpp @@ -39,7 +39,8 @@ Controller::Controller(const rclcpp::NodeOptions & node_options) : Node("control getLateralControllerMode(declare_parameter("lateral_controller_mode")); switch (lateral_controller_mode) { case LateralControllerMode::MPC: { - lateral_controller_ = std::make_shared(*this); + lateral_controller_ = + std::make_shared(*this, diag_updater_); break; } case LateralControllerMode::PURE_PURSUIT: { @@ -56,7 +57,8 @@ Controller::Controller(const rclcpp::NodeOptions & node_options) : Node("control switch (longitudinal_controller_mode) { case LongitudinalControllerMode::PID: { longitudinal_controller_ = - std::make_shared(*this); + std::make_shared( + *this, diag_updater_); break; } default: @@ -80,10 +82,10 @@ Controller::Controller(const rclcpp::NodeOptions & node_options) : Node("control this, get_clock(), period_ns, std::bind(&Controller::callbackTimerControl, this)); } - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } Controller::LateralControllerMode Controller::getLateralControllerMode( @@ -223,10 +225,10 @@ void Controller::publishDebugMarker( // steer converged marker { - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", this->now(), "steer_converged", 0, visualization_msgs::msg::Marker::TEXT_VIEW_FACING, - autoware_universe_utils::createMarkerScale(0.0, 0.0, 1.0), - autoware_universe_utils::createMarkerColor(1.0, 1.0, 1.0, 0.99)); + autoware::universe_utils::createMarkerScale(0.0, 0.0, 1.0), + autoware::universe_utils::createMarkerColor(1.0, 1.0, 1.0, 0.99)); marker.pose = input_data.current_odometry.pose.pose; std::stringstream ss; diff --git a/control/autoware_trajectory_follower_node/src/simple_trajectory_follower.cpp b/control/autoware_trajectory_follower_node/src/simple_trajectory_follower.cpp index 81459dc9ef72f..95082e608d50f 100644 --- a/control/autoware_trajectory_follower_node/src/simple_trajectory_follower.cpp +++ b/control/autoware_trajectory_follower_node/src/simple_trajectory_follower.cpp @@ -22,9 +22,9 @@ namespace simple_trajectory_follower { -using autoware_motion_utils::findNearestIndex; -using autoware_universe_utils::calcLateralDeviation; -using autoware_universe_utils::calcYawDeviation; +using autoware::motion_utils::findNearestIndex; +using autoware::universe_utils::calcLateralDeviation; +using autoware::universe_utils::calcYawDeviation; SimpleTrajectoryFollower::SimpleTrajectoryFollower(const rclcpp::NodeOptions & options) : Node("simple_trajectory_follower", options) diff --git a/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.cpp b/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.cpp index 7295032ae3cb7..87e79f59bc356 100644 --- a/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.cpp +++ b/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.cpp @@ -210,10 +210,10 @@ VehicleCmdGate::VehicleCmdGate(const rclcpp::NodeOptions & node_options) timer_pub_status_ = rclcpp::create_timer( this, get_clock(), period_ns, std::bind(&VehicleCmdGate::publishStatus, this)); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); // Parameter Callback set_param_res_ = @@ -223,7 +223,7 @@ VehicleCmdGate::VehicleCmdGate(const rclcpp::NodeOptions & node_options) rcl_interfaces::msg::SetParametersResult VehicleCmdGate::onParameter( const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; // Parameter updateParam(parameters, "use_emergency_handling", use_emergency_handling_); updateParam( diff --git a/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.hpp b/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.hpp index 08de508dbefcc..42e28d633d16b 100644 --- a/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.hpp +++ b/control/autoware_vehicle_cmd_gate/src/vehicle_cmd_gate.hpp @@ -81,7 +81,7 @@ using nav_msgs::msg::Odometry; using EngageMsg = autoware_vehicle_msgs::msg::Engage; using EngageSrv = tier4_external_api_msgs::srv::Engage; -using autoware_motion_utils::VehicleStopChecker; +using autoware::motion_utils::VehicleStopChecker; struct Commands { Control control; @@ -155,31 +155,31 @@ class VehicleCmdGate : public rclcpp::Node // Subscriber for auto Commands auto_commands_; rclcpp::Subscription::SharedPtr auto_control_cmd_sub_; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber auto_turn_indicator_cmd_sub_{this, "input/auto/turn_indicators_cmd"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber auto_hazard_light_cmd_sub_{this, "input/auto/hazard_lights_cmd"}; - autoware_universe_utils::InterProcessPollingSubscriber auto_gear_cmd_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber auto_gear_cmd_sub_{ this, "input/auto/gear_cmd"}; void onAutoCtrlCmd(Control::ConstSharedPtr msg); // Subscription for external Commands remote_commands_; rclcpp::Subscription::SharedPtr remote_control_cmd_sub_; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber remote_turn_indicator_cmd_sub_{this, "input/external/turn_indicators_cmd"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber remote_hazard_light_cmd_sub_{this, "input/external/hazard_lights_cmd"}; - autoware_universe_utils::InterProcessPollingSubscriber remote_gear_cmd_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber remote_gear_cmd_sub_{ this, "input/external/gear_cmd"}; void onRemoteCtrlCmd(Control::ConstSharedPtr msg); // Subscription for emergency Commands emergency_commands_; rclcpp::Subscription::SharedPtr emergency_control_cmd_sub_; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber emergency_hazard_light_cmd_sub_{this, "input/emergency/hazard_lights_cmd"}; - autoware_universe_utils::InterProcessPollingSubscriber emergency_gear_cmd_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber emergency_gear_cmd_sub_{ this, "input/emergency/gear_cmd"}; void onEmergencyCtrlCmd(Control::ConstSharedPtr msg); @@ -261,9 +261,9 @@ class VehicleCmdGate : public rclcpp::Node MarkerArray createMarkerArray(const IsFilterActivated & filter_activated); void publishMarkers(const IsFilterActivated & filter_activated); - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace autoware::vehicle_cmd_gate diff --git a/control/autoware_vehicle_cmd_gate/test/src/test_filter_in_vehicle_cmd_gate_node.cpp b/control/autoware_vehicle_cmd_gate/test/src/test_filter_in_vehicle_cmd_gate_node.cpp index 46130fc8f9941..66dde51780ffa 100644 --- a/control/autoware_vehicle_cmd_gate/test/src/test_filter_in_vehicle_cmd_gate_node.cpp +++ b/control/autoware_vehicle_cmd_gate/test/src/test_filter_in_vehicle_cmd_gate_node.cpp @@ -294,7 +294,12 @@ class PubSubNode : public rclcpp::Node const auto max_lat_acc_lim = *std::max_element(lat_acc_lim.begin(), lat_acc_lim.end()); const auto max_lat_jerk_lim = *std::max_element(lat_jerk_lim.begin(), lat_jerk_lim.end()); + // This test is designed to verify that the filter is applied correctly. However, if topic + // communication is delayed, the allowable range of change in the command values between the + // sender and receiver of the topic will vary, making the results dependent on processing time. + // We define the allowable error margin to account for this. constexpr auto threshold_scale = 1.1; + // Output command must be smaller than maximum limit. // TODO(Horibe): check for each velocity range. if (std::abs(lon_vel) > 0.01) { @@ -433,7 +438,7 @@ TEST_P(TestFixture, CheckFilterForSinCmd) // << cmd_generator_.p_.steering.freq << " * dt + " << cmd_generator_.p_.steering.bias // << ")" << std::endl; - for (size_t i = 0; i < 100; ++i) { + for (size_t i = 0; i < 30; ++i) { auto start_time = std::chrono::steady_clock::now(); const bool reset_clock = (i == 0); @@ -449,7 +454,13 @@ TEST_P(TestFixture, CheckFilterForSinCmd) std::chrono::milliseconds elapsed = std::chrono::duration_cast(end_time - start_time); - std::chrono::milliseconds sleep_duration = std::chrono::milliseconds{10} - elapsed; + // The value determines the period of the topic. The filter logic of vehicle_cmd_gate depends on + // real-time, and if the time from publishing to subscribing becomes too long, this test will + // fail (the test specification itself should be improved). To prevent processing bottlenecks, + // please set this value appropriately. It is set to 30ms because it occasionally fails at 10ms. + constexpr int running_ms = 30; + + std::chrono::milliseconds sleep_duration = std::chrono::milliseconds{running_ms} - elapsed; if (sleep_duration.count() > 0) { std::this_thread::sleep_for(sleep_duration); } diff --git a/control/control_performance_analysis/src/control_performance_analysis_core.cpp b/control/control_performance_analysis/src/control_performance_analysis_core.cpp index e72adc3ecdad4..5f72c8ea316bd 100644 --- a/control/control_performance_analysis/src/control_performance_analysis_core.cpp +++ b/control/control_performance_analysis/src/control_performance_analysis_core.cpp @@ -86,7 +86,7 @@ std::pair ControlPerformanceAnalysisCore::findClosestPrevWayPoint return std::make_pair(false, std::numeric_limits::quiet_NaN()); } - const auto closest_segment = autoware_motion_utils::findNearestSegmentIndex( + const auto closest_segment = autoware::motion_utils::findNearestSegmentIndex( current_trajectory_ptr_->points, *current_vec_pose_ptr_, p_.acceptable_max_distance_to_waypoint_, p_.acceptable_max_yaw_difference_rad_); @@ -158,7 +158,7 @@ bool ControlPerformanceAnalysisCore::calculateErrorVars() // Compute the yaw angle error. const double heading_yaw_error = - autoware_universe_utils::calcYawDeviation(pose_interp_wp, *current_vec_pose_ptr_); + autoware::universe_utils::calcYawDeviation(pose_interp_wp, *current_vec_pose_ptr_); // Set the values of ErrorMsgVars. @@ -174,7 +174,7 @@ bool ControlPerformanceAnalysisCore::calculateErrorVars() const double Vx = odom_history_ptr_->at(odom_size - 2).twist.twist.linear.x; // Current acceleration calculation - const auto ds = autoware_universe_utils::calcDistance2d( + const auto ds = autoware::universe_utils::calcDistance2d( odom_history_ptr_->at(odom_size - 1).pose.pose, odom_history_ptr_->at(odom_size - 2).pose.pose); const double vel_mean = (odom_history_ptr_->at(odom_size - 1).twist.twist.linear.x + @@ -372,7 +372,7 @@ std::optional ControlPerformanceAnalysisCore::findCurveRefIdx() auto fun_distance_cond = [this](auto point_t) { const double dist = - autoware_universe_utils::calcDistance2d(point_t.pose, *interpolated_pose_ptr_); + autoware::universe_utils::calcDistance2d(point_t.pose, *interpolated_pose_ptr_); return dist > p_.wheelbase_; }; @@ -391,7 +391,7 @@ std::optional ControlPerformanceAnalysisCore::findCurveRefIdx() std::pair ControlPerformanceAnalysisCore::calculateClosestPose() { const auto interp_point = - autoware_motion_utils::calcInterpolatedPoint(*current_trajectory_ptr_, *current_vec_pose_ptr_); + autoware::motion_utils::calcInterpolatedPoint(*current_trajectory_ptr_, *current_vec_pose_ptr_); const double interp_steering_angle = std::atan(p_.wheelbase_ * estimateCurvature()); @@ -443,7 +443,7 @@ double ControlPerformanceAnalysisCore::estimateCurvature() // Compute arc-length ds between 2 points. const double ds_arc_length = - autoware_universe_utils::calcDistance2d(front_axleWP_pose_prev, front_axleWP_pose); + autoware::universe_utils::calcDistance2d(front_axleWP_pose_prev, front_axleWP_pose); // Define waypoints 10 meters behind the rear axle if exist. // If not exist, we will take the first point of the @@ -462,7 +462,7 @@ double ControlPerformanceAnalysisCore::estimateCurvature() // We compute a curvature estimate from these points. double estimated_curvature = 0.0; try { - estimated_curvature = autoware_universe_utils::calcCurvature( + estimated_curvature = autoware::universe_utils::calcCurvature( points.at(loc_of_back_idx).pose.position, points.at(idx_curve_ref_wp).pose.position, points.at(loc_of_forward_idx).pose.position); } catch (...) { @@ -487,7 +487,7 @@ double ControlPerformanceAnalysisCore::estimatePurePursuitCurvature() const double look_ahead_distance_pp = std::max(p_.wheelbase_, 2 * Vx); auto fun_distance_cond = [this, &look_ahead_distance_pp](auto point_t) { - const double dist = autoware_universe_utils::calcDistance2d(point_t, *interpolated_pose_ptr_); + const double dist = autoware::universe_utils::calcDistance2d(point_t, *interpolated_pose_ptr_); return dist > look_ahead_distance_pp; }; diff --git a/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker.hpp b/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker.hpp index 27f4405e26f6c..8cce8b88a0e7f 100644 --- a/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker.hpp +++ b/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker.hpp @@ -35,7 +35,7 @@ namespace obstacle_collision_checker { -using autoware_universe_utils::LinearRing2d; +using autoware::universe_utils::LinearRing2d; struct Param { diff --git a/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker_node.hpp b/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker_node.hpp index 85b3e3d25c2eb..b08ecccd57282 100644 --- a/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker_node.hpp +++ b/control/obstacle_collision_checker/include/obstacle_collision_checker/obstacle_collision_checker_node.hpp @@ -48,8 +48,8 @@ class ObstacleCollisionCheckerNode : public rclcpp::Node private: // Subscriber - std::shared_ptr self_pose_listener_; - std::shared_ptr transform_listener_; + std::shared_ptr self_pose_listener_; + std::shared_ptr transform_listener_; rclcpp::Subscription::SharedPtr sub_obstacle_pointcloud_; rclcpp::Subscription::SharedPtr sub_reference_trajectory_; @@ -72,8 +72,8 @@ class ObstacleCollisionCheckerNode : public rclcpp::Node void onOdom(const nav_msgs::msg::Odometry::SharedPtr msg); // Publisher - std::shared_ptr debug_publisher_; - std::shared_ptr time_publisher_; + std::shared_ptr debug_publisher_; + std::shared_ptr time_publisher_; // Timer rclcpp::TimerBase::SharedPtr timer_; diff --git a/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker.cpp b/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker.cpp index e6c3aff83ee10..9fb3657b957c7 100644 --- a/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker.cpp +++ b/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker.cpp @@ -90,7 +90,7 @@ ObstacleCollisionChecker::ObstacleCollisionChecker(rclcpp::Node & node) Output ObstacleCollisionChecker::update(const Input & input) { Output output; - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; // resample trajectory by braking distance constexpr double min_velocity = 0.01; @@ -131,8 +131,9 @@ autoware_planning_msgs::msg::Trajectory ObstacleCollisionChecker::resampleTrajec for (size_t i = 1; i < trajectory.points.size() - 1; ++i) { const auto & point = trajectory.points.at(i); - const auto p1 = autoware_universe_utils::fromMsg(resampled.points.back().pose.position).to_2d(); - const auto p2 = autoware_universe_utils::fromMsg(point.pose.position).to_2d(); + const auto p1 = + autoware::universe_utils::fromMsg(resampled.points.back().pose.position).to_2d(); + const auto p2 = autoware::universe_utils::fromMsg(point.pose.position).to_2d(); if (boost::geometry::distance(p1, p2) > interval) { resampled.points.push_back(point); @@ -154,8 +155,8 @@ autoware_planning_msgs::msg::Trajectory ObstacleCollisionChecker::cutTrajectory( for (size_t i = 1; i < trajectory.points.size(); ++i) { const auto & point = trajectory.points.at(i); - const auto p1 = autoware_universe_utils::fromMsg(cut.points.back().pose.position); - const auto p2 = autoware_universe_utils::fromMsg(point.pose.position); + const auto p1 = autoware::universe_utils::fromMsg(cut.points.back().pose.position); + const auto p2 = autoware::universe_utils::fromMsg(point.pose.position); const auto points_distance = boost::geometry::distance(p1.to_2d(), p2.to_2d()); const auto remain_distance = length - total_length; @@ -197,8 +198,8 @@ std::vector ObstacleCollisionChecker::createVehicleFootprints( std::vector vehicle_footprints; for (const auto & p : trajectory.points) { vehicle_footprints.push_back( - autoware_universe_utils::transformVector( - local_vehicle_footprint, autoware_universe_utils::pose2transform(p.pose))); + autoware::universe_utils::transformVector( + local_vehicle_footprint, autoware::universe_utils::pose2transform(p.pose))); } return vehicle_footprints; @@ -221,7 +222,7 @@ std::vector ObstacleCollisionChecker::createVehiclePassingAreas( LinearRing2d ObstacleCollisionChecker::createHullFromFootprints( const LinearRing2d & area1, const LinearRing2d & area2) { - autoware_universe_utils::MultiPoint2d combined; + autoware::universe_utils::MultiPoint2d combined; for (const auto & p : area1) { combined.push_back(p); } @@ -256,7 +257,7 @@ bool ObstacleCollisionChecker::hasCollision( { for (const auto & point : obstacle_pointcloud.points) { if (boost::geometry::within( - autoware_universe_utils::Point2d{point.x, point.y}, vehicle_footprint)) { + autoware::universe_utils::Point2d{point.x, point.y}, vehicle_footprint)) { RCLCPP_WARN( rclcpp::get_logger("obstacle_collision_checker"), "[ObstacleCollisionChecker] Collide to Point x: %f y: %f", point.x, point.y); diff --git a/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker_node.cpp b/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker_node.cpp index 9bd95a985e2de..9af5fe24b17ea 100644 --- a/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker_node.cpp +++ b/control/obstacle_collision_checker/src/obstacle_collision_checker_node/obstacle_collision_checker_node.cpp @@ -70,8 +70,8 @@ ObstacleCollisionCheckerNode::ObstacleCollisionCheckerNode(const rclcpp::NodeOpt obstacle_collision_checker_->setParam(param_); // Subscriber - self_pose_listener_ = std::make_shared(this); - transform_listener_ = std::make_shared(this); + self_pose_listener_ = std::make_shared(this); + transform_listener_ = std::make_shared(this); sub_obstacle_pointcloud_ = create_subscription( "input/obstacle_pointcloud", rclcpp::SensorDataQoS(), @@ -87,8 +87,8 @@ ObstacleCollisionCheckerNode::ObstacleCollisionCheckerNode(const rclcpp::NodeOpt // Publisher debug_publisher_ = - std::make_shared(this, "debug/marker"); - time_publisher_ = std::make_shared(this); + std::make_shared(this, "debug/marker"); + time_publisher_ = std::make_shared(this); // Diagnostic Updater updater_.setHardwareID("obstacle_collision_checker"); @@ -283,9 +283,9 @@ void ObstacleCollisionCheckerNode::checkLaneDeparture( visualization_msgs::msg::MarkerArray ObstacleCollisionCheckerNode::createMarkerArray() const { - using autoware_universe_utils::createDefaultMarker; - using autoware_universe_utils::createMarkerColor; - using autoware_universe_utils::createMarkerScale; + using autoware::universe_utils::createDefaultMarker; + using autoware::universe_utils::createMarkerColor; + using autoware::universe_utils::createMarkerScale; visualization_msgs::msg::MarkerArray marker_array; diff --git a/control/predicted_path_checker/include/predicted_path_checker/collision_checker.hpp b/control/predicted_path_checker/include/predicted_path_checker/collision_checker.hpp index 01223a4a938be..e2c76bec24860 100644 --- a/control/predicted_path_checker/include/predicted_path_checker/collision_checker.hpp +++ b/control/predicted_path_checker/include/predicted_path_checker/collision_checker.hpp @@ -45,10 +45,10 @@ namespace autoware::motion::control::predicted_path_checker using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; using TrajectoryPoints = std::vector; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedObject; using autoware_perception_msgs::msg::PredictedObjects; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Pose; using geometry_msgs::msg::TransformStamped; using PointArray = std::vector; diff --git a/control/predicted_path_checker/include/predicted_path_checker/debug_marker.hpp b/control/predicted_path_checker/include/predicted_path_checker/debug_marker.hpp index 84ccbad32202c..0f537d52cee06 100644 --- a/control/predicted_path_checker/include/predicted_path_checker/debug_marker.hpp +++ b/control/predicted_path_checker/include/predicted_path_checker/debug_marker.hpp @@ -52,12 +52,12 @@ class PredictedPathCheckerDebugNode ~PredictedPathCheckerDebugNode() {} bool pushPolygon( - const autoware_universe_utils::Polygon2d & polygon, const double z, const PolygonType & type); + const autoware::universe_utils::Polygon2d & polygon, const double z, const PolygonType & type); bool pushPolygon(const std::vector & polygon, const PolygonType & type); bool pushPolyhedron( - const autoware_universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, + const autoware::universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, const PolygonType & type); bool pushPolyhedron(const std::vector & polyhedron, const PolygonType & type); diff --git a/control/predicted_path_checker/include/predicted_path_checker/predicted_path_checker_node.hpp b/control/predicted_path_checker/include/predicted_path_checker/predicted_path_checker_node.hpp index 5474bb93fbf4b..b3afcded60438 100644 --- a/control/predicted_path_checker/include/predicted_path_checker/predicted_path_checker_node.hpp +++ b/control/predicted_path_checker/include/predicted_path_checker/predicted_path_checker_node.hpp @@ -50,9 +50,9 @@ namespace autoware::motion::control::predicted_path_checker using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; using TrajectoryPoints = std::vector; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedObjects; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Pose; using geometry_msgs::msg::TransformStamped; @@ -88,7 +88,7 @@ class PredictedPathCheckerNode : public rclcpp::Node rclcpp::CallbackGroup::SharedPtr group_cli_; // Subscriber - std::shared_ptr self_pose_listener_; + std::shared_ptr self_pose_listener_; rclcpp::Subscription::SharedPtr sub_dynamic_objects_; rclcpp::Subscription::SharedPtr sub_reference_trajectory_; diff --git a/control/predicted_path_checker/include/predicted_path_checker/utils.hpp b/control/predicted_path_checker/include/predicted_path_checker/utils.hpp index 05c7a5008db27..6f5c0e5cdb883 100644 --- a/control/predicted_path_checker/include/predicted_path_checker/utils.hpp +++ b/control/predicted_path_checker/include/predicted_path_checker/utils.hpp @@ -39,12 +39,12 @@ namespace utils { +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware::vehicle_info_utils::VehicleInfo; using autoware_perception_msgs::msg::PredictedObject; using autoware_perception_msgs::msg::PredictedObjects; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using geometry_msgs::msg::TransformStamped; diff --git a/control/predicted_path_checker/src/predicted_path_checker_node/collision_checker.cpp b/control/predicted_path_checker/src/predicted_path_checker_node/collision_checker.cpp index fb2eda3d04c33..7771f59d15454 100644 --- a/control/predicted_path_checker/src/predicted_path_checker_node/collision_checker.cpp +++ b/control/predicted_path_checker/src/predicted_path_checker_node/collision_checker.cpp @@ -80,12 +80,12 @@ CollisionChecker::checkTrajectoryForCollision( double distance_to_current = std::numeric_limits::max(); double distance_to_history = std::numeric_limits::max(); if (found_collision_at_dynamic_objects) { - distance_to_current = autoware_universe_utils::calcDistance2d( + distance_to_current = autoware::universe_utils::calcDistance2d( p_front, found_collision_at_dynamic_objects.get().first); } if (found_collision_at_history) { distance_to_history = - autoware_universe_utils::calcDistance2d(p_front, found_collision_at_history.get().first); + autoware::universe_utils::calcDistance2d(p_front, found_collision_at_history.get().first); } else { predicted_object_history_.clear(); } @@ -140,7 +140,7 @@ CollisionChecker::checkObstacleHistory( bool is_init = false; std::pair nearest_collision_object_with_point; for (const auto & p : collision_points_in_history) { - double norm = autoware_universe_utils::calcDistance2d(p.first, base_pose); + double norm = autoware::universe_utils::calcDistance2d(p.first, base_pose); if (norm < min_norm || !is_init) { min_norm = norm; nearest_collision_object_with_point = p; diff --git a/control/predicted_path_checker/src/predicted_path_checker_node/debug_marker.cpp b/control/predicted_path_checker/src/predicted_path_checker_node/debug_marker.cpp index bf74bf3c8bfc1..3fae5e38e7ede 100644 --- a/control/predicted_path_checker/src/predicted_path_checker_node/debug_marker.cpp +++ b/control/predicted_path_checker/src/predicted_path_checker_node/debug_marker.cpp @@ -28,15 +28,15 @@ #include #include -using autoware_motion_utils::createDeletedStopVirtualWallMarker; -using autoware_motion_utils::createStopVirtualWallMarker; -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerOrientation; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; +using autoware::motion_utils::createDeletedStopVirtualWallMarker; +using autoware::motion_utils::createStopVirtualWallMarker; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerOrientation; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; namespace autoware::motion::control::predicted_path_checker { @@ -51,7 +51,7 @@ PredictedPathCheckerDebugNode::PredictedPathCheckerDebugNode( } bool PredictedPathCheckerDebugNode::pushPolygon( - const autoware_universe_utils::Polygon2d & polygon, const double z, const PolygonType & type) + const autoware::universe_utils::Polygon2d & polygon, const double z, const PolygonType & type) { std::vector eigen_polygon; for (const auto & point : polygon.outer()) { @@ -82,7 +82,7 @@ bool PredictedPathCheckerDebugNode::pushPolygon( } bool PredictedPathCheckerDebugNode::pushPolyhedron( - const autoware_universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, + const autoware::universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, const PolygonType & type) { std::vector eigen_polyhedron; diff --git a/control/predicted_path_checker/src/predicted_path_checker_node/predicted_path_checker_node.cpp b/control/predicted_path_checker/src/predicted_path_checker_node/predicted_path_checker_node.cpp index 524313181f36d..d8cf5c34bf535 100644 --- a/control/predicted_path_checker/src/predicted_path_checker_node/predicted_path_checker_node.cpp +++ b/control/predicted_path_checker/src/predicted_path_checker_node/predicted_path_checker_node.cpp @@ -67,7 +67,7 @@ PredictedPathCheckerNode::PredictedPathCheckerNode(const rclcpp::NodeOptions & n declare_parameter("collision_checker_params.chattering_threshold", 0.2); // Subscriber - self_pose_listener_ = std::make_shared(this); + self_pose_listener_ = std::make_shared(this); sub_dynamic_objects_ = create_subscription( "~/input/objects", rclcpp::SensorDataQoS(), @@ -242,8 +242,8 @@ void PredictedPathCheckerNode::onTimer() // Convert to trajectory array TrajectoryPoints predicted_trajectory_array = - autoware_motion_utils::convertToTrajectoryPointArray( - autoware_motion_utils::resampleTrajectory(cut_trajectory, node_param_.resample_interval)); + autoware::motion_utils::convertToTrajectoryPointArray( + autoware::motion_utils::resampleTrajectory(cut_trajectory, node_param_.resample_interval)); // Filter the objects @@ -323,7 +323,7 @@ void PredictedPathCheckerNode::onTimer() // trajectory or not const auto reference_trajectory_array = - autoware_motion_utils::convertToTrajectoryPointArray(*reference_trajectory_); + autoware::motion_utils::convertToTrajectoryPointArray(*reference_trajectory_); const auto is_discrete_point = isItDiscretePoint(reference_trajectory_array, predicted_trajectory_array.at(stop_idx)); @@ -368,7 +368,7 @@ TrajectoryPoints PredictedPathCheckerNode::trimTrajectoryFromSelfPose( TrajectoryPoints output{}; const size_t min_distance_index = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( input, self_pose, node_param_.ego_nearest_dist_threshold, node_param_.ego_nearest_yaw_threshold) + 1; @@ -387,9 +387,9 @@ bool PredictedPathCheckerNode::isThereStopPointOnReferenceTrajectory( trimTrajectoryFromSelfPose(reference_trajectory_array, current_pose_.get()->pose); const auto nearest_stop_point_on_ref_trajectory = - autoware_motion_utils::findNearestIndex(trimmed_reference_trajectory_array, pose); + autoware::motion_utils::findNearestIndex(trimmed_reference_trajectory_array, pose); - const auto stop_point_on_trajectory = autoware_motion_utils::searchZeroVelocityIndex( + const auto stop_point_on_trajectory = autoware::motion_utils::searchZeroVelocityIndex( trimmed_reference_trajectory_array, 0, *nearest_stop_point_on_ref_trajectory); return !!stop_point_on_trajectory; @@ -427,18 +427,18 @@ bool PredictedPathCheckerNode::isItDiscretePoint( const TrajectoryPoints & reference_trajectory, const TrajectoryPoint & collision_point) const { const auto nearest_segment = - autoware_motion_utils::findNearestSegmentIndex(reference_trajectory, collision_point.pose); + autoware::motion_utils::findNearestSegmentIndex(reference_trajectory, collision_point.pose); const auto nearest_point = utils::calcInterpolatedPoint( reference_trajectory, collision_point.pose.position, *nearest_segment, false); - const auto distance = autoware_universe_utils::calcDistance2d( + const auto distance = autoware::universe_utils::calcDistance2d( nearest_point.pose.position, collision_point.pose.position); const auto yaw_diff = - std::abs(autoware_universe_utils::calcYawDeviation(nearest_point.pose, collision_point.pose)); + std::abs(autoware::universe_utils::calcYawDeviation(nearest_point.pose, collision_point.pose)); return distance >= node_param_.distinct_point_distance_threshold || - yaw_diff >= autoware_universe_utils::deg2rad(node_param_.distinct_point_yaw_threshold); + yaw_diff >= autoware::universe_utils::deg2rad(node_param_.distinct_point_yaw_threshold); } Trajectory PredictedPathCheckerNode::cutTrajectory( @@ -454,8 +454,8 @@ Trajectory PredictedPathCheckerNode::cutTrajectory( for (size_t i = 1; i < trajectory.points.size(); ++i) { const auto & point = trajectory.points.at(i); - const auto p1 = autoware_universe_utils::fromMsg(cut.points.back().pose.position); - const auto p2 = autoware_universe_utils::fromMsg(point.pose.position); + const auto p1 = autoware::universe_utils::fromMsg(cut.points.back().pose.position); + const auto p2 = autoware::universe_utils::fromMsg(point.pose.position); const auto points_distance = boost::geometry::distance(p1.to_2d(), p2.to_2d()); const auto remain_distance = length - total_length; @@ -482,7 +482,7 @@ Trajectory PredictedPathCheckerNode::cutTrajectory( cut.points.push_back(point); total_length += points_distance; } - autoware_motion_utils::removeOverlapPoints(cut.points); + autoware::motion_utils::removeOverlapPoints(cut.points); return cut; } @@ -501,7 +501,7 @@ size_t PredictedPathCheckerNode::insertStopPoint( TrajectoryPoints & trajectory, const geometry_msgs::msg::Point collision_point) { const auto nearest_collision_segment = - autoware_motion_utils::findNearestSegmentIndex(trajectory, collision_point); + autoware::motion_utils::findNearestSegmentIndex(trajectory, collision_point); const auto nearest_collision_point = utils::calcInterpolatedPoint(trajectory, collision_point, nearest_collision_segment, true); @@ -528,7 +528,7 @@ std::pair PredictedPathCheckerNode::calculateProjectedVelAndAcc( const auto velocity_obj = object.kinematics.initial_twist_with_covariance.twist.linear.x; const auto acceleration_obj = object.kinematics.initial_acceleration_with_covariance.accel.linear.x; - const auto k = std::cos(autoware_universe_utils::normalizeRadian( + const auto k = std::cos(autoware::universe_utils::normalizeRadian( tf2::getYaw(orientation_obj) - tf2::getYaw(orientation_stop_point))); const auto projected_velocity = velocity_obj * k; const auto projected_acceleration = acceleration_obj * k; @@ -555,10 +555,10 @@ void PredictedPathCheckerNode::filterObstacles( // Check is it near to trajectory const double max_length = utils::calcObstacleMaxLength(object.shape); - const size_t seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t seg_idx = autoware::motion_utils::findNearestSegmentIndex( traj, object.kinematics.initial_pose_with_covariance.pose.position); - const auto p_front = autoware_universe_utils::getPoint(traj.at(seg_idx)); - const auto p_back = autoware_universe_utils::getPoint(traj.at(seg_idx + 1)); + const auto p_front = autoware::universe_utils::getPoint(traj.at(seg_idx)); + const auto p_back = autoware::universe_utils::getPoint(traj.at(seg_idx + 1)); const auto & p_target = object.kinematics.initial_pose_with_covariance.pose.position; const Eigen::Vector3d segment_vec{p_back.x - p_front.x, p_back.y - p_front.y, 0.0}; const Eigen::Vector3d target_vec{p_target.x - p_front.x, p_target.y - p_front.y, 0.0}; diff --git a/control/predicted_path_checker/src/predicted_path_checker_node/utils.cpp b/control/predicted_path_checker/src/predicted_path_checker_node/utils.cpp index 0f4cc202f5c02..d750f3aa07248 100644 --- a/control/predicted_path_checker/src/predicted_path_checker_node/utils.cpp +++ b/control/predicted_path_checker/src/predicted_path_checker_node/utils.cpp @@ -21,10 +21,10 @@ namespace utils { -using autoware_motion_utils::findFirstNearestIndexWithSoftConstraints; -using autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::getRPY; +using autoware::motion_utils::findFirstNearestIndexWithSoftConstraints; +using autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::getRPY; // Utils Functions Polygon2d createOneStepPolygon( @@ -40,40 +40,40 @@ Polygon2d createOneStepPolygon( { // base step appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, width, 0.0) + autoware::universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, width, 0.0) .position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, -width, 0.0) + autoware::universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, -width, 0.0) .position); appendPointToPolygon( - polygon, autoware_universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, -width, 0.0) + polygon, autoware::universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, -width, 0.0) .position); appendPointToPolygon( - polygon, - autoware_universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, width, 0.0).position); + polygon, autoware::universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, width, 0.0) + .position); } { // next step appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, width, 0.0) + autoware::universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, width, 0.0) .position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, -width, 0.0) + autoware::universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, -width, 0.0) .position); appendPointToPolygon( - polygon, autoware_universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, -width, 0.0) + polygon, autoware::universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, -width, 0.0) .position); appendPointToPolygon( - polygon, - autoware_universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, width, 0.0).position); + polygon, autoware::universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, width, 0.0) + .position); } - polygon = autoware_universe_utils::isClockwise(polygon) + polygon = autoware::universe_utils::isClockwise(polygon) ? polygon - : autoware_universe_utils::inverseClockwise(polygon); + : autoware::universe_utils::inverseClockwise(polygon); Polygon2d hull_polygon; boost::geometry::convex_hull(polygon, hull_polygon); @@ -97,8 +97,8 @@ TrajectoryPoint calcInterpolatedPoint( // Calculate interpolation ratio const auto & curr_pt = trajectory.at(segment_idx); const auto & next_pt = trajectory.at(segment_idx + 1); - const auto v1 = autoware_universe_utils::point2tfVector(curr_pt, next_pt); - const auto v2 = autoware_universe_utils::point2tfVector(curr_pt, target_point); + const auto v1 = autoware::universe_utils::point2tfVector(curr_pt, next_pt); + const auto v2 = autoware::universe_utils::point2tfVector(curr_pt, target_point); if (v1.length2() < 1e-3) { return curr_pt; } @@ -111,7 +111,7 @@ TrajectoryPoint calcInterpolatedPoint( // pose interpolation interpolated_point.pose = - autoware_universe_utils::calcInterpolatedPose(curr_pt, next_pt, clamped_ratio); + autoware::universe_utils::calcInterpolatedPose(curr_pt, next_pt, clamped_ratio); // twist interpolation if (use_zero_order_hold_for_twist) { @@ -160,7 +160,7 @@ std::pair findStopPoint( for (size_t i = collision_idx; i > 0; i--) { distance_point_to_collision = - autoware_motion_utils::calcSignedArcLength(trajectory_array, i - 1, collision_idx); + autoware::motion_utils::calcSignedArcLength(trajectory_array, i - 1, collision_idx); if (distance_point_to_collision >= desired_distance_base_link_to_collision) { stop_segment_idx = i - 1; found_stop_point = true; @@ -176,8 +176,8 @@ std::pair findStopPoint( base_point.pose.position.x - next_point.pose.position.x, base_point.pose.position.y - next_point.pose.position.y)); - geometry_msgs::msg::Pose interpolated_pose = - autoware_universe_utils::calcInterpolatedPose(base_point.pose, next_point.pose, ratio, false); + geometry_msgs::msg::Pose interpolated_pose = autoware::universe_utils::calcInterpolatedPose( + base_point.pose, next_point.pose, ratio, false); TrajectoryPoint output; output.set__pose(interpolated_pose); return std::make_pair(stop_segment_idx, output); @@ -196,7 +196,7 @@ bool isInBrakeDistance( return false; } - const auto distance_to_obstacle = autoware_motion_utils::calcSignedArcLength( + const auto distance_to_obstacle = autoware::motion_utils::calcSignedArcLength( trajectory, trajectory.front().pose.position, trajectory.at(stop_idx).pose.position); const double distance_in_delay = relative_velocity * delay_time_sec + @@ -249,7 +249,7 @@ double getNearestPointAndDistanceForPredictedObject( bool is_init = false; for (const auto & p : points) { - double norm = autoware_universe_utils::calcDistance2d(p, base_pose); + double norm = autoware::universe_utils::calcDistance2d(p, base_pose); if (norm < min_norm || !is_init) { min_norm = norm; *nearest_collision_point = p; @@ -371,7 +371,7 @@ Polygon2d convertObjToPolygon(const PredictedObject & obj) bool isFrontObstacle(const Pose & ego_pose, const geometry_msgs::msg::Point & obstacle_pos) { - const auto yaw = autoware_universe_utils::getRPY(ego_pose).z; + const auto yaw = autoware::universe_utils::getRPY(ego_pose).z; const Eigen::Vector2d base_pose_vec(std::cos(yaw), std::sin(yaw)); const Eigen::Vector2d obstacle_vec( obstacle_pos.x - ego_pose.position.x, obstacle_pos.y - ego_pose.position.y); @@ -403,7 +403,7 @@ void getCurrentObjectPose( PredictedObject & predicted_object, const rclcpp::Time & obj_base_time, const rclcpp::Time & current_time) { - const double yaw = autoware_universe_utils::getRPY( + const double yaw = autoware::universe_utils::getRPY( predicted_object.kinematics.initial_pose_with_covariance.pose.orientation) .z; const double vx = predicted_object.kinematics.initial_twist_with_covariance.twist.linear.x; @@ -414,8 +414,8 @@ void getCurrentObjectPose( const double delta_yaw = predicted_object.kinematics.initial_twist_with_covariance.twist.angular.z * dt; geometry_msgs::msg::Transform transform; - transform.translation = autoware_universe_utils::createTranslation(ds, 0.0, 0.0); - transform.rotation = autoware_universe_utils::createQuaternionFromRPY(0.0, 0.0, yaw); + transform.translation = autoware::universe_utils::createTranslation(ds, 0.0, 0.0); + transform.rotation = autoware::universe_utils::createQuaternionFromRPY(0.0, 0.0, yaw); tf2::Transform tf_pose; tf2::Transform tf_offset; @@ -424,8 +424,8 @@ void getCurrentObjectPose( tf2::toMsg(tf_pose * tf_offset, predicted_object.kinematics.initial_pose_with_covariance.pose); predicted_object.kinematics.initial_twist_with_covariance.twist.linear.x += ax * dt; predicted_object.kinematics.initial_pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromRPY( - 0.0, 0.0, autoware_universe_utils::normalizeRadian(yaw + delta_yaw)); + autoware::universe_utils::createQuaternionFromRPY( + 0.0, 0.0, autoware::universe_utils::normalizeRadian(yaw + delta_yaw)); } } // namespace utils diff --git a/evaluator/autoware_control_evaluator/CMakeLists.txt b/evaluator/autoware_control_evaluator/CMakeLists.txt index 189745349a592..2e6f9851cafce 100644 --- a/evaluator/autoware_control_evaluator/CMakeLists.txt +++ b/evaluator/autoware_control_evaluator/CMakeLists.txt @@ -12,7 +12,7 @@ ament_auto_add_library(control_evaluator_node SHARED ) rclcpp_components_register_node(control_evaluator_node - PLUGIN "control_diagnostics::controlEvaluatorNode" + PLUGIN "control_diagnostics::ControlEvaluatorNode" EXECUTABLE control_evaluator ) diff --git a/evaluator/autoware_control_evaluator/include/autoware/control_evaluator/control_evaluator_node.hpp b/evaluator/autoware_control_evaluator/include/autoware/control_evaluator/control_evaluator_node.hpp index efeb068fca115..da60c820c45b1 100644 --- a/evaluator/autoware_control_evaluator/include/autoware/control_evaluator/control_evaluator_node.hpp +++ b/evaluator/autoware_control_evaluator/include/autoware/control_evaluator/control_evaluator_node.hpp @@ -17,15 +17,17 @@ #include "autoware/control_evaluator/metrics/deviation_metrics.hpp" +#include #include #include +#include "geometry_msgs/msg/accel_with_covariance_stamped.hpp" +#include #include #include -#include #include -#include +#include #include #include #include @@ -39,14 +41,17 @@ using diagnostic_msgs::msg::DiagnosticStatus; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using nav_msgs::msg::Odometry; +using LaneletMapBin = autoware_map_msgs::msg::LaneletMapBin; +using autoware_planning_msgs::msg::LaneletRoute; +using geometry_msgs::msg::AccelWithCovarianceStamped; /** * @brief Node for control evaluation */ -class controlEvaluatorNode : public rclcpp::Node +class ControlEvaluatorNode : public rclcpp::Node { public: - explicit controlEvaluatorNode(const rclcpp::NodeOptions & node_options); + explicit ControlEvaluatorNode(const rclcpp::NodeOptions & node_options); void removeOldDiagnostics(const rclcpp::Time & stamp); void removeDiagnosticsByName(const std::string & name); void addDiagnostic(const DiagnosticStatus & diag, const rclcpp::Time & stamp); @@ -62,6 +67,9 @@ class controlEvaluatorNode : public rclcpp::Node const DiagnosticArray & diag, const std::string & function_name); DiagnosticStatus generateAEBDiagnosticStatus(const DiagnosticStatus & diag); + DiagnosticStatus generateLaneletDiagnosticStatus(const Pose & ego_pose) const; + DiagnosticStatus generateKinematicStateDiagnosticStatus( + const Odometry & odom, const AccelWithCovarianceStamped & accel_stamped); void onDiagnostics(const DiagnosticArray::ConstSharedPtr diag_msg); void onTimer(); @@ -72,13 +80,22 @@ class controlEvaluatorNode : public rclcpp::Node // onDiagnostics(). rclcpp::Subscription::SharedPtr control_diag_sub_; - autoware_universe_utils::InterProcessPollingSubscriber odometry_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber odometry_sub_{ this, "~/input/odometry"}; - autoware_universe_utils::InterProcessPollingSubscriber traj_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber accel_sub_{ + this, "~/input/acceleration"}; + autoware::universe_utils::InterProcessPollingSubscriber traj_sub_{ this, "~/input/trajectory"}; + autoware::universe_utils::InterProcessPollingSubscriber route_subscriber_{ + this, "~/input/route", rclcpp::QoS{1}.transient_local()}; + autoware::universe_utils::InterProcessPollingSubscriber vector_map_subscriber_{ + this, "~/input/vector_map", rclcpp::QoS{1}.transient_local()}; rclcpp::Publisher::SharedPtr metrics_pub_; + // update Route Handler + void getRouteData(); + // Calculator // Metrics std::deque stamps_; @@ -87,7 +104,9 @@ class controlEvaluatorNode : public rclcpp::Node std::deque> diag_queue_; const std::vector target_functions_ = {"autonomous_emergency_braking"}; + autoware::route_handler::RouteHandler route_handler_; rclcpp::TimerBase::SharedPtr timer_; + std::optional prev_acc_stamped_{std::nullopt}; }; } // namespace control_diagnostics diff --git a/evaluator/autoware_control_evaluator/launch/control_evaluator.launch.xml b/evaluator/autoware_control_evaluator/launch/control_evaluator.launch.xml index e119f1787d21b..84e11208770b8 100644 --- a/evaluator/autoware_control_evaluator/launch/control_evaluator.launch.xml +++ b/evaluator/autoware_control_evaluator/launch/control_evaluator.launch.xml @@ -1,15 +1,21 @@ + + + + + + diff --git a/evaluator/autoware_control_evaluator/package.xml b/evaluator/autoware_control_evaluator/package.xml index 49631c566eaf5..21f48b1c64485 100644 --- a/evaluator/autoware_control_evaluator/package.xml +++ b/evaluator/autoware_control_evaluator/package.xml @@ -16,6 +16,7 @@ autoware_motion_utils autoware_planning_msgs + autoware_route_handler autoware_universe_utils diagnostic_msgs pluginlib diff --git a/evaluator/autoware_control_evaluator/src/control_evaluator_node.cpp b/evaluator/autoware_control_evaluator/src/control_evaluator_node.cpp index ce749e6e8d5eb..5862522d582f7 100644 --- a/evaluator/autoware_control_evaluator/src/control_evaluator_node.cpp +++ b/evaluator/autoware_control_evaluator/src/control_evaluator_node.cpp @@ -14,22 +14,23 @@ #include "autoware/control_evaluator/control_evaluator_node.hpp" -#include -#include -#include -#include +#include +#include + +#include +#include #include #include #include namespace control_diagnostics { -controlEvaluatorNode::controlEvaluatorNode(const rclcpp::NodeOptions & node_options) +ControlEvaluatorNode::ControlEvaluatorNode(const rclcpp::NodeOptions & node_options) : Node("control_evaluator", node_options) { using std::placeholders::_1; control_diag_sub_ = create_subscription( - "~/input/diagnostics", 1, std::bind(&controlEvaluatorNode::onDiagnostics, this, _1)); + "~/input/diagnostics", 1, std::bind(&ControlEvaluatorNode::onDiagnostics, this, _1)); // Publisher metrics_pub_ = create_publisher("~/metrics", 1); @@ -37,10 +38,33 @@ controlEvaluatorNode::controlEvaluatorNode(const rclcpp::NodeOptions & node_opti // Timer callback to publish evaluator diagnostics using namespace std::literals::chrono_literals; timer_ = - rclcpp::create_timer(this, get_clock(), 100ms, std::bind(&controlEvaluatorNode::onTimer, this)); + rclcpp::create_timer(this, get_clock(), 100ms, std::bind(&ControlEvaluatorNode::onTimer, this)); +} + +void ControlEvaluatorNode::getRouteData() +{ + // route + { + const auto msg = route_subscriber_.takeNewData(); + if (msg) { + if (msg->segments.empty()) { + RCLCPP_ERROR(get_logger(), "input route is empty. ignored"); + } else { + route_handler_.setRoute(*msg); + } + } + } + + // map + { + const auto msg = vector_map_subscriber_.takeNewData(); + if (msg) { + route_handler_.setMap(*msg); + } + } } -void controlEvaluatorNode::removeOldDiagnostics(const rclcpp::Time & stamp) +void ControlEvaluatorNode::removeOldDiagnostics(const rclcpp::Time & stamp) { constexpr double KEEP_TIME = 1.0; diag_queue_.erase( @@ -52,7 +76,7 @@ void controlEvaluatorNode::removeOldDiagnostics(const rclcpp::Time & stamp) diag_queue_.end()); } -void controlEvaluatorNode::removeDiagnosticsByName(const std::string & name) +void ControlEvaluatorNode::removeDiagnosticsByName(const std::string & name) { diag_queue_.erase( std::remove_if( @@ -63,13 +87,13 @@ void controlEvaluatorNode::removeDiagnosticsByName(const std::string & name) diag_queue_.end()); } -void controlEvaluatorNode::addDiagnostic( +void ControlEvaluatorNode::addDiagnostic( const diagnostic_msgs::msg::DiagnosticStatus & diag, const rclcpp::Time & stamp) { diag_queue_.push_back(std::make_pair(diag, stamp)); } -void controlEvaluatorNode::updateDiagnosticQueue( +void ControlEvaluatorNode::updateDiagnosticQueue( const DiagnosticArray & input_diagnostics, const std::string & function, const rclcpp::Time & stamp) { @@ -86,7 +110,7 @@ void controlEvaluatorNode::updateDiagnosticQueue( removeOldDiagnostics(stamp); } -void controlEvaluatorNode::onDiagnostics(const DiagnosticArray::ConstSharedPtr diag_msg) +void ControlEvaluatorNode::onDiagnostics(const DiagnosticArray::ConstSharedPtr diag_msg) { // add target diagnostics to the queue and remove old ones for (const auto & function : target_functions_) { @@ -94,7 +118,7 @@ void controlEvaluatorNode::onDiagnostics(const DiagnosticArray::ConstSharedPtr d } } -DiagnosticStatus controlEvaluatorNode::generateAEBDiagnosticStatus(const DiagnosticStatus & diag) +DiagnosticStatus ControlEvaluatorNode::generateAEBDiagnosticStatus(const DiagnosticStatus & diag) { DiagnosticStatus status; status.level = status.OK; @@ -102,13 +126,79 @@ DiagnosticStatus controlEvaluatorNode::generateAEBDiagnosticStatus(const Diagnos diagnostic_msgs::msg::KeyValue key_value; key_value.key = "decision"; const bool is_emergency_brake = (diag.level == DiagnosticStatus::ERROR); - key_value.value = (is_emergency_brake) ? "stop" : "none"; + key_value.value = (is_emergency_brake) ? "deceleration" : "none"; + status.values.push_back(key_value); + return status; +} + +DiagnosticStatus ControlEvaluatorNode::generateLaneletDiagnosticStatus(const Pose & ego_pose) const +{ + const auto current_lanelets = [&]() { + lanelet::ConstLanelet closest_route_lanelet; + route_handler_.getClosestLaneletWithinRoute(ego_pose, &closest_route_lanelet); + const auto shoulder_lanelets = route_handler_.getShoulderLaneletsAtPose(ego_pose); + lanelet::ConstLanelets closest_lanelets{closest_route_lanelet}; + closest_lanelets.insert( + closest_lanelets.end(), shoulder_lanelets.begin(), shoulder_lanelets.end()); + return closest_lanelets; + }(); + const auto arc_coordinates = lanelet::utils::getArcCoordinates(current_lanelets, ego_pose); + lanelet::ConstLanelet current_lane; + lanelet::utils::query::getClosestLanelet(current_lanelets, ego_pose, ¤t_lane); + + DiagnosticStatus status; + status.name = "ego_lane_info"; + status.level = status.OK; + diagnostic_msgs::msg::KeyValue key_value; + key_value.key = "lane_id"; + key_value.value = std::to_string(current_lane.id()); status.values.push_back(key_value); + key_value.key = "s"; + key_value.value = std::to_string(arc_coordinates.length); + status.values.push_back(key_value); + key_value.key = "t"; + key_value.value = std::to_string(arc_coordinates.distance); + status.values.push_back(key_value); + return status; +} + +DiagnosticStatus ControlEvaluatorNode::generateKinematicStateDiagnosticStatus( + const Odometry & odom, const AccelWithCovarianceStamped & accel_stamped) +{ + DiagnosticStatus status; + status.name = "kinematic_state"; + status.level = status.OK; + diagnostic_msgs::msg::KeyValue key_value; + key_value.key = "vel"; + key_value.value = std::to_string(odom.twist.twist.linear.x); + status.values.push_back(key_value); + key_value.key = "acc"; + const auto & acc = accel_stamped.accel.accel.linear.x; + key_value.value = std::to_string(acc); + status.values.push_back(key_value); + key_value.key = "jerk"; + const auto jerk = [&]() { + if (!prev_acc_stamped_.has_value()) { + prev_acc_stamped_ = accel_stamped; + return 0.0; + } + const auto t = static_cast(accel_stamped.header.stamp.sec) + + static_cast(accel_stamped.header.stamp.nanosec) * 1e-9; + const auto prev_t = static_cast(prev_acc_stamped_.value().header.stamp.sec) + + static_cast(prev_acc_stamped_.value().header.stamp.nanosec) * 1e-9; + const auto dt = t - prev_t; + if (dt < std::numeric_limits::epsilon()) return 0.0; + const auto prev_acc = prev_acc_stamped_.value().accel.accel.linear.x; + prev_acc_stamped_ = accel_stamped; + return (acc - prev_acc) / dt; + }(); + key_value.value = std::to_string(jerk); + status.values.push_back(key_value); return status; } -DiagnosticStatus controlEvaluatorNode::generateLateralDeviationDiagnosticStatus( +DiagnosticStatus ControlEvaluatorNode::generateLateralDeviationDiagnosticStatus( const Trajectory & traj, const Point & ego_point) { const double lateral_deviation = metrics::calcLateralDeviation(traj, ego_point); @@ -124,7 +214,7 @@ DiagnosticStatus controlEvaluatorNode::generateLateralDeviationDiagnosticStatus( return status; } -DiagnosticStatus controlEvaluatorNode::generateYawDeviationDiagnosticStatus( +DiagnosticStatus ControlEvaluatorNode::generateYawDeviationDiagnosticStatus( const Trajectory & traj, const Pose & ego_pose) { const double yaw_deviation = metrics::calcYawDeviation(traj, ego_pose); @@ -140,11 +230,12 @@ DiagnosticStatus controlEvaluatorNode::generateYawDeviationDiagnosticStatus( return status; } -void controlEvaluatorNode::onTimer() +void ControlEvaluatorNode::onTimer() { DiagnosticArray metrics_msg; const auto traj = traj_sub_.takeData(); const auto odom = odometry_sub_.takeData(); + const auto acc = accel_sub_.takeData(); // generate decision diagnostics from input diagnostics for (const auto & function : target_functions_) { @@ -171,10 +262,20 @@ void controlEvaluatorNode::onTimer() metrics_msg.status.push_back(generateYawDeviationDiagnosticStatus(*traj, ego_pose)); } + getRouteData(); + if (odom && route_handler_.isHandlerReady()) { + const Pose ego_pose = odom->pose.pose; + metrics_msg.status.push_back(generateLaneletDiagnosticStatus(ego_pose)); + } + + if (odom && acc) { + metrics_msg.status.push_back(generateKinematicStateDiagnosticStatus(*odom, *acc)); + } + metrics_msg.header.stamp = now(); metrics_pub_->publish(metrics_msg); } } // namespace control_diagnostics #include "rclcpp_components/register_node_macro.hpp" -RCLCPP_COMPONENTS_REGISTER_NODE(control_diagnostics::controlEvaluatorNode) +RCLCPP_COMPONENTS_REGISTER_NODE(control_diagnostics::ControlEvaluatorNode) diff --git a/evaluator/autoware_control_evaluator/src/metrics/deviation_metrics.cpp b/evaluator/autoware_control_evaluator/src/metrics/deviation_metrics.cpp index a0d8f4076dae4..689291da09f6d 100644 --- a/evaluator/autoware_control_evaluator/src/metrics/deviation_metrics.cpp +++ b/evaluator/autoware_control_evaluator/src/metrics/deviation_metrics.cpp @@ -26,15 +26,16 @@ using autoware_planning_msgs::msg::Trajectory; double calcLateralDeviation(const Trajectory & traj, const Point & point) { - const size_t nearest_index = autoware_motion_utils::findNearestIndex(traj.points, point); + const size_t nearest_index = autoware::motion_utils::findNearestIndex(traj.points, point); return std::abs( - autoware_universe_utils::calcLateralDeviation(traj.points[nearest_index].pose, point)); + autoware::universe_utils::calcLateralDeviation(traj.points[nearest_index].pose, point)); } double calcYawDeviation(const Trajectory & traj, const Pose & pose) { - const size_t nearest_index = autoware_motion_utils::findNearestIndex(traj.points, pose.position); - return std::abs(autoware_universe_utils::calcYawDeviation(traj.points[nearest_index].pose, pose)); + const size_t nearest_index = autoware::motion_utils::findNearestIndex(traj.points, pose.position); + return std::abs( + autoware::universe_utils::calcYawDeviation(traj.points[nearest_index].pose, pose)); } } // namespace metrics diff --git a/evaluator/autoware_planning_evaluator/include/autoware/planning_evaluator/planning_evaluator_node.hpp b/evaluator/autoware_planning_evaluator/include/autoware/planning_evaluator/planning_evaluator_node.hpp index 0121425c15d1d..74523398c3a77 100644 --- a/evaluator/autoware_planning_evaluator/include/autoware/planning_evaluator/planning_evaluator_node.hpp +++ b/evaluator/autoware_planning_evaluator/include/autoware/planning_evaluator/planning_evaluator_node.hpp @@ -21,12 +21,17 @@ #include "tf2_ros/buffer.h" #include "tf2_ros/transform_listener.h" +#include +#include + #include "autoware_perception_msgs/msg/predicted_objects.hpp" #include "autoware_planning_msgs/msg/pose_with_uuid_stamped.hpp" #include "autoware_planning_msgs/msg/trajectory.hpp" #include "autoware_planning_msgs/msg/trajectory_point.hpp" #include "diagnostic_msgs/msg/diagnostic_array.hpp" +#include "geometry_msgs/msg/accel_with_covariance_stamped.hpp" #include "nav_msgs/msg/odometry.hpp" +#include #include #include @@ -43,6 +48,9 @@ using autoware_planning_msgs::msg::TrajectoryPoint; using diagnostic_msgs::msg::DiagnosticArray; using diagnostic_msgs::msg::DiagnosticStatus; using nav_msgs::msg::Odometry; +using LaneletMapBin = autoware_map_msgs::msg::LaneletMapBin; +using autoware_planning_msgs::msg::LaneletRoute; +using geometry_msgs::msg::AccelWithCovarianceStamped; /** * @brief Node for planning evaluation */ @@ -88,9 +96,22 @@ class PlanningEvaluatorNode : public rclcpp::Node DiagnosticStatus generateDiagnosticStatus( const Metric & metric, const Stat & metric_stat) const; + /** + * @brief publish current ego lane info + */ + DiagnosticStatus generateLaneletDiagnosticStatus(); + + /** + * @brief publish current ego kinematic state + */ + DiagnosticStatus generateKinematicStateDiagnosticStatus( + const AccelWithCovarianceStamped & accel_stamped); + private: static bool isFinite(const TrajectoryPoint & p); void publishModifiedGoalDeviationMetrics(); + // update Route Handler + void getRouteData(); // ROS rclcpp::Subscription::SharedPtr traj_sub_; @@ -98,10 +119,17 @@ class PlanningEvaluatorNode : public rclcpp::Node rclcpp::Subscription::SharedPtr objects_sub_; rclcpp::Subscription::SharedPtr modified_goal_sub_; rclcpp::Subscription::SharedPtr odom_sub_; + autoware::universe_utils::InterProcessPollingSubscriber route_subscriber_{ + this, "~/input/route", rclcpp::QoS{1}.transient_local()}; + autoware::universe_utils::InterProcessPollingSubscriber vector_map_subscriber_{ + this, "~/input/vector_map", rclcpp::QoS{1}.transient_local()}; + autoware::universe_utils::InterProcessPollingSubscriber accel_sub_{ + this, "~/input/acceleration"}; rclcpp::Publisher::SharedPtr metrics_pub_; std::shared_ptr transform_listener_{nullptr}; std::unique_ptr tf_buffer_; + autoware::route_handler::RouteHandler route_handler_; // Parameters std::string output_file_str_; @@ -116,6 +144,7 @@ class PlanningEvaluatorNode : public rclcpp::Node Odometry::ConstSharedPtr ego_state_ptr_; PoseWithUuidStamped::ConstSharedPtr modified_goal_ptr_; + std::optional prev_acc_stamped_{std::nullopt}; }; } // namespace planning_diagnostics diff --git a/evaluator/autoware_planning_evaluator/launch/planning_evaluator.launch.xml b/evaluator/autoware_planning_evaluator/launch/planning_evaluator.launch.xml index 2e358f6272379..70301ebe6275f 100644 --- a/evaluator/autoware_planning_evaluator/launch/planning_evaluator.launch.xml +++ b/evaluator/autoware_planning_evaluator/launch/planning_evaluator.launch.xml @@ -1,19 +1,25 @@ + + + + + + diff --git a/evaluator/autoware_planning_evaluator/package.xml b/evaluator/autoware_planning_evaluator/package.xml index 5bd500f200eac..3c3d4bd8bb595 100644 --- a/evaluator/autoware_planning_evaluator/package.xml +++ b/evaluator/autoware_planning_evaluator/package.xml @@ -16,6 +16,7 @@ autoware_motion_utils autoware_perception_msgs autoware_planning_msgs + autoware_route_handler autoware_universe_utils diagnostic_msgs eigen diff --git a/evaluator/autoware_planning_evaluator/src/metrics/deviation_metrics.cpp b/evaluator/autoware_planning_evaluator/src/metrics/deviation_metrics.cpp index b7be356a7c522..8ce8a009652d8 100644 --- a/evaluator/autoware_planning_evaluator/src/metrics/deviation_metrics.cpp +++ b/evaluator/autoware_planning_evaluator/src/metrics/deviation_metrics.cpp @@ -38,8 +38,8 @@ Stat calcLateralDeviation(const Trajectory & ref, const Trajectory & tra */ for (TrajectoryPoint p : traj.points) { const size_t nearest_index = - autoware_motion_utils::findNearestIndex(ref.points, p.pose.position); - stat.add(autoware_universe_utils::calcLateralDeviation( + autoware::motion_utils::findNearestIndex(ref.points, p.pose.position); + stat.add(autoware::universe_utils::calcLateralDeviation( ref.points[nearest_index].pose, p.pose.position)); } return stat; @@ -58,8 +58,8 @@ Stat calcYawDeviation(const Trajectory & ref, const Trajectory & traj) */ for (TrajectoryPoint p : traj.points) { const size_t nearest_index = - autoware_motion_utils::findNearestIndex(ref.points, p.pose.position); - stat.add(autoware_universe_utils::calcYawDeviation(ref.points[nearest_index].pose, p.pose)); + autoware::motion_utils::findNearestIndex(ref.points, p.pose.position); + stat.add(autoware::universe_utils::calcYawDeviation(ref.points[nearest_index].pose, p.pose)); } return stat; } @@ -75,7 +75,7 @@ Stat calcVelocityDeviation(const Trajectory & ref, const Trajectory & tr // TODO(Maxime CLEMENT) need more precise calculation for (TrajectoryPoint p : traj.points) { const size_t nearest_index = - autoware_motion_utils::findNearestIndex(ref.points, p.pose.position); + autoware::motion_utils::findNearestIndex(ref.points, p.pose.position); stat.add(p.longitudinal_velocity_mps - ref.points[nearest_index].longitudinal_velocity_mps); } return stat; @@ -84,21 +84,21 @@ Stat calcVelocityDeviation(const Trajectory & ref, const Trajectory & tr Stat calcLongitudinalDeviation(const Pose & base_pose, const Point & target_point) { Stat stat; - stat.add(std::abs(autoware_universe_utils::calcLongitudinalDeviation(base_pose, target_point))); + stat.add(std::abs(autoware::universe_utils::calcLongitudinalDeviation(base_pose, target_point))); return stat; } Stat calcLateralDeviation(const Pose & base_pose, const Point & target_point) { Stat stat; - stat.add(std::abs(autoware_universe_utils::calcLateralDeviation(base_pose, target_point))); + stat.add(std::abs(autoware::universe_utils::calcLateralDeviation(base_pose, target_point))); return stat; } Stat calcYawDeviation(const Pose & base_pose, const Pose & target_pose) { Stat stat; - stat.add(std::abs(autoware_universe_utils::calcYawDeviation(base_pose, target_pose))); + stat.add(std::abs(autoware::universe_utils::calcYawDeviation(base_pose, target_pose))); return stat; } } // namespace metrics diff --git a/evaluator/autoware_planning_evaluator/src/metrics/metrics_utils.cpp b/evaluator/autoware_planning_evaluator/src/metrics/metrics_utils.cpp index 906501b05e171..e17cfd98b27da 100644 --- a/evaluator/autoware_planning_evaluator/src/metrics/metrics_utils.cpp +++ b/evaluator/autoware_planning_evaluator/src/metrics/metrics_utils.cpp @@ -20,9 +20,9 @@ namespace metrics { namespace utils { +using autoware::universe_utils::calcDistance2d; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::calcDistance2d; size_t getIndexAfterDistance(const Trajectory & traj, const size_t curr_id, const double distance) { diff --git a/evaluator/autoware_planning_evaluator/src/metrics/obstacle_metrics.cpp b/evaluator/autoware_planning_evaluator/src/metrics/obstacle_metrics.cpp index 7836b0b6d694a..3cdaf3d7eaaae 100644 --- a/evaluator/autoware_planning_evaluator/src/metrics/obstacle_metrics.cpp +++ b/evaluator/autoware_planning_evaluator/src/metrics/obstacle_metrics.cpp @@ -27,8 +27,8 @@ namespace planning_diagnostics { namespace metrics { +using autoware::universe_utils::calcDistance2d; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::calcDistance2d; Stat calcDistanceToObstacle(const PredictedObjects & obstacles, const Trajectory & traj) { diff --git a/evaluator/autoware_planning_evaluator/src/metrics/stability_metrics.cpp b/evaluator/autoware_planning_evaluator/src/metrics/stability_metrics.cpp index 874f2113b7500..4d1c02faa406f 100644 --- a/evaluator/autoware_planning_evaluator/src/metrics/stability_metrics.cpp +++ b/evaluator/autoware_planning_evaluator/src/metrics/stability_metrics.cpp @@ -41,7 +41,8 @@ Stat calcFrechetDistance(const Trajectory & traj1, const Trajectory & tr for (size_t i = 0; i < traj1.points.size(); ++i) { for (size_t j = 0; j < traj2.points.size(); ++j) { - const double dist = autoware_universe_utils::calcDistance2d(traj1.points[i], traj2.points[j]); + const double dist = + autoware::universe_utils::calcDistance2d(traj1.points[i], traj2.points[j]); if (i > 0 && j > 0) { ca(i, j) = std::max(std::min(ca(i - 1, j), std::min(ca(i - 1, j - 1), ca(i, j - 1))), dist); } else if (i > 0 /*&& j == 0*/) { @@ -64,29 +65,29 @@ Stat calcLateralDistance(const Trajectory & traj1, const Trajectory & tr return stat; } for (const auto & point : traj2.points) { - const auto p0 = autoware_universe_utils::getPoint(point); + const auto p0 = autoware::universe_utils::getPoint(point); // find nearest segment const size_t nearest_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(traj1.points, p0); + autoware::motion_utils::findNearestSegmentIndex(traj1.points, p0); double dist; // distance to segment if ( nearest_segment_idx == traj1.points.size() - 2 && - autoware_motion_utils::calcLongitudinalOffsetToSegment( + autoware::motion_utils::calcLongitudinalOffsetToSegment( traj1.points, nearest_segment_idx, p0) > - autoware_universe_utils::calcDistance2d( + autoware::universe_utils::calcDistance2d( traj1.points[nearest_segment_idx], traj1.points[nearest_segment_idx + 1])) { // distance to last point - dist = autoware_universe_utils::calcDistance2d(traj1.points.back(), p0); + dist = autoware::universe_utils::calcDistance2d(traj1.points.back(), p0); } else if ( // NOLINT - nearest_segment_idx == 0 && autoware_motion_utils::calcLongitudinalOffsetToSegment( + nearest_segment_idx == 0 && autoware::motion_utils::calcLongitudinalOffsetToSegment( traj1.points, nearest_segment_idx, p0) <= 0) { // distance to first point - dist = autoware_universe_utils::calcDistance2d(traj1.points.front(), p0); + dist = autoware::universe_utils::calcDistance2d(traj1.points.front(), p0); } else { // orthogonal distance - const auto p1 = autoware_universe_utils::getPoint(traj1.points[nearest_segment_idx]); - const auto p2 = autoware_universe_utils::getPoint(traj1.points[nearest_segment_idx + 1]); + const auto p1 = autoware::universe_utils::getPoint(traj1.points[nearest_segment_idx]); + const auto p2 = autoware::universe_utils::getPoint(traj1.points[nearest_segment_idx + 1]); dist = std::abs((p2.x - p1.x) * (p1.y - p0.y) - (p1.x - p0.x) * (p2.y - p1.y)) / std::sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y)); } diff --git a/evaluator/autoware_planning_evaluator/src/metrics/trajectory_metrics.cpp b/evaluator/autoware_planning_evaluator/src/metrics/trajectory_metrics.cpp index 3f33447c1ce6b..4526865ced97d 100644 --- a/evaluator/autoware_planning_evaluator/src/metrics/trajectory_metrics.cpp +++ b/evaluator/autoware_planning_evaluator/src/metrics/trajectory_metrics.cpp @@ -20,8 +20,8 @@ namespace planning_diagnostics { namespace metrics { -using autoware_universe_utils::calcCurvature; -using autoware_universe_utils::calcDistance2d; +using autoware::universe_utils::calcCurvature; +using autoware::universe_utils::calcDistance2d; Stat calcTrajectoryInterval(const Trajectory & traj) { diff --git a/evaluator/autoware_planning_evaluator/src/metrics_calculator.cpp b/evaluator/autoware_planning_evaluator/src/metrics_calculator.cpp index d0e35fb24d534..8658a666b4976 100644 --- a/evaluator/autoware_planning_evaluator/src/metrics_calculator.cpp +++ b/evaluator/autoware_planning_evaluator/src/metrics_calculator.cpp @@ -123,7 +123,7 @@ Trajectory MetricsCalculator::getLookaheadTrajectory( } const auto ego_index = - autoware_motion_utils::findNearestSegmentIndex(traj.points, ego_pose_.position); + autoware::motion_utils::findNearestSegmentIndex(traj.points, ego_pose_.position); Trajectory lookahead_traj; lookahead_traj.header = traj.header; double dist = 0.0; @@ -132,7 +132,7 @@ Trajectory MetricsCalculator::getLookaheadTrajectory( auto prev_point_it = curr_point_it; while (curr_point_it != traj.points.end() && dist <= max_dist_m && time <= max_time_s) { lookahead_traj.points.push_back(*curr_point_it); - const auto d = autoware_universe_utils::calcDistance2d( + const auto d = autoware::universe_utils::calcDistance2d( prev_point_it->pose.position, curr_point_it->pose.position); dist += d; if (prev_point_it->longitudinal_velocity_mps != 0.0) { diff --git a/evaluator/autoware_planning_evaluator/src/planning_evaluator_node.cpp b/evaluator/autoware_planning_evaluator/src/planning_evaluator_node.cpp index 103e14c73f26d..5e959aed123af 100644 --- a/evaluator/autoware_planning_evaluator/src/planning_evaluator_node.cpp +++ b/evaluator/autoware_planning_evaluator/src/planning_evaluator_node.cpp @@ -14,6 +14,11 @@ #include "autoware/planning_evaluator/planning_evaluator_node.hpp" +#include +#include + +#include + #include "boost/lexical_cast.hpp" #include @@ -105,6 +110,97 @@ PlanningEvaluatorNode::~PlanningEvaluatorNode() } } +void PlanningEvaluatorNode::getRouteData() +{ + // route + { + const auto msg = route_subscriber_.takeNewData(); + if (msg) { + if (msg->segments.empty()) { + RCLCPP_ERROR(get_logger(), "input route is empty. ignored"); + } else { + route_handler_.setRoute(*msg); + } + } + } + + // map + { + const auto msg = vector_map_subscriber_.takeNewData(); + if (msg) { + route_handler_.setMap(*msg); + } + } +} + +DiagnosticStatus PlanningEvaluatorNode::generateLaneletDiagnosticStatus() +{ + const auto & ego_pose = ego_state_ptr_->pose.pose; + const auto current_lanelets = [&]() { + lanelet::ConstLanelet closest_route_lanelet; + route_handler_.getClosestLaneletWithinRoute(ego_pose, &closest_route_lanelet); + const auto shoulder_lanelets = route_handler_.getShoulderLaneletsAtPose(ego_pose); + lanelet::ConstLanelets closest_lanelets{closest_route_lanelet}; + closest_lanelets.insert( + closest_lanelets.end(), shoulder_lanelets.begin(), shoulder_lanelets.end()); + return closest_lanelets; + }(); + const auto arc_coordinates = lanelet::utils::getArcCoordinates(current_lanelets, ego_pose); + lanelet::ConstLanelet current_lane; + lanelet::utils::query::getClosestLanelet(current_lanelets, ego_pose, ¤t_lane); + + DiagnosticStatus status; + status.name = "ego_lane_info"; + status.level = status.OK; + diagnostic_msgs::msg::KeyValue key_value; + key_value.key = "lane_id"; + key_value.value = std::to_string(current_lane.id()); + status.values.push_back(key_value); + key_value.key = "s"; + key_value.value = std::to_string(arc_coordinates.length); + status.values.push_back(key_value); + key_value.key = "t"; + key_value.value = std::to_string(arc_coordinates.distance); + status.values.push_back(key_value); + return status; +} + +DiagnosticStatus PlanningEvaluatorNode::generateKinematicStateDiagnosticStatus( + const AccelWithCovarianceStamped & accel_stamped) +{ + DiagnosticStatus status; + status.name = "kinematic_state"; + status.level = status.OK; + diagnostic_msgs::msg::KeyValue key_value; + key_value.key = "vel"; + key_value.value = std::to_string(ego_state_ptr_->twist.twist.linear.x); + status.values.push_back(key_value); + key_value.key = "acc"; + const auto & acc = accel_stamped.accel.accel.linear.x; + key_value.value = std::to_string(acc); + status.values.push_back(key_value); + key_value.key = "jerk"; + const auto jerk = [&]() { + if (!prev_acc_stamped_.has_value()) { + prev_acc_stamped_ = accel_stamped; + return 0.0; + } + const auto t = static_cast(accel_stamped.header.stamp.sec) + + static_cast(accel_stamped.header.stamp.nanosec) * 1e-9; + const auto prev_t = static_cast(prev_acc_stamped_.value().header.stamp.sec) + + static_cast(prev_acc_stamped_.value().header.stamp.nanosec) * 1e-9; + const auto dt = t - prev_t; + if (dt < std::numeric_limits::epsilon()) return 0.0; + + const auto prev_acc = prev_acc_stamped_.value().accel.accel.linear.x; + prev_acc_stamped_ = accel_stamped; + return (acc - prev_acc) / dt; + }(); + key_value.value = std::to_string(jerk); + status.values.push_back(key_value); + return status; +} + DiagnosticStatus PlanningEvaluatorNode::generateDiagnosticStatus( const Metric & metric, const Stat & metric_stat) const { @@ -172,6 +268,25 @@ void PlanningEvaluatorNode::onOdometry(const Odometry::ConstSharedPtr odometry_m { ego_state_ptr_ = odometry_msg; metrics_calculator_.setEgoPose(odometry_msg->pose.pose); + { + DiagnosticArray metrics_msg; + metrics_msg.header.stamp = now(); + + getRouteData(); + if (route_handler_.isHandlerReady() && ego_state_ptr_) { + metrics_msg.status.push_back(generateLaneletDiagnosticStatus()); + } + + const auto acc = accel_sub_.takeData(); + + if (acc && ego_state_ptr_) { + metrics_msg.status.push_back(generateKinematicStateDiagnosticStatus(*acc)); + } + + if (!metrics_msg.status.empty()) { + metrics_pub_->publish(metrics_msg); + } + } if (modified_goal_ptr_) { publishModifiedGoalDeviationMetrics(); diff --git a/evaluator/perception_online_evaluator/include/perception_online_evaluator/utils/marker_utils.hpp b/evaluator/perception_online_evaluator/include/perception_online_evaluator/utils/marker_utils.hpp index 2d60ef826a5e9..9c49605d944b5 100644 --- a/evaluator/perception_online_evaluator/include/perception_online_evaluator/utils/marker_utils.hpp +++ b/evaluator/perception_online_evaluator/include/perception_online_evaluator/utils/marker_utils.hpp @@ -30,8 +30,8 @@ namespace marker_utils { +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedObject; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using std_msgs::msg::ColorRGBA; diff --git a/evaluator/perception_online_evaluator/package.xml b/evaluator/perception_online_evaluator/package.xml index 082a9bc2d1366..23b1210063705 100644 --- a/evaluator/perception_online_evaluator/package.xml +++ b/evaluator/perception_online_evaluator/package.xml @@ -17,6 +17,7 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_universe_utils @@ -25,7 +26,6 @@ eigen geometry_msgs glog - lanelet2_extension nav_msgs object_recognition_utils pluginlib diff --git a/evaluator/perception_online_evaluator/src/metrics/detection_count.cpp b/evaluator/perception_online_evaluator/src/metrics/detection_count.cpp index 437e53dbbf1e4..5859bf055d4aa 100644 --- a/evaluator/perception_online_evaluator/src/metrics/detection_count.cpp +++ b/evaluator/perception_online_evaluator/src/metrics/detection_count.cpp @@ -24,7 +24,7 @@ namespace perception_diagnostics { namespace metrics { -using autoware_universe_utils::toHexString; +using autoware::universe_utils::toHexString; bool isCountObject( const std::uint8_t classification, const std::unordered_map & params) diff --git a/evaluator/perception_online_evaluator/src/metrics/deviation_metrics.cpp b/evaluator/perception_online_evaluator/src/metrics/deviation_metrics.cpp index ca9266ec6247b..d5ac88613fa83 100644 --- a/evaluator/perception_online_evaluator/src/metrics/deviation_metrics.cpp +++ b/evaluator/perception_online_evaluator/src/metrics/deviation_metrics.cpp @@ -31,9 +31,9 @@ double calcLateralDeviation(const std::vector & ref_path, const Pose & tar } const size_t nearest_index = - autoware_motion_utils::findNearestIndex(ref_path, target_pose.position); + autoware::motion_utils::findNearestIndex(ref_path, target_pose.position); return std::abs( - autoware_universe_utils::calcLateralDeviation(ref_path[nearest_index], target_pose.position)); + autoware::universe_utils::calcLateralDeviation(ref_path[nearest_index], target_pose.position)); } double calcYawDeviation(const std::vector & ref_path, const Pose & target_pose) @@ -43,8 +43,8 @@ double calcYawDeviation(const std::vector & ref_path, const Pose & target_ } const size_t nearest_index = - autoware_motion_utils::findNearestIndex(ref_path, target_pose.position); - return std::abs(autoware_universe_utils::calcYawDeviation(ref_path[nearest_index], target_pose)); + autoware::motion_utils::findNearestIndex(ref_path, target_pose.position); + return std::abs(autoware::universe_utils::calcYawDeviation(ref_path[nearest_index], target_pose)); } std::vector calcPredictedPathDeviation( @@ -56,9 +56,9 @@ std::vector calcPredictedPathDeviation( return {}; } for (const Pose & p : pred_path.path) { - const size_t nearest_index = autoware_motion_utils::findNearestIndex(ref_path, p.position); + const size_t nearest_index = autoware::motion_utils::findNearestIndex(ref_path, p.position); deviations.push_back( - autoware_universe_utils::calcDistance2d(ref_path[nearest_index].position, p.position)); + autoware::universe_utils::calcDistance2d(ref_path[nearest_index].position, p.position)); } return deviations; diff --git a/evaluator/perception_online_evaluator/src/metrics_calculator.cpp b/evaluator/perception_online_evaluator/src/metrics_calculator.cpp index 8732de1fe3393..212af8711a62e 100644 --- a/evaluator/perception_online_evaluator/src/metrics_calculator.cpp +++ b/evaluator/perception_online_evaluator/src/metrics_calculator.cpp @@ -23,7 +23,7 @@ namespace perception_diagnostics { -using autoware_universe_utils::inverseTransformPoint; +using autoware::universe_utils::inverseTransformPoint; using object_recognition_utils::convertLabelToString; std::optional MetricsCalculator::calculate(const Metric & metric) const @@ -238,7 +238,7 @@ MetricStatMap MetricsCalculator::calcLateralDeviationMetrics( Stat stat{}; const auto stamp = rclcpp::Time(objects.header.stamp); for (const auto & object : objects.objects) { - const auto uuid = autoware_universe_utils::toHexString(object.object_id); + const auto uuid = autoware::universe_utils::toHexString(object.object_id); if (!hasPassedTime(uuid, stamp)) { continue; } @@ -267,7 +267,7 @@ MetricStatMap MetricsCalculator::calcYawDeviationMetrics( Stat stat{}; const auto stamp = rclcpp::Time(objects.header.stamp); for (const auto & object : objects.objects) { - const auto uuid = autoware_universe_utils::toHexString(object.object_id); + const auto uuid = autoware::universe_utils::toHexString(object.object_id); if (!hasPassedTime(uuid, stamp)) { continue; } @@ -326,7 +326,7 @@ PredictedPathDeviationMetrics MetricsCalculator::calcPredictedPathDeviationMetri const auto stamp = objects.header.stamp; for (const auto & object : objects.objects) { - const auto uuid = autoware_universe_utils::toHexString(object.object_id); + const auto uuid = autoware::universe_utils::toHexString(object.object_id); const auto predicted_paths = object.kinematics.predicted_paths; for (size_t i = 0; i < predicted_paths.size(); i++) { const auto predicted_path = predicted_paths[i]; @@ -350,7 +350,7 @@ PredictedPathDeviationMetrics MetricsCalculator::calcPredictedPathDeviationMetri const auto history_pose = history_object.kinematics.initial_pose_with_covariance.pose; const Pose & p = predicted_path.path[j]; const double distance = - autoware_universe_utils::calcDistance2d(p.position, history_pose.position); + autoware::universe_utils::calcDistance2d(p.position, history_pose.position); deviation_map_for_paths[uuid][i].push_back(distance); // Save debug information @@ -424,7 +424,7 @@ MetricStatMap MetricsCalculator::calcYawRateMetrics(const ClassObjectsMap & clas const auto stamp = rclcpp::Time(objects.header.stamp); for (const auto & object : objects.objects) { - const auto uuid = autoware_universe_utils::toHexString(object.object_id); + const auto uuid = autoware::universe_utils::toHexString(object.object_id); if (!hasPassedTime(uuid, stamp)) { continue; } @@ -444,7 +444,7 @@ MetricStatMap MetricsCalculator::calcYawRateMetrics(const ClassObjectsMap & clas tf2::getYaw(previous_object.kinematics.initial_pose_with_covariance.pose.orientation); // Calculate the absolute difference between current_yaw and previous_yaw const double yaw_diff = - std::abs(autoware_universe_utils::normalizeRadian(current_yaw - previous_yaw)); + std::abs(autoware::universe_utils::normalizeRadian(current_yaw - previous_yaw)); // The yaw difference is flipped if the angle is larger than 90 degrees const double yaw_diff_flip_fixed = std::min(yaw_diff, M_PI - yaw_diff); const double yaw_rate = yaw_diff_flip_fixed / time_diff; @@ -494,7 +494,7 @@ void MetricsCalculator::setPredictedObjects( // store objects to check deviation { - using autoware_universe_utils::toHexString; + using autoware::universe_utils::toHexString; for (const auto & object : objects.objects) { std::string uuid = toHexString(object.object_id); updateObjects(uuid, current_stamp_, object); @@ -557,7 +557,7 @@ void MetricsCalculator::updateHistoryPath() const auto current_pose = object.kinematics.initial_pose_with_covariance.pose; const auto prev_pose = prev_object.kinematics.initial_pose_with_covariance.pose; const auto velocity = - autoware_universe_utils::calcDistance2d(current_pose.position, prev_pose.position) / + autoware::universe_utils::calcDistance2d(current_pose.position, prev_pose.position) / time_diff; if (velocity < parameters_->stopped_velocity_threshold) { continue; @@ -603,9 +603,9 @@ std::vector MetricsCalculator::generateHistoryPathWithPrev( std::vector MetricsCalculator::averageFilterPath( const std::vector & path, const size_t window_size) const { - using autoware_universe_utils::calcAzimuthAngle; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::createQuaternionFromYaw; + using autoware::universe_utils::calcAzimuthAngle; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::createQuaternionFromYaw; std::vector filtered_path; filtered_path.reserve(path.size()); // Reserve space to avoid reallocations @@ -645,7 +645,7 @@ std::vector MetricsCalculator::averageFilterPath( if (i > 0) { const double azimuth = calcAzimuthAngle(path.at(i - 1).position, path.at(i).position); const double yaw = tf2::getYaw(path.at(i).orientation); - if (autoware_universe_utils::normalizeRadian(yaw - azimuth) > M_PI_2) { + if (autoware::universe_utils::normalizeRadian(yaw - azimuth) > M_PI_2) { continue; } } @@ -662,7 +662,7 @@ std::vector MetricsCalculator::averageFilterPath( const double azimuth_to_prev = calcAzimuthAngle((it - 2)->position, (it - 1)->position); const double azimuth_to_current = calcAzimuthAngle((it - 1)->position, it->position); if ( - std::abs(autoware_universe_utils::normalizeRadian(azimuth_to_prev - azimuth_to_current)) > + std::abs(autoware::universe_utils::normalizeRadian(azimuth_to_prev - azimuth_to_current)) > M_PI_2) { it = filtered_path.erase(it); continue; diff --git a/evaluator/perception_online_evaluator/src/perception_online_evaluator_node.cpp b/evaluator/perception_online_evaluator/src/perception_online_evaluator_node.cpp index 56b79eb3acf62..63d635af4ffdf 100644 --- a/evaluator/perception_online_evaluator/src/perception_online_evaluator_node.cpp +++ b/evaluator/perception_online_evaluator/src/perception_online_evaluator_node.cpp @@ -156,7 +156,7 @@ void PerceptionOnlineEvaluatorNode::publishDebugMarker() for (auto & marker : added.markers) { marker.lifetime = rclcpp::Duration::from_seconds(1.5); } - autoware_universe_utils::appendMarkerArray(added, &marker); + autoware::universe_utils::appendMarkerArray(added, &marker); }; const auto & p = parameters_->debug_marker_parameters; @@ -236,7 +236,7 @@ void PerceptionOnlineEvaluatorNode::publishDebugMarker() rcl_interfaces::msg::SetParametersResult PerceptionOnlineEvaluatorNode::onParameter( const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; auto & p = parameters_; @@ -305,8 +305,8 @@ rcl_interfaces::msg::SetParametersResult PerceptionOnlineEvaluatorNode::onParame void PerceptionOnlineEvaluatorNode::initParameter() { - using autoware_universe_utils::getOrDeclareParameter; - using autoware_universe_utils::updateParam; + using autoware::universe_utils::getOrDeclareParameter; + using autoware::universe_utils::updateParam; auto & p = parameters_; diff --git a/evaluator/perception_online_evaluator/src/utils/marker_utils.cpp b/evaluator/perception_online_evaluator/src/utils/marker_utils.cpp index 6085ea0b6ef49..a7a697c4efff6 100644 --- a/evaluator/perception_online_evaluator/src/utils/marker_utils.cpp +++ b/evaluator/perception_online_evaluator/src/utils/marker_utils.cpp @@ -28,12 +28,12 @@ namespace marker_utils { -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerOrientation; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerOrientation; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; using std_msgs::msg::ColorRGBA; using visualization_msgs::msg::Marker; @@ -46,13 +46,13 @@ void addFootprintMarker( const double base_to_rear = vehicle_info.rear_overhang_m; marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, base_to_front, -half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, base_to_front, -half_width, 0.0).position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, base_to_front, half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, base_to_front, half_width, 0.0).position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, -base_to_rear, half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, -base_to_rear, half_width, 0.0).position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, -base_to_rear, -half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, -base_to_rear, -half_width, 0.0).position); marker.points.push_back(marker.points.front()); } @@ -167,7 +167,7 @@ std_msgs::msg::ColorRGBA createColorFromString(const std::string & str) const auto r = (hash & 0xFF) / 255.0; const auto g = ((hash >> 8) & 0xFF) / 255.0; const auto b = ((hash >> 16) & 0xFF) / 255.0; - return autoware_universe_utils::createMarkerColor(r, g, b, 0.5); + return autoware::universe_utils::createMarkerColor(r, g, b, 0.5); } MarkerArray createObjectPolygonMarkerArray( @@ -182,7 +182,7 @@ MarkerArray createObjectPolygonMarkerArray( const double z = object.kinematics.initial_pose_with_covariance.pose.position.z; const double height = object.shape.dimensions.z; - const auto polygon = autoware_universe_utils::toPolygon2d( + const auto polygon = autoware::universe_utils::toPolygon2d( object.kinematics.initial_pose_with_covariance.pose, object.shape); for (const auto & p : polygon.outer()) { marker.points.push_back(createPoint(p.x(), p.y(), z - height / 2)); diff --git a/evaluator/perception_online_evaluator/test/test_perception_online_evaluator_node.cpp b/evaluator/perception_online_evaluator/test/test_perception_online_evaluator_node.cpp index a369d36882c9d..e2ab22be2b61b 100644 --- a/evaluator/perception_online_evaluator/test/test_perception_online_evaluator_node.cpp +++ b/evaluator/perception_online_evaluator/test/test_perception_online_evaluator_node.cpp @@ -43,7 +43,7 @@ using ObjectClassification = autoware_perception_msgs::msg::ObjectClassification using nav_msgs::msg::Odometry; using TFMessage = tf2_msgs::msg::TFMessage; -using autoware_universe_utils::generateUUID; +using autoware::universe_utils::generateUUID; constexpr double epsilon = 1e-6; diff --git a/launch/tier4_control_launch/launch/control.launch.py b/launch/tier4_control_launch/launch/control.launch.py index a61f29014dcce..5843ec98d7068 100644 --- a/launch/tier4_control_launch/launch/control.launch.py +++ b/launch/tier4_control_launch/launch/control.launch.py @@ -148,6 +148,7 @@ def launch_setup(context, *args, **kwargs): ("~/input/velocity", "/vehicle/status/velocity_status"), ("~/input/imu", "/sensing/imu/imu_data"), ("~/input/odometry", "/localization/kinematic_state"), + ("~/input/objects", "/perception/object_recognition/objects"), ( "~/input/predicted_trajectory", "/control/trajectory_follower/lateral/predicted_trajectory", @@ -375,13 +376,16 @@ def launch_setup(context, *args, **kwargs): # control evaluator control_evaluator_component = ComposableNode( package="autoware_control_evaluator", - plugin="control_diagnostics::controlEvaluatorNode", + plugin="control_diagnostics::ControlEvaluatorNode", name="control_evaluator", remappings=[ ("~/input/diagnostics", "/diagnostics"), ("~/input/odometry", "/localization/kinematic_state"), + ("~/input/acceleration", "/localization/acceleration"), ("~/input/trajectory", "/planning/scenario_planning/trajectory"), ("~/metrics", "/diagnostic/control_evaluator/metrics"), + ("~/input/vector_map", "/map/vector_map"), + ("~/input/route", "/planning/mission_planning/route"), ], ) @@ -443,7 +447,7 @@ def launch_setup(context, *args, **kwargs): smart_mpc_trajectory_follower = Node( package="autoware_smart_mpc_trajectory_follower", executable="pympc_trajectory_follower.py", - name="pympc_trajectory_follower", + name="controller_node_exe", ) if trajectory_follower_mode == "trajectory_follower_node": return [group, control_validator_group] diff --git a/launch/tier4_localization_launch/launch/pose_twist_fusion_filter/pose_twist_fusion_filter.launch.xml b/launch/tier4_localization_launch/launch/pose_twist_fusion_filter/pose_twist_fusion_filter.launch.xml index bdea584bd58ae..b39346de8f8da 100644 --- a/launch/tier4_localization_launch/launch/pose_twist_fusion_filter/pose_twist_fusion_filter.launch.xml +++ b/launch/tier4_localization_launch/launch/pose_twist_fusion_filter/pose_twist_fusion_filter.launch.xml @@ -17,7 +17,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/detection.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/detection.launch.xml index 754d07c6d99bf..373e343ad64fa 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/detection.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/detection.launch.xml @@ -1,271 +1,386 @@ - - + + + + + + + + + + + + + - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + - - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + - - + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - + + + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/camera_lidar_detector.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/camera_lidar_detector.launch.xml index fe0ba0e614e60..4c288aa632182 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/camera_lidar_detector.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/camera_lidar_detector.launch.xml @@ -1,106 +1,97 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - + @@ -111,7 +102,7 @@ - + @@ -122,32 +113,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -178,32 +169,32 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - @@ -229,7 +220,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_dnn_detector.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_dnn_detector.launch.xml index 274b39be681b8..98e8ec7c8ed4b 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_dnn_detector.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_dnn_detector.launch.xml @@ -1,17 +1,19 @@ - - - + + + + + @@ -20,14 +22,14 @@ - + - + @@ -40,7 +42,7 @@ - + @@ -48,7 +50,7 @@ - + @@ -76,7 +78,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_rule_detector.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_rule_detector.launch.xml index e78823429195f..38ee946201f7e 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_rule_detector.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/lidar_rule_detector.launch.xml @@ -1,32 +1,22 @@ - - - - - - - - - - - - - - - + + + + + - + - + @@ -41,7 +31,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/tracker_based_detector.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/tracker_based_detector.launch.xml index 0efe7444fcba5..b85d4b02847b3 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/detector/tracker_based_detector.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/detector/tracker_based_detector.launch.xml @@ -1,10 +1,12 @@ + + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_filter.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_filter.launch.xml index 7047aec77c660..d7bbcb01472eb 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_filter.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_filter.launch.xml @@ -1,11 +1,11 @@ - + - - + + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_validator.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_validator.launch.xml index b3704f130232a..9a09ad2871e85 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_validator.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/filter/object_validator.launch.xml @@ -1,12 +1,12 @@ - + - - - + + + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/filter/radar_filter.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/filter/radar_filter.launch.xml index d837505649cf1..fe7ab70e9331e 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/filter/radar_filter.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/filter/radar_filter.launch.xml @@ -4,12 +4,12 @@ - + - - + + @@ -36,7 +36,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_merger.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_merger.launch.xml index 5bcfe49643dce..d4a9e40f29d97 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_merger.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_merger.launch.xml @@ -8,20 +8,45 @@ - + + - - - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -51,31 +76,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -83,7 +108,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_radar_merger.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_radar_merger.launch.xml index 07ab78cd37f72..6ea745a8bae2c 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_radar_merger.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/merger/camera_lidar_radar_merger.launch.xml @@ -11,27 +11,52 @@ - + + - - - + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -74,31 +99,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -106,7 +131,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/detection/merger/lidar_merger.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/detection/merger/lidar_merger.launch.xml index f0ce19db6c342..c82de41a28b50 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/detection/merger/lidar_merger.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/detection/merger/lidar_merger.launch.xml @@ -8,21 +8,21 @@ - + + - - - + + - - + + - + @@ -46,7 +46,7 @@ - + diff --git a/launch/tier4_perception_launch/launch/object_recognition/tracking/tracking.launch.xml b/launch/tier4_perception_launch/launch/object_recognition/tracking/tracking.launch.xml index b8172daa616fa..1975ad2d15eb9 100644 --- a/launch/tier4_perception_launch/launch/object_recognition/tracking/tracking.launch.xml +++ b/launch/tier4_perception_launch/launch/object_recognition/tracking/tracking.launch.xml @@ -1,5 +1,8 @@ + + + @@ -11,52 +14,87 @@ + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/launch/tier4_perception_launch/launch/obstacle_segmentation/ground_segmentation/ground_segmentation.launch.py b/launch/tier4_perception_launch/launch/obstacle_segmentation/ground_segmentation/ground_segmentation.launch.py index 25fb1e6ac6c4d..684ecee757aad 100644 --- a/launch/tier4_perception_launch/launch/obstacle_segmentation/ground_segmentation/ground_segmentation.launch.py +++ b/launch/tier4_perception_launch/launch/obstacle_segmentation/ground_segmentation/ground_segmentation.launch.py @@ -82,6 +82,12 @@ def create_additional_pipeline(self, lidar_name): "margin_min_z" ] ) + # Get the plugin name from the full plugin path + ground_segmentation_plugin_name = self.ground_segmentation_param[ + f"{lidar_name}_ground_filter" + ]["plugin"] + ground_segmentation_plugin_name = ground_segmentation_plugin_name.split("::")[-1] + components = [] components.append( ComposableNode( @@ -110,7 +116,7 @@ def create_additional_pipeline(self, lidar_name): components.append( ComposableNode( package="ground_segmentation", - plugin=self.ground_segmentation_param[f"{lidar_name}_ground_filter"]["plugin"], + plugin="autoware::ground_segmentation::" + ground_segmentation_plugin_name, name=f"{lidar_name}_ground_filter", remappings=[ ("input", f"{lidar_name}/range_cropped/pointcloud"), @@ -203,7 +209,7 @@ def create_ransac_pipeline(self): components.append( ComposableNode( package="ground_segmentation", - plugin="ground_segmentation::RANSACGroundFilterComponent", + plugin="autoware::ground_segmentation::" + "RANSACGroundFilterComponent", name="ransac_ground_filter", namespace="plane_fitting", remappings=[ @@ -228,6 +234,12 @@ def create_common_pipeline(self, input_topic, output_topic): self.vehicle_info["min_height_offset"] + self.ground_segmentation_param["common_crop_box_filter"]["parameters"]["margin_min_z"] ) + # Get the plugin name from the full plugin path + ground_segmentation_plugin_name = self.ground_segmentation_param["common_ground_filter"][ + "plugin" + ] + ground_segmentation_plugin_name = ground_segmentation_plugin_name.split("::")[-1] + components = [] components.append( ComposableNode( @@ -256,7 +268,7 @@ def create_common_pipeline(self, input_topic, output_topic): components.append( ComposableNode( package="ground_segmentation", - plugin=self.ground_segmentation_param["common_ground_filter"]["plugin"], + plugin="autoware::ground_segmentation::" + ground_segmentation_plugin_name, name="common_ground_filter", remappings=[ ("input", "range_cropped/pointcloud"), diff --git a/launch/tier4_perception_launch/launch/perception.launch.xml b/launch/tier4_perception_launch/launch/perception.launch.xml index dd80ab5b2cde7..5d8d7563e7a7c 100644 --- a/launch/tier4_perception_launch/launch/perception.launch.xml +++ b/launch/tier4_perception_launch/launch/perception.launch.xml @@ -77,6 +77,7 @@ + - - + + @@ -115,12 +116,16 @@ - + + + + + @@ -186,25 +191,36 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -218,11 +234,14 @@ + + + - + @@ -240,7 +259,9 @@ + + diff --git a/launch/tier4_perception_launch/package.xml b/launch/tier4_perception_launch/package.xml index 6ec706a4aad32..57d4b209efeef 100644 --- a/launch/tier4_perception_launch/package.xml +++ b/launch/tier4_perception_launch/package.xml @@ -19,6 +19,7 @@ detected_object_feature_remover detected_object_validation detection_by_tracker + elevation_map_loader euclidean_cluster ground_segmentation image_projection_based_fusion diff --git a/launch/tier4_planning_launch/launch/scenario_planning/lane_driving/motion_planning/motion_planning.launch.xml b/launch/tier4_planning_launch/launch/scenario_planning/lane_driving/motion_planning/motion_planning.launch.xml index ae43c2d81efb6..d0c34ea01b2c6 100644 --- a/launch/tier4_planning_launch/launch/scenario_planning/lane_driving/motion_planning/motion_planning.launch.xml +++ b/launch/tier4_planning_launch/launch/scenario_planning/lane_driving/motion_planning/motion_planning.launch.xml @@ -160,6 +160,7 @@ + diff --git a/launch/tier4_planning_launch/package.xml b/launch/tier4_planning_launch/package.xml index 1c65c975bc5bf..2b80c2c6ea32e 100644 --- a/launch/tier4_planning_launch/package.xml +++ b/launch/tier4_planning_launch/package.xml @@ -65,6 +65,7 @@ autoware_freespace_planner autoware_mission_planner autoware_obstacle_cruise_planner + autoware_obstacle_stop_planner autoware_path_optimizer autoware_planning_evaluator autoware_planning_topic_converter @@ -74,7 +75,6 @@ autoware_surround_obstacle_checker autoware_velocity_smoother glog_component - obstacle_stop_planner ament_lint_auto autoware_lint_common diff --git a/launch/tier4_simulator_launch/launch/simulator.launch.xml b/launch/tier4_simulator_launch/launch/simulator.launch.xml index 97b07410d108a..7dc33e0e82ea9 100644 --- a/launch/tier4_simulator_launch/launch/simulator.launch.xml +++ b/launch/tier4_simulator_launch/launch/simulator.launch.xml @@ -78,6 +78,7 @@ + diff --git a/launch/tier4_system_launch/launch/system.launch.xml b/launch/tier4_system_launch/launch/system.launch.xml index 6253dce864ddf..55c4403b65923 100644 --- a/launch/tier4_system_launch/launch/system.launch.xml +++ b/launch/tier4_system_launch/launch/system.launch.xml @@ -26,7 +26,7 @@ - + diff --git a/localization/autoware_landmark_based_localizer/README.md b/localization/autoware_landmark_based_localizer/README.md index 49588a19ac620..ad4f1f5748f59 100644 --- a/localization/autoware_landmark_based_localizer/README.md +++ b/localization/autoware_landmark_based_localizer/README.md @@ -43,7 +43,7 @@ So, if the 4 vertices are considered as forming a tetrahedron and its volume exc ## Map specifications -See +See ## About `consider_orientation` diff --git a/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/README.md b/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/README.md index 37596ee9820b9..14501c689dbe6 100644 --- a/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/README.md +++ b/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/README.md @@ -46,7 +46,7 @@ ros2 launch autoware_launch ... \ ### Rosbag -#### [Sample rosbag and map (AWSIM data)](https://drive.google.com/file/d/1uMVwQQFcfs8JOqfoA1FqfH_fLPwQ71jK/view) +#### [Sample rosbag and map (AWSIM data)](https://drive.google.com/file/d/1ZPsfDvOXFrMxtx7fb1W5sOXdAK1e71hY/view) This data is simulated data created by [AWSIM](https://tier4.github.io/AWSIM/). Essentially, AR tag-based self-localization is not intended for such public road driving, but for driving in a smaller area, so the max driving speed is set at 15 km/h. @@ -55,7 +55,7 @@ It is a known problem that the timing of when each AR tag begins to be detected ![sample_result_in_awsim](./doc_image/sample_result_in_awsim.png) -#### [Sample rosbag and map (Real world data)](https://drive.google.com/file/d/1wiCQjyjRnYbb0dg8G6mRecdSGh8tv3zR/view) +#### [Sample rosbag and map (Real world data)](https://drive.google.com/file/d/1VQCQ_qiEZpCMI3-z6SNs__zJ-4HJFQjx/view) Please remap the topic names and play it. diff --git a/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/package.xml b/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/package.xml index bf40719d7a5e6..1b2469d108dfb 100644 --- a/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/package.xml +++ b/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/package.xml @@ -19,9 +19,9 @@ ament_index_cpp aruco autoware_landmark_manager + autoware_lanelet2_extension cv_bridge diagnostic_msgs - lanelet2_extension localization_util rclcpp rclcpp_components diff --git a/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/src/ar_tag_based_localizer.cpp b/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/src/ar_tag_based_localizer.cpp index f8781ada3d38d..cef3debf22a4f 100644 --- a/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/src/ar_tag_based_localizer.cpp +++ b/localization/autoware_landmark_based_localizer/autoware_ar_tag_based_localizer/src/ar_tag_based_localizer.cpp @@ -51,7 +51,11 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif #include #include @@ -185,7 +189,7 @@ void ArTagBasedLocalizer::image_callback(const Image::ConstSharedPtr & msg) pose_array_msg.header.frame_id = "map"; for (const Landmark & landmark : landmarks) { const Pose detected_marker_on_map = - autoware_universe_utils::transformPose(landmark.pose, self_pose); + autoware::universe_utils::transformPose(landmark.pose, self_pose); pose_array_msg.poses.push_back(detected_marker_on_map); } detected_tag_pose_pub_->publish(pose_array_msg); @@ -194,7 +198,7 @@ void ArTagBasedLocalizer::image_callback(const Image::ConstSharedPtr & msg) // calc new_self_pose const Pose new_self_pose = landmark_manager_.calculate_new_self_pose(landmarks, self_pose, consider_orientation_); - const Pose diff_pose = autoware_universe_utils::inverseTransformPose(new_self_pose, self_pose); + const Pose diff_pose = autoware::universe_utils::inverseTransformPose(new_self_pose, self_pose); const double distance = std::hypot(diff_pose.position.x, diff_pose.position.y, diff_pose.position.z); diff --git a/localization/autoware_landmark_based_localizer/autoware_landmark_manager/include/autoware/landmark_manager/landmark_manager.hpp b/localization/autoware_landmark_based_localizer/autoware_landmark_manager/include/autoware/landmark_manager/landmark_manager.hpp index 3fc6505e72c31..99fe623290ee5 100644 --- a/localization/autoware_landmark_based_localizer/autoware_landmark_manager/include/autoware/landmark_manager/landmark_manager.hpp +++ b/localization/autoware_landmark_based_localizer/autoware_landmark_manager/include/autoware/landmark_manager/landmark_manager.hpp @@ -15,7 +15,7 @@ #ifndef AUTOWARE__LANDMARK_MANAGER__LANDMARK_MANAGER_HPP_ #define AUTOWARE__LANDMARK_MANAGER__LANDMARK_MANAGER_HPP_ -#include "lanelet2_extension/localization/landmark.hpp" +#include "autoware_lanelet2_extension/localization/landmark.hpp" #include diff --git a/localization/autoware_landmark_based_localizer/autoware_landmark_manager/package.xml b/localization/autoware_landmark_based_localizer/autoware_landmark_manager/package.xml index 1471b5182def8..4880cf88bec5d 100644 --- a/localization/autoware_landmark_based_localizer/autoware_landmark_manager/package.xml +++ b/localization/autoware_landmark_based_localizer/autoware_landmark_manager/package.xml @@ -18,9 +18,9 @@ eigen + autoware_lanelet2_extension autoware_map_msgs geometry_msgs - lanelet2_extension localization_util rclcpp tf2_eigen diff --git a/localization/autoware_landmark_based_localizer/autoware_landmark_manager/src/landmark_manager.cpp b/localization/autoware_landmark_based_localizer/autoware_landmark_manager/src/landmark_manager.cpp index b2c4a7dd6298a..488f250e325d2 100644 --- a/localization/autoware_landmark_based_localizer/autoware_landmark_manager/src/landmark_manager.cpp +++ b/localization/autoware_landmark_based_localizer/autoware_landmark_manager/src/landmark_manager.cpp @@ -15,7 +15,7 @@ #include "autoware/landmark_manager/landmark_manager.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" -#include "lanelet2_extension/utility/message_conversion.hpp" +#include "autoware_lanelet2_extension/utility/message_conversion.hpp" #include "localization_util/util_func.hpp" #include @@ -161,7 +161,7 @@ geometry_msgs::msg::Pose LandmarkManager::calculate_new_self_pose( // convert base_link to map const Pose detected_landmark_on_map = - autoware_universe_utils::transformPose(detected_landmark_on_base_link, self_pose); + autoware::universe_utils::transformPose(detected_landmark_on_base_link, self_pose); // match to map if (landmarks_map_.count(landmark.id) == 0) { @@ -171,7 +171,7 @@ geometry_msgs::msg::Pose LandmarkManager::calculate_new_self_pose( // check all poses for (const Pose mapped_landmark_on_map : landmarks_map_.at(landmark.id)) { // check distance - const double curr_distance = autoware_universe_utils::calcDistance3d( + const double curr_distance = autoware::universe_utils::calcDistance3d( mapped_landmark_on_map.position, detected_landmark_on_map.position); if (curr_distance > min_distance) { continue; diff --git a/localization/stop_filter/CMakeLists.txt b/localization/autoware_stop_filter/CMakeLists.txt similarity index 87% rename from localization/stop_filter/CMakeLists.txt rename to localization/autoware_stop_filter/CMakeLists.txt index 4776a1f4967b2..f33ab41169cb3 100644 --- a/localization/stop_filter/CMakeLists.txt +++ b/localization/autoware_stop_filter/CMakeLists.txt @@ -1,11 +1,12 @@ cmake_minimum_required(VERSION 3.14) -project(stop_filter) +project(autoware_stop_filter) find_package(autoware_cmake REQUIRED) autoware_package() ament_auto_add_library(${PROJECT_NAME} SHARED src/stop_filter.cpp + src/stop_filter.hpp ) rclcpp_components_register_node(${PROJECT_NAME} diff --git a/localization/stop_filter/README.md b/localization/autoware_stop_filter/README.md similarity index 100% rename from localization/stop_filter/README.md rename to localization/autoware_stop_filter/README.md diff --git a/localization/stop_filter/config/stop_filter.param.yaml b/localization/autoware_stop_filter/config/stop_filter.param.yaml similarity index 100% rename from localization/stop_filter/config/stop_filter.param.yaml rename to localization/autoware_stop_filter/config/stop_filter.param.yaml diff --git a/localization/stop_filter/launch/stop_filter.launch.xml b/localization/autoware_stop_filter/launch/stop_filter.launch.xml similarity index 69% rename from localization/stop_filter/launch/stop_filter.launch.xml rename to localization/autoware_stop_filter/launch/stop_filter.launch.xml index c53b37efc9954..ff7b6cafe6e8f 100644 --- a/localization/stop_filter/launch/stop_filter.launch.xml +++ b/localization/autoware_stop_filter/launch/stop_filter.launch.xml @@ -1,9 +1,9 @@ - + - + diff --git a/localization/stop_filter/package.xml b/localization/autoware_stop_filter/package.xml similarity index 97% rename from localization/stop_filter/package.xml rename to localization/autoware_stop_filter/package.xml index 2e6d5c4f8bbe1..dfdbd5f182983 100644 --- a/localization/stop_filter/package.xml +++ b/localization/autoware_stop_filter/package.xml @@ -1,7 +1,7 @@ - stop_filter + autoware_stop_filter 0.0.0 The stop filter package Koji Minoda diff --git a/localization/stop_filter/schema/stop_filter.schema.json b/localization/autoware_stop_filter/schema/stop_filter.schema.json similarity index 100% rename from localization/stop_filter/schema/stop_filter.schema.json rename to localization/autoware_stop_filter/schema/stop_filter.schema.json diff --git a/localization/stop_filter/src/stop_filter.cpp b/localization/autoware_stop_filter/src/stop_filter.cpp similarity index 92% rename from localization/stop_filter/src/stop_filter.cpp rename to localization/autoware_stop_filter/src/stop_filter.cpp index c1c4de2fb6b6e..f5e29419105d4 100644 --- a/localization/stop_filter/src/stop_filter.cpp +++ b/localization/autoware_stop_filter/src/stop_filter.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "stop_filter/stop_filter.hpp" +#include "stop_filter.hpp" #include @@ -24,6 +24,8 @@ using std::placeholders::_1; +namespace autoware::stop_filter +{ StopFilter::StopFilter(const rclcpp::NodeOptions & node_options) : rclcpp::Node("stop_filter", node_options) { @@ -57,6 +59,7 @@ void StopFilter::callback_odometry(const nav_msgs::msg::Odometry::SharedPtr msg) pub_stop_flag_->publish(stop_flag_msg); pub_odom_->publish(odom_msg); } +} // namespace autoware::stop_filter #include -RCLCPP_COMPONENTS_REGISTER_NODE(StopFilter) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::stop_filter::StopFilter) diff --git a/localization/stop_filter/include/stop_filter/stop_filter.hpp b/localization/autoware_stop_filter/src/stop_filter.hpp similarity index 91% rename from localization/stop_filter/include/stop_filter/stop_filter.hpp rename to localization/autoware_stop_filter/src/stop_filter.hpp index e8428788820b2..ce6e67f0b7265 100644 --- a/localization/stop_filter/include/stop_filter/stop_filter.hpp +++ b/localization/autoware_stop_filter/src/stop_filter.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef STOP_FILTER__STOP_FILTER_HPP_ -#define STOP_FILTER__STOP_FILTER_HPP_ +#ifndef STOP_FILTER_HPP_ +#define STOP_FILTER_HPP_ #include @@ -34,6 +34,8 @@ #include #include +namespace autoware::stop_filter +{ class StopFilter : public rclcpp::Node { public: @@ -54,4 +56,5 @@ class StopFilter : public rclcpp::Node */ void callback_odometry(const nav_msgs::msg::Odometry::SharedPtr msg); }; -#endif // STOP_FILTER__STOP_FILTER_HPP_ +} // namespace autoware::stop_filter +#endif // STOP_FILTER_HPP_ diff --git a/localization/ekf_localizer/README.md b/localization/ekf_localizer/README.md index b91282015732e..3b417b12bc6e9 100644 --- a/localization/ekf_localizer/README.md +++ b/localization/ekf_localizer/README.md @@ -186,10 +186,12 @@ Note that, although the dimension gets larger since the analytical expansion can - The number of consecutive no measurement update via the Pose/Twist topic exceeds the `pose_no_update_count_threshold_warn`/`twist_no_update_count_threshold_warn`. - The timestamp of the Pose/Twist topic is beyond the delay compensation range. - The Pose/Twist topic is beyond the range of Mahalanobis distance for covariance estimation. +- The covariance ellipse is bigger than threshold `warn_ellipse_size` for long axis or `warn_ellipse_size_lateral_direction` for lateral_direction. ### The conditions that result in an ERROR state - The number of consecutive no measurement update via the Pose/Twist topic exceeds the `pose_no_update_count_threshold_error`/`twist_no_update_count_threshold_error`. +- The covariance ellipse is bigger than threshold `error_ellipse_size` for long axis or `error_ellipse_size_lateral_direction` for lateral_direction. ## Known issues diff --git a/localization/ekf_localizer/config/ekf_localizer.param.yaml b/localization/ekf_localizer/config/ekf_localizer.param.yaml index 19bfd2d498b68..4a7696ec9e65e 100644 --- a/localization/ekf_localizer/config/ekf_localizer.param.yaml +++ b/localization/ekf_localizer/config/ekf_localizer.param.yaml @@ -39,6 +39,11 @@ pose_no_update_count_threshold_error: 100 twist_no_update_count_threshold_warn: 50 twist_no_update_count_threshold_error: 100 + ellipse_scale: 3.0 + error_ellipse_size: 1.5 + warn_ellipse_size: 1.2 + error_ellipse_size_lateral_direction: 0.3 + warn_ellipse_size_lateral_direction: 0.25 misc: # for velocity measurement limitation (Set 0.0 if you want to ignore) diff --git a/localization/ekf_localizer/include/ekf_localizer/diagnostics.hpp b/localization/ekf_localizer/include/ekf_localizer/diagnostics.hpp index 4c92b2947642b..8815a1758de01 100644 --- a/localization/ekf_localizer/include/ekf_localizer/diagnostics.hpp +++ b/localization/ekf_localizer/include/ekf_localizer/diagnostics.hpp @@ -33,6 +33,9 @@ diagnostic_msgs::msg::DiagnosticStatus check_measurement_delay_gate( diagnostic_msgs::msg::DiagnosticStatus check_measurement_mahalanobis_gate( const std::string & measurement_type, const bool is_passed_mahalanobis_gate, const double mahalanobis_distance, const double mahalanobis_distance_threshold); +diagnostic_msgs::msg::DiagnosticStatus check_covariance_ellipse( + const std::string & name, const double curr_size, const double warn_threshold, + const double error_threshold); diagnostic_msgs::msg::DiagnosticStatus merge_diagnostic_status( const std::vector & stat_array); diff --git a/localization/ekf_localizer/include/ekf_localizer/ekf_localizer.hpp b/localization/ekf_localizer/include/ekf_localizer/ekf_localizer.hpp index ce1d7a95178ee..ada9024faceee 100644 --- a/localization/ekf_localizer/include/ekf_localizer/ekf_localizer.hpp +++ b/localization/ekf_localizer/include/ekf_localizer/ekf_localizer.hpp @@ -142,7 +142,7 @@ class EKFLocalizer : public rclcpp::Node std::shared_ptr tf_br_; //!< @brief logger configure module - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; //!< @brief extended kalman filter instance. std::unique_ptr ekf_module_; @@ -216,7 +216,8 @@ class EKFLocalizer : public rclcpp::Node /** * @brief publish diagnostics message */ - void publish_diagnostics(const rclcpp::Time & current_time); + void publish_diagnostics( + const geometry_msgs::msg::PoseStamped & current_ekf_pose, const rclcpp::Time & current_time); /** * @brief update simple 1d filter @@ -236,7 +237,7 @@ class EKFLocalizer : public rclcpp::Node const std_srvs::srv::SetBool::Request::SharedPtr req, std_srvs::srv::SetBool::Response::SharedPtr res); - autoware_universe_utils::StopWatch stop_watch_; + autoware::universe_utils::StopWatch stop_watch_; friend class EKFLocalizerTestSuite; // for test code }; diff --git a/localization/ekf_localizer/include/ekf_localizer/hyper_parameters.hpp b/localization/ekf_localizer/include/ekf_localizer/hyper_parameters.hpp index 8d76102e5d64d..7c3c03c83b778 100644 --- a/localization/ekf_localizer/include/ekf_localizer/hyper_parameters.hpp +++ b/localization/ekf_localizer/include/ekf_localizer/hyper_parameters.hpp @@ -57,6 +57,13 @@ class HyperParameters node->declare_parameter("diagnostics.twist_no_update_count_threshold_warn")), twist_no_update_count_threshold_error( node->declare_parameter("diagnostics.twist_no_update_count_threshold_error")), + ellipse_scale(node->declare_parameter("diagnostics.ellipse_scale")), + error_ellipse_size(node->declare_parameter("diagnostics.error_ellipse_size")), + warn_ellipse_size(node->declare_parameter("diagnostics.warn_ellipse_size")), + error_ellipse_size_lateral_direction( + node->declare_parameter("diagnostics.error_ellipse_size_lateral_direction")), + warn_ellipse_size_lateral_direction( + node->declare_parameter("diagnostics.warn_ellipse_size_lateral_direction")), threshold_observable_velocity_mps( node->declare_parameter("misc.threshold_observable_velocity_mps")) { @@ -86,6 +93,12 @@ class HyperParameters const size_t pose_no_update_count_threshold_error; const size_t twist_no_update_count_threshold_warn; const size_t twist_no_update_count_threshold_error; + double ellipse_scale; + double error_ellipse_size; + double warn_ellipse_size; + double error_ellipse_size_lateral_direction; + double warn_ellipse_size_lateral_direction; + const double threshold_observable_velocity_mps; }; diff --git a/localization/ekf_localizer/media/ekf_diagnostics.png b/localization/ekf_localizer/media/ekf_diagnostics.png index 16de42ac2d85a..234b2f1e19b6d 100644 Binary files a/localization/ekf_localizer/media/ekf_diagnostics.png and b/localization/ekf_localizer/media/ekf_diagnostics.png differ diff --git a/localization/ekf_localizer/package.xml b/localization/ekf_localizer/package.xml index 07efca6339b98..9c89867025632 100644 --- a/localization/ekf_localizer/package.xml +++ b/localization/ekf_localizer/package.xml @@ -28,6 +28,7 @@ fmt geometry_msgs kalman_filter + localization_util nav_msgs rclcpp rclcpp_components diff --git a/localization/ekf_localizer/schema/sub/diagnostics.sub_schema.json b/localization/ekf_localizer/schema/sub/diagnostics.sub_schema.json index 2e2dca411971e..eda9e7d06f6f4 100644 --- a/localization/ekf_localizer/schema/sub/diagnostics.sub_schema.json +++ b/localization/ekf_localizer/schema/sub/diagnostics.sub_schema.json @@ -24,6 +24,31 @@ "type": "integer", "description": "The threshold at which an ERROR state is triggered due to the Twist Topic update not happening continuously for a certain number of times", "default": 100 + }, + "ellipse_scale": { + "type": "number", + "description": "The scale factor to apply the error ellipse size", + "default": 3.0 + }, + "error_ellipse_size": { + "type": "number", + "description": "The long axis size of the error ellipse to trigger a ERROR state", + "default": 1.5 + }, + "warn_ellipse_size": { + "type": "number", + "description": "The long axis size of the error ellipse to trigger a WARN state", + "default": 1.2 + }, + "error_ellipse_size_lateral_direction": { + "type": "number", + "description": "The lateral direction size of the error ellipse to trigger a ERROR state", + "default": 0.3 + }, + "warn_ellipse_size_lateral_direction": { + "type": "number", + "description": "The lateral direction size of the error ellipse to trigger a WARN state", + "default": 0.25 } }, "required": [ diff --git a/localization/ekf_localizer/src/covariance.cpp b/localization/ekf_localizer/src/covariance.cpp index 4e68de981e196..4655ea8a89855 100644 --- a/localization/ekf_localizer/src/covariance.cpp +++ b/localization/ekf_localizer/src/covariance.cpp @@ -17,7 +17,7 @@ #include "autoware/universe_utils/ros/msg_covariance.hpp" #include "ekf_localizer/state_index.hpp" -using COV_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; +using COV_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; std::array ekf_covariance_to_pose_message_covariance(const Matrix6d & P) { diff --git a/localization/ekf_localizer/src/diagnostics.cpp b/localization/ekf_localizer/src/diagnostics.cpp index ecbeaf8b2445a..902efeafacdb3 100644 --- a/localization/ekf_localizer/src/diagnostics.cpp +++ b/localization/ekf_localizer/src/diagnostics.cpp @@ -139,6 +139,39 @@ diagnostic_msgs::msg::DiagnosticStatus check_measurement_mahalanobis_gate( return stat; } +diagnostic_msgs::msg::DiagnosticStatus check_covariance_ellipse( + const std::string & name, const double curr_size, const double warn_threshold, + const double error_threshold) +{ + diagnostic_msgs::msg::DiagnosticStatus stat; + + diagnostic_msgs::msg::KeyValue key_value; + key_value.key = name + "_size"; + key_value.value = std::to_string(curr_size); + stat.values.push_back(key_value); + + key_value.key = name + "_warn_threshold"; + key_value.value = std::to_string(warn_threshold); + stat.values.push_back(key_value); + + key_value.key = name + "_error_threshold"; + key_value.value = std::to_string(error_threshold); + stat.values.push_back(key_value); + + stat.level = diagnostic_msgs::msg::DiagnosticStatus::OK; + stat.message = "OK"; + if (curr_size >= warn_threshold) { + stat.level = diagnostic_msgs::msg::DiagnosticStatus::WARN; + stat.message = "[WARN]" + name + " is large"; + } + if (curr_size >= error_threshold) { + stat.level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; + stat.message = "[ERROR]" + name + " is large"; + } + + return stat; +} + // The highest level within the stat_array will be reflected in the merged_stat. // When all stat_array entries are 'OK,' the message of merged_stat will be "OK" diagnostic_msgs::msg::DiagnosticStatus merge_diagnostic_status( diff --git a/localization/ekf_localizer/src/ekf_localizer.cpp b/localization/ekf_localizer/src/ekf_localizer.cpp index 5400c0a70b6f3..e541939026d95 100644 --- a/localization/ekf_localizer/src/ekf_localizer.cpp +++ b/localization/ekf_localizer/src/ekf_localizer.cpp @@ -17,6 +17,7 @@ #include "ekf_localizer/diagnostics.hpp" #include "ekf_localizer/string.hpp" #include "ekf_localizer/warning_message.hpp" +#include "localization_util/covariance_ellipse.hpp" #include #include @@ -96,7 +97,7 @@ EKFLocalizer::EKFLocalizer(const rclcpp::NodeOptions & node_options) std::shared_ptr(this, [](auto) {})); ekf_module_ = std::make_unique(warning_, params_); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); z_filter_.set_proc_dev(params_.z_filter_proc_dev); roll_filter_.set_proc_dev(params_.roll_filter_proc_dev); @@ -148,7 +149,7 @@ void EKFLocalizer::timer_callback() if (!is_activated_) { warning_->warn_throttle( "The node is not activated. Provide initial pose to pose_initializer", 2000); - publish_diagnostics(current_time); + publish_diagnostics(geometry_msgs::msg::PoseStamped{}, current_time); return; } @@ -241,7 +242,7 @@ void EKFLocalizer::timer_callback() /* publish ekf result */ publish_estimate_result(current_ekf_pose, current_biased_ekf_pose, current_ekf_twist); - publish_diagnostics(current_time); + publish_diagnostics(current_ekf_pose, current_time); } /* @@ -264,7 +265,7 @@ void EKFLocalizer::timer_tf_callback() const rclcpp::Time current_time = this->now(); geometry_msgs::msg::TransformStamped transform_stamped; - transform_stamped = autoware_universe_utils::pose2transform( + transform_stamped = autoware::universe_utils::pose2transform( ekf_module_->get_current_pose(current_time, z, roll, pitch, false), "base_link"); transform_stamped.header.stamp = current_time; tf_br_->sendTransform(transform_stamped); @@ -390,7 +391,8 @@ void EKFLocalizer::publish_estimate_result( pub_odom_->publish(odometry); } -void EKFLocalizer::publish_diagnostics(const rclcpp::Time & current_time) +void EKFLocalizer::publish_diagnostics( + const geometry_msgs::msg::PoseStamped & current_ekf_pose, const rclcpp::Time & current_time) { std::vector diag_status_array; @@ -418,6 +420,18 @@ void EKFLocalizer::publish_diagnostics(const rclcpp::Time & current_time) diag_status_array.push_back(check_measurement_mahalanobis_gate( "twist", twist_diag_info_.is_passed_mahalanobis_gate, twist_diag_info_.mahalanobis_distance, params_.twist_gate_dist)); + + geometry_msgs::msg::PoseWithCovariance pose_cov; + pose_cov.pose = current_ekf_pose.pose; + pose_cov.covariance = ekf_module_->get_current_pose_covariance(); + const autoware::localization_util::Ellipse ellipse = + autoware::localization_util::calculate_xy_ellipse(pose_cov, params_.ellipse_scale); + diag_status_array.push_back(check_covariance_ellipse( + "cov_ellipse_long_axis", ellipse.long_radius, params_.warn_ellipse_size, + params_.error_ellipse_size)); + diag_status_array.push_back(check_covariance_ellipse( + "cov_ellipse_lateral_direction", ellipse.size_lateral_direction, + params_.warn_ellipse_size_lateral_direction, params_.error_ellipse_size_lateral_direction)); } diagnostic_msgs::msg::DiagnosticStatus diag_merged_status; @@ -436,9 +450,9 @@ void EKFLocalizer::update_simple_1d_filters( { double z = pose.pose.pose.position.z; - const auto rpy = autoware_universe_utils::getRPY(pose.pose.pose.orientation); + const auto rpy = autoware::universe_utils::getRPY(pose.pose.pose.orientation); - using COV_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using COV_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; double z_dev = pose.pose.covariance[COV_IDX::Z_Z] * static_cast(smoothing_step); double roll_dev = pose.pose.covariance[COV_IDX::ROLL_ROLL] * static_cast(smoothing_step); double pitch_dev = @@ -454,9 +468,9 @@ void EKFLocalizer::init_simple_1d_filters( { double z = pose.pose.pose.position.z; - const auto rpy = autoware_universe_utils::getRPY(pose.pose.pose.orientation); + const auto rpy = autoware::universe_utils::getRPY(pose.pose.pose.orientation); - using COV_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using COV_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; double z_dev = pose.pose.covariance[COV_IDX::Z_Z]; double roll_dev = pose.pose.covariance[COV_IDX::ROLL_ROLL]; double pitch_dev = pose.pose.covariance[COV_IDX::PITCH_PITCH]; diff --git a/localization/ekf_localizer/src/ekf_module.cpp b/localization/ekf_localizer/src/ekf_module.cpp index 82e01f6b81065..ba6b7dedca82c 100644 --- a/localization/ekf_localizer/src/ekf_module.cpp +++ b/localization/ekf_localizer/src/ekf_module.cpp @@ -65,7 +65,7 @@ void EKFModule::initialize( x(IDX::VX) = 0.0; x(IDX::WZ) = 0.0; - using COV_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using COV_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; p(IDX::X, IDX::X) = initial_pose.pose.covariance[COV_IDX::X_X]; p(IDX::Y, IDX::Y) = initial_pose.pose.covariance[COV_IDX::Y_Y]; p(IDX::YAW, IDX::YAW) = initial_pose.pose.covariance[COV_IDX::YAW_YAW]; @@ -97,13 +97,13 @@ geometry_msgs::msg::PoseStamped EKFModule::get_current_pose( Pose current_ekf_pose; current_ekf_pose.header.frame_id = params_.pose_frame_id; current_ekf_pose.header.stamp = current_time; - current_ekf_pose.pose.position = autoware_universe_utils::createPoint(x, y, z); + current_ekf_pose.pose.position = autoware::universe_utils::createPoint(x, y, z); if (get_biased_yaw) { current_ekf_pose.pose.orientation = - autoware_universe_utils::createQuaternionFromRPY(roll, pitch, biased_yaw); + autoware::universe_utils::createQuaternionFromRPY(roll, pitch, biased_yaw); } else { current_ekf_pose.pose.orientation = - autoware_universe_utils::createQuaternionFromRPY(roll, pitch, yaw); + autoware::universe_utils::createQuaternionFromRPY(roll, pitch, yaw); } return current_ekf_pose; } @@ -285,7 +285,7 @@ bool EKFModule::measurement_update_pose( geometry_msgs::msg::PoseWithCovarianceStamped EKFModule::compensate_pose_with_z_delay( const PoseWithCovariance & pose, const double delay_time) { - const auto rpy = autoware_universe_utils::getRPY(pose.pose.pose.orientation); + const auto rpy = autoware::universe_utils::getRPY(pose.pose.pose.orientation); const double dz_delay = kalman_filter_.getXelement(IDX::VX) * delay_time * std::sin(-rpy.y); PoseWithCovariance pose_with_z_delay; pose_with_z_delay = pose; diff --git a/localization/ekf_localizer/src/measurement.cpp b/localization/ekf_localizer/src/measurement.cpp index fbc177d602ff0..faf8768938b7d 100644 --- a/localization/ekf_localizer/src/measurement.cpp +++ b/localization/ekf_localizer/src/measurement.cpp @@ -38,7 +38,7 @@ Eigen::Matrix3d pose_measurement_covariance( const std::array & covariance, const size_t smoothing_step) { Eigen::Matrix3d r; - using COV_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using COV_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; r << covariance.at(COV_IDX::X_X), covariance.at(COV_IDX::X_Y), covariance.at(COV_IDX::X_YAW), covariance.at(COV_IDX::Y_X), covariance.at(COV_IDX::Y_Y), covariance.at(COV_IDX::Y_YAW), covariance.at(COV_IDX::YAW_X), covariance.at(COV_IDX::YAW_Y), covariance.at(COV_IDX::YAW_YAW); @@ -49,7 +49,7 @@ Eigen::Matrix2d twist_measurement_covariance( const std::array & covariance, const size_t smoothing_step) { Eigen::Matrix2d r; - using COV_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using COV_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; r << covariance.at(COV_IDX::X_X), covariance.at(COV_IDX::X_YAW), covariance.at(COV_IDX::YAW_X), covariance.at(COV_IDX::YAW_YAW); return r * static_cast(smoothing_step); diff --git a/localization/gyro_odometer/include/gyro_odometer/gyro_odometer_core.hpp b/localization/gyro_odometer/include/gyro_odometer/gyro_odometer_core.hpp index eb1db06b72998..f1f7214c3b848 100644 --- a/localization/gyro_odometer/include/gyro_odometer/gyro_odometer_core.hpp +++ b/localization/gyro_odometer/include/gyro_odometer/gyro_odometer_core.hpp @@ -43,7 +43,7 @@ namespace autoware::gyro_odometer class GyroOdometerNode : public rclcpp::Node { private: - using COV_IDX = autoware_universe_utils::xyz_covariance_index::XYZ_COV_IDX; + using COV_IDX = autoware::universe_utils::xyz_covariance_index::XYZ_COV_IDX; public: explicit GyroOdometerNode(const rclcpp::NodeOptions & node_options); @@ -67,8 +67,8 @@ class GyroOdometerNode : public rclcpp::Node rclcpp::Publisher::SharedPtr twist_with_covariance_pub_; - std::shared_ptr transform_listener_; - std::unique_ptr logger_configure_; + std::shared_ptr transform_listener_; + std::unique_ptr logger_configure_; std::string output_frame_; double message_timeout_sec_; diff --git a/localization/gyro_odometer/src/gyro_odometer_core.cpp b/localization/gyro_odometer/src/gyro_odometer_core.cpp index 0878c44ffa2cb..c661f63d91535 100644 --- a/localization/gyro_odometer/src/gyro_odometer_core.cpp +++ b/localization/gyro_odometer/src/gyro_odometer_core.cpp @@ -33,7 +33,7 @@ namespace autoware::gyro_odometer std::array transform_covariance(const std::array & cov) { - using COV_IDX = autoware_universe_utils::xyz_covariance_index::XYZ_COV_IDX; + using COV_IDX = autoware::universe_utils::xyz_covariance_index::XYZ_COV_IDX; double max_cov = std::max({cov[COV_IDX::X_X], cov[COV_IDX::Y_Y], cov[COV_IDX::Z_Z]}); @@ -52,8 +52,8 @@ GyroOdometerNode::GyroOdometerNode(const rclcpp::NodeOptions & node_options) vehicle_twist_arrived_(false), imu_arrived_(false) { - transform_listener_ = std::make_shared(this); - logger_configure_ = std::make_unique(this); + transform_listener_ = std::make_shared(this); + logger_configure_ = std::make_unique(this); vehicle_twist_sub_ = create_subscription( "vehicle/twist_with_covariance", rclcpp::QoS{100}, @@ -208,8 +208,8 @@ void GyroOdometerNode::concat_gyro_and_odometer() gyro.angular_velocity_covariance = transform_covariance(gyro.angular_velocity_covariance); } - using COV_IDX_XYZ = autoware_universe_utils::xyz_covariance_index::XYZ_COV_IDX; - using COV_IDX_XYZRPY = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using COV_IDX_XYZ = autoware::universe_utils::xyz_covariance_index::XYZ_COV_IDX; + using COV_IDX_XYZRPY = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; // calc mean, covariance double vx_mean = 0; diff --git a/localization/localization_error_monitor/include/localization_error_monitor/localization_error_monitor.hpp b/localization/localization_error_monitor/include/localization_error_monitor/localization_error_monitor.hpp index 12f0a1141d199..0f293e4d31cac 100644 --- a/localization/localization_error_monitor/include/localization_error_monitor/localization_error_monitor.hpp +++ b/localization/localization_error_monitor/include/localization_error_monitor/localization_error_monitor.hpp @@ -15,6 +15,8 @@ #ifndef LOCALIZATION_ERROR_MONITOR__LOCALIZATION_ERROR_MONITOR_HPP_ #define LOCALIZATION_ERROR_MONITOR__LOCALIZATION_ERROR_MONITOR_HPP_ +#include "localization_util/covariance_ellipse.hpp" + #include #include #include @@ -25,15 +27,6 @@ #include -struct Ellipse -{ - double long_radius; - double short_radius; - double yaw; - Eigen::Matrix2d P; - double size_lateral_direction; -}; - class LocalizationErrorMonitor : public rclcpp::Node { private: @@ -43,19 +36,16 @@ class LocalizationErrorMonitor : public rclcpp::Node rclcpp::TimerBase::SharedPtr timer_; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; double scale_; double error_ellipse_size_; double warn_ellipse_size_; double error_ellipse_size_lateral_direction_; double warn_ellipse_size_lateral_direction_; - Ellipse ellipse_; + autoware::localization_util::Ellipse ellipse_; void on_odom(nav_msgs::msg::Odometry::ConstSharedPtr input_msg); - visualization_msgs::msg::Marker create_ellipse_marker( - const Ellipse & ellipse, nav_msgs::msg::Odometry::ConstSharedPtr odom); - static double measure_size_ellipse_along_body_frame(const Eigen::Matrix2d & Pinv, double theta); public: explicit LocalizationErrorMonitor(const rclcpp::NodeOptions & options); diff --git a/localization/localization_error_monitor/package.xml b/localization/localization_error_monitor/package.xml index 681da7e57c6c5..b8a466f95dfab 100644 --- a/localization/localization_error_monitor/package.xml +++ b/localization/localization_error_monitor/package.xml @@ -23,6 +23,7 @@ autoware_universe_utils diagnostic_msgs diagnostic_updater + localization_util nav_msgs rclcpp_components tf2 diff --git a/localization/localization_error_monitor/src/localization_error_monitor.cpp b/localization/localization_error_monitor/src/localization_error_monitor.cpp index 51fc1607d048a..44223b0fd1670 100644 --- a/localization/localization_error_monitor/src/localization_error_monitor.cpp +++ b/localization/localization_error_monitor/src/localization_error_monitor.cpp @@ -55,64 +55,15 @@ LocalizationErrorMonitor::LocalizationErrorMonitor(const rclcpp::NodeOptions & o diag_pub_ = this->create_publisher("/diagnostics", 10); - logger_configure_ = std::make_unique(this); -} - -visualization_msgs::msg::Marker LocalizationErrorMonitor::create_ellipse_marker( - const Ellipse & ellipse, nav_msgs::msg::Odometry::ConstSharedPtr odom) -{ - tf2::Quaternion quat; - quat.setEuler(0, 0, ellipse.yaw); - - const double ellipse_long_radius = std::min(ellipse.long_radius, 30.0); - const double ellipse_short_radius = std::min(ellipse.short_radius, 30.0); - visualization_msgs::msg::Marker marker; - marker.header = odom->header; - marker.header.stamp = this->now(); - marker.ns = "error_ellipse"; - marker.id = 0; - marker.type = visualization_msgs::msg::Marker::SPHERE; - marker.action = visualization_msgs::msg::Marker::ADD; - marker.pose = odom->pose.pose; - marker.pose.orientation = tf2::toMsg(quat); - marker.scale.x = ellipse_long_radius * 2; - marker.scale.y = ellipse_short_radius * 2; - marker.scale.z = 0.01; - marker.color.a = 0.1; - marker.color.r = 0.0; - marker.color.g = 0.0; - marker.color.b = 1.0; - return marker; + logger_configure_ = std::make_unique(this); } void LocalizationErrorMonitor::on_odom(nav_msgs::msg::Odometry::ConstSharedPtr input_msg) { - // create xy covariance (2x2 matrix) - // input geometry_msgs::PoseWithCovariance contain 6x6 matrix - Eigen::Matrix2d xy_covariance; - const auto cov = input_msg->pose.covariance; - xy_covariance(0, 0) = cov[0 * 6 + 0]; - xy_covariance(0, 1) = cov[0 * 6 + 1]; - xy_covariance(1, 0) = cov[1 * 6 + 0]; - xy_covariance(1, 1) = cov[1 * 6 + 1]; - - Eigen::SelfAdjointEigenSolver eigensolver(xy_covariance); - - // eigen values and vectors are sorted in ascending order - ellipse_.long_radius = scale_ * std::sqrt(eigensolver.eigenvalues()(1)); - ellipse_.short_radius = scale_ * std::sqrt(eigensolver.eigenvalues()(0)); - - // principal component vector - const Eigen::Vector2d pc_vector = eigensolver.eigenvectors().col(1); - ellipse_.yaw = std::atan2(pc_vector.y(), pc_vector.x()); - - // ellipse size along lateral direction (body-frame) - ellipse_.P = xy_covariance; - const double yaw_vehicle = tf2::getYaw(input_msg->pose.pose.orientation); - ellipse_.size_lateral_direction = - scale_ * measure_size_ellipse_along_body_frame(ellipse_.P.inverse(), yaw_vehicle); - - const auto ellipse_marker = create_ellipse_marker(ellipse_, input_msg); + ellipse_ = autoware::localization_util::calculate_xy_ellipse(input_msg->pose, scale_); + + const auto ellipse_marker = autoware::localization_util::create_ellipse_marker( + ellipse_, input_msg->header, input_msg->pose); ellipse_marker_pub_->publish(ellipse_marker); // diagnostics @@ -134,16 +85,5 @@ void LocalizationErrorMonitor::on_odom(nav_msgs::msg::Odometry::ConstSharedPtr i diag_pub_->publish(diag_msg); } -double LocalizationErrorMonitor::measure_size_ellipse_along_body_frame( - const Eigen::Matrix2d & Pinv, const double theta) -{ - Eigen::MatrixXd e(2, 1); - e(0, 0) = std::cos(theta); - e(1, 0) = std::sin(theta); - - double d = std::sqrt((e.transpose() * Pinv * e)(0, 0) / Pinv.determinant()); - return d; -} - #include RCLCPP_COMPONENTS_REGISTER_NODE(LocalizationErrorMonitor) diff --git a/localization/localization_util/CMakeLists.txt b/localization/localization_util/CMakeLists.txt index 9a9086314f42e..ebf2b6dc10878 100644 --- a/localization/localization_util/CMakeLists.txt +++ b/localization/localization_util/CMakeLists.txt @@ -8,6 +8,7 @@ ament_auto_add_library(localization_util SHARED src/util_func.cpp src/smart_pose_buffer.cpp src/tree_structured_parzen_estimator.cpp + src/covariance_ellipse.cpp ) if(BUILD_TESTING) diff --git a/localization/localization_util/include/localization_util/covariance_ellipse.hpp b/localization/localization_util/include/localization_util/covariance_ellipse.hpp new file mode 100644 index 0000000000000..1f187d411dc63 --- /dev/null +++ b/localization/localization_util/include/localization_util/covariance_ellipse.hpp @@ -0,0 +1,44 @@ +// Copyright 2024 Autoware Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef LOCALIZATION_UTIL__COVARIANCE_ELLIPSE_HPP_ +#define LOCALIZATION_UTIL__COVARIANCE_ELLIPSE_HPP_ + +#include + +#include +#include + +namespace autoware::localization_util +{ + +struct Ellipse +{ + double long_radius; + double short_radius; + double yaw; + Eigen::Matrix2d P; + double size_lateral_direction; +}; + +Ellipse calculate_xy_ellipse( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance, const double scale); + +visualization_msgs::msg::Marker create_ellipse_marker( + const Ellipse & ellipse, const std_msgs::msg::Header & header, + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance); + +} // namespace autoware::localization_util + +#endif // LOCALIZATION_UTIL__COVARIANCE_ELLIPSE_HPP_ diff --git a/localization/localization_util/src/covariance_ellipse.cpp b/localization/localization_util/src/covariance_ellipse.cpp new file mode 100644 index 0000000000000..885ce2dcee19c --- /dev/null +++ b/localization/localization_util/src/covariance_ellipse.cpp @@ -0,0 +1,90 @@ +// Copyright 2024 Autoware Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "localization_util/covariance_ellipse.hpp" + +#include +#ifdef ROS_DISTRO_GALACTIC +#include +#else +#include +#endif + +namespace autoware::localization_util +{ + +Ellipse calculate_xy_ellipse( + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance, const double scale) +{ + // input geometry_msgs::PoseWithCovariance contain 6x6 matrix + Eigen::Matrix2d xy_covariance; + const auto cov = pose_with_covariance.covariance; + xy_covariance(0, 0) = cov[0 * 6 + 0]; + xy_covariance(0, 1) = cov[0 * 6 + 1]; + xy_covariance(1, 0) = cov[1 * 6 + 0]; + xy_covariance(1, 1) = cov[1 * 6 + 1]; + + Eigen::SelfAdjointEigenSolver eigensolver(xy_covariance); + + Ellipse ellipse; + + // eigen values and vectors are sorted in ascending order + ellipse.long_radius = scale * std::sqrt(eigensolver.eigenvalues()(1)); + ellipse.short_radius = scale * std::sqrt(eigensolver.eigenvalues()(0)); + + // principal component vector + const Eigen::Vector2d pc_vector = eigensolver.eigenvectors().col(1); + ellipse.yaw = std::atan2(pc_vector.y(), pc_vector.x()); + + // ellipse size along lateral direction (body-frame) + ellipse.P = xy_covariance; + const double yaw_vehicle = tf2::getYaw(pose_with_covariance.pose.orientation); + const Eigen::Matrix2d & p_inv = ellipse.P.inverse(); + Eigen::MatrixXd e(2, 1); + e(0, 0) = std::cos(yaw_vehicle); + e(1, 0) = std::sin(yaw_vehicle); + const double d = std::sqrt((e.transpose() * p_inv * e)(0, 0) / p_inv.determinant()); + ellipse.size_lateral_direction = scale * d; + + return ellipse; +} + +visualization_msgs::msg::Marker create_ellipse_marker( + const Ellipse & ellipse, const std_msgs::msg::Header & header, + const geometry_msgs::msg::PoseWithCovariance & pose_with_covariance) +{ + tf2::Quaternion quat; + quat.setEuler(0, 0, ellipse.yaw); + + const double ellipse_long_radius = std::min(ellipse.long_radius, 30.0); + const double ellipse_short_radius = std::min(ellipse.short_radius, 30.0); + visualization_msgs::msg::Marker marker; + marker.header = header; + marker.ns = "error_ellipse"; + marker.id = 0; + marker.type = visualization_msgs::msg::Marker::SPHERE; + marker.action = visualization_msgs::msg::Marker::ADD; + marker.pose = pose_with_covariance.pose; + marker.pose.orientation = tf2::toMsg(quat); + marker.scale.x = ellipse_long_radius * 2; + marker.scale.y = ellipse_short_radius * 2; + marker.scale.z = 0.01; + marker.color.a = 0.1; + marker.color.r = 0.0; + marker.color.g = 0.0; + marker.color.b = 1.0; + return marker; +} + +} // namespace autoware::localization_util diff --git a/localization/ndt_scan_matcher/include/ndt_scan_matcher/ndt_scan_matcher_core.hpp b/localization/ndt_scan_matcher/include/ndt_scan_matcher/ndt_scan_matcher_core.hpp index 5a28ed7eb8a5e..2f3eb82b1c217 100644 --- a/localization/ndt_scan_matcher/include/ndt_scan_matcher/ndt_scan_matcher_core.hpp +++ b/localization/ndt_scan_matcher/include/ndt_scan_matcher/ndt_scan_matcher_core.hpp @@ -203,7 +203,7 @@ class NDTScanMatcher : public rclcpp::Node std::unique_ptr diagnostics_ndt_align_; std::unique_ptr diagnostics_trigger_node_; std::unique_ptr map_update_module_; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; HyperParameters param_; }; diff --git a/localization/ndt_scan_matcher/src/ndt_scan_matcher_core.cpp b/localization/ndt_scan_matcher/src/ndt_scan_matcher_core.cpp index f392ba4b3c19f..ca486a320d9dc 100644 --- a/localization/ndt_scan_matcher/src/ndt_scan_matcher_core.cpp +++ b/localization/ndt_scan_matcher/src/ndt_scan_matcher_core.cpp @@ -210,7 +210,7 @@ NDTScanMatcher::NDTScanMatcher(const rclcpp::NodeOptions & options) diagnostics_trigger_node_ = std::make_unique(this, "trigger_node_service_status"); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); } void NDTScanMatcher::callback_timer() @@ -615,7 +615,7 @@ bool NDTScanMatcher::callback_sensor_points_main( pcl::shared_ptr> sensor_points_in_map_ptr( new pcl::PointCloud); - autoware_universe_utils::transformPointCloud( + autoware::universe_utils::transformPointCloud( *sensor_points_in_baselink_frame, *sensor_points_in_map_ptr, ndt_result.pose); publish_point_cloud(sensor_ros_time, param_.frame.map_frame, sensor_points_in_map_ptr); @@ -671,10 +671,10 @@ void NDTScanMatcher::transform_sensor_measurement( } const geometry_msgs::msg::PoseStamped target_to_source_pose_stamped = - autoware_universe_utils::transform2pose(transform); + autoware::universe_utils::transform2pose(transform); const Eigen::Matrix4f base_to_sensor_matrix = pose_to_matrix4f(target_to_source_pose_stamped.pose); - autoware_universe_utils::transformPointCloud( + autoware::universe_utils::transformPointCloud( *sensor_points_input_ptr, *sensor_points_output_ptr, base_to_sensor_matrix); } @@ -686,7 +686,7 @@ void NDTScanMatcher::publish_tf( result_pose_stamped_msg.header.frame_id = param_.frame.map_frame; result_pose_stamped_msg.pose = result_pose_msg; tf2_broadcaster_.sendTransform( - autoware_universe_utils::pose2transform(result_pose_stamped_msg, param_.frame.ndt_base_frame)); + autoware::universe_utils::pose2transform(result_pose_stamped_msg, param_.frame.ndt_base_frame)); } void NDTScanMatcher::publish_pose( @@ -730,7 +730,7 @@ void NDTScanMatcher::publish_marker( marker.header.frame_id = param_.frame.map_frame; marker.type = visualization_msgs::msg::Marker::ARROW; marker.action = visualization_msgs::msg::Marker::ADD; - marker.scale = autoware_universe_utils::createMarkerScale(0.3, 0.1, 0.1); + marker.scale = autoware::universe_utils::createMarkerScale(0.3, 0.1, 0.1); int i = 0; marker.ns = "result_pose_matrix_array"; marker.action = visualization_msgs::msg::Marker::ADD; @@ -759,7 +759,7 @@ void NDTScanMatcher::publish_initial_to_result( { geometry_msgs::msg::PoseStamped initial_to_result_relative_pose_stamped; initial_to_result_relative_pose_stamped.pose = - autoware_universe_utils::inverseTransformPose(result_pose_msg, initial_pose_cov_msg.pose.pose); + autoware::universe_utils::inverseTransformPose(result_pose_msg, initial_pose_cov_msg.pose.pose); initial_to_result_relative_pose_stamped.header.stamp = sensor_ros_time; initial_to_result_relative_pose_stamped.header.frame_id = param_.frame.map_frame; initial_to_result_relative_pose_pub_->publish(initial_to_result_relative_pose_stamped); @@ -1068,8 +1068,8 @@ geometry_msgs::msg::PoseWithCovarianceStamped NDTScanMatcher::align_pose( const pclomp::NdtResult ndt_result = ndt_ptr_->getResult(); Particle particle( - initial_pose, matrix4f_to_pose(ndt_result.pose), ndt_result.transform_probability, - ndt_result.iteration_num); + initial_pose, matrix4f_to_pose(ndt_result.pose), + ndt_result.nearest_voxel_transformation_likelihood, ndt_result.iteration_num); particle_array.push_back(particle); push_debug_markers(marker_array, get_clock()->now(), param_.frame.map_frame, particle, i); if ( @@ -1091,7 +1091,7 @@ geometry_msgs::msg::PoseWithCovarianceStamped NDTScanMatcher::align_pose( tpe.add_trial(TreeStructuredParzenEstimator::Trial{result, ndt_result.transform_probability}); auto sensor_points_in_map_ptr = std::make_shared>(); - autoware_universe_utils::transformPointCloud( + autoware::universe_utils::transformPointCloud( *ndt_ptr_->getInputSource(), *sensor_points_in_map_ptr, ndt_result.pose); publish_point_cloud( initial_pose_with_cov.header.stamp, param_.frame.map_frame, sensor_points_in_map_ptr); @@ -1101,6 +1101,13 @@ geometry_msgs::msg::PoseWithCovarianceStamped NDTScanMatcher::align_pose( std::begin(particle_array), std::end(particle_array), [](const Particle & lhs, const Particle & rhs) { return lhs.score < rhs.score; }); + if ( + best_particle_ptr->score < + param_.score_estimation.converged_param_nearest_voxel_transformation_likelihood) + RCLCPP_WARN_STREAM( + this->get_logger(), + "Initial Pose Estimation is Unstable. Score is " << best_particle_ptr->score); + geometry_msgs::msg::PoseWithCovarianceStamped result_pose_with_cov_msg; result_pose_with_cov_msg.header.stamp = initial_pose_with_cov.header.stamp; result_pose_with_cov_msg.header.frame_id = param_.frame.map_frame; diff --git a/localization/pose_estimator_arbiter/README.md b/localization/pose_estimator_arbiter/README.md index a28da699ad926..7b9397dfdba47 100644 --- a/localization/pose_estimator_arbiter/README.md +++ b/localization/pose_estimator_arbiter/README.md @@ -45,7 +45,7 @@ The following video demonstrates the switching of four different pose estimators Users can reproduce the demonstration using the following data and launch command: -[sample data (rosbag & map)](https://drive.google.com/file/d/1MxLo1Sw6PdvfkyOYf_9A5dZ9uli1vPvS/view) +[sample data (rosbag & map)](https://drive.google.com/file/d/1ZNlkyCtwe04iKFREdeZ5xuMU_jWpwM3W/view) The rosbag is simulated data created by [AWSIM](https://tier4.github.io/AWSIM/). The map is an edited version of the [original map data](https://github.com/tier4/AWSIM/releases/download/v1.1.0/nishishinjuku_autoware_map.zip) published on the AWSIM documentation page to make it suitable for multiple pose_estimators. diff --git a/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/rule_helper/pose_estimator_area.cpp b/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/rule_helper/pose_estimator_area.cpp index df7f9c6c1035f..1bf359b6ab54d 100644 --- a/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/rule_helper/pose_estimator_area.cpp +++ b/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/rule_helper/pose_estimator_area.cpp @@ -14,8 +14,8 @@ #include "pose_estimator_arbiter/rule_helper/pose_estimator_area.hpp" -#include -#include +#include +#include #include #include diff --git a/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/switch_rule/pcd_map_based_rule.cpp b/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/switch_rule/pcd_map_based_rule.cpp index 0866234383727..3a565e7f2e4df 100644 --- a/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/switch_rule/pcd_map_based_rule.cpp +++ b/localization/pose_estimator_arbiter/example_rule/src/pose_estimator_arbiter/switch_rule/pcd_map_based_rule.cpp @@ -28,9 +28,9 @@ PcdMapBasedRule::PcdMapBasedRule( shared_data_(std::move(shared_data)) { const int pcd_density_upper_threshold = - autoware_universe_utils::getOrDeclareParameter(node, "pcd_density_upper_threshold"); + autoware::universe_utils::getOrDeclareParameter(node, "pcd_density_upper_threshold"); const int pcd_density_lower_threshold = - autoware_universe_utils::getOrDeclareParameter(node, "pcd_density_lower_threshold"); + autoware::universe_utils::getOrDeclareParameter(node, "pcd_density_lower_threshold"); pcd_occupancy_ = std::make_unique( pcd_density_upper_threshold, pcd_density_lower_threshold); diff --git a/localization/pose_estimator_arbiter/example_rule/test/test_rule_helper.cpp b/localization/pose_estimator_arbiter/example_rule/test/test_rule_helper.cpp index 0001ce674a2e8..3258a1be34fda 100644 --- a/localization/pose_estimator_arbiter/example_rule/test/test_rule_helper.cpp +++ b/localization/pose_estimator_arbiter/example_rule/test/test_rule_helper.cpp @@ -16,7 +16,7 @@ #include "pose_estimator_arbiter/rule_helper/pcd_occupancy.hpp" #include "pose_estimator_arbiter/rule_helper/pose_estimator_area.hpp" -#include +#include #include diff --git a/localization/pose_estimator_arbiter/example_rule/test/test_vector_map_based_rule.cpp b/localization/pose_estimator_arbiter/example_rule/test/test_vector_map_based_rule.cpp index a4fd91365f433..ec8c905bf8311 100644 --- a/localization/pose_estimator_arbiter/example_rule/test/test_vector_map_based_rule.cpp +++ b/localization/pose_estimator_arbiter/example_rule/test/test_vector_map_based_rule.cpp @@ -14,7 +14,7 @@ #include "pose_estimator_arbiter/switch_rule/vector_map_based_rule.hpp" -#include +#include #include diff --git a/localization/pose_estimator_arbiter/package.xml b/localization/pose_estimator_arbiter/package.xml index 4880e048ea392..1c1c926c75b7a 100644 --- a/localization/pose_estimator_arbiter/package.xml +++ b/localization/pose_estimator_arbiter/package.xml @@ -18,11 +18,11 @@ autoware_cmake autoware_adapi_v1_msgs + autoware_lanelet2_extension autoware_map_msgs autoware_universe_utils diagnostic_msgs geometry_msgs - lanelet2_extension magic_enum pcl_conversions pcl_ros diff --git a/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter.hpp b/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter.hpp index 4228ade6be701..013b4b38f9ef6 100644 --- a/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter.hpp +++ b/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter.hpp @@ -53,7 +53,7 @@ class PoseEstimatorArbiter : public rclcpp::Node // Set of running pose estimators specified by ros param `pose_sources` const std::unordered_set running_estimator_list_; // Configuration to allow changing the log level by service - const std::unique_ptr logger_configure_; + const std::unique_ptr logger_configure_; // This is passed to several modules (stoppers & rule) so that all modules can access common data // without passing them as arguments. Also, modules can register subscriber callbacks through diff --git a/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter_core.cpp b/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter_core.cpp index 4d655875ba325..8e25628d6e0fc 100644 --- a/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter_core.cpp +++ b/localization/pose_estimator_arbiter/src/pose_estimator_arbiter/pose_estimator_arbiter_core.cpp @@ -46,7 +46,7 @@ PoseEstimatorArbiter::PoseEstimatorArbiter(const rclcpp::NodeOptions & options) : rclcpp::Node("pose_estimator_arbiter", options), running_estimator_list_(parse_estimator_name_args( declare_parameter>("pose_sources"), get_logger())), - logger_configure_(std::make_unique(this)) + logger_configure_(std::make_unique(this)) { // Shared data shared_data_ = std::make_shared(); diff --git a/localization/pose_initializer/src/pose_initializer/pose_initializer_core.cpp b/localization/pose_initializer/src/pose_initializer/pose_initializer_core.cpp index 1e351f8a90d7b..7d75a1fc80f2e 100644 --- a/localization/pose_initializer/src/pose_initializer/pose_initializer_core.cpp +++ b/localization/pose_initializer/src/pose_initializer/pose_initializer_core.cpp @@ -56,7 +56,7 @@ PoseInitializer::PoseInitializer(const rclcpp::NodeOptions & options) stop_check_duration_ = declare_parameter("stop_check_duration"); stop_check_ = std::make_unique(this, stop_check_duration_ + 1.0); } - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); change_state(State::Message::UNINITIALIZED); diff --git a/localization/pose_initializer/src/pose_initializer/pose_initializer_core.hpp b/localization/pose_initializer/src/pose_initializer/pose_initializer_core.hpp index 3a0896a07ba98..a813ec6459810 100644 --- a/localization/pose_initializer/src/pose_initializer/pose_initializer_core.hpp +++ b/localization/pose_initializer/src/pose_initializer/pose_initializer_core.hpp @@ -55,7 +55,7 @@ class PoseInitializer : public rclcpp::Node std::unique_ptr stop_check_; std::unique_ptr ekf_localization_trigger_; std::unique_ptr ndt_localization_trigger_; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; double stop_check_duration_; void change_node_trigger(bool flag, bool need_spin = false); diff --git a/localization/pose_initializer/src/pose_initializer/stop_check_module.hpp b/localization/pose_initializer/src/pose_initializer/stop_check_module.hpp index 140fb3079de45..31f04029bd00e 100644 --- a/localization/pose_initializer/src/pose_initializer/stop_check_module.hpp +++ b/localization/pose_initializer/src/pose_initializer/stop_check_module.hpp @@ -21,7 +21,7 @@ #include #include -class StopCheckModule : public autoware_motion_utils::VehicleStopCheckerBase +class StopCheckModule : public autoware::motion_utils::VehicleStopCheckerBase { public: StopCheckModule(rclcpp::Node * node, double buffer_duration); diff --git a/localization/pose_instability_detector/src/pose_instability_detector.cpp b/localization/pose_instability_detector/src/pose_instability_detector.cpp index 436fd4eee7692..23362dd13c6bc 100644 --- a/localization/pose_instability_detector/src/pose_instability_detector.cpp +++ b/localization/pose_instability_detector/src/pose_instability_detector.cpp @@ -123,7 +123,7 @@ void PoseInstabilityDetector::callback_timer() // compare dead reckoning pose and latest_odometry_ const Pose latest_ekf_pose = latest_odometry_->pose.pose; - const Pose ekf_to_dr = autoware_universe_utils::inverseTransformPose(*dr_pose, latest_ekf_pose); + const Pose ekf_to_dr = autoware::universe_utils::inverseTransformPose(*dr_pose, latest_ekf_pose); const geometry_msgs::msg::Point pos = ekf_to_dr.position; const auto [ang_x, ang_y, ang_z] = quat_to_rpy(ekf_to_dr.orientation); const std::vector values = {pos.x, pos.y, pos.z, ang_x, ang_y, ang_z}; @@ -354,6 +354,9 @@ PoseInstabilityDetector::clip_out_necessary_twist( start_twist.header.stamp = start_time; result_deque.push_front(start_twist); } else { + if (result_deque.size() < 2) { + return result_deque; + } // If the first element is earlier than start_time, interpolate the first element rclcpp::Time time0 = rclcpp::Time(result_deque[0].header.stamp); rclcpp::Time time1 = rclcpp::Time(result_deque[1].header.stamp); @@ -380,6 +383,9 @@ PoseInstabilityDetector::clip_out_necessary_twist( end_twist.header.stamp = end_time; result_deque.push_back(end_twist); } else { + if (result_deque.size() < 2) { + return result_deque; + } // If the last element is later than end_time, interpolate the last element rclcpp::Time time0 = rclcpp::Time(result_deque[result_deque.size() - 2].header.stamp); rclcpp::Time time1 = rclcpp::Time(result_deque[result_deque.size() - 1].header.stamp); diff --git a/localization/pose_instability_detector/test/test.cpp b/localization/pose_instability_detector/test/test.cpp index 9300984967d4b..482e659e7a13c 100644 --- a/localization/pose_instability_detector/test/test.cpp +++ b/localization/pose_instability_detector/test/test.cpp @@ -163,6 +163,64 @@ TEST_F(TestPoseInstabilityDetector, output_warn_when_twist_is_too_small) // NOL EXPECT_TRUE(diagnostic_status.level == diagnostic_msgs::msg::DiagnosticStatus::WARN); } +TEST_F(TestPoseInstabilityDetector, does_not_crash_even_if_abnormal_odometry_data_comes) // NOLINT +{ + // [Condition] There is no twist_msg between the two target odometry_msgs. + // Normally this doesn't seem to happen. + // As far as I can think, this happens when the odometry msg stops (so the next timer callback + // will refer to the same odometry msg, and the timestamp difference will be calculated as 0) + // This test case shows that an error occurs when two odometry msgs come in close succession and + // there is no other odometry msg. + // Referring again, this doesn't normally seem to happen in usual operation. + + builtin_interfaces::msg::Time timestamp{}; + + // send the twist message1 + timestamp.sec = 0; + timestamp.nanosec = 0; + helper_->send_twist_message(timestamp, 0.2, 0.0, 0.0); + + // send the first odometry message after the first twist message + timestamp.sec = 0; + timestamp.nanosec = 5e8 + 1; + helper_->send_odometry_message(timestamp, 10.0, 0.0, 0.0); + + // process the above message (by timer_callback) + helper_->received_diagnostic_array_flag = false; + while (!helper_->received_diagnostic_array_flag) { + executor_.spin_some(); + std::this_thread::sleep_for(std::chrono::milliseconds(10)); + } + + // send the second odometry message before the second twist message + timestamp.sec = 0; + timestamp.nanosec = 5e8 + 1e7; + helper_->send_odometry_message(timestamp, 12.0, 0.0, 0.0); + + // send the twist message2 + timestamp.sec = 1; + timestamp.nanosec = 0; + helper_->send_twist_message(timestamp, 0.2, 0.0, 0.0); + + // process the above messages (by timer_callback) + helper_->received_diagnostic_array_flag = false; + while (!helper_->received_diagnostic_array_flag) { + executor_.spin_some(); + std::this_thread::sleep_for(std::chrono::milliseconds(10)); + } + + // provoke timer callback again + helper_->received_diagnostic_array_flag = false; + while (!helper_->received_diagnostic_array_flag) { + executor_.spin_some(); + std::this_thread::sleep_for(std::chrono::milliseconds(10)); + } + + // This test is OK if pose_instability_detector does not crash. The diagnostics status is not + // checked. + SUCCEED(); +} + int main(int argc, char ** argv) { rclcpp::init(argc, argv); diff --git a/localization/yabloc/yabloc_common/package.xml b/localization/yabloc/yabloc_common/package.xml index 18038d80fbfca..ee0ef087579f7 100644 --- a/localization/yabloc/yabloc_common/package.xml +++ b/localization/yabloc/yabloc_common/package.xml @@ -16,12 +16,12 @@ autoware_cmake rosidl_default_generators + autoware_lanelet2_extension autoware_map_msgs autoware_universe_utils cv_bridge geometry_msgs lanelet2_core - lanelet2_extension pcl_conversions rclcpp rclcpp_components diff --git a/localization/yabloc/yabloc_common/src/cv_decompress.cpp b/localization/yabloc/yabloc_common/src/cv_decompress.cpp index bf26908c9f0b0..3401f458f388a 100644 --- a/localization/yabloc/yabloc_common/src/cv_decompress.cpp +++ b/localization/yabloc/yabloc_common/src/cv_decompress.cpp @@ -17,7 +17,11 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif #include diff --git a/localization/yabloc/yabloc_common/src/ground_server/ground_server_core.cpp b/localization/yabloc/yabloc_common/src/ground_server/ground_server_core.cpp index 1366ecaebccf1..52752bff65770 100644 --- a/localization/yabloc/yabloc_common/src/ground_server/ground_server_core.cpp +++ b/localization/yabloc/yabloc_common/src/ground_server/ground_server_core.cpp @@ -17,7 +17,7 @@ #include "yabloc_common/ground_server/util.hpp" #include -#include +#include #include #include diff --git a/localization/yabloc/yabloc_common/src/ll2_decomposer/ll2_decomposer_core.cpp b/localization/yabloc/yabloc_common/src/ll2_decomposer/ll2_decomposer_core.cpp index aa0244e5d7e90..c95431d128000 100644 --- a/localization/yabloc/yabloc_common/src/ll2_decomposer/ll2_decomposer_core.cpp +++ b/localization/yabloc/yabloc_common/src/ll2_decomposer/ll2_decomposer_core.cpp @@ -15,7 +15,7 @@ #include "yabloc_common/ll2_decomposer/ll2_decomposer.hpp" #include -#include +#include #include #include @@ -198,7 +198,7 @@ Ll2Decomposer::MarkerArray Ll2Decomposer::make_sign_marker_msg( marker.header.frame_id = "map"; marker.header.stamp = get_clock()->now(); marker.type = Marker::LINE_STRIP; - marker.color = autoware_universe_utils::createMarkerColor(0.6f, 0.6f, 0.6f, 0.999f); + marker.color = autoware::universe_utils::createMarkerColor(0.6f, 0.6f, 0.6f, 0.999f); marker.scale.x = 0.1; marker.ns = ns; marker.id = id++; @@ -228,7 +228,7 @@ Ll2Decomposer::MarkerArray Ll2Decomposer::make_polygon_marker_msg( marker.header.frame_id = "map"; marker.header.stamp = get_clock()->now(); marker.type = Marker::LINE_STRIP; - marker.color = autoware_universe_utils::createMarkerColor(0.4f, 0.4f, 0.8f, 0.999f); + marker.color = autoware::universe_utils::createMarkerColor(0.4f, 0.4f, 0.8f, 0.999f); marker.scale.x = 0.2; marker.ns = ns; marker.id = id++; diff --git a/localization/yabloc/yabloc_common/src/pub_sub.cpp b/localization/yabloc/yabloc_common/src/pub_sub.cpp index 102a9012033fe..79d48b70ac172 100644 --- a/localization/yabloc/yabloc_common/src/pub_sub.cpp +++ b/localization/yabloc/yabloc_common/src/pub_sub.cpp @@ -14,7 +14,11 @@ #include "yabloc_common/pub_sub.hpp" -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif #include namespace yabloc::common diff --git a/localization/yabloc/yabloc_image_processing/src/graph_segment/graph_segment_core.cpp b/localization/yabloc/yabloc_image_processing/src/graph_segment/graph_segment_core.cpp index f319fcc9fd77a..9539e44f61276 100644 --- a/localization/yabloc/yabloc_image_processing/src/graph_segment/graph_segment_core.cpp +++ b/localization/yabloc/yabloc_image_processing/src/graph_segment/graph_segment_core.cpp @@ -98,7 +98,7 @@ void GraphSegment::on_image(const Image & msg) cv::resize(image, resized, cv::Size(), 0.5, 0.5); // Execute graph-based segmentation - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; cv::Mat segmented; segmentation_->processImage(resized, segmented); RCLCPP_INFO_STREAM(get_logger(), "segmentation time: " << stop_watch.toc() * 1000 << "[ms]"); diff --git a/localization/yabloc/yabloc_image_processing/src/line_segment_detector/line_segment_detector_core.cpp b/localization/yabloc/yabloc_image_processing/src/line_segment_detector/line_segment_detector_core.cpp index f0f451834c66e..c5cec31e24844 100644 --- a/localization/yabloc/yabloc_image_processing/src/line_segment_detector/line_segment_detector_core.cpp +++ b/localization/yabloc/yabloc_image_processing/src/line_segment_detector/line_segment_detector_core.cpp @@ -53,7 +53,7 @@ void LineSegmentDetector::execute(const cv::Mat & image, const rclcpp::Time & st cv::Mat lines; { - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; line_segment_detector_->detect(gray_image, lines); if (lines.size().width != 0) { line_segment_detector_->drawSegments(gray_image, lines); diff --git a/localization/yabloc/yabloc_image_processing/src/line_segments_overlay/line_segments_overlay_core.cpp b/localization/yabloc/yabloc_image_processing/src/line_segments_overlay/line_segments_overlay_core.cpp index 70e1bf2d6e6e2..c7d7aa67fd3ab 100644 --- a/localization/yabloc/yabloc_image_processing/src/line_segments_overlay/line_segments_overlay_core.cpp +++ b/localization/yabloc/yabloc_image_processing/src/line_segments_overlay/line_segments_overlay_core.cpp @@ -18,7 +18,11 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif #include namespace yabloc::line_segments_overlay diff --git a/localization/yabloc/yabloc_image_processing/src/undistort/undistort_node.cpp b/localization/yabloc/yabloc_image_processing/src/undistort/undistort_node.cpp index ad38c320fc510..46f5165c5f4e2 100644 --- a/localization/yabloc/yabloc_image_processing/src/undistort/undistort_node.cpp +++ b/localization/yabloc/yabloc_image_processing/src/undistort/undistort_node.cpp @@ -24,7 +24,11 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif #include @@ -147,7 +151,7 @@ class UndistortNode : public rclcpp::Node sub_compressed_image_.reset(); } - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; remap_and_publish(common::decompress_to_cv_mat(msg), msg.header); RCLCPP_INFO_STREAM(get_logger(), "image undistort: " << stop_watch.toc() << "[ms]"); } @@ -161,7 +165,7 @@ class UndistortNode : public rclcpp::Node make_remap_lut(); } - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; remap_and_publish(common::decompress_to_cv_mat(msg), msg.header); RCLCPP_INFO_STREAM(get_logger(), "image undistort: " << stop_watch.toc() << "[ms]"); } diff --git a/localization/yabloc/yabloc_monitor/CMakeLists.txt b/localization/yabloc/yabloc_monitor/CMakeLists.txt index aa1515661b2f6..7267cda53714f 100644 --- a/localization/yabloc/yabloc_monitor/CMakeLists.txt +++ b/localization/yabloc/yabloc_monitor/CMakeLists.txt @@ -4,12 +4,16 @@ project(yabloc_monitor) find_package(autoware_cmake REQUIRED) autoware_package() -ament_auto_add_executable(yabloc_monitor - src/yabloc_monitor_node.cpp +ament_auto_add_library(${PROJECT_NAME} src/yabloc_monitor_core.cpp src/availability_module.cpp ) -ament_target_dependencies(yabloc_monitor) + +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "YabLocMonitor" + EXECUTABLE ${PROJECT_NAME}_node + EXECUTOR SingleThreadedExecutor +) ament_auto_package( INSTALL_TO_SHARE diff --git a/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml b/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml index cf9f73977d35d..3073208e2e1a2 100644 --- a/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml +++ b/localization/yabloc/yabloc_monitor/launch/yabloc_monitor.launch.xml @@ -1,7 +1,7 @@ - + diff --git a/localization/yabloc/yabloc_monitor/package.xml b/localization/yabloc/yabloc_monitor/package.xml index 22a5d0eded6b6..a42a734dbab31 100644 --- a/localization/yabloc/yabloc_monitor/package.xml +++ b/localization/yabloc/yabloc_monitor/package.xml @@ -20,6 +20,7 @@ diagnostic_updater geometry_msgs rclcpp + rclcpp_components ament_cmake_gtest ament_lint_auto diff --git a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp index 876b86fd2bc9e..31e6ec9c51e7a 100644 --- a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp +++ b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.cpp @@ -18,7 +18,8 @@ #include -YabLocMonitor::YabLocMonitor() : Node("yabloc_monitor"), updater_(this) +YabLocMonitor::YabLocMonitor(const rclcpp::NodeOptions & options) +: Node("yabloc_monitor", options), updater_(this) { updater_.setHardwareID(get_name()); updater_.add("yabloc_status", this, &YabLocMonitor::update_diagnostics); @@ -46,3 +47,6 @@ void YabLocMonitor::update_diagnostics(diagnostic_updater::DiagnosticStatusWrapp stat.summary(diagnostic_msgs::msg::DiagnosticStatus::ERROR, "NG"); } } + +#include +RCLCPP_COMPONENTS_REGISTER_NODE(YabLocMonitor) diff --git a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp index 8b8b937da205b..5dd46d63de6f2 100644 --- a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp +++ b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_core.hpp @@ -25,7 +25,7 @@ class YabLocMonitor : public rclcpp::Node { public: - YabLocMonitor(); + explicit YabLocMonitor(const rclcpp::NodeOptions & options = rclcpp::NodeOptions()); private: void update_diagnostics(diagnostic_updater::DiagnosticStatusWrapper & stat); diff --git a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_node.cpp b/localization/yabloc/yabloc_monitor/src/yabloc_monitor_node.cpp deleted file mode 100644 index 9b58325c852ea..0000000000000 --- a/localization/yabloc/yabloc_monitor/src/yabloc_monitor_node.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2023 TIER IV -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "yabloc_monitor_core.hpp" - -#include - -int main(int argc, char ** argv) -{ - rclcpp::init(argc, argv); - rclcpp::NodeOptions node_options; - auto node = std::make_shared(); - - rclcpp::spin(node); - - return 0; -} diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/camera_particle_corrector.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/camera_particle_corrector.hpp index 582abb03901a1..4ca8c01b3be64 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/camera_particle_corrector.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/camera_particle_corrector.hpp @@ -33,7 +33,7 @@ namespace yabloc::modularized_particle_filter { -cv::Point2f cv2pt(const Eigen::Vector3f v); +cv::Point2f cv2pt(const Eigen::Vector3f & v); float abs_cos(const Eigen::Vector3f & t, float deg); class CameraParticleCorrector : public modularized_particle_filter::AbstractCorrector diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/logit.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/logit.hpp index caf93abd0028f..0b2954dd46ba5 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/logit.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/camera_corrector/logit.hpp @@ -18,15 +18,6 @@ namespace yabloc { float logit_to_prob(float logit, float gain = 1.0f); - -/** - * Convert probability to logit - * This function is much faster than logit_to_prob() because it refers to pre-computed table - * - * @param[in] prob - * @return logit - */ -float prob_to_logit(float prob); } // namespace yabloc #endif // YABLOC_PARTICLE_FILTER__CAMERA_CORRECTOR__LOGIT_HPP_ diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/mean.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/mean.hpp index e6af4f0d76d49..4e2c6cd8a842c 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/mean.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/mean.hpp @@ -20,18 +20,13 @@ #include -namespace yabloc -{ -namespace modularized_particle_filter +namespace yabloc::modularized_particle_filter { geometry_msgs::msg::Pose get_mean_pose( const yabloc_particle_filter::msg::ParticleArray & particle_array); Eigen::Matrix3f std_of_distribution( const yabloc_particle_filter::msg::ParticleArray & particle_array); - -float std_of_weight(const yabloc_particle_filter::msg::ParticleArray & particle_array); -} // namespace modularized_particle_filter -} // namespace yabloc +} // namespace yabloc::modularized_particle_filter #endif // YABLOC_PARTICLE_FILTER__COMMON__MEAN_HPP_ diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/prediction_util.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/prediction_util.hpp index 6059f16826c98..140f1553b88ee 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/prediction_util.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/prediction_util.hpp @@ -22,14 +22,12 @@ #include #include -namespace yabloc +namespace yabloc::modularized_particle_filter::util { -namespace modularized_particle_filter::util -{ -std::random_device seed_gen; -std::default_random_engine engine(seed_gen()); +inline std::random_device seed_gen; +inline std::default_random_engine engine(seed_gen()); -Eigen::Vector2d nrand_2d(const Eigen::Matrix2d cov) +inline Eigen::Vector2d nrand_2d(const Eigen::Matrix2d & cov) { Eigen::JacobiSVD svd; svd.compute(cov, Eigen::ComputeFullU | Eigen::ComputeFullV); @@ -50,7 +48,7 @@ T nrand(T std) return dist(engine); } -double normalize_radian(const double rad, const double min_rad = -M_PI) +inline double normalize_radian(const double rad, const double min_rad = -M_PI) { const auto max_rad = min_rad + 2 * M_PI; @@ -63,6 +61,5 @@ double normalize_radian(const double rad, const double min_rad = -M_PI) return value - std::copysign(2 * M_PI, value); } -} // namespace modularized_particle_filter::util -} // namespace yabloc +} // namespace yabloc::modularized_particle_filter::util #endif // YABLOC_PARTICLE_FILTER__COMMON__PREDICTION_UTIL_HPP_ diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/visualize.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/visualize.hpp index f1ecf35e81761..3b35d1a9a0da6 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/visualize.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/common/visualize.hpp @@ -21,9 +21,7 @@ #include #include -namespace yabloc -{ -namespace modularized_particle_filter +namespace yabloc::modularized_particle_filter { class ParticleVisualizer { @@ -37,9 +35,7 @@ class ParticleVisualizer private: rclcpp::Publisher::SharedPtr pub_marker_array_; - std_msgs::msg::ColorRGBA compute_color(float value); }; -} // namespace modularized_particle_filter -} // namespace yabloc +} // namespace yabloc::modularized_particle_filter #endif // YABLOC_PARTICLE_FILTER__COMMON__VISUALIZE_HPP_ diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/correction/abstract_corrector.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/correction/abstract_corrector.hpp index 4deaeec0810ae..33802bd666440 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/correction/abstract_corrector.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/correction/abstract_corrector.hpp @@ -26,9 +26,7 @@ #include #include -namespace yabloc -{ -namespace modularized_particle_filter +namespace yabloc::modularized_particle_filter { class AbstractCorrector : public rclcpp::Node { @@ -55,7 +53,6 @@ class AbstractCorrector : public rclcpp::Node private: void on_particle_array(const ParticleArray & particle_array); }; -} // namespace modularized_particle_filter -} // namespace yabloc +} // namespace yabloc::modularized_particle_filter #endif // YABLOC_PARTICLE_FILTER__CORRECTION__ABSTRACT_CORRECTOR_HPP_ diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/correction/correction_util.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/correction/correction_util.hpp deleted file mode 100644 index 2c2f10bf7ad2e..0000000000000 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/correction/correction_util.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2023 TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef YABLOC_PARTICLE_FILTER__CORRECTION__CORRECTION_UTIL_HPP_ -#define YABLOC_PARTICLE_FILTER__CORRECTION__CORRECTION_UTIL_HPP_ - -#include "rclcpp/rclcpp.hpp" -#include "yabloc_particle_filter/msg/particle_array.hpp" - -#include - -#include - -namespace yabloc -{ -namespace modularized_particle_filter -{ -std::optional find_synced_particles( - boost::circular_buffer circular_buffer, - rclcpp::Time time); -} -} // namespace yabloc - -#endif // YABLOC_PARTICLE_FILTER__CORRECTION__CORRECTION_UTIL_HPP_ diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/gnss_corrector/weight_manager.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/gnss_corrector/weight_manager.hpp index 791f65eb9b835..f22662a188355 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/gnss_corrector/weight_manager.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/gnss_corrector/weight_manager.hpp @@ -35,41 +35,48 @@ struct WeightManager } }; - Parameter for_fixed_; - Parameter for_not_fixed_; + Parameter for_fixed_{}; + Parameter for_not_fixed_{}; explicit WeightManager(rclcpp::Node * node) { - for_fixed_.flat_radius_ = node->declare_parameter("for_fixed/flat_radius"); - for_fixed_.max_radius_ = node->declare_parameter("for_fixed/max_radius"); - for_fixed_.min_weight_ = node->declare_parameter("for_fixed/min_weight"); - for_fixed_.max_weight_ = node->declare_parameter("for_fixed/max_weight"); + for_fixed_.flat_radius_ = + static_cast(node->declare_parameter("for_fixed/flat_radius")); + for_fixed_.max_radius_ = + static_cast(node->declare_parameter("for_fixed/max_radius")); + for_fixed_.min_weight_ = + static_cast(node->declare_parameter("for_fixed/min_weight")); + for_fixed_.max_weight_ = + static_cast(node->declare_parameter("for_fixed/max_weight")); for_fixed_.compute_coeff(); - for_not_fixed_.flat_radius_ = node->declare_parameter("for_not_fixed/flat_radius"); - for_not_fixed_.max_radius_ = node->declare_parameter("for_not_fixed/max_radius"); - for_not_fixed_.min_weight_ = node->declare_parameter("for_not_fixed/min_weight"); - for_not_fixed_.max_weight_ = node->declare_parameter("for_not_fixed/max_weight"); + for_not_fixed_.flat_radius_ = + static_cast(node->declare_parameter("for_not_fixed/flat_radius")); + for_not_fixed_.max_radius_ = + static_cast(node->declare_parameter("for_not_fixed/max_radius")); + for_not_fixed_.min_weight_ = + static_cast(node->declare_parameter("for_not_fixed/min_weight")); + for_not_fixed_.max_weight_ = + static_cast(node->declare_parameter("for_not_fixed/max_weight")); for_not_fixed_.compute_coeff(); } - float normal_pdf(float distance, const Parameter & param) const + [[nodiscard]] static float normal_pdf(float distance, const Parameter & param) { // NOTE: This is not exact normal distribution because of no scale factor depending on sigma float d = std::clamp(std::abs(distance) - param.flat_radius_, 0.f, param.max_radius_); return param.max_weight_ * std::exp(-param.coeff_ * d * d); } - float normal_pdf(float distance, bool is_rtk_fixed) const + [[nodiscard]] float normal_pdf(float distance, bool is_rtk_fixed) const { if (is_rtk_fixed) { return normal_pdf(distance, for_fixed_); - } else { - return normal_pdf(distance, for_not_fixed_); } + return normal_pdf(distance, for_not_fixed_); } - float inverse_normal_pdf(float prob, const Parameter & param) const + [[nodiscard]] static float inverse_normal_pdf(float prob, const Parameter & param) { prob = (param.max_weight_ - param.min_weight_) * prob + param.min_weight_; @@ -78,13 +85,12 @@ struct WeightManager return param.flat_radius_ + std::sqrt(-std::log(prob / param.max_weight_) / param.coeff_); } - float inverse_normal_pdf(float prob, bool is_rtk_fixed) const + [[nodiscard]] float inverse_normal_pdf(float prob, bool is_rtk_fixed) const { if (is_rtk_fixed) { return inverse_normal_pdf(prob, for_fixed_); - } else { - return inverse_normal_pdf(prob, for_not_fixed_); } + return inverse_normal_pdf(prob, for_not_fixed_); } }; } // namespace yabloc::modularized_particle_filter diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/direct_cost_map.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/direct_cost_map.hpp index 5f56b8f079cd1..8169719a21f3b 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/direct_cost_map.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/direct_cost_map.hpp @@ -20,9 +20,6 @@ namespace yabloc { cv::Mat direct_cost_map(const cv::Mat & cost_map, const cv::Mat & intensity); - -cv::Mat visualize_direction_map(const cv::Mat & cost_map); - } // namespace yabloc #endif // YABLOC_PARTICLE_FILTER__LL2_COST_MAP__DIRECT_COST_MAP_HPP_ diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/hierarchical_cost_map.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/hierarchical_cost_map.hpp index 32d579c4ab595..d6cc4553e29bc 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/hierarchical_cost_map.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/ll2_cost_map/hierarchical_cost_map.hpp @@ -37,34 +37,37 @@ namespace yabloc { struct Area { - Area() {} + Area() = default; explicit Area(const Eigen::Vector2f & v) { - if (unit_length_ < 0) { + if (unit_length < 0) { throw_error(); } - x = static_cast(std::floor(v.x() / unit_length_)); - y = static_cast(std::floor(v.y() / unit_length_)); + x = static_cast(std::floor(v.x() / unit_length)); + y = static_cast(std::floor(v.y() / unit_length)); } - Eigen::Vector2f real_scale() const { return {x * unit_length_, y * unit_length_}; } + [[nodiscard]] Eigen::Vector2f real_scale() const + { + return {static_cast(x) * unit_length, static_cast(y) * unit_length}; + } - std::array real_scale_boundary() const + [[nodiscard]] std::array real_scale_boundary() const { std::array boundary; boundary.at(0) = real_scale(); - boundary.at(1) = real_scale() + Eigen::Vector2f(unit_length_, unit_length_); + boundary.at(1) = real_scale() + Eigen::Vector2f(unit_length, unit_length); return boundary; }; - void throw_error() const + static void throw_error() { std::cerr << "Area::unit_length_ is not initialized" << std::endl; throw std::runtime_error("invalid Area::unit_length"); } - int x, y; - static float unit_length_; - static float image_size_; + int x{}, y{}; + static float unit_length; + static float image_size; friend bool operator==(const Area & one, const Area & other) { @@ -129,7 +132,7 @@ class HierarchicalCostMap rclcpp::Logger logger_; std::optional height_{std::nullopt}; - common::GammaConverter gamma_converter{4.0f}; + common::GammaConverter gamma_converter_{4.0f}; std::unordered_map map_accessed_; @@ -138,7 +141,7 @@ class HierarchicalCostMap std::vector bounding_boxes_; std::unordered_map cost_maps_; - cv::Point to_cv_point(const Area & are, const Eigen::Vector2f) const; + cv::Point to_cv_point(const Area & area, const Eigen::Vector2f & p) const; void build_map(const Area & area); cv::Mat create_available_area_image(const Area & area) const; diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/predictor.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/predictor.hpp index e4fb58f22e17f..b619ed524affd 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/predictor.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/predictor.hpp @@ -106,7 +106,7 @@ class Predictor : public rclcpp::Node void initialize_particles(const PoseCovStamped & initialpose); // void update_with_dynamic_noise( - ParticleArray & particle_array, const TwistCovStamped & twist, double dt); + ParticleArray & particle_array, const TwistCovStamped & twist, double dt) const; // void publish_mean_pose(const geometry_msgs::msg::Pose & mean_pose, const rclcpp::Time & stamp); void publish_range_marker(const Eigen::Vector3f & pos, const Eigen::Vector3f & tangent); diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampler.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampler.hpp index f2a517216020a..7b3aa8553f90e 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampler.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampler.hpp @@ -22,10 +22,10 @@ namespace yabloc::modularized_particle_filter { -class resampling_skip_exception : public std::runtime_error +class ResamplingSkipException : public std::runtime_error { public: - explicit resampling_skip_exception(const char * message) : runtime_error(message) {} + explicit ResamplingSkipException(const char * message) : runtime_error(message) {} }; class RetroactiveResampler @@ -56,9 +56,10 @@ class RetroactiveResampler int latest_resampling_generation_; // Random generator from 0 to 1 - double random_from_01_uniformly() const; + [[nodiscard]] static double random_from_01_uniformly(); // Check the sanity of the particles obtained from the particle corrector. - bool check_weighted_particles_validity(const ParticleArray & weighted_particles) const; + [[nodiscard]] bool check_weighted_particles_validity( + const ParticleArray & weighted_particles) const; }; } // namespace yabloc::modularized_particle_filter diff --git a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampling_history.hpp b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampling_history.hpp index 5b24ee96d6df5..6c1e9737c3f0d 100644 --- a/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampling_history.hpp +++ b/localization/yabloc/yabloc_particle_filter/include/yabloc_particle_filter/prediction/resampling_history.hpp @@ -35,7 +35,7 @@ class ResamplingHistory } } - bool check_history_validity() const + [[nodiscard]] bool check_history_validity() const { for (auto & generation : resampling_history_) { bool result = std::any_of(generation.begin(), generation.end(), [this](int x) { diff --git a/localization/yabloc/yabloc_particle_filter/src/camera_corrector/camera_particle_corrector_core.cpp b/localization/yabloc/yabloc_particle_filter/src/camera_corrector/camera_particle_corrector_core.cpp index 35113b4c5af36..d6a38e7b97b96 100644 --- a/localization/yabloc/yabloc_particle_filter/src/camera_corrector/camera_particle_corrector_core.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/camera_corrector/camera_particle_corrector_core.cpp @@ -25,13 +25,15 @@ #include +#include + namespace yabloc::modularized_particle_filter { CameraParticleCorrector::CameraParticleCorrector(const rclcpp::NodeOptions & options) : AbstractCorrector("camera_particle_corrector", options), - min_prob_(declare_parameter("min_prob")), - far_weight_gain_(declare_parameter("far_weight_gain")), + min_prob_(static_cast(declare_parameter("min_prob"))), + far_weight_gain_(static_cast(declare_parameter("far_weight_gain"))), cost_map_(this) { using std::placeholders::_1; @@ -98,7 +100,8 @@ CameraParticleCorrector::split_line_segments(const PointCloud2 & msg) { LineSegments all_line_segments_cloud; pcl::fromROSMsg(msg, all_line_segments_cloud); - LineSegments reliable_cloud, iffy_cloud; + LineSegments reliable_cloud; + LineSegments iffy_cloud; { for (const auto & p : all_line_segments_cloud) { if (p.label == 0) @@ -111,7 +114,7 @@ CameraParticleCorrector::split_line_segments(const PointCloud2 & msg) auto [good_cloud, bad_cloud] = filt(iffy_cloud); { cv::Mat debug_image = cv::Mat::zeros(800, 800, CV_8UC3); - auto draw = [&debug_image](LineSegments & cloud, cv::Scalar color) -> void { + auto draw = [&debug_image](const LineSegments & cloud, const cv::Scalar & color) -> void { for (const auto & line : cloud) { const Eigen::Vector3f p1 = line.getVector3fMap(); const Eigen::Vector3f p2 = line.getNormalVector3fMap(); @@ -130,7 +133,7 @@ CameraParticleCorrector::split_line_segments(const PointCloud2 & msg) void CameraParticleCorrector::on_line_segments(const PointCloud2 & line_segments_msg) { - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; const rclcpp::Time stamp = line_segments_msg.header.stamp; std::optional opt_array = this->get_synchronized_particle_array(stamp); if (!opt_array.has_value()) { @@ -162,7 +165,7 @@ void CameraParticleCorrector::on_line_segments(const PointCloud2 & line_segments } } - cost_map_.set_height(mean_pose.position.z); + cost_map_.set_height(static_cast(mean_pose.position.z)); if (publish_weighted_particles) { for (auto & particle : weighted_particles.particles) { @@ -187,8 +190,7 @@ void CameraParticleCorrector::on_line_segments(const PointCloud2 & line_segments // DEBUG: just visualization { - Pose mean_pose = get_mean_pose(weighted_particles); - Sophus::SE3f transform = common::pose_to_se3(mean_pose); + Sophus::SE3f transform = common::pose_to_se3(get_mean_pose(weighted_particles)); pcl::PointCloud cloud = evaluate_cloud( common::transform_line_segments(line_segments_cloud, transform), transform.translation()); @@ -199,10 +201,9 @@ void CameraParticleCorrector::on_line_segments(const PointCloud2 & line_segments pcl::PointCloud rgb_cloud; pcl::PointCloud rgb_iffy_cloud; - float max_score = 0; - for (const auto p : cloud) { - max_score = std::max(max_score, std::abs(p.intensity)); - } + float max_score = std::accumulate( + cloud.begin(), cloud.end(), 0.0f, + [](float max_score, const auto & p) { return std::max(max_score, std::abs(p.intensity)); }); for (const auto p : cloud) { pcl::PointXYZRGB rgb; rgb.getVector3fMap() = p.getVector3fMap(); @@ -256,9 +257,9 @@ void CameraParticleCorrector::on_ll2(const PointCloud2 & ll2_msg) float abs_cos(const Eigen::Vector3f & t, float deg) { - const float radian = deg * M_PI / 180.0; + const auto radian = static_cast(deg * M_PI / 180.0); Eigen::Vector2f x(t.x(), t.y()); - Eigen::Vector2f y(autoware_universe_utils::cos(radian), autoware_universe_utils::sin(radian)); + Eigen::Vector2f y(autoware::universe_utils::cos(radian), autoware::universe_utils::sin(radian)); x.normalize(); return std::abs(x.dot(y)); } @@ -276,7 +277,7 @@ float CameraParticleCorrector::compute_logit( // NOTE: Close points are prioritized float squared_norm = (p - self_position).topRows(2).squaredNorm(); - float gain = exp(-far_weight_gain_ * squared_norm); // 0 < gain < 1 + float gain = std::exp(-far_weight_gain_ * squared_norm); // 0 < gain < 1 const CostMapValue v3 = cost_map_.at(p.topRows(2)); @@ -285,9 +286,10 @@ float CameraParticleCorrector::compute_logit( continue; } if (pn.label == 0) { // posteriori - logit += 0.2f * gain * (abs_cos(tangent, v3.angle) * v3.intensity - 0.5f); + logit += + 0.2f * gain * (abs_cos(tangent, static_cast(v3.angle)) * v3.intensity - 0.5f); } else { // apriori - logit += gain * (abs_cos(tangent, v3.angle) * v3.intensity - 0.5f); + logit += gain * (abs_cos(tangent, static_cast(v3.angle)) * v3.intensity - 0.5f); } } } @@ -307,11 +309,14 @@ pcl::PointCloud CameraParticleCorrector::evaluate_cloud( // NOTE: Close points are prioritized float squared_norm = (p - self_position).topRows(2).squaredNorm(); - float gain = std::exp(-far_weight_gain_ * squared_norm); CostMapValue v3 = cost_map_.at(p.topRows(2)); float logit = 0; - if (!v3.unmapped) logit = gain * (abs_cos(tangent, v3.angle) * v3.intensity - 0.5f); + if (!v3.unmapped) { + float gain = std::exp(-far_weight_gain_ * squared_norm); + + logit = gain * (abs_cos(tangent, static_cast(v3.angle)) * v3.intensity - 0.5f); + } pcl::PointXYZI xyzi(logit_to_prob(logit, 10.f)); xyzi.getVector3fMap() = p; diff --git a/localization/yabloc/yabloc_particle_filter/src/camera_corrector/filter_line_segments.cpp b/localization/yabloc/yabloc_particle_filter/src/camera_corrector/filter_line_segments.cpp index 3f782d85aec43..105f72920a6de 100644 --- a/localization/yabloc/yabloc_particle_filter/src/camera_corrector/filter_line_segments.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/camera_corrector/filter_line_segments.cpp @@ -22,33 +22,35 @@ namespace yabloc::modularized_particle_filter { -cv::Point2f cv2pt(const Eigen::Vector3f v) +cv::Point2f cv2pt(const Eigen::Vector3f & v) { - const float METRIC_PER_PIXEL = 0.05; - const float IMAGE_RADIUS = 400; - return {-v.y() / METRIC_PER_PIXEL + IMAGE_RADIUS, -v.x() / METRIC_PER_PIXEL + 2 * IMAGE_RADIUS}; + const float metric_per_pixel = 0.05; + const float image_radius = 400; + return {-v.y() / metric_per_pixel + image_radius, -v.x() / metric_per_pixel + 2 * image_radius}; } float normalized_atan2(const Eigen::Vector3f & t, float deg) { - float diff = std::atan2(t.y(), t.x()) - deg * M_PI / 180; - diff = std::fmod(diff, M_PI); + auto diff = static_cast(std::atan2(t.y(), t.x()) - deg * M_PI / 180); + diff = static_cast(std::fmod(diff, M_PI)); if (diff < 0) diff = -diff; if (diff < M_PI_2) { - return 1 - diff / M_PI_2; - } else if (diff < M_PI) { - return diff / M_PI_2 - 1; - } else { - throw std::runtime_error("invalid cos"); + return static_cast(1.0 - diff / M_PI_2); } + + if (diff < M_PI) { + return static_cast(diff / M_PI_2 - 1.0); + } + throw std::runtime_error("invalid cos"); } std::pair CameraParticleCorrector::filt(const LineSegments & iffy_lines) { - LineSegments good, bad; + LineSegments good; + LineSegments bad; if (!latest_pose_.has_value()) { throw std::runtime_error("latest_pose_ is nullopt"); } @@ -67,7 +69,7 @@ CameraParticleCorrector::filt(const LineSegments & iffy_lines) for (float distance = 0; distance < length; distance += 0.1f) { Eigen::Vector3f px = pose * (p2 + tangent * distance); CostMapValue v3 = cost_map_.at(px.topRows(2)); - float cos2 = normalized_atan2(pose.so3() * tangent, v3.angle); + float cos2 = normalized_atan2(pose.so3() * tangent, static_cast(v3.angle)); score += (cos2 * v3.intensity); count++; @@ -77,7 +79,7 @@ CameraParticleCorrector::filt(const LineSegments & iffy_lines) // rgb_cloud.push_back(rgb); } - if (score / count > 0.5f) { + if (score / static_cast(count) > 0.5f) { good.push_back(line); } else { bad.push_back(line); diff --git a/localization/yabloc/yabloc_particle_filter/src/camera_corrector/logit.cpp b/localization/yabloc/yabloc_particle_filter/src/camera_corrector/logit.cpp index d8bb5690b6fc4..65b7039e25051 100644 --- a/localization/yabloc/yabloc_particle_filter/src/camera_corrector/logit.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/camera_corrector/logit.cpp @@ -27,7 +27,7 @@ struct ProbToLogitTable ProbToLogitTable() { for (int i = 0; i < 100; ++i) { - float p = i / 100.0f; + float p = static_cast(i) / 100.0f; table_.at(i) = std::log(p / std::max(1 - p, 1e-6f)); } } @@ -37,7 +37,7 @@ struct ProbToLogitTable return table_.at(index); } - std::array table_; + std::array table_{}; } prob_to_logit_table; } // namespace @@ -47,9 +47,4 @@ float logit_to_prob(float logit, float gain) return 1.f / (1 + std::exp(-gain * logit)); } -float prob_to_logit(float prob) -{ - return prob_to_logit_table(prob); -} - } // namespace yabloc diff --git a/localization/yabloc/yabloc_particle_filter/src/common/mean.cpp b/localization/yabloc/yabloc_particle_filter/src/common/mean.cpp index 0710c8c4dca64..1a0ef05508c76 100644 --- a/localization/yabloc/yabloc_particle_filter/src/common/mean.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/common/mean.cpp @@ -70,7 +70,9 @@ geometry_msgs::msg::Pose get_mean_pose( mean_pose.position.y += particle.pose.position.y * normalized_weight; mean_pose.position.z += particle.pose.position.z * normalized_weight; - double yaw{0.0}, pitch{0.0}, roll{0.0}; + double yaw{0.0}; + double pitch{0.0}; + double roll{0.0}; tf2::getEulerYPR(particle.pose.orientation, yaw, pitch, roll); rolls.push_back(roll); @@ -93,43 +95,25 @@ Eigen::Matrix3f std_of_distribution(const yabloc_particle_filter::msg::ParticleA { using Particle = yabloc_particle_filter::msg::Particle; auto ori = get_mean_pose(array).orientation; - Eigen::Quaternionf orientation(ori.w, ori.x, ori.y, ori.z); - float invN = 1.f / array.particles.size(); + Eigen::Quaternionf orientation( + static_cast(ori.w), static_cast(ori.x), static_cast(ori.y), + static_cast(ori.z)); + float inv_n = 1.f / static_cast(array.particles.size()); Eigen::Vector3f mean = Eigen::Vector3f::Zero(); for (const Particle & p : array.particles) { Eigen::Affine3f affine = common::pose_to_affine(p.pose); mean += affine.translation(); } - mean *= invN; + mean *= inv_n; Eigen::Matrix3f sigma = Eigen::Matrix3f::Zero(); for (const Particle & p : array.particles) { Eigen::Affine3f affine = common::pose_to_affine(p.pose); Eigen::Vector3f d = affine.translation() - mean; d = orientation.conjugate() * d; - sigma += (d * d.transpose()) * invN; + sigma += (d * d.transpose()) * inv_n; } return sigma; } - -float std_of_weight(const yabloc_particle_filter::msg::ParticleArray & particle_array) -{ - using Particle = yabloc_particle_filter::msg::Particle; - - const float invN = 1.f / particle_array.particles.size(); - float mean = 0; - for (const Particle & p : particle_array.particles) { - mean += p.weight; - } - mean *= invN; - - float sigma = 0.0; - for (const Particle & p : particle_array.particles) { - sigma += (p.weight - mean) * (p.weight - mean); - } - sigma *= invN; - - return std::sqrt(sigma); -} } // namespace yabloc::modularized_particle_filter diff --git a/localization/yabloc/yabloc_particle_filter/src/common/particle_visualize_node.cpp b/localization/yabloc/yabloc_particle_filter/src/common/particle_visualize_node.cpp index b63e87b9462f1..48f2041595a77 100644 --- a/localization/yabloc/yabloc_particle_filter/src/common/particle_visualize_node.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/common/particle_visualize_node.cpp @@ -39,36 +39,12 @@ class ParticleVisualize : public rclcpp::Node "/particle_array", 10, std::bind(&ParticleVisualize::on_particles, this, _1)); // Publisher - pub_marker_array = this->create_publisher("/marker_array", 10); + pub_marker_array_ = this->create_publisher("/marker_array", 10); } private: rclcpp::Subscription::SharedPtr sub_particles_; - rclcpp::Publisher::SharedPtr pub_marker_array; - - std_msgs::msg::ColorRGBA compute_color(float value) const - { - float r = 1.0f, g = 1.0f, b = 1.0f; - // clang-format off - value = std::clamp(value, 0.0f, 1.0f); - if (value < 0.25f) { - r = 0; g = 4 * (value); - } else if (value < 0.5f) { - r = 0; b = 1 + 4 * (0.25f - value); - } else if (value < 0.75f) { - r = 4 * (value - 0.5f); b = 0; - } else { - g = 1 + 4 * (0.75f - value); b = 0; - } - // clang-format on - - std_msgs::msg::ColorRGBA rgba; - rgba.r = r; - rgba.g = g; - rgba.b = b; - rgba.a = 1.0f; - return rgba; - } + rclcpp::Publisher::SharedPtr pub_marker_array_; void on_particles(const ParticleArray & msg) { @@ -102,7 +78,7 @@ class ParticleVisualize : public rclcpp::Node marker.pose.position.z = p.pose.position.z; marker_array.markers.push_back(marker); } - pub_marker_array->publish(marker_array); + pub_marker_array_->publish(marker_array); } }; } // namespace yabloc::modularized_particle_filter diff --git a/localization/yabloc/yabloc_particle_filter/src/common/visualize.cpp b/localization/yabloc/yabloc_particle_filter/src/common/visualize.cpp index 888baf0bea0ac..17b22757b4bc5 100644 --- a/localization/yabloc/yabloc_particle_filter/src/common/visualize.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/common/visualize.cpp @@ -33,7 +33,7 @@ void ParticleVisualizer::publish(const ParticleArray & msg) float min = minmax_weight.first->weight; float max = minmax_weight.second->weight; max = std::max(max, min + 1e-7f); - auto boundWeight = [min, max](float raw) -> float { return (raw - min) / (max - min); }; + auto bound_weight = [min, max](float raw) -> float { return (raw - min) / (max - min); }; int id = 0; for (const Particle & p : msg.particles) { @@ -46,7 +46,7 @@ void ParticleVisualizer::publish(const ParticleArray & msg) marker.scale.y = 0.1; marker.scale.z = 0.1; marker.color = - static_cast(common::color_scale::rainbow(boundWeight(p.weight))); + static_cast(common::color_scale::rainbow(bound_weight(p.weight))); marker.pose.orientation = p.pose.orientation; marker.pose.position.x = p.pose.position.x; marker.pose.position.y = p.pose.position.y; diff --git a/localization/yabloc/yabloc_particle_filter/src/correction/abstract_corrector.cpp b/localization/yabloc/yabloc_particle_filter/src/correction/abstract_corrector.cpp index 5221256c9e392..1c8e2f5976a1d 100644 --- a/localization/yabloc/yabloc_particle_filter/src/correction/abstract_corrector.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/correction/abstract_corrector.cpp @@ -19,7 +19,7 @@ namespace yabloc::modularized_particle_filter AbstractCorrector::AbstractCorrector( const std::string & node_name, const rclcpp::NodeOptions & options) : Node(node_name, options), - acceptable_max_delay_(declare_parameter("acceptable_max_delay")), + acceptable_max_delay_(static_cast(declare_parameter("acceptable_max_delay"))), visualize_(declare_parameter("visualize")), logger_(rclcpp::get_logger("abstract_corrector")) { diff --git a/localization/yabloc/yabloc_particle_filter/src/correction/correction_util.cpp b/localization/yabloc/yabloc_particle_filter/src/correction/correction_util.cpp deleted file mode 100644 index 67ca4f5add947..0000000000000 --- a/localization/yabloc/yabloc_particle_filter/src/correction/correction_util.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2023 TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "yabloc_particle_filter/correction/correction_util.hpp" - -namespace yabloc::modularized_particle_filter -{ -std::optional find_synced_particles( - boost::circular_buffer circular_buffer, - rclcpp::Time time) -{ - for (int i{1}; i < static_cast(circular_buffer.size()); i++) { - if (rclcpp::Time(circular_buffer[i].header.stamp) < time) { - return circular_buffer[i]; - } - } - if (0 < static_cast(circular_buffer.size())) { - RCLCPP_WARN_STREAM( - rclcpp::get_logger("modularized_particle_filter.correction_util"), - "the sensor data is too old: " - << rclcpp::Time(circular_buffer[static_cast(circular_buffer.size()) - 1].header.stamp) - .seconds() - - time.seconds()); - } - return std::nullopt; -} -} // namespace yabloc::modularized_particle_filter diff --git a/localization/yabloc/yabloc_particle_filter/src/gnss_corrector/gnss_corrector_core.cpp b/localization/yabloc/yabloc_particle_filter/src/gnss_corrector/gnss_corrector_core.cpp index f1dd22426a07d..1ccb24bfbea5c 100644 --- a/localization/yabloc/yabloc_particle_filter/src/gnss_corrector/gnss_corrector_core.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/gnss_corrector/gnss_corrector_core.cpp @@ -21,7 +21,8 @@ namespace yabloc::modularized_particle_filter { GnssParticleCorrector::GnssParticleCorrector(const rclcpp::NodeOptions & options) : AbstractCorrector("gnss_particle_corrector", options), - mahalanobis_distance_threshold_(declare_parameter("mahalanobis_distance_threshold")), + mahalanobis_distance_threshold_( + static_cast(declare_parameter("mahalanobis_distance_threshold"))), weight_manager_(this) { using std::placeholders::_1; @@ -61,7 +62,8 @@ void GnssParticleCorrector::on_pose(const PoseCovStamped::ConstSharedPtr pose_ms const rclcpp::Time stamp = pose_msg->header.stamp; const auto & position = pose_msg->pose.pose.position; Eigen::Vector3f gnss_position; - gnss_position << position.x, position.y, position.z; + gnss_position << static_cast(position.x), static_cast(position.y), + static_cast(position.z); constexpr bool is_rtk_fixed = false; process(gnss_position, stamp, is_rtk_fixed); @@ -96,7 +98,6 @@ void GnssParticleCorrector::process( // Compute travel distance from last update position // If the distance is too short, skip weighting { - Eigen::Vector3f mean_position = common::pose_to_affine(mean_pose).translation(); if ((mean_position - last_mean_position_).squaredNorm() > 1) { this->set_weighted_particle_array(weighted_particles); last_mean_position_ = mean_position; @@ -113,12 +114,12 @@ void GnssParticleCorrector::publish_marker(const Eigen::Vector3f & position, boo using namespace std::literals::chrono_literals; using Point = geometry_msgs::msg::Point; - auto drawCircle = [](std::vector & points, float radius) -> void { - const int N = 10; - for (int theta = 0; theta < 2 * N + 1; theta++) { + auto draw_circle = [](std::vector & points, float radius) -> void { + const int n = 10; + for (int theta = 0; theta < 2 * n + 1; theta++) { geometry_msgs::msg::Point pt; - pt.x = radius * std::cos(theta * M_PI / N); - pt.y = radius * std::sin(theta * M_PI / N); + pt.x = radius * std::cos(theta * M_PI / n); + pt.y = radius * std::sin(theta * M_PI / n); points.push_back(pt); } }; @@ -135,11 +136,11 @@ void GnssParticleCorrector::publish_marker(const Eigen::Vector3f & position, boo marker.pose.position.y = position.y(); marker.pose.position.z = latest_height_.data; - float prob = i / 4.0f; + float prob = static_cast(i) / 4.0f; marker.color = static_cast(common::color_scale::rainbow(prob)); marker.color.a = 0.5f; marker.scale.x = 0.1; - drawCircle(marker.points, weight_manager_.inverse_normal_pdf(prob, is_rtk_fixed)); + draw_circle(marker.points, weight_manager_.inverse_normal_pdf(prob, is_rtk_fixed)); array_msg.markers.push_back(marker); } marker_pub_->publish(array_msg); @@ -151,7 +152,7 @@ GnssParticleCorrector::ParticleArray GnssParticleCorrector::weight_particles( ParticleArray weighted_particles{predicted_particles}; for (auto & particle : weighted_particles.particles) { - float distance = static_cast( + auto distance = static_cast( std::hypot(particle.pose.position.x - pose.x(), particle.pose.position.y - pose.y())); particle.weight = weight_manager_.normal_pdf(distance, is_rtk_fixed); } diff --git a/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/direct_cost_map.cpp b/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/direct_cost_map.cpp index 7da87e8050ebe..c6359a8c8f5fc 100644 --- a/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/direct_cost_map.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/direct_cost_map.cpp @@ -18,14 +18,14 @@ namespace yabloc { cv::Mat direct_cost_map(const cv::Mat & cost_map, const cv::Mat & intensity) { - constexpr int MAX_INT = std::numeric_limits::max(); + constexpr int max_int = std::numeric_limits::max(); std::vector> distances; distances.resize(cost_map.rows); for (int i = 0; i < cost_map.rows; i++) { distances.at(i).resize(cost_map.cols); - std::fill(distances.at(i).begin(), distances.at(i).end(), MAX_INT); - const uchar * intensity_ptr = intensity.ptr(i); + std::fill(distances.at(i).begin(), distances.at(i).end(), max_int); + const auto * intensity_ptr = intensity.ptr(i); for (int j = 0; j < cost_map.cols; j++) { if (intensity_ptr[j] == 0) distances.at(i).at(j) = 0; } @@ -36,7 +36,7 @@ cv::Mat direct_cost_map(const cv::Mat & cost_map, const cv::Mat & intensity) // Forward for (int r = 1; r < cost_map.rows; r++) { const uchar * upper_ptr = dst.ptr(r - 1); - uchar * current_ptr = dst.ptr(r); + auto * current_ptr = dst.ptr(r); for (int c = 1; c < cost_map.cols; c++) { int up = distances.at(r - 1).at(c); @@ -56,7 +56,7 @@ cv::Mat direct_cost_map(const cv::Mat & cost_map, const cv::Mat & intensity) // Backward for (int r = cost_map.rows - 2; r >= 0; r--) { const uchar * downer_ptr = dst.ptr(r + 1); - uchar * current_ptr = dst.ptr(r); + auto * current_ptr = dst.ptr(r); for (int c = cost_map.cols - 2; c >= 0; c--) { int down = distances.at(r + 1).at(c); @@ -76,24 +76,6 @@ cv::Mat direct_cost_map(const cv::Mat & cost_map, const cv::Mat & intensity) return dst; } -cv::Mat visualize_direction_map(const cv::Mat & cost_map) -{ - cv::Mat s = 255 * cv::Mat::ones(cost_map.size(), CV_8UC1); - cv::Mat v = 255 * cv::Mat::ones(cost_map.size(), CV_8UC1); - cv::Mat hsv, rgb; - cv::merge(std::vector{cost_map, s, v}, hsv); - cv::cvtColor(hsv, rgb, cv::COLOR_HSV2BGR); - - for (int r = 0; r < cost_map.rows; r++) { - const uchar * src_ptr = cost_map.ptr(r); - cv::Vec3b * dst_ptr = rgb.ptr(r); - for (int c = 0; c < cost_map.cols; c++) { - if (src_ptr[c] == 0) dst_ptr[c] = cv::Vec3b(0, 0, 0); - } - } - return rgb; -} - } // namespace yabloc // #include diff --git a/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/hierarchical_cost_map.cpp b/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/hierarchical_cost_map.cpp index 69f3642c8eff6..4f03e3d26ecb6 100644 --- a/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/hierarchical_cost_map.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/ll2_cost_map/hierarchical_cost_map.cpp @@ -24,20 +24,20 @@ namespace yabloc { -float Area::unit_length_ = -1; +float Area::unit_length = -1; HierarchicalCostMap::HierarchicalCostMap(rclcpp::Node * node) -: max_range_(node->declare_parameter("max_range")), - image_size_(node->declare_parameter("image_size")), +: max_range_(static_cast(node->declare_parameter("max_range"))), + image_size_(static_cast(node->declare_parameter("image_size"))), max_map_count_(10), logger_(node->get_logger()) { - Area::unit_length_ = max_range_; - float gamma = node->declare_parameter("gamma"); - gamma_converter.reset(gamma); + Area::unit_length = max_range_; + float gamma = static_cast(node->declare_parameter("gamma")); + gamma_converter_.reset(gamma); } -cv::Point2i HierarchicalCostMap::to_cv_point(const Area & area, const Eigen::Vector2f p) const +cv::Point2i HierarchicalCostMap::to_cv_point(const Area & area, const Eigen::Vector2f & p) const { Eigen::Vector2f relative = p - area.real_scale(); float px = relative.x() / max_range_ * image_size_; @@ -59,7 +59,7 @@ CostMapValue HierarchicalCostMap::at(const Eigen::Vector2f & position) cv::Point2i tmp = to_cv_point(key, position); cv::Vec3b b3 = cost_maps_.at(key).ptr(tmp.y)[tmp.x]; - return {b3[0] / 255.f, b3[1], b3[2] == 1}; + return {static_cast(b3[0]) / 255.f, b3[1], b3[2] == 1}; } void HierarchicalCostMap::set_height(float height) @@ -103,10 +103,13 @@ void HierarchicalCostMap::build_map(const Area & area) { if (!cloud_.has_value()) return; - cv::Mat image = 255 * cv::Mat::ones(cv::Size(image_size_, image_size_), CV_8UC1); - cv::Mat orientation = cv::Mat::zeros(cv::Size(image_size_, image_size_), CV_8UC1); + cv::Mat image = + 255 * + cv::Mat::ones(cv::Size(static_cast(image_size_), static_cast(image_size_)), CV_8UC1); + cv::Mat orientation = + cv::Mat::zeros(cv::Size(static_cast(image_size_), static_cast(image_size_)), CV_8UC1); - auto cvPoint = [this, area](const Eigen::Vector3f & p) -> cv::Point { + auto cv_point = [this, area](const Eigen::Vector3f & p) -> cv::Point { return this->to_cv_point(area, p.topRows(2)); }; @@ -117,12 +120,12 @@ void HierarchicalCostMap::build_map(const Area & area) if (std::abs(pn.normal_z - *height_) > 4) continue; } - cv::Point2i from = cvPoint(pn.getVector3fMap()); - cv::Point2i to = cvPoint(pn.getNormalVector3fMap()); + cv::Point2i from = cv_point(pn.getVector3fMap()); + cv::Point2i to = cv_point(pn.getNormalVector3fMap()); - float radian = std::atan2(from.y - to.y, from.x - to.x); + auto radian = static_cast(std::atan2(from.y - to.y, from.x - to.x)); if (radian < 0) radian += M_PI; - float degree = radian * 180 / M_PI; + auto degree = static_cast(radian * 180 / M_PI); cv::line(image, from, to, cv::Scalar::all(0), 1); cv::line(orientation, from, to, cv::Scalar::all(degree), 1); @@ -142,7 +145,7 @@ void HierarchicalCostMap::build_map(const Area & area) cv::Mat directed_cost_map; cv::merge( - std::vector{gamma_converter(distance), whole_orientation, available_area}, + std::vector{gamma_converter_(distance), whole_orientation, available_area}, directed_cost_map); cost_maps_[area] = directed_cost_map; @@ -169,13 +172,14 @@ HierarchicalCostMap::MarkerArray HierarchicalCostMap::show_map_range() const marker.header.frame_id = "map"; marker.id = id++; marker.type = Marker::LINE_STRIP; - marker.color = autoware_universe_utils::createMarkerColor(0, 0, 1.0f, 1.0f); + marker.color = autoware::universe_utils::createMarkerColor(0, 0, 1.0f, 1.0f); marker.scale.x = 0.1; Eigen::Vector2f xy = area.real_scale(); marker.points.push_back(point_msg(xy.x(), xy.y())); - marker.points.push_back(point_msg(xy.x() + area.unit_length_, xy.y())); - marker.points.push_back(point_msg(xy.x() + area.unit_length_, xy.y() + area.unit_length_)); - marker.points.push_back(point_msg(xy.x(), xy.y() + area.unit_length_)); + marker.points.push_back(point_msg(xy.x() + yabloc::Area::unit_length, xy.y())); + marker.points.push_back( + point_msg(xy.x() + yabloc::Area::unit_length, xy.y() + yabloc::Area::unit_length)); + marker.points.push_back(point_msg(xy.x(), xy.y() + yabloc::Area::unit_length)); marker.points.push_back(point_msg(xy.x(), xy.y())); array_msg.markers.push_back(marker); } @@ -188,27 +192,33 @@ cv::Mat HierarchicalCostMap::get_map_image(const Pose & pose) // return cv::Mat::zeros(cv::Size(image_size_, image_size_), CV_8UC3); Eigen::Vector2f center; - center << pose.position.x, pose.position.y; + center << static_cast(pose.position.x), static_cast(pose.position.y); - float w = pose.orientation.w; - float z = pose.orientation.z; - Eigen::Matrix2f R = Eigen::Rotation2Df(2.f * std::atan2(z, w) - M_PI_2).toRotationMatrix(); + auto w = static_cast(pose.orientation.w); + auto z = static_cast(pose.orientation.z); + Eigen::Matrix2f r = + Eigen::Rotation2Df(static_cast(2.f * std::atan2(z, w) - M_PI_2)).toRotationMatrix(); - auto toVector2f = [this, center, R](float h, float w) -> Eigen::Vector2f { + auto to_vector2f = [this, center, r](float h, float w) -> Eigen::Vector2f { Eigen::Vector2f offset; offset.x() = (w / this->image_size_ - 0.5f) * this->max_range_ * 1.5f; offset.y() = -(h / this->image_size_ - 0.5f) * this->max_range_ * 1.5f; - return center + R * offset; + return center + r * offset; }; - cv::Mat image = cv::Mat::zeros(cv::Size(image_size_, image_size_), CV_8UC3); - for (int w = 0; w < image_size_; w++) { - for (int h = 0; h < image_size_; h++) { - CostMapValue v3 = this->at(toVector2f(h, w)); + cv::Mat image = + cv::Mat::zeros(cv::Size(static_cast(image_size_), static_cast(image_size_)), CV_8UC3); + for (int w_index = 0; static_cast(w_index) < image_size_; w_index++) { + for (int h_index = 0; static_cast(h_index) < image_size_; h_index++) { + CostMapValue v3 = + this->at(to_vector2f(static_cast(h_index), static_cast(w_index))); if (v3.unmapped) - image.at(h, w) = cv::Vec3b(v3.angle, 255 * v3.intensity, 50); + image.at(h_index, w_index) = + cv::Vec3b(v3.angle, static_cast(255 * v3.intensity), 50); else - image.at(h, w) = cv::Vec3b(v3.angle, 255 * v3.intensity, 255 * v3.intensity); + image.at(h_index, w_index) = cv::Vec3b( + v3.angle, static_cast(255 * v3.intensity), + static_cast(255 * v3.intensity)); } } @@ -235,7 +245,8 @@ void HierarchicalCostMap::erase_obsolete() cv::Mat HierarchicalCostMap::create_available_area_image(const Area & area) const { - cv::Mat available_area = cv::Mat::zeros(cv::Size(image_size_, image_size_), CV_8UC1); + cv::Mat available_area = + cv::Mat::zeros(cv::Size(static_cast(image_size_), static_cast(image_size_)), CV_8UC1); if (bounding_boxes_.empty()) return available_area; // Define current area diff --git a/localization/yabloc/yabloc_particle_filter/src/prediction/predictor.cpp b/localization/yabloc/yabloc_particle_filter/src/prediction/predictor.cpp index 8046d43dc34a3..701a2b8763fa3 100644 --- a/localization/yabloc/yabloc_particle_filter/src/prediction/predictor.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/prediction/predictor.cpp @@ -33,10 +33,13 @@ namespace yabloc::modularized_particle_filter Predictor::Predictor(const rclcpp::NodeOptions & options) : Node("predictor", options), - number_of_particles_(declare_parameter("num_of_particles")), - resampling_interval_seconds_(declare_parameter("resampling_interval_seconds")), - static_linear_covariance_(declare_parameter("static_linear_covariance")), - static_angular_covariance_(declare_parameter("static_angular_covariance")), + number_of_particles_(static_cast(declare_parameter("num_of_particles"))), + resampling_interval_seconds_( + static_cast(declare_parameter("resampling_interval_seconds"))), + static_linear_covariance_( + static_cast(declare_parameter("static_linear_covariance"))), + static_angular_covariance_( + static_cast(declare_parameter("static_angular_covariance"))), cov_xx_yy_{this->template declare_parameter>("cov_xx_yy")} { tf2_broadcaster_ = std::make_unique(*this); @@ -93,11 +96,11 @@ void Predictor::on_trigger_service( RCLCPP_INFO_STREAM(get_logger(), "yabloc particle filter is deactivated"); } - const bool before_activated_ = yabloc_activated_; + const bool before_activated = yabloc_activated_; yabloc_activated_ = request->data; response->success = true; - if (yabloc_activated_ && (!before_activated_)) { + if (yabloc_activated_ && (!before_activated)) { RCLCPP_INFO_STREAM(get_logger(), "restart particle filter"); if (latest_ekf_pose_ptr_) { on_initial_pose(latest_ekf_pose_ptr_); @@ -113,10 +116,11 @@ void Predictor::on_initial_pose(const PoseCovStamped::ConstSharedPtr initialpose // Publish initial pose marker auto position = initialpose->pose.pose.position; Eigen::Vector3f pos_vec3f; - pos_vec3f << position.x, position.y, position.z; + pos_vec3f << static_cast(position.x), static_cast(position.y), + static_cast(position.z); auto orientation = initialpose->pose.pose.orientation; - float theta = 2 * std::atan2(orientation.z, orientation.w); + auto theta = static_cast(2 * std::atan2(orientation.z, orientation.w)); Eigen::Vector3f tangent; tangent << std::cos(theta), std::sin(theta), 0; @@ -152,7 +156,7 @@ void Predictor::initialize_particles(const PoseCovStamped & initialpose) pose.position.x += noise.x(); pose.position.y += noise.y(); - float noised_yaw = util::normalize_radian(yaw + util::nrand(yaw_std)); + auto noised_yaw = static_cast(util::normalize_radian(yaw + util::nrand(yaw_std))); pose.orientation.w = std::cos(noised_yaw / 2.0); pose.orientation.x = 0.0; pose.orientation.y = 0.0; @@ -184,14 +188,14 @@ void Predictor::on_twist_cov(const TwistCovStamped::ConstSharedPtr twist_cov) } void Predictor::update_with_dynamic_noise( - ParticleArray & particle_array, const TwistCovStamped & twist, double dt) + ParticleArray & particle_array, const TwistCovStamped & twist, double dt) const { // linear & angular velocity - const float linear_x = twist.twist.twist.linear.x; - const float angular_z = twist.twist.twist.angular.z; + const auto linear_x = static_cast(twist.twist.twist.linear.x); + const auto angular_z = static_cast(twist.twist.twist.angular.z); // standard deviation of linear & angular velocity - const float std_linear_x = std::sqrt(twist.twist.covariance[6 * 0 + 0]); - const float std_angular_z = std::sqrt(twist.twist.covariance[6 * 5 + 5]); + const auto std_linear_x = static_cast(std::sqrt(twist.twist.covariance[6 * 0 + 0])); + const auto std_angular_z = static_cast(std::sqrt(twist.twist.covariance[6 * 5 + 5])); // 1[rad/s] = 60[deg/s] // 1[m/s] = 3.6[km/h] const float truncated_angular_std = @@ -272,7 +276,7 @@ void Predictor::on_weighted_particles(const ParticleArray::ConstSharedPtr weight try { particle_array = resampler_ptr_->add_weight_retroactively(particle_array, *weighted_particles_ptr); - } catch (const resampling_skip_exception & e) { + } catch (const ResamplingSkipException & e) { // Do nothing (just skipping the resample()) RCLCPP_INFO_STREAM(this->get_logger(), "skipped resampling"); } @@ -284,16 +288,16 @@ void Predictor::on_weighted_particles(const ParticleArray::ConstSharedPtr weight // Exit if previous resampling time is not valid. if (!previous_resampling_time_opt_.has_value()) { previous_resampling_time_opt_ = current_time; - throw resampling_skip_exception("previous resampling time is not valid"); + throw ResamplingSkipException("previous resampling time is not valid"); } if (current_time - previous_resampling_time_opt_.value() <= resampling_interval_seconds_) { - throw resampling_skip_exception("it is not time to resample"); + throw ResamplingSkipException("it is not time to resample"); } particle_array = resampler_ptr_->resample(particle_array); previous_resampling_time_opt_ = current_time; - } catch (const resampling_skip_exception & e) { + } catch (const ResamplingSkipException & e) { void(); // Do nothing (just skipping the resample()) } @@ -397,7 +401,7 @@ Predictor::PoseCovStamped Predictor::rectify_initial_pose( msg.pose.pose.orientation.z = std::sin(theta / 2); Eigen::Matrix2f cov; - cov << cov_xx_yy_.at(0), 0, 0, cov_xx_yy_.at(1); + cov << static_cast(cov_xx_yy_.at(0)), 0, 0, static_cast(cov_xx_yy_.at(1)); Eigen::Rotation2D r(theta); cov = r * cov * r.inverse(); diff --git a/localization/yabloc/yabloc_particle_filter/src/prediction/resampler.cpp b/localization/yabloc/yabloc_particle_filter/src/prediction/resampler.cpp index cc4cbc3730e0c..c8c3971ba85b2 100644 --- a/localization/yabloc/yabloc_particle_filter/src/prediction/resampler.cpp +++ b/localization/yabloc/yabloc_particle_filter/src/prediction/resampler.cpp @@ -65,7 +65,7 @@ RetroactiveResampler::ParticleArray RetroactiveResampler::add_weight_retroactive { if (!check_weighted_particles_validity(weighted_particles)) { RCLCPP_ERROR_STREAM(logger_, "weighted_particles has invalid data"); - throw resampling_skip_exception("weighted_particles has invalid data"); + throw ResamplingSkipException("weighted_particles has invalid data"); } // Initialize corresponding index lookup table @@ -143,7 +143,7 @@ RetroactiveResampler::ParticleArray RetroactiveResampler::resample( // Copy particle to resampled variable resampled_particles.particles[m] = predicted_particles.particles[predicted_particle_index]; // Reset weight uniformly - resampled_particles.particles[m].weight = num_of_particles_inv; + resampled_particles.particles[m].weight = static_cast(num_of_particles_inv); // Make history resampling_history_[latest_resampling_generation_][m] = predicted_particle_index; } @@ -157,7 +157,7 @@ RetroactiveResampler::ParticleArray RetroactiveResampler::resample( return resampled_particles; } -double RetroactiveResampler::random_from_01_uniformly() const +double RetroactiveResampler::random_from_01_uniformly() { static std::default_random_engine engine(0); std::uniform_real_distribution dist(0.0, 1.0); diff --git a/localization/yabloc/yabloc_particle_filter/test/src/test_resampler.cpp b/localization/yabloc/yabloc_particle_filter/test/src/test_resampler.cpp index 124b0500e010e..915237b2b125c 100644 --- a/localization/yabloc/yabloc_particle_filter/test/src/test_resampler.cpp +++ b/localization/yabloc/yabloc_particle_filter/test/src/test_resampler.cpp @@ -22,20 +22,20 @@ namespace mpf = yabloc::modularized_particle_filter; using Particle = yabloc_particle_filter::msg::Particle; using ParticleArray = yabloc_particle_filter::msg::ParticleArray; -constexpr int PARTICLE_COUNT = 10; -constexpr int HISTORY_SIZE = 10; +constexpr int particle_count = 10; +constexpr int history_size = 10; TEST(ResamplerTestSuite, outOfHistory) { - mpf::RetroactiveResampler resampler(PARTICLE_COUNT, HISTORY_SIZE); + mpf::RetroactiveResampler resampler(particle_count, history_size); ParticleArray predicted; ParticleArray weighted; predicted.header.stamp = rclcpp::Time(0); predicted.id = 0; weighted.id = 0; - predicted.particles.resize(PARTICLE_COUNT); - weighted.particles.resize(PARTICLE_COUNT); + predicted.particles.resize(particle_count); + weighted.particles.resize(particle_count); for (auto & p : predicted.particles) p.weight = 1; for (auto & p : weighted.particles) p.weight = 1; @@ -64,7 +64,7 @@ TEST(ResamplerTestSuite, outOfHistory) } // Iterate resampling to fill all history - for (int t = 0; t < HISTORY_SIZE; ++t) { + for (int t = 0; t < history_size; ++t) { auto resampled = resampler.resample(predicted); EXPECT_EQ(resampled.id, t + 1); predicted = resampled; @@ -85,26 +85,26 @@ TEST(ResamplerTestSuite, outOfHistory) TEST(ResamplerTestSuite, simpleResampling) { - mpf::RetroactiveResampler resampler(PARTICLE_COUNT, HISTORY_SIZE); + mpf::RetroactiveResampler resampler(particle_count, history_size); ParticleArray predicted; predicted.header.stamp = rclcpp::Time(0); - predicted.particles.resize(PARTICLE_COUNT); + predicted.particles.resize(particle_count); predicted.id = 0; - for (int i = 0; i < PARTICLE_COUNT; ++i) predicted.particles.at(i).weight = 1; + for (int i = 0; i < particle_count; ++i) predicted.particles.at(i).weight = 1; ParticleArray weighted; - weighted.particles.resize(PARTICLE_COUNT); + weighted.particles.resize(particle_count); // Update by uniform distribution { // Weight weighted.id = 0; - for (int i = 0; i < PARTICLE_COUNT; ++i) weighted.particles.at(i).weight = 0.5; + for (int i = 0; i < particle_count; ++i) weighted.particles.at(i).weight = 0.5; ParticleArray array1 = resampler.add_weight_retroactively(predicted, weighted); // All weights must be equal - for (const auto & p : array1.particles) EXPECT_NEAR(p.weight, 1.0 / PARTICLE_COUNT, 1e-3); + for (const auto & p : array1.particles) EXPECT_NEAR(p.weight, 1.0 / particle_count, 1e-3); // Resample predicted = array1; @@ -117,10 +117,10 @@ TEST(ResamplerTestSuite, simpleResampling) { // Weight weighted.id = 0; - for (int i = 0; i < PARTICLE_COUNT; ++i) { + for (int i = 0; i < particle_count; ++i) { auto & p = predicted.particles.at(i); auto & q = weighted.particles.at(i); - if (i < PARTICLE_COUNT / 2) { + if (i < particle_count / 2) { p.pose.position.x = 1; q.weight = 2.0; } else { @@ -131,12 +131,12 @@ TEST(ResamplerTestSuite, simpleResampling) ParticleArray array1 = resampler.add_weight_retroactively(predicted, weighted); // All weight must match with following expectation - for (int i = 0; i < PARTICLE_COUNT; ++i) { + for (int i = 0; i < particle_count; ++i) { const auto & p = array1.particles.at(i); - if (i < PARTICLE_COUNT / 2) { - EXPECT_NEAR(p.weight, 2.0 / 1.5 / PARTICLE_COUNT, 1e-3f); + if (i < particle_count / 2) { + EXPECT_NEAR(p.weight, 2.0 / 1.5 / particle_count, 1e-3f); } else { - EXPECT_NEAR(p.weight, 1.0 / 1.5 / PARTICLE_COUNT, 1e-3f); + EXPECT_NEAR(p.weight, 1.0 / 1.5 / particle_count, 1e-3f); } } @@ -146,32 +146,33 @@ TEST(ResamplerTestSuite, simpleResampling) predicted = resampled; EXPECT_EQ(predicted.id, 2); - int centroid = 0; - for (const auto & p : predicted.particles) centroid += p.pose.position.x; + int centroid = std::accumulate( + predicted.particles.begin(), predicted.particles.end(), 0, + [](int sum, const auto & p) { return sum + static_cast(p.pose.position.x); }); EXPECT_GT(centroid, 0); } } TEST(ResamplerTestSuite, resamplingWithRetrogression) { - mpf::RetroactiveResampler resampler(PARTICLE_COUNT, HISTORY_SIZE); + mpf::RetroactiveResampler resampler(particle_count, history_size); ParticleArray predicted; predicted.header.stamp = rclcpp::Time(0); - predicted.particles.resize(PARTICLE_COUNT); + predicted.particles.resize(particle_count); predicted.id = 0; - for (int i = 0; i < PARTICLE_COUNT; ++i) { + for (int i = 0; i < particle_count; ++i) { auto & p = predicted.particles.at(i); p.weight = 1.0; - if (i < PARTICLE_COUNT / 2) + if (i < particle_count / 2) p.pose.position.x = 1; else p.pose.position.x = -1; } // Fill all history with biased weighted particles - for (int p = 0; p < HISTORY_SIZE; ++p) { + for (int p = 0; p < history_size; ++p) { auto resampled = resampler.resample(predicted); predicted = resampled; EXPECT_EQ(predicted.id, p + 1); @@ -179,18 +180,17 @@ TEST(ResamplerTestSuite, resamplingWithRetrogression) // Update by ancient measurement { - double before_centroid = 0; - for (const auto & p : predicted.particles) { - before_centroid += p.pose.position.x * p.weight; - } + double before_centroid = std::accumulate( + predicted.particles.begin(), predicted.particles.end(), 0.0, + [](double sum, const auto & p) { return sum + p.pose.position.x * p.weight; }); // Weight ParticleArray weighted; - weighted.particles.resize(PARTICLE_COUNT); + weighted.particles.resize(particle_count); weighted.id = 1; // ancient generation id - for (int i = 0; i < PARTICLE_COUNT; ++i) { + for (int i = 0; i < particle_count; ++i) { auto & q = weighted.particles.at(i); - if (i < PARTICLE_COUNT / 2) { + if (i < particle_count / 2) { q.weight = 2.0; } else { q.weight = 1.0; @@ -199,10 +199,10 @@ TEST(ResamplerTestSuite, resamplingWithRetrogression) predicted = resampler.add_weight_retroactively(predicted, weighted); - double after_centroid = 0; - for (const auto & p : predicted.particles) { - after_centroid += p.pose.position.x * p.weight; - } + double after_centroid = std::accumulate( + predicted.particles.begin(), predicted.particles.end(), 0.0, + [](double sum, const auto & p) { return sum + p.pose.position.x * p.weight; }); + EXPECT_TRUE(after_centroid > before_centroid); } } diff --git a/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt b/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt index 91b272b413c4c..2e6d31ae2f12b 100644 --- a/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt +++ b/localization/yabloc/yabloc_pose_initializer/CMakeLists.txt @@ -20,18 +20,22 @@ find_package(OpenCV REQUIRED) # =================================================== # Executable # Camera -set(TARGET camera_pose_initializer_node) -ament_auto_add_executable(${TARGET} +ament_auto_add_library(${PROJECT_NAME} src/camera/lane_image.cpp src/camera/marker_module.cpp src/camera/projector_module.cpp src/camera/semantic_segmentation.cpp - src/camera/camera_pose_initializer_core.cpp - src/camera/camera_pose_initializer_node.cpp) -target_include_directories(${TARGET} PUBLIC include) -target_include_directories(${TARGET} SYSTEM PRIVATE ${EIGEN3_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}) -target_link_libraries(${TARGET} ${PCL_LIBRARIES} Sophus::Sophus) -ament_target_dependencies(${TARGET} OpenCV) + src/camera/camera_pose_initializer_core.cpp) +target_include_directories(${PROJECT_NAME} PUBLIC include) +target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${EIGEN3_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}) +target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES} Sophus::Sophus) +ament_target_dependencies(${PROJECT_NAME} OpenCV) + +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "yabloc::CameraPoseInitializer" + EXECUTABLE ${PROJECT_NAME}_node + EXECUTOR MultiThreadedExecutor +) # =================================================== ament_auto_package(INSTALL_TO_SHARE config launch) diff --git a/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp b/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp index 979d1b370699e..9a382f71e6b33 100644 --- a/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp +++ b/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/camera_pose_initializer.hpp @@ -43,7 +43,7 @@ class CameraPoseInitializer : public rclcpp::Node using LaneletMapBin = autoware_map_msgs::msg::LaneletMapBin; using RequestPoseAlignment = tier4_localization_msgs::srv::PoseWithCovarianceStamped; - CameraPoseInitializer(); + explicit CameraPoseInitializer(const rclcpp::NodeOptions & options = rclcpp::NodeOptions()); private: const int angle_resolution_; @@ -65,9 +65,9 @@ class CameraPoseInitializer : public rclcpp::Node void on_map(const LaneletMapBin & msg); void on_service( - const RequestPoseAlignment::Request::SharedPtr, - RequestPoseAlignment::Response::SharedPtr request); - PoseCovStamped create_rectified_initial_pose( + const RequestPoseAlignment::Request::SharedPtr request, + RequestPoseAlignment::Response::SharedPtr response); + static PoseCovStamped create_rectified_initial_pose( const Eigen::Vector3f & pos, double yaw_angle_rad, const PoseCovStamped & src_msg); std::optional estimate_pose( diff --git a/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/semantic_segmentation.hpp b/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/semantic_segmentation.hpp index 061d0548c6f18..4558a503b8ac4 100644 --- a/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/semantic_segmentation.hpp +++ b/localization/yabloc/yabloc_pose_initializer/include/yabloc_pose_initializer/camera/semantic_segmentation.hpp @@ -31,13 +31,13 @@ class SemanticSegmentation static void print_error_message(const rclcpp::Logger & logger); private: - cv::Mat make_blob(const cv::Mat & image); + static cv::Mat make_blob(const cv::Mat & image); - cv::Mat convert_blob_to_image(const cv::Mat & blob); + static cv::Mat convert_blob_to_image(const cv::Mat & blob); - cv::Mat normalize(const cv::Mat & mask, double score_threshold = 0.5); + static cv::Mat normalize(const cv::Mat & mask, double score_threshold = 0.5); - cv::Mat draw_overlay(const cv::Mat & image, const cv::Mat & segmentation); + static cv::Mat draw_overlay(const cv::Mat & image, const cv::Mat & segmentation); struct Impl; std::shared_ptr impl_{nullptr}; diff --git a/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml b/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml index 83c2c8fe09287..964cc61420b9c 100644 --- a/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml +++ b/localization/yabloc/yabloc_pose_initializer/launch/yabloc_pose_initializer.launch.xml @@ -2,7 +2,7 @@ - + diff --git a/localization/yabloc/yabloc_pose_initializer/package.xml b/localization/yabloc/yabloc_pose_initializer/package.xml index 7ed16c9a8b82d..359557ac94090 100644 --- a/localization/yabloc/yabloc_pose_initializer/package.xml +++ b/localization/yabloc/yabloc_pose_initializer/package.xml @@ -16,12 +16,13 @@ autoware_cmake rosidl_default_generators + autoware_lanelet2_extension autoware_map_msgs cv_bridge geometry_msgs - lanelet2_extension libopencv-dev rclcpp + rclcpp_components sensor_msgs tier4_localization_msgs visualization_msgs diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp b/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp index 083e7dd5bcd43..6aff744ef4975 100644 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp +++ b/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_core.cpp @@ -14,20 +14,25 @@ #include "yabloc_pose_initializer/camera/camera_pose_initializer.hpp" -#include -#include -#include +#include +#include +#include #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif #include namespace yabloc { -CameraPoseInitializer::CameraPoseInitializer() -: Node("camera_pose_initializer"), angle_resolution_(declare_parameter("angle_resolution")) +CameraPoseInitializer::CameraPoseInitializer(const rclcpp::NodeOptions & options) +: Node("camera_pose_initializer", options), + angle_resolution_(static_cast(declare_parameter("angle_resolution"))) { using std::placeholders::_1; using std::placeholders::_2; @@ -57,7 +62,7 @@ CameraPoseInitializer::CameraPoseInitializer() } } -cv::Mat bitwise_and_3ch(const cv::Mat src1, const cv::Mat src2) +cv::Mat bitwise_and_3ch(const cv::Mat & src1, const cv::Mat & src2) { std::vector src1_array; std::vector src2_array; @@ -74,7 +79,7 @@ cv::Mat bitwise_and_3ch(const cv::Mat src1, const cv::Mat src2) return merged; } -int count_non_zero(cv::Mat image_3ch) +int count_non_zero(const cv::Mat & image_3ch) { std::vector images; cv::split(image_3ch, images); @@ -148,13 +153,13 @@ std::optional CameraPoseInitializer::estimate_pose( // consider lanelet direction float gain = 1; if (lane_angle_rad) { - gain = 2 + std::cos((lane_angle_rad.value() - angle_rad) / 2.0); + gain = static_cast(2 + std::cos((lane_angle_rad.value() - angle_rad) / 2.0)); } // If count_non_zero() returns 0 everywhere, the orientation is chosen by the only gain - const float score = gain * (1 + count_non_zero(dst)); + const float score = gain * static_cast(1 + count_non_zero(dst)); scores.push_back(score); - angles_rad.push_back(angle_rad); + angles_rad.push_back(static_cast(angle_rad)); } marker_module_->publish_marker(scores, angles_rad, position); @@ -171,7 +176,7 @@ void CameraPoseInitializer::on_map(const LaneletMapBin & msg) lane_image_ = std::make_unique(lanelet_map); const_lanelets_.clear(); - for (auto l : lanelet_map->laneletLayer) { + for (const auto & l : lanelet_map->laneletLayer) { const_lanelets_.push_back(l); } } @@ -186,7 +191,9 @@ void CameraPoseInitializer::on_service( const auto query_pos = request->pose_with_covariance.pose.pose.position; const auto orientation = request->pose_with_covariance.pose.pose.orientation; const double yaw_std_rad = std::sqrt(query_pos_with_cov.pose.covariance.at(35)); - const Eigen::Vector3f pos_vec3f(query_pos.x, query_pos.y, query_pos.z); + const Eigen::Vector3f pos_vec3f( + static_cast(query_pos.x), static_cast(query_pos.y), + static_cast(query_pos.z)); RCLCPP_INFO_STREAM(get_logger(), "Given initial position " << pos_vec3f.transpose()); // Estimate orientation @@ -216,3 +223,6 @@ CameraPoseInitializer::PoseCovStamped CameraPoseInitializer::create_rectified_in } } // namespace yabloc + +#include +RCLCPP_COMPONENTS_REGISTER_NODE(yabloc::CameraPoseInitializer) diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/lane_image.cpp b/localization/yabloc/yabloc_pose_initializer/src/camera/lane_image.cpp index 52ab8c8205815..d6949c43dbfc5 100644 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/lane_image.cpp +++ b/localization/yabloc/yabloc_pose_initializer/src/camera/lane_image.cpp @@ -27,22 +27,22 @@ namespace yabloc { namespace bg = boost::geometry; -typedef bg::model::d2::point_xy point_t; -typedef bg::model::box box_t; -typedef bg::model::polygon polygon_t; +using point_t = bg::model::d2::point_xy; +using box_t = bg::model::box; +using polygon_t = bg::model::polygon; -LaneImage::LaneImage(lanelet::LaneletMapPtr map) : map_(map) +LaneImage::LaneImage(lanelet::LaneletMapPtr map) : map_(std::move(map)) { } cv::Point2i to_cv_point(const Eigen::Vector3f & v) { - const float image_size_ = 800; - const float max_range_ = 30; + const float image_size = 800; + const float max_range = 30; cv::Point pt; - pt.x = -v.y() / max_range_ * image_size_ * 0.5f + image_size_ / 2.f; - pt.y = -v.x() / max_range_ * image_size_ * 0.5f + image_size_ / 2.f; + pt.x = static_cast(-v.y() / max_range * image_size * 0.5f + image_size / 2.f); + pt.y = static_cast(-v.x() / max_range * image_size * 0.5f + image_size / 2.f); return pt; } @@ -59,7 +59,8 @@ void draw_lane(cv::Mat & image, const polygon_t & polygon) { std::vector contour; for (auto p : polygon.outer()) { - cv::Point2i pt = to_cv_point(Eigen::Vector3f(p.x(), p.y(), 0)); + cv::Point2i pt = + to_cv_point(Eigen::Vector3f(static_cast(p.x()), static_cast(p.y()), 0)); contour.push_back(pt); } @@ -71,8 +72,9 @@ void draw_lane(cv::Mat & image, const polygon_t & polygon) void draw_line(cv::Mat & image, const lanelet::LineString2d & line, geometry_msgs::msg::Point xyz) { std::vector contour; - for (auto p : line) { - cv::Point2i pt = to_cv_point(Eigen::Vector3f(p.x() - xyz.x, p.y() - xyz.y, 0)); + for (const auto & p : line) { + cv::Point2i pt = to_cv_point( + Eigen::Vector3f(static_cast(p.x() - xyz.x), static_cast(p.y() - xyz.y), 0)); contour.push_back(pt); } cv::polylines(image, contour, false, cv::Scalar(0, 0, 255), 2); @@ -83,7 +85,9 @@ cv::Mat LaneImage::get_image(const Pose & pose) const auto xyz = pose.position; box_t box(point_t(-20, -20), point_t(20, 20)); - cv::Mat image = cv::Mat::zeros(cv::Size(800, 800), CV_8UC3); + cv::Mat image = cv::Mat::zeros(cv::Size(800, 800), CV_8UC3); // NOLINT + // suppress hicpp-signed-bitwise + // from OpenCV std::vector joint_lanes; for (auto lanelet : map_->laneletLayer) { @@ -91,7 +95,7 @@ cv::Mat LaneImage::get_image(const Pose & pose) for (auto right : lanelet.rightBound2d()) { polygon.outer().push_back(point_t(right.x() - xyz.x, right.y() - xyz.y)); } - for (auto left : boost::adaptors::reverse(lanelet.leftBound2d())) { + for (const auto & left : boost::adaptors::reverse(lanelet.leftBound2d())) { polygon.outer().push_back(point_t(left.x() - xyz.x, left.y() - xyz.y)); } diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/marker_module.cpp b/localization/yabloc/yabloc_pose_initializer/src/camera/marker_module.cpp index 8a5fc65e2fac3..0d4dd8bb373e5 100644 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/marker_module.cpp +++ b/localization/yabloc/yabloc_pose_initializer/src/camera/marker_module.cpp @@ -28,22 +28,22 @@ void MarkerModule::publish_marker( const std::vector & scores, const std::vector & angles, const Eigen::Vector3f & position) { - const int N = scores.size(); + const int n = static_cast(scores.size()); auto minmax = std::minmax_element(scores.begin(), scores.end()); auto normalize = [minmax](int score) -> float { - return static_cast(score - *minmax.first) / + return static_cast(static_cast(score) - *minmax.first) / std::max(1e-4f, static_cast(*minmax.second - *minmax.first)); }; MarkerArray array; - for (int i = 0; i < N; i++) { + for (int i = 0; i < n; i++) { Marker marker; marker.header.frame_id = "map"; marker.type = Marker::ARROW; marker.id = i; marker.ns = "arrow"; - marker.color = - static_cast(common::color_scale::rainbow(normalize(scores.at(i)))); + marker.color = static_cast( + common::color_scale::rainbow(normalize(static_cast(scores.at(i))))); marker.color.a = 0.5; marker.pose.position.x = position.x(); diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/projector_module.cpp b/localization/yabloc/yabloc_pose_initializer/src/camera/projector_module.cpp index baa199d5548a1..449812eff6e09 100644 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/projector_module.cpp +++ b/localization/yabloc/yabloc_pose_initializer/src/camera/projector_module.cpp @@ -27,12 +27,12 @@ ProjectorModule::ProjectorModule(rclcpp::Node * node) cv::Point2i to_cv_point(const Eigen::Vector3f & v) { - const float image_size_ = 800; - const float max_range_ = 30; + const float image_size = 800; + const float max_range = 30; cv::Point pt; - pt.x = -v.y() / max_range_ * image_size_ * 0.5f + image_size_ / 2.f; - pt.y = -v.x() / max_range_ * image_size_ * 0.5f + image_size_ / 2.f; + pt.x = static_cast(-v.y() / max_range * image_size * 0.5f + image_size / 2.f); + pt.y = static_cast(-v.x() / max_range * image_size * 0.5f + image_size / 2.f); return pt; } @@ -44,7 +44,10 @@ cv::Mat ProjectorModule::project_image(const cv::Mat & mask_image) std::vector colors = { cv::Scalar(255, 0, 0), cv::Scalar(0, 255, 0), cv::Scalar(0, 0, 255)}; - cv::Mat projected_image = cv::Mat::zeros(cv::Size(800, 800), CV_8UC3); + cv::Mat projected_image = + cv::Mat::zeros(cv::Size(800, 800), CV_8UC3); // NOLINT + // suppress hicpp-signed-bitwise + // from OpenCV for (int i = 0; i < 3; i++) { std::vector > contours; cv::findContours(masks[i], contours, cv::RETR_LIST, cv::CHAIN_APPROX_NONE); @@ -90,7 +93,7 @@ bool ProjectorModule::define_project_func() // TODO(KYabuuchi) This will take into account ground tilt and camera vibration someday. project_func_ = [intrinsic_inv, q, t](const cv::Point & u) -> std::optional { - Eigen::Vector3f u3(u.x, u.y, 1); + Eigen::Vector3f u3(static_cast(u.x), static_cast(u.y), 1); Eigen::Vector3f u_bearing = (q * intrinsic_inv * u3).normalized(); if (u_bearing.z() > -0.01) return std::nullopt; float u_distance = -t.z() / u_bearing.z(); diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/semantic_segmentation.cpp b/localization/yabloc/yabloc_pose_initializer/src/camera/semantic_segmentation.cpp index 760ada6f8310a..917015269d3e2 100644 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/semantic_segmentation.cpp +++ b/localization/yabloc/yabloc_pose_initializer/src/camera/semantic_segmentation.cpp @@ -53,7 +53,8 @@ cv::Mat SemanticSegmentation::convert_blob_to_image(const cv::Mat & blob) const int channels = blob.size[1]; const int height = blob.size[2]; const int width = blob.size[3]; - cv::Mat image = cv::Mat(height, width, CV_32FC4); + cv::Mat image = cv::Mat(height, width, CV_32FC4); // NOLINT + // suppress hicpp-signed-bitwise from OpenCV for (int h = 0; h < height; ++h) { for (int w = 0; w < width; ++w) { @@ -92,7 +93,8 @@ cv::Mat SemanticSegmentation::normalize(const cv::Mat & mask, double score_thres for (size_t i = 1; i < masks.size(); ++i) { cv::Mat bin_mask; cv::threshold(masks[i], bin_mask, score_threshold, 255, cv::THRESH_BINARY_INV); - bin_mask.convertTo(bin_mask, CV_8UC1); + bin_mask.convertTo(bin_mask, CV_8UC1); // NOLINT + // suppress hicpp-signed-bitwise from OpenCV bin_masks.push_back(255 - bin_mask); } @@ -109,11 +111,11 @@ cv::Mat SemanticSegmentation::draw_overlay(const cv::Mat & image, const cv::Mat void SemanticSegmentation::print_error_message(const rclcpp::Logger & logger) { - const std::string ERROR_MESSAGE = + const std::string error_message = R"(The yabloc_pose_initializer is not working correctly because the DNN model has not been downloaded correctly. Please check the README of yabloc_pose_initializer to know how download models.)"; - std::istringstream stream(ERROR_MESSAGE); + std::istringstream stream(error_message); std::string line; while (std::getline(stream, line)) { RCLCPP_ERROR_STREAM(logger, line); diff --git a/map/map_height_fitter/CMakeLists.txt b/map/map_height_fitter/CMakeLists.txt index 0dec2f6a1663a..9485ed3fa54cd 100644 --- a/map/map_height_fitter/CMakeLists.txt +++ b/map/map_height_fitter/CMakeLists.txt @@ -11,7 +11,7 @@ ament_auto_add_library(${PROJECT_NAME} SHARED ) target_link_libraries(map_height_fitter ${PCL_LIBRARIES}) -# When adding `lanelet2_extension` to package.xml, many warnings are generated. +# When adding `autoware_lanelet2_extension` to package.xml, many warnings are generated. # These are treated as errors in compile, so pedantic warnings are disabled for this package. target_compile_options(map_height_fitter PRIVATE -Wno-pedantic) diff --git a/map/map_height_fitter/package.xml b/map/map_height_fitter/package.xml index c10e65cdfaab1..36e5814365c3f 100644 --- a/map/map_height_fitter/package.xml +++ b/map/map_height_fitter/package.xml @@ -18,9 +18,9 @@ ament_cmake autoware_cmake + autoware_lanelet2_extension autoware_map_msgs geometry_msgs - lanelet2_extension libpcl-common pcl_conversions rclcpp diff --git a/map/map_height_fitter/src/map_height_fitter.cpp b/map/map_height_fitter/src/map_height_fitter.cpp index e01201f90f7e3..d6a20a636733d 100644 --- a/map/map_height_fitter/src/map_height_fitter.cpp +++ b/map/map_height_fitter/src/map_height_fitter.cpp @@ -14,8 +14,8 @@ #include "map_height_fitter/map_height_fitter.hpp" -#include -#include +#include +#include #include #include diff --git a/map/map_loader/README.md b/map/map_loader/README.md index a30bfa1a8f633..73b0164f0c8a7 100644 --- a/map/map_loader/README.md +++ b/map/map_loader/README.md @@ -151,7 +151,7 @@ Please see [tier4_autoware_msgs/msg/MapProjectorInfo.msg](https://github.com/tie {{ json_to_markdown("map/map_loader/schema/lanelet2_map_loader.schema.json") }} `use_waypoints` decides how to handle a centerline. -This flag enables to use the `overwriteLaneletsCenterlineWithWaypoints` function instead of `overwriteLaneletsCenterline`. Please see [the document of the lanelet2_extension package](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md#centerline) in detail. +This flag enables to use the `overwriteLaneletsCenterlineWithWaypoints` function instead of `overwriteLaneletsCenterline`. Please see [the document of the autoware_lanelet2_extension package](https://github.com/autowarefoundation/autoware_lanelet2_extension/blob/main/autoware_lanelet2_extension/docs/lanelet2_format_extension.md#centerline) in detail. --- diff --git a/map/map_loader/package.xml b/map/map_loader/package.xml index a6f4ac7f81275..7c4d9eaf99556 100644 --- a/map/map_loader/package.xml +++ b/map/map_loader/package.xml @@ -20,13 +20,13 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_map_msgs component_interface_specs component_interface_utils fmt geography_utils geometry_msgs - lanelet2_extension libpcl-all-dev pcl_conversions rclcpp diff --git a/map/map_loader/src/lanelet2_map_loader/lanelet2_map_loader_node.cpp b/map/map_loader/src/lanelet2_map_loader/lanelet2_map_loader_node.cpp index ee89ad571b90a..7b712c7c281a2 100644 --- a/map/map_loader/src/lanelet2_map_loader/lanelet2_map_loader_node.cpp +++ b/map/map_loader/src/lanelet2_map_loader/lanelet2_map_loader_node.cpp @@ -36,12 +36,12 @@ #include "lanelet2_local_projector.hpp" #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include #include #include diff --git a/map/map_loader/src/lanelet2_map_loader/lanelet2_map_visualization_node.cpp b/map/map_loader/src/lanelet2_map_loader/lanelet2_map_visualization_node.cpp index c81236bec86c0..87319222001d9 100644 --- a/map/map_loader/src/lanelet2_map_loader/lanelet2_map_visualization_node.cpp +++ b/map/map_loader/src/lanelet2_map_loader/lanelet2_map_visualization_node.cpp @@ -33,10 +33,10 @@ #include "map_loader/lanelet2_map_visualization_node.hpp" -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -153,8 +153,8 @@ void Lanelet2MapVisualizationNode::onMapBin( setColor(&cl_speed_bumps, 0.56, 0.40, 0.27, 0.5); setColor(&cl_crosswalks, 0.80, 0.80, 0.0, 0.5); setColor(&cl_obstacle_polygons, 0.4, 0.27, 0.27, 0.5); - setColor(&cl_parking_lots, 0.5, 0.5, 0.0, 0.3); - setColor(&cl_parking_spaces, 1.0, 0.647, 0.0, 0.6); + setColor(&cl_parking_lots, 1.0, 1.0, 1.0, 0.2); + setColor(&cl_parking_spaces, 1.0, 1.0, 1.0, 0.3); setColor(&cl_lanelet_id, 0.5, 0.5, 0.5, 0.999); setColor(&cl_no_obstacle_segmentation_area, 0.37, 0.37, 0.27, 0.5); setColor(&cl_no_obstacle_segmentation_area_for_run_out, 0.37, 0.7, 0.27, 0.5); diff --git a/map/map_projection_loader/include/map_projection_loader/load_info_from_lanelet2_map.hpp b/map/map_projection_loader/include/map_projection_loader/load_info_from_lanelet2_map.hpp index 746f16e0f6b33..750b90fe495bd 100644 --- a/map/map_projection_loader/include/map_projection_loader/load_info_from_lanelet2_map.hpp +++ b/map/map_projection_loader/include/map_projection_loader/load_info_from_lanelet2_map.hpp @@ -15,10 +15,10 @@ #ifndef MAP_PROJECTION_LOADER__LOAD_INFO_FROM_LANELET2_MAP_HPP_ #define MAP_PROJECTION_LOADER__LOAD_INFO_FROM_LANELET2_MAP_HPP_ -#include -#include -#include -#include +#include +#include +#include +#include #include "tier4_map_msgs/msg/map_projector_info.hpp" diff --git a/map/map_projection_loader/package.xml b/map/map_projection_loader/package.xml index 7a930085cd7b1..b77ef18ac2293 100644 --- a/map/map_projection_loader/package.xml +++ b/map/map_projection_loader/package.xml @@ -17,9 +17,9 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension component_interface_specs component_interface_utils - lanelet2_extension rclcpp rclcpp_components tier4_map_msgs diff --git a/map/map_tf_generator/package.xml b/map/map_tf_generator/package.xml index 6f08da169309e..41c3364358f74 100644 --- a/map/map_tf_generator/package.xml +++ b/map/map_tf_generator/package.xml @@ -16,7 +16,7 @@ ament_cmake_auto autoware_cmake - lanelet2_extension + autoware_lanelet2_extension libpcl-all-dev pcl_conversions rclcpp diff --git a/map/map_tf_generator/src/vector_map_tf_generator_node.cpp b/map/map_tf_generator/src/vector_map_tf_generator_node.cpp index df3075bdce1fe..093b42037ed72 100644 --- a/map/map_tf_generator/src/vector_map_tf_generator_node.cpp +++ b/map/map_tf_generator/src/vector_map_tf_generator_node.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include +#include #include #include diff --git a/map/util/lanelet2_map_preprocessor/package.xml b/map/util/lanelet2_map_preprocessor/package.xml index e84bd8a80c202..b0c371ac9eeed 100644 --- a/map/util/lanelet2_map_preprocessor/package.xml +++ b/map/util/lanelet2_map_preprocessor/package.xml @@ -17,7 +17,7 @@ ament_cmake_auto autoware_cmake - lanelet2_extension + autoware_lanelet2_extension libpcl-all-dev rclcpp diff --git a/map/util/lanelet2_map_preprocessor/src/fix_lane_change_tags.cpp b/map/util/lanelet2_map_preprocessor/src/fix_lane_change_tags.cpp index a406e5381357d..cbd279af2b46f 100644 --- a/map/util/lanelet2_map_preprocessor/src/fix_lane_change_tags.cpp +++ b/map/util/lanelet2_map_preprocessor/src/fix_lane_change_tags.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include -#include +#include +#include +#include #include #include diff --git a/map/util/lanelet2_map_preprocessor/src/fix_z_value_by_pcd.cpp b/map/util/lanelet2_map_preprocessor/src/fix_z_value_by_pcd.cpp index 758fee3addc06..14a33b01beee0 100644 --- a/map/util/lanelet2_map_preprocessor/src/fix_z_value_by_pcd.cpp +++ b/map/util/lanelet2_map_preprocessor/src/fix_z_value_by_pcd.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include -#include +#include +#include +#include #include #include diff --git a/map/util/lanelet2_map_preprocessor/src/merge_close_lines.cpp b/map/util/lanelet2_map_preprocessor/src/merge_close_lines.cpp index d001bdc54a680..e0d071ea11dc1 100644 --- a/map/util/lanelet2_map_preprocessor/src/merge_close_lines.cpp +++ b/map/util/lanelet2_map_preprocessor/src/merge_close_lines.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include -#include +#include +#include +#include #include #include diff --git a/map/util/lanelet2_map_preprocessor/src/merge_close_points.cpp b/map/util/lanelet2_map_preprocessor/src/merge_close_points.cpp index beb736e809275..e18a366003e10 100644 --- a/map/util/lanelet2_map_preprocessor/src/merge_close_points.cpp +++ b/map/util/lanelet2_map_preprocessor/src/merge_close_points.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include -#include +#include +#include +#include #include #include diff --git a/map/util/lanelet2_map_preprocessor/src/remove_unreferenced_geometry.cpp b/map/util/lanelet2_map_preprocessor/src/remove_unreferenced_geometry.cpp index e6c4feb4cee9a..633dae4e20c1d 100644 --- a/map/util/lanelet2_map_preprocessor/src/remove_unreferenced_geometry.cpp +++ b/map/util/lanelet2_map_preprocessor/src/remove_unreferenced_geometry.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include -#include +#include +#include +#include #include #include diff --git a/map/util/lanelet2_map_preprocessor/src/transform_maps.cpp b/map/util/lanelet2_map_preprocessor/src/transform_maps.cpp index 2317ddb7d9f95..d29df716b11e7 100644 --- a/map/util/lanelet2_map_preprocessor/src/transform_maps.cpp +++ b/map/util/lanelet2_map_preprocessor/src/transform_maps.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include -#include +#include +#include +#include #include #include diff --git a/perception/autoware_crosswalk_traffic_light_estimator/include/autoware_crosswalk_traffic_light_estimator/node.hpp b/perception/autoware_crosswalk_traffic_light_estimator/include/autoware_crosswalk_traffic_light_estimator/node.hpp index 452805803ffa6..8efb90cc87c89 100644 --- a/perception/autoware_crosswalk_traffic_light_estimator/include/autoware_crosswalk_traffic_light_estimator/node.hpp +++ b/perception/autoware_crosswalk_traffic_light_estimator/include/autoware_crosswalk_traffic_light_estimator/node.hpp @@ -39,10 +39,10 @@ namespace autoware::crosswalk_traffic_light_estimator { +using autoware::universe_utils::DebugPublisher; +using autoware::universe_utils::StopWatch; using autoware_map_msgs::msg::LaneletMapBin; using autoware_planning_msgs::msg::LaneletRoute; -using autoware_universe_utils::DebugPublisher; -using autoware_universe_utils::StopWatch; using tier4_debug_msgs::msg::Float64Stamped; using TrafficSignal = autoware_perception_msgs::msg::TrafficLightGroup; using TrafficSignalArray = autoware_perception_msgs::msg::TrafficLightGroupArray; diff --git a/perception/autoware_crosswalk_traffic_light_estimator/package.xml b/perception/autoware_crosswalk_traffic_light_estimator/package.xml index 18b0b8a41264f..3eec0e121082a 100644 --- a/perception/autoware_crosswalk_traffic_light_estimator/package.xml +++ b/perception/autoware_crosswalk_traffic_light_estimator/package.xml @@ -12,11 +12,11 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs autoware_planning_msgs autoware_universe_utils - lanelet2_extension rclcpp rclcpp_components tier4_perception_msgs diff --git a/perception/autoware_crosswalk_traffic_light_estimator/src/node.cpp b/perception/autoware_crosswalk_traffic_light_estimator/src/node.cpp index 2c4da0b95b161..068cfc02a6aae 100644 --- a/perception/autoware_crosswalk_traffic_light_estimator/src/node.cpp +++ b/perception/autoware_crosswalk_traffic_light_estimator/src/node.cpp @@ -13,8 +13,8 @@ // limitations under the License. #include "autoware_crosswalk_traffic_light_estimator/node.hpp" -#include -#include +#include +#include #include #include diff --git a/perception/autoware_map_based_prediction/include/map_based_prediction/map_based_prediction_node.hpp b/perception/autoware_map_based_prediction/include/map_based_prediction/map_based_prediction_node.hpp index 86633721c936b..ce1c587cc3b01 100644 --- a/perception/autoware_map_based_prediction/include/map_based_prediction/map_based_prediction_node.hpp +++ b/perception/autoware_map_based_prediction/include/map_based_prediction/map_based_prediction_node.hpp @@ -116,6 +116,7 @@ struct PredictionTimeHorizon using LaneletsData = std::vector; using ManeuverProbability = std::unordered_map; +using autoware::universe_utils::StopWatch; using autoware_map_msgs::msg::LaneletMapBin; using autoware_perception_msgs::msg::ObjectClassification; using autoware_perception_msgs::msg::PredictedObject; @@ -129,7 +130,6 @@ using autoware_perception_msgs::msg::TrafficLightElement; using autoware_perception_msgs::msg::TrafficLightGroup; using autoware_perception_msgs::msg::TrafficLightGroupArray; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::StopWatch; using tier4_debug_msgs::msg::StringStamped; using TrajectoryPoints = std::vector; class MapBasedPredictionNode : public rclcpp::Node @@ -143,12 +143,12 @@ class MapBasedPredictionNode : public rclcpp::Node rclcpp::Publisher::SharedPtr pub_debug_markers_; rclcpp::Subscription::SharedPtr sub_objects_; rclcpp::Subscription::SharedPtr sub_map_; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_traffic_signals_{this, "/traffic_signals"}; // debug publisher - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr processing_time_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr processing_time_publisher_; // Object History std::unordered_map> road_users_history; @@ -169,7 +169,7 @@ class MapBasedPredictionNode : public rclcpp::Node const std::vector & parameters); // Pose Transform Listener - autoware_universe_utils::TransformListener transform_listener_{this}; + autoware::universe_utils::TransformListener transform_listener_{this}; // Path Generator std::shared_ptr path_generator_; @@ -221,7 +221,7 @@ class MapBasedPredictionNode : public rclcpp::Node bool match_lost_and_appeared_crosswalk_users_; bool remember_lost_crosswalk_users_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; // Member Functions void mapCallback(const LaneletMapBin::ConstSharedPtr msg); @@ -314,8 +314,8 @@ class MapBasedPredictionNode : public rclcpp::Node inline std::vector calcTrajectoryCurvatureFrom3Points( const TrajectoryPoints & trajectory, size_t idx_dist) { - using autoware_universe_utils::calcCurvature; - using autoware_universe_utils::getPoint; + using autoware::universe_utils::calcCurvature; + using autoware::universe_utils::getPoint; if (trajectory.size() < 3) { const std::vector k_arr(trajectory.size(), 0.0); diff --git a/perception/autoware_map_based_prediction/package.xml b/perception/autoware_map_based_prediction/package.xml index 37bb7aafb01bf..9e60073de4be6 100644 --- a/perception/autoware_map_based_prediction/package.xml +++ b/perception/autoware_map_based_prediction/package.xml @@ -14,12 +14,12 @@ ament_cmake autoware_cmake + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_universe_utils glog interpolation - lanelet2_extension rclcpp rclcpp_components tf2 diff --git a/perception/autoware_map_based_prediction/src/debug.cpp b/perception/autoware_map_based_prediction/src/debug.cpp index 638c10c1a3b1a..bd40ee0981c0e 100644 --- a/perception/autoware_map_based_prediction/src/debug.cpp +++ b/perception/autoware_map_based_prediction/src/debug.cpp @@ -29,7 +29,7 @@ visualization_msgs::msg::Marker MapBasedPredictionNode::getDebugMarker( marker.type = visualization_msgs::msg::Marker::CUBE; marker.action = visualization_msgs::msg::Marker::ADD; marker.pose = object.kinematics.pose_with_covariance.pose; - marker.scale = autoware_universe_utils::createMarkerScale(3.0, 1.0, 1.0); + marker.scale = autoware::universe_utils::createMarkerScale(3.0, 1.0, 1.0); // Color by maneuver double r = 0.0; @@ -42,7 +42,7 @@ visualization_msgs::msg::Marker MapBasedPredictionNode::getDebugMarker( } else { b = 1.0; } - marker.color = autoware_universe_utils::createMarkerColor(r, g, b, 0.8); + marker.color = autoware::universe_utils::createMarkerColor(r, g, b, 0.8); return marker; } diff --git a/perception/autoware_map_based_prediction/src/map_based_prediction_node.cpp b/perception/autoware_map_based_prediction/src/map_based_prediction_node.cpp index 0916a4568561f..2b8358eb52e4e 100644 --- a/perception/autoware_map_based_prediction/src/map_based_prediction_node.cpp +++ b/perception/autoware_map_based_prediction/src/map_based_prediction_node.cpp @@ -20,10 +20,10 @@ #include #include #include +#include +#include +#include #include -#include -#include -#include #include @@ -92,10 +92,10 @@ double calcAbsLateralOffset( for (size_t i = 0; i < boundary_path.size(); ++i) { const double x = boundary_line[i].x(); const double y = boundary_line[i].y(); - boundary_path[i] = autoware_universe_utils::createPoint(x, y, 0.0); + boundary_path[i] = autoware::universe_utils::createPoint(x, y, 0.0); } - return std::fabs(autoware_motion_utils::calcLateralOffset(boundary_path, search_pose.position)); + return std::fabs(autoware::motion_utils::calcLateralOffset(boundary_path, search_pose.position)); } /** @@ -218,7 +218,7 @@ double calcAbsYawDiffBetweenLaneletAndObject( const double lane_yaw = lanelet::utils::getLaneletAngle(lanelet, object.kinematics.pose_with_covariance.pose.position); const double delta_yaw = object_yaw - lane_yaw; - const double normalized_delta_yaw = autoware_universe_utils::normalizeRadian(delta_yaw); + const double normalized_delta_yaw = autoware::universe_utils::normalizeRadian(delta_yaw); const double abs_norm_delta = std::fabs(normalized_delta_yaw); return abs_norm_delta; } @@ -418,7 +418,7 @@ boost::optional isReachableCrosswalkEdgePoints( const auto & obj_pos = object.kinematics.pose_with_covariance.pose.position; const auto & obj_vel = object.kinematics.twist_with_covariance.twist.linear; - const auto yaw = autoware_universe_utils::getRPY(object.kinematics.pose_with_covariance.pose).z; + const auto yaw = autoware::universe_utils::getRPY(object.kinematics.pose_with_covariance.pose).z; lanelet::BasicPoint2d obj_pos_as_lanelet(obj_pos.x, obj_pos.y); if (boost::geometry::within(obj_pos_as_lanelet, target_crosswalk.polygon2d().basicPolygon())) { @@ -529,7 +529,7 @@ bool hasPotentialToReach( { const auto & obj_pos = object.kinematics.pose_with_covariance.pose.position; const auto & obj_vel = object.kinematics.twist_with_covariance.twist.linear; - const auto yaw = autoware_universe_utils::getRPY(object.kinematics.pose_with_covariance.pose).z; + const auto yaw = autoware::universe_utils::getRPY(object.kinematics.pose_with_covariance.pose).z; constexpr double stop_velocity_th = 0.14; // [m/s] const auto estimated_velocity = std::hypot(obj_vel.x, obj_vel.y); @@ -547,16 +547,16 @@ bool hasPotentialToReach( const double pedestrian_to_crosswalk_left_direction = std::atan2(left_point.y() - obj_pos.y, left_point.x() - obj_pos.x); return std::make_pair( - autoware_universe_utils::normalizeRadian( + autoware::universe_utils::normalizeRadian( pedestrian_to_crosswalk_right_direction - pedestrian_to_crosswalk_center_direction), - autoware_universe_utils::normalizeRadian( + autoware::universe_utils::normalizeRadian( pedestrian_to_crosswalk_left_direction - pedestrian_to_crosswalk_center_direction)); }(); const double pedestrian_heading_rel_direction = [&]() { const double pedestrian_heading_direction = std::atan2(obj_vel.x * std::sin(yaw), obj_vel.x * std::cos(yaw)); - return autoware_universe_utils::normalizeRadian( + return autoware::universe_utils::normalizeRadian( pedestrian_heading_direction - pedestrian_to_crosswalk_center_direction); }(); @@ -658,7 +658,7 @@ ObjectClassification::_label_type changeLabelForPrediction( if (within_road_lanelet) return ObjectClassification::MOTORCYCLE; constexpr float high_speed_threshold = - autoware_universe_utils::kmph2mps(25.0); // High speed bicycle 25 km/h + autoware::universe_utils::kmph2mps(25.0); // High speed bicycle 25 km/h // calc abs speed from x and y velocity const double abs_speed = std::hypot( object.kinematics.twist_with_covariance.twist.linear.x, @@ -673,7 +673,7 @@ ObjectClassification::_label_type changeLabelForPrediction( case ObjectClassification::PEDESTRIAN: { const bool within_road_lanelet = withinRoadLanelet(object, lanelet_map_ptr_, true); const float max_velocity_for_human_mps = - autoware_universe_utils::kmph2mps(25.0); // Max human being motion speed is 25km/h + autoware::universe_utils::kmph2mps(25.0); // Max human being motion speed is 25km/h const double abs_speed = std::hypot( object.kinematics.twist_with_covariance.twist.linear.x, object.kinematics.twist_with_covariance.twist.linear.y); @@ -859,15 +859,15 @@ MapBasedPredictionNode::MapBasedPredictionNode(const rclcpp::NodeOptions & node_ pub_debug_markers_ = this->create_publisher("maneuver", rclcpp::QoS{1}); processing_time_publisher_ = - std::make_unique(this, "map_based_prediction"); + std::make_unique(this, "map_based_prediction"); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); set_param_res_ = this->add_on_set_parameters_callback( std::bind(&MapBasedPredictionNode::onParam, this, std::placeholders::_1)); stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); stop_watch_ptr_->tic("cyclic_time"); stop_watch_ptr_->tic("processing_time"); } @@ -875,7 +875,7 @@ MapBasedPredictionNode::MapBasedPredictionNode(const rclcpp::NodeOptions & node_ rcl_interfaces::msg::SetParametersResult MapBasedPredictionNode::onParam( const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; updateParam(parameters, "max_lateral_accel", max_lateral_accel_); updateParam(parameters, "min_acceleration_before_curve", min_acceleration_before_curve_); @@ -1010,14 +1010,14 @@ void MapBasedPredictionNode::objectsCallback(const TrackedObjects::ConstSharedPt if ( label_for_prediction == ObjectClassification::PEDESTRIAN || label_for_prediction == ObjectClassification::BICYCLE) { - const std::string object_id = autoware_universe_utils::toHexString(object.object_id); + const std::string object_id = autoware::universe_utils::toHexString(object.object_id); current_crosswalk_users.emplace(object_id, object); } } std::unordered_set predicted_crosswalk_users_ids; for (const auto & object : in_objects->objects) { - std::string object_id = autoware_universe_utils::toHexString(object.object_id); + std::string object_id = autoware::universe_utils::toHexString(object.object_id); TrackedObject transformed_object = object; // transform object frame if it's based on map frame @@ -1036,7 +1036,7 @@ void MapBasedPredictionNode::objectsCallback(const TrackedObjects::ConstSharedPt switch (label) { case ObjectClassification::PEDESTRIAN: case ObjectClassification::BICYCLE: { - std::string object_id = autoware_universe_utils::toHexString(object.object_id); + std::string object_id = autoware::universe_utils::toHexString(object.object_id); if (match_lost_and_appeared_crosswalk_users_) { object_id = tryMatchNewObjectToDisappeared(object_id, current_crosswalk_users); } @@ -1339,11 +1339,11 @@ bool MapBasedPredictionNode::isIntersecting( const geometry_msgs::msg::Point & point1, const geometry_msgs::msg::Point & point2, const lanelet::ConstPoint3d & point3, const lanelet::ConstPoint3d & point4) { - const auto p1 = autoware_universe_utils::createPoint(point1.x, point1.y, 0.0); - const auto p2 = autoware_universe_utils::createPoint(point2.x, point2.y, 0.0); - const auto p3 = autoware_universe_utils::createPoint(point3.x(), point3.y(), 0.0); - const auto p4 = autoware_universe_utils::createPoint(point4.x(), point4.y(), 0.0); - const auto intersection = autoware_universe_utils::intersect(p1, p2, p3, p4); + const auto p1 = autoware::universe_utils::createPoint(point1.x, point1.y, 0.0); + const auto p2 = autoware::universe_utils::createPoint(point2.x, point2.y, 0.0); + const auto p3 = autoware::universe_utils::createPoint(point3.x(), point3.y(), 0.0); + const auto p4 = autoware::universe_utils::createPoint(point4.x(), point4.y(), 0.0); + const auto intersection = autoware::universe_utils::intersect(p1, p2, p3, p4); return intersection.has_value(); } @@ -1491,7 +1491,7 @@ void MapBasedPredictionNode::updateObjectData(TrackedObject & object) // Compute yaw angle from the velocity and position of the object const auto & object_pose = object.kinematics.pose_with_covariance.pose; const auto & object_twist = object.kinematics.twist_with_covariance.twist; - const auto future_object_pose = autoware_universe_utils::calcOffsetPose( + const auto future_object_pose = autoware::universe_utils::calcOffsetPose( object_pose, object_twist.linear.x * 0.1, object_twist.linear.y * 0.1, 0.0); // assumption: the object vx is much larger than vy @@ -1510,16 +1510,16 @@ void MapBasedPredictionNode::updateObjectData(TrackedObject & object) tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); // flip the angle object.kinematics.pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw( - autoware_universe_utils::pi + original_yaw); + autoware::universe_utils::createQuaternionFromYaw( + autoware::universe_utils::pi + original_yaw); break; } default: { - const auto updated_object_yaw = autoware_universe_utils::calcAzimuthAngle( + const auto updated_object_yaw = autoware::universe_utils::calcAzimuthAngle( object_pose.position, future_object_pose.position); object.kinematics.pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(updated_object_yaw); + autoware::universe_utils::createQuaternionFromYaw(updated_object_yaw); break; } } @@ -1536,7 +1536,7 @@ void MapBasedPredictionNode::removeStaleTrafficLightInfo( const bool isDisappeared = std::none_of( in_objects->objects.begin(), in_objects->objects.end(), [&it](autoware_perception_msgs::msg::TrackedObject obj) { - return autoware_universe_utils::toHexString(obj.object_id) == it->first.first; + return autoware::universe_utils::toHexString(obj.object_id) == it->first.first; }); if (isDisappeared) { it = stopped_times_against_green_.erase(it); @@ -1645,7 +1645,7 @@ bool MapBasedPredictionNode::checkCloseLaneletCondition( // If the object is in the objects history, we check if the target lanelet is // inside the current lanelets id or following lanelets - const std::string object_id = autoware_universe_utils::toHexString(object.object_id); + const std::string object_id = autoware::universe_utils::toHexString(object.object_id); if (road_users_history.count(object_id) != 0) { const std::vector & possible_lanelet = road_users_history.at(object_id).back().future_possible_lanelets; @@ -1663,7 +1663,7 @@ bool MapBasedPredictionNode::checkCloseLaneletCondition( const double lane_yaw = lanelet::utils::getLaneletAngle( lanelet.second, object.kinematics.pose_with_covariance.pose.position); const double delta_yaw = object_yaw - lane_yaw; - const double normalized_delta_yaw = autoware_universe_utils::normalizeRadian(delta_yaw); + const double normalized_delta_yaw = autoware::universe_utils::normalizeRadian(delta_yaw); const double abs_norm_delta = std::fabs(normalized_delta_yaw); // Step3. Check if the closest lanelet is valid, and add all @@ -1690,7 +1690,7 @@ float MapBasedPredictionNode::calculateLocalLikelihood( const double obj_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); const double lane_yaw = lanelet::utils::getLaneletAngle(current_lanelet, obj_point); const double delta_yaw = obj_yaw - lane_yaw; - const double abs_norm_delta_yaw = std::fabs(autoware_universe_utils::normalizeRadian(delta_yaw)); + const double abs_norm_delta_yaw = std::fabs(autoware::universe_utils::normalizeRadian(delta_yaw)); // compute lateral distance const auto centerline = current_lanelet.centerline(); @@ -1700,7 +1700,7 @@ float MapBasedPredictionNode::calculateLocalLikelihood( converted_centerline.push_back(converted_p); } const double lat_dist = - std::fabs(autoware_motion_utils::calcLateralOffset(converted_centerline, obj_point)); + std::fabs(autoware::motion_utils::calcLateralOffset(converted_centerline, obj_point)); // Compute Chi-squared distributed (Equation (8) in the paper) const double sigma_d = sigma_lateral_offset_; // Standard Deviation for lateral position @@ -1719,7 +1719,7 @@ void MapBasedPredictionNode::updateRoadUsersHistory( const std_msgs::msg::Header & header, const TrackedObject & object, const LaneletsData & current_lanelets_data) { - std::string object_id = autoware_universe_utils::toHexString(object.object_id); + std::string object_id = autoware::universe_utils::toHexString(object.object_id); const auto current_lanelets = getLanelets(current_lanelets_data); ObjectData single_object_data; @@ -1729,7 +1729,7 @@ void MapBasedPredictionNode::updateRoadUsersHistory( single_object_data.pose = object.kinematics.pose_with_covariance.pose; const double object_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); single_object_data.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(object_yaw); + autoware::universe_utils::createQuaternionFromYaw(object_yaw); single_object_data.time_delay = std::fabs((this->get_clock()->now() - header.stamp).seconds()); single_object_data.twist = object.kinematics.twist_with_covariance.twist; @@ -1771,11 +1771,12 @@ std::vector MapBasedPredictionNode::getPredictedReferencePath( object.kinematics.acceleration_with_covariance.accel.linear.y) : 0.0; const double t_h = time_horizon; - const double λ = std::log(2) / acceleration_exponential_half_life_; + const double lambda = std::log(2) / acceleration_exponential_half_life_; auto get_search_distance_with_decaying_acc = [&]() -> double { const double acceleration_distance = - obj_acc * (1.0 / λ) * t_h + obj_acc * (1.0 / std::pow(λ, 2)) * (std::exp(-λ * t_h) - 1); + obj_acc * (1.0 / lambda) * t_h + + obj_acc * (1.0 / std::pow(lambda, 2)) * std::expm1(-lambda * t_h); double search_dist = acceleration_distance + obj_vel * t_h; return search_dist; }; @@ -1787,13 +1788,13 @@ std::vector MapBasedPredictionNode::getPredictedReferencePath( return obj_vel * t_h; } // Time to reach final speed - const double t_f = (-1.0 / λ) * std::log(1 - ((final_speed - obj_vel) * λ) / obj_acc); + const double t_f = (-1.0 / lambda) * std::log(1 - ((final_speed - obj_vel) * lambda) / obj_acc); // It is assumed the vehicle accelerates until final_speed is reached and // then continues at constant speed for the rest of the time horizon const double search_dist = // Distance covered while accelerating - obj_acc * (1.0 / λ) * t_f + obj_acc * (1.0 / std::pow(λ, 2)) * (std::exp(-λ * t_f) - 1) + - obj_vel * t_f + + obj_acc * (1.0 / lambda) * t_f + + obj_acc * (1.0 / std::pow(lambda, 2)) * std::expm1(-lambda * t_f) + obj_vel * t_f + // Distance covered at constant speed final_speed * (t_h - t_f); return search_dist; @@ -1807,7 +1808,7 @@ std::vector MapBasedPredictionNode::getPredictedReferencePath( const double legal_speed_limit = static_cast(limit.speedLimit.value()); double final_speed_after_acceleration = - obj_vel + obj_acc * (1.0 / λ) * (1.0 - std::exp(-λ * t_h)); + obj_vel + obj_acc * (1.0 / lambda) * (1.0 - std::exp(-lambda * t_h)); const double final_speed_limit = legal_speed_limit * speed_limit_multiplier_; const bool final_speed_surpasses_limit = final_speed_after_acceleration > final_speed_limit; @@ -1933,7 +1934,7 @@ Maneuver MapBasedPredictionNode::predictObjectManeuver( throw std::logic_error("Lane change detection method is invalid."); }(); - const std::string object_id = autoware_universe_utils::toHexString(object.object_id); + const std::string object_id = autoware::universe_utils::toHexString(object.object_id); if (road_users_history.count(object_id) == 0) { return current_maneuver; } @@ -1972,7 +1973,7 @@ Maneuver MapBasedPredictionNode::predictObjectManeuverByTimeToLaneChange( const double /*object_detected_time*/) { // Step1. Check if we have the object in the buffer - const std::string object_id = autoware_universe_utils::toHexString(object.object_id); + const std::string object_id = autoware::universe_utils::toHexString(object.object_id); if (road_users_history.count(object_id) == 0) { return Maneuver::LANE_FOLLOW; } @@ -2043,7 +2044,7 @@ Maneuver MapBasedPredictionNode::predictObjectManeuverByLatDiffDistance( const double /*object_detected_time*/) { // Step1. Check if we have the object in the buffer - const std::string object_id = autoware_universe_utils::toHexString(object.object_id); + const std::string object_id = autoware::universe_utils::toHexString(object.object_id); if (road_users_history.count(object_id) == 0) { return Maneuver::LANE_FOLLOW; } @@ -2081,7 +2082,7 @@ Maneuver MapBasedPredictionNode::predictObjectManeuverByLatDiffDistance( for (const auto & lanelet : prev_lanelets) { const double lane_yaw = lanelet::utils::getLaneletAngle(lanelet, prev_pose.position); const double delta_yaw = tf2::getYaw(prev_pose.orientation) - lane_yaw; - const double normalized_delta_yaw = autoware_universe_utils::normalizeRadian(delta_yaw); + const double normalized_delta_yaw = autoware::universe_utils::normalizeRadian(delta_yaw); if (normalized_delta_yaw < closest_prev_yaw) { closest_prev_yaw = normalized_delta_yaw; prev_lanelet = lanelet; @@ -2091,7 +2092,7 @@ Maneuver MapBasedPredictionNode::predictObjectManeuverByLatDiffDistance( // Step4. Check if the vehicle has changed lane const auto current_lanelet = current_lanelet_data.lanelet; const auto current_pose = object.kinematics.pose_with_covariance.pose; - const double dist = autoware_universe_utils::calcDistance2d(prev_pose, current_pose); + const double dist = autoware::universe_utils::calcDistance2d(prev_pose, current_pose); lanelet::routing::LaneletPaths possible_paths = routing_graph_ptr_->possiblePaths(prev_lanelet, dist + 2.0, 0, false); bool has_lane_changed = true; @@ -2176,8 +2177,8 @@ geometry_msgs::msg::Pose MapBasedPredictionNode::compensateTimeDelay( const double curr_yaw = prev_yaw + wz * dt; geometry_msgs::msg::Pose current_pose; - current_pose.position = autoware_universe_utils::createPoint(curr_x, curr_y, curr_z); - current_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(curr_yaw); + current_pose.position = autoware::universe_utils::createPoint(curr_x, curr_y, curr_z); + current_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(curr_yaw); return current_pose; } @@ -2189,10 +2190,10 @@ double MapBasedPredictionNode::calcRightLateralOffset( for (size_t i = 0; i < boundary_path.size(); ++i) { const double x = boundary_line[i].x(); const double y = boundary_line[i].y(); - boundary_path[i] = autoware_universe_utils::createPoint(x, y, 0.0); + boundary_path[i] = autoware::universe_utils::createPoint(x, y, 0.0); } - return std::fabs(autoware_motion_utils::calcLateralOffset(boundary_path, search_pose.position)); + return std::fabs(autoware::motion_utils::calcLateralOffset(boundary_path, search_pose.position)); } double MapBasedPredictionNode::calcLeftLateralOffset( @@ -2204,7 +2205,7 @@ double MapBasedPredictionNode::calcLeftLateralOffset( void MapBasedPredictionNode::updateFuturePossibleLanelets( const TrackedObject & object, const lanelet::routing::LaneletPaths & paths) { - std::string object_id = autoware_universe_utils::toHexString(object.object_id); + std::string object_id = autoware::universe_utils::toHexString(object.object_id); if (road_users_history.count(object_id) == 0) { return; } @@ -2331,7 +2332,7 @@ std::vector MapBasedPredictionNode::convertPathType( const double lane_yaw = std::atan2( current_p.position.y - prev_p.position.y, current_p.position.x - prev_p.position.x); - current_p.orientation = autoware_universe_utils::createQuaternionFromYaw(lane_yaw); + current_p.orientation = autoware::universe_utils::createQuaternionFromYaw(lane_yaw); converted_path.push_back(current_p); prev_p = current_p; } @@ -2353,7 +2354,7 @@ std::vector MapBasedPredictionNode::convertPathType( // Prevent from inserting same points if (!converted_path.empty()) { const auto last_p = converted_path.back(); - const double tmp_dist = autoware_universe_utils::calcDistance2d(last_p, current_p); + const double tmp_dist = autoware::universe_utils::calcDistance2d(last_p, current_p); if (tmp_dist < 1e-6) { prev_p = current_p; continue; @@ -2362,7 +2363,7 @@ std::vector MapBasedPredictionNode::convertPathType( const double lane_yaw = std::atan2( current_p.position.y - prev_p.position.y, current_p.position.x - prev_p.position.x); - current_p.orientation = autoware_universe_utils::createQuaternionFromYaw(lane_yaw); + current_p.orientation = autoware::universe_utils::createQuaternionFromYaw(lane_yaw); converted_path.push_back(current_p); prev_p = current_p; } @@ -2370,7 +2371,7 @@ std::vector MapBasedPredictionNode::convertPathType( // Resample Path const auto resampled_converted_path = - autoware_motion_utils::resamplePoseVector(converted_path, reference_path_resolution_); + autoware::motion_utils::resamplePoseVector(converted_path, reference_path_resolution_); converted_paths.push_back(resampled_converted_path); } @@ -2402,7 +2403,7 @@ bool MapBasedPredictionNode::isDuplicated( for (const auto & prev_predicted_path : predicted_paths) { const auto prev_path_end = prev_predicted_path.path.back().position; const auto current_path_end = predicted_path.path.back().position; - const double dist = autoware_universe_utils::calcDistance2d(prev_path_end, current_path_end); + const double dist = autoware::universe_utils::calcDistance2d(prev_path_end, current_path_end); if (dist < CLOSE_PATH_THRESHOLD) { return true; } @@ -2452,10 +2453,10 @@ bool MapBasedPredictionNode::calcIntentionToCrossWithTrafficSignal( }(); const auto key = - std::make_pair(autoware_universe_utils::toHexString(object.object_id), signal_id); + std::make_pair(autoware::universe_utils::toHexString(object.object_id), signal_id); if ( signal_color == TrafficLightElement::GREEN && - autoware_universe_utils::calcNorm(object.kinematics.twist_with_covariance.twist.linear) < + autoware::universe_utils::calcNorm(object.kinematics.twist_with_covariance.twist.linear) < threshold_velocity_assumed_as_stopping_) { stopped_times_against_green_.try_emplace(key, this->get_clock()->now()); diff --git a/perception/autoware_map_based_prediction/src/path_generator.cpp b/perception/autoware_map_based_prediction/src/path_generator.cpp index f28aae2ea9794..dac034a6b7a7d 100644 --- a/perception/autoware_map_based_prediction/src/path_generator.cpp +++ b/perception/autoware_map_based_prediction/src/path_generator.cpp @@ -50,7 +50,7 @@ PredictedPath PathGenerator::generatePathToTargetPoint( const auto pedestrian_to_entry_point_normalized = pedestrian_to_entry_point.normalized(); const auto pedestrian_to_entry_point_orientation = - autoware_universe_utils::createQuaternionFromYaw(std::atan2( + autoware::universe_utils::createQuaternionFromYaw(std::atan2( pedestrian_to_entry_point_normalized.y(), pedestrian_to_entry_point_normalized.x())); for (double dt = 0.0; dt < arrival_time + ep; dt += sampling_time_interval_) { @@ -94,10 +94,10 @@ PredictedPath PathGenerator::generatePathForCrosswalkUser( const auto pedestrian_to_entry_point_normalized = pedestrian_to_entry_point.normalized(); const auto pedestrian_to_entry_point_orientation = - autoware_universe_utils::createQuaternionFromYaw(std::atan2( + autoware::universe_utils::createQuaternionFromYaw(std::atan2( pedestrian_to_entry_point_normalized.y(), pedestrian_to_entry_point_normalized.x())); const auto entry_to_exit_point_normalized = entry_to_exit_point.normalized(); - const auto entry_to_exit_point_orientation = autoware_universe_utils::createQuaternionFromYaw( + const auto entry_to_exit_point_orientation = autoware::universe_utils::createQuaternionFromYaw( std::atan2(entry_to_exit_point_normalized.y(), entry_to_exit_point_normalized.x())); for (double dt = 0.0; dt < duration + ep; dt += sampling_time_interval_) { @@ -174,7 +174,7 @@ PredictedPath PathGenerator::generateStraightPath( path.time_step = rclcpp::Duration::from_seconds(sampling_time_interval_); path.path.reserve(static_cast((duration) / sampling_time_interval_)); for (double dt = 0.0; dt < duration; dt += sampling_time_interval_) { - const auto future_obj_pose = autoware_universe_utils::calcOffsetPose( + const auto future_obj_pose = autoware::universe_utils::calcOffsetPose( object_pose, object_twist.linear.x * dt, object_twist.linear.y * dt, 0.0); path.path.push_back(future_obj_pose); } @@ -187,7 +187,7 @@ PredictedPath PathGenerator::generatePolynomialPath( const double lateral_duration, const double speed_limit) const { // Get current Frenet Point - const double ref_path_len = autoware_motion_utils::calcArcLength(ref_path); + const double ref_path_len = autoware::motion_utils::calcArcLength(ref_path); const auto current_point = getFrenetPoint(object, ref_path, speed_limit, duration); // Step1. Set Target Frenet Point @@ -319,7 +319,7 @@ PosePath PathGenerator::interpolateReferencePath( base_path_y.at(i) = base_path.at(i).position.y; base_path_z.at(i) = base_path.at(i).position.z; if (i > 0) { - base_path_s.at(i) = base_path_s.at(i - 1) + autoware_universe_utils::calcDistance2d( + base_path_s.at(i) = base_path_s.at(i - 1) + autoware::universe_utils::calcDistance2d( base_path.at(i - 1), base_path.at(i)); } } @@ -344,16 +344,16 @@ PosePath PathGenerator::interpolateReferencePath( for (size_t i = 0; i < interpolate_num - 1; ++i) { geometry_msgs::msg::Pose interpolated_pose; const auto current_point = - autoware_universe_utils::createPoint(spline_ref_path_x.at(i), spline_ref_path_y.at(i), 0.0); - const auto next_point = autoware_universe_utils::createPoint( + autoware::universe_utils::createPoint(spline_ref_path_x.at(i), spline_ref_path_y.at(i), 0.0); + const auto next_point = autoware::universe_utils::createPoint( spline_ref_path_x.at(i + 1), spline_ref_path_y.at(i + 1), 0.0); - const double yaw = autoware_universe_utils::calcAzimuthAngle(current_point, next_point); - interpolated_pose.position = autoware_universe_utils::createPoint( + const double yaw = autoware::universe_utils::calcAzimuthAngle(current_point, next_point); + interpolated_pose.position = autoware::universe_utils::createPoint( spline_ref_path_x.at(i), spline_ref_path_y.at(i), spline_ref_path_z.at(i)); - interpolated_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + interpolated_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); interpolated_path.at(i) = interpolated_pose; } - interpolated_path.back().position = autoware_universe_utils::createPoint( + interpolated_path.back().position = autoware::universe_utils::createPoint( spline_ref_path_x.back(), spline_ref_path_y.back(), spline_ref_path_z.back()); interpolated_path.back().orientation = interpolated_path.at(interpolate_num - 2).orientation; @@ -376,14 +376,14 @@ PredictedPath PathGenerator::convertToPredictedPath( // Converted Pose auto predicted_pose = - autoware_universe_utils::calcOffsetPose(ref_pose, 0.0, frenet_point.d, 0.0); + autoware::universe_utils::calcOffsetPose(ref_pose, 0.0, frenet_point.d, 0.0); predicted_pose.position.z = object.kinematics.pose_with_covariance.pose.position.z; if (i == 0) { predicted_pose.orientation = object.kinematics.pose_with_covariance.pose.orientation; } else { - const double yaw = autoware_universe_utils::calcAzimuthAngle( + const double yaw = autoware::universe_utils::calcAzimuthAngle( predicted_path.path.at(i - 1).position, predicted_pose.position); - predicted_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + predicted_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); } predicted_path.path.at(i) = predicted_pose; } @@ -399,8 +399,8 @@ FrenetPoint PathGenerator::getFrenetPoint( const auto obj_point = object.kinematics.pose_with_covariance.pose.position; const size_t nearest_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(ref_path, obj_point); - const double l = autoware_motion_utils::calcLongitudinalOffsetToSegment( + autoware::motion_utils::findNearestSegmentIndex(ref_path, obj_point); + const double l = autoware::motion_utils::calcLongitudinalOffsetToSegment( ref_path, nearest_segment_idx, obj_point); const float vx = static_cast(object.kinematics.twist_with_covariance.twist.linear.x); const float vy = static_cast(object.kinematics.twist_with_covariance.twist.linear.y); @@ -421,7 +421,7 @@ FrenetPoint PathGenerator::getFrenetPoint( // Using a decaying acceleration model. Consult the README for more information about the model. const double t_h = duration; - const float λ = std::log(2) / acceleration_exponential_half_life_; + const float lambda = std::log(2) / acceleration_exponential_half_life_; auto have_same_sign = [](double a, double b) -> bool { return (a >= 0.0 && b >= 0.0) || (a < 0.0 && b < 0.0); @@ -434,7 +434,7 @@ FrenetPoint PathGenerator::getFrenetPoint( return v; } // Get velocity after time horizon - const auto terminal_velocity = v + a * (1.0 / λ) * (1 - std::exp(-λ * t_h)); + const auto terminal_velocity = v + a * (1.0 / lambda) * (1 - std::exp(-lambda * t_h)); // If vehicle is decelerating, make sure its speed does not change signs (we assume it will, at // most stop, not reverse its direction) @@ -443,15 +443,16 @@ FrenetPoint PathGenerator::getFrenetPoint( // if the velocities don't have the same sign, calculate when the vehicle reaches 0 speed -> // time t_stop - // 0 = Vo + acc(1/λ)(1-e^(-λt_stop)) - // e^(-λt_stop) = 1 - (-Vo* λ)/acc - // t_stop = (-1/λ)*ln(1 - (-Vo* λ)/acc) - // t_stop = (-1/λ)*ln(1 + (Vo* λ)/acc) - auto t_stop = (-1.0 / λ) * std::log(1 + (v * λ / a)); + // 0 = Vo + acc(1/lambda)(1-e^(-lambda t_stop)) + // e^(-lambda t_stop) = 1 - (-Vo* lambda)/acc + // t_stop = (-1/lambda)*ln(1 - (-Vo* lambda)/acc) + // t_stop = (-1/lambda)*ln(1 + (Vo* lambda)/acc) + auto t_stop = (-1.0 / lambda) * std::log1p(v * lambda / a); // Calculate the distance traveled until stopping auto distance_to_reach_zero_speed = - v * t_stop + a * t_stop * (1.0 / λ) + a * (1.0 / std::pow(λ, 2)) * (std::exp(-λ * t_h) - 1); + v * t_stop + a * t_stop * (1.0 / lambda) + + a * (1.0 / std::pow(lambda, 2)) * std::expm1(-lambda * t_h); // Output an equivalent constant speed return distance_to_reach_zero_speed / t_h; } @@ -461,17 +462,18 @@ FrenetPoint PathGenerator::getFrenetPoint( // assume it will continue accelerating (reckless driving) const bool object_has_surpassed_limit_already = v > speed_limit; if (terminal_velocity < speed_limit || object_has_surpassed_limit_already) - return v + a * (1.0 / λ) + (a / (t_h * std::pow(λ, 2))) * (std::exp(-λ * t_h) - 1); + return v + a * (1.0 / lambda) + (a / (t_h * std::pow(lambda, 2))) * std::expm1(-lambda * t_h); // It is assumed the vehicle accelerates until final_speed is reached and // then continues at constant speed for the rest of the time horizon // So, we calculate the time it takes to reach the speed limit and compute how far the vehicle // would go if it accelerated until reaching the speed limit, and then continued at a constant // speed. - const double t_f = (-1.0 / λ) * std::log(1 - ((speed_limit - v) * λ) / a); + const double t_f = (-1.0 / lambda) * std::log(1 - ((speed_limit - v) * lambda) / a); const double distance_covered = // Distance covered while accelerating - a * (1.0 / λ) * t_f + a * (1.0 / std::pow(λ, 2)) * (std::exp(-λ * t_f) - 1) + v * t_f + + a * (1.0 / lambda) * t_f + a * (1.0 / std::pow(lambda, 2)) * std::expm1(-lambda * t_f) + + v * t_f + // Distance covered at constant speed for the rest of the horizon time speed_limit * (t_h - t_f); return distance_covered / t_h; @@ -480,8 +482,9 @@ FrenetPoint PathGenerator::getFrenetPoint( const float acceleration_adjusted_velocity_x = get_acceleration_adjusted_velocity(vx, ax); const float acceleration_adjusted_velocity_y = get_acceleration_adjusted_velocity(vy, ay); - frenet_point.s = autoware_motion_utils::calcSignedArcLength(ref_path, 0, nearest_segment_idx) + l; - frenet_point.d = autoware_motion_utils::calcLateralOffset(ref_path, obj_point); + frenet_point.s = + autoware::motion_utils::calcSignedArcLength(ref_path, 0, nearest_segment_idx) + l; + frenet_point.d = autoware::motion_utils::calcLateralOffset(ref_path, obj_point); frenet_point.s_vel = acceleration_adjusted_velocity_x * std::cos(delta_yaw) - acceleration_adjusted_velocity_y * std::sin(delta_yaw); frenet_point.d_vel = acceleration_adjusted_velocity_x * std::sin(delta_yaw) + diff --git a/perception/bytetrack/lib/src/lapjv.cpp b/perception/bytetrack/lib/src/lapjv.cpp index ecf4c31b81ff8..1b8b39ccbb9f7 100644 --- a/perception/bytetrack/lib/src/lapjv.cpp +++ b/perception/bytetrack/lib/src/lapjv.cpp @@ -181,7 +181,8 @@ int_t _carr_dense( /** Find columns with minimum d[j] and put them on the SCAN list. */ -uint_t _find_dense(const uint_t n, uint_t lo, cost_t * d, int_t * cols, [[maybe_unused]] int_t * y) +uint_t _find_dense( + const uint_t n, uint_t lo, const cost_t * d, int_t * cols, [[maybe_unused]] int_t * y) { uint_t hi = lo + 1; cost_t mind = d[cols[lo]]; @@ -203,7 +204,7 @@ uint_t _find_dense(const uint_t n, uint_t lo, cost_t * d, int_t * cols, [[maybe_ // and try to decrease d of the TODO columns using the SCAN column. int_t _scan_dense( const uint_t n, cost_t * cost[], uint_t * plo, uint_t * phi, cost_t * d, int_t * cols, - int_t * pred, int_t * y, cost_t * v) + int_t * pred, const int_t * y, const cost_t * v) { uint_t lo = *plo; uint_t hi = *phi; diff --git a/perception/bytetrack/lib/src/strack.cpp b/perception/bytetrack/lib/src/strack.cpp index f2c5a40ad3c2e..81ba438faee44 100644 --- a/perception/bytetrack/lib/src/strack.cpp +++ b/perception/bytetrack/lib/src/strack.cpp @@ -112,12 +112,6 @@ void STrack::activate(int frame_id) this->track_id = this->next_id(); this->unique_id = boost::uuids::random_generator()(); - std::vector _tlwh_tmp(4); - _tlwh_tmp[0] = this->original_tlwh[0]; - _tlwh_tmp[1] = this->original_tlwh[1]; - _tlwh_tmp[2] = this->original_tlwh[2]; - _tlwh_tmp[3] = this->original_tlwh[3]; - std::vector xyah = tlwh_to_xyah(_tlwh_tmp); // init kf init_kalman_filter(); // reflect state @@ -132,7 +126,6 @@ void STrack::activate(int frame_id) void STrack::re_activate(STrack & new_track, int frame_id, bool new_id) { - std::vector xyah = tlwh_to_xyah(new_track.tlwh); // TODO(me): write kf update Eigen::MatrixXd measurement = Eigen::MatrixXd::Zero(_kf_parameters.dim_z, 1); measurement << new_track.tlwh[0], new_track.tlwh[1], new_track.tlwh[2], new_track.tlwh[3]; @@ -156,8 +149,6 @@ void STrack::update(STrack & new_track, int frame_id) this->frame_id = frame_id; this->tracklet_len++; - std::vector xyah = tlwh_to_xyah(new_track.tlwh); - // update // TODO(me): write update Eigen::MatrixXd measurement = Eigen::MatrixXd::Zero(_kf_parameters.dim_z, 1); diff --git a/perception/bytetrack/lib/src/utils.cpp b/perception/bytetrack/lib/src/utils.cpp index 64ad27cf36eba..e987bd36b8064 100644 --- a/perception/bytetrack/lib/src/utils.cpp +++ b/perception/bytetrack/lib/src/utils.cpp @@ -190,7 +190,6 @@ std::vector> ByteTracker::ious( // bbox_ious for (size_t k = 0; k < btlbrs.size(); k++) { - std::vector ious_tmp; float box_area = (btlbrs[k][2] - btlbrs[k][0] + 1) * (btlbrs[k][3] - btlbrs[k][1] + 1); for (size_t n = 0; n < atlbrs.size(); n++) { float iw = std::min(atlbrs[n][2], btlbrs[k][2]) - std::max(atlbrs[n][0], btlbrs[k][0]) + 1; @@ -277,8 +276,6 @@ double ByteTracker::lapjv( std::vector> cost_c; cost_c.assign(cost.begin(), cost.end()); - std::vector> cost_c_extended; - int n_rows = cost.size(); int n_cols = cost[0].size(); rowsol.resize(n_rows); @@ -296,6 +293,8 @@ double ByteTracker::lapjv( } if (extend_cost || cost_limit < LONG_MAX) { + std::vector> cost_c_extended; + n = n_rows + n_cols; cost_c_extended.resize(n); for (size_t i = 0; i < cost_c_extended.size(); i++) cost_c_extended[i].resize(n); diff --git a/perception/bytetrack/src/bytetrack_visualizer_node.cpp b/perception/bytetrack/src/bytetrack_visualizer_node.cpp index ce350b8c288da..cdb767568a510 100644 --- a/perception/bytetrack/src/bytetrack_visualizer_node.cpp +++ b/perception/bytetrack/src/bytetrack_visualizer_node.cpp @@ -128,14 +128,14 @@ void ByteTrackVisualizerNode::callback( } std::vector bboxes; - for (auto & feat_obj : rect_msg->feature_objects) { + for (const auto & feat_obj : rect_msg->feature_objects) { auto roi_msg = feat_obj.feature.roi; cv::Rect rect(roi_msg.x_offset, roi_msg.y_offset, roi_msg.width, roi_msg.height); bboxes.push_back(rect); } std::vector uuids; - for (auto & dynamic_obj : uuid_msg->objects) { + for (const auto & dynamic_obj : uuid_msg->objects) { auto uuid_msg = dynamic_obj.id.uuid; boost::uuids::uuid uuid_raw; std::copy(uuid_msg.begin(), uuid_msg.end(), uuid_raw.begin()); diff --git a/perception/cluster_merger/include/cluster_merger/node.hpp b/perception/cluster_merger/include/cluster_merger/node.hpp index adc02680e0d94..a60a76f1c2ef0 100644 --- a/perception/cluster_merger/include/cluster_merger/node.hpp +++ b/perception/cluster_merger/include/cluster_merger/node.hpp @@ -59,7 +59,7 @@ class ClusterMergerNode : public rclcpp::Node std::string output_frame_id_; std::vector::SharedPtr> sub_objects_array{}; - std::shared_ptr transform_listener_; + std::shared_ptr transform_listener_; void objectsCallback( const DetectedObjectsWithFeature::ConstSharedPtr & input_objects0_msg, diff --git a/perception/compare_map_segmentation/src/distance_based_compare_map_filter_nodelet.cpp b/perception/compare_map_segmentation/src/distance_based_compare_map_filter_nodelet.cpp index f72e87e2e3610..2962ba1e28a75 100644 --- a/perception/compare_map_segmentation/src/distance_based_compare_map_filter_nodelet.cpp +++ b/perception/compare_map_segmentation/src/distance_based_compare_map_filter_nodelet.cpp @@ -109,8 +109,8 @@ DistanceBasedCompareMapFilterComponent::DistanceBasedCompareMapFilterComponent( { // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ = std::make_unique(this, "distance_based_compare_map_filter"); stop_watch_ptr_->tic("cyclic_time"); diff --git a/perception/compare_map_segmentation/src/voxel_based_approximate_compare_map_filter_nodelet.cpp b/perception/compare_map_segmentation/src/voxel_based_approximate_compare_map_filter_nodelet.cpp index 6e8f527cc465c..e14ae7d55a1d4 100644 --- a/perception/compare_map_segmentation/src/voxel_based_approximate_compare_map_filter_nodelet.cpp +++ b/perception/compare_map_segmentation/src/voxel_based_approximate_compare_map_filter_nodelet.cpp @@ -72,8 +72,8 @@ VoxelBasedApproximateCompareMapFilterComponent::VoxelBasedApproximateCompareMapF { // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ = std::make_unique(this, "voxel_based_approximate_compare_map_filter"); diff --git a/perception/compare_map_segmentation/src/voxel_based_compare_map_filter_nodelet.cpp b/perception/compare_map_segmentation/src/voxel_based_compare_map_filter_nodelet.cpp index 720b5cf1d229a..449ae76181bc6 100644 --- a/perception/compare_map_segmentation/src/voxel_based_compare_map_filter_nodelet.cpp +++ b/perception/compare_map_segmentation/src/voxel_based_compare_map_filter_nodelet.cpp @@ -31,8 +31,8 @@ VoxelBasedCompareMapFilterComponent::VoxelBasedCompareMapFilterComponent( { // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ = std::make_unique(this, "voxel_based_compare_map_filter"); stop_watch_ptr_->tic("cyclic_time"); diff --git a/perception/compare_map_segmentation/src/voxel_distance_based_compare_map_filter_nodelet.cpp b/perception/compare_map_segmentation/src/voxel_distance_based_compare_map_filter_nodelet.cpp index 3aacf31c9332f..0a660bfffd7fb 100644 --- a/perception/compare_map_segmentation/src/voxel_distance_based_compare_map_filter_nodelet.cpp +++ b/perception/compare_map_segmentation/src/voxel_distance_based_compare_map_filter_nodelet.cpp @@ -101,8 +101,8 @@ VoxelDistanceBasedCompareMapFilterComponent::VoxelDistanceBasedCompareMapFilterC { // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ = std::make_unique(this, "voxel_distance_based_compare_map_filter"); diff --git a/perception/detected_object_feature_remover/include/detected_object_feature_remover/detected_object_feature_remover.hpp b/perception/detected_object_feature_remover/include/detected_object_feature_remover/detected_object_feature_remover.hpp index 3a29e7dd1d533..02e4c9c3ca29a 100644 --- a/perception/detected_object_feature_remover/include/detected_object_feature_remover/detected_object_feature_remover.hpp +++ b/perception/detected_object_feature_remover/include/detected_object_feature_remover/detected_object_feature_remover.hpp @@ -36,7 +36,7 @@ class DetectedObjectFeatureRemover : public rclcpp::Node private: rclcpp::Subscription::SharedPtr sub_; rclcpp::Publisher::SharedPtr pub_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; void objectCallback(const DetectedObjectsWithFeature::ConstSharedPtr input); void convert(const DetectedObjectsWithFeature & objs_with_feature, DetectedObjects & objs); }; diff --git a/perception/detected_object_feature_remover/src/detected_object_feature_remover.cpp b/perception/detected_object_feature_remover/src/detected_object_feature_remover.cpp index 43a1d4d3d26ea..3fe9e6fde8683 100644 --- a/perception/detected_object_feature_remover/src/detected_object_feature_remover.cpp +++ b/perception/detected_object_feature_remover/src/detected_object_feature_remover.cpp @@ -24,7 +24,7 @@ DetectedObjectFeatureRemover::DetectedObjectFeatureRemover(const rclcpp::NodeOpt sub_ = this->create_subscription( "~/input", 1, std::bind(&DetectedObjectFeatureRemover::objectCallback, this, _1)); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void DetectedObjectFeatureRemover::objectCallback( diff --git a/perception/detected_object_validation/CMakeLists.txt b/perception/detected_object_validation/CMakeLists.txt index d023c6c9df328..c416209d7d55d 100644 --- a/perception/detected_object_validation/CMakeLists.txt +++ b/perception/detected_object_validation/CMakeLists.txt @@ -88,6 +88,7 @@ rclcpp_components_register_node(occupancy_grid_based_validator if(BUILD_TESTING) ament_auto_add_gtest(detection_object_validation_tests test/test_utils.cpp + test/object_position_filter/test_object_position_filter.cpp ) endif() diff --git a/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_lanelet_filter.hpp b/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_lanelet_filter.hpp index b96a57b12a233..3ffd8d18c9a67 100644 --- a/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_lanelet_filter.hpp +++ b/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_lanelet_filter.hpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include @@ -35,10 +35,10 @@ namespace object_lanelet_filter { -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::MultiPoint2d; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::MultiPoint2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; class ObjectLaneletFilterNode : public rclcpp::Node { @@ -52,7 +52,7 @@ class ObjectLaneletFilterNode : public rclcpp::Node rclcpp::Publisher::SharedPtr object_pub_; rclcpp::Subscription::SharedPtr map_sub_; rclcpp::Subscription::SharedPtr object_sub_; - std::unique_ptr debug_publisher_{nullptr}; + std::unique_ptr debug_publisher_{nullptr}; lanelet::LaneletMapPtr lanelet_map_ptr_; lanelet::ConstLanelets road_lanelets_; @@ -89,7 +89,7 @@ class ObjectLaneletFilterNode : public rclcpp::Node const autoware_perception_msgs::msg::DetectedObject & object); geometry_msgs::msg::Polygon setFootprint(const autoware_perception_msgs::msg::DetectedObject &); - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace object_lanelet_filter diff --git a/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_position_filter.hpp b/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_position_filter.hpp index d9eb3d367d4cf..ea70d62fd952d 100644 --- a/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_position_filter.hpp +++ b/perception/detected_object_validation/include/detected_object_validation/detected_object_filter/object_position_filter.hpp @@ -54,7 +54,7 @@ class ObjectPositionFilterNode : public rclcpp::Node utils::FilterTargetLabel filter_target_; bool isObjectInBounds(const autoware_perception_msgs::msg::DetectedObject & object) const; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace object_position_filter diff --git a/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/debugger.hpp b/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/debugger.hpp index afb1f8a729567..d338580d95418 100644 --- a/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/debugger.hpp +++ b/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/debugger.hpp @@ -24,9 +24,6 @@ #include #include -#include -#include - namespace obstacle_pointcloud_based_validator { class Debugger diff --git a/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/obstacle_pointcloud_based_validator.hpp b/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/obstacle_pointcloud_based_validator.hpp index 450072f258e2a..a16bb63fd0c87 100644 --- a/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/obstacle_pointcloud_based_validator.hpp +++ b/perception/detected_object_validation/include/detected_object_validation/obstacle_pointcloud_based_validator/obstacle_pointcloud_based_validator.hpp @@ -75,6 +75,8 @@ class Validator const autoware_perception_msgs::msg::DetectedObject & object) = 0; size_t getThresholdPointCloud(const autoware_perception_msgs::msg::DetectedObject & object); virtual pcl::PointCloud::Ptr getDebugNeighborPointCloud() = 0; + + virtual ~Validator() = default; }; class Validator2D : public Validator @@ -131,7 +133,7 @@ class ObstaclePointCloudBasedValidator : public rclcpp::Node rclcpp::Publisher::SharedPtr objects_pub_; message_filters::Subscriber objects_sub_; message_filters::Subscriber obstacle_pointcloud_sub_; - std::unique_ptr debug_publisher_{nullptr}; + std::unique_ptr debug_publisher_{nullptr}; tf2_ros::Buffer tf_buffer_; tf2_ros::TransformListener tf_listener_; @@ -145,7 +147,7 @@ class ObstaclePointCloudBasedValidator : public rclcpp::Node std::shared_ptr debugger_; bool using_2d_validator_; std::unique_ptr validator_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; private: void onObjectsAndObstaclePointCloud( diff --git a/perception/detected_object_validation/include/detected_object_validation/occupancy_grid_based_validator/occupancy_grid_based_validator.hpp b/perception/detected_object_validation/include/detected_object_validation/occupancy_grid_based_validator/occupancy_grid_based_validator.hpp index 399db8cd8c1f3..beb8faf5db1a3 100644 --- a/perception/detected_object_validation/include/detected_object_validation/occupancy_grid_based_validator/occupancy_grid_based_validator.hpp +++ b/perception/detected_object_validation/include/detected_object_validation/occupancy_grid_based_validator/occupancy_grid_based_validator.hpp @@ -43,7 +43,7 @@ class OccupancyGridBasedValidator : public rclcpp::Node message_filters::Subscriber occ_grid_sub_; tf2_ros::Buffer tf_buffer_; tf2_ros::TransformListener tf_listener_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; typedef message_filters::sync_policies::ApproximateTime< autoware_perception_msgs::msg::DetectedObjects, nav_msgs::msg::OccupancyGrid> diff --git a/perception/detected_object_validation/package.xml b/perception/detected_object_validation/package.xml index 7abfbe6625f01..d8eb1257ba451 100644 --- a/perception/detected_object_validation/package.xml +++ b/perception/detected_object_validation/package.xml @@ -17,11 +17,12 @@ libopencv-dev + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs + autoware_test_utils autoware_universe_utils geometry_msgs - lanelet2_extension message_filters nav_msgs object_recognition_utils diff --git a/perception/detected_object_validation/src/object_lanelet_filter.cpp b/perception/detected_object_validation/src/object_lanelet_filter.cpp index 42247a2e36d2b..d1ba34f4a61b2 100644 --- a/perception/detected_object_validation/src/object_lanelet_filter.cpp +++ b/perception/detected_object_validation/src/object_lanelet_filter.cpp @@ -15,8 +15,8 @@ #include "detected_object_validation/detected_object_filter/object_lanelet_filter.hpp" #include -#include -#include +#include +#include #include #include @@ -63,9 +63,9 @@ ObjectLaneletFilterNode::ObjectLaneletFilterNode(const rclcpp::NodeOptions & nod "output/object", rclcpp::QoS{1}); debug_publisher_ = - std::make_unique(this, "object_lanelet_filter"); + std::make_unique(this, "object_lanelet_filter"); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void ObjectLaneletFilterNode::mapCallback( @@ -237,7 +237,8 @@ bool ObjectLaneletFilterNode::isObjectOverlapLanelets( const auto footprint = setFootprint(object); for (const auto & point : footprint.points) { const geometry_msgs::msg::Point32 point_transformed = - autoware_universe_utils::transformPoint(point, object.kinematics.pose_with_covariance.pose); + autoware::universe_utils::transformPoint( + point, object.kinematics.pose_with_covariance.pose); polygon.outer().emplace_back(point_transformed.x, point_transformed.y); } polygon.outer().push_back(polygon.outer().front()); @@ -246,7 +247,8 @@ bool ObjectLaneletFilterNode::isObjectOverlapLanelets( // if object do not have bounding box, check each footprint is inside polygon for (const auto & point : object.shape.footprint.points) { const geometry_msgs::msg::Point32 point_transformed = - autoware_universe_utils::transformPoint(point, object.kinematics.pose_with_covariance.pose); + autoware::universe_utils::transformPoint( + point, object.kinematics.pose_with_covariance.pose); geometry_msgs::msg::Pose point2d; point2d.position.x = point_transformed.x; point2d.position.y = point_transformed.y; @@ -296,7 +298,7 @@ bool ObjectLaneletFilterNode::isSameDirectionWithLanelets( const double lane_yaw = lanelet::utils::getLaneletAngle( lanelet, object.kinematics.pose_with_covariance.pose.position); const double delta_yaw = object_velocity_yaw - lane_yaw; - const double normalized_delta_yaw = autoware_universe_utils::normalizeRadian(delta_yaw); + const double normalized_delta_yaw = autoware::universe_utils::normalizeRadian(delta_yaw); const double abs_norm_delta_yaw = std::fabs(normalized_delta_yaw); if (abs_norm_delta_yaw < filter_settings_.lanelet_direction_filter_velocity_yaw_threshold) { diff --git a/perception/detected_object_validation/src/object_position_filter.cpp b/perception/detected_object_validation/src/object_position_filter.cpp index 8e22cd1b88d88..dccff8a6ccc67 100644 --- a/perception/detected_object_validation/src/object_position_filter.cpp +++ b/perception/detected_object_validation/src/object_position_filter.cpp @@ -43,7 +43,7 @@ ObjectPositionFilterNode::ObjectPositionFilterNode(const rclcpp::NodeOptions & n object_pub_ = this->create_publisher( "output/object", rclcpp::QoS{1}); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void ObjectPositionFilterNode::objectCallback( diff --git a/perception/detected_object_validation/src/obstacle_pointcloud_based_validator.cpp b/perception/detected_object_validation/src/obstacle_pointcloud_based_validator.cpp index 10e923b91c1bd..fbb3f863be7c4 100644 --- a/perception/detected_object_validation/src/obstacle_pointcloud_based_validator.cpp +++ b/perception/detected_object_validation/src/obstacle_pointcloud_based_validator.cpp @@ -33,7 +33,7 @@ namespace obstacle_pointcloud_based_validator { namespace bg = boost::geometry; using Shape = autoware_perception_msgs::msg::Shape; -using Polygon2d = autoware_universe_utils::Polygon2d; +using Polygon2d = autoware::universe_utils::Polygon2d; Validator::Validator(PointsNumThresholdParam & points_num_threshold_param) { @@ -96,8 +96,8 @@ std::optional Validator2D::getPointCloudWithinObject( { std::vector vertices_array; pcl::Vertices vertices; - Polygon2d poly2d = - autoware_universe_utils::toPolygon2d(object.kinematics.pose_with_covariance.pose, object.shape); + Polygon2d poly2d = autoware::universe_utils::toPolygon2d( + object.kinematics.pose_with_covariance.pose, object.shape); if (bg::is_empty(poly2d)) return std::nullopt; pcl::PointCloud::Ptr poly3d(new pcl::PointCloud); @@ -211,8 +211,8 @@ std::optional Validator3D::getPointCloudWithinObject( auto const object_height = object.shape.dimensions.x; auto z_min = object_position.z - object_height / 2.0f; auto z_max = object_position.z + object_height / 2.0f; - Polygon2d poly2d = - autoware_universe_utils::toPolygon2d(object.kinematics.pose_with_covariance.pose, object.shape); + Polygon2d poly2d = autoware::universe_utils::toPolygon2d( + object.kinematics.pose_with_covariance.pose, object.shape); if (bg::is_empty(poly2d)) return std::nullopt; pcl::PointCloud::Ptr poly3d(new pcl::PointCloud); @@ -304,13 +304,13 @@ ObstaclePointCloudBasedValidator::ObstaclePointCloudBasedValidator( objects_pub_ = create_publisher( "~/output/objects", rclcpp::QoS{1}); - debug_publisher_ = std::make_unique( + debug_publisher_ = std::make_unique( this, "obstacle_pointcloud_based_validator"); const bool enable_debugger = declare_parameter("enable_debugger", false); if (enable_debugger) debugger_ = std::make_shared(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void ObstaclePointCloudBasedValidator::onObjectsAndObstaclePointCloud( const autoware_perception_msgs::msg::DetectedObjects::ConstSharedPtr & input_objects, diff --git a/perception/detected_object_validation/src/occupancy_grid_based_validator.cpp b/perception/detected_object_validation/src/occupancy_grid_based_validator.cpp index ec29818ee6491..b8682a6e56b3b 100644 --- a/perception/detected_object_validation/src/occupancy_grid_based_validator.cpp +++ b/perception/detected_object_validation/src/occupancy_grid_based_validator.cpp @@ -33,7 +33,7 @@ namespace occupancy_grid_based_validator { using Shape = autoware_perception_msgs::msg::Shape; -using Polygon2d = autoware_universe_utils::Polygon2d; +using Polygon2d = autoware::universe_utils::Polygon2d; OccupancyGridBasedValidator::OccupancyGridBasedValidator(const rclcpp::NodeOptions & node_options) : rclcpp::Node("occupancy_grid_based_validator", node_options), @@ -53,7 +53,7 @@ OccupancyGridBasedValidator::OccupancyGridBasedValidator(const rclcpp::NodeOptio mean_threshold_ = declare_parameter("mean_threshold", 0.6); enable_debug_ = declare_parameter("enable_debug", false); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void OccupancyGridBasedValidator::onObjectsAndOccGrid( @@ -107,8 +107,8 @@ std::optional OccupancyGridBasedValidator::getMask( const auto & resolution = occupancy_grid.info.resolution; const auto & origin = occupancy_grid.info.origin; std::vector pixel_vertices; - Polygon2d poly2d = - autoware_universe_utils::toPolygon2d(object.kinematics.pose_with_covariance.pose, object.shape); + Polygon2d poly2d = autoware::universe_utils::toPolygon2d( + object.kinematics.pose_with_covariance.pose, object.shape); bool is_polygon_within_image = true; for (const auto & p : poly2d.outer()) { diff --git a/perception/detected_object_validation/test/object_position_filter/test_object_position_filter.cpp b/perception/detected_object_validation/test/object_position_filter/test_object_position_filter.cpp new file mode 100644 index 0000000000000..03cebf91418ce --- /dev/null +++ b/perception/detected_object_validation/test/object_position_filter/test_object_position_filter.cpp @@ -0,0 +1,126 @@ +// Copyright 2024 TIER IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "detected_object_validation/detected_object_filter/object_position_filter.hpp" + +#include +#include + +#include + +#include + +using autoware_perception_msgs::msg::DetectedObject; +using autoware_perception_msgs::msg::DetectedObjects; +using autoware_perception_msgs::msg::ObjectClassification; +using object_position_filter::ObjectPositionFilterNode; + +std::shared_ptr generateTestManager() +{ + auto test_manager = std::make_shared(); + return test_manager; +} + +std::shared_ptr generateNode() +{ + auto node_options = rclcpp::NodeOptions{}; + const auto detected_object_validation_dir = + ament_index_cpp::get_package_share_directory("detected_object_validation"); + node_options.arguments( + {"--ros-args", "--params-file", + detected_object_validation_dir + "/config/object_position_filter.param.yaml"}); + return std::make_shared(node_options); +} + +TEST(DetectedObjectValidationTest, testObjectPositionFilterEmptyObject) +{ + rclcpp::init(0, nullptr); + const std::string input_topic = "/input/object"; + const std::string output_topic = "/output/object"; + auto test_manager = generateTestManager(); + auto test_target_node = generateNode(); + + int counter = 0; + auto callback = [&counter](const DetectedObjects::ConstSharedPtr msg) { + (void)msg; + ++counter; + }; + test_manager->set_subscriber(output_topic, callback); + + DetectedObjects msg; + test_manager->test_pub_msg(test_target_node, input_topic, msg); + EXPECT_GE(counter, 1); + rclcpp::shutdown(); +} + +TEST(DetectedObjectValidationTest, testObjectPositionFilterSeveralObjects) +{ + rclcpp::init(0, nullptr); + const std::string input_topic = "/input/object"; + const std::string output_topic = "/output/object"; + auto test_manager = generateTestManager(); + auto test_target_node = generateNode(); + + // Create a DetectedObjects message with several objects + DetectedObjects msg; + msg.header.frame_id = "base_link"; + + // Object 1: Inside bounds + { + DetectedObject object; + object.kinematics.pose_with_covariance.pose.position.x = 10.0; + object.kinematics.pose_with_covariance.pose.position.y = 5.0; + object.classification.resize(1); + object.classification[0].label = ObjectClassification::UNKNOWN; + msg.objects.push_back(object); + } + + // Object 2: Outside bounds (x-axis) + { + DetectedObject object; + object.kinematics.pose_with_covariance.pose.position.x = 110.0; + object.kinematics.pose_with_covariance.pose.position.y = 5.0; + object.classification.resize(1); + object.classification[0].label = ObjectClassification::UNKNOWN; + msg.objects.push_back(object); + } + + // Object 3: Outside bounds (y-axis) + { + DetectedObject object; + object.kinematics.pose_with_covariance.pose.position.x = 10.0; + object.kinematics.pose_with_covariance.pose.position.y = 60.0; + object.classification.resize(1); + object.classification[0].label = ObjectClassification::UNKNOWN; + msg.objects.push_back(object); + } + + // Object 4: Inside bounds + { + DetectedObject object; + object.kinematics.pose_with_covariance.pose.position.x = 20.0; + object.kinematics.pose_with_covariance.pose.position.y = -5.0; + object.classification.resize(1); + object.classification[0].label = ObjectClassification::UNKNOWN; + msg.objects.push_back(object); + } + + DetectedObjects latest_msg; + auto callback = [&latest_msg](const DetectedObjects::ConstSharedPtr msg) { latest_msg = *msg; }; + test_manager->set_subscriber(output_topic, callback); + + test_manager->test_pub_msg(test_target_node, input_topic, msg); + EXPECT_EQ(latest_msg.objects.size(), 2); + rclcpp::shutdown(); +} diff --git a/perception/detection_by_tracker/include/detection_by_tracker/debugger.hpp b/perception/detection_by_tracker/include/detection_by_tracker/debugger.hpp index 40caa06d3acbf..0169082a2253a 100644 --- a/perception/detection_by_tracker/include/detection_by_tracker/debugger.hpp +++ b/perception/detection_by_tracker/include/detection_by_tracker/debugger.hpp @@ -60,9 +60,9 @@ class Debugger divided_objects_pub_ = node->create_publisher( "debug/divided_objects", 1); processing_time_publisher_ = - std::make_unique(node, "detection_by_tracker"); + std::make_unique(node, "detection_by_tracker"); stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); this->startStopWatch(); } @@ -103,8 +103,8 @@ class Debugger rclcpp::Publisher::SharedPtr merged_objects_pub_; rclcpp::Publisher::SharedPtr divided_objects_pub_; // debug publisher - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr processing_time_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr processing_time_publisher_; autoware_perception_msgs::msg::DetectedObjects removeFeature( const tier4_perception_msgs::msg::DetectedObjectsWithFeature & input) diff --git a/perception/detection_by_tracker/include/detection_by_tracker/detection_by_tracker_core.hpp b/perception/detection_by_tracker/include/detection_by_tracker/detection_by_tracker_core.hpp index de9453c68ca95..d6d030aadb000 100644 --- a/perception/detection_by_tracker/include/detection_by_tracker/detection_by_tracker_core.hpp +++ b/perception/detection_by_tracker/include/detection_by_tracker/detection_by_tracker_core.hpp @@ -84,7 +84,7 @@ class DetectionByTracker : public rclcpp::Node detection_by_tracker::utils::TrackerIgnoreLabel tracker_ignore_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; void setMaxSearchRange(); diff --git a/perception/detection_by_tracker/src/detection_by_tracker_core.cpp b/perception/detection_by_tracker/src/detection_by_tracker_core.cpp index dd63013bff038..4e502b359120d 100644 --- a/perception/detection_by_tracker/src/detection_by_tracker_core.cpp +++ b/perception/detection_by_tracker/src/detection_by_tracker_core.cpp @@ -61,7 +61,7 @@ boost::optional getReferenceYawInfo(const uint8_t label, const const bool is_vehicle = Label::CAR == label || Label::TRUCK == label || Label::BUS == label || Label::TRAILER == label; if (is_vehicle) { - return ReferenceYawInfo{yaw, autoware_universe_utils::deg2rad(30)}; + return ReferenceYawInfo{yaw, autoware::universe_utils::deg2rad(30)}; } else { return boost::none; } @@ -136,9 +136,9 @@ bool TrackerHandler::estimateTrackedObjects( estimated_object.kinematics.pose_with_covariance.pose.position.y = y + vx * std::sin(yaw) * dt.seconds(); estimated_object.kinematics.pose_with_covariance.pose.position.z = z; - const float yaw_hat = autoware_universe_utils::normalizeRadian(yaw + wz * dt.seconds()); + const float yaw_hat = autoware::universe_utils::normalizeRadian(yaw + wz * dt.seconds()); estimated_object.kinematics.pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw_hat); + autoware::universe_utils::createQuaternionFromYaw(yaw_hat); output.objects.push_back(estimated_object); } return true; @@ -178,7 +178,7 @@ DetectionByTracker::DetectionByTracker(const rclcpp::NodeOptions & node_options) false, 10, 10000, 0.7, 0.3, 0); debugger_ = std::make_shared(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void DetectionByTracker::setMaxSearchRange() @@ -284,7 +284,7 @@ void DetectionByTracker::divideUnderSegmentedObjects( for (const auto & initial_object : in_cluster_objects.feature_objects) { // search near object - const float distance = autoware_universe_utils::calcDistance2d( + const float distance = autoware::universe_utils::calcDistance2d( tracked_object.kinematics.pose_with_covariance.pose, initial_object.object.kinematics.pose_with_covariance.pose); if (max_search_range < distance) { @@ -420,7 +420,7 @@ void DetectionByTracker::mergeOverSegmentedObjects( pcl::PointCloud pcl_merged_cluster; for (const auto & initial_object : in_cluster_objects.feature_objects) { - const float distance = autoware_universe_utils::calcDistance2d( + const float distance = autoware::universe_utils::calcDistance2d( tracked_object.kinematics.pose_with_covariance.pose, initial_object.object.kinematics.pose_with_covariance.pose); diff --git a/perception/elevation_map_loader/package.xml b/perception/elevation_map_loader/package.xml index afbd88da84bde..08990b971b0a3 100644 --- a/perception/elevation_map_loader/package.xml +++ b/perception/elevation_map_loader/package.xml @@ -13,12 +13,12 @@ autoware_cmake autoware_grid_map_utils + autoware_lanelet2_extension autoware_map_msgs autoware_universe_utils grid_map_cv grid_map_pcl grid_map_ros - lanelet2_extension libpcl-all-dev pcl_conversions rclcpp diff --git a/perception/elevation_map_loader/src/elevation_map_loader_node.cpp b/perception/elevation_map_loader/src/elevation_map_loader_node.cpp index 1d3d091165b4c..80f7d85fd53c8 100644 --- a/perception/elevation_map_loader/src/elevation_map_loader_node.cpp +++ b/perception/elevation_map_loader/src/elevation_map_loader_node.cpp @@ -15,13 +15,13 @@ #include "elevation_map_loader/elevation_map_loader_node.hpp" #include +#include +#include #include #include #include #include #include -#include -#include #include #include @@ -356,7 +356,7 @@ void ElevationMapLoaderNode::inpaintElevationMap(const float radius) // Convert elevation layer to OpenCV image to fill in holes. // Get the inpaint mask (nonzero pixels indicate where values need to be filled in). namespace bg = boost::geometry; - using autoware_universe_utils::Point2d; + using autoware::universe_utils::Point2d; elevation_map_.add("inpaint_mask", 0.0); diff --git a/perception/euclidean_cluster/lib/voxel_grid_based_euclidean_cluster.cpp b/perception/euclidean_cluster/lib/voxel_grid_based_euclidean_cluster.cpp index 40699fd6e27ab..126f877afddb0 100644 --- a/perception/euclidean_cluster/lib/voxel_grid_based_euclidean_cluster.cpp +++ b/perception/euclidean_cluster/lib/voxel_grid_based_euclidean_cluster.cpp @@ -106,7 +106,7 @@ bool VoxelGridBasedEuclideanCluster::cluster( temporary_cluster.height = pointcloud_msg->height; temporary_cluster.fields = pointcloud_msg->fields; temporary_cluster.point_step = point_step; - temporary_cluster.data.resize(max_cluster_size_ * point_step); + temporary_cluster.data.resize(cluster.indices.size() * point_step); clusters_data_size.push_back(0); } @@ -117,13 +117,17 @@ bool VoxelGridBasedEuclideanCluster::cluster( voxel_grid_.getCentroidIndexAt(voxel_grid_.getGridCoordinates(point.x, point.y, point.z)); if (map.find(index) != map.end()) { auto & cluster_data_size = clusters_data_size.at(map[index]); - if (cluster_data_size + point_step > std::size_t(max_cluster_size_ * point_step)) { + if (cluster_data_size > std::size_t(max_cluster_size_ * point_step)) { continue; } std::memcpy( &temporary_clusters.at(map[index]).data[cluster_data_size], &pointcloud_msg->data[i * point_step], point_step); cluster_data_size += point_step; + if (cluster_data_size == temporary_clusters.at(map[index]).data.size()) { + temporary_clusters.at(map[index]) + .data.resize(temporary_clusters.at(map[index]).data.size() * 2); + } } } diff --git a/perception/euclidean_cluster/src/euclidean_cluster_node.cpp b/perception/euclidean_cluster/src/euclidean_cluster_node.cpp index 31f24766de9a9..f986b0334935f 100644 --- a/perception/euclidean_cluster/src/euclidean_cluster_node.cpp +++ b/perception/euclidean_cluster/src/euclidean_cluster_node.cpp @@ -39,9 +39,9 @@ EuclideanClusterNode::EuclideanClusterNode(const rclcpp::NodeOptions & options) "output", rclcpp::QoS{1}); debug_pub_ = this->create_publisher("debug/clusters", 1); stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); debug_publisher_ = - std::make_unique(this, "euclidean_cluster"); + std::make_unique(this, "euclidean_cluster"); stop_watch_ptr_->tic("cyclic_time"); stop_watch_ptr_->tic("processing_time"); } diff --git a/perception/euclidean_cluster/src/euclidean_cluster_node.hpp b/perception/euclidean_cluster/src/euclidean_cluster_node.hpp index 23724ae880827..92f10696d17dc 100644 --- a/perception/euclidean_cluster/src/euclidean_cluster_node.hpp +++ b/perception/euclidean_cluster/src/euclidean_cluster_node.hpp @@ -41,8 +41,8 @@ class EuclideanClusterNode : public rclcpp::Node rclcpp::Publisher::SharedPtr debug_pub_; std::shared_ptr cluster_; - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr debug_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr debug_publisher_; }; } // namespace euclidean_cluster diff --git a/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.cpp b/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.cpp index 2160fd50faafb..e9425095a3b0d 100644 --- a/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.cpp +++ b/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.cpp @@ -43,8 +43,8 @@ VoxelGridBasedEuclideanClusterNode::VoxelGridBasedEuclideanClusterNode( "output", rclcpp::QoS{1}); debug_pub_ = this->create_publisher("debug/clusters", 1); stop_watch_ptr_ = - std::make_unique>(); - debug_publisher_ = std::make_unique( + std::make_unique>(); + debug_publisher_ = std::make_unique( this, "voxel_grid_based_euclidean_cluster"); stop_watch_ptr_->tic("cyclic_time"); stop_watch_ptr_->tic("processing_time"); diff --git a/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.hpp b/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.hpp index 3a954436ce8ca..b0c5d0e5a7fbf 100644 --- a/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.hpp +++ b/perception/euclidean_cluster/src/voxel_grid_based_euclidean_cluster_node.hpp @@ -41,8 +41,8 @@ class VoxelGridBasedEuclideanClusterNode : public rclcpp::Node rclcpp::Publisher::SharedPtr debug_pub_; std::shared_ptr cluster_; - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr debug_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr debug_publisher_; }; } // namespace euclidean_cluster diff --git a/perception/ground_segmentation/CMakeLists.txt b/perception/ground_segmentation/CMakeLists.txt index 656ffec486c3c..f8e4f50a553a2 100644 --- a/perception/ground_segmentation/CMakeLists.txt +++ b/perception/ground_segmentation/CMakeLists.txt @@ -21,20 +21,20 @@ include_directories( ${GRID_MAP_INCLUDE_DIR} ) -ament_auto_add_library(ground_segmentation SHARED - src/ray_ground_filter_nodelet.cpp - src/ransac_ground_filter_nodelet.cpp - src/scan_ground_filter_nodelet.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/ray_ground_filter/node.cpp + src/ransac_ground_filter/node.cpp + src/scan_ground_filter/node.cpp ) -target_link_libraries(ground_segmentation +target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES} ${OpenCV_LIBRARIES} ${PCL_LIBRARIES} ) if(OPENMP_FOUND) - set_target_properties(ground_segmentation PROPERTIES + set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} LINK_FLAGS ${OpenMP_CXX_FLAGS} ) @@ -42,18 +42,18 @@ endif() # ========== Ground Filter ========== # -- Ray Ground Filter -- -rclcpp_components_register_node(ground_segmentation - PLUGIN "ground_segmentation::RayGroundFilterComponent" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::ground_segmentation::RayGroundFilterComponent" EXECUTABLE ray_ground_filter_node) # -- RANSAC Ground Filter -- -rclcpp_components_register_node(ground_segmentation - PLUGIN "ground_segmentation::RANSACGroundFilterComponent" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::ground_segmentation::RANSACGroundFilterComponent" EXECUTABLE ransac_ground_filter_node) # -- Scan Ground Filter -- -rclcpp_components_register_node(ground_segmentation - PLUGIN "ground_segmentation::ScanGroundFilterComponent" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::ground_segmentation::ScanGroundFilterComponent" EXECUTABLE scan_ground_filter_node) @@ -88,7 +88,7 @@ if(BUILD_TESTING) ) target_link_libraries(test_ray_ground_filter - ground_segmentation + ${PROJECT_NAME} ${YAML_CPP_LIBRARIES} ) @@ -97,7 +97,14 @@ if(BUILD_TESTING) ) target_link_libraries(test_scan_ground_filter - ground_segmentation + ${PROJECT_NAME} ${YAML_CPP_LIBRARIES} ) + ament_add_ros_isolated_gtest(test_ransac_ground_filter + test/test_ransac_ground_filter.cpp + ) + target_link_libraries(test_ransac_ground_filter + ground_segmentation + ${YAML_CPP_LIBRARIES}) + endif() diff --git a/perception/ground_segmentation/config/ground_segmentation.param.yaml b/perception/ground_segmentation/config/ground_segmentation.param.yaml index 594ef1fe974b2..ca077941f0185 100644 --- a/perception/ground_segmentation/config/ground_segmentation.param.yaml +++ b/perception/ground_segmentation/config/ground_segmentation.param.yaml @@ -16,7 +16,7 @@ negative: False common_ground_filter: - plugin: "ground_segmentation::ScanGroundFilterComponent" + plugin: "autoware::ground_segmentation::ScanGroundFilterComponent" parameters: global_slope_max_angle_deg: 10.0 local_slope_max_angle_deg: 13.0 # recommended 30.0 for non elevation_grid_mode diff --git a/perception/ground_segmentation/launch/scan_ground_filter.launch.py b/perception/ground_segmentation/launch/scan_ground_filter.launch.py index df8290997315e..990fcace3449a 100644 --- a/perception/ground_segmentation/launch/scan_ground_filter.launch.py +++ b/perception/ground_segmentation/launch/scan_ground_filter.launch.py @@ -36,7 +36,7 @@ def launch_setup(context, *args, **kwargs): nodes = [ ComposableNode( package="ground_segmentation", - plugin="ground_segmentation::ScanGroundFilterComponent", + plugin="autoware::ground_segmentation::ScanGroundFilterComponent", name="scan_ground_filter", remappings=[ ("input", LaunchConfiguration("input/pointcloud")), diff --git a/perception/ground_segmentation/src/ransac_ground_filter_nodelet.cpp b/perception/ground_segmentation/src/ransac_ground_filter/node.cpp similarity index 95% rename from perception/ground_segmentation/src/ransac_ground_filter_nodelet.cpp rename to perception/ground_segmentation/src/ransac_ground_filter/node.cpp index d7fa777dc58c9..25e29c5b9f21a 100644 --- a/perception/ground_segmentation/src/ransac_ground_filter_nodelet.cpp +++ b/perception/ground_segmentation/src/ransac_ground_filter/node.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "ground_segmentation/ransac_ground_filter_nodelet.hpp" +#include "node.hpp" #include @@ -54,15 +54,6 @@ Eigen::Vector3d getArbitraryOrthogonalVector(const Eigen::Vector3d & input) return unit_vec; } -ground_segmentation::PlaneBasis getPlaneBasis(const Eigen::Vector3d & plane_normal) -{ - ground_segmentation::PlaneBasis basis; - basis.e_z = plane_normal; - basis.e_x = getArbitraryOrthogonalVector(plane_normal); - basis.e_y = basis.e_x.cross(basis.e_z); - return basis; -} - geometry_msgs::msg::Pose getDebugPose(const Eigen::Affine3d & plane_affine) { geometry_msgs::msg::Pose debug_pose; @@ -78,8 +69,17 @@ geometry_msgs::msg::Pose getDebugPose(const Eigen::Affine3d & plane_affine) } } // namespace -namespace ground_segmentation +namespace autoware::ground_segmentation { +PlaneBasis getPlaneBasis(const Eigen::Vector3d & plane_normal) +{ + PlaneBasis basis; + basis.e_z = plane_normal; + basis.e_x = getArbitraryOrthogonalVector(plane_normal); + basis.e_y = basis.e_x.cross(basis.e_z); + return basis; +} + using pointcloud_preprocessor::get_param; RANSACGroundFilterComponent::RANSACGroundFilterComponent(const rclcpp::NodeOptions & options) @@ -203,7 +203,7 @@ Eigen::Affine3d RANSACGroundFilterComponent::getPlaneAffine( pcl::PointXYZ centroid_point; centroid.get(centroid_point); Eigen::Translation trans(centroid_point.x, centroid_point.y, centroid_point.z); - const ground_segmentation::PlaneBasis basis = getPlaneBasis(plane_normal); + const PlaneBasis basis = getPlaneBasis(plane_normal); Eigen::Matrix3d rot; rot << basis.e_x.x(), basis.e_y.x(), basis.e_z.x(), basis.e_x.y(), basis.e_y.y(), basis.e_z.y(), basis.e_x.z(), basis.e_y.z(), basis.e_z.z(); @@ -292,12 +292,13 @@ void RANSACGroundFilterComponent::filter( no_ground_cloud_msg_ptr->header = input->header; no_ground_cloud_msg_ptr->fields = input->fields; no_ground_cloud_msg_ptr->point_step = point_step; + no_ground_cloud_msg_ptr->data.resize(input->data.size()); size_t output_size = 0; // use not downsampled pointcloud for extract pointcloud that higher than height threshold for (size_t global_size = 0; global_size < input->data.size(); global_size += point_step) { - float x = *reinterpret_cast(input->data[global_size + x_offset]); - float y = *reinterpret_cast(input->data[global_size + y_offset]); - float z = *reinterpret_cast(input->data[global_size + z_offset]); + float x = *reinterpret_cast(&input->data[global_size + x_offset]); + float y = *reinterpret_cast(&input->data[global_size + y_offset]); + float z = *reinterpret_cast(&input->data[global_size + z_offset]); const Eigen::Vector3d transformed_point = plane_affine.inverse() * Eigen::Vector3d(x, y, z); if (std::abs(transformed_point.z()) > height_threshold_) { std::memcpy( @@ -395,7 +396,7 @@ rcl_interfaces::msg::SetParametersResult RANSACGroundFilterComponent::paramCallb return result; } -} // namespace ground_segmentation +} // namespace autoware::ground_segmentation #include -RCLCPP_COMPONENTS_REGISTER_NODE(ground_segmentation::RANSACGroundFilterComponent) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::ground_segmentation::RANSACGroundFilterComponent) diff --git a/perception/ground_segmentation/include/ground_segmentation/ransac_ground_filter_nodelet.hpp b/perception/ground_segmentation/src/ransac_ground_filter/node.hpp similarity index 94% rename from perception/ground_segmentation/include/ground_segmentation/ransac_ground_filter_nodelet.hpp rename to perception/ground_segmentation/src/ransac_ground_filter/node.hpp index f2fc47a50ff62..ebdd28f26ebe8 100644 --- a/perception/ground_segmentation/include/ground_segmentation/ransac_ground_filter_nodelet.hpp +++ b/perception/ground_segmentation/src/ransac_ground_filter/node.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef GROUND_SEGMENTATION__RANSAC_GROUND_FILTER_NODELET_HPP_ -#define GROUND_SEGMENTATION__RANSAC_GROUND_FILTER_NODELET_HPP_ +#ifndef RANSAC_GROUND_FILTER__NODE_HPP_ +#define RANSAC_GROUND_FILTER__NODE_HPP_ #include "pointcloud_preprocessor/filter.hpp" @@ -38,7 +38,7 @@ #include #include -namespace ground_segmentation +namespace autoware::ground_segmentation { struct PlaneBasis { @@ -129,6 +129,6 @@ class RANSACGroundFilterComponent : public pointcloud_preprocessor::Filter EIGEN_MAKE_ALIGNED_OPERATOR_NEW explicit RANSACGroundFilterComponent(const rclcpp::NodeOptions & options); }; -} // namespace ground_segmentation +} // namespace autoware::ground_segmentation -#endif // GROUND_SEGMENTATION__RANSAC_GROUND_FILTER_NODELET_HPP_ +#endif // RANSAC_GROUND_FILTER__NODE_HPP_ diff --git a/perception/ground_segmentation/include/ground_segmentation/gencolors.hpp b/perception/ground_segmentation/src/ray_ground_filter/gencolors.hpp similarity index 96% rename from perception/ground_segmentation/include/ground_segmentation/gencolors.hpp rename to perception/ground_segmentation/src/ray_ground_filter/gencolors.hpp index 07637b1514b09..658e5718a01cc 100644 --- a/perception/ground_segmentation/include/ground_segmentation/gencolors.hpp +++ b/perception/ground_segmentation/src/ray_ground_filter/gencolors.hpp @@ -53,19 +53,18 @@ // //M*/ -#ifndef GROUND_SEGMENTATION__GENCOLORS_HPP_ -#define GROUND_SEGMENTATION__GENCOLORS_HPP_ +#ifndef RAY_GROUND_FILTER__GENCOLORS_HPP_ +#define RAY_GROUND_FILTER__GENCOLORS_HPP_ #include +#include #include #include #include -// #include -#include -namespace ray_ground_filter +namespace autoware::ray_ground_filter { using namespace cv; // NOLINT @@ -159,5 +158,5 @@ inline void generateColors(std::vector & colors, size_t count, size_t fa colors[i] = Scalar(c.x, c.y, c.z); } } -} // namespace ray_ground_filter -#endif // GROUND_SEGMENTATION__GENCOLORS_HPP_ +} // namespace autoware::ray_ground_filter +#endif // RAY_GROUND_FILTER__GENCOLORS_HPP_ diff --git a/perception/ground_segmentation/src/ray_ground_filter_nodelet.cpp b/perception/ground_segmentation/src/ray_ground_filter/node.cpp similarity index 97% rename from perception/ground_segmentation/src/ray_ground_filter_nodelet.cpp rename to perception/ground_segmentation/src/ray_ground_filter/node.cpp index c58f1c0e507e5..c75972d3c4f14 100644 --- a/perception/ground_segmentation/src/ray_ground_filter_nodelet.cpp +++ b/perception/ground_segmentation/src/ray_ground_filter/node.cpp @@ -29,12 +29,12 @@ * v1.0: amc-nu (abrahammonrroy@yahoo.com) */ -#include "ground_segmentation/ray_ground_filter_nodelet.hpp" +#include "node.hpp" #include #include -namespace ground_segmentation +namespace autoware::ground_segmentation { using pointcloud_preprocessor::get_param; @@ -250,8 +250,9 @@ void RayGroundFilterComponent::ClassifyPointCloud( // // Enable the dynamic reconfigure service // has_service = true; // srv_ = boost::make_shared< -// dynamic_reconfigure::Server >(nh); -// dynamic_reconfigure::Server::CallbackType f = +// dynamic_reconfigure::Server >(nh); +// dynamic_reconfigure::Server::CallbackType +// f = // boost::bind(&RayGroundFilterComponent::config_callback, this, _1, _2); // srv_->setCallback(f); // return (true); @@ -394,7 +395,7 @@ rcl_interfaces::msg::SetParametersResult RayGroundFilterComponent::paramCallback return result; } -} // namespace ground_segmentation +} // namespace autoware::ground_segmentation #include -RCLCPP_COMPONENTS_REGISTER_NODE(ground_segmentation::RayGroundFilterComponent) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::ground_segmentation::RayGroundFilterComponent) diff --git a/perception/ground_segmentation/include/ground_segmentation/ray_ground_filter_nodelet.hpp b/perception/ground_segmentation/src/ray_ground_filter/node.hpp similarity index 95% rename from perception/ground_segmentation/include/ground_segmentation/ray_ground_filter_nodelet.hpp rename to perception/ground_segmentation/src/ray_ground_filter/node.hpp index 6e2638e8566d8..8bb17cdaf8a09 100644 --- a/perception/ground_segmentation/include/ground_segmentation/ray_ground_filter_nodelet.hpp +++ b/perception/ground_segmentation/src/ray_ground_filter/node.hpp @@ -42,8 +42,8 @@ * v1.0: amc-nu (abrahammonrroy@yahoo.com) */ -#ifndef GROUND_SEGMENTATION__RAY_GROUND_FILTER_NODELET_HPP_ -#define GROUND_SEGMENTATION__RAY_GROUND_FILTER_NODELET_HPP_ +#ifndef RAY_GROUND_FILTER__NODE_HPP_ +#define RAY_GROUND_FILTER__NODE_HPP_ #include @@ -58,14 +58,7 @@ #include #endif -#include - -#include -#include -#include -// #include - -#include "ground_segmentation/gencolors.hpp" +#include "gencolors.hpp" #include "pointcloud_preprocessor/filter.hpp" #include @@ -76,11 +69,17 @@ #include #include +#include + +#include +#include +#include + namespace bg = boost::geometry; using Point = bg::model::d2::point_xy; using Polygon = bg::model::polygon; -namespace ground_segmentation +namespace autoware::ground_segmentation { class RayGroundFilterComponent : public pointcloud_preprocessor::Filter { @@ -206,6 +205,6 @@ class RayGroundFilterComponent : public pointcloud_preprocessor::Filter EIGEN_MAKE_ALIGNED_OPERATOR_NEW explicit RayGroundFilterComponent(const rclcpp::NodeOptions & options); }; -} // namespace ground_segmentation +} // namespace autoware::ground_segmentation -#endif // GROUND_SEGMENTATION__RAY_GROUND_FILTER_NODELET_HPP_ +#endif // RAY_GROUND_FILTER__NODE_HPP_ diff --git a/perception/ground_segmentation/src/scan_ground_filter_nodelet.cpp b/perception/ground_segmentation/src/scan_ground_filter/node.cpp similarity index 97% rename from perception/ground_segmentation/src/scan_ground_filter_nodelet.cpp rename to perception/ground_segmentation/src/scan_ground_filter/node.cpp index 7af02da734524..26db036f79bbe 100644 --- a/perception/ground_segmentation/src/scan_ground_filter_nodelet.cpp +++ b/perception/ground_segmentation/src/scan_ground_filter/node.cpp @@ -12,28 +12,28 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "ground_segmentation/scan_ground_filter_nodelet.hpp" +#include "node.hpp" -#include -#include -#include -#include +#include "autoware/universe_utils/geometry/geometry.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware_vehicle_info_utils/vehicle_info_utils.hpp" #include #include #include -namespace ground_segmentation +namespace autoware::ground_segmentation { +using autoware::universe_utils::calcDistance3d; +using autoware::universe_utils::deg2rad; +using autoware::universe_utils::normalizeDegree; +using autoware::universe_utils::normalizeRadian; using autoware::vehicle_info_utils::VehicleInfoUtils; -using autoware_universe_utils::calcDistance3d; -using autoware_universe_utils::deg2rad; -using autoware_universe_utils::normalizeDegree; -using autoware_universe_utils::normalizeRadian; using pointcloud_preprocessor::get_param; ScanGroundFilterComponent::ScanGroundFilterComponent(const rclcpp::NodeOptions & options) -: Filter("ScanGroundFilter", options) +: pointcloud_preprocessor::Filter("ScanGroundFilter", options) { // set initial parameters { @@ -79,8 +79,8 @@ ScanGroundFilterComponent::ScanGroundFilterComponent(const rclcpp::NodeOptions & // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ptr_ = std::make_unique(this, "scan_ground_filter"); stop_watch_ptr_->tic("cyclic_time"); @@ -715,7 +715,7 @@ rcl_interfaces::msg::SetParametersResult ScanGroundFilterComponent::onParameter( return result; } -} // namespace ground_segmentation +} // namespace autoware::ground_segmentation #include -RCLCPP_COMPONENTS_REGISTER_NODE(ground_segmentation::ScanGroundFilterComponent) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::ground_segmentation::ScanGroundFilterComponent) diff --git a/perception/ground_segmentation/include/ground_segmentation/scan_ground_filter_nodelet.hpp b/perception/ground_segmentation/src/scan_ground_filter/node.hpp similarity index 95% rename from perception/ground_segmentation/include/ground_segmentation/scan_ground_filter_nodelet.hpp rename to perception/ground_segmentation/src/scan_ground_filter/node.hpp index 39498f9c8c82f..0e6ed598053ba 100644 --- a/perception/ground_segmentation/include/ground_segmentation/scan_ground_filter_nodelet.hpp +++ b/perception/ground_segmentation/src/scan_ground_filter/node.hpp @@ -12,14 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef GROUND_SEGMENTATION__SCAN_GROUND_FILTER_NODELET_HPP_ -#define GROUND_SEGMENTATION__SCAN_GROUND_FILTER_NODELET_HPP_ +#ifndef SCAN_GROUND_FILTER__NODE_HPP_ +#define SCAN_GROUND_FILTER__NODE_HPP_ +#include "autoware_vehicle_info_utils/vehicle_info.hpp" #include "pointcloud_preprocessor/filter.hpp" #include "pointcloud_preprocessor/transform_info.hpp" -#include - #include #include @@ -41,7 +40,7 @@ class ScanGroundFilterTest; -namespace ground_segmentation +namespace autoware::ground_segmentation { using autoware::vehicle_info_utils::VehicleInfo; @@ -280,9 +279,9 @@ class ScanGroundFilterComponent : public pointcloud_preprocessor::Filter rcl_interfaces::msg::SetParametersResult onParameter(const std::vector & p); // debugger - std::unique_ptr> stop_watch_ptr_{ + std::unique_ptr> stop_watch_ptr_{ nullptr}; - std::unique_ptr debug_publisher_ptr_{nullptr}; + std::unique_ptr debug_publisher_ptr_{nullptr}; public: EIGEN_MAKE_ALIGNED_OPERATOR_NEW @@ -291,6 +290,6 @@ class ScanGroundFilterComponent : public pointcloud_preprocessor::Filter // for test friend ScanGroundFilterTest; }; -} // namespace ground_segmentation +} // namespace autoware::ground_segmentation -#endif // GROUND_SEGMENTATION__SCAN_GROUND_FILTER_NODELET_HPP_ +#endif // SCAN_GROUND_FILTER__NODE_HPP_ diff --git a/perception/ground_segmentation/test/data/test.pcd b/perception/ground_segmentation/test/data/test.pcd index f9ad91ab980c1..2df8ca09a18f9 100644 --- a/perception/ground_segmentation/test/data/test.pcd +++ b/perception/ground_segmentation/test/data/test.pcd @@ -1,65547 +1,65547 @@ # .PCD v0.7 - Point Cloud Data file format VERSION 0.7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 +FIELDS x y z intensity +SIZE 4 4 4 4 +TYPE F F F F +COUNT 1 1 1 1 WIDTH 1024 HEIGHT 64 VIEWPOINT 0 0 0 1 0 0 0 POINTS 65536 DATA ascii --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.5351443 13.340423 5.4857445 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9488316 -2.2632864 3.2971976 -7.969614 -2.3221679 3.3115354 -0 -0 0 -0 -0 0 -0 -0 0 -7.9979534 -2.5449817 3.3479314 -7.9919157 -2.5971713 3.3519754 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.3939185 -2.2862976 1.9880397 -4.3830962 -2.3149531 1.9895103 -4.3425841 -2.3277383 1.9777459 -4.3355713 -2.3583412 1.9810547 -4.3120642 -2.3799541 1.9770106 -4.2689838 -2.3904581 1.9641433 -4.226747 -2.4009831 1.9516436 -4.2022672 -2.421299 1.9472319 -4.1961622 -2.4522016 1.9512759 -4.0786486 -2.4171882 1.9042183 -4.0924315 -2.4594212 1.9174533 -4.0486789 -2.4670575 1.9042183 -3.5857356 -2.2150939 1.6961354 -3.6603353 -2.2923615 1.7373109 -3.9154494 -2.4858129 1.8634106 -3.9704947 -2.5551016 1.896498 -3.8963318 -2.5412979 1.8689251 -3.8643763 -2.5543842 1.8612047 -0 -0 0 -0 -0 0 -0 -0 0 -4.0545526 -2.8255713 1.983628 -4.1655059 -2.9410751 2.0457587 -0 -0 0 -2.9402294 -2.1300862 1.465259 -2.9308519 -2.1508391 1.4670972 -2.9026759 -2.1576812 1.4597443 -3.7584021 -2.830193 1.8898804 -3.729876 -2.8447387 1.8843659 -3.560034 -2.7498541 1.8082649 -2.903774 -2.2712555 1.4873172 -3.2279439 -2.5570679 1.657901 -2.8372459 -2.2758653 1.4678324 -2.8520942 -2.3166943 1.4825379 -2.8529043 -2.3465614 1.4902583 -4.0857925 -3.4035554 2.1321537 -2.9418752 -2.4809532 1.5512862 -3.968065 -3.3887992 2.0928164 -3.0216296 -2.612391 1.6090053 -3.0048437 -2.6302695 1.6086377 -2.8209605 -2.4999571 1.5200369 -2.7502079 -2.4675174 1.490626 -2.7370803 -2.4862223 1.4917289 -2.7265639 -2.5073781 1.4943023 -2.7097666 -2.5227928 1.4935671 -2.7307694 -2.5738277 1.5134195 -3.9565771 -3.776047 2.1920786 -2.922313 -2.8230159 1.6362104 -2.9428232 -2.8779671 1.6571658 -2.9647501 -2.9352386 1.6792241 -3.0267956 -3.0337141 1.7240759 -3.2267456 -3.2741785 1.8472345 -2.7448459 -2.8193479 1.5854765 -2.8125589 -2.9246423 1.6340046 -2.8419425 -2.9917531 1.6612098 -2.8413439 -3.0281284 1.6715037 -2.9010746 -3.1301036 1.7170907 -2.8403811 -3.1025622 1.6928266 -2.9740608 -3.288969 1.7828979 -2.9216201 -3.27108 1.7637807 -2.8861182 -3.2715065 1.7545898 -2.8916416 -3.3186088 1.7700306 -2.8178585 -3.2742455 1.7376785 -2.7182388 -3.1979189 1.6891503 -2.6573219 -3.1653798 1.6637833 -2.65921 -3.2074044 1.6770183 -2.5900083 -3.1632047 1.6461366 -2.5851634 -3.19712 1.6553277 -2.5202522 -3.156225 1.6266519 -2.6896348 -3.4112108 1.7472371 -3.2374752 -4.1586623 2.1134043 -2.7036643 -3.5169663 1.7836332 -3.1980014 -4.2136374 2.1211245 -2.661417 -3.5513682 1.7843684 -2.6451054 -3.575109 1.7880448 -2.6286023 -3.598783 1.7917212 -2.6075585 -3.616353 1.7924565 -2.5815465 -3.6269801 1.789883 -2.5458829 -3.6237247 1.7806921 -2.5172436 -3.6301055 1.7762804 -2.4838967 -3.6293633 1.7685601 -0 -0 0 -2.0138299 -3.0210435 1.465259 -1.995766 -3.0341206 1.4656266 -1.9806536 -3.0517709 1.4682001 -1.9593848 -3.0599499 1.4663619 -1.9480187 -3.0837107 1.4718764 -1.8897341 -3.0324516 1.4424654 -1.8657378 -3.0352728 1.4384214 -1.8331047 -3.0235972 1.4277599 -1.7944851 -3.0012579 1.4123192 -1.4432333 -2.447331 1.1531346 -1.9252216 -3.3117361 1.544301 -1.4140165 -2.4664714 1.1538699 -1.4061716 -2.4880581 1.159752 -1.3605776 -2.4421954 1.1351203 -1.3415416 -2.4431596 1.1318116 -1.5273064 -2.8227546 1.298719 -1.4780405 -2.7721558 1.2718816 -1.3758643 -2.6189535 1.1994569 -1.2726371 -2.4588253 1.1244588 -1.4596828 -2.8635299 1.3005573 -1.5083795 -3.0046031 1.3590117 -1.5471606 -3.1297009 1.4101133 -1.2155716 -2.4968436 1.1277676 -1.6833229 -3.5133278 1.5700357 -1.6506341 -3.5000355 1.5597419 -1.3032149 -2.8073275 1.2534996 -1.3122176 -2.8728023 1.278499 -1.2812352 -2.8511059 1.2656317 -1.2479396 -2.8231835 1.250191 -0.96055067 -2.2089436 0.98218304 -0.98094124 -2.2943356 1.0163734 -1.4671522 -3.4922237 1.5273898 -1.451726 -3.515775 1.5336396 -0.95775992 -2.3594043 1.0365934 -0.94395304 -2.3669646 1.0373287 -1.3840559 -3.5349722 1.5306984 -0.92617327 -2.4078865 1.0498284 -1.034101 -2.7389631 1.1873249 -1.2651724 -3.4150715 1.4696707 -0.91946858 -2.5285463 1.0935773 -1.2212965 -3.4250836 1.4674648 -1.2824463 -3.6678033 1.5659916 -1.147539 -3.3474326 1.4288628 -1.0044848 -2.9894094 1.2766608 -0.92832136 -2.819711 1.203501 -0.91527796 -2.8386321 1.2090155 -0.88190609 -2.7936389 1.1880602 -0.86913449 -2.813216 1.1939423 -0.87200856 -2.8852689 1.2215152 -1.0609206 -3.5907371 1.5101107 -0.74529344 -2.5794404 1.0913714 -0.74156076 -2.6269298 1.1090181 -0.98428309 -3.5719984 1.4946699 -0.90323919 -3.3579288 1.4045987 -0.87696052 -3.3418174 1.3957754 -0.8720938 -3.4084051 1.4207748 -0.77364761 -3.1023574 1.2939398 -0.93363732 -3.8454344 1.5942998 -0.6883145 -2.9115889 1.2126919 -0.56100941 -2.4389904 1.0193144 -0.53651738 -2.3997266 1.0020355 -0.52985567 -2.4402378 1.0171087 -0.69069278 -3.2798038 1.3549676 -0.52457225 -2.5677502 1.0660044 -0.51925474 -2.6238372 1.0873275 -0.50820684 -2.6534638 1.097989 -0.48566574 -2.6226959 1.0843863 -0.46989065 -2.6274574 1.0851216 -0.45502153 -2.6376233 1.0880626 -0.43609169 -2.6238513 1.0814452 -0 -0 0 -1.1900495 -7.762095 3.1343341 -1.1526712 -7.8391781 3.1622744 -0.4601472 -3.2636645 1.3329093 -0.31973183 -2.3705482 0.97556555 -0.30376211 -2.3613963 0.97115391 -0.2902799 -2.3715239 0.97446269 -0.27636421 -2.3788033 0.97666848 -0.26358441 -2.3970942 0.98328596 -0.25278741 -2.4365935 0.99835908 -0.2726002 -2.7963135 1.1406349 -0.32369035 -3.5490437 1.438789 -0.30944133 -3.6399217 1.4740822 -0.28491774 -3.6139383 1.4630531 -0.2642138 -3.6360245 1.4711411 -0.14874732 -2.229893 0.9134348 -0.13773625 -2.275322 0.93108141 -0.1515798 -2.7924387 1.1354879 -0 -0 0 -0 -0 0 -0.10584817 -2.9555397 1.1990893 -0.09674453 -3.264751 1.3211449 -0.07662455 -3.2615643 1.3196745 -0.057400484 -3.3084648 1.3380563 -0.036806334 -3.2817872 1.3273948 -0.016379403 -3.2205741 1.3031307 --0.0033832951 -3.2215438 1.3034984 --0.023754396 -3.3014376 1.3351152 --0.043998457 -3.3002996 1.3347476 --0.064930029 -3.3343697 1.3483502 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.2875165 -3.6561685 1.5623153 --1.3096116 -3.6473243 1.5619477 --0 -0 0 --0 -0 0 --0 -0 0 --1.2623429 -3.2620118 1.4126868 --1.2768747 -3.2403631 1.4068046 --1.2925746 -3.2221115 1.4023929 --1.3672057 -3.3484123 1.4597443 --0 -0 0 --0 -0 0 --0 -0 0 --1.6324087 -3.7330129 1.6406221 --1.6942242 -3.8104403 1.6784889 --1.7191058 -3.8033624 1.6799593 --1.7280372 -3.7614794 1.6663568 --3.4012337 -7.2827697 3.2074938 --3.3617082 -7.0844979 3.1299224 --3.4010749 -7.0553608 3.126246 --3.435302 -7.015986 3.1181579 --1.5158021 -3.0497537 1.3762907 --1.5256811 -3.0229638 1.3685702 --1.5514156 -3.0276127 1.3748201 --1.5665278 -3.0114374 1.371879 --3.8539882 -7.2953944 3.291683 --3.8494501 -7.1798215 3.2505076 --3.8938768 -7.1568832 3.2508752 --0 -0 0 --1.963174 -3.5063548 1.6185639 --0 -0 0 --1.6604819 -2.8825824 1.3450414 --1.7443253 -2.9855349 1.3968784 --2.5319765 -4.2722263 1.9931866 --2.4340219 -4.0501914 1.8979685 --2.3741081 -3.8962257 1.8336319 --2.3114216 -3.7415707 1.7685601 --2.2548313 -3.6004455 1.7093704 --2.2494552 -3.5433683 1.6891503 --2.0068421 -3.1189981 1.4961405 --2.0015466 -3.069243 1.4784939 --2.0162375 -3.0506985 1.4755528 --3.0559394 -4.5616546 2.2005343 --3.3822131 -4.9820976 2.4104555 --5.5705485 -8.0968809 3.9151964 --5.9259624 -8.5011845 4.1265879 --5.617444 -7.9542336 3.8795354 --2.4865239 -3.4765773 1.7196642 --5.7479281 -7.9306288 3.9019616 --5.7810683 -7.8742228 3.8916676 --5.2070746 -7.0021439 3.4795458 --6.2706671 -8.3248425 4.1501169 --0 -0 0 --5.3561201 -6.9323382 3.4931483 --5.4266415 -6.9352269 3.5111625 --5.4667821 -6.8988843 3.509692 --5.5229812 -6.8826165 3.5185153 --0 -0 0 --5.6111627 -6.8193488 3.5210888 --3.2154152 -3.8600426 2.0159802 --5.7106171 -6.7691679 3.5310149 --5.7955399 -6.7849073 3.5574849 --0 -0 0 --2.5653198 -2.9306891 1.5696681 --3.1848421 -3.593298 1.9281148 --3.2142854 -3.5819924 1.9325265 --2.6782527 -2.9483502 1.6045936 --2.7107763 -2.9476006 1.6130493 --2.7357845 -2.9383969 1.6170933 --2.6810229 -2.844429 1.5751827 --2.6798017 -2.8084192 1.5645211 --3.6238074 -3.750788 2.0917137 --3.6545587 -3.7364583 2.0961251 --2.7441311 -2.7718306 1.5718739 --3.6645756 -3.6558704 2.0762727 --3.0416284 -2.9976826 1.7181937 --2.9079962 -2.8310995 1.6343722 --2.9192784 -2.8074033 1.6310636 --2.897332 -2.752301 1.6097406 --2.9114518 -2.7319269 1.60827 --3.1819541 -2.9491045 1.7450312 --3.2281199 -2.9552636 1.7601044 --3.1047533 -2.8075726 1.6847386 --3.0310392 -2.7073402 1.6365781 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --4.0260353 -3.2550223 2.0766404 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --4.1973372 -3.1856363 2.1130366 --0 -0 0 --0 -0 0 --4.0404425 -2.9510167 2.0078921 --4.0524378 -2.9218197 2.004951 --5.7965436 -4.1248894 2.8424296 --5.7479191 -4.0374074 2.8067689 --5.9415059 -4.1191325 2.8880167 --5.9336619 -4.0600224 2.8722084 --5.9337969 -4.0068879 2.8604438 --6.0116749 -4.0059772 2.8858109 --6.0454674 -3.9751446 2.8902225 --6.0947127 -3.9541686 2.9019871 --5.8548775 -3.7477822 2.7780931 --0 -0 0 --5.8593774 -3.6500895 2.758976 --6.6519008 -4.0871687 3.1163197 --5.8520279 -3.5465903 2.7350795 --0 -0 0 --5.8975129 -3.4759259 2.7361825 --7.3709908 -4.2833204 3.400136 --6.9573288 -3.9861174 3.1997736 --7.448103 -4.2067189 3.4115329 --8.5829649 -4.7782664 3.9133582 --5.3604932 -2.9418387 2.4472191 --7.0816903 -3.8296542 3.2126408 --5.3789544 -2.8666542 2.4394989 --7.1429749 -3.7502418 3.2192583 --7.0915041 -3.6679022 3.1861708 --7.4113755 -3.7758327 3.3181529 --6.7660689 -3.3950613 3.022572 --6.5841584 -3.2534051 2.9332361 --6.1498766 -2.9920983 2.733609 --5.5289569 -2.6483071 2.453469 --5.5249124 -2.6048181 2.4446456 --5.6707153 -2.6311216 2.5012619 --8.741827 -3.990366 3.8288016 --6.3278465 -2.8420353 2.7722108 --7.4408937 -3.2869997 3.2457283 --9.1157608 -3.9599135 3.9589453 --7.5157361 -3.2104137 3.2608013 --7.5344357 -3.1638777 3.2604337 --7.0370374 -2.904434 3.0394835 --7.0400748 -2.8552613 3.0332336 --7.0531421 -2.8102901 3.0313954 --0 -0 0 --0 -0 0 --0 -0 0 --11.876719 -4.3968048 5.0364914 --9.6377573 -3.5010831 4.0835743 --12.423872 -4.4267273 5.2438388 --0 -0 0 --12.581958 -4.3097863 5.2875876 --6.6447129 -2.2311912 2.8008866 --10.984507 -3.6127696 4.6012082 --12.161667 -3.9172733 5.0809755 --10.909163 -3.4402344 4.5519447 --8.6302633 -2.6637287 3.6004984 --6.5862746 -1.9889675 2.7497849 --6.6090579 -1.9516762 2.7541966 --6.6521826 -1.9201082 2.7670639 --10.963908 -3.0911138 4.5331955 --6.9110589 -1.9032298 2.8637526 --6.9172182 -1.859341 2.8615468 --6.9554844 -1.823935 2.872576 --8.8469801 -2.2616866 3.6398358 --8.8020334 -2.1927555 3.6159394 --7.1505589 -1.7350441 2.9387507 --7.0850415 -1.6731945 2.9078691 --9.7028913 -2.2282095 3.9655628 --8.9484997 -1.9973418 3.6545413 --8.8406134 -1.9164068 3.6060131 --8.6965828 -1.8294104 3.5431471 --12.220451 -2.4920003 4.9603901 --11.055835 -2.1840565 4.4850349 --12.245544 -2.3409765 4.9585519 --12.293514 -2.2720454 4.9721546 --12.074682 -2.1550901 4.8787746 --12.106009 -2.0841146 4.8861275 --0 -0 0 --12.306999 -1.9635129 4.9567142 --0 -0 0 --0 -0 0 --12.912019 -1.8169399 5.1846495 --12.359775 -1.6620073 4.9600224 --12.980387 -1.6643806 5.2033987 --12.585098 -1.5353028 5.042006 --12.480654 -1.444909 4.9967866 --12.347844 -1.3528196 4.9405379 --13.035825 -1.347235 5.2107515 --12.942953 -1.2574307 5.1706791 --12.948573 -1.1778222 5.1699438 --12.942583 -1.0972505 5.1647968 --12.960197 -1.018689 5.1692085 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --2.2283025 14.441788 5.6277099 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.5173154 13.328074 5.3104157 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9587998 -2.2579985 3.1991751 -7.9833579 -2.3179851 3.2145569 -0 -0 0 -0 -0 0 -0 -0 0 -7.9721351 -2.528451 3.2338736 -7.9760156 -2.5836496 3.2417433 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.5665121 -2.3713434 2.001184 -4.4742198 -2.358393 1.9675586 -4.4481368 -2.3796356 1.9625506 -4.4211411 -2.4002018 1.9571849 -4.3809733 -2.4133184 1.9460957 -4.3245082 -2.4169226 1.9278522 -4.2998481 -2.4378858 1.9235595 -4.2645698 -2.4525859 1.9146166 -0 -0 0 -4.1594014 -2.4605229 1.8813491 -4.1570392 -2.4936831 1.8870724 -3.5791581 -2.1770656 1.6348827 -4.096714 -2.5263748 1.873837 -4.1769505 -2.6113558 1.9171207 -4.229475 -2.6804204 1.9482419 -4.1257329 -2.650305 1.9085355 -4.0139146 -2.6134157 1.8648942 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -2.9812517 -2.0741069 1.4213262 -2.9951856 -2.1111879 1.4338462 -4.2688856 -3.0481434 2.0394595 -4.411274 -3.1908438 2.115653 -4.3577137 -3.1930161 2.099556 -2.9792175 -2.2113259 1.4513743 -2.954396 -2.221148 1.4460086 -0 -0 0 -3.5547788 -2.7413387 1.7497095 -2.85781 -2.2320478 1.4191798 -3.5230682 -2.7864926 1.7507826 -2.8586316 -2.2897143 1.4331307 -2.8633866 -2.3225043 1.4424313 -2.8259878 -2.3210661 1.4309845 -2.8325162 -2.3556764 1.4413582 -3.1709054 -2.6701195 1.61807 -3.1729393 -2.7052765 1.6273706 -2.9159236 -2.5172422 1.5057471 -2.9911327 -2.6143544 1.5518925 -2.910691 -2.5757306 1.5189826 -3.9069021 -3.500097 2.0394595 -3.9517601 -3.5842261 2.0738003 -4.0204935 -3.6917708 2.1210189 -2.6927042 -2.5033407 1.4384965 -2.9710882 -2.7962718 1.5930299 -2.9619882 -2.8221788 1.5973225 -2.6844838 -2.5894303 1.4588864 -2.5903668 -2.5295277 1.4170336 -2.5794466 -2.5499694 1.4195375 -2.6093006 -2.6113234 1.4442199 -3.0747807 -3.1150594 1.7067835 -3.0503933 -3.1285188 1.7039219 -3.1017566 -3.220484 1.7429129 -0 -0 0 -3.1988683 -3.4039197 1.8194642 -3.1086664 -3.3488889 1.7804731 -3.0262058 -3.3004527 1.7454169 -2.9833283 -3.2940433 1.7325392 -3.0128736 -3.3679614 1.7611564 -2.9463909 -3.3346038 1.7346854 -0 -0 0 -2.780859 -3.2262249 1.6617113 -2.7525353 -3.233273 1.6567034 -2.856456 -3.397331 1.7303928 -2.7568014 -3.3199675 1.6831744 -2.580035 -3.1462049 1.5887372 -2.5248275 -3.117712 1.5669166 -2.5342321 -3.1688781 1.5844446 -2.5147405 -3.1843684 1.5844446 -2.7691016 -3.5509748 1.7550752 -3.2349966 -4.2012148 2.0612803 -6.3218999 -8.3145418 4.0312228 -3.2566442 -4.3384266 2.1081409 -3.2377479 -4.3688302 2.1131492 -2.6693509 -3.6485643 1.7618718 -2.9022789 -4.0183864 1.9289253 -2.7566648 -3.8665659 1.8491546 -2.7554626 -3.9154806 1.8641787 -2.8358138 -4.0826306 1.934291 -2.5920851 -3.781101 1.7861966 -0 -0 0 -0 -0 0 -0 -0 0 -2.0174885 -3.1037309 1.4481548 -1.9615993 -3.0586727 1.4220415 -1.9283129 -3.0477676 1.4116678 -0 -0 0 -0 -0 0 -1.9038813 -3.1354229 1.4352771 -1.8303829 -3.0565207 1.3948551 -1.8310663 -3.1006596 1.4095215 -1.4792532 -2.5405247 1.1562585 -1.4468958 -2.5204005 1.1433808 -1.74746 -3.0875175 1.3891317 -1.4722849 -2.6390824 1.1877375 -1.6779367 -3.0514531 1.3640915 -1.7130287 -3.1610293 1.4073752 -1.673802 -3.1344147 1.391278 -1.3953326 -2.652107 1.1780792 -1.253523 -2.4185429 1.073626 -1.7712772 -3.4690762 1.5222021 -1.7285572 -3.4373331 1.5039586 -1.5039153 -3.0370066 1.3283199 -1.1544933 -2.3680022 1.0392853 -0 -0 0 -0 -0 0 -0 -0 0 -1.5219746 -3.326256 1.4313422 -1.3631231 -3.0281451 1.3022066 -0.98788905 -2.2312961 0.96488041 -0.98275709 -2.2570064 0.97310787 -1.4108392 -3.2947917 1.4030826 -1.109008 -2.6346688 1.1251372 -1.3820856 -3.3403308 1.4148872 -1.4122251 -3.4733117 1.4663984 -1.4012817 -3.5079265 1.4771298 -0.91300511 -2.3272901 0.98777425 -0.914828 -2.3746731 1.0049446 -1.3034269 -3.4457855 1.4413582 -1.0195658 -2.7463887 1.1523236 -1.2354646 -3.3913302 1.4127409 -0.93171871 -2.6074486 1.0907965 -1.1606973 -3.3119428 1.3744653 -1.1027155 -3.2094951 1.3301085 -1.0511039 -3.1215091 1.2918329 -0.96578658 -2.9274874 1.2109891 -0.91678512 -2.8373935 1.1723558 -0.88160646 -2.7868762 1.1498196 -0.83050478 -2.6825149 1.1058205 -1.108956 -3.6607962 1.4953734 -0.68077648 -2.2985542 0.94842547 -0.71213126 -2.4596548 1.0110258 -0.72245842 -2.5538311 1.0467974 -0.61048567 -2.2098873 0.90836126 -0.61199802 -2.2694898 0.93053967 -0.88192892 -3.3514552 1.3576527 -0.88154954 -3.4354951 1.3887739 -0.77319473 -3.0920646 1.2510532 -0.5702669 -2.3418915 0.95343345 -0.68907267 -2.9068749 1.174502 -0.67017376 -2.9064987 1.1727134 -0.53952879 -2.4075747 0.97525418 -0.76066244 -3.4939001 1.3998631 -0.7278142 -3.444597 1.378758 -1.6000967 -7.8071303 3.0829175 -0.5221234 -2.6307561 1.0575289 -0.49962485 -2.6008968 1.044651 -0.48177928 -2.5938144 1.0407162 -0.46486467 -2.591207 1.0385699 -0.45134741 -2.6078124 1.0439357 -0.44256344 -2.6538239 1.0607483 -0.42597538 -2.6546454 1.0600328 -0.41252726 -2.6756673 1.0671872 -0.47651643 -3.2213202 1.2775242 -0.42777121 -3.0198505 1.198469 -0.42302915 -3.1242092 1.2378178 -0.34709805 -2.6877637 1.0682603 -0.29262173 -2.3812051 0.94914091 -0.28093112 -2.407999 0.95879924 -0.39386666 -3.5643206 1.4037981 -0.36694661 -3.5183735 1.3851968 -0.24349649 -2.4833934 0.98598564 -0.33315513 -3.6249008 1.4245455 -0.3053968 -3.5626783 1.3998631 -0.1725345 -2.1709547 0.86436218 -0.26192799 -3.5698831 1.401294 -0.14412448 -2.1468203 0.8543461 -0.13134812 -2.1541889 0.85685015 -0.18827684 -3.4305067 1.3462057 -0.16767967 -3.4409246 1.3497829 -0.14497009 -3.4045694 1.3354743 -0 -0 0 -0.09784437 -3.230613 1.2682236 -0 -0 0 -0 -0 0 -0 -0 0 -0.017159967 -2.997654 1.1784369 --0.0012378512 -3.0126441 1.1841604 --0.019141575 -2.9219999 1.1494619 --0.037468899 -2.9535754 1.1616242 --0 -0 0 --0.073826902 -2.9575608 1.1634128 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.3275921 -3.5673773 1.488219 --0 -0 0 --1.3537803 -3.5055168 1.4696178 --1.2819891 -3.2598848 1.3719614 --1.3019673 -3.2519572 1.3719614 --1.3166118 -3.2309349 1.3665956 --1.5459689 -3.7283058 1.5762172 --0 -0 0 --1.5978633 -3.7236428 1.5822984 --1.6341243 -3.7445815 1.5951762 --1.6892567 -3.8070409 1.625582 --1.7102811 -3.7914968 1.6234357 --1.7296219 -3.7724421 1.6198586 --3.3138368 -7.1130314 3.0360565 --3.4117515 -7.2073565 3.0847061 --3.3672869 -7.0019779 3.0063663 --3.4085476 -6.9778285 3.0049353 --1.5100595 -3.0433414 1.3315394 --1.5337458 -3.0440266 1.335832 --1.5574971 -3.0445354 1.3401246 --0 -0 0 --4.5365858 -8.6073332 3.7572122 --3.9185266 -7.3252358 3.2124107 --3.952708 -7.2813573 3.2038255 --4.0054202 -7.2716904 3.2102644 --4.0431304 -7.2347488 3.2048986 --1.9653987 -3.4663429 1.5565429 --1.7571442 -3.055114 1.3801888 --1.7735047 -3.0402415 1.3784002 --4.2080531 -7.1140561 3.1963134 --4.2540264 -7.0921059 3.198102 --4.3037705 -7.0762424 3.2027524 --2.1945751 -3.5585785 1.6316632 --2.212904 -3.5395029 1.6291592 --2.2220848 -3.5061381 1.6202163 --1.973063 -3.0712881 1.4284805 --1.9959466 -3.0653846 1.4313422 --2.9660904 -4.4951081 2.093117 --2.9941351 -4.4776001 2.0934746 --5.6766043 -8.3780136 3.9067376 --4.6449747 -6.7655478 3.1737773 --5.6883388 -8.1773968 3.8459258 --4.8685846 -6.9080305 3.267499 --5.7209778 -8.0127344 3.801569 --5.712574 -7.8980293 3.7640088 --5.1963515 -7.0922008 3.3980653 --5.2536831 -7.0789309 3.4070082 --5.2835536 -7.028646 3.398423 --5.3260155 -6.9953513 3.3980653 --5.3950672 -6.9965587 3.4145203 --0 -0 0 --5.4990549 -6.9532652 3.4259672 --5.5270228 -6.9011698 3.4170244 --3.0406733 -3.7489965 1.8792027 --3.0677679 -3.7353206 1.8817067 --3.1007793 -3.7286336 1.8877879 --3.1891553 -3.7874031 1.926779 --0 -0 0 --3.193902 -3.6999109 1.9024543 --3.2005677 -3.6619613 1.8931537 --3.1889439 -3.6037874 1.8734792 --0 -0 0 --3.3878753 -3.7352438 1.9618351 --3.4151516 -3.7192011 1.9643391 --2.8167703 -3.0299134 1.6148505 --2.6580439 -2.8241906 1.5157632 --3.5377803 -3.7131813 1.994745 --0 -0 0 --0 -0 0 --3.6363811 -3.6786492 2.0115578 --3.656903 -3.6542871 2.0104845 --2.8558874 -2.8189151 1.5672743 --2.8971982 -2.8248098 1.580152 --3.0974085 -2.9831979 1.6774509 --3.142715 -2.9898853 1.6917595 --3.1507947 -2.9609523 1.6863937 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --3.0400126 -2.6860507 1.584087 --0 -0 0 --0 -0 0 --9.7467957 -8.2986126 4.9337406 --9.8089666 -8.2482672 4.9394641 --0 -0 0 --0 -0 0 --10.020809 -8.1162796 4.9698696 --10.052919 -8.0406408 4.9612846 --4.1582689 -3.283993 2.0598493 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --5.7904873 -4.1823874 2.7663386 --0 -0 0 --5.8451939 -4.1137013 2.7681272 --5.832746 -4.0516515 2.7505991 --5.8790617 -4.0305724 2.7606151 --5.9624605 -4.0341978 2.7878017 --5.9777822 -3.9913137 2.783509 --0 -0 0 --10.41997 -6.774271 4.7910118 --6.0070062 -3.8528748 2.7638347 --5.9579372 -3.7700014 2.7309248 --6.0110588 -3.7521651 2.744518 --5.8868637 -3.6246257 2.6783404 --5.8507285 -3.5530486 2.6522272 --6.7944961 -4.0693984 3.0639584 --6.8137093 -4.0243068 3.0614545 --6.8229418 -3.9734933 3.0546579 --6.8390961 -3.9269035 3.0510807 --0 -0 0 --0 -0 0 --8.3985767 -4.6189861 3.7017663 --0 -0 0 --5.4588671 -2.9154003 2.4007528 --5.4807844 -2.8840249 2.4025414 --7.3553977 -3.8131602 3.2038255 --7.3761611 -3.7666824 3.2027524 --7.4116478 -3.7276466 3.208118 --0 -0 0 --6.6586351 -3.2471168 2.8679299 --5.5411325 -2.6601284 2.3846555 --6.7857866 -3.2066591 2.9051325 --6.4615669 -3.0050642 2.7598999 --6.4017649 -2.929606 2.72699 --0 -0 0 --7.4481616 -3.2985964 3.1505258 --7.4365845 -3.2390344 3.1372902 --7.5103979 -3.2165072 3.1598263 --7.5265503 -3.1689141 3.1583955 --7.0341835 -2.9109023 2.94627 --7.0475869 -2.8659275 2.9444814 --9.0100918 -3.5998328 3.7468386 --9.4553471 -3.7106318 3.9210463 --9.3725033 -3.6119092 3.8777626 --0 -0 0 --9.4633932 -3.5141785 3.8970792 --8.1669436 -2.9757993 3.3597896 --11.683909 -4.176425 4.7831421 --11.679354 -4.094151 4.7709799 --11.695424 -4.0193753 4.7674026 --6.6852784 -2.2515917 2.7323556 --12.555272 -4.1433487 5.0947127 --11.177422 -3.6127009 4.5298791 --8.6192713 -2.7274806 3.4932177 --11.010397 -3.4100575 4.4454579 --6.6618299 -2.0183804 2.696584 --6.7054262 -1.9867527 2.7091041 --6.7094178 -1.9432331 2.7058847 --6.753562 -1.9111842 2.7187624 --6.9208746 -1.9127531 2.7806473 --6.8937125 -1.8597903 2.7652655 --8.616292 -2.2679834 3.4431376 --7.1285739 -1.8296207 2.8493288 --7.0880289 -1.7729274 2.828939 --8.3916521 -2.0444453 3.3386843 --8.6420975 -2.0493805 3.4324059 --0 -0 0 --0 -0 0 --9.8681707 -2.1491308 3.8988678 --11.120977 -2.350642 4.3842888 --11.14251 -2.2838609 4.3871503 --12.192241 -2.4212019 4.7917271 --12.216954 -2.3482854 4.7956619 --10.135106 -1.8836448 3.9789963 --0 -0 0 --7.407197 -1.2827176 2.9097829 --7.452693 -1.2435471 2.9244492 --13.220005 -2.1228821 5.1591015 --13.15618 -2.0299046 5.1294112 --7.5463734 -1.1168239 2.9523511 --7.5928411 -1.076136 2.9677329 --12.465825 -1.6890745 4.8489618 --12.538931 -1.6206957 4.8732867 --12.496737 -1.537341 4.8532543 --0 -0 0 --12.904492 -1.4269906 5.0034952 --12.546136 -1.3094808 4.8621974 --12.512114 -1.2283674 4.8460999 --12.526855 -1.1522559 4.8489618 --12.963538 -1.1122645 5.0142264 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.0174923 12.465459 4.880219 --3.9350059 12.471094 4.8729267 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --3.3725743 12.855971 4.9521027 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --2.5183342 14.614471 5.5219612 --2.4221671 14.590794 5.5073762 --0 0 0 --2.2241714 14.497064 5.4615374 --2.1355865 14.513221 5.4625793 --2.0433569 14.503765 5.4542451 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.2782444 13.675879 5.1167054 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.6838136 13.523218 5.0767698 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.5343249 13.346725 5.1430974 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9327807 -2.2572198 3.084522 -7.9556952 -2.3166065 3.0987599 -7.9530139 -2.3688598 3.1032743 -7.9688287 -2.4269073 3.1150813 -7.977067 -2.4830072 3.12411 -7.9822345 -2.5384462 3.1320972 -7.9691844 -2.5882459 3.1331389 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.4509439 -2.2804103 1.8822975 -4.4310451 -2.3046474 1.8798667 -4.3206344 -2.2809832 1.8395842 -4.3412695 -2.326061 1.8541692 -4.3236203 -2.350862 1.8527802 -4.2869477 -2.3651109 1.8434041 -4.2887187 -2.4005351 1.8503493 -4.2934775 -2.4379227 1.8586837 -4.2727504 -2.4609435 1.8562528 -4.333674 -2.5315959 1.8888955 -0 -0 0 -4.1447458 -2.4898968 1.820832 -4.123785 -2.5118654 1.8184012 -3.6216605 -2.2364304 1.6065707 -4.2190108 -2.6414349 1.873616 -4.2335982 -2.6868775 1.8871592 -4.2619796 -2.7417333 1.9069532 -4.2859182 -2.7944758 1.9250109 -4.2749491 -2.8248584 1.927789 -4.2855825 -2.8698266 1.9402905 -4.2415137 -2.8781593 1.9284835 -4.1666002 -2.8648007 1.9027861 -4.2943487 -2.9916575 1.9684188 -4.3900504 -3.0985489 2.0201609 -4.6890006 -3.3529501 2.1649697 -4.550642 -3.2963636 2.1111438 -3.7358308 -2.7409861 1.7461704 -4.3314991 -3.219342 2.0288424 -4.4082952 -3.3186371 2.0736394 -2.9257209 -2.2302921 1.3926567 -2.9090126 -2.2459087 1.3912677 -2.8944387 -2.2631381 1.3909204 -2.8753529 -2.2767787 1.3884896 -3.2314277 -2.5913415 1.5642047 -2.8355517 -2.3024304 1.3829334 -2.8546824 -2.3471932 1.3989074 -4.1342349 -3.4427083 2.0225918 -3.5496297 -2.9927506 1.7496431 -4.1344604 -3.5297248 2.0434277 -4.0361176 -3.4887791 2.0059233 -2.9139822 -2.5497921 1.4641929 -3.1979263 -2.8332458 1.6124742 -4.0333309 -3.6182258 2.0368297 -4.1963673 -3.8112838 2.1295488 -4.1459861 -3.8122003 2.1160057 -4.0772233 -3.7953873 2.0930862 -2.9914689 -2.8187177 1.5523977 -3.9631822 -3.7810354 2.0587072 -2.9532819 -2.8519573 1.5506613 -2.8653376 -2.8011708 1.5141988 -2.60355 -2.5765347 1.3867532 -2.5751083 -2.5798466 1.3801552 -3.2950873 -3.3423972 1.7683953 -3.211725 -3.2980402 1.7350581 -3.2382243 -3.3663571 1.760061 -3.2149246 -3.3834431 1.7586719 -3.2159178 -3.4263594 1.7704788 -2.93924 -3.1701987 1.6312264 -2.9304962 -3.1999335 1.6371299 -2.9403651 -3.2505486 1.6534512 -2.9659622 -3.3195906 1.6788014 -2.9238265 -3.3131118 1.6666472 -2.8399956 -3.2581604 1.6308792 -2.8022127 -3.2549102 1.6208085 -2.6923127 -3.1662841 1.5694135 -2.692126 -3.20573 1.580526 -2.8220186 -3.4026845 1.6673417 -2.804651 -3.4242897 1.6694254 -2.7093041 -3.3495457 1.6256702 -2.6734891 -3.3470519 1.6166414 -2.6459348 -3.3545556 1.6124742 -2.601109 -3.3396475 1.5978892 -2.7177219 -3.5339901 1.6812322 -3.1092567 -4.0951738 1.934387 -3.0896938 -4.1216798 1.9378597 -3.0392494 -4.1066337 1.9222327 -2.9913192 -4.0941548 1.907995 -2.9557221 -4.0979786 1.901397 -2.9495518 -4.1427794 1.9135512 -2.9413254 -4.1853557 1.9246637 -2.9829111 -4.3004284 1.9684188 -0 -0 0 -0 -0 0 -1.5631424 -2.3435853 1.073522 -1.5332762 -2.3296258 1.0631042 -1.5067031 -2.3201094 1.0547698 -1.9757673 -3.0843713 1.3867532 -2.030911 -3.2137854 1.4381481 -1.9273558 -3.0916698 1.3794607 -1.8941119 -3.080267 1.3693901 -1.9665512 -3.2426035 1.4346756 -1.7407036 -2.9100909 1.286047 -1.6932929 -2.8706279 1.2645167 -1.612036 -2.7715068 1.2176361 -1.6239051 -2.8317933 1.2391665 -1.6424732 -2.9053922 1.266253 -1.7309074 -3.106319 1.3471652 -1.5119535 -2.7526855 1.1933278 -1.48299 -2.7396395 1.1839516 -1.8167723 -3.4066186 1.4600258 -1.808042 -3.4409497 1.4697491 -1.3284779 -2.5657349 1.1002612 -1.3480449 -2.6431897 1.1290841 -0 -0 0 -1.3911172 -2.8125453 1.1922859 -1.5728154 -3.2300086 1.3607085 -0 -0 0 -1.19595 -2.5340085 1.0679657 -0 -0 0 -1.4806108 -3.2403362 1.3495961 -1.4464848 -3.2177086 1.3367474 -1.4039767 -3.1750562 1.3159115 -1.2873102 -2.9599857 1.2256233 -1.2790707 -2.9911129 1.2349993 -1.3768864 -3.2755828 1.3461235 -1.3624865 -3.2978387 1.3516797 -0.93548101 -2.3033001 0.95093817 -1.1191926 -2.8055553 1.1488781 -1.3155659 -3.3581629 1.3659174 -0.88148838 -2.2903671 0.9391312 -1.2570434 -3.3284295 1.3478597 -1.2411559 -3.3483915 1.3527215 -1.0159535 -2.7927337 1.1308204 -1.2046949 -3.3766205 1.3579304 -1.1820973 -3.3786373 1.3558469 -0.93124443 -2.714263 1.0929687 -1.0903969 -3.2435391 1.2975067 -0.97200859 -2.9508591 1.1808263 -0.92800176 -2.8764353 1.1495726 -0.90187186 -2.8552454 1.1391547 -0.88765472 -2.8714778 1.1433219 -0.86053032 -2.8454499 1.1311677 -0.67148358 -2.2696822 0.90683573 -0.67002767 -2.3170068 0.92350435 -0.72935832 -2.5819154 1.0238634 -0.99237162 -3.5989435 1.4127979 -0.89480436 -3.3242228 1.3051465 -0.86820567 -3.306066 1.2961175 -0.86439747 -3.3758373 1.3207732 -0.55912429 -2.2390945 0.88495821 -0.55797994 -2.2944283 0.90475219 -0.71395534 -3.0178981 1.1787426 -0.67778945 -2.9454489 1.1495726 -1.7732919 -7.937593 3.042156 -1.7243557 -7.9474077 3.0418088 -1.6633947 -7.9000249 3.0199313 -0.56462443 -2.7618065 1.0742165 -0.53748655 -2.7137005 1.0547698 -0 -0 0 -0.48538953 -2.6186569 1.0165708 -0.48942322 -2.7342119 1.058937 -0.57100636 -3.3082948 1.2735455 -0.50050187 -3.009222 1.1599904 -0.45778561 -2.8603652 1.1030394 -0.47689712 -3.1022689 1.1926332 -0.41391754 -2.8063891 1.0808145 -0.40100482 -2.83952 1.0922742 -1.1222435 -8.3318501 3.1435568 -0.30848584 -2.3949683 0.92454618 -0.30094379 -2.4554601 0.94642371 -0.48725328 -4.1955085 1.5944165 -0.46610013 -4.2403674 1.6100434 -0.39096361 -3.7683568 1.4332864 -0.25638482 -2.6245117 1.0068475 -0.34205475 -3.7439196 1.4225214 -0.31891748 -3.7440794 1.4218268 -0.29358429 -3.7160494 1.4107144 -0.16334519 -2.2362468 0.86064976 -0 -0 0 -0.13273562 -2.1856627 0.84120303 -0.11982811 -2.1958001 0.84467566 -0.38495651 -8.0152416 3.0018735 -0.12509248 -2.9691539 1.1308204 -0.28776881 -8.0531006 3.014375 -0 -0 0 -0 -0 0 -0.051817916 -2.9497643 1.1228334 -0 -0 0 -0 -0 0 --0.0025166934 -2.9746001 1.1318622 --0.020463962 -2.9332681 1.1165826 --0 -0 0 --0.055518344 -2.884979 1.0988722 --0.071889311 -2.833024 1.0797727 --0.089181274 -2.8297179 1.0787309 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.2623287 -3.8089852 1.5162823 --1.2859772 -3.8020563 1.5166296 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.3829854 -3.7098613 1.4964883 --0 -0 0 --1.4294226 -3.6952341 1.4975301 --1.4427828 -3.6628385 1.4881541 --1.3097955 -3.266638 1.333622 --1.326623 -3.2507265 1.3304967 --1.3609419 -3.2771628 1.3443872 --0 -0 0 --1.4166181 -3.2963963 1.3589722 --1.6033075 -3.6682525 1.5128098 --1.6901891 -3.8031521 1.5714972 --1.684904 -3.7294776 1.5457997 --1.6881772 -3.6764638 1.5284365 --3.5192962 -7.5388932 3.1112614 --3.4171493 -7.2045288 2.9831214 --3.4551833 -7.1707544 2.9779124 --3.4323134 -7.0129766 2.9216557 --1.5533986 -3.1266925 1.3232042 --1.5438126 -3.0601788 1.2995902 --1.5625604 -3.0506485 1.2995902 --1.5860115 -3.0501537 1.3034101 --3.7299178 -7.0635953 2.9883304 --4.0270786 -7.514153 3.1873119 --1.6477121 -3.0311525 1.3079245 --4.7525563 -8.6119089 3.6727858 --1.6554585 -2.9583402 1.2856997 --0 -0 0 --2.0339153 -3.5317445 1.539549 --0 -0 0 --4.1609583 -7.0221148 3.0529213 --4.2310209 -7.0414615 3.0723679 --2.1302247 -3.4975822 1.5468415 --2.2073472 -3.5745926 1.5860822 --2.23123 -3.5641601 1.5874712 --1.9760761 -3.1142023 1.3961294 --1.9961623 -3.1035957 1.3968239 --1.9798149 -3.0370948 1.3728627 --4.5222263 -6.8423429 3.0675063 --2.805625 -4.1897559 1.8975772 --2.8807931 -4.2453928 1.9302199 --4.8084459 -6.9920459 3.1727269 --2.4221952 -3.4773126 1.5996255 --5.614943 -7.9536338 3.6356285 --2.2813573 -3.1910596 1.4829451 --0 -0 0 --5.7270961 -7.8035769 3.6147928 --5.2723818 -7.0925202 3.3029506 --2.7945225 -3.7124004 1.7510321 --5.3590212 -7.0272856 3.3029506 --5.4501977 -7.0566077 3.3321207 --5.5003281 -7.0318956 3.3362877 --5.5451183 -7.0002189 3.3373296 --5.6085076 -6.991663 3.3494837 --5.6199598 -6.9185443 3.3310788 --5.6658802 -6.8882756 3.3331625 --3.1804004 -3.8193786 1.8708379 --3.1330309 -3.7159269 1.8302081 --3.2544374 -3.812151 1.8864647 --3.2544577 -3.765156 1.8732687 --3.2169597 -3.6759727 1.839237 --3.2786446 -3.7003744 1.8611145 --2.7168946 -3.0290346 1.5371181 --2.7411048 -3.0185535 1.5402435 --3.4261954 -3.7263601 1.9048697 --2.7153091 -2.9174347 1.5062118 --2.9113526 -3.0897245 1.6024035 --2.9839962 -3.1281075 1.6312264 --2.8441377 -2.9451892 1.5464942 --2.8090398 -2.8733821 1.5183659 --2.9368126 -2.9673705 1.5763588 --3.6633739 -3.6559441 1.9468884 --3.0752063 -3.031811 1.6294901 --3.0903912 -3.0096145 1.6277537 --0 -0 0 --0 -0 0 --0 -0 0 --3.8546121 -3.5734437 1.9767531 --3.7934556 -3.4737461 1.9350815 --3.8835654 -3.5126657 1.9694606 --9.7001419 -8.6637611 4.8465347 --4.0044436 -3.5335991 2.0080068 --9.7972441 -8.5366812 4.8423676 --9.1037607 -7.8347945 4.4780884 --9.7662077 -8.3010378 4.7767348 --9.8758583 -8.2903929 4.8052106 --4.100122 -3.4001241 2.0027978 --4.1136513 -3.368962 1.9993252 --10.068353 -8.14081 4.8250046 --4.2756085 -3.4147627 2.0566237 --4.3612885 -3.4395528 2.0871828 --4.3941512 -3.4219439 2.0927389 --10.085174 -7.7529716 4.7409668 --0 -0 0 --0 -0 0 --0 -0 0 --9.955842 -7.2719579 4.5958109 --10.096124 -7.2798309 4.6395659 --10.14977 -7.2242699 4.643733 --10.244553 -7.1974316 4.6666522 --0 -0 0 --4.553926 -3.1174552 2.0739868 --10.407163 -7.02916 4.6808901 --10.471947 -6.9797316 4.6906137 --5.9472709 -3.9120827 2.6664174 --5.9491353 -3.8612258 2.6566942 --5.9340148 -3.7998769 2.6396782 --5.9825912 -3.779418 2.6507907 --5.9666667 -3.7183418 2.6337748 --5.9661994 -3.6674235 2.6237042 --6.1048775 -3.7012222 2.6740572 --0 -0 0 --6.9779205 -4.1140914 3.0300019 --5.9263005 -3.4454525 2.5688365 --7.0107942 -4.0183616 3.0227094 --7.0059242 -3.9586649 3.0102079 --7.0472879 -3.9251828 3.0175004 --6.9660096 -3.8241198 2.9730506 --0 -0 0 --5.4822054 -2.9228804 2.3309615 --5.560647 -2.9210112 2.3563116 --5.5626392 -2.8786507 2.3497136 --7.3198423 -3.7308221 3.0727153 --7.376123 -3.7026618 3.0866058 --8.2730579 -4.0893888 3.4477592 --5.600409 -2.7260895 2.3368649 --6.7469664 -3.2328751 2.8008082 --6.8930621 -3.2509997 2.8525505 --5.6453853 -2.6205692 2.3351285 --6.5724411 -3.001817 2.7060053 --8.2793884 -3.7198672 3.3915026 --7.4477 -3.2915556 3.0456285 --7.4643159 -3.2443008 3.0442395 --7.4564862 -3.1866508 3.0331273 --7.0323496 -2.954567 2.8549812 --7.0538135 -2.9127929 2.8563702 --9.2631941 -3.7583733 3.7321677 --9.0743895 -3.6171131 3.6477828 --9.068469 -3.5504289 3.6366704 --9.0594454 -3.4829445 3.624516 --9.0674849 -3.4223258 3.6193073 --9.1199722 -3.3783474 3.6318085 --0 -0 0 --7.1953073 -2.5656886 2.8591485 --11.777955 -4.1176863 4.6506782 --11.806548 -4.0465565 4.6520672 --6.7505932 -2.2680326 2.6674592 --12.634768 -4.1577888 4.9559226 --12.615413 -4.0658059 4.9385595 --11.43367 -3.6077704 4.4701014 --11.253085 -3.4750338 4.3916202 --6.7451701 -2.0382037 2.6396782 --6.7746372 -2.0018239 2.6462762 --12.359385 -3.5687296 4.7940979 --6.9602518 -1.9640995 2.7084363 --6.9721723 -1.9213552 2.7084363 --7.3352103 -1.9729927 2.8431742 --7.0351372 -1.8461179 2.7237158 --8.3191948 -2.1283779 3.2102313 --8.444931 -2.1054065 3.2532918 --11.524285 -2.7976859 4.4218321 --9.7159128 -2.2958333 3.7273059 --11.236947 -2.5823655 4.2999425 --9.7204742 -2.1713231 3.7186244 --9.7831039 -2.1223688 3.7373767 --11.150431 -2.3472888 4.2499366 --11.156354 -2.2771399 4.2468114 --9.936429 -1.9648417 3.7811317 --12.255588 -2.3451099 4.6510258 --12.267902 -2.2695258 4.650331 --7.5254445 -1.3449479 2.861232 --7.5307832 -1.2982699 2.8601902 --7.536757 -1.2517303 2.8594956 --7.5868936 -1.2122619 2.8754697 --7.6498051 -1.1742148 2.8963056 --13.105766 -1.9285986 4.9357815 --12.64562 -1.7817259 4.7593718 --12.521553 -1.685968 4.7090187 --12.907439 -1.6573207 4.8493128 --0 -0 0 --0 -0 0 --0 -0 0 --13.277231 -1.3745013 4.9732857 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.7673697 12.830887 4.9288197 --4.6404943 12.728098 4.8786168 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.0049858 12.648129 4.7782111 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --3.4584489 12.80934 4.7785482 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --3.0439706 14.3882 5.2933788 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --2.5240614 14.558211 5.3179746 --2.4295659 14.542779 5.3068562 --0 0 0 --2.2445951 14.530557 5.2920308 --2.1627116 14.593417 5.3098884 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.5140709 15.351512 5.5507941 -0 0 0 -0 0 0 -1.7257905 14.718821 5.3338103 -1.8088037 14.649085 5.3125839 -1.8959908 14.617168 5.3051715 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.4893136 13.568455 5.0440497 -3.56338 13.512194 5.0312467 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9522214 -2.2546356 2.9884343 -7.9744072 -2.3138804 3.0019114 -0 -0 0 -0 -0 0 -0 -0 0 -8.022027 -2.5427341 3.0420063 -7.9955244 -2.5884292 3.0379632 -8.0232964 -2.6519165 3.0544727 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.2086215 -2.2505832 1.7384205 -4.25349 -2.3082442 1.7623426 -4.2730637 -2.352917 1.7761567 -0 -0 0 -0 -0 0 -0 -0 0 -4.0440316 -2.3579698 1.7057382 -4.1137772 -2.4325726 1.7407789 -3.638485 -2.1818137 1.5487283 -3.5799751 -2.1767097 1.5298603 -3.6082308 -2.2243233 1.5473806 -3.6001041 -2.2499135 1.5497391 -3.6085021 -2.2860675 1.5591732 -4.1838732 -2.686619 1.8098499 -4.1957197 -2.7307272 1.8219793 -4.1930327 -2.7657506 1.8280441 -3.9121814 -2.6151178 1.7144984 -3.8290186 -2.5936685 1.6855223 -3.7881899 -2.6000664 1.6747406 -3.7304211 -2.5942369 1.6565462 -4.251698 -2.9955499 1.891724 -4.2332377 -3.0215814 1.891724 -3.9582469 -2.8621519 1.7785152 -4.2436953 -3.1083493 1.9129506 -3.0184319 -2.2396128 1.3755459 -3.0099022 -2.2620506 1.3779043 -2.9719901 -2.2622304 1.3671225 -2.9528332 -2.2764001 1.3647641 -2.9699819 -2.3188078 1.3789152 -3.5451162 -2.8029261 1.647786 -3.327925 -2.6645799 1.5561408 -3.0087137 -2.4394877 1.4166514 -3.6246452 -2.9758308 1.7087705 -2.8655963 -2.3823395 1.3640902 -2.825712 -2.3786583 1.3522975 -2.8304124 -2.4124401 1.3613948 -2.8226855 -2.4359124 1.3647641 -2.8559031 -2.4953067 1.3876754 -2.8292544 -2.5028031 1.3822844 -3.2767849 -2.9346466 1.6046588 -3.2043068 -2.9053726 1.5783782 -8.5782776 -7.8735571 4.1973424 -3.0690889 -2.8521886 1.5298603 -3.0213552 -2.842582 1.5150353 -2.8681726 -2.7318571 1.447986 -2.8723691 -2.7696619 1.4584309 -2.670023 -2.6063902 1.3657749 -2.6472826 -2.6161067 1.3624055 -2.6405003 -2.6416225 1.3671225 -3.3089888 -3.3511279 1.7158461 -3.2568059 -3.3390186 1.6996734 -3.2486699 -3.3718207 1.7060751 -3.2064977 -3.3691857 1.6949563 -6.8252258 -7.2595615 3.5962577 -3.0700829 -3.3061776 1.6450906 -3.019824 -3.2923441 1.6292548 -2.997669 -3.3087184 1.628244 -2.9622405 -3.3102119 1.6201577 -2.9113169 -3.293761 1.6036481 -2.6811206 -3.0711386 1.4894285 -2.6394744 -3.0611508 1.4769621 -2.6853569 -3.1532652 1.5126767 -2.9211295 -3.4730108 1.6545247 -2.9063828 -3.4988353 1.6582309 -2.7540684 -3.3571975 1.584443 -2.7393446 -3.3813481 1.5878123 -2.7150161 -3.393682 1.5857908 -2.6970603 -3.4139709 1.5874754 -2.9482753 -3.7793434 1.7458329 -3.0600641 -3.9726381 1.8250117 -3.0886431 -4.0610304 1.8563462 -3.0727136 -4.0919514 1.8617371 -3.0542774 -4.1198039 1.8657804 -3.0200431 -4.1263113 1.8603895 -2.9648888 -4.1035552 1.8421952 -2.9648054 -4.156929 1.857694 -2.9208131 -4.1488681 1.8462384 -2.9017491 -4.1759896 1.8502815 -2.852638 -4.1595526 1.8354566 -1.5904398 -2.3501728 1.0460274 -1.5707595 -2.3520582 1.0426581 -1.5552616 -2.3600798 1.0419842 -0 -0 0 -0 -0 0 -0 -0 0 -2.0744133 -3.3222978 1.4321502 -2.0875692 -3.3894744 1.4550616 -1.8032148 -2.9685163 1.2734557 -1.7777071 -2.9674103 1.2684017 -1.7403064 -2.9458389 1.2549245 -1.7345225 -2.977613 1.2636847 -1.7903227 -3.1171911 1.3169198 -1.86164 -3.2878737 1.3826214 -1.6390326 -2.936691 1.2340349 -1.6300606 -2.9631906 1.2407734 -1.4718131 -2.7149053 1.135651 -1.8456211 -3.4546397 1.4321502 -0 -0 0 -1.3426906 -2.5894234 1.0743296 -1.3584772 -2.6596572 1.0992625 -1.378107 -2.7394311 1.1279016 -1.3771585 -2.7798932 1.140705 -1.4257231 -2.9228325 1.194277 -1.1717166 -2.4401336 0.99919397 -0 -0 0 -0 -0 0 -0 -0 0 -1.4401979 -3.1978283 1.2855853 -0 -0 0 -1.6133797 -3.7029245 1.4759512 -1.2575958 -2.9356132 1.1733873 -0.9409104 -2.234386 0.89811468 -1.510007 -3.647614 1.4432689 -1.5028566 -3.6943104 1.457757 -1.4029186 -3.5102522 1.3832953 -1.3565756 -3.4556947 1.3590362 -0.89428616 -2.3201764 0.92035216 -1.0417123 -2.7526813 1.0837636 -1.3540645 -3.6451197 1.4220423 -1.3265125 -3.6392064 1.4166514 -1.0140158 -2.8361058 1.1083596 -2.7564788 -7.8593793 3.0110085 -2.5499015 -7.415834 2.8368154 -1.1107993 -3.2968276 1.2754773 -0.9435184 -2.8583488 1.1076857 -0.93262643 -2.8846886 1.1154351 -0.90922379 -2.8724048 1.1086966 -0.90133768 -2.9094059 1.1204891 -0.85614765 -2.82478 1.086796 -0.69023681 -2.3289945 0.89979935 -0.69559354 -2.4010086 0.92506915 -0.74730295 -2.6398578 1.0123342 -0.67762399 -2.4511065 0.94056797 -0.82505691 -3.0569589 1.1636163 -0.73624384 -2.7961087 1.0652324 -0.57686961 -2.2470396 0.86071539 -0.56329983 -2.2514503 0.86105227 -0 -0 0 -0.70110661 -2.9553266 1.1174568 -0.68613726 -2.9733336 1.1225107 -0.60334283 -2.6899426 1.0170513 -0.70655417 -3.2427878 1.2181991 -1.6931121 -8.0038071 2.9581103 -0.56981337 -2.7789891 1.0456904 -0 -0 0 -0.54776609 -2.8486431 1.0686017 -0.49272928 -2.6501606 0.9951508 -0.47529307 -2.6466472 0.99279231 -0.45775768 -2.6420922 0.99009687 -0.43595138 -2.6114197 0.97796732 -0.42485225 -2.644722 0.98908603 -0.43449363 -2.8147671 1.0497336 -0.47685173 -3.2197249 1.1952878 -0.47826004 -3.3717394 1.2491968 -0.32753405 -2.4164424 0.90316868 -0.31971207 -2.4725635 0.92271066 -0.29785591 -2.4202797 0.90316868 -0.46451992 -3.9734759 1.4621371 -0.40436238 -3.653399 1.3458959 -0.26383263 -2.5264859 0.93955719 -0.36401612 -3.7039995 1.3624055 -0.33454019 -3.633034 1.3361249 -0 -0 0 -0.17994809 -2.2590835 0.8415103 -0.1615186 -2.1981721 0.81927288 -0.19468874 -2.8905146 1.0672541 -0.1401795 -2.2920856 0.85229212 -0.44456643 -8.065115 2.9210479 -0.39599335 -8.0864992 2.9277866 -0.3879835 -9.0595436 3.2754993 -0 -0 0 -0.090755068 -2.9804201 1.0975778 -0.07357002 -3.0261006 1.1137505 -0.16201985 -8.8742962 3.2067654 -0.036257796 -3.0126538 1.1086966 -0.017573215 -2.9798665 1.0969039 --0.00071277423 -2.9940412 1.1019579 --0.019019175 -2.983624 1.0982517 --0 -0 0 --0.054602839 -2.9276252 1.0783727 --0 -0 0 --0.089278884 -2.8862681 1.0638847 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.3577158 -3.7921112 1.4719081 --0 -0 0 --0 -0 0 --0 -0 0 --1.4324058 -3.7110937 1.4540508 --1.4499847 -3.6890903 1.4489968 --1.345302 -3.3619232 1.3263539 --1.3286239 -3.2620437 1.2909762 --1.3424875 -3.239043 1.2852484 --1.3700171 -3.2489641 1.2923239 --1.4444708 -3.3677006 1.3418528 --1.6412401 -3.7626762 1.4995364 --1.6730744 -3.7723315 1.5072858 --1.7016063 -3.7740116 1.5120028 --1.4709945 -3.2096901 1.2940085 --1.4994043 -3.2193816 1.301421 --3.5053949 -7.4085407 2.9635012 --3.4659514 -7.2103834 2.8934197 --3.5700223 -7.3116632 2.9422746 --1.5884165 -3.2027032 1.3098443 --1.5542644 -3.0860958 1.2670541 --1.5680283 -3.0664408 1.2630109 --1.6128362 -3.1069033 1.2832267 --1.6792622 -3.1869142 1.3196152 --1.7072196 -3.1923263 1.326017 --4.1527805 -7.6531348 3.1464548 --1.6999496 -3.0870066 1.2916501 --1.752835 -3.1373453 1.3165829 --1.8518891 -3.267427 1.3745351 --1.9633939 -3.4151807 1.4402366 --1.9805187 -3.3965619 1.4375411 --4.1738653 -7.0590587 2.9651859 --1.8714858 -3.1208622 1.3327556 --2.0441699 -3.3619452 1.4385519 --2.1966591 -3.5633457 1.5285125 --1.983494 -3.173718 1.369818 --1.9727021 -3.1137638 1.3496021 --1.9815972 -3.0857549 1.3428636 --2.535074 -3.8950505 1.6936086 --1.9638506 -2.9771042 1.3068119 --1.9773723 -2.9579532 1.3037796 --2.7066529 -3.9958467 1.7576255 --2.0929 -3.0491362 1.3539822 --2.5437126 -3.6577559 1.6248747 --5.7088404 -8.1033821 3.5777264 --2.697248 -3.7787747 1.691924 --5.5883031 -7.7290378 3.4436278 --5.5666409 -7.6004114 3.4018486 --5.5021033 -7.416388 3.3351362 --5.3919711 -7.1754885 3.24248 --2.6801784 -3.5211842 1.6140929 --5.5106573 -7.1490498 3.2606745 --5.517921 -7.0683446 3.2394478 --5.5553489 -7.026968 3.2360785 --5.5824738 -6.9729033 3.2269814 --5.6257467 -6.93925 3.2273183 --6.1443305 -7.4846144 3.4958522 --6.1925468 -7.4496689 3.4972 --6.2648163 -7.4432278 3.5120249 --3.177614 -3.7283471 1.7835692 --3.2299538 -3.7429972 1.7997419 --3.272681 -3.7457986 1.8105236 --0 -0 0 --3.3278224 -3.7158771 1.8155776 --3.0754797 -3.3919501 1.6690127 --2.8371232 -3.090694 1.5318818 --2.7297804 -2.9373474 1.4655064 --2.7922642 -2.9678628 1.4887546 --2.7857487 -2.9247644 1.4759512 --0 -0 0 --2.9832036 -3.0561161 1.5588362 --3.025722 -3.0618653 1.5709658 --3.0650933 -3.0638785 1.5814106 --3.6907704 -3.6444154 1.8866701 --3.7272158 -3.6355076 1.8937457 --3.7555544 -3.6184492 1.896778 --3.800873 -3.6174085 1.9082336 --3.8326006 -3.6030478 1.9129506 --3.8256612 -3.5525532 1.8987995 --9.6843596 -8.8837643 4.7333994 --9.9012499 -8.9714813 4.8119044 --4.0180883 -3.5958154 1.960121 --4.0584168 -3.587307 1.9688812 --9.0356369 -7.8891559 4.3230176 --9.0895777 -7.8384848 4.3257132 --4.0291471 -3.4314086 1.9244063 --4.0602131 -3.4151073 1.9291234 --4.1911697 -3.4815845 1.9803369 --10.008539 -8.2114697 4.6633177 --4.3213615 -3.5010195 2.0207686 --10.107818 -8.0874424 4.662981 --4.335927 -3.4255447 2.0079651 --0 -0 0 --9.7477875 -7.5092845 4.4338679 --0 -0 0 --9.8580256 -7.403234 4.4422913 --9.938055 -7.3684034 4.4577899 --0 -0 0 --4.4973297 -3.2494435 2.0160515 --10.236031 -7.3012366 4.5298934 --4.4960656 -3.1652806 1.9981942 --4.6143661 -3.2064109 2.0413213 --0 -0 0 --10.490877 -7.10114 4.5639234 --0 -0 0 --0 -0 0 --10.638751 -6.9191546 4.5720096 --5.9693708 -3.8302002 2.5686183 --6.0381041 -3.8222075 2.5878234 --5.9887719 -3.7397013 2.5571625 --6.021225 -3.7088103 2.5612059 --0 -0 0 --0 -0 0 --6.0755029 -3.5896871 2.555815 --7.1403308 -4.1600184 2.9877603 --7.1436791 -4.1034646 2.9786632 --7.1433258 -4.0451713 2.9682183 --5.5879459 -3.1191564 2.3206372 --7.1907787 -3.9562991 2.9675446 --5.6738067 -3.076381 2.3401792 --7.0760279 -3.7807856 2.9015059 --5.5670033 -2.9306383 2.2818902 --7.1544871 -3.7105744 2.9146464 --5.6520152 -2.8873765 2.301769 --7.3592811 -3.7029123 2.9786632 --5.6195321 -2.7843554 2.2748146 --5.6373568 -2.7502348 2.2751515 --5.6481853 -2.7127392 2.2727928 --6.8197703 -3.2241735 2.7300081 --6.8462539 -3.1854455 2.7327037 --0 -0 0 --7.833405 -3.5285251 3.1050124 --7.4468908 -3.2995853 2.945307 --7.4790802 -3.2590961 2.9500241 --8.5703182 -3.6722696 3.3671446 --7.0491004 -2.969312 2.7677445 --7.1933222 -2.9782343 2.8165994 --8.1245422 -3.3055882 3.1693661 --8.1770191 -3.2686067 3.1818326 --0 -0 0 --9.7020187 -3.7408521 3.7515829 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --7.0748296 -2.4326298 2.7077708 --6.8210669 -2.298656 2.6063545 --11.310612 -3.7347462 4.2930307 --8.4693279 -2.7389388 3.2158625 --6.8541436 -2.1701548 2.6033223 --6.7702031 -2.0979543 2.5669336 --6.7829485 -2.0563736 2.5669336 --0 -0 0 --8.3766375 -2.4277871 3.1515088 --6.9881468 -1.9788975 2.6296027 --7.0636792 -1.9535531 2.653188 --7.0864406 -1.9131198 2.6572311 --8.2971258 -2.1855032 3.1009691 --12.144081 -3.1194363 4.517427 --13.588713 -3.4018221 5.043376 --0 -0 0 --11.413449 -2.7088046 4.2283401 --11.381233 -2.6274955 4.2104826 --9.6351233 -2.1621394 3.5642493 --11.352825 -2.4745967 4.1885824 --11.340161 -2.3990433 4.1784744 --7.4145412 -1.5209603 2.7391052 --13.298775 -2.643389 4.8826599 --12.348571 -2.3758206 4.5305672 --7.5023732 -1.3955928 2.7613428 --7.5358157 -1.3540298 2.7704399 --11.506126 -1.9948175 4.2094717 --11.657448 -1.947455 4.2600117 --11.582726 -1.861989 4.2286768 --12.675161 -1.9579346 4.6201906 --12.609633 -1.8686664 4.5922256 --0 -0 0 --0 -0 0 --13.26563 -1.7169974 4.8172956 --13.326376 -1.6417869 4.8354897 --13.363318 -1.5631599 4.8452606 --14.200845 -1.5728874 5.1434445 --14.16528 -1.4810224 5.1272717 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.8620868 12.869967 4.7813468 --0 0 0 --4.7060485 12.934881 4.7836318 --4.5938754 12.871816 4.7500134 --4.5101266 12.886378 4.7451172 --0 0 0 --4.3061695 12.805464 4.6958318 --4.2142091 12.791245 4.6811442 --4.1225858 12.776381 4.6664567 --4.038136 12.782507 4.6596022 --3.9573948 12.799819 4.656991 --0 0 0 --3.7965391 12.835635 4.6527481 --0 0 0 --3.6253827 12.833956 4.6357756 --3.5402844 12.833179 4.6276159 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --3.4319389 14.503819 5.1772618 --0 0 0 --0 0 0 --3.2031078 14.742807 5.2402558 --3.0737939 14.578126 5.1753035 --0 0 0 --0 0 0 --2.8567019 14.902383 5.2702837 --0 0 0 --0 0 0 --2.5137489 14.557501 5.1318932 --0 0 0 --2.3335729 14.578852 5.1289558 --2.243644 14.590094 5.1279764 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.197776 13.778579 4.8064795 -1.2823849 13.771911 4.8068056 -1.3692008 13.787298 4.8149652 -1.6021663 15.183949 5.3029232 -1.6914172 15.139075 5.2908468 -1.6214185 13.748495 4.8110485 -1.8277707 14.720396 5.1527824 -0 0 0 -1.9875312 14.545141 5.0999064 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -2.4858918 14.793329 5.2105541 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.5117285 13.617551 4.8867722 -3.5558169 13.446797 4.83357 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9638782 -2.2630739 2.8895721 -7.9534726 -2.3129532 2.8908777 -0 -0 0 -0 -0 0 -0 -0 0 -8.0042171 -2.5423696 2.9306977 -7.9938612 -2.5931857 2.932656 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.2773299 -1.9943608 1.6603756 -0 -0 0 -4.2533855 -2.0471101 1.660702 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.1857266 -2.2407985 1.6701674 -4.1968126 -2.2799823 1.6799592 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -3.6001163 -2.1308901 1.4753107 -3.6299205 -2.1787336 1.4926095 -3.6108325 -2.1975238 1.4903249 -3.5683265 -2.2017612 1.4785746 -3.5547495 -2.2236147 1.4785746 -3.5809453 -2.270705 1.4948943 -4.1560469 -2.6715076 1.7367517 -4.7303023 -3.0820198 1.9802409 -4.4116058 -2.9129999 1.8562115 -4.4117146 -2.9521086 1.8637186 -3.6105134 -2.4479358 1.536999 -3.5915303 -2.4673662 1.535367 -3.5685668 -2.4839547 1.5321032 -3.537812 -2.494905 1.5255753 -4.3921347 -3.1382687 1.8947259 -3.7059791 -2.6822758 1.6104375 -3.9851692 -2.921891 1.7370781 -2.989182 -2.2196095 1.3163573 -2.9558702 -2.2231305 1.307871 -2.9399183 -2.2395065 1.3068918 -2.9470716 -2.2736769 1.3160309 -2.9777441 -2.3266492 1.3356144 -3.03159 -2.3988585 1.3656427 -3.3744774 -2.7041945 1.5239433 -3.3343394 -2.7057831 1.5134987 -3.7849634 -3.1103857 1.7223903 -3.6517558 -3.0386019 1.6711466 -3.1603851 -2.6625228 1.4576855 -3.2388923 -2.7628651 1.5007694 -4.109426 -3.5496757 1.9058232 -3.3050485 -2.8901641 1.5467908 -3.2964509 -2.9185371 1.551034 -3.2707403 -2.9317667 1.5474436 -3.2407932 -2.9409785 1.5418949 -3.212944 -2.9518526 1.5373254 -3.1788564 -2.9567006 1.5298184 -8.3893776 -7.9023185 4.0104065 -3.0157938 -2.8747952 1.4694357 -2.9498188 -2.8466289 1.4462618 -2.7680428 -2.7041168 1.3669482 -2.7278829 -2.6977799 1.3555244 -2.6859024 -2.6890459 1.3431215 -3.3343456 -3.3798857 1.6701674 -2.6579776 -2.7272205 1.3457327 -6.8826609 -7.1519289 3.4581492 -6.8699036 -7.2269135 3.4738159 -7.4283867 -7.9112167 3.7780144 -6.8154073 -7.3481011 3.4914412 -2.7071428 -2.9538476 1.4142752 -2.5627708 -2.8309157 1.3493229 -2.5692863 -2.8733704 1.3617259 -2.7530198 -3.1172724 1.4668245 -2.9947212 -3.4333534 1.6039096 -2.9322753 -3.4036725 1.5820413 -2.6198549 -3.0788507 1.4266782 -3.0143027 -3.5870562 1.6486255 -2.995857 -3.6098492 1.6505839 -2.8975785 -3.5352995 1.6091319 -2.8716702 -3.547868 1.6068472 -2.7749197 -3.4716311 1.5653952 -2.7816668 -3.5242138 1.5810621 -3.1782174 -4.0781136 1.8160652 -2.9911988 -3.887001 1.7243487 -1.8999722 -2.4998713 1.1149727 -1.8619156 -2.4812319 1.1019169 -1.8505927 -2.4979279 1.1042017 -2.9646215 -4.0546327 1.7651478 -2.9889069 -4.1409717 1.7941968 -3.0051141 -4.2177491 1.8190027 -3.0215774 -4.2964258 1.8444613 -3.0172498 -4.3467264 1.8578435 -2.9146867 -4.2544107 1.8114957 -2.8975246 -4.2855291 1.8170444 -1.6025525 -2.4009187 1.0274993 -1.5929867 -2.4186025 1.0307633 -1.5642182 -2.4069264 1.0219506 -0 -0 0 -1.5360787 -2.4283376 1.0229298 -1.5491537 -2.4826357 1.0412078 -2.02408 -3.289216 1.3643371 -1.9822913 -3.2660129 1.3499757 -1.5851966 -2.6478209 1.0963683 -1.9137292 -3.2420578 1.3307185 -1.9398977 -3.3329961 1.3623787 -1.7816391 -3.1045816 1.2667454 -1.7318552 -3.0611467 1.2452035 -1.7691731 -3.1724498 1.2850236 -1.6277245 -2.9612081 1.1975502 -1.636071 -3.020185 1.2168074 -1.6401951 -3.0727019 1.2334534 -1.6125164 -3.0659735 1.2269255 -1.4724296 -2.8416128 1.1358619 -1.3055322 -2.5575547 1.022277 -1.3848429 -2.7547269 1.0953891 -1.3796474 -2.7868958 1.1045281 -0 -0 0 -1.2411476 -2.5862668 1.0212978 -1.4870458 -3.1486266 1.233127 -1.4485883 -3.1165411 1.2174602 -1.0585836 -2.3137872 0.90934497 -1.4699205 -3.2668498 1.2677246 -1.6665977 -3.7659702 1.4527895 -0.9140349 -2.0988405 0.82121885 -0.89928126 -2.1000638 0.81958687 -0.88930899 -2.1125133 0.82219803 -0.87849575 -2.1231718 0.8241564 -1.5094017 -3.7146032 1.4152544 -1.4631177 -3.6649706 1.393386 -1.437499 -3.6659584 1.3904485 -1.4030993 -3.6438327 1.3790247 -1.319263 -3.4896684 1.3189684 -1.3500646 -3.6386189 1.3708649 -1.2459687 -3.4220948 1.2882874 -1.1480778 -3.2142317 1.2093003 -1.0097076 -2.8821812 1.0852709 -2.5113697 -7.3176689 2.7022226 -1.1055872 -3.2849932 1.2275783 -1.0277487 -3.1166458 1.1639316 -1.1615337 -3.5969765 1.3359408 -0.89947259 -2.8441958 1.0607914 -0.90796256 -2.9336481 1.091146 -0.89076567 -2.9418783 1.0921252 -0.77969462 -2.6327541 0.97886676 -0.75328994 -2.6020741 0.96613741 -0.67360413 -2.3810515 0.88519192 -1.9915779 -7.2173347 2.6160548 -0.8811844 -3.2690234 1.1998349 -0.84310269 -3.2058012 1.1753554 -0.8039549 -3.1349118 1.1482648 -0.76960003 -3.0792563 1.1267228 -0.75024509 -3.0820835 1.12607 -0.69759458 -2.944052 1.0754791 -0.69329274 -3.008153 1.0966947 -1.9395058 -8.667902 3.097811 -0.65793079 -3.0238237 1.0993059 -0.68946451 -3.2655067 1.1831888 -0.60203725 -2.9399867 1.0669929 -1.603388 -8.0925684 2.8794541 -1.553169 -8.0994692 2.878475 -0.50615114 -2.7256508 0.98800576 -0.68452978 -3.8192022 1.3705385 -0.4641445 -2.6822894 0.97070694 -0.45449963 -2.7261138 0.9850682 -0.51914519 -3.237535 1.1629524 -0.50099337 -3.2518706 1.1668692 -0.60014039 -4.0628333 1.4488729 -0.411506 -2.9067905 1.0444717 -0.34627289 -2.5579801 0.92207432 -0.46518531 -3.6063135 1.286329 -0.29441002 -2.3950322 0.86397636 -0.28265476 -2.4221442 0.87278897 -0.27429822 -2.4830258 0.89335173 -0.25974053 -2.4912434 0.8956365 -0.34938586 -3.5680845 1.2687038 -0.21349148 -2.3229246 0.83623296 -0.19409788 -2.2639143 0.8153438 -0.18348004 -2.3065236 0.82970506 -0.22153033 -3.0240846 1.0777639 -0.54335886 -8.1287098 2.8438773 -0.21301986 -3.4992721 1.2412869 -0.1603885 -2.9276028 1.0431662 -0.14151132 -2.9096491 1.0366384 -0.12448998 -2.930295 1.0434926 -0.31582186 -8.7555571 3.0560327 -0.08747983 -2.8966439 1.0314161 -0.070732906 -2.9405947 1.0464301 -0.050453726 -2.8133864 1.002367 -0.033383735 -2.8306561 1.0082421 -0 -0 0 --0.0014491337 -2.9357736 1.0444717 --0 -0 0 --0 -0 0 --0 -0 0 --0.072847039 -2.9093406 1.0356592 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.4343574 -3.7118115 1.4048098 --1.4512172 -3.6879895 1.3992611 --0 -0 0 --1.4727938 -3.6121421 1.3777192 --1.3528273 -3.2608373 1.249773 --1.3687634 -3.2428973 1.2461827 --1.4289404 -3.3282297 1.2814332 --1.6215588 -3.7134922 1.4299421 --1.6615857 -3.7423434 1.4446298 --1.6638941 -3.6864221 1.427331 --1.4936244 -3.2560804 1.2677246 --3.426326 -7.3464847 2.8298423 --3.4903693 -7.3654666 2.8451829 --3.6027596 -7.4835768 2.8987112 --3.6465335 -7.4570847 2.8970792 --3.7384818 -7.5276866 2.9329824 --1.5600933 -3.0950949 1.2275783 --1.5751768 -3.0778925 1.2246407 --1.5922885 -3.0648148 1.2233353 --1.7072465 -3.2372234 1.2944889 --1.7159195 -3.2058563 1.286329 --2.3179026 -4.266572 1.7073762 --2.3358207 -4.237371 1.7015011 --2.3608537 -4.2213092 1.7008483 --2.3783112 -4.1919475 1.6949733 --2.3973842 -4.1658077 1.6904038 --1.8065374 -3.095633 1.2683774 --2.4343555 -4.1124892 1.6809384 --2.0964859 -3.4929764 1.4374491 --2.1390193 -3.5147614 1.451484 --2.16998 -3.5168521 1.4576855 --1.9743664 -3.1565411 1.3163573 --1.9891397 -3.1371839 1.3134197 --4.7146616 -7.3329048 3.0410187 --2.5870144 -3.9709113 1.6672299 --2.5607922 -3.8784614 1.6355698 --2.5861192 -3.865032 1.636549 --2.6219912 -3.8670821 1.644056 --2.6836863 -3.9062266 1.6672299 --2.6249509 -3.7710118 1.6172917 --5.5826745 -7.9137878 3.3749189 --2.6759768 -3.7454362 1.6202292 --2.6002245 -3.5926738 1.5621313 --2.6647105 -3.6345756 1.5869372 --5.3270226 -7.1712198 3.1154363 --5.3936601 -7.1686087 3.1284921 --2.8234162 -3.7059414 1.6394864 --5.4864221 -7.1086144 3.1314297 --5.5212035 -7.0636468 3.1265337 --5.5585737 -7.0222254 3.1232698 --0 -0 0 --3.023351 -3.7254596 1.6874663 --6.137116 -7.4663253 3.3680646 --6.2438951 -7.5018988 3.4010303 --0 -0 0 --3.1193905 -3.6566114 1.6904038 --6.5830221 -7.6195641 3.5077608 --6.6620164 -7.6160197 3.5247333 --3.2463384 -3.6664989 1.7217375 --3.322418 -3.7063243 1.749481 --3.2783794 -3.6123891 1.7152097 --2.7273219 -2.9686859 1.4227614 --2.7712438 -2.9795737 1.4358171 --2.9016092 -3.0815358 1.4922832 --2.9335103 -3.077354 1.498811 --2.8814275 -2.985858 1.4635606 --3.6489663 -3.7346404 1.8336904 --2.8885972 -2.920711 1.4491993 --0 -0 0 --0 -0 0 --3.7198834 -3.6248393 1.8242249 --8.4209251 -8.10359 4.0662193 --3.7949181 -3.6082201 1.8389127 --3.8224995 -3.5900426 1.8415239 --3.834059 -3.55688 1.836628 --3.8606908 -3.5377567 1.8389127 --3.8844283 -3.5159039 1.8398919 --3.9193196 -3.5039701 1.8460933 --3.9768879 -3.5117564 1.8627394 --9.0898409 -7.9259853 4.1951447 --4.0325766 -3.4737911 1.8686144 --4.0934186 -3.482662 1.886566 --4.122673 -3.4641666 1.8901564 --4.1729517 -3.4629443 1.9032122 --4.244575 -3.478605 1.9257333 --4.3128715 -3.4905431 1.9466225 --10.16694 -8.123662 4.5244756 --4.4607611 -3.5204866 1.9929702 --4.5039034 -3.5098948 2.0024357 --4.6662126 -3.5905349 2.0637975 --4.5594335 -3.4640794 2.0079844 --9.8819666 -7.411037 4.2960005 --4.5628538 -3.379185 1.9913383 --4.603344 -3.3656251 1.9998245 --4.6223755 -3.33621 1.9991717 --4.7890487 -3.4119651 2.0611863 --10.438712 -7.3392496 4.4370022 --10.552668 -7.3230162 4.4660511 --10.485095 -7.1812248 4.4190507 --11.399846 -7.7052875 4.7819996 --11.408377 -7.6094966 4.7660065 --11.497492 -7.5674114 4.7836318 --10.65976 -6.9227748 4.4197035 --10.723526 -6.8710041 4.4285159 --10.745507 -6.7924519 4.4203563 --10.788588 -6.7273908 4.4210091 --6.0944395 -3.7491479 2.5014908 --6.06318 -3.6788399 2.4796224 --6.1034846 -3.6522424 2.4868031 --5.6853242 -3.3549161 2.3102243 --5.6445212 -3.2843261 2.2857449 --5.6703072 -3.2529216 2.2880297 --6.0662036 -3.43065 2.4371912 --5.8749366 -3.2751153 2.3533082 --5.6703987 -3.1156912 2.2648559 --6.1474419 -3.3287585 2.4446983 --5.7765956 -3.0823483 2.29162 --5.6882977 -2.9905632 2.2498417 --5.6637306 -2.9334412 2.2331955 --5.6824651 -2.8990633 2.2335219 --7.2780199 -3.6566083 2.8432245 --7.4019918 -3.6621675 2.8823917 --7.4829612 -3.6452353 2.9049127 --8.0208597 -3.846463 3.1023805 --7.9528422 -3.7540143 3.0674565 --7.4553447 -3.4634855 2.8693359 --6.9150534 -3.1611412 2.6562011 --7.4455581 -3.3484819 2.8497522 --7.4564548 -3.2985289 2.8461618 --7.0258102 -3.0566938 2.6764376 --7.0505176 -3.0161283 2.6787224 --8.2757454 -3.4801326 3.1307769 --8.2812176 -3.422791 3.1249018 --0 -0 0 --0 -0 0 --7.2682137 -2.8487768 2.7263756 --7.2670302 -2.796999 2.7195215 --11.474594 -4.335072 4.2662988 --11.490342 -4.2606411 4.262382 --11.476295 -4.175518 4.247694 --11.446504 -4.0853281 4.227458 --11.220648 -3.9272957 4.1357412 --11.430506 -3.9221656 4.2036309 --0 -0 0 --6.8541508 -2.2587466 2.5227063 --11.918173 -3.8457489 4.3550773 --6.8552141 -2.1662104 2.5132411 --0 -0 0 --12.618476 -3.81668 4.5829 --11.304659 -3.3438516 4.10147 --7.0624981 -2.0424647 2.5693805 --7.052156 -1.9926697 2.5612206 --7.3758869 -2.0353026 2.6728473 --8.1941891 -2.2069554 2.9610524 --12.885714 -3.3851762 4.631206 --12.756985 -3.2678275 4.5780039 --12.787801 -3.1922369 4.5819206 --14.189487 -3.4496603 5.0731425 --6.72188 -1.5912009 2.4159758 --11.441453 -2.6335404 4.0848241 --7.4530334 -1.6678392 2.6679513 --11.401784 -2.4774907 4.0596919 --13.552397 -2.8576038 4.8133335 --13.368713 -2.7333241 4.742506 --7.5390086 -1.4937927 2.6845973 --7.5730977 -1.4523089 2.6934099 --7.6664433 -1.4214827 2.7231116 --11.459195 -2.0514824 4.0505528 --11.526523 -1.9906167 4.0698099 --11.606587 -1.9311723 4.0936365 --11.785291 -1.8866481 4.152061 --12.765476 -1.9632058 4.4905305 --11.819713 -1.7436745 4.1563039 --0 -0 0 --13.909497 -1.8776538 4.8773065 --11.906993 -1.5331749 4.1762142 --12.930402 -1.5842578 4.5290451 --13.430932 -1.5619524 4.6997485 --13.433686 -1.4787889 4.697464 --13.415241 -1.3935038 4.6879983 --13.44894 -1.3136419 4.6968112 --13.484986 -1.233677 4.7066031 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --6.932714 13.372181 5.0473719 --6.8285255 13.371375 5.0312567 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.7541237 13.046803 4.6555562 --4.6212835 12.928319 4.6034198 --4.5873837 13.086255 4.6492367 --0 0 0 --4.3583021 12.939261 4.5781412 --4.7926559 14.522626 5.124155 --4.1294441 12.776008 4.5026221 --4.0289311 12.731455 4.4782915 --3.9454029 12.738717 4.4722877 --0 0 0 --0 0 0 --3.7110484 12.811914 4.4732356 --3.6199629 12.790625 4.4580688 --3.5363574 12.794306 4.4517493 --3.8075359 14.111909 4.8988614 --0 0 0 --0 0 0 --0 0 0 --3.3827968 13.884003 4.790164 --0 0 0 --3.3426971 14.490252 4.9835439 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --2.9517183 14.863285 5.0777059 --0 0 0 --0 0 0 --0 0 0 --2.5156231 14.52459 4.9402547 --0 0 0 --2.3349378 14.540316 4.9355149 --2.2200637 14.388402 4.8795862 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.1007953 14.860456 4.9936552 -1.1158608 13.904858 4.6767273 -1.2000967 13.885461 4.6726193 -0 0 0 -1.5074058 15.256675 5.1367941 -1.5992076 15.230154 5.1311069 -1.6929425 15.222884 5.1320548 -1.7796789 15.155672 5.1130958 -0 0 0 -1.922276 14.799625 5.0012388 -2.0060112 14.735847 4.98386 -2.0961235 14.721381 4.9832277 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -2.9822171 14.968464 5.1140437 -0 0 0 -0 0 0 -0 0 0 -3.3984084 15.112 5.1895628 -3.481662 15.050191 5.1756597 -3.5618713 14.977778 5.1582808 -0 0 0 -0 0 0 -3.5080793 13.63158 4.7187524 -3.5628488 13.500632 4.6811509 -3.6565187 13.518815 4.6950541 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9589763 -2.2580483 2.7862172 -7.9440598 -2.3065767 2.7859013 -0 -0 0 -0 -0 0 -0 -0 0 -8.0152922 -2.5421367 2.8314025 -7.9887118 -2.5877616 2.8276107 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.3058949 -2.0062079 1.6129826 -4.2797832 -2.0260963 1.607927 -4.2869368 -2.061775 1.6151946 -0 -0 0 -4.2740622 -2.1205511 1.6199342 -4.2652068 -2.1488705 1.6215142 -4.2282896 -2.1629045 1.6126667 -4.2199912 -2.1914313 1.6145626 -4.2324848 -2.2309959 1.6243579 -4.2170424 -2.2560291 1.623726 -4.2106252 -2.2859354 1.6265699 -4.2089853 -2.318594 1.6313095 -4.1681762 -2.3295662 1.6211982 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -3.717253 -2.2610459 1.479955 -3.6782739 -2.2683759 1.4701596 -3.800251 -2.3758907 1.5235603 -3.8192611 -2.4204922 1.5368315 -3.689383 -2.370049 1.4913303 -4.4675179 -2.9087005 1.8063626 -4.5652099 -3.0123401 1.8524957 -4.093915 -2.7376075 1.671123 -3.6222532 -2.4545555 1.4881705 -4.4683151 -3.0679379 1.8360647 -4.0093393 -2.7892039 1.6575359 -4.0107627 -2.8268688 1.6651194 -3.9894807 -2.8486688 1.6635395 -4.163352 -3.0115387 1.7422186 -4.478488 -3.2814975 1.879986 -4.0613213 -3.0143442 1.7153603 -3.0188928 -2.2696271 1.288787 -3.0101941 -2.2921307 1.2909988 -3.5776253 -2.758954 1.5355675 -3.4634166 -2.7049441 1.4944901 -3.4400563 -2.7208478 1.4916463 -3.332207 -2.6689587 1.4527807 -3.2494454 -2.6355715 1.4243425 -3.755276 -3.0841544 1.6493204 -3.7990205 -3.1593046 1.6764947 -3.8231115 -3.2192185 1.6954535 -3.4920926 -2.9773386 1.5592661 -3.047843 -2.6311018 1.3718897 -3.903235 -3.4114084 1.7573856 -3.2242355 -2.8531373 1.464788 -3.2102017 -2.8760321 1.4663678 -3.212173 -2.9135213 1.4752153 -3.2165997 -2.9537089 1.4853266 -3.131007 -2.9107349 1.4546766 -3.1110153 -2.9279411 1.4537287 -3.031852 -2.8887324 1.4256064 -2.9771922 -2.8717163 1.4085435 -2.8108423 -2.7447793 1.3393438 -2.7615576 -2.7299614 1.3241768 -2.7279878 -2.730078 1.3162773 -2.9651437 -3.0040057 1.4366658 -6.93962 -7.1166544 3.3413947 -6.9590116 -7.2246981 3.3717287 -3.3181083 -3.4876542 1.6341534 -3.3167894 -3.5293791 1.6439488 -2.5255949 -2.7208662 1.2673002 -2.5242426 -2.7530937 1.2748839 -2.5971127 -2.8676772 1.319437 -2.5851617 -2.8899224 1.3222809 -2.8991106 -3.2811029 1.4891185 -2.671788 -3.0615246 1.384213 -2.6300309 -3.0512729 1.3725218 -2.6161797 -3.073132 1.3750496 -2.570406 -3.0571766 1.3611465 -2.8916619 -3.4823484 1.5384114 -2.8497829 -3.4750841 1.527668 -3.0565257 -3.7741358 1.6483725 -2.9586384 -3.6994653 1.608559 -3.2258055 -4.0846014 1.7643372 -2.7368009 -3.5095611 1.5131329 -2.6660089 -3.4623942 1.4862746 -1.8901178 -2.4863207 1.0710766 -1.866282 -2.4864905 1.0663369 -2.6029558 -3.5124047 1.4869065 -2.8945491 -3.9563186 1.6635395 -2.9407761 -4.0716791 1.7036691 -3.0462859 -4.2727261 1.7785563 -3.0636985 -4.3534055 1.8038348 -3.0277264 -4.3588758 1.7984631 -3.0170195 -4.4008465 1.8079425 -2.9516764 -4.3627 1.7851919 -1.6250331 -2.4342182 1.0056686 -1.6236393 -2.4647417 1.0138842 -1.6167599 -2.4873846 1.0189399 -0 -0 0 -0 -0 0 -1.5400531 -2.467629 0.99966502 -2.0019698 -3.2517869 1.3026901 -1.9962626 -3.2875261 1.3118535 -1.6191795 -2.7039223 1.080556 -1.9340554 -3.2750154 1.2976344 -1.9010313 -3.2646852 1.2891029 -1.8648998 -3.2483144 1.2783597 -1.8196932 -3.2151113 1.2612966 -1.8309079 -3.2817254 1.2824674 -1.7750721 -3.2280552 1.2578208 -1.7204174 -3.17466 1.2334905 -1.6450297 -3.0805485 1.1939929 -1.6291898 -3.0964615 1.1962048 -1.544654 -2.9800568 1.1488078 -1.6277487 -3.1880417 1.2230631 -1.273057 -2.5317702 0.9747026 -1.41879 -2.8651536 1.095723 -1.8058559 -3.7035303 1.4031718 -1.7559937 -3.6580923 1.3823171 -1.5328389 -3.2441924 1.2259068 -1.4572852 -3.1339605 1.1819856 -0.9728955 -2.1265831 0.80976093 -0.9430781 -2.0953133 0.79617375 -0.92866683 -2.0975904 0.79490983 -0.930556 -2.1371722 0.8072331 -0.92190778 -2.1533072 0.81102484 -1.5441921 -3.6681473 1.3564067 -1.5198414 -3.6731699 1.3548268 -1.2095336 -2.9749458 1.1004628 -1.4735955 -3.6889012 1.3538789 -0.92197472 -2.3501434 0.87169307 -1.3992136 -3.6314571 1.3270205 -0.89373696 -2.3630555 0.872325 -1.2310067 -3.3157153 1.2088439 -1.2181102 -3.3437088 1.2161115 -1.1905445 -3.3314652 1.20916 -1.1468529 -3.2724526 1.1857774 -1.0157318 -2.956419 1.0720245 -1.0947962 -3.251214 1.1734542 -1.0334941 -3.1326363 1.1295329 -0.96405995 -2.9836421 1.0751843 -0.91395789 -2.8890967 1.0401105 -0.89256412 -2.8828685 1.0360028 -0.71389288 -2.3571167 0.85115433 -0.70588636 -2.3832846 0.85873789 -0.72160852 -2.4923701 0.89507556 -0.69131511 -2.4438026 0.87674874 -0.67226261 -2.433367 0.87169307 -0.88916713 -3.2966573 1.1680825 -0.83752131 -3.1827757 1.1270051 -0.84510642 -3.2935359 1.1633428 -0.76846558 -3.0731621 1.0859276 -0.74892068 -3.0750539 1.0849797 -0.70507717 -2.9743519 1.0489579 -0.7017439 -3.0433357 1.0710766 -0.69198447 -3.0873923 1.0846637 -0.70372075 -3.2324884 1.1326927 -0.67013675 -3.1717682 1.1105741 -1.7039543 -8.3137445 2.8573129 -0.43838498 -2.2091496 0.78100669 -0.42715016 -2.2239101 0.78511447 -0.50279617 -2.7068739 0.94784427 -0.42162439 -2.3503826 0.8261919 -0.51617885 -2.9820752 1.0388466 -0.44991851 -2.6978896 0.94184065 -0.5180614 -3.2279956 1.1197375 -0.42517012 -2.7575924 0.96016753 -0.43019542 -2.908438 1.0100924 -0.35906735 -2.5352743 0.88370031 -0 -0 0 -1.0361618 -8.0176125 2.7233372 -0.29774055 -2.4228046 0.84388679 -0.28793311 -2.4679341 0.85842186 -0.28603181 -2.5894172 0.89855134 -0.26146835 -2.5080836 0.87074512 -0.24727957 -2.5219157 0.87485284 -0.25301218 -2.7539105 0.95195204 -0.24852315 -2.9000406 1.000297 -0.65619779 -8.2432222 2.7849534 -0.20950966 -2.8565073 0.98481399 -0.49840802 -7.4100518 2.5043628 -0.52225018 -8.546526 2.8825912 -0.48360604 -8.8006134 2.966326 -0.11495217 -2.3613844 0.81829238 -0.10600515 -2.4919078 0.86158168 -0.088807203 -2.4403641 0.84420276 -0.091910809 -3.0354645 1.0423224 -0.072938599 -3.021744 1.0375826 -0 -0 0 -0.031256661 -2.6391377 0.90992665 -0 -0 0 --0.0012016643 -2.8850529 0.99176556 --0 -0 0 --0 -0 0 --0.055139288 -2.9291263 1.0066166 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.4244105 -3.7569149 1.369046 --3.1026649 -8.0355034 2.8996542 --1.4641579 -3.7232587 1.3633583 --3.2225444 -8.0505543 2.9189291 --1.4828923 -3.6391118 1.3396598 --1.4132721 -3.4082046 1.2597167 --1.3751665 -3.2595973 1.20916 --1.3865379 -3.2310438 1.2018924 --1.4146838 -3.2416067 1.2088439 --1.6465309 -3.7107267 1.3829491 --1.6579573 -3.6754723 1.3737856 --3.4800603 -7.591218 2.8121276 --3.4933219 -7.4983392 2.7859013 --3.4938052 -7.3807168 2.7505116 --3.5850749 -7.454906 2.7859013 --3.6482382 -7.4685736 2.7991724 --3.6834555 -7.4247994 2.7912729 --1.5598642 -3.0958784 1.1854614 --1.5779667 -3.0845594 1.1848295 --1.595552 -3.072293 1.1838815 --1.8107724 -3.435112 1.3241768 --0 -0 0 --1.6767259 -3.0882652 1.2012604 --4.1343498 -7.5057831 2.8848031 --4.1507072 -7.4272671 2.8645804 --4.1943307 -7.3983574 2.8633165 --1.8631504 -3.2394712 1.2755158 --1.9871904 -3.4066451 1.3443995 --2.0433142 -3.4540012 1.3674661 --2.0981405 -3.4975402 1.3892686 --2.1333649 -3.5072982 1.3981161 --1.9536767 -3.1678736 1.2704601 --1.9720719 -3.1542172 1.2698282 --1.9949434 -3.1476676 1.27204 --4.6142359 -7.1835122 2.8743758 --2.0939803 -3.2159801 1.3090097 --5.313343 -8.0529184 3.2440727 --2.4955633 -3.7318923 1.5260881 --2.5141575 -3.7102258 1.5235603 --2.5771482 -3.7533937 1.5472589 --2.6754346 -3.8457744 1.5911801 --2.7077258 -3.8416944 1.5962358 --2.71526 -3.8026147 1.5870723 --2.7535534 -3.8066397 1.5956038 --2.7948015 -3.8141637 1.6057152 --2.826633 -3.8083718 1.6104548 --2.8738899 -3.8228095 1.623726 --5.436327 -7.1402512 3.0197268 --5.4922023 -7.1225386 3.0263622 --5.6403241 -7.2225595 3.0829227 --5.9728994 -7.5524702 3.2377532 --5.6941338 -7.1098471 3.0645959 --6.1171207 -7.5427165 3.2652433 --6.1675014 -7.5101728 3.2674551 --3.0962195 -3.7231498 1.6436328 --3.1141176 -3.6982753 1.6411049 --6.4899573 -7.6127076 3.3625653 --3.1791039 -3.6827655 1.6512163 --3.2316079 -3.6974816 1.6663834 --3.2674365 -3.6925054 1.6730189 --2.7101791 -3.0250449 1.383581 --2.7509966 -3.0329568 1.3946403 --2.7958624 -3.0446742 1.4075955 --3.4197261 -3.6786151 1.7036691 --3.4532864 -3.6693091 1.7090406 --3.4940593 -3.6672857 1.7178881 --3.5118852 -3.6409972 1.7156763 --3.5480785 -3.6336362 1.7223119 --3.5749757 -3.6165209 1.7245237 --3.6145468 -3.6119552 1.7327392 --3.6852536 -3.6377008 1.7554898 --0 -0 0 --3.7596817 -3.621165 1.7693928 --3.7728946 -3.5895257 1.7652851 --8.5580873 -8.0433464 3.942389 --9.8275318 -9.1235952 4.4969344 --10.067929 -9.2324142 4.5803533 --0 -0 0 --0 -0 0 --9.9226408 -8.7684631 4.4410057 --10.072751 -8.7916403 4.4836631 --9.1434755 -7.8821878 4.0514021 --9.1887779 -7.8234758 4.0501385 --9.9838047 -8.3952951 4.3752818 --10.462833 -8.6890945 4.5604463 --10.678072 -8.7577047 4.6302781 --9.7967682 -7.9348083 4.2296152 --4.6092963 -3.6863945 1.9965827 --4.6176829 -3.6468694 1.9905791 --10.450634 -8.1505003 4.4447975 --4.6139798 -3.5528793 1.9703563 --4.6145468 -3.5084219 1.9615089 --4.6291585 -3.4749148 1.958665 --4.6603022 -3.4537899 1.9627728 --4.7258153 -3.4576259 1.9810996 --4.7346363 -3.4196746 1.9760439 --10.366869 -7.3918414 4.2713246 --10.387201 -7.3106174 4.2612128 --0 -0 0 --11.275842 -7.7309289 4.5841451 --11.484934 -7.7711291 4.6492367 --11.548181 -7.71105 4.6555562 --0 -0 0 --10.674701 -6.939889 4.2713246 --10.724269 -6.87887 4.274168 --10.763068 -6.8109083 4.2729044 --0 -0 0 --0 -0 0 --6.0924811 -3.6998796 2.4048293 --6.1118131 -3.6604772 2.4035652 --6.0769753 -3.5891297 2.3814466 --6.0414944 -3.5183489 2.359328 --0 -0 0 --6.0792613 -3.4411411 2.3574321 --6.0041561 -3.3501439 2.3207784 --5.9813704 -3.2894633 2.3043475 --5.8988471 -3.1970878 2.2654819 --5.9376006 -3.1711142 2.2727494 --0 -0 0 --5.7553892 -2.9835954 2.1899626 --5.9806004 -3.0539491 2.2673779 --7.6842189 -3.8647504 2.8955464 --7.7154393 -3.8213181 2.8983903 --7.3584151 -3.5884128 2.7574632 --7.6385908 -3.6672149 2.8528891 --7.8934093 -3.7301414 2.9385197 --7.5393543 -3.5063789 2.8001204 --7.3795605 -3.3771338 2.7337646 --6.9226046 -3.1167593 2.5593436 --7.0014544 -3.1007364 2.5811462 --7.027307 -3.0607491 2.583674 --7.1488667 -3.0616527 2.6209598 --0 -0 0 --0 -0 0 --12.673143 -5.1539111 4.5873046 --12.666644 -5.0609155 4.5737176 --11.588187 -4.5477309 4.1768465 --11.567183 -4.4577756 4.1594672 --11.582782 -4.3823519 4.1553597 --11.599669 -4.3075652 4.1518841 --11.652624 -4.2460551 4.1613631 --11.60252 -4.1473293 4.1345048 --11.691318 -4.0983458 4.1569395 --0 -0 0 --11.696673 -3.9397254 4.1414566 --6.9112802 -2.280601 2.4547541 --6.9233379 -2.2375677 2.4541221 --6.9088964 -2.1861701 2.4443266 --12.283762 -3.804481 4.3136659 --7.7968864 -2.3623445 2.7441919 --7.1617365 -2.1219804 2.5185821 --7.0342817 -2.0373421 2.4699211 --7.0046568 -1.9822561 2.4553859 --6.9471884 -1.920027 2.4313715 --6.9441824 -1.873409 2.4263158 --7.0298648 -1.8503304 2.4519103 --8.1539555 -2.0928521 2.8345623 --8.2080612 -2.0531433 2.8487813 --8.246315 -2.0090301 2.8576288 --8.2354078 -1.95292 2.8497293 --7.6176648 -1.7571014 2.6345468 --7.5903459 -1.7018151 2.6215916 --11.505288 -2.505734 3.9525003 --9.5024309 -2.0084727 3.2655594 --13.386608 -2.7439086 4.581933 --13.358524 -2.6528463 4.5667658 --12.503407 -2.4033551 4.2713246 --10.401426 -1.9331516 3.5543652 --10.419629 -1.8704669 3.5565772 --11.717255 -2.0293243 3.9913659 --12.640038 -2.1093714 4.2988148 --12.678036 -2.0358362 4.3073463 --11.915776 -1.8384825 4.0463467 --0 -0 0 --13.722245 -1.9451712 4.646709 --11.948539 -1.6189679 4.0466623 --11.996825 -1.5506102 4.0596175 --13.606 -1.6738364 4.596468 --13.616957 -1.59043 4.5967841 --13.64249 -1.5086213 4.6021557 --13.609971 -1.4205493 4.5882525 --13.641092 -1.3392388 4.5958362 --13.654721 -1.256035 4.5977321 --13.739685 -1.1788805 4.6236424 --14.013367 -1.1157967 4.712749 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --7.1660256 13.427445 4.9030929 --7.0799561 13.464418 4.9006538 --6.9774961 13.46955 4.8869352 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --5.0347905 13.320206 4.5893874 --0 0 0 --4.7716122 13.108021 4.4964037 --4.65555 13.03749 4.462564 --4.592145 13.113452 4.4787216 --4.4760404 13.037788 4.4436622 --0 0 0 --4.7640491 14.452166 4.9021783 --4.1191597 12.758146 4.3226314 --4.025877 12.735958 4.3067784 --3.9327407 12.712197 4.2906203 --3.8585274 12.748851 4.2948885 --3.7837422 12.784159 4.298852 --3.7012599 12.793411 4.2942786 --3.6188064 12.802134 4.2897058 --0 0 0 --3.8055112 14.122925 4.7131624 --3.7163622 14.136798 4.7101135 --3.6104012 14.084605 4.6854196 --3.7401226 14.972301 4.9710774 --3.4172578 14.045488 4.6582866 --0 0 0 --3.1153517 13.524858 4.4738441 --3.328917 14.86905 4.9085803 --0 0 0 --3.0927303 14.655308 4.8256574 --0 0 0 --0 0 0 --2.8014607 14.600317 4.789988 --2.7076545 14.594757 4.7826715 --2.6931045 15.030149 4.9189458 --2.5095413 14.51802 4.7473073 --2.4182239 14.519993 4.7430391 --2.3131196 14.434874 4.7107234 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.81921959 14.649478 4.7277961 -0 0 0 -0 0 0 -1.0895079 14.642365 4.7311492 -0 0 0 -1.2107738 13.956124 4.5153055 -1.2969135 13.954122 4.5171347 -1.3811935 13.932633 4.5128665 -0 0 0 -1.549423 13.890971 4.5052447 -1.7858816 15.164722 4.9189458 -1.8696331 15.078813 4.8948617 -1.9469832 14.950894 4.8573632 -2.0426781 14.967919 4.8668141 -2.1098416 14.782566 4.8110237 -0 0 0 -0 0 0 -2.503921 15.498081 5.0564394 -2.6218405 15.618615 5.1006451 -0 0 0 -0 0 0 -2.8420336 15.21009 4.9841866 -2.6228056 13.575597 4.4570765 -3.0254872 15.159124 4.9793091 -3.2120478 15.594548 5.1277776 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.7003736 15.536858 5.143631 -0 0 0 -0 0 0 -3.503114 13.593955 4.5247564 -3.5652835 13.492098 4.4982328 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9603682 -2.2605774 2.6800222 -7.9362879 -2.3064537 2.6766689 -0 -0 0 -0 -0 0 -0 -0 0 -8.0207138 -2.5460739 2.7248373 -7.9632673 -2.5817232 2.7108135 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.3467875 -2.0911608 1.5751941 -4.3313079 -2.1165378 1.5742795 -4.3515067 -2.1595945 1.5861692 -4.2760949 -2.1549504 1.5639142 -4.2610965 -2.1802793 1.5633044 -4.2070751 -2.1853013 1.5486709 -4.1851635 -2.2066302 1.5456222 -4.1354418 -2.2129371 1.5325131 -4.197938 -2.2796483 1.5602558 -4.1621861 -2.2934077 1.5523293 -4.1463737 -2.3179734 1.5517195 -4.1635489 -2.3612325 1.5633044 -0 -0 0 -4.0701046 -2.3746955 1.539525 -3.816972 -2.2584319 1.4508095 -3.9091935 -2.3455381 1.4904418 -3.9142525 -2.3813655 1.4977586 -3.7788074 -2.3308082 1.4523338 -3.7951152 -2.373147 1.4639187 -4.817184 -3.0539186 1.8568888 -4.0388904 -2.5951667 1.5678774 -4.1170483 -2.681253 1.6038513 -3.8779912 -2.5595129 1.5184894 -3.8598387 -2.5816705 1.5175748 -3.8171251 -2.587131 1.5072094 -3.8553402 -2.6477201 1.528245 -3.9570465 -2.7534962 1.5742795 -3.9657598 -2.7958398 1.5843401 -3.9183097 -2.7985256 1.5724504 -3.8941212 -2.8174889 1.5697066 -3.8544872 -2.8249972 1.5608655 -4.0228696 -2.9865925 1.6349475 -3.8644326 -2.9058669 1.5788525 -3.7268391 -2.8383212 1.530684 -3.8737211 -2.9879827 1.5971444 -4.0113964 -3.1336839 1.6605561 -3.617208 -2.8615174 1.5075142 -3.9258213 -3.145148 1.6413497 -3.3385336 -2.7082257 1.4072139 -3.2821214 -2.6960044 1.3907512 -3.7523322 -3.1212282 1.593486 -3.6588235 -3.0815952 1.5623899 -3.2102051 -2.737416 1.3816053 -3.2164111 -2.7769849 1.391361 -3.2595294 -2.8493371 1.4169695 -3.2583842 -2.8838055 1.4239814 -3.2533925 -2.9151881 1.429469 -3.2890406 -2.983743 1.4526386 -4.3618584 -4.0065746 1.9270076 -3.8602321 -3.5895495 1.7184803 -3.1260984 -2.9425676 1.4053847 -2.6227193 -2.4990163 1.1907603 -2.6278937 -2.534905 1.1999062 -3.0359843 -2.964998 1.3895317 -3.006901 -2.9728541 1.3846539 -3.079453 -3.0822287 1.4258106 -3.0952611 -3.1363242 1.4416635 -2.8885303 -2.9628944 1.3556918 -3.3649666 -3.4945285 1.5840352 -2.6163709 -2.7503211 1.2462455 -2.5890145 -2.7552149 1.2413677 -2.5545723 -2.7521963 1.2331364 -2.5517919 -2.7832677 1.2398434 -2.5877099 -2.8574822 1.2651471 -3.0157132 -3.3717594 1.4791619 -2.6488955 -2.9982533 1.3117914 -2.622937 -3.0058367 1.308133 -2.5596919 -2.9699183 1.2861828 -2.5340152 -2.9768634 1.2825243 -2.7981369 -3.3285093 1.4230669 -2.8311801 -3.4101136 1.4498949 -2.8192577 -3.4384708 1.4544679 -3.3127608 -4.0916543 1.7163463 -3.0426264 -3.8053761 1.5907422 -3.1165702 -3.9473333 1.6410449 -2.9547212 -3.7898405 1.5694017 -2.9947169 -3.8901742 1.6026319 -3.0019026 -3.9494278 1.6190946 -3.1307685 -4.1719589 1.7007983 -3.077338 -4.1535869 1.6858599 -1.8376935 -2.5116897 1.0273529 -1.8005106 -2.4927993 1.0154632 -3.0484395 -4.2770109 1.712383 -3.0374784 -4.3174491 1.7209193 -3.0098436 -4.3344407 1.7203095 -2.9831915 -4.3528271 1.7203095 -2.985764 -4.4144454 1.7370771 -3.0051339 -4.5024023 1.7639052 -1.6462533 -2.4986029 0.98894006 -1.6303724 -2.5078583 0.98863524 -1.6190648 -2.5242298 0.99107414 -1.5908222 -2.5139916 0.9834525 -0 -0 0 -1.5378944 -2.497632 0.97003847 -1.5087069 -2.4842229 0.96150231 -0 -0 0 -1.4529393 -2.4598978 0.94564933 -1.5460666 -2.6548071 1.0145487 -1.5330653 -2.6700265 1.0166827 -1.5879169 -2.8053918 1.0630221 -1.6801164 -3.0114026 1.1349701 -1.1039144 -2.0066648 0.76425511 -1.1174303 -2.0611377 0.78163236 -0 -0 0 -1.0796436 -2.051091 0.77309614 -1.0696661 -2.0627513 0.77492535 -1.0673766 -2.0896366 0.78224206 -1.0686454 -2.1242299 0.79230261 -1.2904265 -2.6053591 0.96180713 -1.3232191 -2.7134027 0.99747628 -1.236941 -2.576344 0.9459542 -1.1954949 -2.5296266 0.92674774 -0 -0 0 -1.4340264 -3.1339707 1.1343603 -1.0233283 -2.272387 0.82888633 -0.99087042 -2.2368169 0.81425285 -0.94558924 -2.1703694 0.78894907 -1.2135835 -2.8337288 1.0179021 -1.1954347 -2.839366 1.0172925 -1.5447334 -3.73385 1.3245957 -0 -0 0 -1.2033324 -3.0121489 1.0694243 -1.0006155 -2.5495198 0.90784615 -0.93739808 -2.4320648 0.86547005 -0.88609797 -2.3415527 0.83254468 -0.87138259 -2.3460526 0.83223981 -2.9209597 -8.0227909 2.7641649 -0 -0 0 -0 -0 0 -1.1505467 -3.3486197 1.164542 -1.0209706 -3.0315485 1.0550957 -1.075086 -3.2584641 1.1294825 -1.0544871 -3.2631867 1.1288728 -0.9216634 -2.9126997 1.0090611 -0.90630668 -2.9264891 1.0118049 -1.2019286 -3.9684668 1.3584356 -0.80709648 -2.7236876 0.94046664 -0.7075485 -2.4422247 0.84504414 -0.69177306 -2.4437706 0.84412956 -0.71020824 -2.5691557 0.88437164 -0.89830208 -3.3303092 1.1352749 -0.88027143 -3.3449695 1.1383235 -0.85216534 -3.320785 1.1285679 -0.77247107 -3.0884783 1.0502177 -0.75170535 -3.0857565 1.0477788 -0.71081823 -2.9976325 1.0172925 -0.70288306 -3.047415 1.0322309 -1.6037482 -7.1605682 2.3800359 -0.64823854 -2.9767046 1.0063174 -0.60165393 -2.8464344 0.96241689 -1.6600522 -8.1098204 2.6809371 -0.4259792 -2.143589 0.73072004 -0.41030684 -2.1330676 0.72645193 -0.40068391 -2.1542737 0.73254919 -0.39551735 -2.2016907 0.74718267 -0.38427064 -2.2172148 0.75145078 -0.37566319 -2.249594 0.76120645 -0.36381093 -2.264082 0.76516968 -0.35556093 -2.302983 0.77705938 -0.37007123 -2.499212 0.83986145 -1.0767257 -7.6097941 2.4913113 -1.0249128 -7.5785046 2.4791167 -0.38595203 -2.9863958 0.99503738 -0.33284974 -2.7051127 0.9035781 -0.29048172 -2.4857376 0.83223981 -0.26896644 -2.4306731 0.81394798 -0.75985593 -7.2975607 2.3797309 -0.28749117 -2.9285824 0.97308713 -0.75727099 -8.2566595 2.685205 -0.70546043 -8.2478657 2.6809371 -0.22699393 -2.8507783 0.94656396 -0.17827718 -2.4246778 0.80937499 -0.16295144 -2.4190743 0.80724096 -0.14804749 -2.4190779 0.80693609 -0.13252704 -2.407578 0.80297285 -0.11738355 -2.4007356 0.80053395 -0.10240944 -2.3957014 0.79870474 -0.089563742 -2.4476805 0.81516743 -0.074800134 -2.4567518 0.81791121 -0.061516691 -2.5323825 0.84199548 -0.049969375 -2.7583947 0.91424835 -0.033714347 -2.8167417 0.93284506 -0 -0 0 --0.00098079373 -2.9931364 0.98924494 --0 -0 0 --0.040754862 -3.2271686 1.0642415 --0.060828868 -3.2411411 1.0688145 --0.081003696 -3.2521319 1.0724729 --0.10158478 -3.2715642 1.0788751 --0.12240735 -3.2908654 1.0852772 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --3.2738461 -8.0295534 2.8068459 --1.4789355 -3.5662708 1.2669764 --1.4341017 -3.3992009 1.2121007 --1.403814 -3.2713251 1.1706392 --1.4253849 -3.2661409 1.1718587 --1.4496511 -3.2669082 1.1752121 --1.6123245 -3.5739121 1.2861828 --1.6501125 -3.5985758 1.2983774 --3.4473314 -7.3948674 2.6428289 --1.6839527 -3.5565388 1.2907557 --3.6394396 -7.5631099 2.7178254 --3.6962364 -7.562026 2.7254472 --3.5218737 -7.0947862 2.5666127 --1.7642951 -3.5013855 1.2861828 --1.5878283 -3.1039214 1.1471647 --1.6081613 -3.0966554 1.1480793 --1.6426858 -3.1162121 1.1587495 --1.6671703 -3.1161494 1.1624079 --4.0370798 -7.4323263 2.7385564 --4.07617 -7.3957386 2.7342882 --1.7433085 -3.1190135 1.1749073 --4.8331237 -8.5197315 3.1665857 --0 -0 0 --1.8474797 -3.1670012 1.204784 --2.076968 -3.5104654 1.3367902 --2.0979784 -3.4968386 1.3364854 --2.0886915 -3.4334614 1.3175838 --1.9646614 -3.1855454 1.2291732 --1.9816447 -3.1693935 1.2276489 --2.0571663 -3.2456443 1.2611839 --2.4432318 -3.8025589 1.4779425 --2.1415553 -3.2887788 1.2874023 --2.4225333 -3.6705635 1.4389198 --5.4849162 -8.1980886 3.1885359 --2.5769749 -3.8021483 1.5014169 --2.61374 -3.8058884 1.5090386 --5.4520454 -7.8331151 3.0861015 --2.7535701 -3.905833 1.5608655 --2.7802527 -3.8927383 1.5623899 --2.3763001 -3.2846565 1.3288637 --2.4020414 -3.2776945 1.3319124 --0 -0 0 --5.4206061 -7.2070255 2.9178164 --5.4664574 -7.1759019 2.918731 --0 -0 0 --5.7036586 -7.2996306 2.9964714 --5.9753146 -7.5512609 3.1135395 --6.0245142 -7.5181708 3.1150637 --6.1197476 -7.5417004 3.1400626 --0 -0 0 --6.3885107 -7.678329 3.2284732 --6.4864416 -7.6994343 3.253777 --6.4773092 -7.5935578 3.2260344 --6.5561557 -7.5911479 3.2418873 --2.7019899 -3.0910623 1.3453264 --2.7215369 -3.0751381 1.3456314 --2.7638774 -3.084619 1.3569113 --0 -0 0 --0 -0 0 --0 -0 0 --8.6149187 -9.1489391 4.053741 --8.6610355 -9.0855675 4.0491681 --8.718605 -9.0343084 4.0500827 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --8.3756571 -8.162446 3.77479 --8.4516592 -8.1359968 3.7863748 --9.9474792 -9.4587641 4.4250655 --8.6140413 -8.0909986 3.8141174 --9.9434042 -9.2252245 4.3729339 --10.02159 -9.1839848 4.3823848 --3.9385812 -3.566144 1.7318944 --3.968909 -3.5495269 1.7355528 --3.9977531 -3.5314109 1.7386014 --0 -0 0 --9.2197847 -7.9430208 3.9266124 --9.9335499 -8.452199 4.2061729 --9.9764738 -8.3837366 4.2025146 --10.438169 -8.662941 4.3732386 --10.695914 -8.7665482 4.4579911 --0 -0 0 --10.185168 -8.1411333 4.2049537 --10.269321 -8.1056252 4.2189775 --4.6064377 -3.5910547 1.9007891 --10.820907 -8.3274641 4.401896 --10.872558 -8.261488 4.4022007 --9.9554472 -7.4688444 4.0150232 --10.032469 -7.4308567 4.0275226 --0 -0 0 --10.250327 -7.399147 4.0778251 --10.357589 -7.3803215 4.1022143 --11.284574 -7.9367809 4.4473205 --0 -0 0 --11.168975 -7.6523805 4.3650074 --11.40587 -7.7122555 4.4384794 --11.30403 -7.542757 4.381165 --5.5047865 -3.6252449 2.1410222 --10.738415 -6.9765067 4.1302619 --10.772199 -6.9048333 4.1269083 --5.5842676 -3.5319576 2.1462049 --5.602602 -3.4956107 2.1449854 --0 -0 0 --0 -0 0 --0 -0 0 --6.1813025 -3.6489258 2.3288186 --6.1838193 -3.5994339 2.321502 --6.1752224 -3.5438881 2.3102219 --6.188561 -3.5012424 2.3071733 --6.1874671 -3.4506831 2.2989421 --6.1551032 -3.3833003 2.2794306 --6.0718975 -3.2892358 2.2416275 --6.0003772 -3.2030473 2.2083974 --6.0005288 -3.1559761 2.2013855 --5.8447208 -3.0284307 2.1382785 --6.3501582 -3.2409434 2.3132706 --6.3129067 -3.1732697 2.2928448 --6.2870169 -3.1120894 2.2766869 --0 -0 0 --7.3887095 -3.5449965 2.6544137 --7.3974032 -3.4934947 2.6498408 --7.3798323 -3.4299815 2.636122 --7.3920774 -3.3806751 2.6330733 --6.9749141 -3.1383619 2.4794216 --6.9905558 -3.0939643 2.4782021 --6.9910688 -3.0430334 2.4718001 --0 -0 0 --0 -0 0 --7.0080495 -2.8981903 2.4586909 --7.0071707 -2.8476083 2.4522886 --7.0307035 -2.8070304 2.4544227 --12.666869 -4.9663892 4.3863478 --12.642886 -4.8677034 4.3677511 --12.709933 -4.8041763 4.3805556 --11.698878 -4.3402634 4.0253887 --11.685016 -4.2537422 4.0116696 --11.675018 -4.1691556 3.999475 --7.5870075 -2.6573865 2.6044159 --11.53703 -3.9609537 3.9357584 --11.469042 -3.8591177 3.9046621 --6.94628 -2.2904317 2.3724144 --6.9556713 -2.2463043 2.3708899 --12.455346 -3.9372015 4.212575 --6.9927216 -2.1638737 2.3742435 --7.0386844 -2.1308556 2.3852186 --7.0799375 -2.0960035 2.3946693 --7.1109633 -2.0578144 2.4007666 --7.9959707 -2.2606962 2.6909974 --13.022402 -3.5949106 4.3555565 --9.5496731 -2.5736136 3.1970723 --7.3914447 -1.9436845 2.4775925 --7.5508456 -1.936121 2.5263708 --8.2177134 -2.0533538 2.7425196 --8.2107239 -1.9981657 2.7361174 --9.6231976 -2.2792487 3.1967673 --8.1445999 -1.876528 2.7065456 --7.8882923 -1.7666138 2.6187446 --11.726802 -2.5502198 3.8726516 --13.212747 -2.7884226 4.3537273 --13.333179 -2.7284837 4.3875675 --12.601352 -2.4983318 4.1433711 --12.594932 -2.4168382 4.1363592 --10.431385 -1.9355965 3.4272447 --11.850222 -2.1235769 3.884846 --12.715178 -2.1980555 4.1616631 --13.770296 -2.2934277 4.4997573 --11.950309 -1.9151847 3.905272 --11.968425 -1.842837 3.9074061 --12.021905 -1.7756234 3.9211249 --0 -0 0 --13.627469 -1.8420259 4.432992 --13.72164 -1.7690843 4.4598203 --0 -0 0 --14.678865 -1.7095648 4.7616358 --14.672039 -1.6175876 4.7561483 --14.490335 -1.5076376 4.6945658 --13.573237 -1.3281609 4.3967133 --13.692098 -1.2550136 4.4323821 --13.375002 -1.1432647 4.3281188 --13.346637 -1.058393 4.3168387 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --25.98941 -0.78004181 8.3541565 --25.991804 -0.62051368 8.3535471 --26.000835 -0.46112037 8.3553762 --26.016508 -0.30172759 8.3596439 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.766324 12.839646 5.0033722 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --7.7504902 11.758425 4.3718767 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --7.6417823 12.405594 4.5220923 --0 0 0 --0 0 0 --7.6469607 12.941532 4.6643558 --0 0 0 --7.4785275 13.018653 4.6587596 --7.4060411 13.0776 4.6634722 --7.3568697 13.178702 4.6832066 --0 0 0 --0 0 0 --0 0 0 --7.1233916 13.530318 4.7441764 --7.0881987 13.666238 4.7762814 --6.9998627 13.700963 4.7733359 --0 0 0 --0 0 0 --0 0 0 --7.0372348 14.650781 5.0407786 --6.9500666 14.699733 5.0428405 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --5.1022782 13.478307 4.4731989 --4.9742112 13.387532 4.4331412 --4.8098054 13.192449 4.3592114 --4.6814561 13.08944 4.3159142 --4.5798593 13.057501 4.2961798 --4.4778991 13.022098 4.2755618 --4.3911977 13.029406 4.2690821 --4.306673 13.042493 4.2646642 --4.725348 14.610778 4.764205 --4.057725 12.814669 4.1742401 --3.9679856 12.803725 4.1627526 --3.8932309 12.840635 4.1668763 --3.7983394 12.810225 4.1494985 --3.7233906 12.846141 4.1536222 --3.6484044 12.882537 4.15804 --3.9285307 14.203361 4.5733428 --3.8726962 14.343446 4.6104546 --3.7449298 14.216309 4.5624447 --3.6476429 14.200145 4.5500741 --0 0 0 --3.4343948 14.085076 4.4997077 --3.5341821 14.890638 4.7483001 --3.2842953 14.225793 4.5312233 --3.3135147 14.765047 4.6952825 --3.2061641 14.708536 4.6711302 --0 0 0 --3.0369513 14.802941 4.6888027 --0 0 0 --2.8064919 14.586659 4.609571 --2.710294 14.567904 4.5983787 --0 0 0 --2.521033 14.540746 4.5798225 --2.4297178 14.543688 4.5759935 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.1777644 14.708683 4.5792336 -0 0 0 -1.2965311 14.026062 4.3727603 -1.3899771 14.092974 4.396029 -1.55581 14.841676 4.6307783 -1.5513223 13.971327 4.363924 -1.7614106 15.022683 4.6932206 -1.857887 15.046685 4.7041187 -1.9541097 15.065329 4.7135439 -2.0311949 14.94037 4.6784935 -2.1240399 14.936141 4.6811447 -2.1992283 14.812229 4.6466832 -0 0 0 -2.4728913 15.355879 4.8251748 -2.5464079 15.216944 4.7865901 -2.6976016 15.534343 4.8908577 -2.7321053 15.179847 4.7851176 -2.5446346 13.656819 4.3129687 -2.9085982 15.095443 4.7695069 -3.0104942 15.124174 4.784234 -3.186305 15.50981 4.9114752 -3.2879465 15.520819 4.921195 -0 0 0 -0 0 0 -3.587065 15.51819 4.9403405 -3.5123358 14.780907 4.7138386 -0 0 0 -0 0 0 -3.4848986 13.551285 4.3438954 -3.5575047 13.489912 4.3312302 -3.6314838 13.435541 4.3209214 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -5.1746893 14.740621 4.8463821 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -18.737032 -2.7818556 5.8696165 -0 -0 0 -17.777811 -2.8628545 5.5812612 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9562387 -2.2557745 2.5801854 -7.9450011 -2.3053493 2.581069 -0 -0 0 -0 -0 0 -0 -0 0 -7.9889736 -2.5322592 2.6143522 -7.97965 -2.5832908 2.6164141 -7.9772596 -2.6367025 2.6208322 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.3844395 -2.1409361 1.5351549 -4.4371457 -2.2004859 1.5578346 -4.3791757 -2.2053227 1.5425185 -4.3400345 -2.2191017 1.5336822 -4.3076758 -2.2360055 1.5272024 -4.2236986 -2.2254269 1.5027555 -4.1568708 -2.2229147 1.4841994 -4.1406331 -2.2470117 1.4833158 -4.1811829 -2.3023334 1.502461 -4.1644745 -2.3265474 1.5015773 -4.1642551 -2.3600652 1.5065845 -3.9641047 -2.2788999 1.4406074 -3.8955579 -2.271415 1.4211677 -3.8708532 -2.2889524 1.4173386 -3.855916 -2.3121691 1.4170442 -3.8024595 -2.3119576 1.4029062 -3.7825074 -2.3317356 1.4008443 -3.7875795 -2.367054 1.4079133 -4.1968269 -2.6587098 1.5625472 -4.3082967 -2.7665021 1.6093792 -3.985265 -2.5937788 1.4968647 -3.9493306 -2.6050301 1.4895011 -3.7966135 -2.5378797 1.4388402 -3.8616779 -2.6157868 1.4688833 -3.5902588 -2.4642386 1.3734521 -3.8230104 -2.6586142 1.466527 -3.6964684 -2.6044223 1.4249967 -4.0646834 -2.9012904 1.5704999 -3.8346074 -2.7727647 1.4897957 -3.673346 -2.690654 1.4347166 -4.0021486 -2.9693534 1.5672599 -3.9976058 -3.0041871 1.5725616 -3.9562831 -3.0112975 1.5637254 -4.0217481 -3.1002722 1.5964195 -4.0229888 -3.1407673 1.604372 -3.2232163 -2.5484624 1.2977551 -3.2313919 -2.5873027 1.3071804 -3.1627481 -2.5643547 1.286268 -3.1462154 -2.5831063 1.2859734 -3.3074219 -2.7495778 1.3569578 -3.2714784 -2.7538209 1.3492998 -3.2857964 -2.8004949 1.3619649 -3.2171791 -2.7762799 1.3410527 -3.7247493 -3.2542932 1.5557728 -3.4749281 -3.0738587 1.4612253 -3.9251683 -3.5152278 1.6553276 -3.957334 -3.5880263 1.6777127 -3.8697662 -3.552146 1.6503204 -4.385561 -4.0753961 1.8765277 -2.671092 -2.5131054 1.1616772 -2.6639261 -2.5373559 1.1652118 -2.6379874 -2.5437047 1.1607937 -2.6120713 -2.5498312 1.1563755 -2.5868592 -2.5564075 1.152252 -2.6285563 -2.6296761 1.1772879 -3.3839314 -3.4270124 1.5157152 -2.6961863 -2.7643425 1.221469 -2.7017198 -2.8042305 1.2314835 -2.6172571 -2.7501516 1.2014403 -2.5885501 -2.7536271 1.1961386 -3.1569047 -3.3996599 1.4612253 -3.1579502 -3.442909 1.4712396 -2.5483351 -2.8128459 1.2011458 -2.7783132 -3.1047146 1.3154275 -2.6731291 -3.0243313 1.27537 -2.6029811 -2.9816492 1.2512177 -2.5877576 -3.0011833 1.2526904 -2.559999 -3.0060923 1.2482723 -2.5230498 -2.9998047 1.239436 -2.5900929 -3.1181369 1.2806717 -2.8127735 -3.4287457 1.3981935 -3.2645602 -4.0295377 1.6297026 -3.240968 -4.0509849 1.6302916 -2.8688638 -3.631402 1.4576907 -2.6119728 -3.3483145 1.340169 -2.9500611 -3.8298528 1.5213115 -0 -0 0 -1.8847613 -2.5101967 0.99879628 -1.8761539 -2.5309258 1.0023308 -1.8402683 -2.5146298 0.99172729 -1.8304014 -2.5336199 0.99467272 -1.8331348 -2.5704768 1.0043925 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -1.6404116 -2.5918403 0.97670573 -1.5475332 -2.478653 0.93193555 -1.9142323 -3.1080976 1.1563755 -1.8911555 -3.113251 1.1540192 -1.8621931 -3.1084015 1.1481284 -0 -0 0 -0 -0 0 -1.748014 -3.0435443 1.1130781 -1.6110997 -2.8454959 1.0391483 -1.5665916 -2.806932 1.022065 -0 -0 0 -1.1079054 -2.0438416 0.74784756 -1.1020997 -2.0632439 0.75226569 -1.0956521 -2.0818057 0.75638926 -1.0837377 -2.0901859 0.75697833 -1.0743706 -2.1036043 0.75933462 -1.0756189 -2.1383271 0.76905447 -1.5186296 -3.0653734 1.0856857 -1.4947635 -3.0643275 1.0821513 -1.4813122 -3.0846398 1.0859803 -1.4856415 -3.142915 1.1027691 -1.4707639 -3.1615024 1.1060091 -1.4728222 -3.2173867 1.1219143 -1.4518753 -3.2237494 1.1210307 -0.97791815 -2.207751 0.77553439 -0.96626228 -2.2180901 0.7770071 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -1.1630541 -2.9628751 1.0123452 -0 -0 0 -0.90160137 -2.382591 0.81647557 -0 -0 0 -0 -0 0 -2.8810444 -8.0558968 2.6682532 -1.015885 -2.8972676 0.97758931 -0.82560539 -2.4018967 0.81411922 -0.81970376 -2.4331791 0.82266092 -0.78917587 -2.3909762 0.80734479 -0.78948909 -2.4421458 0.82236636 -0.91989815 -2.9061122 0.97081488 -0.78294259 -2.5274127 0.84681326 -1.2776659 -4.2148852 1.3887682 -0.74072903 -2.4992659 0.83473706 -0.72059077 -2.4872425 0.82943535 -2.2100646 -7.8043094 2.5312917 -2.3881271 -8.6346941 2.7925494 -0.89615822 -3.3202722 1.091282 -0.87284702 -3.3146193 1.0877476 -0.78567523 -3.0598235 1.0049816 -0.77547342 -3.0988867 1.0158796 -0.73606771 -3.0200279 0.98937094 -0.72282028 -3.0468028 0.99643993 -0.70583183 -3.0586295 0.99879628 -0.74167317 -3.3062701 1.0756714 -0.72137231 -3.3107588 1.0756714 -0.60213345 -2.8476529 0.92840105 -1.6685641 -8.1339092 2.5904944 -1.6232822 -8.1674261 2.597858 -0.422849 -2.199481 0.72163343 -0.41843578 -2.2508888 0.73694956 -0.59259981 -3.2993255 1.0644789 -0.38914967 -2.2464383 0.73400414 -0.35299423 -2.1149387 0.69217938 -0.38248882 -2.3812504 0.77465075 -0.38975793 -2.5252175 0.81883186 -0.5704217 -3.8509967 1.2311889 -1.2401172 -8.7384653 2.7516081 -1.0354795 -7.6332326 2.4055228 -1.1378199 -8.7918825 2.7636843 -0.32017848 -2.601429 0.8391552 -0.29077274 -2.4884958 0.80351573 -0.27886546 -2.5206275 0.81294107 -0.26041195 -2.4937775 0.80410486 -0.81426293 -8.28055 2.5957961 -0.76765007 -8.3310671 2.6099341 -0.23485552 -2.7352273 0.87744546 -0.59098649 -7.4082093 2.3218732 -0.64077705 -8.7049952 2.721565 -0.58664429 -8.6982746 2.7183251 -0.15285935 -2.4988439 0.80292666 -0.13452321 -2.4453461 0.78613788 -0.11914203 -2.4384894 0.78378153 -0.10360449 -2.425808 0.77965796 -0.088332281 -2.4158931 0.77641803 -0.073419347 -2.4135239 0.77553439 -0.059075832 -2.4330361 0.78142518 -0 -0 0 -0.045765329 -3.794307 1.2008512 -0 -0 0 --0.0007253568 -3.1093898 0.98966551 --0.020329379 -3.1934214 1.0155851 --0.040361222 -3.2285924 1.0264831 --0.060436152 -3.2426162 1.0309012 --0.081297159 -3.2813537 1.0429773 --0.10216509 -3.3046727 1.0503409 --0.12282832 -3.3144884 1.0535809 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --3.2775512 -8.0485611 2.7097833 --3.316632 -8.0035791 2.7015362 --3.3827543 -8.0235853 2.715085 --1.419319 -3.3090436 1.1410594 --1.4227886 -3.2617297 1.1280997 --1.4443249 -3.2564328 1.1292778 --1.4792018 -3.2806156 1.1404704 --1.6505629 -3.6016188 1.2523959 --3.4894292 -7.4933925 2.5790074 --3.6272957 -7.6662054 2.6452789 --1.7136794 -3.5645981 1.250334 --3.7345147 -7.6485958 2.6547043 --3.7890165 -7.6409483 2.660006 --1.644487 -3.2652888 1.1581428 --1.5914135 -3.1121857 1.10866 --1.6012353 -3.0845499 1.1024746 --1.6522002 -3.1355426 1.1236815 --1.6781671 -3.1379871 1.1280997 --1.6937439 -3.1209114 1.1257433 --4.0716705 -7.3950267 2.6332028 --4.3555675 -7.7970719 2.7840078 --0 -0 0 --4.8337994 -8.4091749 3.0208185 --4.8934879 -8.3933916 3.0258257 --4.3928924 -7.4295287 2.6915219 --2.0969419 -3.4969201 1.2880353 --1.9555382 -3.2161446 1.1914259 --1.9747338 -3.2032716 1.1911314 --2.0743611 -3.3191442 1.2376688 --2.2056513 -3.4815421 1.3015841 --2.3978665 -3.734122 1.3990772 --2.4306366 -3.7345574 1.4046735 --2.4708679 -3.7458992 1.4143933 --2.4953988 -3.7330513 1.4152769 --0 -0 0 --5.3387132 -7.7790046 2.9392307 --0 -0 0 --2.3600671 -3.3495908 1.2942207 --2.3689175 -3.3187115 1.2880353 --0 -0 0 --5.6849246 -7.7619238 2.9966662 --2.4210625 -3.2630324 1.2836171 --5.4525352 -7.256093 2.8287778 --5.8169947 -7.6430397 2.9916589 --5.9390388 -7.704844 3.0296547 --5.9456296 -7.6162796 3.0093312 --5.9691377 -7.5504165 2.9978442 --6.2572284 -7.815794 3.1171331 --6.1413813 -7.5753312 3.0370181 --6.2853665 -7.6564288 3.0844393 --6.2882457 -7.5648046 3.0632322 --2.6516728 -3.1501064 1.300406 --2.6622739 -3.1235936 1.2962824 --2.6857598 -3.1122642 1.2983443 --2.7016623 -3.0921276 1.2968715 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --8.6294432 -9.2868347 3.9386075 --0 -0 0 --8.7091465 -9.1449451 3.9235859 --8.7684107 -9.0947742 3.9250586 --8.8353977 -9.0524273 3.9300656 --0 -0 0 --9.7540913 -9.7514172 4.2823362 --9.8185005 -9.696084 4.2843981 --9.8798618 -9.6376581 4.2852817 --8.506115 -8.1962585 3.6720481 --8.5354805 -8.1241446 3.6632118 --8.6185875 -8.1030407 3.6773498 --8.6618423 -8.0441532 3.6746988 --9.97367 -9.1491737 4.2028103 --0 -0 0 --8.7123108 -7.7973137 3.6349359 --8.7241917 -7.7120614 3.6202087 --10.469459 -9.1411285 4.3150306 --10.559363 -9.1060505 4.3288736 --9.2873468 -7.9101973 3.791337 --10.018002 -8.4270353 4.0661435 --10.575972 -8.7861738 4.2690821 --9.7084179 -7.9652214 3.9017897 --10.164737 -8.2357941 4.0634928 --10.214333 -8.1726723 4.0631981 --0 -0 0 --10.328171 -8.0578804 4.0687943 --10.767289 -8.2947168 4.2204828 --10.600451 -8.0630236 4.1362443 --9.9566584 -7.4773111 3.8690958 --9.9670401 -7.3898945 3.855547 --10.006798 -7.3246474 3.8534851 --10.169287 -7.3481874 3.8982553 --10.38923 -7.4105186 3.9645269 --0 -0 0 --11.24372 -7.8136635 4.2514095 --11.370258 -7.7985811 4.2808638 --11.389406 -7.7093825 4.2702603 --11.143272 -7.4434743 4.1615748 --10.787399 -7.1104064 4.0134206 --5.6036668 -3.6442544 2.0915425 --5.6275306 -3.6108348 2.0921314 --5.658462 -3.5818598 2.0953715 --5.6908708 -3.5536535 2.0992005 --5.7443004 -3.5382161 2.1106875 --5.7634521 -3.5014143 2.1098039 --5.8577843 -3.509702 2.136018 --5.830668 -3.4450092 2.1186402 --0 -0 0 --6.2462187 -3.5878906 2.251478 --6.2257075 -3.5254788 2.2364564 --5.9802098 -3.3381464 2.1422033 --6.0767698 -3.3433137 2.1690066 --6.088769 -3.3014088 2.1660612 --6.0161982 -3.2144434 2.1336617 --6.097537 -3.2099688 2.1551633 --5.9321866 -3.076571 2.0909534 --6.3747478 -3.2566457 2.2376347 --7.3703284 -3.7084715 2.5742946 --7.404932 -3.6691189 2.5784183 --7.4006815 -3.6106229 2.5692875 --7.4666286 -3.5862484 2.5843091 --7.3589029 -3.4790924 2.540128 --7.3896422 -3.4383085 2.5433679 --6.4600458 -2.9576414 2.2211404 --6.9799433 -3.1440406 2.3907957 --6.9929876 -3.0984433 2.3887341 --7.1494083 -3.1154194 2.4349768 --7.1200786 -3.0507898 2.4187772 --0 -0 0 --0 -0 0 --7.0537605 -2.8698699 2.3784251 --7.076561 -2.8286633 2.3801923 --7.0244017 -2.7579441 2.3572183 --12.704009 -4.8984709 4.2278461 --12.704332 -4.8092628 4.2181263 --12.703146 -4.7199025 4.2081122 --12.756108 -4.6507072 4.2160649 --12.75831 -4.5630164 4.2075229 --11.469485 -4.02282 3.7774935 --11.64758 -4.0052018 3.8275654 --7.6429982 -2.5756907 2.5171537 --6.9898758 -2.3078907 2.3000772 --6.992085 -2.2611351 2.2962482 --0 -0 0 --7.0503411 -2.1847801 2.3062625 --7.0892205 -2.1492436 2.3145096 --7.3661413 -2.1839514 2.3993375 --7.9310336 -2.2986171 2.5763564 --7.5312271 -2.1327176 2.4438131 --7.5745659 -2.0948746 2.4535329 --7.3058858 -1.9723755 2.363698 --7.3723726 -1.9418744 2.3810759 --0 -0 0 --9.4592047 -2.3679128 3.0367236 --9.4837685 -2.3123181 3.0399635 --9.5740223 -2.2721813 3.064116 --9.8820238 -2.2813325 3.1571908 --13.232113 -2.9694583 4.2110577 --10.272488 -2.2390759 3.2717671 --10.337455 -2.1868832 3.287967 --10.414336 -2.1364741 3.3079956 --12.434939 -2.4716594 3.9389019 --12.569051 -2.418247 3.9763086 --11.968271 -2.2265737 3.7833843 --12.024034 -2.1607032 3.7966387 --12.027649 -2.0852516 3.7936933 --12.058126 -2.0144045 3.7992897 --0 -0 0 --14.57052 -2.2507696 4.5754046 --13.66805 -2.0255497 4.2899942 --13.715229 -1.9466156 4.3008924 --13.671044 -1.8548419 4.2835145 --13.692594 -1.7722727 4.2867546 --0 -0 0 --13.730395 -1.606109 4.2920561 --14.610034 -1.6182204 4.5618558 --13.450628 -1.4062837 4.1995707 --0 -0 0 --13.39455 -1.2344506 4.1771855 --13.406633 -1.1526494 4.178658 --13.430601 -1.0717349 4.18396 --0 -0 0 --14.557347 -0.98206294 4.5282779 --26.00354 -1.5943285 8.0609999 --14.639867 -0.80729616 4.5503683 --12.228724 -0.59903485 3.8048859 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.7189627 12.959994 4.817697 --9.6523829 13.037113 4.824214 --9.5772991 13.103063 4.8267641 --9.5893011 13.289908 4.8735161 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --7.8926206 12.153441 4.3130579 --0 0 0 --7.7459593 12.254245 4.3147578 --7.7122264 12.368276 4.3379922 --7.690948 12.504407 4.3688769 --7.6115913 12.547263 4.3674603 --7.5580897 12.633235 4.3810611 --7.4887142 12.693416 4.3858776 --7.4270816 12.767312 4.3955116 --7.3619609 12.835938 4.4034452 --0 0 0 --7.4401007 13.349206 4.5468183 --7.3862133 13.445882 4.5641022 --0 0 0 --0 0 0 --7.1606655 13.623705 4.5788364 --0 0 0 --7.4730501 14.65204 4.8910837 --0 0 0 --0 0 0 --7.1655593 14.712099 4.8664322 --7.0656176 14.7359 4.8599153 --0 0 0 --6.8878884 14.829325 4.8624654 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.9983459 13.480413 4.2793398 --4.8834119 13.422506 4.2515717 --4.7613211 13.341119 4.2167201 --4.5878377 13.108478 4.1348333 --4.5213218 13.177202 4.147584 --4.3777361 13.018347 4.089498 --4.3067751 13.072289 4.0979981 --4.2947884 13.310217 4.1637344 --4.2806196 13.550311 4.2300377 --3.9872653 12.896462 4.0197949 --3.9000096 12.894064 4.0115781 --3.8118463 12.887403 4.0022273 --3.7500072 12.970434 4.0206451 --3.6729577 13.002429 4.0234785 --3.954124 14.333823 4.424696 --3.8785627 14.404118 4.4388633 --3.7784154 14.383121 4.4252629 --3.6596406 14.287117 4.3889947 --3.9355171 15.766443 4.8327141 --3.1995857 13.160494 4.033112 --3.3443849 14.133675 4.3226914 --3.3676915 14.632445 4.4677649 --3.3000293 14.75204 4.4977994 --3.2405918 14.915398 4.5411515 --3.1863928 15.112359 4.5947037 --3.0215967 14.779277 4.4884491 --3.0813487 15.557671 4.7173924 --2.8062553 14.639112 4.4354634 --0 0 0 --2.5934629 14.488361 4.3802109 --2.5019054 14.488881 4.3756771 --2.3854272 14.338405 4.3260918 --2.2695274 14.178528 4.2739563 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --1.2493594 13.65657 4.0832644 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.82194906 14.652458 4.3674603 -0.91148144 14.641396 4.3657603 -1.0039891 14.674755 4.3773775 -1.1057233 14.825161 4.4238462 -0 0 0 -0 0 0 -1.2319305 13.230565 3.9574587 -1.3975085 14.072098 4.2096367 -1.4841291 14.066119 4.2104869 -0 0 0 -0 0 0 -0 0 0 -1.8118825 13.895179 4.1716681 -2.0493684 14.997408 4.5037498 -2.1357868 14.945627 4.4921327 -2.2125866 14.832647 4.4623814 -0 0 0 -2.2259254 13.763005 4.1507006 -2.5470836 15.157303 4.5726027 -2.392179 13.720482 4.1464505 -2.7980623 15.485407 4.680841 -2.9059021 15.53676 4.7015252 -2.9492629 15.250294 4.6207714 -3.0704081 15.370152 4.6624231 -3.1026747 15.050463 4.5717525 -3.1913741 15.014257 4.5666523 -3.3560855 15.326021 4.6669569 -3.466305 15.377175 4.6887746 -3.5627592 15.36496 4.691608 -0 0 0 -0 0 0 -0 0 0 -3.5118711 13.618104 4.1866856 -3.574518 13.517493 4.162601 -3.6907666 13.618411 4.2002864 -3.7950435 13.670357 4.223237 -0 0 0 -0 0 0 -0 0 0 -4.6297302 15.217217 4.7309933 -0 0 0 -4.7803955 15.046838 4.6961417 -4.8714466 15.013574 4.6950083 -4.9571424 14.964284 4.6890578 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -17.876446 -2.4430115 5.3622875 -18.946239 -2.7078075 5.686152 -17.829945 -2.659934 5.3577542 -17.813288 -2.7692864 5.3577542 -17.788385 -2.8773091 5.3554873 -18.720871 -3.146198 5.6402502 -18.704992 -3.261667 5.6413836 -18.70067 -3.3792775 5.6462002 -0 -0 0 -18.098507 -3.5003045 5.4778929 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9672441 -2.2640309 2.4786766 -7.943994 -2.3101952 2.4758432 -0 -0 0 -0 -0 0 -0 -0 0 -8.0000677 -2.5410511 2.5115447 -7.9606085 -2.5823934 2.5041778 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.3195152 -2.078958 1.4478642 -4.2911711 -2.0978374 1.4427639 -4.3117142 -2.140769 1.4538145 -4.3216157 -2.1788476 1.4614648 -4.2671943 -2.1843381 1.4478642 -4.2562633 -2.2118073 1.4487143 -4.2663598 -2.2504153 1.4566479 -4.3294001 -2.3177588 1.4824324 -4.3108845 -2.34199 1.4810157 -4.2913942 -2.3656178 1.4793156 -4.2801461 -2.3937781 1.480449 -4.1961551 -2.3806996 1.4569312 -4.1681709 -2.3987451 1.4523977 -4.172421 -2.4353991 1.4589148 -4.0592065 -2.4027977 1.4251965 -4.0904264 -2.4553103 1.4410639 -4.0457964 -2.4624054 1.4308635 -4.0077629 -2.4730768 1.4229298 -4.3859606 -2.7438896 1.5600692 -4.3609438 -2.7656116 1.5572357 -4.2591991 -2.7378485 1.5274844 -3.8309767 -2.4957988 1.3824114 -3.9860282 -2.6318533 1.4427639 -3.8582361 -2.5815694 1.4030956 -3.8375614 -2.6019642 1.4013954 -3.8207335 -2.6249189 1.4011121 -4.5018039 -3.1339235 1.6521566 -3.8650253 -2.7257929 1.42888 -3.9332666 -2.8102472 1.4597647 -4.1311064 -2.9901369 1.5382515 -3.6247454 -2.6574993 1.3594602 -3.6037524 -2.6762586 1.3577602 -3.9665594 -2.9837806 1.4980165 -4.0229216 -3.065038 1.5257844 -4.0139074 -3.0972831 1.5294678 -3.446327 -2.6930099 1.3237587 -3.1688387 -2.5075297 1.2254376 -3.1870623 -2.5539227 1.2381883 -3.1854775 -2.5849154 1.2435719 -3.1954844 -2.6257296 1.2534889 -3.2065833 -2.6679902 1.2639728 -3.2436802 -2.7327366 1.284657 -3.2049677 -2.7339103 1.2761565 -3.5886726 -3.0996578 1.4325635 -4.0329528 -3.5270383 1.6144716 -3.0464225 -2.6970534 1.2336547 -4.1578593 -3.727375 1.6813412 -3.0684769 -2.7845192 1.2557557 -3.1508851 -2.8948059 1.2957075 -3.1597414 -2.9389117 1.3064746 -4.2954803 -4.04531 1.7748454 -4.2754354 -4.0762239 1.7768288 -2.6842716 -2.5902238 1.1336336 -2.6580408 -2.5965898 1.1293834 -2.6393316 -2.6101522 1.12825 -3.0026782 -3.0063889 1.2869238 -3.4696555 -3.5171118 1.4912162 -2.8538125 -2.9282813 1.2396049 -3.6762414 -3.8192749 1.5977542 -3.927572 -4.1309452 1.7156261 -3.4525292 -3.6760163 1.5215341 -3.4018693 -3.6668932 1.5093503 -3.2601192 -3.5575731 1.4572146 -2.8399637 -3.137301 1.2818235 -3.3382707 -3.7338951 1.5113337 -3.3451245 -3.7881012 1.5246509 -2.7080014 -3.1044667 1.248672 -2.6275778 -3.049804 1.2209041 -2.5988746 -3.0541801 1.2163706 -2.7571039 -3.2808306 1.2976909 -3.0908144 -3.7243261 1.4614648 -2.5385704 -3.097048 1.2146705 -2.5894868 -3.1990547 1.2475387 -2.5524502 -3.1931541 1.2393216 -2.5351853 -3.2117674 1.240455 -2.5113051 -3.2219665 1.2384716 -1.9190785 -2.4931109 0.96107596 -1.8735843 -2.4651246 0.94634199 -1.8601491 -2.4788761 0.94719201 -1.8466158 -2.4925556 0.94804204 -1.835248 -2.5092592 0.9500255 -1.837772 -2.5453608 0.95909256 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -1.9223447 -3.1237788 1.1152161 -1.5062653 -2.4811699 0.88910609 -1.5269505 -2.5504458 0.90979034 -1.5141959 -2.5647233 0.91149044 -0 -0 0 -1.56371 -2.7245414 0.95965922 -0 -0 0 -1.5647026 -2.8055174 0.98062682 -1.5506905 -2.8209496 0.98261023 -1.5319828 -2.8278811 0.9817602 -1.5231775 -2.8533053 0.98714381 -1.1077017 -2.1053472 0.73439926 -1.0996126 -2.1214726 0.73751605 -1.0817825 -2.1187818 0.73439926 -1.1234246 -2.2342191 0.77038419 -1.5612063 -3.1539955 1.0712975 -1.5409846 -3.1617911 1.0707308 -1.220991 -2.5442207 0.86530507 -1.2008553 -2.5421243 0.86218822 -0 -0 0 -1.4728909 -3.220463 1.0778145 -1.4629334 -3.2513072 1.0848981 -1.4476104 -3.2707474 1.0882983 -0.97850591 -2.2470894 0.75565016 -0.98656887 -2.3041945 0.77208424 -0 -0 0 -0 -0 0 -0 -0 0 -1.1752385 -2.9432356 0.96787626 -0 -0 0 -1.160037 -3.0120349 0.98516035 -0.91958904 -2.4314556 0.79956883 -0.90631926 -2.4415483 0.80098552 -0 -0 0 -0.85501927 -2.3928723 0.78228468 -0.83081901 -2.3709173 0.77378434 -0.81687802 -2.3777847 0.774351 -0.81205189 -2.4118412 0.78341812 -1.0219465 -3.0990298 0.99564415 -0.93666822 -2.899883 0.93189132 -0.91452509 -2.8918583 0.92764115 -0.89138305 -2.8800066 0.9222576 -1.2306463 -4.0659328 1.2866404 -0.80077219 -2.7040379 0.86473835 -0.71945906 -2.4850223 0.79588532 -2.1892292 -7.7482171 2.4103901 -2.0297203 -7.3556457 2.2860014 -0.89944184 -3.336849 1.0525967 -0.88430941 -3.3627114 1.0588303 -0.79871422 -3.1144454 0.98147684 -0.77378452 -3.0960255 0.97439325 -0.72669005 -2.9851604 0.93925834 -0.90416867 -3.8173687 1.1905861 -0.8850292 -3.8415368 1.1962531 -0.75156671 -3.3555458 1.0474964 -0.62145966 -2.8558967 0.89505637 -0 -0 0 -1.6718701 -8.1748495 2.4968107 -0.66023725 -3.328764 1.0341792 -0.63474649 -3.3063796 1.0262455 -0.54858696 -2.9547117 0.91942412 -0.58939499 -3.2874873 1.0183119 -0.41556242 -2.4008093 0.75139999 -0.41403741 -2.4827805 0.77520108 -0 -0 0 -1.2914627 -8.394908 2.5410128 -1.1593639 -7.8561864 2.3778055 -1.1482676 -8.1261921 2.4562922 -0.36666042 -2.7091048 0.83923721 -0.33081689 -2.5619688 0.79475194 -0.39282465 -3.1988745 0.98374361 -0.28341195 -2.4286602 0.75395012 -0.26672214 -2.4141479 0.74913323 -0.25893331 -2.4834654 0.76925081 -0.2806693 -2.8639374 0.88173914 -0.68085206 -7.4364133 2.2378325 -0.73194492 -8.5756502 2.5744474 -0.20176166 -2.5378299 0.78370142 -0.18528001 -2.5265858 0.78001791 -0.16888015 -2.5142787 0.7760511 -0.47131333 -7.7658672 2.3302033 -0.17707089 -3.2343638 0.9885605 -0.14220688 -2.9240704 0.89647311 -0 -0 0 -0 -0 0 -0.083876245 -2.7756937 0.85198778 -0.067228854 -2.7924547 0.85680467 -0.050580457 -2.820622 0.86502171 -0 -0 0 -0.018215202 -3.2506642 0.99196064 --0.00169653 -3.2123542 0.98062682 --0.024286063 -3.6217737 1.1016155 --0.047392238 -3.6886821 1.1214497 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --3.3269718 -8.1557379 2.6339502 --3.3258288 -8.0120592 2.5945652 --3.3685825 -7.9764838 2.5897481 --3.4159472 -7.9521399 2.5886147 --1.4569523 -3.3368294 1.1072824 --1.4411834 -3.2463222 1.0809313 --1.4610754 -3.2374179 1.0809313 --1.4925165 -3.2536671 1.0891483 --3.5832558 -7.6828346 2.5361958 --3.680037 -7.7655592 2.5704806 --3.7076428 -7.7013588 2.55688 --1.7033963 -3.4848371 1.1775522 --3.8249123 -7.7016592 2.5721807 --1.6367487 -3.2470446 1.1058657 --1.6019918 -3.130245 1.0704474 --1.6132047 -3.1050408 1.0653472 --1.6375983 -3.1052616 1.0687474 --4.052114 -7.5671806 2.5676472 --4.2056441 -7.7393384 2.6339502 --0 -0 0 --1.9390413 -3.467521 1.2053201 --1.8670125 -3.2912588 1.149501 --4.3809109 -7.6105251 2.6260164 --4.3951216 -7.5280161 2.6070323 --2.0215995 -3.4155896 1.2041868 --1.9956112 -3.3250182 1.1772689 --1.9521285 -3.2078671 1.1410006 --1.9763093 -3.2031727 1.1435508 --2.1592572 -3.4519293 1.2345047 --2.3222051 -3.662112 1.3127083 --2.3539691 -3.6623132 1.3178084 --5.3447008 -8.2014961 2.9238129 --5.3848801 -8.1533442 2.9184294 --0 -0 0 --5.4226131 -7.9953818 2.8858447 --5.456902 -7.9406204 2.8781943 --5.4951081 -7.892036 2.8728106 --5.5174427 -7.8213415 2.8594935 --0 -0 0 --2.3736527 -3.279799 1.2277044 --5.5169611 -7.52282 2.787807 --5.4257426 -7.30408 2.7198038 --5.7011323 -7.5771527 2.8331423 --2.434824 -3.1961524 1.2186373 --2.4596636 -3.1879845 1.2211875 --5.8845296 -7.5283484 2.8546765 --5.9300165 -7.4913483 2.8543932 --6.0844569 -7.5902462 2.9056787 --2.5861244 -3.1869664 1.2441385 --2.6111121 -3.1777055 1.2466886 --2.6686037 -3.2073202 1.2642561 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --8.648077 -9.1809387 3.7579832 --8.7174854 -9.1415815 3.7636502 --8.7114611 -9.0237589 3.737299 --0 -0 0 --8.7952318 -8.8895912 3.7262485 --0 -0 0 --0 -0 0 --0 -0 0 --9.9513187 -9.5760145 4.1118822 --8.6480761 -8.220541 3.5568078 --8.6976547 -8.166667 3.5565243 --8.7490063 -8.1144495 3.557091 --10.113316 -9.2647858 4.0838308 --8.8386793 -7.9981103 3.5534074 --8.9276342 -7.9795122 3.5692749 --9.2453346 -8.1619329 3.6752462 --9.3436747 -8.147274 3.6942306 --9.2190723 -7.9396081 3.6262274 --9.3406715 -7.9450202 3.654562 --10.047233 -8.4402008 3.9084399 --10.585999 -8.7824926 4.095448 --9.7056675 -7.952239 3.7387156 --10.178519 -8.2357388 3.8999395 --10.049035 -8.0294695 3.8319366 --11.558808 -9.1199656 4.3816276 --10.697592 -8.334589 4.0382123 --11.69418 -8.9961452 4.3906946 --11.75145 -8.9259615 4.3915448 --10.062725 -7.5465703 3.7477827 --10.123486 -7.4955258 3.7531664 --10.190192 -7.4485464 3.7608168 --10.328256 -7.4526505 3.7945349 --10.291766 -7.3307247 3.7647836 --10.321647 -7.256959 3.7593999 --5.8242869 -4.0424013 2.1261942 --5.8371115 -3.9984608 2.1219442 --10.728403 -7.2515345 3.8574376 --5.8705797 -3.9164195 2.1165605 --5.8520408 -3.8523841 2.1015432 --5.8321338 -3.788202 2.0862424 --11.435295 -7.3269711 4.0441628 --11.452474 -7.2392478 4.0345287 --11.512954 -7.1789875 4.0401959 --6.5392981 -4.0227132 2.2998853 --6.0046306 -3.6433282 2.1066434 --6.5758252 -3.9347785 2.2956352 --5.9563732 -3.5147972 2.0749087 --5.9338903 -3.4526289 2.0598912 --5.9716024 -3.4256954 2.0655582 --6.2012224 -3.5069778 2.1363947 --6.2125716 -3.4632599 2.1329947 --6.9826617 -3.8364241 2.3854558 --6.107852 -3.3073297 2.0836923 --0 -0 0 --6.109776 -3.2120523 2.0709419 --5.9956598 -3.1052814 2.0264566 --6.3503585 -3.2396522 2.1378114 --6.4532466 -3.2423768 2.1652961 --6.4334769 -3.1831622 2.1522622 --6.4770298 -3.1553836 2.1601958 --7.4457979 -3.5707812 2.4713097 --7.3478794 -3.46855 2.4322078 --7.3733726 -3.4254186 2.4336245 --6.9816704 -3.191582 2.299602 --7.0054955 -3.1506493 2.3010187 --7.6649718 -3.3907351 2.5078611 --7.6592493 -3.332166 2.4993608 --0 -0 0 --0 -0 0 --0 -0 0 --7.1318207 -2.8967946 2.3058355 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --12.850957 -4.7650113 4.0809975 --12.948448 -4.7109833 4.1025319 --12.820848 -4.5756907 4.0535131 --12.808854 -4.4830012 4.0410457 --7.2599745 -2.4915791 2.2993186 --9.5749588 -3.2201416 3.0161836 --7.0577278 -2.3257976 2.2270653 --7.0645642 -2.280093 2.2247987 --7.0948825 -2.2419014 2.2298989 --0 -0 0 --7.8424673 -2.3725576 2.4523253 --7.8154931 -2.3121557 2.4395747 --7.5402422 -2.1805449 2.3506043 --7.4971814 -2.1183398 2.3333201 --12.676182 -3.4969888 3.916657 --9.3812017 -2.526479 2.9019954 --7.9189153 -2.0808289 2.4506254 --9.4096413 -2.4106913 2.9014287 --7.8470836 -1.9593472 2.4211574 --7.9372368 -1.9301856 2.4449584 --9.8835888 -2.3390706 3.0323343 --9.543541 -2.196888 2.9249463 --9.6682129 -2.1631935 2.9586644 --9.5866499 -2.0832725 2.9300466 --13.307814 -2.8060536 4.0498295 --16.924376 -3.4599841 5.1353278 --12.136136 -2.403944 3.6868634 --12.683763 -2.4315834 3.8472373 --12.704102 -2.3547597 3.8489373 --13.471644 -2.4115512 4.0750475 --13.541 -2.3383057 4.0914812 --13.977021 -2.3253353 4.2178535 --14.432317 -2.3101296 4.3498926 --13.70118 -2.1070209 4.127183 --14.568687 -2.1489339 4.3824778 --13.566472 -1.916208 4.0795808 --14.116856 -1.9056277 4.2402382 --12.166956 -1.5666224 3.6559787 --13.998295 -1.7150004 4.1983027 --0 -0 0 --13.447279 -1.4802841 4.0285788 --13.435122 -1.3955672 4.0223451 --14.478093 -1.4140753 4.3294921 --0 -0 0 --0 -0 0 --12.183281 -0.96410418 3.6423781 --0 -0 0 --0 -0 0 --0 -0 0 --12.221466 -0.66581059 3.6477618 --12.225322 -0.59080851 3.6477618 --12.2268 -0.51570362 3.6471951 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.6164227 12.969851 4.6066418 --9.5917854 13.103917 4.6330857 --9.6295414 13.326287 4.6903353 --9.516861 13.342043 4.6753411 --0 0 0 --9.3463774 13.449134 4.6723423 --0 0 0 --9.6773624 14.296613 4.9234219 --8.1625042 12.219631 4.1955366 --0 0 0 --0 0 0 --7.9003439 12.311934 4.1767263 --7.8272238 12.364243 4.1780896 --7.7838283 12.464264 4.1955366 --0 0 0 --7.6947346 12.664915 4.2307043 --7.6010537 12.685481 4.2219806 --7.5338421 12.750104 4.2279782 --7.4617643 12.806898 4.2315221 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --7.355269 13.564284 4.4038157 --7.2678204 13.601523 4.4013619 --7.1766062 13.63139 4.3967276 --7.0941596 13.67773 4.3975453 --0 0 0 --0 0 0 --0 0 0 --7.1955614 14.747843 4.6813388 --7.1049347 14.791717 4.6813388 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --5.0276985 13.531475 4.1219306 --4.9406214 13.551223 4.118659 --0 0 0 --4.6236391 13.182308 3.9899843 --4.5279608 13.167668 3.9771714 --4.4400125 13.174234 3.9709013 --4.335259 13.129056 3.9493644 --4.7209597 14.597211 4.3787351 --4.3446136 13.720598 4.109663 --4.3056321 13.893118 4.1530089 --4.1831722 13.796819 4.1167507 --3.8421361 12.957918 3.8613095 --3.8003252 13.111546 3.8997483 --4.3724041 15.438703 4.57829 --3.6919811 13.348217 3.9559073 --3.8966897 14.432302 4.2675076 --3.8119831 14.470825 4.2718692 --0 0 0 --3.5848112 14.319585 4.2143474 --3.490726 14.316073 4.2069869 --3.1755037 13.37958 3.9281003 --3.4455223 14.924057 4.3716469 --3.3422968 14.893285 4.3566527 --3.2500305 14.909753 4.3555627 --3.1576881 14.925649 4.3544722 --3.1731818 15.466881 4.5055013 --2.8992507 14.585812 4.2454257 --0 0 0 --2.7020895 14.523811 4.2176189 --2.5974345 14.453945 4.1928105 --0 0 0 --2.4078159 14.41261 4.172092 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.91078293 14.79216 4.2309771 -1.0014638 14.785334 4.2307043 -1.1006011 14.893091 4.2631454 -0 0 0 -1.2901394 14.958025 4.2857728 -0 0 0 -0 0 0 -1.4857255 14.172935 4.0695882 -1.6060988 14.464771 4.1554623 -0 0 0 -1.7389249 14.08303 4.0524135 -1.7964736 13.849782 3.9888937 -0 0 0 -2.1522479 15.134535 4.3631959 -2.2159684 14.924995 4.3070369 -0 0 0 -2.3809066 14.784592 4.274868 -2.3205879 13.86727 4.0156102 -2.4023404 13.833811 4.0101581 -2.4779761 13.767676 3.9954367 -2.8846943 15.482171 4.4940515 -2.9255798 15.183589 4.4130845 -3.0252626 15.198379 4.422626 -2.8296247 13.773401 4.015883 -3.2428434 15.307884 4.4654269 -3.0263317 13.865479 4.0529585 -3.4251778 15.243468 4.4586115 -3.2231205 13.943537 4.0867629 -3.3017211 13.89448 4.0783119 -3.3755064 13.827225 4.0646811 -0 0 0 -3.5245674 13.705558 4.0415087 -3.5649309 13.518076 3.9929831 -3.6917372 13.658487 4.0406909 -3.809104 13.757047 4.0764036 -3.9052517 13.77507 4.0886712 -4.4867039 15.463987 4.5941014 -4.5659018 15.383592 4.5785623 -0 0 0 -4.6998968 15.150887 4.5264926 -4.7913194 15.117177 4.5251298 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -18.924847 -2.2188385 5.4307604 -18.938566 -2.3383358 5.4386663 -0 -0 0 -0 -0 0 -0 -0 0 -17.909508 -2.6590116 5.1619611 -17.859577 -2.7637031 5.1524196 -17.287548 -2.7839158 4.9932117 -0 -0 0 -17.191416 -2.9853172 4.9757643 -17.971968 -3.2345657 5.205852 -18.079472 -3.3685672 5.2426553 -18.457148 -3.5562458 5.3576994 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9619851 -2.2574034 2.3766422 -7.9489083 -2.3064828 2.3769147 -0 -0 0 -0 -0 0 -0 -0 0 -8.0192308 -2.5418482 2.4153538 -7.9641228 -2.578265 2.4036312 -7.9892616 -2.6406689 2.4158988 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.3128614 -2.1388626 1.3957695 -4.3761382 -2.2037935 1.4200323 -4.34026 -2.2192171 1.4129442 -4.4170823 -2.2927847 1.4418415 -0 -0 0 -0 -0 0 -4.3504529 -2.360853 1.4342083 -14.025976 -7.7222481 4.5684757 -4.3161139 -2.411247 1.4325726 -4.2384567 -2.4021108 1.4121264 -13.985727 -8.0390434 4.6025529 -4.5037341 -2.6259599 1.5089051 -4.4726291 -2.644731 1.503998 -4.2236147 -2.5326138 1.4271203 -3.6703188 -2.2316296 1.2488294 -3.5861182 -2.2106946 1.2253844 -3.5765657 -2.2352061 1.2267474 -4.3536348 -2.7580314 1.4920028 -4.377111 -2.8106828 1.5056337 -3.9146399 -2.547821 1.3551496 -3.9302571 -2.5924511 1.3657817 -3.8710806 -2.5876486 1.3510604 -3.8527405 -2.6097341 1.3502425 -3.457459 -2.3731065 1.2199321 -3.5589542 -2.4750156 1.2600065 -3.4587526 -2.4369652 1.230564 -4.3044076 -3.0723729 1.5301691 -4.2199802 -3.0513761 1.5072694 -3.6880937 -2.7014544 1.3270701 -3.6351304 -2.6970921 1.3142571 -3.691586 -2.7742512 1.3401557 -3.0390217 -2.3132427 1.1138843 -3.0415356 -2.344768 1.1198819 -3.0619786 -2.3906188 1.1324222 -3.0615931 -2.4206982 1.137602 -3.0887439 -2.4731095 1.1528685 -3.1482506 -2.5526023 1.1801301 -3.1600444 -2.5944579 1.1902169 -3.1825407 -2.6457787 1.2043929 -3.2023163 -2.6956134 1.2177511 -3.1930392 -2.7214518 1.2204772 -3.6388521 -3.1400979 1.3935885 -3.9383357 -3.4408731 1.5135396 -3.0624082 -2.7090123 1.1902169 -3.0292428 -2.7129903 1.1839467 -2.99757 -2.7179561 1.1782218 -3.2728775 -3.004329 1.2905396 -3.9669669 -3.6864569 1.5661545 -3.0963039 -2.9130831 1.236289 -2.6470878 -2.5213211 1.0675396 -2.6308749 -2.5368481 1.0672671 -2.9347458 -2.8647504 1.1937609 -2.8171885 -2.783977 1.1539589 -2.8694389 -2.8706112 1.1817658 -3.3730147 -3.4159586 1.3919528 -3.3654282 -3.4503646 1.3974051 -3.3028021 -3.4279957 1.3805029 -3.2757359 -3.4419248 1.3780494 -2.8676879 -3.0505054 1.2180237 -2.8842726 -3.1061122 1.2327449 -2.8918262 -3.1528196 1.2439222 -2.9053748 -3.2068648 1.2578256 -7.0686097 -7.8981495 3.0350101 -2.8664401 -3.2429976 1.2580982 -2.3453004 -2.6865408 1.0421864 -2.8100903 -3.2589855 1.2510103 -2.9509993 -3.4651358 1.3213452 -2.3728733 -2.8212864 1.0762633 -2.5989923 -3.1288486 1.1842194 -2.5504515 -3.1090345 1.1711338 -3.6415894 -4.4948444 1.6708391 -2.5006859 -3.1258249 1.165954 -2.48981 -3.1516786 1.1697707 -2.4804862 -3.1797919 1.1744051 -2.4491849 -3.1797087 1.1689528 -2.4389484 -3.2069287 1.1733147 -1.8824648 -2.5071387 0.92005432 -1.8842374 -2.5418277 0.92823279 -1.8509883 -2.5292745 0.91978168 -1.8467046 -2.5561807 0.92523402 -1.8645091 -2.6144595 0.94159096 -1.879451 -2.6699047 0.9568575 -2.0705838 -2.9800298 1.0599064 -2.0577018 -3.0006127 1.0626326 -1.995026 -2.9478493 1.040278 -1.9950718 -2.9872363 1.049547 -1.8930405 -2.8725004 1.0064737 -1.8423309 -2.8332503 0.98929882 -1.8909039 -2.9473376 1.023921 -1.8717545 -2.9572587 1.0233759 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -1.5543251 -2.6683521 0.90669614 -1.5455915 -2.6911874 0.91105795 -0 -0 0 -0 -0 0 -0 -0 0 -1.5033892 -2.773133 0.92550665 -1.4836246 -2.7772141 0.92387092 -0 -0 0 -1.1291419 -2.1777213 0.72676951 -1.1175095 -2.1880355 0.72785997 -1.1243898 -2.2352448 0.74067289 -1.0982645 -2.2171018 0.73276705 -1.5453639 -3.1680307 1.0304638 -1.5242298 -3.1739843 1.0293734 -1.266603 -2.6796665 0.87152863 -1.6670179 -3.5832407 1.1515054 -1.6401935 -3.5829046 1.148234 -1.4790728 -3.284121 1.0522732 -1.4452511 -3.2623477 1.0427315 -0 -0 0 -0.9598158 -2.240736 0.72240764 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -1.1553363 -3.0528092 0.95658487 -0.91841763 -2.4727221 0.7791118 -0.91179717 -2.5018125 0.78619981 -0.85333306 -2.3868732 0.74994189 -0.83835298 -2.3911564 0.74966925 -0.82429111 -2.3980751 0.75021446 -0.81079048 -2.4067345 0.75130492 -1.0735724 -3.2521722 1.0021118 -0.8247202 -2.5510712 0.79137951 -0.87179244 -2.754205 0.85026461 -1.2405409 -4.0038204 1.2193868 -0 -0 0 -0.77253324 -2.6065168 0.80201155 -0 -0 0 -2.3042157 -8.1367207 2.4278941 -0.91834593 -3.3213332 1.0081093 -0.89970505 -3.3334074 1.0100176 -0.87653852 -3.3286312 1.0070188 -0.79648799 -3.1019127 0.93913746 -0.77370119 -3.0918086 0.93477559 -0.73169333 -3.0020897 0.90724134 -1.8302795 -7.712358 2.2776825 -0.88679457 -3.8423679 1.1490518 -0.74394536 -3.3163939 0.9947511 -0.63648468 -2.9213777 0.87888926 -1.8113401 -8.5625734 2.5115871 -1.6800596 -8.1899338 2.4006324 -0.63381803 -3.1902165 0.95331347 -0.52387464 -2.7244852 0.81782329 -0.47071487 -2.5318496 0.76139176 -0.47440308 -2.6416955 0.79219735 -0.44980147 -2.5962098 0.77829391 -0.43703422 -2.6179001 0.78374624 -0.42126834 -2.6224325 0.78429151 -0.40693232 -2.636378 0.78756291 -0.38905534 -2.6274045 0.78429151 -0.38185152 -2.6926119 0.80228412 -1.1536301 -8.5038748 2.4633341 -0.39238527 -3.0339136 0.89851761 -1.0489523 -8.515481 2.4627888 -0.28390288 -2.4297805 0.7248612 -0.82794392 -7.476769 2.1631837 -0.28038365 -2.6847475 0.79655921 -0.73556495 -7.4806213 2.1615481 -0.23231331 -2.5241578 0.74994189 -0.21871717 -2.5475831 0.75621206 -0.20407666 -2.5613451 0.75975603 -0.19047691 -2.5913346 0.7679345 -0.21694233 -3.2202549 0.94622546 -0 -0 0 -0.16993554 -3.0872214 0.90778661 -0.15584125 -3.1871858 0.93586606 -0.13228503 -3.0948417 0.90942228 -0.097263031 -2.6590855 0.78565454 -0.077886924 -2.5596182 0.75730252 -0.062415004 -2.5696664 0.76002866 -0.043020103 -2.3718369 0.70386976 -0.030525491 -2.5413773 0.75185019 -0.017621834 -2.9879336 0.87834406 --0.00078264094 -3.634532 1.061542 --0.018985949 -2.9783039 0.87561786 --0 -0 0 --0 -0 0 --0.071123593 -2.868763 0.84481227 --0.087480702 -2.8278825 0.8333624 --0.10557649 -2.8474834 0.83908731 --0.12267359 -2.8381307 0.8366338 --0.1396599 -2.828676 0.83418024 --0.15781184 -2.8421757 0.83826947 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.5506976 -3.7415516 1.1793122 --0 -0 0 --0 -0 0 --3.4637685 -7.9420433 2.486779 --1.5437759 -3.4807246 1.110613 --1.4638876 -3.2466414 1.0408232 --1.4817772 -3.2332246 1.0394602 --1.5446359 -3.3165262 1.0683575 --3.5942547 -7.5963659 2.4129002 --1.7456803 -3.6311791 1.1733147 --0 -0 0 --3.8856223 -7.8357863 2.5099514 --1.6880449 -3.3517997 1.0950738 --1.6047877 -3.1383476 1.0304638 --1.6333209 -3.1463749 1.0361887 --1.6400403 -3.1124594 1.0285555 --4.2715859 -7.9886599 2.5985518 --4.3228173 -7.9665279 2.5999148 --0 -0 0 --4.3780274 -7.8372831 2.5753794 --0 -0 0 --1.906913 -3.3169138 1.1157926 --4.5055542 -7.7279406 2.5663829 --2.0659678 -3.4936893 1.1817658 --1.9488441 -3.2498949 1.1054332 --1.9642504 -3.2304766 1.1029797 --2.2187715 -3.5992231 1.2297462 --2.2688546 -3.6304178 1.2447401 --2.26998 -3.5831034 1.2335628 --5.2745333 -8.2147226 2.7978342 --5.315393 -8.1676884 2.792927 --2.1490958 -3.2579932 1.137602 --2.1514037 -3.2183478 1.1286056 --2.1721895 -3.2066798 1.1291509 --2.1891026 -3.1893246 1.1277878 --2.2152216 -3.1853118 1.1310592 --0 -0 0 --0 -0 0 --0 -0 0 --5.384624 -7.3518734 2.6138182 --0 -0 0 --2.4286368 -3.2316103 1.1771313 --5.6967468 -7.4850311 2.6969662 --2.5039389 -3.2480483 1.1937609 --2.5161252 -3.2227638 1.1902169 --2.5388355 -3.2110384 1.1915799 --2.5849464 -3.2284484 1.203575 --2.6089482 -3.2177584 1.2054833 --2.6310847 -3.2046642 1.2065738 --2.6611536 -3.2010384 1.2112083 --6.6692491 -7.9237733 2.9663107 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --8.7789488 -9.4477406 3.6860173 --8.769515 -9.3222141 3.6582105 --9.2166872 -9.6779146 3.8185089 --8.7730713 -9.0996084 3.6132288 --8.8273964 -9.0442295 3.6126835 --8.9449358 -9.0528612 3.6377642 --9.0146036 -9.0120907 3.6434891 --9.0984821 -8.9850035 3.6549392 --9.1410456 -8.916914 3.650032 --0 -0 0 --10.042142 -9.5582924 3.9599965 --0 -0 0 --10.131892 -9.4094601 3.9496372 --8.7892027 -8.062561 3.4112203 --0 -0 0 --8.8860474 -7.9528136 3.410675 --9.0860519 -8.0319624 3.4679244 --11.128164 -9.7162924 4.2176189 --9.3893967 -8.0970535 3.5448022 --9.526063 -8.1135292 3.5772436 --9.3827686 -7.892652 3.5058181 --10.539599 -8.7559557 3.914197 --9.5830488 -7.8623562 3.5439844 --9.6886711 -7.8500471 3.5649757 --0 -0 0 --11.500927 -9.086977 4.1849051 --10.672756 -8.3267374 3.8673069 --11.752573 -9.0537872 4.2353387 --0 -0 0 --11.826634 -8.8817272 4.2225261 --10.118818 -7.5024357 3.6009612 --10.232981 -7.4902167 3.6249514 --10.348151 -7.4774408 3.6492143 --12.15853 -8.6726217 4.2634182 --12.212302 -8.5984087 4.2636909 --11.379963 -7.9083495 3.9583609 --10.6539 -7.307219 3.6922874 --10.743153 -7.2719131 3.7075541 --10.849173 -7.2470093 3.7285454 --11.62283 -7.6611085 3.9760809 --11.674459 -7.5927954 3.9777167 --5.8753433 -3.7698607 2.0097008 --5.9097447 -3.7409444 2.0135176 --5.9480925 -3.7142956 2.0186973 --5.9724092 -3.6787384 2.0192425 --5.9940467 -3.6415234 2.0189698 --6.0121517 -3.6022034 2.0176067 --6.0275145 -3.5613301 2.0154259 --6.0417714 -3.5199194 2.0129724 --6.0565815 -3.4789474 2.0107913 --6.0761395 -3.4407711 2.010246 --6.1114182 -3.4113967 2.0148807 --6.4036613 -3.5231862 2.102663 --6.2128711 -3.3687074 2.0342364 --6.7535949 -3.6084867 2.20135 --6.2690663 -3.3002803 2.0391433 --6.1781697 -3.2041619 2.0037034 --6.214849 -3.174948 2.0091558 --6.2170243 -3.1281049 2.0037034 --6.8145542 -3.3765543 2.1866288 --6.8195801 -3.3270831 2.1817217 --7.3584838 -3.5343001 2.3447461 --7.3330626 -3.4668744 2.3300247 --7.354197 -3.4218142 2.3300247 --7.0050244 -3.2071881 2.2147081 --7.0210629 -3.162565 2.2136178 --0 -0 0 --0 -0 0 --0 -0 0 --7.2171459 -3.0401082 2.2506936 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --13.11417 -5.0566363 4.0142469 --13.173744 -4.9869752 4.0229707 --13.212213 -4.9090648 4.0254245 --9.4890461 -3.4594746 2.8935223 --9.4955997 -3.3960013 2.8891604 --13.194111 -4.627779 3.9935284 --13.050302 -4.4875984 3.942004 --13.611863 -4.5875168 4.101757 --7.0773973 -2.3367934 2.1435554 --7.1007566 -2.2962842 2.1462815 --7.7586079 -2.4565792 2.3376582 --7.8167276 -2.4223142 2.350471 --10.11392 -3.0664158 3.0262864 --7.6115699 -2.2567308 2.2812266 --10.075937 -2.9203742 3.0042045 --12.541238 -3.5517361 3.7250013 --9.9543028 -2.7531569 2.9581323 --7.9442458 -2.1447492 2.3632839 --9.3760815 -2.4697573 2.7790236 --10.498113 -2.6965842 3.1028914 --9.5139475 -2.3816187 2.810647 --9.5489454 -2.3282123 2.8166447 --8.7495699 -2.0764818 2.5797412 --10.806742 -2.4948471 3.1743169 --8.734026 -1.9598945 2.5680187 --13.289118 -2.8967214 3.8855724 --0 -0 0 --12.157807 -2.4942086 3.5483463 --17.031769 -3.3855045 4.9520464 --12.709968 -2.4453635 3.6991029 --18.451136 -3.4328568 5.3495207 --13.8782 -2.4939549 4.02706 --0 -0 0 --14.178215 -2.3686509 4.1047559 --14.189632 -2.281152 4.1039376 --14.265166 -2.2035921 4.1216578 --13.594129 -2.0145926 3.9256468 --13.777698 -1.9554836 3.9747179 --13.883821 -1.8837168 4.0017066 --13.610779 -1.7616808 3.9204671 --0 -0 0 --12.304038 -1.4392209 3.5418034 --12.347063 -1.3675116 3.5516176 --12.476748 -1.304435 3.5862398 --12.337063 -1.2133478 3.5442569 --12.354814 -1.1385977 3.5472558 --14.563436 -1.25214 4.1734548 --12.314148 -0.98261201 3.5319893 --12.25182 -0.90201753 3.5126336 --12.228325 -0.82488126 3.5044551 --12.210109 -0.74842072 3.4979122 --12.208707 -0.67316878 3.4962766 --12.194349 -0.59734994 3.4910967 --0 -0 0 --12.181532 -0.44695535 3.4856446 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.5579128 12.904791 4.3739557 --9.5486259 13.059047 4.4060597 --9.4920444 13.150267 4.4170222 --9.4464645 13.257792 4.433466 --9.3893709 13.35025 4.4449506 --0 0 0 --0 0 0 --0 0 0 --9.6798267 14.507372 4.7474608 --9.572051 14.538272 4.7383256 --9.5294657 14.668781 4.7615557 --7.9699287 12.434185 4.0252461 --7.8785238 12.459191 4.0176773 --7.8356433 12.561358 4.0349035 --7.833281 12.730887 4.0735331 --7.7890701 12.834832 4.0912819 --7.6402788 12.765585 4.0544796 --7.5647502 12.817213 4.0560455 --7.4893613 12.869228 4.0578728 --0 0 0 --7.6383314 13.503819 4.2267461 --0 0 0 --0 0 0 --7.4436355 13.743994 4.2580671 --7.3064485 13.690613 4.2277899 --7.5978456 14.449508 4.4459944 --7.4695296 14.419565 4.4227648 --0 0 0 --7.4172711 14.759426 4.4981966 --7.2863274 14.723329 4.4736614 --7.1764016 14.727839 4.4616551 --7.1096931 14.821209 4.4765325 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --6.7161517 15.177985 4.5195994 --6.6321383 15.240153 4.5258636 --6.5407796 15.285886 4.5274296 --6.4547234 15.344419 4.5329108 --6.3630314 15.389979 4.5347381 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --5.0356131 13.573686 3.9464214 --4.9452991 13.585279 3.9409401 --0 0 0 --4.5606747 13.023561 3.7629313 --4.5251775 13.180954 3.7999947 --4.4306736 13.168214 3.7885103 --4.3461657 13.18415 3.7853782 --4.716783 14.609701 4.1828966 --4.2465868 13.434392 3.8414953 --4.3702898 14.126974 4.0302057 --4.5407186 15.003576 4.2703347 --3.8764324 13.097434 3.7250848 --4.3951483 15.192632 4.3081813 --3.7553153 13.285219 3.7647583 --0 0 0 --0 0 0 --3.8183124 14.524736 4.092587 --4.0018125 15.612061 4.3896165 --3.3357358 13.352952 3.753274 --3.2473531 13.346905 3.7459657 --3.1889684 13.466152 3.7736328 --3.5210791 15.286947 4.2734671 --3.3567972 14.993626 4.1862893 --3.2499716 14.946022 4.1674967 --3.1510303 14.931678 4.1581006 --3.029947 14.806976 4.1184268 --2.9596772 14.929451 4.1471381 --2.7972834 14.578536 4.0456052 --2.6959858 14.531832 4.0281177 --2.6035359 14.530046 4.0231581 --2.4906657 14.40877 3.9855728 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --1.6130095 13.849237 3.8018217 --1.5291646 13.869429 3.804693 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.0063182 14.746469 4.0283785 -1.0867429 14.605243 3.991837 -1.2336169 15.308412 4.1844625 -1.1675084 13.457905 3.6843674 -0 0 0 -1.5313886 15.446417 4.2288342 -0 0 0 -1.5844963 14.205173 3.8965685 -1.6726445 14.203813 3.8989174 -1.7433637 14.061079 3.8628981 -1.8242445 14.008956 3.8516748 -2.0876586 15.297328 4.2063875 -2.1876233 15.327234 4.218133 -2.2420599 15.048093 4.1455722 -2.3221998 14.955832 4.1241693 -2.2591155 13.983571 3.8618541 -2.5765436 15.3489 4.2400575 -2.4149675 13.8654 3.8373191 -2.4955382 13.825623 3.8305328 -2.8682086 15.350114 4.2541523 -2.9760809 15.403311 4.2737279 -2.750356 13.781132 3.8315771 -3.1255267 15.174644 4.221004 -2.9607913 13.941805 3.8856061 -3.1847765 14.556137 4.0607438 -0 0 0 -3.24176 13.992151 3.9153612 -3.3154721 13.921288 3.9012666 -3.3925676 13.866926 3.8918703 -0 0 0 -3.5232024 13.671882 3.8493257 -3.5611384 13.476417 3.8007777 -4.2887063 15.834929 4.4676585 -4.3635874 15.728321 4.4452114 -4.4410157 15.634393 4.4264188 -4.5570779 15.67637 4.4459944 -4.6240077 15.550034 4.4183273 -4.5859127 15.082674 4.2943478 -0 0 0 -0 0 0 -0 0 0 -4.7568173 14.368097 4.1241693 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -19.051399 -1.1830405 5.1930051 -0 -0 0 -0 -0 0 -18.819519 -1.5168271 5.136888 -18.378048 -1.5947745 5.0196943 -18.366955 -1.7074206 5.0194335 -18.597248 -1.844009 5.0849471 -0 -0 0 -0 -0 0 -20.160229 -2.3745694 5.5205727 -18.941086 -2.3488221 5.1924829 -0 -0 0 -0 -0 0 -0 -0 0 -18.992311 -2.8300321 5.2238045 -17.316721 -2.6889637 4.7701688 -17.293224 -2.7940881 4.768342 -18.012606 -3.0238936 4.9703636 -18.328466 -3.1926935 5.0622392 -0 -0 0 -18.669365 -3.4886775 5.1671653 -18.672251 -3.607928 5.1739511 -0 -0 0 -18.672897 -3.8463395 5.1867409 -18.622507 -3.9552248 5.1794324 -18.62995 -4.0764337 5.1883068 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9429574 -2.2556305 2.264473 -7.9345293 -2.3059423 2.2660389 -0 -0 0 -0 -0 0 -0 -0 0 -8.0163164 -2.5446775 2.3059735 -7.9702501 -2.583988 2.2973602 -7.9927335 -2.6455896 2.3083227 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -13.713062 -7.233243 4.223875 -13.656507 -7.3108692 4.220221 -13.618177 -7.3982134 4.2223091 -13.579289 -7.4853625 4.2243972 -0 -0 0 -3.6129067 -2.0487735 1.1549195 -13.930318 -8.0167198 4.3776097 -3.5699859 -2.0827348 1.1494383 -3.5745833 -2.1149282 1.1549195 -3.6103697 -2.1661375 1.1703191 -4.4430242 -2.7032471 1.4381154 -4.4822145 -2.7649338 1.455864 -3.4864147 -2.1799989 1.1436961 -3.4843855 -2.2085886 1.1473502 -3.4886324 -2.2414114 1.1530924 -3.4998863 -2.2791123 1.1611837 -3.8676622 -2.5526919 1.2849025 -3.8182313 -2.5538261 1.27394 -4.7852001 -3.2436228 1.5949823 -4.1008716 -2.8164334 1.377039 -4.1627374 -2.8966994 1.4031399 -4.1511955 -2.9266384 1.405228 -3.4851928 -2.4890263 1.1898948 -3.4362309 -2.4860239 1.1786714 -3.420912 -2.5070615 1.1786714 -3.4093394 -2.5308826 1.1799765 -3.3104343 -2.4890761 1.1517874 -3.926255 -2.9902732 1.3663375 -3.0824704 -2.377351 1.0844468 -3.070107 -2.3980033 1.0852298 -3.597297 -2.8457577 1.272113 -3.2822385 -2.6292987 1.169014 -3.301271 -2.6779814 1.1812814 -3.3086419 -2.7178011 1.1896338 -3.3156474 -2.7578115 1.1979861 -3.2964487 -2.776238 1.197203 -3.2220716 -2.7475405 1.1768444 -3.3088844 -2.8568692 1.2139077 -3.4693148 -3.0328226 1.2778552 -3.3415115 -2.9574168 1.2384427 -3.5094631 -3.144763 1.3060442 -3.7274146 -3.3816373 1.3926996 -3.7236545 -3.4201207 1.3989638 -3.0353944 -2.8222075 1.1525704 -3.0334806 -2.8553398 1.1583126 -3.1158123 -2.9691572 1.195637 -4.0435286 -3.9013262 1.5511327 -2.9624581 -2.893151 1.1515263 -3.7784836 -3.7361238 1.4686534 -3.7050123 -3.7086895 1.4493388 -3.6320219 -3.680496 1.430024 -3.3257554 -3.4116304 1.3201388 -3.3409078 -3.4695311 1.3342333 -3.2576985 -3.4249003 1.3099594 -3.2676816 -3.4778981 1.3222269 -3.2324934 -3.4830205 1.3167456 -2.9925928 -3.2643545 1.2293073 -7.0592561 -7.7982173 2.8760195 -2.8802524 -3.2202265 1.2000742 -2.3716555 -2.684263 1.0004015 -2.32532 -2.6645703 0.98813409 -2.2893965 -2.6561143 0.98004276 -2.2693028 -2.6657002 0.9784767 -2.2411048 -2.6655314 0.97351754 -2.1877213 -2.6346593 0.95785689 -2.126848 -2.5935273 0.9388032 -3.4462864 -4.256649 1.5127642 -3.3947916 -4.2460427 1.5018017 -2.3735721 -3.0058274 1.0674812 -2.3568642 -3.0226192 1.0682641 -2.3064849 -2.9957099 1.0541697 -2.312587 -3.0420899 1.065132 -2.3691788 -3.1566136 1.0990633 -2.3371267 -3.1540241 1.0933211 -2.219738 -3.0342672 1.0484273 -1.9270881 -2.6681864 0.92183757 -0 -0 0 -0 -0 0 -2.1379998 -3.0783119 1.0452952 -1.9826844 -2.8922729 0.98004276 -1.9930142 -2.9459701 0.99361527 -1.9631144 -2.9404767 0.98787308 -1.9020405 -2.887156 0.96673125 -1.869566 -2.8761051 0.95942301 -1.8529251 -2.8891478 0.95994502 -1.8429006 -2.9127018 0.96386015 -1.8423629 -2.9518039 0.97273451 -1.8742918 -3.0444515 0.9985745 -1.8896277 -3.1120148 1.0163232 -1.8501741 -3.0895882 1.0056218 -1.8468809 -3.1274867 1.0139741 -1.9058189 -3.2730942 1.0559967 -1.5773122 -2.7471561 0.88842827 -1.8503029 -3.2693465 1.0476444 -1.4903668 -2.6710272 0.85893416 -1.5450733 -2.8095653 0.89886868 -0 -0 0 -0 -0 0 -0 -0 0 -1.4499083 -2.7969201 0.88373011 -1.1041408 -2.1617 0.68823361 -1.1341965 -2.2546916 0.71433461 -1.0950825 -2.2105608 0.69893503 -0 -0 0 -1.5400141 -3.208261 0.99413729 -1.5219481 -3.2211418 0.99518132 -1.2056401 -2.5922074 0.80490506 -1.5429109 -3.3721452 1.0345938 -1.6128675 -3.5831575 1.0943651 -1.4951644 -3.3767002 1.0304177 -1.5984305 -3.6708391 1.114463 -1.5823314 -3.6956658 1.1189001 -1.6498179 -3.9197567 1.1818035 -0 -0 0 -0 -0 0 -1.6135263 -4.0400147 1.2081655 -1.5865932 -4.0444465 1.2065995 -1.5416343 -4.0018535 1.1914608 -1.4917989 -3.9444144 1.1721461 -0.90730238 -2.4428999 0.73652047 -0 -0 0 -0 -0 0 -0.9505384 -2.7115653 0.80882019 -0 -0 0 -1.1230887 -3.3351343 0.98343593 -1.1007906 -3.3364615 0.98186982 -0.80661255 -2.4952223 0.74095762 -0.80321282 -2.537864 0.75165904 -0.77792817 -2.5113885 0.74278468 -0.76334256 -2.5188863 0.74356771 -0.75252861 -2.539259 0.74800491 -1.1655135 -4.0257044 1.1650989 -1.1502404 -4.0662227 1.1744952 -0.9211148 -3.3334143 0.96699226 -0.90064406 -3.3390036 0.96699226 -0.87989402 -3.3435333 0.96673125 -0.79178745 -3.0851648 0.89312643 -0.75834161 -3.0318973 0.87694383 -0.74177712 -3.0449355 0.87929291 -1.8493965 -7.8073606 2.2013085 -1.7148148 -7.4422731 2.0969045 -0.70500034 -3.1447401 0.90330583 -0.64591277 -2.9660048 0.85266989 -1.8136501 -8.5918665 2.4062014 -0.64544892 -3.1496181 0.90121776 -0.64637685 -3.2557869 0.92940682 -0.52201581 -2.7155073 0.77958709 -0.48316643 -2.5990658 0.74669981 -0.45291427 -2.5221634 0.72477502 -1.3296909 -7.6891913 2.1417983 -0.43159851 -2.5856178 0.74069661 -0.52564436 -3.2745125 0.9286238 -0.43242916 -2.802531 0.79864085 -0.41043249 -2.7726619 0.78976649 -0.38760298 -2.7340271 0.77854306 -0.37017387 -2.7315707 0.77723801 -0.35204941 -2.723259 0.77436692 -0.34214687 -2.7809412 0.78950548 -0.32764363 -2.805042 0.79550868 -0.85177046 -7.7207561 2.1321409 -0.26814166 -2.5678511 0.72999519 -0.3997533 -4.0768738 1.1395199 -0.37200162 -4.049449 1.1314286 -0.28210005 -3.2898812 0.92470866 -0.20588118 -2.5842438 0.73286629 -0.55906743 -7.6380825 2.1026468 -0 -0 0 -0.17547823 -2.8708827 0.80960327 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0.083948635 -2.7620208 0.77906507 -0.065481894 -2.6987898 0.76183844 -0 -0 0 -0.043922469 -3.700377 1.0325058 -0.017295396 -2.9765854 0.8367483 --0 -0 0 --0 -0 0 --0.035740983 -2.8412638 0.8002069 --0.053340152 -2.8496776 0.80255598 --0.071409687 -2.8724573 0.80882019 --0.089881979 -2.8989811 0.81612849 --0.10835639 -2.9167035 0.82108766 --0.13071819 -3.0182118 0.84875476 --0.15091726 -3.0510976 0.85789007 --0.16914983 -3.0414398 0.85554099 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6125426 -3.7572858 1.1374317 --1.6232015 -3.7190127 1.1290795 --1.6220888 -3.6551664 1.1131579 --1.5559024 -3.4489455 1.0549526 --1.4880551 -3.2454364 0.99726945 --1.5063087 -3.2327454 0.99622542 --1.5310764 -3.2339103 0.99935752 --3.7909751 -7.877903 2.395761 --3.9706931 -8.1233311 2.4766741 --3.9298694 -7.9163837 2.4216011 --3.8857896 -7.7085266 2.3660059 --1.6185573 -3.1639414 0.99283224 --1.6294818 -3.137676 0.98787308 --1.6527574 -3.1353028 0.99022216 --1.8492194 -3.4561505 1.091755 --1.8842176 -3.470185 1.0995853 --4.3952641 -7.9745078 2.4939008 --4.438457 -7.9372787 2.4907687 --0 -0 0 --4.771008 -8.2913332 2.6184025 --2.0136259 -3.4516041 1.1123748 --1.9560801 -3.3062763 1.0706133 --1.9519831 -3.2536573 1.0578238 --1.9794396 -3.2539876 1.0617388 --0 -0 0 --2.0637684 -3.3006485 1.0844468 --5.1882873 -8.1823578 2.6515508 --5.2785921 -8.2128935 2.6716485 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --2.2937937 -3.340266 1.1275134 --0 -0 0 --0 -0 0 --0 -0 0 --5.3791308 -7.4328094 2.5126934 --2.3934639 -3.2659969 1.1267304 --2.4278488 -3.2706232 1.1332556 --2.4565766 -3.2672358 1.1371708 --2.4683867 -3.2413514 1.1335167 --5.7520432 -7.4553638 2.5779459 --5.8184857 -7.4465504 2.5870812 --5.8628693 -7.4091949 2.5865593 --5.9112396 -7.3768477 2.5878644 --5.9935012 -7.3861589 2.603786 --6.0092878 -7.313447 2.5912576 --6.1065373 -7.3395071 2.6134434 --6.6490932 -7.8924565 2.8222513 --6.7099261 -7.8661976 2.8274715 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --8.6585331 -9.4243155 3.492264 --8.6767454 -9.3286028 3.4766033 --9.1746082 -9.7432108 3.6504359 --9.2149 -9.6664715 3.6428666 --8.8349171 -9.15481 3.4719052 --9.334178 -9.5540438 3.6433887 --8.9893656 -9.0889387 3.4883487 --9.0374508 -9.0261059 3.4854777 --9.0727329 -8.9508247 3.4779084 --0 -0 0 --0 -0 0 --8.8210764 -8.3878841 3.3231294 --8.7991934 -8.2648745 3.2959845 --8.8370008 -8.1989107 3.2912862 --8.8793135 -8.1373606 3.2884152 --8.9254971 -8.0794859 3.2871101 --10.148006 -9.073247 3.7125564 --10.189738 -8.9986687 3.7075973 --11.098161 -9.6802225 4.013762 --11.193188 -9.6428137 4.0265512 --9.142664 -7.7793779 3.2777138 --9.359477 -7.8653378 3.3374851 --10.154163 -8.4272785 3.5998001 --9.6389694 -7.9004092 3.4016936 --9.6122246 -7.7803898 3.3755925 --9.6545048 -7.7170453 3.3737655 --10.641335 -8.3992033 3.6974177 --11.674937 -9.0991821 4.0341206 --10.922632 -8.405735 3.7584941 --11.612768 -8.8238344 3.9753935 --11.719976 -8.7923813 3.9934032 --10.236111 -7.5816612 3.4760814 --10.277762 -7.5152926 3.4745152 --10.3683 -7.4842887 3.4893928 --10.351916 -7.3762803 3.4687731 --10.555699 -7.4242344 3.5212362 --11.391712 -7.9080992 3.7814631 --11.709204 -8.0224476 3.8696845 --11.229586 -7.5930796 3.6971569 --10.872842 -7.255095 3.5661297 --0 -0 0 --11.421687 -7.4203248 3.7146444 --11.456436 -7.3433313 3.7112513 --6.0720186 -3.8403308 1.9744909 --6.0930109 -3.8014688 1.9737078 --6.2724414 -3.8601158 2.0232997 --6.1408525 -3.7274134 1.9742298 --6.3955469 -3.8284557 2.0473127 --6.7739167 -3.9986248 2.1587639 --16.049862 -9.340023 5.0528426 --7.0192499 -4.0280805 2.2201014 --7.0119033 -3.9668775 2.2101829 --6.7587094 -3.7691345 2.1243105 --6.7284088 -3.6983068 2.107867 --6.4216113 -3.4786041 2.0065951 --7.1846461 -3.8349564 2.2339349 --0 -0 0 --6.3054004 -3.2670267 1.952044 --6.8567452 -3.4993863 2.1133482 --6.8125324 -3.4243095 2.0935113 --6.8758106 -3.4034212 2.1063008 --6.4591794 -3.148083 1.9747518 --7.3096108 -3.5070601 2.2240164 --7.3536892 -3.472858 2.2308028 --7.0176711 -3.2617204 2.1243105 --7.0252614 -3.2129803 2.1206565 --16.710625 -7.5171466 4.9862852 --7.2486658 -3.2081544 2.1752076 --0 -0 0 --0 -0 0 --0 -0 0 --7.3394885 -3.0351975 2.1793838 --7.3678122 -2.9941022 2.1822548 --7.36901 -2.9420397 2.1772957 --7.3788342 -2.8935983 2.1749465 --7.3865404 -2.8444536 2.1720755 --0 -0 0 --0 -0 0 --0 -0 0 --6.9659138 -2.4880347 2.031913 --10.547152 -3.6937063 3.0535061 --13.295999 -4.5646629 3.8328819 --7.0901318 -2.3861694 2.054621 --7.1046395 -2.3426201 2.054621 --10.423329 -3.3655548 2.9934738 --7.6842136 -2.429493 2.2109659 --7.5062284 -2.3226864 2.1564147 --7.6284437 -2.3092935 2.1869531 --7.7952046 -2.3076334 2.2300196 --9.4135008 -2.7237413 2.681567 --9.5117846 -2.6890302 2.7045357 --9.0237455 -2.491432 2.5630684 --9.3539162 -2.5208824 2.6512897 --9.3953505 -2.4703104 2.6585979 --13.353741 -3.4231164 3.7592771 --8.8283587 -2.2058454 2.4923346 --13.597348 -3.3082643 3.8156552 --11.443679 -2.7102003 3.2116783 --11.462915 -2.6405821 3.2124612 --13.28572 -2.9745657 3.7130785 --8.9145079 -1.9389203 2.4985988 --16.964348 -3.5798209 4.7197938 --12.274249 -2.5118806 3.4194422 --12.745847 -2.5269654 3.545249 --17.091833 -3.2793207 4.7375426 --17.218887 -3.1942749 4.7670369 --17.206806 -3.0829456 4.7584233 --13.512699 -2.3358471 3.7397015 --13.479165 -2.2449651 3.726651 --13.46409 -2.1576364 3.7188206 --12.390348 -1.9077607 3.4215302 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --12.383633 -1.5195079 3.4053476 --12.375463 -1.441486 3.4006495 --12.401346 -1.3674272 3.4053476 --12.423906 -1.2928056 3.4092629 --12.428722 -1.2162678 3.4084797 --0 -0 0 --0 -0 0 --0 -0 0 --12.387434 -0.90596288 3.390209 --12.397575 -0.83026004 3.3915141 --12.345586 -0.75072271 3.3761146 --12.317187 -0.67316949 3.3672402 --12.336514 -0.59832674 3.3714163 --12.2898 -0.52050078 3.3578439 --12.295656 -0.4451867 3.3586268 --12.320349 -0.37039867 3.36463 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --13.202861 -0.24123573 3.4471555 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --14.49124 13.800355 5.2073269 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --13.77984 14.300405 5.1680169 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --14.041852 15.884225 5.5150437 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.6517925 13.185892 4.2581363 --9.5395155 13.201707 4.2443652 --9.4425898 13.237924 4.2373548 --9.3622999 13.297196 4.2378554 --0 0 0 --8.9393911 13.033449 4.1194258 --0 0 0 --9.6704273 14.476931 4.5345559 --9.5622339 14.506895 4.5255423 --9.5015469 14.60912 4.5390625 --9.3949957 14.641071 4.5310502 --7.9196873 12.510294 3.8612838 --7.8935475 12.639948 3.8860714 --7.9823971 12.958512 3.9681962 --9.1399364 15.043462 4.5843816 --7.6913991 12.83625 3.9020958 --7.6346564 12.92071 3.913363 --0 0 0 --0 0 0 --0 0 0 --7.6394815 13.684928 4.0853739 --0 0 0 --7.4663563 13.769135 4.08287 --7.3976998 13.844575 4.0916333 --0 0 0 --7.5348339 14.527309 4.2643957 --0 0 0 --7.4195328 14.744944 4.300951 --7.2747545 14.680889 4.2694035 --7.4617691 15.293423 4.4329014 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --6.8646669 15.238826 4.3545327 --0 0 0 --6.6624479 15.288193 4.3450179 --6.5711851 15.335014 4.3467708 --6.4837337 15.391106 4.3512774 --6.3928776 15.439544 4.3537812 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.9705324 13.633257 3.7849181 --4.8884172 13.668057 3.78617 --4.7551088 13.557104 3.7476113 --4.516614 13.134674 3.6241741 --0 0 0 --4.3587341 13.200142 3.6271787 --4.7245727 14.608381 4.0027485 --4.2347093 13.373547 3.6599784 --4.0941014 13.210629 3.6089008 --4.4703312 14.743828 4.0165195 --3.9030526 13.163343 3.5828614 --3.8305664 13.21587 3.5906231 --3.7470286 13.230742 3.5883696 --4.2857695 15.494803 4.1897826 --4.0172257 14.878689 4.0177712 --3.9145105 14.859993 4.0062537 --3.859633 15.025325 4.0440612 --3.6923575 14.749132 3.96419 --3.3036063 13.548751 3.638696 --3.213479 13.539565 3.6309342 --3.1427567 13.612798 3.645206 --3.3509095 14.93166 3.9897289 --3.2544844 14.930182 3.9839702 --3.1501875 14.890199 3.9681962 --3.0605149 14.917783 3.9704497 --2.9043634 14.611529 3.8848195 --2.7927008 14.514991 3.854774 --2.4055169 12.929955 3.4333844 --2.5891938 14.408095 3.8179681 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --1.7183523 13.94771 3.6664882 --0 0 0 --1.5423723 13.925407 3.6554716 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.76601869 13.822833 3.6124063 -0.84820276 13.775354 3.6013894 -1.0181246 15.031404 3.9283857 -0 0 0 -1.1706795 14.620173 3.8252292 -1.2439808 14.422694 3.7759044 -1.4203818 15.366297 4.0230293 -1.5194858 15.40643 4.0357985 -1.6187321 15.442072 4.0475664 -1.7250954 15.536733 4.0748582 -1.8595078 15.859517 4.1617398 -1.7586956 14.243183 3.7436054 -1.8423216 14.203321 3.736094 -1.9595591 14.413354 3.7939317 -2.0200229 14.204564 3.7426038 -2.2531421 15.175412 3.9997439 -2.3093536 14.923068 3.9373994 -2.2816019 14.167844 3.7433548 -2.3643374 14.12875 3.736845 -2.4239891 13.958495 3.696033 -2.7412474 15.230649 4.0342965 -2.5700977 13.793498 3.6607294 -2.9583473 15.353673 4.0758595 -2.790385 14.018242 3.7285824 -2.8818014 14.027411 3.7355931 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.7413266 15.744674 4.2173243 -0 0 0 -0 0 0 -3.5121336 13.657202 3.6790073 -3.544028 13.438804 3.6264274 -3.6531949 13.515874 3.6529677 -0 0 0 -0 0 0 -4.5055981 15.529114 4.213819 -4.5156841 15.214381 4.1364517 -4.6140132 15.203063 4.1409583 -4.5480266 14.661264 4.0019975 -0 0 0 -4.7278981 14.60527 4.0022478 -4.8247166 14.598047 4.0082569 -0 0 0 -0 0 0 -5.1320424 14.619128 4.0390539 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -19.129284 -1.4135461 4.9927511 -18.960051 -1.5180711 4.9511881 -18.410221 -1.5878042 4.8109751 -0 -0 0 -18.030937 -1.7782663 4.717834 -18.633038 -1.9531484 4.877326 -18.704416 -2.0767348 4.8991089 -0 -0 0 -20.041937 -2.4745457 5.2546487 -18.90593 -2.4521711 4.9624553 -17.642445 -2.3984809 4.6367106 -17.771172 -2.5271301 4.6742678 -17.42877 -2.5876474 4.5888882 -19.821695 -3.0672908 5.2193451 -17.525698 -2.8222611 4.6229401 -17.516645 -2.9311814 4.6251931 -17.834095 -3.0969048 4.7133269 -17.790936 -3.2019877 4.7070675 -17.865179 -3.3286445 4.7318554 -0 -0 0 -18.869362 -3.755883 5.0077739 -18.831736 -3.8686705 5.0040183 -0 -0 0 -19.004181 -4.1477771 5.0626073 -19.07472 -4.2859535 5.0881457 -19.690437 -4.551383 5.2586546 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9512043 -2.2543473 2.1694663 -7.9353623 -2.3025529 2.1689653 -0 -0 0 -0 -0 0 -0 -0 0 -8.0102863 -2.5390136 2.2052705 -7.9807405 -2.5836439 2.201515 -7.9739299 -2.635602 2.2040186 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -18.354799 -7.7378683 5.1835408 -0 -0 0 -0 -0 0 -19.036779 -8.4413309 5.4176459 -18.957266 -8.5456467 5.4098845 -18.889511 -8.6549501 5.4056277 -18.868523 -8.7858105 5.4148917 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -13.644713 -7.5123491 4.0603361 -3.4944417 -1.9522945 1.0672934 -3.4596543 -1.9608123 1.0605332 -3.4727392 -1.9964769 1.0680445 -3.4855156 -2.0323753 1.0755559 -3.4779799 -2.0566802 1.0770582 -3.4943573 -2.0954056 1.0858215 -3.4789524 -2.1152983 1.0850704 -3.4477758 -2.1254296 1.0795621 -3.4149642 -2.1342323 1.073553 -3.2145085 -2.0365136 1.0162159 -3.0797484 -1.9777409 0.97865891 -3.04808 -1.9839275 0.97264981 -3.9289241 -2.591572 1.2493197 -3.9282422 -2.6258519 1.254077 -3.9296918 -2.6618493 1.2595853 -3.8765647 -2.6607125 1.2480677 -3.5525444 -2.4705589 1.1511707 -3.975008 -2.8006375 1.2896309 -3.5850029 -2.55896 1.1712011 -3.6014018 -2.6041651 1.1814667 -3.5197439 -2.5781636 1.1604348 -3.4781988 -2.580677 1.1521722 -3.6573484 -2.7485259 1.215268 -4.4732428 -3.4047143 1.4859288 -3.9477057 -3.0432036 1.3211788 -4.1243305 -3.2198727 1.3852761 -4.3179159 -3.4138281 1.4556328 -4.3180499 -3.4571991 1.4626435 -3.5326464 -2.8642097 1.2082573 -3.5471833 -2.9122453 1.2190237 -3.3758724 -2.8064728 1.1674454 -3.3645144 -2.8321211 1.1694485 -3.2733848 -2.7899184 1.1444105 -4.1350965 -3.5682557 1.4446161 -4.0642729 -3.5508864 1.4278406 -3.5724759 -3.1601334 1.2655944 -3.4808929 -3.1174109 1.2405564 -3.458113 -3.1354592 1.2393045 -3.0600595 -2.8090074 1.1063527 -3.0867395 -2.8685887 1.1218762 -3.0676696 -2.886148 1.1213756 -3.0877626 -2.9409697 1.134896 -3.1323886 -3.0203354 1.1574303 -3.7733991 -3.6832476 1.395792 -3.3636804 -3.323921 1.2550784 -3.0009673 -3.0021684 1.1298884 -3.3668566 -3.409723 1.2713531 -2.9246888 -2.9985743 1.1153663 -3.6183331 -3.755434 1.3807693 -3.5905497 -3.7726562 1.3790165 -3.3206286 -3.5322323 1.2858752 -3.0485318 -3.2829728 1.1907308 -3.8405397 -4.1869688 1.5014523 -3.8108761 -4.206151 1.4999501 -2.3729031 -2.6517608 0.95236903 -2.3469689 -2.6553905 0.94861329 -2.3249006 -2.663178 0.94635987 -2.3059869 -2.6744604 0.9453584 -2.2713277 -2.6671858 0.93809736 -2.236222 -2.6588461 0.93058592 -2.1641839 -2.6054969 0.90805173 -2.1211355 -2.5857949 0.897035 -2.079021 -2.5664163 0.88626868 -2.2084043 -2.7605491 0.94635987 -2.2046292 -2.7907593 0.95186824 -2.3149121 -2.9675806 1.0054495 -3.2633018 -4.2364435 1.4150712 -3.1926994 -4.197825 1.3960423 -3.1697888 -4.2212067 1.3972943 -3.0982738 -4.1791396 1.3775142 -2.3520324 -3.213747 1.0620354 -1.9330635 -2.6756866 0.88576794 -1.9868879 -2.7860184 0.91706544 -1.9502475 -2.7704511 0.90830213 -1.9437094 -2.7974706 0.91305935 -1.9385556 -2.8269088 0.91856772 -1.9271433 -2.8475695 0.92132187 -1.9101725 -2.8601456 0.92157227 -1.9394766 -2.9429452 0.94360572 -1.8897105 -2.9060953 0.92858291 -1.8666147 -2.9094875 0.92607909 -1.8430308 -2.9118881 0.92332494 -1.8671818 -2.9904771 0.94385606 -1.8553988 -3.0125935 0.94711101 -1.8278298 -3.0090282 0.94260418 -1.8337166 -3.0608795 0.95487279 -1.7868266 -3.024564 0.94060117 -1.7809072 -3.05722 0.94711101 -1.7394484 -3.0286343 0.93534315 -1.8863882 -3.3315716 1.022225 -0 -0 0 -1.4369717 -2.6122806 0.80314255 -1.4735291 -2.7180698 0.83168584 -0 -0 0 -0 -0 0 -0 -0 0 -1.6953447 -3.3189731 0.99593514 -1.0965726 -2.1799667 0.66318011 -1.0853254 -2.1909914 0.66443199 -1.633966 -3.3496165 0.99593514 -1.5517595 -3.2312949 0.95912927 -1.6382605 -3.465692 1.023477 -1.5438497 -3.3185594 0.97865891 -1.2078551 -2.638732 0.78261137 -1.4847172 -3.2966504 0.96714145 -1.4672071 -3.3118942 0.96889406 -1.4348674 -3.2933214 0.96113229 -0 -0 0 -0 -0 0 -0.97323596 -2.3513341 0.69022113 -1.6123279 -3.9633372 1.1386517 -1.5948074 -3.990236 1.1434089 -1.5288911 -3.894511 1.1141145 -1.507056 -3.9092386 1.1156168 -1.4816699 -3.9147904 1.1146152 -1.4687496 -3.9537563 1.1228778 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0.87459105 -2.5960238 0.74054754 -1.0474787 -3.1731563 0.89628386 -0.96601659 -2.987922 0.84420484 -0.87167054 -2.7538202 0.77910602 -0.80717862 -2.6056085 0.73754299 -1.2243811 -4.0391603 1.123629 -0.80872321 -2.7285576 0.76808935 -0.76069844 -2.6256037 0.73904526 -1.196525 -4.2258887 1.1679462 -0.92200762 -3.3345702 0.92683023 -0.9012773 -3.3392301 0.92657989 -0.83464855 -3.1696274 0.87975883 -0.81349808 -3.1681252 0.87800616 -0.75877279 -3.0321832 0.84044915 -1.0539333 -4.3235011 1.182969 -2.0416145 -8.6026802 2.3186927 -1.9798608 -8.5763693 2.3084271 -0.66208071 -2.951648 0.81440961 -0.65158743 -2.9906542 0.82367367 -0.75487435 -3.5695329 0.97565436 -0.71310914 -3.4773617 0.95011556 -0.5558427 -2.7979846 0.76984197 -1.5335064 -7.9712815 2.1314085 -0.47807437 -2.5714014 0.7084989 -0.4607462 -2.5657105 0.70624548 -0.58724916 -3.3888538 0.92157227 -0.47485933 -2.8442755 0.77785414 -1.3325311 -8.2898607 2.2035179 -1.2130492 -7.8539281 2.0873415 -0.46955323 -3.1704853 0.86098033 -0.39293984 -2.770721 0.75582069 -0.37736368 -2.7836328 0.7585749 -0.35592604 -2.7522912 0.74981159 -0.97570491 -7.921073 2.0961049 -0.3081733 -2.6372147 0.71876448 -0.307657 -2.7805083 0.75557035 -0.28182942 -2.6985717 0.73378724 -0.39901462 -4.0597434 1.0870734 -0.3707197 -4.0254807 1.077559 -0.23335418 -2.7177708 0.73754299 -0.32668567 -4.0972824 1.0950856 -0.21747991 -2.9579508 0.79913646 -0 -0 0 -0 -0 0 -0.14161086 -2.5738151 0.69873405 -0 -0 0 -0 -0 0 -0 -0 0 -0.072781116 -2.392653 0.65116185 -0.058500823 -2.4095082 0.65541834 -0.052129805 -2.8696148 0.77434886 -0.034097295 -2.8350301 0.76533514 -0.017010482 -2.8864968 0.77860528 --0 -0 0 --0.024089793 -3.7955611 1.0137122 --0.036602817 -2.9250438 0.78862047 --0.055410307 -2.9712272 0.80063874 --0.074929088 -3.0230954 0.81415927 --0.093208812 -3.0138695 0.8119058 --0 -0 0 --0 -0 0 --0.15104902 -3.0599921 0.8244248 --0.17314157 -3.1189411 0.83994842 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6342411 -3.684751 1.0745544 --1.6393141 -3.6358187 1.0635377 --1.5704551 -3.4267743 1.0069518 --1.5044085 -3.2301292 0.95362091 --1.5233718 -3.2190871 0.95312017 --1.5577738 -3.2402201 0.96188343 --4.0190325 -8.2313795 2.4010677 --1.6008596 -3.2277989 0.9638865 --1.6267302 -3.2300215 0.96739179 --1.6178743 -3.1639469 0.9511171 --1.63146 -3.1427891 0.94786215 --1.6534204 -3.1378589 0.94936442 --1.7452223 -3.2634056 0.98917484 --4.216866 -7.7712507 2.3186927 --0 -0 0 --1.8923361 -3.3870971 1.0354952 --1.9006737 -3.3535218 1.0289853 --4.8805599 -8.49053 2.5648162 --1.9977565 -3.4261312 1.057779 --1.9399071 -3.2804658 1.0177182 --1.9604969 -3.2693315 1.0179685 --2.0524354 -3.3755419 1.0537729 --0 -0 0 --5.2436328 -8.3913469 2.5911062 --5.2287126 -8.2543249 2.5590575 --4.634335 -7.2175713 2.250339 --4.7556286 -7.3074737 2.2868943 --0 -0 0 --2.3132961 -3.4605799 1.1086061 --0 -0 0 --2.3407979 -3.4103785 1.1018459 --2.3030949 -3.3116932 1.0753056 --2.3233716 -3.2974994 1.0753056 --2.3458104 -3.2863336 1.0763071 --2.3897543 -3.3048303 1.0868231 --5.5406957 -7.5649838 2.4571528 --5.6095047 -7.5611691 2.4669178 --5.6726594 -7.5490541 2.4741788 --0 -0 0 --5.752459 -7.4627705 2.4689207 --5.8207788 -7.4563336 2.478435 --5.8898354 -7.4500985 2.4881999 --5.9433031 -7.4236441 2.4914548 --5.9302139 -7.3148379 2.4674184 --6.5487118 -7.9772449 2.7012734 --6.5987735 -7.9384017 2.7017741 --6.6230459 -7.8688745 2.6920092 --6.6636682 -7.8192458 2.6890047 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --8.7945089 -9.3487854 3.3515103 --8.832345 -9.2743158 3.3442492 --8.902523 -9.2338867 3.3492568 --8.9089746 -9.1278162 3.3307288 --9.0798092 -9.1893702 3.3730428 --9.3236198 -9.3210402 3.4416471 --0 -0 0 --9.1053505 -8.8820915 3.3217149 --10.456363 -10.075586 3.7874217 --10.51869 -10.011905 3.7876723 --10.593326 -9.9597759 3.7924294 --10.531513 -9.7806082 3.7491136 --8.9640198 -8.2229357 3.1779969 --8.9856091 -8.1417751 3.1679816 --8.9834566 -8.039999 3.1499543 --11.038198 -9.7577467 3.8422551 --10.24754 -8.9473553 3.550312 --9.13799 -7.8802357 3.1527085 --11.153289 -9.4995556 3.8209727 --10.08007 -8.479249 3.4386425 --9.5979767 -7.9736419 3.25912 --10.172137 -8.3457012 3.4348867 --9.7447491 -7.8954864 3.275645 --10.585231 -8.4694529 3.5380433 --11.554635 -9.1294146 3.8405023 --10.899801 -8.5038862 3.6073985 --11.599073 -8.9355288 3.8187194 --11.673717 -8.8794298 3.8252292 --11.687725 -8.777401 3.8122094 --11.765471 -8.7233973 3.8199711 --10.349319 -7.5753779 3.3490064 --10.428563 -7.5355492 3.3595223 --10.479333 -7.4747925 3.3610246 --11.381516 -8.0134382 3.6319358 --11.439216 -7.9495292 3.63469 --0 -0 0 --0 -0 0 --11.349335 -7.5811281 3.5618293 --11.36088 -7.4884353 3.5510631 --11.422846 -7.4291425 3.5560706 --11.413623 -7.3238807 3.5392952 --0 -0 0 --6.1790481 -3.8585339 1.9160817 --6.2174444 -3.8296876 1.9205885 --0 -0 0 --0 -0 0 --0 -0 0 --16.024742 -9.33671 4.8285017 --16.070818 -9.2319384 4.8252468 --16.189501 -9.1684618 4.8437748 --16.42889 -9.171361 4.8981075 --16.30673 -8.9723692 4.8455276 --6.6942406 -3.6297469 2.0014613 --6.4747381 -3.4594738 1.9306037 --7.4792929 -3.9374752 2.21804 --6.3663063 -3.3017476 1.8867872 --6.7045732 -3.4251649 1.9791774 --6.9373441 -3.4905849 2.0405204 --15.636847 -7.7484837 4.5453219 --15.714549 -7.6672511 4.5540853 --7.2107363 -3.4633276 2.100862 --7.1101923 -3.3614943 2.0660594 --7.0156975 -3.2642951 2.0332594 --7.0435171 -3.2248137 2.0355129 --7.2511888 -3.2662365 2.0888438 --0 -0 0 --7.3386507 -3.1978946 2.1023643 --7.3928394 -3.1676776 2.1121292 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --6.9245663 -2.4285681 1.9298525 --7.1050467 -2.4430215 1.9751713 --7.107059 -2.3950508 1.971666 --9.3445282 -3.0854781 2.5770848 --13.265327 -4.2901711 3.6376946 --7.6391158 -2.4187386 2.1043675 --7.638092 -2.3669479 2.100111 --8.9393663 -2.7102587 2.4478889 --8.9697514 -2.6594856 2.4516444 --7.5929585 -2.2006171 2.0765753 --12.601976 -3.5689392 3.4193633 --9.163681 -2.5344553 2.4909542 --9.1846685 -2.4796946 2.4924564 --9.0414925 -2.381609 2.4501421 --8.9246569 -2.292361 2.4150889 --9.0597067 -2.26789 2.4473879 --11.040213 -2.6918733 2.9709325 --8.9935989 -2.1344068 2.4226005 --13.23641 -3.0558498 3.5453043 --17.454811 -3.9172132 4.658494 --17.139875 -3.7362123 4.5688577 --17.046921 -3.6065235 4.5383115 --12.414035 -2.5467827 3.3094463 --12.338269 -2.4524417 3.2854099 --12.253262 -2.3574803 3.25912 --17.292105 -3.2171929 4.5808759 --17.389654 -3.1250734 4.6014071 --13.398255 -2.3229203 3.5488098 --12.436339 -2.0776002 3.2929213 --12.45172 -2.0017142 3.2936723 --12.437935 -1.9212829 3.2869122 --12.420759 -1.8406705 3.2794008 --12.41169 -1.7615659 3.2741427 --12.4309 -1.6865478 3.2763963 --12.443894 -1.6106143 3.2771473 --18.299534 -2.2546167 4.8004594 --17.60914 -2.0599339 4.6171813 --17.600279 -1.9495022 4.6116729 --17.353853 -1.8144846 4.5445709 --17.311668 -1.7027558 4.5307999 --12.49378 -1.1514089 3.276897 --17.256987 -1.4837989 4.5115209 --12.503109 -0.99769616 3.2758954 --12.675067 -0.93319172 3.3189609 --12.530831 -0.84529692 3.2801518 --12.453644 -0.76335597 3.2588696 --12.393326 -0.68335426 3.242094 --12.512357 -0.61293787 3.2718894 --13.101074 -0.56123835 3.4233692 --13.129426 -0.48176482 3.4298792 --13.166004 -0.40223086 3.4386425 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --15.93369 14.45571 5.3166413 --15.846123 14.55452 5.3171186 --15.966307 14.846572 5.387486 --15.539049 14.628056 5.2741823 --15.397684 14.674214 5.2567697 --15.276605 14.738747 5.246274 --14.339737 14.005674 4.9557405 --14.212098 14.052427 4.9414282 --14.150314 14.164101 4.9500155 --14.029716 14.216786 4.9383273 --13.951709 14.31234 4.9416666 --13.906062 14.441751 4.9566946 --14.897361 15.662586 5.3416872 --0 0 0 --0 0 0 --14.452336 15.765907 5.2856321 --0 0 0 --14.19563 15.872578 5.262733 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --13.445587 16.399881 5.2412648 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.3955259 13.354053 4.0428729 --9.3898439 13.521535 4.0757904 --9.0805273 13.248848 3.9775145 --8.8777418 13.124925 3.9243217 --8.6132107 12.903704 3.8429818 --9.5674076 14.525702 4.304544 --9.4992657 14.616707 4.3140855 --10.096014 15.745707 4.626564 --8.0421772 12.713133 3.727293 --7.9383168 12.721044 3.7153664 --8.0087395 13.011013 3.7850182 --7.8622379 12.950327 3.7535317 --7.900846 13.195804 3.8100641 --0 0 0 --0 0 0 --0 0 0 --7.8338146 13.843842 3.9393492 --0 0 0 --0 0 0 --7.4888539 13.821744 3.8935509 --7.5904918 14.216973 3.9908724 --7.8426099 14.908768 4.170011 --7.5713806 14.60998 4.0741205 --7.4511309 14.596478 4.057662 --7.4115868 14.741705 4.085093 --7.5579491 15.26559 4.2162867 --0 0 0 --0 0 0 --7.0637498 14.953401 4.0943961 --6.8584776 14.752522 4.0283222 --6.7722721 14.804042 4.0309463 --6.806438 15.123397 4.1058455 --6.7288437 15.19951 4.1151485 --6.6583233 15.293046 4.1292219 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.87184 13.635846 3.5889435 --4.7672119 13.605908 3.5734389 --4.5476923 13.239037 3.4706309 --4.4477868 13.211467 3.4563191 --0 0 0 --4.3148746 13.356543 3.4799337 --4.2527485 13.445731 3.4961541 --4.534205 14.64793 3.7986145 --4.3648872 14.413365 3.731348 --3.9331322 13.280557 3.4343739 --3.8450909 13.282052 3.4286492 --4.3406262 15.346328 3.9496062 --3.7329938 13.513584 3.4758787 --0 0 0 --0 0 0 --0 0 0 --3.4103539 13.641639 3.4861357 --3.5828948 14.71535 3.7523391 --3.4529102 14.569796 3.7101185 --3.3856897 14.687235 3.7344489 --3.3799863 15.084898 3.8293853 --3.2582552 14.971553 3.795752 --2.8672135 13.574534 3.4400988 --2.647716 12.926844 3.2733638 --2.8702738 14.465065 3.6545403 --2.7673657 14.408968 3.6361732 --2.6734076 14.396077 3.6287787 --2.3615534 13.165725 3.3177311 --2.3571889 13.622067 3.4279335 --2.2815428 13.684171 3.4398601 --0 0 0 --0 0 0 --0 0 0 --1.9738768 13.939891 3.4904292 --1.8901285 13.965213 3.4937687 --1.8006761 13.947653 3.4866128 --1.7104453 13.920847 3.4773099 --1.6195995 13.884779 3.4658604 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.60667741 13.965749 3.4658604 -0.69153911 13.945274 3.4618053 -0.77573943 13.916528 3.455842 -0.858051 13.862073 3.4436767 -0.94170439 13.836201 3.4386675 -1.0233454 13.786581 3.4279335 -1.1023095 13.710346 3.4107592 -1.2655667 14.616652 3.6359346 -1.3313466 14.351396 3.5724847 -1.3586968 13.730255 3.4212546 -1.6192689 15.397324 3.8351102 -1.7119935 15.371655 3.8312936 -0 0 0 -1.8524985 14.962056 3.7354031 -2.0614378 15.850826 3.958432 -1.9404377 14.237694 3.5617509 -2.0014346 14.04093 3.5159523 -2.062808 13.862211 3.4746861 -2.1449969 13.831059 3.470154 -2.4251742 15.027539 3.7711833 -2.3677473 14.12071 3.5491085 -2.4338603 13.988237 3.519769 -2.4974029 13.849753 3.4889982 -2.5853672 13.850398 3.4930532 -2.7073133 14.02593 3.5409985 -2.9175696 14.631906 3.6969993 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3.272347 14.135326 3.5960996 -3.3482227 14.069633 3.58465 -3.4155724 13.971471 3.5650902 -3.9540949 15.753993 4.0218816 -3.5177238 13.660481 3.4971082 -3.5409596 13.409541 3.438906 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -4.5051465 15.160094 3.9169271 -4.6415739 15.275257 3.9536612 -4.5859737 14.766089 3.830101 -4.6750212 14.733045 3.8289082 -4.779109 14.746576 3.8398807 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -19.294235 -1.4326347 4.7844734 -19.332514 -1.5548126 4.7961617 -19.228762 -1.6652721 4.7730236 -18.50552 -1.7170559 4.5972247 -0 -0 0 -0 -0 0 -18.181232 -2.025121 4.5256643 -18.793447 -2.2101805 4.680234 -18.848925 -2.3340502 4.6974087 -18.851582 -2.4519169 4.7017021 -18.891029 -2.5750213 4.7152987 -17.573132 -2.5052223 4.3923244 -17.543982 -2.6109996 4.3889847 -17.562178 -2.723959 4.397572 -0 -0 0 -19.158476 -3.2128987 4.8037944 -25.040569 -4.357832 6.2753072 -18.057728 -3.2565513 4.5392609 -17.27943 -3.225738 4.3498654 -17.240242 -3.3280194 4.3450947 -17.248068 -3.4394403 4.3522506 -17.254223 -3.5508864 4.3591681 -19.099747 -4.0531354 4.828125 -0 -0 0 -19.822615 -4.4614744 5.0230069 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9573369 -2.2582183 2.0639992 -7.9423985 -2.30673 2.0637608 -0 -0 0 -0 -0 0 -0 -0 0 -8.005579 -2.5397322 2.095247 -7.9815311 -2.5861106 2.0931003 -7.958137 -2.6325946 2.091192 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -18.53302 -7.6872053 4.9605112 -0 -0 0 -18.380178 -7.8895364 4.9452448 -0 -0 0 -18.431097 -8.1806927 4.9853187 -19.130293 -8.631978 5.1873565 -19.004587 -8.7159958 5.1677966 -19.0819 -8.8935757 5.2033381 -18.994495 -8.9951124 5.1945124 -19.106091 -9.1919155 5.2400723 -0 -0 0 -18.990112 -9.4248209 5.2395949 -0 -0 0 -0 -0 0 -0 -0 0 -14.19519 -7.4844346 3.9739366 -14.141294 -7.5672698 3.9717898 -14.102276 -7.6580682 3.9739366 -3.5101979 -1.9331498 1.0165988 -3.540652 -1.9783486 1.0285255 -3.4701614 -1.9669763 1.0120666 -3.4714949 -1.9959806 1.0158832 -3.4709253 -2.0240963 1.0192226 -3.4784982 -2.0572257 1.0249474 -14.57066 -8.7427568 4.2060294 -3.4214656 -2.0805743 1.0158832 -3.2747416 -2.0189254 0.97724074 -3.1956 -1.997269 0.95791954 -4.1863685 -2.6528018 1.2496459 -3.4445372 -2.2122169 1.0378282 -3.2331595 -2.1045139 0.97986466 -3.2242382 -2.1269875 0.98105729 -3.2571354 -2.1775095 0.9946537 -3.3257053 -2.2530353 1.0189841 -3.2597866 -2.2376597 1.0034795 -3.6572981 -2.5438647 1.1265627 -9.1021357 -6.4164433 2.767673 -9.0625935 -6.4721723 2.767673 -3.9277022 -2.8407571 1.2229302 -3.9297788 -2.8791568 1.2288935 -3.5206258 -2.6125927 1.1091498 -4.6206179 -3.4735103 1.4521608 -4.6015358 -3.5035617 1.4528764 -3.9455938 -3.0423541 1.2560863 -3.984247 -3.1113484 1.2739764 -4.0442853 -3.1984043 1.2987839 -3.4493613 -2.7622674 1.1177369 -3.4217896 -2.7748141 1.1143975 -3.6500671 -2.99735 1.192398 -3.7973442 -3.1575704 1.2453524 -3.3344831 -2.8072965 1.102948 -3.4716222 -2.959415 1.1528014 -4.1288681 -3.5639679 1.3720137 -4.0374684 -3.5285096 1.349353 -3.5627203 -3.1521969 1.2007467 -3.5903196 -3.2161272 1.2162513 -3.3979084 -3.0814805 1.1590033 -3.1851206 -2.9242337 1.0943607 -3.1898744 -2.964885 1.1019938 -3.1716223 -2.9844019 1.1019938 -3.1595774 -3.0098367 1.1041405 -3.0746591 -2.9651062 1.0814799 -3.9289517 -3.8362329 1.3810779 -3.7803543 -3.7366731 1.3379034 -3.3215415 -3.3235092 1.1864346 -2.804523 -2.8405838 1.0127822 -7.4261637 -7.6173339 2.6453052 -3.1978364 -3.3197229 1.1644895 -2.4345362 -2.5581679 0.89971739 -2.4148042 -2.5688109 0.89828616 -3.062206 -3.2982931 1.1377738 -2.3686631 -2.5825012 0.89303845 -3.1120977 -3.4356916 1.1709299 -2.2778845 -2.5454984 0.87133193 -2.2557938 -2.5521488 0.86894655 -2.2841425 -2.6164358 0.88540536 -3.0065591 -3.4874892 1.1632968 -3.1569276 -3.7077749 1.2284164 -2.2249732 -2.6453979 0.88135034 -2.2111804 -2.6619892 0.88230443 -2.1732566 -2.6492205 0.87395579 -2.1587937 -2.6647699 0.8746714 -2.1545305 -2.6931365 0.87944204 -2.1692557 -2.7459421 0.89184576 -2.1577396 -2.766094 0.8939926 -2.1531658 -2.7954423 0.89900178 -2.1359727 -2.8086014 0.89900178 -2.156585 -2.8721449 0.91450649 -2.0984557 -2.8306999 0.89780915 -2.0420644 -2.7902193 0.88158888 -2.0186524 -2.7940354 0.87896496 -1.9873801 -2.786598 0.87300164 -2.0048871 -2.8479857 0.88779074 -1.9823897 -2.8530548 0.8856439 -1.9571608 -2.8539495 0.88230443 -1.9434208 -2.8715358 0.88397419 -0 -0 0 -2.4549816 -3.7256889 1.1282325 -2.4347208 -3.7447538 1.1294252 -1.8765575 -2.9249053 0.88588244 -1.8715529 -2.9568832 0.89184576 -1.8533746 -2.9683111 0.89184576 -1.8590493 -3.0184991 0.90305686 -1.9437951 -3.2000332 0.95195621 -1.9520568 -3.2585614 0.96531409 -1.917709 -3.2462254 0.95839661 -1.9060596 -3.2721992 0.9624517 -1.8656437 -3.248457 0.95243329 -1.7949862 -3.1702487 0.92714876 -1.8000969 -3.2253065 0.93955249 -1.7531404 -3.1869309 0.92571753 -1.7252265 -3.1822579 0.92142391 -1.3878291 -2.597368 0.75564319 -1.7642512 -3.3518836 0.96269023 -1.7552674 -3.3850646 0.9688921 -1.7375543 -3.4018259 0.9705618 -1.7114146 -3.4020112 0.96769941 -1.6844764 -3.4002633 0.96435994 -0 -0 0 -1.5863277 -3.3033533 0.93239647 -1.4884734 -3.1488161 0.88779074 -1.57719 -3.3903813 0.95076352 -1.6217936 -3.5430644 0.98940599 -1.2927791 -2.8701463 0.80549669 -1.580158 -3.5671396 0.99059862 -1.4256804 -3.2722411 0.90902019 -0 -0 0 -0 -0 0 -0 -0 0 -0.96395534 -2.3687832 0.66046834 -0.94508135 -2.3638306 0.65760595 -1.551405 -3.9526522 1.075278 -0 -0 0 -0 -0 0 -1.4706157 -3.9595981 1.0697918 -0.90668285 -2.4866107 0.6824134 -1.1494747 -3.214617 0.87085485 -0 -0 0 -1.2862592 -3.7419133 1.0041951 -0.8246302 -2.4464459 0.66643167 -1.1918876 -3.6107724 0.96626824 -0.96377289 -2.9803653 0.80168015 -0.9419542 -2.9751112 0.79881775 -0.88922995 -2.8695078 0.7701937 -1.281041 -4.2272906 1.1172599 -0.74064112 -2.497489 0.67215645 -0.80656421 -2.7827754 0.74395502 -0.8639906 -3.0511992 0.81122148 -0.92047697 -3.3288474 0.88063473 -0.89700121 -3.3231807 0.87777233 -0.81953746 -3.1116672 0.82267106 -0.80163532 -3.1213405 0.82386374 -0.75633281 -3.021621 0.79738653 -2.1605661 -8.8717213 2.2751014 -1.8978877 -8.0059814 2.0532651 -0.68663001 -2.9744654 0.78212041 -0.66942739 -2.9833605 0.78331304 -1.8414493 -8.4589901 2.1586969 -1.8061622 -8.548995 2.1784952 -1.5088332 -7.3640065 1.8786587 -0.55387694 -2.7864659 0.73012012 -1.6040061 -8.3490391 2.1205316 -0.50563943 -2.7176218 0.71127594 -1.5915722 -8.8708935 2.2460003 -0.49525714 -2.8566351 0.74443209 -1.3017317 -7.8044281 1.9757419 -1.3402274 -8.3511629 2.1097977 -1.217099 -7.8927603 1.9938704 -0.43224317 -2.9169247 0.75659734 -1.203428 -8.495573 2.1398528 -1.1135279 -8.2237091 2.0706782 -1.01533 -7.8605371 1.9790813 -0.95086533 -7.7345653 1.9464022 -0.31063217 -2.6548636 0.6888538 -0.3111656 -2.8092332 0.72654212 -0.28979847 -2.7714872 0.71676224 -0.26559326 -2.6997585 0.69863367 -0.27182609 -2.9498749 0.75993681 -0.25959918 -3.0201867 0.77687263 -0.65546143 -8.2416553 2.063045 -0.21386594 -2.9049828 0.74777156 -0.5552488 -8.2636127 2.066623 -0.17436479 -2.8443816 0.7322669 -0 -0 0 -0.13520572 -2.7590079 0.71079892 -0 -0 0 -0.091548368 -2.4906616 0.64448661 -0.11588217 -3.8054953 0.96746087 -0.063097827 -2.5799453 0.66619313 -0.044785943 -2.4414339 0.63208288 -0.032754149 -2.6931691 0.69386303 -0 -0 0 --0 -0 0 --0.018783344 -2.9865918 0.76590014 --0.037270185 -2.9990442 0.76900107 --0.056131396 -3.0230329 0.77496439 --0.075410187 -3.0517564 0.78212041 --0.094801009 -3.0725908 0.78736812 --0 -0 0 --0.13452624 -3.1177666 0.79881775 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.3709383 -3.6173697 0.98248851 --1.3938082 -3.6107013 0.98296559 --0 -0 0 --0 -0 0 --0 -0 0 --1.4905584 -3.5960393 0.98845184 --1.51184 -3.5850363 0.98797476 --0 -0 0 --0 -0 0 --1.6177635 -3.6471367 1.0123051 --1.6469024 -3.6521895 1.0163603 --1.6656368 -3.6340711 1.0142134 --1.5906628 -3.4151745 0.957681 --1.5334378 -3.2403486 0.91283673 --1.5490807 -3.2221274 0.91045141 --1.5739393 -3.223032 0.91331381 --1.5962765 -3.2185328 0.91474497 --1.6116239 -3.2000058 0.91235965 --1.6276891 -3.1831408 0.91045141 --1.642265 -3.163614 0.90782756 --1.6675346 -3.1646447 0.91092849 --1.858309 -3.4745774 1.00014 --0 -0 0 --0 -0 0 --4.9883356 -8.9239759 2.5434515 --1.9094806 -3.3687961 0.98344266 --1.9940435 -3.468128 1.0149291 --1.9330565 -3.3149147 0.97485542 --1.9414897 -3.2829332 0.96913064 --1.9930791 -3.3234186 0.98415822 --0 -0 0 --4.5520983 -7.3808045 2.1622751 --5.1817794 -8.2872458 2.4330103 --5.2408514 -8.2684183 2.4368269 --4.8184395 -7.5000091 2.2219083 --2.1951485 -3.3723092 1.0206538 --2.2152643 -3.3579659 1.0204153 --2.2406864 -3.3515747 1.0225621 --2.2666583 -3.3458016 1.0249474 --2.2750487 -3.31422 1.0196997 --5.4312844 -7.8061948 2.3681293 --5.3850636 -7.6393843 2.3280556 --5.4120803 -7.5785403 2.3197072 --5.445385 -7.5270944 2.3142209 --5.4897456 -7.4911904 2.3135052 --5.5813427 -7.5189619 2.3323493 --5.6548071 -7.5210524 2.3435605 --5.6931992 -7.4761705 2.3404596 --5.7739625 -7.4864631 2.354533 --5.8287582 -7.4623728 2.3581109 --5.8461156 -7.3906736 2.3469 --6.4214711 -8.016283 2.5551395 --6.4827747 -7.9918137 2.5599103 --6.56498 -7.9924054 2.5727911 --6.5356402 -7.8579059 2.5427358 --6.635036 -7.8785605 2.5622957 --6.7279968 -7.8901615 2.5792315 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.1599503 -9.6121922 3.2936392 --9.1553707 -9.4901152 3.2712171 --9.1808558 -9.4004145 3.2597675 --9.3489838 -9.4557695 3.2984099 --9.0392447 -9.0310459 3.1707945 --9.1636152 -9.0436211 3.1946478 --9.2015476 -8.9702778 3.1886845 --9.2473202 -8.9048939 3.1855836 --10.466419 -9.9555988 3.5803564 --10.524478 -9.8885307 3.5794022 --10.602751 -9.8402815 3.5853655 --10.673669 -9.7848825 3.5889435 --9.0201006 -8.1679659 3.021234 --9.0490551 -8.0936928 3.0143166 --9.0730715 -8.0155153 3.0059679 --9.1081791 -7.9475627 3.0014358 --11.077679 -9.5466843 3.6242466 --10.274445 -8.7452927 3.346355 --9.7108717 -8.1634665 3.1483724 --10.219585 -8.4845734 3.2948318 --9.7029209 -7.9556437 3.1142621 --10.553902 -8.5455055 3.3678231 --9.7482386 -7.7947392 3.0980418 --9.8324699 -7.7636619 3.1094913 --9.9028988 -7.7210965 3.1166472 --11.613118 -8.9402437 3.6321182 --11.692498 -8.8876219 3.6397512 --11.667581 -8.7562599 3.6154208 --10.418704 -7.7196908 3.2173085 --10.383569 -7.5954232 3.1922624 --11.758276 -8.4905586 3.5946684 --11.340389 -8.0834627 3.4529796 --11.352444 -7.9874654 3.4417684 --0 -0 0 --11.438392 -7.8398666 3.4384289 --11.346309 -7.6748719 3.3969243 --11.360877 -7.5835438 3.3873827 --11.178477 -7.3630686 3.3201163 --11.524743 -7.4901218 3.4083738 --0 -0 0 --16.154535 -10.218793 4.7274637 --16.208693 -10.114338 4.7250786 --16.145563 -9.9378338 4.6890597 --0 -0 0 --0 -0 0 --0 -0 0 --16.09251 -9.3685951 4.6060505 --6.4541826 -3.7054133 1.8602916 --16.263741 -9.2029276 4.6222706 --11.349741 -6.3310995 3.2244644 --11.413905 -6.2753735 3.2316206 --11.473543 -6.2167854 3.2375839 --6.5056949 -3.4741335 1.8438329 --6.5045424 -3.4223964 1.837631 --6.5055876 -3.3721452 1.8321446 --7.4292016 -3.7930646 2.0811737 --7.4662185 -3.7543869 2.08499 --7.4690967 -3.6985955 2.0795038 --16.126154 -7.8611112 4.4388385 --7.043746 -3.381058 1.9514114 --7.0020123 -3.3083286 1.9344755 --7.0186577 -3.2636654 1.9335214 --7.2089977 -3.2984962 1.9795583 --7.1679945 -3.2267041 1.9630996 --7.1610169 -3.1708696 1.9559436 --7.1830096 -3.1280334 1.9566592 --17.039738 -7.2946162 4.5850592 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --17.843155 -6.872942 4.7288952 --9.5460978 -3.6105046 2.5391579 --6.9331818 -2.5740821 1.848842 --9.5431461 -3.4761417 2.5269926 --6.9358964 -2.4786808 1.8414475 --7.099453 -2.4880862 1.8800899 --7.1063194 -2.4416392 1.8779432 --7.6163435 -2.5646501 2.006274 --7.5028167 -2.4752913 1.9728794 --7.5631461 -2.4438329 1.9845675 --7.6307778 -2.4140689 1.9981639 --7.6027713 -2.3539953 1.9871914 --9.5159817 -2.8821986 2.4745152 --12.615694 -3.7362895 3.264061 --9.0077124 -2.6080825 2.3356888 --9.0188742 -2.5514419 2.334496 --8.8714781 -2.4510756 2.2929914 --8.8132133 -2.3768802 2.2743857 --12.325208 -3.2425737 3.1626842 --13.062623 -3.3509445 3.3446853 --12.302831 -3.0757759 3.1471796 --13.167869 -3.2062407 3.3611441 --0 -0 0 --9.1417208 -2.107796 2.336643 --17.794241 -3.9868371 4.5113525 --17.612448 -3.8327811 4.4595909 --12.465667 -2.6330962 3.1617301 --12.771765 -2.6159668 3.2344828 --12.750425 -2.5301828 3.2251801 --17.281569 -3.3188355 4.3546362 --13.299939 -2.4699411 3.3549423 --17.342024 -3.1102843 4.3598838 --0 -0 0 --17.296505 -2.8835087 4.3393698 --17.387707 -2.7891638 4.3577371 --17.798016 -2.7430463 4.4555354 --16.562719 -2.4487998 4.1447268 --0 -0 0 --16.505871 -2.2337801 4.123497 --16.51445 -2.1318386 4.1223044 --18.18223 -2.2336771 4.5318666 --18.064407 -2.1067801 4.4994259 --17.747835 -1.9595779 4.4180861 --12.720368 -1.325868 3.1736569 --17.263128 -1.6919402 4.2928557 --12.762758 -1.1721541 3.1803358 --12.797771 -1.0962223 3.1872532 --17.338783 -1.3776617 4.304544 --12.558438 -0.92065406 3.1252346 --18.100481 -1.2148103 4.4882145 --17.995152 -1.0968784 4.4605451 --13.072644 -0.71667093 3.2480793 --13.146635 -0.63983798 3.2652538 --13.165837 -0.55981845 3.2690701 --13.198139 -0.48008031 3.2762263 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --36.584564 30.398211 11.136353 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --16.173849 14.65772 5.1279888 --16.040552 14.717184 5.1143489 --16.010597 14.871662 5.1336718 --15.872931 14.92626 5.1188955 --15.529244 14.783669 5.0377383 --15.359006 14.802316 5.0120497 --14.443298 14.091784 4.7431169 --14.339932 14.163718 4.7376609 --14.256887 14.255571 4.7390251 --14.30466 14.479948 4.7840366 --14.057752 14.405755 4.7312956 --14.981514 15.541999 5.0718379 --14.878481 15.625874 5.0693374 --14.757636 15.690626 5.060926 --13.951194 15.016801 4.8174543 --13.245785 14.434145 4.6058087 --13.167434 14.526692 4.609446 --0 0 0 --13.046238 14.752836 4.6299062 --12.978533 14.859012 4.6380901 --13.446264 15.586491 4.837914 --13.379428 15.702798 4.8483715 --13.396943 15.920204 4.8897457 --13.557941 16.31366 4.9843154 --13.28027 16.18051 4.9190712 --13.278851 16.382732 4.9554443 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --11.360662 15.514688 4.5214691 --0 0 0 --0 0 0 --0 0 0 --9.3688612 13.47647 3.864027 --9.2342033 13.458224 3.842658 --9.0373297 13.346108 3.7951458 --8.8275757 13.210228 3.7414956 --8.4933138 12.880424 3.6341953 --10.18959 15.660995 4.3941636 --10.10067 15.734695 4.397346 --8.208416 12.961355 3.6139629 --7.9971552 12.800878 3.5559933 --8.0262623 13.024632 3.6039603 --7.8627343 12.93633 3.5664506 --7.7161169 12.872409 3.5359881 --7.610723 12.875082 3.5239396 --0 0 0 --9.0286913 15.710681 4.2625389 --7.8496137 13.855181 3.7499068 --7.7649269 13.903934 3.7501342 --7.6752415 13.94364 3.7480881 --7.6591959 14.118866 3.7821879 --0 0 0 --7.67733 14.576251 3.8783491 --7.7949715 15.022422 3.983376 --7.5404286 14.752607 3.9001727 --7.628428 15.15348 3.992924 --0 0 0 --0 0 0 --0 0 0 --7.0223007 14.845803 3.8663003 --6.9528599 14.935402 3.8783491 --6.9357147 15.140684 3.9201779 --6.8694921 15.242439 3.9354091 --0 0 0 --0 0 0 --0 0 0 --6.8080473 16.15304 4.1245489 --6.6972513 16.166618 4.1175013 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.8504496 13.821189 3.4518757 --4.7810788 13.895811 3.4630148 --4.4505024 13.197755 3.2838778 --4.379827 13.256252 3.2916071 --4.3011041 13.291215 3.293653 --4.2435908 13.393479 3.3122942 --4.5034413 14.522381 3.5819092 --4.4269724 14.591674 3.592139 --4.298296 14.486927 3.5600853 --3.8810658 13.381356 3.2850144 --3.8156157 13.463943 3.2993364 --4.2592673 15.388554 3.7599094 --4.1718774 15.440722 3.7662747 --3.5753345 13.562969 3.3068383 --3.4922888 13.585595 3.3070657 --3.4419987 13.739015 3.338892 --3.5956697 14.735255 3.5732706 --3.4763792 14.635767 3.544172 --0 0 0 --3.3759089 15.030778 3.6287394 --3.3272126 15.25101 3.6764789 --3.2404311 15.30353 3.6842082 --2.8187261 13.727235 3.3038831 --2.8828692 14.490199 3.4814286 --2.7417815 14.237 3.417094 --2.6595445 14.281318 3.4236865 --2.3773618 13.216259 3.1672568 --2.4869218 14.32919 3.4275513 --2.2379732 13.381785 3.1997652 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --1.8946189 13.945911 3.3179774 --1.8112663 13.974657 3.3220694 --0 0 0 --1.6269456 13.887506 3.2966084 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.85325205 13.896908 3.2827413 -0.93555313 13.847689 3.2725112 -1.0222212 13.864996 3.2779672 -1.1094469 13.885643 3.2843325 -1.1919551 13.847528 3.2770579 -1.3415639 14.541047 3.4414184 -1.4406811 14.633331 3.4650607 -1.6299505 15.575314 3.6883001 -1.7213045 15.527271 3.6794341 -1.8231119 15.572515 3.6926193 -1.8511941 15.013996 3.5639498 -2.0753579 16.02219 3.8040116 -2.0126376 14.82321 3.5246217 -2.0216796 14.234022 3.3886776 -0 0 0 -2.1448877 13.876117 3.3102484 -2.2383399 13.914613 3.3225241 -2.4970512 14.937951 3.5680418 -2.4400461 14.065522 3.3650351 -2.496151 13.882557 3.3252521 -2.8106096 15.099124 3.6178274 -2.8330777 14.717257 3.5312142 -0 0 0 -2.8543012 13.905833 3.3463938 -0 0 0 -3.0871804 14.156149 3.4148207 -3.1727028 14.131239 3.4134567 -3.25453 14.090631 3.4084554 -0 0 0 -3.8543277 15.800831 3.8292453 -0 0 0 -3.5101669 13.659427 3.3247974 -3.5507388 13.473781 3.2852418 -4.2927351 15.89327 3.8756211 -4.3870573 15.855368 3.8728931 -4.4967365 15.872188 3.8835776 -4.2846413 14.777118 3.6241927 -4.477684 15.095989 3.7083051 -4.4933534 14.814753 3.646471 -4.5864773 14.794344 3.6482897 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -27.761995 4.6433468 6.6033683 -27.764967 4.4688911 6.5974579 -27.771654 4.2953186 6.5926838 -27.775331 4.1215463 6.5874553 -27.784674 3.9488497 6.583818 -27.782326 3.7747514 6.5776796 -27.766335 3.5992033 6.5685863 -27.736673 3.4224434 6.5565381 -27.718462 3.2476566 6.5474448 -27.709799 3.0744035 6.5408521 -27.703928 2.9017849 6.5351691 -27.694077 2.7290678 6.5288038 -27.68412 2.5566704 6.5226655 -27.687643 2.3857524 6.5199375 -27.673609 2.2135673 6.5133452 -27.667248 2.0422895 6.5087986 -27.659826 1.8711731 6.504252 -27.649403 1.7001053 6.4992504 -27.64473 1.5296125 6.4958405 -27.639004 1.3592411 6.4924307 -27.629313 1.188872 6.4883385 -27.61565 1.0185653 6.4835649 -27.611647 0.84880036 6.4812913 -27.60368 0.67905098 6.4783359 -27.609274 0.50970119 6.4787908 -27.605064 0.34020019 6.4771996 -27.593 0.17072773 6.4740167 -27.590607 0.0014168681 6.4733348 -27.577436 -0.16779909 6.4703794 -27.571018 -0.33694845 6.469243 -27.563564 -0.50602543 6.4681063 -27.556046 -0.6750474 6.4671969 -27.553331 -0.84417504 6.4676514 -27.535955 -1.0127938 6.4649234 -27.521441 -1.1813983 6.4631047 -27.519508 -1.3505306 6.464469 -27.51362 -1.5195228 6.4651508 -27.506695 -1.6884936 6.4658327 -27.498732 -1.8574365 6.4665151 -27.492643 -2.0265601 6.4678788 -27.483574 -2.1955237 6.4687881 -27.463764 -2.3636177 6.4674244 -27.457472 -2.5328925 6.46947 -27.433661 -2.7005577 6.4676514 -27.449503 -2.8722818 6.4753809 -27.431364 -3.0406547 6.4753809 -27.434435 -3.2115171 6.4806094 -27.397783 -3.3777657 6.4767447 -27.411308 -3.5503142 6.4849286 -27.392868 -3.7189641 6.4858379 -27.351215 -3.8843722 6.4815187 -27.364433 -4.057693 6.4903846 -17.612123 -2.7222714 4.1927481 -18.391178 -2.9583247 4.3809781 -18.372681 -3.0711153 4.3809781 -19.190166 -3.3289108 4.5792112 -18.489838 -3.3244309 4.4180331 -0 -0 0 -17.421576 -3.3535876 4.1741071 -17.495228 -3.4792233 4.1966128 -19.230698 -3.9471273 4.6153569 -0 -0 0 -0 -0 0 -20.01659 -4.4938979 4.8215461 -0 -0 0 -20.175962 -4.790482 4.8733778 -20.168894 -4.9197273 4.8788338 -20.177057 -5.0530872 4.888154 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9709044 -2.2584317 1.9664935 -7.9578323 -2.3075688 1.9667208 -0 -0 0 -0 -0 0 -0 -0 0 -8.0946903 -2.5642109 2.0146878 -7.9972682 -2.5874546 1.9946826 -8.0117559 -2.6465547 2.0021844 -0 -0 0 -19.934326 -6.856811 4.9536257 -0 -0 0 -19.830343 -7.0943594 4.949079 -0 -0 0 -0 -0 0 -0 -0 0 -20.584295 -7.9391079 5.1827755 -0 -0 0 -18.720284 -7.485393 4.7390251 -0 -0 0 -0 -0 0 -18.543434 -7.8135791 4.7299318 -18.385942 -7.8804111 4.7021971 -18.32653 -7.9884076 4.6994696 -18.269157 -8.0971556 4.6974235 -19.172693 -8.638731 4.941577 -19.153856 -8.7720232 4.9504428 -19.084663 -8.8823986 4.9465785 -19.047409 -9.007658 4.9511251 -0 -0 0 -19.111347 -9.3265629 4.9968185 -0 -0 0 -14.42692 -7.2611532 3.802875 -14.404641 -7.3610592 3.8087857 -0 -0 0 -0 -0 0 -0 -0 0 -14.222221 -7.7137427 3.8094676 -14.116608 -7.7689371 3.7940092 -3.5874407 -2.0034215 0.99169719 -3.6267681 -2.0546722 1.0055645 -3.9729526 -2.2830663 1.1021801 -3.1477752 -1.8347521 0.88303286 -3.8373268 -2.2682304 1.0730817 -3.1433995 -1.8842549 0.88803416 -3.1259532 -1.8999671 0.88644284 -3.8645701 -2.381386 1.0921776 -3.1569149 -1.9722322 0.9014467 -3.8079045 -2.4114401 1.0846757 -3.1439486 -2.0181875 0.90462935 -3.1551793 -2.0528393 0.91122198 -3.1506541 -2.0775204 0.91349524 -3.1427059 -2.1000593 0.91485924 -3.1200843 -2.1127517 0.91213125 -3.0998344 -2.1268988 0.91008532 -3.1171122 -2.1669986 0.91872388 -3.1196814 -2.1972976 0.92327052 -3.5865526 -2.5591247 1.0610332 -3.5518401 -2.5673933 1.0555773 -3.4676588 -2.5390928 1.0357995 -3.4840848 -2.5841041 1.04512 -3.4557052 -2.596076 1.0414827 -4.307754 -3.2775903 1.2960937 -4.0630827 -3.1310043 1.2299403 -3.9992657 -3.1211298 1.2167552 -4.0732541 -3.2192702 1.2444896 -4.0290937 -3.2247324 1.2372149 -3.9903166 -3.234066 1.2315316 -3.6722841 -3.0138667 1.1415085 -3.414789 -2.8378158 1.0689899 -3.2885168 -2.7671838 1.0357995 -2.9512284 -2.5145078 0.93759239 -2.9047723 -2.5058558 0.92804444 -2.902545 -2.5351617 0.93213642 -2.9066331 -2.5703392 0.93827438 -2.8915327 -2.5887752 0.93850172 -3.3006127 -2.9916325 1.0723997 -3.7156053 -3.4094682 1.2097079 -3.6739235 -3.4129832 1.2031152 -3.6777427 -3.4588101 1.2110718 -3.6881905 -3.5115261 1.2213017 -2.9730926 -2.865768 0.99647117 -0 -0 0 -2.9169159 -2.8815072 0.9896512 -3.9052806 -3.9053192 1.3217821 -2.837534 -2.8727486 0.97510201 -2.9259551 -2.9988291 1.0105656 -3.2217686 -3.3427405 1.1162747 -2.4336352 -2.5563562 0.85643512 -2.4072289 -2.559891 0.85279781 -2.3934648 -2.5767536 0.8534798 -2.3604898 -2.5727365 0.84756923 -2.8685317 -3.1650999 1.0296615 -2.3599205 -2.6363339 0.85848111 -2.3191855 -2.6230443 0.84984255 -2.2902343 -2.6225567 0.84529591 -2.2308435 -2.5864208 0.82983738 -2.2452476 -2.6356394 0.84074926 -2.2578764 -2.6836405 0.85120648 -2.2780912 -2.7416308 0.86461908 -2.2334235 -2.7216842 0.85438913 -2.2473416 -2.7731624 0.86575574 -2.5948043 -3.2422929 1.0019271 -2.4112117 -3.051116 0.94032037 -2.354697 -3.0174904 0.92599851 -2.1482909 -2.788142 0.8541618 -2.0432763 -2.685802 0.82028949 -2.0384569 -2.71386 0.82483608 -2.0919652 -2.8209555 0.85234314 -2.0976305 -2.8651659 0.86143643 -2.0879979 -2.8890316 0.86461908 -2.0272417 -2.8415449 0.8473419 -2.3103485 -3.2806621 0.96919143 -1.9966661 -2.8726048 0.84916055 -1.9437402 -2.8334124 0.83461136 -1.9285023 -2.848511 0.83552068 -1.9218094 -2.8764837 0.84006727 -1.7995843 -2.7296925 0.79573768 -1.9102653 -2.9365816 0.85029721 -1.9158846 -2.9851243 0.8605271 -1.8761693 -2.963093 0.85120648 -1.8600168 -2.9778528 0.85211581 -1.8069682 -2.9328353 0.83665729 -1.7894444 -2.9446998 0.83688462 -1.7783521 -2.9673176 0.84006727 -2.0123529 -3.4048655 0.9557789 -2.0478203 -3.5139008 0.98192197 -1.6443385 -2.8619254 0.80301231 -1.6205064 -2.8609464 0.80005699 -1.598648 -2.863184 0.798011 -1.5932597 -2.8951199 0.80392164 -1.5782517 -2.9099772 0.80528563 -1.5562348 -2.9118772 0.80323964 -1.6340972 -3.103169 0.85120648 -1.6881373 -3.2540295 0.8882615 -1.2816468 -2.5082104 0.69002867 -1.6717247 -3.3214703 0.90053737 -1.6932704 -3.4162958 0.92258853 -1.1314548 -2.318723 0.6347872 -1.6600778 -3.4552495 0.92736244 -1.5384887 -3.2532201 0.87257564 -1.6479663 -3.5406907 0.94418496 -1.635944 -3.5719838 0.94964093 -1.2038479 -2.6719503 0.71662641 -1.301101 -2.935678 0.78209782 -1.4173442 -3.2515714 0.8605271 -1.4088783 -3.2870574 0.867347 -1.5982256 -3.7927787 0.99328852 -1.5782779 -3.8106108 0.99533451 -1.5772656 -3.8752413 1.0092016 -1.5596061 -3.9002173 1.0130663 -1.5274551 -3.8888667 1.0078378 -0 -0 0 -0 -0 0 -0 -0 0 -0.90924048 -2.4934566 0.65206438 -1.1268955 -3.1499667 0.81346953 -0.86954355 -2.4786983 0.64569908 -0.84671372 -2.4618871 0.64024311 -0.85524291 -2.5371656 0.65752029 -1.0694171 -3.2377002 0.82847339 -0.95507807 -2.952352 0.75686407 -0.93782723 -2.9609418 0.75754607 -1.3240594 -4.2706609 1.0762644 -1.2961338 -4.2731133 1.0749004 -0.80837113 -2.7256348 0.69616663 -0.7916317 -2.7305436 0.69616663 -0.78203225 -2.7606461 0.70230454 -0.91653663 -3.3125527 0.83483869 -0.88603288 -3.2805099 0.8257454 -0.816733 -3.0994396 0.78073382 -0.79988205 -3.1128809 0.78277981 -0.75686204 -3.0223241 0.75981939 -2.1118062 -8.6549768 2.1122127 -1.910114 -8.0424538 1.9621742 -0.75810844 -3.2824352 0.8189255 -0.78021199 -3.475153 0.86393708 -0.769669 -3.5293496 0.87575829 -1.8057796 -8.5289564 2.0676558 -0.5956341 -2.9022713 0.72412837 -0.66789615 -3.3585856 0.83188337 -0.5439502 -2.826169 0.70435053 -0.54246849 -2.9146578 0.72458303 -0.51043481 -2.8393402 0.70594186 -0.49899909 -2.8769598 0.71412581 -0.49884874 -2.984659 0.73890489 -1.275537 -7.9265876 1.9067054 -0.62935412 -4.0713005 0.99419785 -1.2049016 -8.1217747 1.9492162 -1.1524408 -8.1106968 1.9448969 -0.44246262 -3.259093 0.80028433 -0.99235326 -7.6577773 1.835096 -0.49093276 -3.98141 0.9689641 -0.30974975 -2.6467102 0.65456504 -0.44440055 -4.0084281 0.97396535 -0.29632151 -2.8323932 0.6973033 -0.39938015 -4.056221 0.98396796 -0.26458663 -2.8687856 0.70503253 -0.24948753 -2.8994617 0.71185249 -0.2335559 -2.9242353 0.7173084 -0.21603894 -2.9314404 0.71867239 -0.19785067 -2.929796 0.7179904 -0.18034829 -2.9387307 0.71980906 -0.15784664 -2.8590786 0.70094055 -0 -0 0 -0.10629153 -2.4784441 0.61159939 -0.14167534 -3.8502254 0.93190908 -0.081616797 -2.6664464 0.65524697 -0.063888393 -2.6114063 0.6422891 -0.047594074 -2.5971444 0.63887918 -0.034432627 -2.8223221 0.69139266 -0.017525187 -2.8886986 0.70685118 --0.00019807987 -2.9160187 0.71321648 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.4053142 -3.6427696 0.94395763 --1.4294193 -3.6386104 0.94509429 --1.4517184 -3.629771 0.94509429 --1.464052 -3.5964415 0.93895638 --1.4793849 -3.5711958 0.9348644 --1.5133692 -3.5907683 0.94213897 --1.5511016 -3.618113 0.95145959 --3.572871 -8.1961308 2.1197147 --3.61323 -8.1517963 2.1140313 --1.6422383 -3.6439967 0.96555412 --1.6653774 -3.6356223 0.96600878 --1.686421 -3.6226866 0.96532679 --1.5878899 -3.3569698 0.89940071 --1.554059 -3.2339303 0.87007499 --1.5713104 -3.2190828 0.86871099 --1.5962219 -3.2198513 0.87143898 --1.6115707 -3.2012978 0.86916566 --1.6338419 -3.196552 0.87052965 --1.6543216 -3.1881957 0.87098432 --1.663871 -3.1590285 0.86598307 --4.771822 -8.928031 2.3956947 --4.8840818 -9.0047312 2.4238839 --4.3251314 -7.8586564 2.1265347 --5.005609 -8.9645243 2.4293399 --0 -0 0 --1.9580307 -3.4072204 0.94986826 --1.9421277 -3.3320382 0.93281841 --1.9605544 -3.3167052 0.93190908 --2.0409389 -3.4048495 0.95918882 --2.0562294 -3.3831081 0.95668817 --2.0943162 -3.398617 0.96441746 --2.1269956 -3.4046993 0.9696461 --2.1462836 -3.389116 0.9689641 --2.1644084 -3.3717852 0.96782744 --2.2163854 -3.4066036 0.98123997 --0 -0 0 --0 -0 0 --5.1743231 -7.6423783 2.1870048 --5.2971382 -7.7213039 2.2183764 --5.3560867 -7.7054486 2.2231505 --5.3937345 -7.6589036 2.2192857 --5.5401645 -7.7651896 2.2592962 --5.5705943 -7.7073717 2.2524762 --5.6131792 -7.66676 2.2506576 --0 -0 0 --5.9010062 -7.8558092 2.3261313 --5.7244573 -7.5241637 2.2395182 --5.799046 -7.5259252 2.2504301 --6.1021171 -7.8195634 2.3479552 --6.3407745 -8.0234156 2.4197919 --6.3521619 -7.9372177 2.4056973 --6.4847393 -8.0017443 2.4368417 --6.5046816 -7.9264221 2.4261572 --6.5749764 -7.9125762 2.4341137 --6.5456648 -7.7796822 2.4059248 --6.7220998 -7.8906002 2.4523003 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.2110987 -9.4406729 3.1115608 --9.2572193 -9.3721981 3.1076961 --9.4150791 -9.4157619 3.1408865 --9.2489147 -9.136754 3.0674586 --9.199564 -8.9771309 3.0331316 --9.4094181 -9.0698767 3.0833716 --9.4176416 -8.9669781 3.0681405 --9.4192829 -8.858984 3.0510907 --10.541466 -9.7932749 3.3914056 --9.0279198 -8.2844553 2.892868 --9.0554943 -8.2079763 2.8855937 --9.1281776 -8.1723957 2.8926408 --9.1351118 -8.0781698 2.8792284 --9.1867065 -8.0238876 2.8799102 --9.2335548 -7.9654598 2.8792284 --9.3356247 -7.9541278 2.895596 --9.4379015 -7.9418416 2.9119639 --10.373182 -8.6207504 3.1811242 --9.7446613 -7.9978013 2.9753895 --9.7890129 -7.9341793 2.9740255 --10.794674 -8.6401291 3.2602353 --11.483112 -9.0761528 3.4493749 --9.963335 -7.7760191 2.9828913 --11.538862 -8.8923483 3.4332345 --11.573833 -8.8066368 3.4275513 --11.643223 -8.7471542 3.4320979 --11.580136 -8.5891056 3.3982255 --10.391239 -7.6088467 3.0390422 --11.382402 -8.2278461 3.3111577 --11.283648 -8.051507 3.2684193 --11.332839 -7.98212 3.2684193 --0 -0 0 --11.331174 -7.7746778 3.2404575 --11.406887 -7.7241158 3.2484143 --11.437873 -7.6431575 3.2438676 --11.03661 -7.277442 3.118608 --11.541416 -7.5091262 3.2468228 --0 -0 0 --16.731785 -10.59636 4.6558218 --16.817961 -10.506911 4.6617322 --16.171635 -9.9656715 4.4669094 --16.954784 -10.305303 4.6642332 --16.030445 -9.609252 4.3955274 --11.133944 -6.58144 3.0517726 --11.211977 -6.5350676 3.0620027 --11.247643 -6.4637232 3.0608659 --11.301496 -6.4027481 3.0647306 --11.368626 -6.3489528 3.0722325 --6.5344515 -3.5966365 1.7737166 --15.683574 -8.5080671 4.1977491 --15.856574 -8.476409 4.2298031 --6.5288954 -3.438535 1.7550755 --6.5688872 -3.4082775 1.7600768 --6.5532579 -3.349292 1.7505288 --16.192032 -8.1512766 4.2643576 --6.3644032 -3.1548603 1.6907407 --16.32497 -7.9686217 4.2732234 --6.9968567 -3.3620884 1.844644 --7.0252771 -3.3228409 1.8466899 --7.2971401 -3.3968096 1.9114794 --7.2284265 -3.3110073 1.8885188 --6.3386021 -2.8564441 1.6555043 --6.354229 -2.8167081 1.6550497 --0 -0 0 --7.2511191 -3.1084404 1.874197 --0 -0 0 --17.532312 -7.2630448 4.4625902 --17.582861 -7.1579022 4.4641814 --17.709633 -7.0831532 4.485096 --7.1273403 -2.7997992 1.8200922 --7.0862389 -2.7335799 1.8055429 --7.0546126 -2.6717658 1.7934943 --7.0991697 -2.6389492 1.8005416 --7.0237441 -2.561965 1.7778085 --7.0448332 -2.5207887 1.7791725 --7.1483788 -2.5084746 1.8009963 --0 -0 0 --7.4766736 -2.5210807 1.8744243 --7.5243645 -2.4858508 1.882381 --0 -0 0 --8.6172371 -2.7301407 2.1426752 --8.722188 -2.7046185 2.1642716 --8.7749615 -2.6620762 2.1731374 --8.8060675 -2.6126163 2.1767747 --8.7209244 -2.5292349 2.1522231 --8.6688213 -2.4565575 2.1358552 --8.8648663 -2.45346 2.1797302 --12.485043 -3.3732152 3.0515454 --9.0157785 -2.3765147 2.2090559 --12.421751 -3.1930785 3.0265388 --13.109899 -3.2843697 3.1874895 --9.2784252 -2.2639558 2.2620239 --9.3319349 -2.216435 2.2715719 --9.3795166 -2.1670265 2.2797558 --14.534804 -3.2645001 3.5100725 --17.654331 -3.8515921 4.2507176 --12.620757 -2.6723003 3.0440433 --12.753293 -2.6187105 3.0717778 --17.247555 -3.4315288 4.1377339 --13.222427 -2.5463655 3.1758955 --17.40612 -3.2415485 4.1656957 --0 -0 0 --17.085747 -2.9654155 4.0806737 --17.181419 -2.8735368 4.0990877 --16.90741 -2.7211666 4.0302062 --17.150909 -2.6525044 4.0838566 --16.532068 -2.4530132 3.9340451 --17.186989 -2.4425218 4.0849929 --16.541626 -2.2473323 3.9294984 --18.366825 -2.3806617 4.3559718 --17.298622 -2.1343391 4.1013608 --17.613159 -2.0635176 4.1722884 --0 -0 0 --12.696747 -1.32968 3.0126717 --12.753122 -1.2565249 3.0240383 --12.774168 -1.1795034 3.027221 --12.802509 -1.10294 3.0322223 --11.957718 -0.95625693 2.8328526 --12.997661 -0.95923042 3.0749605 --18.007992 -1.2180955 4.2459435 --18.038456 -1.1090122 4.2513995 --18.050755 -0.99863243 4.2527633 --18.04487 -0.88728213 4.2500353 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --20.389574 12.244471 5.2879868 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --16.064939 14.765859 4.8540974 --15.969747 14.860162 4.8528028 --0 0 0 --14.074835 13.422752 4.3302369 --14.018902 13.534636 4.3384361 --0 0 0 --14.971972 14.814183 4.6866693 --14.291673 14.315598 4.5024118 --14.213163 14.412754 4.5054326 --0 0 0 --0 0 0 --14.700869 15.466779 4.7477288 --14.074382 14.990726 4.5762014 --13.832088 14.914989 4.5274401 --13.853748 15.123429 4.5645504 --13.258235 14.652776 4.3990641 --0 0 0 --13.130409 14.874401 4.4167562 --13.268607 15.218184 4.4939976 --13.336811 15.487257 4.5488 --0 0 0 --13.390674 15.94136 4.6329455 --13.653555 16.458368 4.7578692 --0 0 0 --12.477162 15.421443 4.4158931 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --11.553669 15.6055 4.3231173 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.3025932 13.583058 3.6704493 --9.1408911 13.52419 3.6395957 --9.1449594 13.710815 3.6743329 --9.0123501 13.693258 3.6549146 --8.8313828 13.599249 3.6156466 --8.2384405 12.858109 3.4070086 --8.1374798 12.873749 3.3979468 --8.0805483 12.959067 3.4072244 --7.9712143 12.960163 3.3947105 --0 0 0 --0 0 0 --9.6769886 16.403231 4.2409134 --9.1058531 15.653686 4.0342174 --8.9994316 15.691475 4.0296865 --7.9073257 13.985149 3.5826356 --7.7652798 13.932756 3.5571764 --7.7557936 14.11879 3.592129 --7.8712049 14.539658 3.6859839 --8.6292048 16.176399 4.0838413 --7.6431317 14.541803 3.6626821 --7.651176 14.776595 3.7095015 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --7.1350245 15.117964 3.7265463 --7.021565 15.117178 3.7157583 --6.9400387 15.184844 3.7217996 --7.1169853 15.828291 3.8674362 --7.0647492 15.973467 3.8920326 --6.9942532 16.080091 3.9073515 --6.9077411 16.151434 3.9142559 --6.7914796 16.153008 3.9045467 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.8697519 13.914187 3.2900679 --4.7430973 13.823735 3.2620194 --4.6236496 13.749843 3.2380702 --4.450305 13.50807 3.1752846 --4.336761 13.440334 3.1532774 --4.2462716 13.441551 3.1474519 --4.1657343 13.473883 3.1489623 --4.4110937 14.584324 3.3994572 --4.3395195 14.671979 3.4134815 --3.882586 13.429145 3.1215611 --4.1448154 14.673383 3.4018307 --3.7255447 13.50496 3.1282494 --4.1400738 15.375617 3.5511351 --3.5652418 13.571383 3.1332119 --3.5116951 13.709352 3.1597502 --0 0 0 --0 0 0 --3.4819486 14.715242 3.3739977 --3.2435944 14.093058 3.2281454 --3.3411684 14.93601 3.4145603 --3.2962956 15.17188 3.4633217 --3.1054718 14.728424 3.3586791 --2.783164 13.612588 3.1027901 --2.5892165 13.071938 2.9772189 --2.5080411 13.082783 2.97614 --2.6612628 14.35855 3.2594304 --2.364332 13.207733 2.9975002 --2.2955358 13.293196 3.0134661 --0 0 0 --2.2772341 14.226699 3.2162788 --2.1802559 14.177671 3.2022545 --2.0942192 14.197545 3.2037647 --1.9801786 14.019655 3.1612604 --1.8977736 14.058637 3.1673017 --1.7926604 13.923779 3.1347222 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.63959974 20.287649 4.5177307 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.0411924 13.960876 3.126092 -1.1253403 13.935732 3.1219923 -0 0 0 -1.3012522 13.974345 3.1338592 -1.4355513 14.454843 3.2423854 -2.1475451 20.348764 4.553978 -1.7000556 15.21634 3.4158549 -1.8150197 15.388899 3.4566331 -1.8877391 15.203053 3.4177966 -2.0695505 15.86992 3.5690429 -2.1671519 15.858857 3.5694745 -2.2671835 15.864594 3.5737896 -2.2288499 14.941613 3.3707614 -2.1924856 14.104641 3.1867199 -2.2643268 14.000316 3.1664386 -2.5243824 15.022274 3.3985941 -2.4477074 14.038809 3.1815417 -2.536581 14.0389 3.1849937 -2.8250692 15.104754 3.428153 -2.9351315 15.177251 3.4484344 -2.8077648 14.0559 3.1998811 -2.9044101 14.089092 3.2113163 -2.9824779 14.031847 3.2024703 -3.096518 14.141096 3.2313817 -3.1905308 14.154216 3.2387176 -3.6497486 15.739987 3.602917 -3.3191445 13.925933 3.1959975 -3.844486 15.701602 3.6046431 -3.9502809 15.715595 3.6132734 -3.5217404 13.656362 3.1489623 -3.562768 13.473075 3.1120677 -0 0 0 -4.3279781 15.589456 3.6076636 -4.1244664 14.510677 3.3660147 -4.3348198 14.902314 3.4620271 -4.4401045 14.922229 3.472815 -4.5435219 14.933939 3.4818769 -0 0 0 -4.771688 15.019438 3.5148878 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -27.967991 9.0230293 6.5262218 -27.980928 8.8380184 6.5165129 -27.999182 8.6552076 6.5083141 -27.991943 8.4651575 6.4945054 -27.975002 8.2730312 6.478755 -27.971769 8.0857706 6.4664569 -27.947559 7.8932886 6.4496279 -27.937105 7.7055626 6.4362507 -27.920687 7.5169935 6.4217949 -27.920952 7.3336291 6.4114385 -27.903938 7.1464272 6.3974142 -27.890419 6.9608927 6.384469 -27.881369 6.7771769 6.372818 -27.880619 6.5960832 6.3633246 -27.874889 6.4143777 6.3529682 -27.869888 6.233418 6.3430433 -27.838909 6.0473728 6.3275089 -27.837273 5.8683877 6.3188787 -27.8431 5.6914101 6.3121901 -27.840141 5.5130649 6.3037753 -27.82933 5.3336844 6.2938504 -27.814487 5.1541109 6.2832785 -27.818676 4.9785318 6.2772369 -27.801552 4.7996082 6.266665 -27.792913 4.6226845 6.2582502 -27.800507 4.4488239 6.2537193 -27.793501 4.2729678 6.2461681 -27.771862 4.0953717 6.2355957 -27.750059 3.9183383 6.2252393 -27.741646 3.7436855 6.2181196 -27.738914 3.5701559 6.2125096 -27.726376 3.3957326 6.2049584 -27.727291 3.2232885 6.2006431 -27.718399 3.0500004 6.194386 -27.712311 2.8773463 6.188992 -27.710009 2.7053556 6.1846771 -27.707611 2.5335908 6.1805778 -27.699286 2.3615427 6.1753993 -27.683077 2.1891534 6.1687107 -27.661903 2.0167685 6.1611595 -27.662066 1.8462205 6.1585703 -27.664103 1.6759235 6.1566286 -27.655338 1.5051408 6.1525292 -27.649424 1.3347168 6.1492925 -27.643435 1.1644633 6.1462722 -27.632496 0.9941932 6.1423883 -27.621483 0.82413036 6.1387205 -27.617235 0.65442479 6.1367788 -27.603157 0.4846485 6.132895 -27.598776 0.31519184 6.1313848 -27.586521 0.14577134 6.1283641 -27.559555 -0.02347465 6.122323 -27.56768 -0.19263825 6.1242647 -27.559145 -0.36169672 6.1227546 -27.547621 -0.53062004 6.1208124 -27.524323 -0.69914234 6.1164975 -27.525372 -0.86820018 6.1177921 -27.509768 -1.0367082 6.1156344 -27.505816 -1.2056139 6.1162815 -27.502777 -1.3746076 6.1173606 -27.505524 -1.5439928 6.1199493 -27.493582 -1.712613 6.1195183 -27.485479 -1.8814783 6.1201653 -27.465628 -2.049509 6.1184392 -27.475893 -2.2198846 6.1236176 -27.458836 -2.3881779 6.1229701 -27.449499 -2.5571609 6.1242647 -27.450783 -2.727278 6.1281486 -19.142721 -2.0201931 4.2860069 -27.432714 -3.0658889 6.1320319 -27.402719 -3.2328961 6.1296587 -27.38818 -3.4016976 6.1309533 -27.400681 -3.5741062 6.138505 -27.360821 -3.7397852 6.1346211 -17.715664 -2.5318556 3.9869661 -27.376608 -4.0847764 6.1488609 -17.680365 -2.7486134 3.9863188 -17.718109 -2.865937 3.9986172 -18.536016 -3.1151202 4.185895 -19.047535 -3.3214195 4.3049936 -17.743069 -3.2061744 4.0167408 -17.622284 -3.2961266 3.9940863 -18.868132 -3.6492028 4.2791023 -0 -0 0 -18.066435 -3.7246625 4.1086535 -19.905672 -4.2314668 4.5293818 -0 -0 0 -0 -0 0 -0 -0 0 -19.672356 -4.6892614 4.5013332 -20.480663 -5.0149922 4.6918473 -20.418255 -5.1327071 4.6847277 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9567866 -2.2610579 1.8604555 -7.9277625 -2.3054724 1.8570035 -0 -0 0 -0 -0 0 -0 -0 0 -8.0130367 -2.5451725 1.8904459 -7.9814801 -2.5891674 1.886778 -7.9672971 -2.6387062 1.8872095 -0 -0 0 -19.982899 -6.8933196 4.7034984 -19.966936 -7.0252023 4.7097554 -19.969408 -7.1640739 4.7205434 -0 -0 0 -0 -0 0 -0 -0 0 -20.609943 -7.9700565 4.9153728 -20.54339 -8.0895681 4.9112735 -20.51512 -8.2241888 4.9164515 -18.712191 -7.6349139 4.4983125 -18.651464 -7.7439685 4.4950762 -0 -0 0 -18.578356 -7.9822912 4.5006862 -18.435974 -8.0554705 4.4782472 -18.345154 -8.1502008 4.4683223 -19.355528 -8.7417507 4.7255058 -19.198587 -8.8130894 4.7004776 -18.131855 -8.4584208 4.4536505 -19.236341 -9.1178732 4.7365093 -19.18795 -9.2395468 4.738451 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -14.234418 -7.9640884 3.636791 -14.154714 -8.033926 3.6290238 -14.020533 -8.0719013 3.6074479 -4.022862 -2.3480542 1.0619353 -3.9453681 -2.3353741 1.0457535 -4.0314136 -2.4198675 1.0716444 -4.1065593 -2.4994082 1.0949463 -4.1210561 -2.5430257 1.1027136 -3.0608408 -1.9144654 0.83042699 -3.0787179 -1.9520432 0.83819425 -3.0765376 -1.9772352 0.84078336 -3.1142459 -2.0286012 0.8539446 -3.1799529 -2.0993412 0.87465733 -3.1467266 -2.1052332 0.86926341 -3.1814251 -2.1568439 0.88199311 -3.1737638 -2.180196 0.88350344 -3.3502262 -2.3318877 0.93463808 -3.0949118 -2.1823866 0.86947918 -4.3166857 -3.0843341 1.2049829 -4.2336197 -3.0643733 1.1875064 -4.386375 -3.2161984 1.2345417 -4.356369 -3.2354815 1.2317368 -4.3450165 -3.2686095 1.2341101 -3.8100176 -2.9027495 1.0910627 -3.5463474 -2.7363229 1.0224515 -3.8987265 -3.0467172 1.1260154 -3.9358428 -3.11483 1.1417657 -4.1741457 -3.3453798 1.2146919 -3.4561434 -2.8046813 1.0161946 -3.5738797 -2.9368374 1.0548153 -3.6601021 -3.0455503 1.0848056 -3.1254575 -2.6330802 0.93571687 -2.9547594 -2.5203559 0.89083922 -2.9333289 -2.5333312 0.88911313 -2.9485939 -2.5782866 0.898175 -3.0701301 -2.7180543 0.93873745 -3.5447969 -3.1775529 1.0845898 -3.4211335 -3.1047237 1.0535207 -3.788053 -3.4805129 1.1693828 -3.7215929 -3.4617822 1.15579 -7.8344712 -7.3795209 2.4108541 -3.6321967 -3.4627116 1.1415499 -2.9892242 -2.8846776 0.95060414 -2.9993982 -2.9302669 0.95923448 -3.5157895 -3.4774702 1.1253681 -2.4727414 -2.4755032 0.80583054 -2.4746449 -2.5080111 0.81122452 -2.4707916 -2.5350394 0.81489241 -2.4646683 -2.5600033 0.817913 -2.4536228 -2.5800323 0.81942332 -2.4223745 -2.5786653 0.81446087 -2.401195 -2.5877521 0.81273484 -2.2144549 -2.4159434 0.75685352 -2.2847514 -2.5236166 0.78490204 -2.245801 -2.5113769 0.77713478 -2.2135489 -2.5060756 0.77152503 -2.4580007 -2.8176992 0.85890704 -2.1972828 -2.5500693 0.77648747 -2.1303558 -2.5032525 0.75901109 -2.1237481 -2.5267451 0.76203167 -2.4024487 -2.8944583 0.86386949 -2.1983919 -2.6817825 0.79892629 -2.1198683 -2.6185479 0.77713478 -2.0927911 -2.6177738 0.77325112 -1.9333594 -2.4488769 0.72211647 -1.9434991 -2.493047 0.73117828 -2.0609205 -2.6775234 0.77929235 -2.9084334 -3.8277781 1.0949463 -2.8638041 -3.8174274 1.0871789 -2.0397544 -2.7534602 0.78986448 -2.0643032 -2.822686 0.80539906 -2.1737716 -3.0110965 0.85329729 -2.4713187 -3.4681942 0.97369027 -1.9013753 -2.7028351 0.76289475 -1.4344498 -2.0654216 0.58834654 -2.4285777 -3.5445163 0.98210484 -2.4040496 -3.555306 0.98102605 -1.9303629 -2.8924727 0.80108386 -1.8894979 -2.8691885 0.79180628 -1.4905936 -2.2935355 0.63710785 -1.4469967 -2.2565949 0.62502539 -1.4628578 -2.3124802 0.63732356 -1.4594895 -2.3388133 0.64185452 -2.3253858 -3.7791851 1.0131739 -2.3117745 -3.8092451 1.0172734 -1.8011482 -3.0088463 0.80755663 -1.7707461 -2.9996564 0.80237842 -2.2628677 -3.8882906 1.0267668 -1.693972 -2.9517014 0.78468627 -1.1059217 -1.9539117 0.52879733 -1.0896342 -1.9529841 0.52685553 -1.0795107 -1.9630566 0.52771854 -1.9366235 -3.5754588 0.93118596 -1.9091341 -3.5769358 0.92859685 -1.5601062 -2.9662404 0.77325112 -1.4880064 -2.8717012 0.74736017 -0 -0 0 -1.3172375 -2.6201184 0.68069094 -1.3227799 -2.6719139 0.69147885 -1.6633233 -3.4130187 0.87163675 -1.653747 -3.4469337 0.87746221 -1.1571167 -2.4494326 0.63128239 -1.6117345 -3.467854 0.87767798 -0.94231993 -2.0593543 0.53311247 -0.92926586 -2.0642068 0.5328967 -1.1637888 -2.6289072 0.66796124 -0 -0 0 -1.2635052 -2.9518373 0.74218196 -0 -0 0 -1.5612717 -3.7757182 0.9355011 -1.5263208 -3.7562757 0.92859685 -0 -0 0 -0 -0 0 -0 -0 0 -0.93997538 -2.4854324 0.61984718 -0.92029524 -2.4792507 0.61704236 -0 -0 0 -0.89636439 -2.5087507 0.6213575 -1.1631271 -3.3206539 0.81014574 -1.1607889 -3.3803747 0.8224439 -1.1260238 -3.3457839 0.81273484 -1.1005858 -3.337791 0.80928272 -0.74674314 -2.311106 0.56935984 -0.92162895 -2.9143522 0.70809221 -1.3160574 -4.2540035 1.0166261 -0.70181584 -2.3169825 0.56763375 -1.2634784 -4.2688966 1.0164104 -0.78123605 -2.698765 0.65350544 -0.65506846 -2.3154125 0.56439739 -0.91263866 -3.3049386 0.79029602 -0.85858625 -3.1850727 0.7616002 -0.81298494 -3.0911164 0.7389456 -0.78770524 -3.0714526 0.73333591 -0.7643525 -3.0582275 0.72923648 -1.9808564 -8.1457348 1.885052 -0.71620178 -3.0227163 0.71909589 -0.76485324 -3.3191912 0.78533357 -0.84888601 -3.7907486 0.89105499 -1.8721596 -8.6146049 1.9806328 -0.60314023 -2.8559349 0.6776703 -0.68336135 -3.3379185 0.78554934 -0.55837655 -2.8142707 0.66666669 -0.56351644 -2.9346421 0.69298917 -0.56470913 -3.0417364 0.71629101 -1.6148627 -9.0188971 2.0572269 -1.4523753 -8.4080038 1.9180629 -1.392749 -8.3685961 1.9072751 -1.2767415 -7.9729905 1.8168725 -0.51222759 -3.3249638 0.77605599 -1.3220695 -8.9598598 2.0339251 -1.1686655 -8.2706957 1.8783635 -1.0398294 -7.6990376 1.7493402 -0.34885809 -2.7021894 0.63473451 -0.36893734 -3.0037649 0.70140368 -0.29414392 -2.5210123 0.59352469 -0.27995083 -2.5344167 0.5961138 -0.26459628 -2.5380292 0.59654534 -0.2742455 -2.7981117 0.65393692 -0.37767407 -4.1192803 0.94672054 -0.23118255 -2.6991098 0.63128239 -0.23546615 -2.964272 0.68975276 -0.21684752 -2.9598179 0.6884582 -0.19023442 -2.8344359 0.66040969 -0.1796246 -2.9476361 0.68522185 -0.13428099 -2.4475296 0.57432228 -0.1868566 -3.8498323 0.88436645 -0 -0 0 -0.091661945 -2.5178938 0.58942533 -0.083015271 -2.7467959 0.63991266 -0.065212995 -2.7072306 0.63106662 -0.048480812 -2.7007456 0.6295563 -0.032175057 -2.7244256 0.63473451 -0.015442338 -2.7216423 0.6340872 --0.0013021802 -2.7714846 0.64509088 --0.018451825 -2.7919292 0.64962178 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.4127504 -3.5903182 0.88522953 --1.45801 -3.6395862 0.89903802 --1.4766252 -3.6215308 0.89688045 --1.5010656 -3.6178129 0.898175 --0 -0 0 --1.5337832 -3.5722065 0.89170223 --3.5951931 -8.2296867 2.0170958 --1.5846411 -3.5691774 0.89558589 --1.631031 -3.6136694 0.90874714 --1.6552105 -3.6080306 0.90982592 --1.6760793 -3.5951519 0.90917861 --3.8396711 -8.1022978 2.0138595 --1.6340641 -3.3957257 0.86537975 --1.5836434 -3.2400327 0.82956392 --1.5982807 -3.2197609 0.82697487 --1.6180067 -3.2098935 0.82697487 --1.6403426 -3.2051196 0.82826942 --1.6595275 -3.194128 0.82805365 --1.6508372 -3.1303451 0.81467664 --4.262115 -7.9592214 2.027668 --4.2996798 -7.9123302 2.0224898 --4.8994389 -8.8853111 2.2747109 --4.9810448 -8.9036512 2.287009 --1.9890355 -3.506211 0.92341864 --1.9262176 -3.3475497 0.88609254 --1.9388425 -3.3221767 0.88264042 --1.984568 -3.353065 0.89364403 --2.0599036 -3.4320664 0.9171617 --2.0900652 -3.4343739 0.9210453 --4.6005778 -7.4535737 1.9681188 --4.7115016 -7.5294929 1.9953043 --0 -0 0 --4.7417479 -7.375021 1.9700606 --4.9234133 -7.5551963 2.0252945 --5.1225338 -7.7562246 2.08657 --5.2319546 -7.8171473 2.1111662 --5.2650204 -7.7630796 2.105341 --0 -0 0 --5.3057575 -7.620163 2.0844123 --5.4047694 -7.6616616 2.1044779 --5.4692822 -7.6529794 2.1111662 --5.5350361 -7.6453748 2.1182864 --0 -0 0 --5.750155 -7.7406831 2.1633797 --5.7470465 -7.6381598 2.1448245 --5.8559594 -7.6842918 2.1674793 --5.9185133 -7.6683116 2.1730888 --5.9407949 -7.6003127 2.1642427 --6.1485505 -7.7673502 2.2216344 --6.3549085 -7.927546 2.2777314 --6.4415913 -7.9354024 2.2911084 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.2696991 -9.1419201 2.9094708 --9.4704113 -9.2258997 2.9541328 --9.2538261 -8.9049425 2.8704185 --9.3210316 -8.8601017 2.8743024 --10.576204 -9.9301834 3.238286 --10.636936 -9.8651018 3.238286 --10.636783 -9.7442493 3.2201624 --0 -0 0 --10.750462 -9.6084318 3.218652 --0 -0 0 --9.3373747 -8.1417818 2.7700913 --9.3183413 -8.0250835 2.7500257 --9.5094795 -8.0885773 2.7912354 --9.4811697 -7.9647646 2.7687967 --9.4840174 -7.8684115 2.7556355 --10.390205 -8.5130005 3.0007365 --9.8288593 -7.9528704 2.8264041 --11.319342 -9.0442915 3.2341866 --11.42982 -9.0182095 3.2497213 --11.404826 -8.8855028 3.2272823 --11.417337 -8.7832098 3.2156315 --11.467904 -8.7106266 3.2147684 --0 -0 0 --10.361403 -7.671648 2.8814223 --10.405915 -7.6061988 2.880775 --11.410564 -8.23347 3.1418421 --11.262027 -8.0216951 3.0879028 --11.274289 -7.9266114 3.0779779 --11.313087 -7.850605 3.0753887 --11.518147 -7.8886204 3.1174614 --11.491903 -7.7674985 3.0976119 --11.117727 -7.4156666 2.9856334 --0 -0 0 --0 -0 0 --0 -0 0 --11.120554 -7.0294771 2.939677 --11.079787 -6.9089355 2.9178853 --11.096187 -6.824965 2.9111969 --6.4583311 -3.9185085 1.7018734 --11.185807 -6.6922936 2.9129231 --11.236753 -6.6294861 2.9155121 --6.4458017 -3.7503664 1.6805134 --6.5076571 -3.733089 1.6904383 --6.5355406 -3.6959717 1.6917328 --16.490772 -9.1907167 4.2042346 --17.911091 -9.8386364 4.5481529 --15.979739 -8.6506767 4.0478101 --16.009256 -8.5400572 4.0419846 --15.987885 -8.4030561 4.0236449 --6.6151223 -3.4259772 1.6787874 --6.594265 -3.3640308 1.6684309 --16.266373 -8.1708927 4.0549297 --6.4407449 -3.1867566 1.6205326 --6.5040717 -3.1685522 1.6313206 --6.9926958 -3.3535666 1.7463195 --7.0855532 -3.3447661 1.7640117 --7.3751688 -3.4262526 1.8296021 --18.021492 -8.2362499 4.4109306 --7.3222561 -3.2930508 1.8067318 --7.34411 -3.2488501 1.8071634 --7.3495793 -3.1974957 1.8037112 --7.333148 -3.1369829 1.7950809 --7.3504581 -3.0911717 1.7946494 --7.3846283 -3.0523508 1.7983173 --17.804831 -7.2300439 4.2788868 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --7.0772219 -2.6247294 1.7005789 --7.0959463 -2.5822563 1.7012261 --7.1512027 -2.5527775 1.7105038 --7.2883906 -2.5514183 1.7389839 --7.4609237 -2.5605094 1.7756627 --7.9013195 -2.6574991 1.8746955 --8.3060732 -2.7369571 1.9650981 --8.5187922 -2.7491913 2.0106232 --8.5550537 -2.7030447 2.0151541 --8.5145712 -2.6329119 2.0019927 --8.5791683 -2.5953138 2.0132122 --8.6801405 -2.5678196 2.0328462 --12.760314 -3.6892769 2.9677255 --8.4770136 -2.3950329 1.9791224 --8.6976957 -2.3998239 2.0263734 --12.548852 -3.3791566 2.9042926 --8.7765455 -2.3060539 2.0378087 --12.494781 -3.2006865 2.8827169 --12.499027 -3.1201773 2.8792648 --18.53351 -4.5053811 4.2471704 --18.572208 -4.3942742 4.2497592 --14.639268 -3.369261 3.3519905 --14.642513 -3.2755373 3.3481069 --12.639428 -2.7462873 2.8906999 --12.7277 -2.683785 2.9068818 --13.074938 -2.673286 2.981534 --13.024044 -2.5797346 2.9664309 --13.041546 -2.5001395 2.9668624 --17.524992 -3.2478781 3.9710002 --17.03228 -3.0486226 3.8560011 --17.143038 -2.9600003 3.8767138 --17.029881 -2.8329742 3.8473709 --17.609062 -2.8183575 3.9731576 --17.343246 -2.6667953 3.9099405 --0 -0 0 --16.394268 -2.3153749 3.6911621 --18.354172 -2.4772646 4.1250515 --13.632271 -1.7551541 3.0697789 --13.159148 -1.6122634 2.9621158 --16.510166 -1.919781 3.7054021 --11.903553 -1.3104857 2.6788256 --13.068105 -1.3574758 2.9357934 --12.912921 -1.2613328 2.8995459 --12.102633 -1.1073334 2.7180936 --13.331189 -1.1371825 2.9890854 --12.053987 -0.9538852 2.7045007 --18.062517 -1.3173078 4.0344329 --12.024838 -0.80322808 2.6956546 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --20.383766 12.386823 5.0115385 --20.309046 12.51269 5.0119472 --0 0 0 --0 0 0 --22.251036 14.280746 5.5515699 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --19.266722 13.391662 4.9304214 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --19.171679 14.400386 5.0376921 --19.053352 14.495228 5.0299277 --0 0 0 --16.891403 13.180895 4.5050163 --0 0 0 --16.788761 13.435504 4.5211577 --0 0 0 --0 0 0 --36.820732 30.59444 10.02527 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --16.236031 14.533629 4.5812297 --16.129866 14.61786 4.57653 --0 0 0 --15.963612 14.828021 4.5806165 --0 0 0 --16.684437 15.88336 4.8411312 --14.014641 13.506725 4.0955486 --13.9308 13.59178 4.0953441 --13.846444 13.676313 4.09514 --0 0 0 --14.255471 14.430159 4.2667732 --14.156405 14.506848 4.2637081 --15.159565 15.726705 4.5922632 --14.587554 15.320343 4.4484181 --14.017765 14.904009 4.3035517 --14.359807 15.456607 4.4365673 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --12.987053 15.242305 4.2126269 --13.727167 16.312611 4.4829493 --13.59303 16.355879 4.4719157 --12.576354 15.322899 4.170536 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --11.718069 15.597549 4.1049476 --11.455936 15.445083 4.0467148 --11.471416 15.665934 4.085741 --0 0 0 --0 0 0 --0 0 0 --9.3948317 13.513826 3.4682701 --0 0 0 --9.2475004 13.656466 3.4754214 --9.1004391 13.61854 3.4517198 --8.6039095 13.048136 3.2952065 --8.840807 13.588063 3.4165759 --8.8397627 13.770561 3.4484506 --9.4511852 14.923619 3.7199988 --8.1208286 12.998827 3.2320702 --9.9123907 16.085176 3.9766312 --9.8246937 16.164099 3.9811263 --9.7253275 16.224077 3.9811263 --0 0 0 --8.2797642 14.205082 3.4647965 --8.966054 15.601692 3.7888563 --7.9320674 14.00071 3.3916481 --7.9290652 14.197824 3.4272008 --0 0 0 --8.622014 15.89361 3.8070412 --7.8242221 14.636611 3.4970798 --7.7712188 14.754498 3.5136304 --7.6760316 14.793215 3.5115871 --0 0 0 --8.150672 16.19083 3.8164403 --0 0 0 --0 0 0 --0 0 0 --7.1644254 15.146249 3.5301807 --7.7063746 16.553923 3.8442285 --7.217339 15.755434 3.6501195 --7.1446638 15.852969 3.662379 --7.0175014 15.829392 3.6470547 --6.9789295 16.00675 3.6777034 --0 0 0 --0 0 0 --0 0 0 --6.2178421 15.273808 3.4750128 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.7295804 13.746148 3.0671797 --4.6589108 13.815722 3.07617 --4.5457959 13.758537 3.0573721 --4.4841971 13.856953 3.0729008 --0 0 0 --4.193768 13.523859 2.9883101 --4.4176679 14.561008 3.2089815 --4.3338094 14.60661 3.213068 --4.2345586 14.600021 3.2059166 --3.8357882 13.535118 2.9693079 --4.2809682 15.46695 3.3826578 --4.1336365 15.2992 3.3407712 --0 0 0 --3.5317132 13.738945 2.9938269 --0 0 0 --0 0 0 --3.491802 14.700689 3.1867099 --3.4028568 14.727561 3.1879358 --3.3034153 14.708049 3.1793542 --3.0941606 14.182892 3.0628889 --2.8344908 13.386638 2.889008 --2.8732104 13.992537 3.0144639 --2.8469033 14.309448 3.0782132 --2.7707126 14.387205 3.0910857 --2.4613779 13.217354 2.8391528 --2.6074708 14.495271 3.1070232 --0 0 0 --0 0 0 --2.2727013 14.121366 3.0183461 --0 0 0 --2.0703559 13.953564 2.9772766 --1.9889698 13.996049 2.9836106 --1.9097762 14.057459 2.9940312 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.2002687 13.944143 2.9541879 -1.2982129 14.071033 2.9823847 -1.3779106 13.995584 2.9682863 -1.5156074 14.482423 3.0722878 -1.6994423 15.330015 3.2522984 -1.7824348 15.224989 3.2324789 -1.8912697 15.339096 3.2588367 -2.0221901 15.611646 3.3187041 -2.6104188 19.226767 4.0828805 -2.7712827 19.512772 4.1466298 -0 0 0 -0 0 0 -2.2668018 14.091578 3.012012 -2.363874 14.141129 3.0254974 -2.4482558 14.112854 3.0226369 -2.5356705 14.102384 3.0236585 -2.6180339 14.064425 3.018959 -2.7179735 14.119229 3.0340791 -0 0 0 -2.8544288 13.906454 2.9960744 -2.9403114 13.891551 2.9966874 -3.0267444 13.878986 2.9979134 -0 0 0 -0 0 0 -0 0 0 -3.5566483 14.580366 3.1654601 -3.9104693 15.614203 3.3926697 -3.5331042 13.748695 2.9958701 -3.5540438 13.486323 2.9439716 -4.1959372 15.534854 3.3916481 -4.0139704 14.506861 3.1746547 -4.1250525 14.560131 3.1916137 -4.3778634 15.098658 3.314209 -4.4297862 14.934491 3.2843773 -4.3790054 14.437708 3.1820104 -0 0 0 -4.8478751 15.304898 3.3838837 -0 0 0 -4.8007741 14.534104 3.2277794 -5.1118808 15.16298 3.3728502 -5.1198139 14.884173 3.3182955 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.219585 12.718421 6.4937134 -28.19776 12.50099 6.4710331 -28.098957 12.251443 6.43119 -28.117821 12.054884 6.4185219 -28.119997 11.852093 6.40238 -28.118938 11.64898 6.3858294 -28.10194 11.440423 6.3660102 -28.089808 11.235058 6.347621 -28.075306 11.029917 6.3290272 -28.067566 10.828548 6.3122725 -28.053837 10.625957 6.2944965 -28.064375 10.433496 6.2824411 -28.057974 10.235602 6.2669125 -28.051126 10.038511 6.2515879 -28.037376 9.8399448 6.2350378 -27.998182 9.6336451 6.2131748 -28.026155 9.4513474 6.2064323 -28.018557 9.2577057 6.1921296 -28.006845 9.0636091 6.1772137 -28.001276 8.8723717 6.1639323 -27.983196 8.6780643 6.1481996 -27.965662 8.4848833 6.132875 -27.965582 8.2978134 6.1216373 -27.95862 8.1094284 6.1091733 -27.934391 7.9169044 6.093236 -27.908855 7.7249837 6.0772986 -27.904699 7.5398035 6.0662651 -27.917309 7.3597074 6.0591135 -27.90316 7.1731596 6.0464454 -27.885878 6.9865875 6.0333686 -27.891132 6.8063002 6.0254002 -27.882845 6.6232705 6.0147753 -27.867641 6.4392767 6.0029244 -27.868423 6.2595811 5.9947515 -27.846054 6.0753193 5.9818788 -27.830135 5.8931904 5.9706407 -27.825499 5.714046 5.962059 -27.820671 5.5353723 5.9536819 -27.795477 5.3532696 5.9412179 -27.789307 5.1754494 5.9330449 -27.786819 4.9987736 5.9258938 -27.790928 4.8236623 5.9203768 -27.792967 4.6485276 5.9146557 -27.779409 4.4712162 5.90587 -27.749245 4.291852 5.8938146 -27.740198 4.1163321 5.8864589 -27.741673 3.9427378 5.8815551 -27.731394 3.7678306 5.8744035 -27.737488 3.5954638 5.8709302 -27.729881 3.4216051 5.8648005 -27.695908 3.2450135 5.8533583 -27.71335 3.0747976 5.8529496 -27.720987 2.9035718 5.8507018 -27.717823 2.7314081 5.8464112 -27.69507 2.557682 5.8382382 -27.681959 2.3852627 5.8323126 -27.664848 2.2128663 5.8257742 -27.650572 2.0410583 5.8200531 -27.649878 1.8705 5.8173971 -27.646179 1.6999069 5.814332 -27.630676 1.5288347 5.8090196 -27.629759 1.3587863 5.8069763 -27.612148 1.1881332 5.8016639 -27.620874 1.0187582 5.8020725 -27.614864 0.84889936 5.7996206 -27.593132 0.67879134 5.7941041 -27.588947 0.50932568 5.7924695 -27.579807 0.33988854 5.7900176 -27.581373 0.17065564 5.7900176 -27.576029 0.0014159139 5.7887917 -27.553003 -0.16765076 5.7840919 -27.575926 -0.33700839 5.7892003 -27.536148 -0.50552249 5.781436 -27.510998 -0.67394447 5.7769403 -27.524935 -0.84330541 5.7808228 -27.526091 -1.0124311 5.7822533 -27.515448 -1.1811411 5.781436 -27.510616 -1.3500944 5.7820487 -27.506701 -1.5191407 5.7830706 -27.496862 -1.6878902 5.7830706 -27.475245 -1.8558503 5.7808228 -27.474079 -2.0251918 5.7830706 -27.468941 -2.194355 5.7847052 -27.464712 -2.3636992 5.7867484 -27.46139 -2.5332539 5.7892003 -27.449226 -2.7020895 5.7900176 -19.183884 -2.0074954 4.0589743 -19.058344 -2.112659 4.0352726 -27.418173 -3.2096136 5.7949214 -27.397963 -3.3777878 5.7949214 -27.388371 -3.5473437 5.7973733 -27.368999 -3.7157238 5.797986 -27.33987 -3.8827612 5.7967601 -27.314564 -4.0502987 5.796556 -17.846228 -2.7584515 3.8021374 -17.829933 -2.8680573 3.8023417 -18.754337 -3.1349037 4.0017633 -0 -0 0 -17.808805 -3.2019975 3.8096976 -18.92539 -3.5227454 4.0510054 -18.159403 -3.4955997 3.8928578 -0 -0 0 -19.934204 -4.0915084 4.2804627 -0 -0 0 -18.197266 -3.9683557 3.9204419 -18.18499 -4.0827246 3.9230981 -19.693304 -4.5484276 4.2516527 -20.380299 -4.838995 4.4051013 -20.399677 -4.976017 4.4157262 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9314537 -2.247256 1.7535729 -7.9231567 -2.2975156 1.7547989 -0 -0 0 -0 -0 0 -0 -0 0 -7.9763722 -2.5267365 1.779318 -7.9653749 -2.5771375 1.7803396 -7.9280334 -2.6189024 1.7756401 -0 -0 0 -19.928196 -6.8547025 4.4316635 -19.952269 -7.0001831 4.4463749 -19.851795 -7.1020331 4.4337068 -0 -0 0 -0 -0 0 -0 -0 0 -20.451509 -7.887897 4.6082006 -20.434616 -8.0257607 4.6153517 -20.411345 -8.1615334 4.6212773 -18.775074 -7.6412506 4.2639122 -20.438984 -8.4649582 4.6504955 -0 -0 0 -18.575459 -7.9616351 4.2512441 -18.493055 -8.0609903 4.2436843 -19.470646 -8.6296444 4.4782495 -19.318262 -8.7043171 4.4555693 -19.424692 -8.8960533 4.4923482 -19.351992 -9.006813 4.4882617 -19.298132 -9.1262217 4.4886703 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.1571341 -2.1569605 1.0104423 -4.1481519 -2.1847081 1.0114639 -4.1208553 -2.2027373 1.0081947 -4.1218905 -2.2359145 1.0116682 -4.0291924 -2.2177441 0.99287027 -0 -0 0 -0 -0 0 -14.040711 -8.0673895 3.4128981 -4.0851955 -2.3810148 1.0198412 -4.0882068 -2.4164953 1.024132 -4.0917749 -2.452605 1.0286272 -4.1059289 -2.4954574 1.0357785 -4.9339685 -3.0402336 1.2425556 -4.0949225 -2.5581014 1.0406823 -4.8508 -3.0717509 1.2313178 -4.8054981 -3.084538 1.2247794 -3.1732295 -2.0645807 0.82307601 -3.1580498 -2.082396 0.82246304 -3.1582365 -2.110435 0.82573223 -3.1322579 -2.1209934 0.82246304 -3.2338114 -2.2188041 0.85147721 -3.2048635 -2.2279897 0.84759504 -3.258364 -2.2949555 0.86475831 -3.2330644 -2.306946 0.86189777 -3.1894927 -2.3055251 0.85433775 -3.1839747 -2.3314128 0.85658532 -4.0400443 -2.9963753 1.0827733 -4.3886728 -3.2968304 1.1786019 -4.4704213 -3.4013386 1.2053684 -4.4339585 -3.4167554 1.2012819 -3.0499923 -2.3804095 0.84044367 -3.0322568 -2.3966513 0.83962631 -3.4592631 -2.7687321 0.9577263 -3.4308012 -2.7806611 0.95466143 -4.3770084 -3.5921419 1.2147675 -3.3090813 -2.7499843 0.9309597 -3.173044 -2.6700349 0.89847201 -3.3257582 -2.83355 0.94485384 -3.310533 -2.8558211 0.94546682 -3.2811503 -2.8657784 0.94219762 -3.9103405 -3.4577396 1.1224124 -3.1793621 -2.8464153 0.92360401 -3.1545832 -2.8592963 0.92156076 -4.1893787 -3.8441386 1.2196712 -3.1192577 -2.8977928 0.92156076 -3.1042712 -2.91956 0.92237806 -3.0926797 -2.9446268 0.92421699 -3.0245087 -2.9153185 0.90970987 -2.4803562 -2.4204407 0.75626165 -4.4211407 -4.3671904 1.3300068 -2.4587736 -2.4590018 0.75871354 -2.4484551 -2.4789169 0.76014382 -2.4755874 -2.5373302 0.77281201 -3.4457479 -3.5750909 1.0692879 -3.4223964 -3.5947485 1.0688792 -2.4204159 -2.573911 0.77036011 -2.374594 -2.556442 0.76116544 -2.3078988 -2.5154295 0.74543244 -2.2819018 -2.5179389 0.74216324 -2.2513907 -2.5151191 0.73746371 -2.2197037 -2.5105538 0.73235559 -2.1733465 -2.4887381 0.72254801 -2.1829731 -2.5309331 0.73051667 -3.2955871 -3.8683259 1.0936025 -3.2787225 -3.8967133 1.0958501 -2.3881702 -2.874079 0.81285971 -2.1916254 -2.6707597 0.75401407 -1.8713092 -2.3092513 0.65328175 -1.8277417 -2.2840071 0.64347416 -1.8519355 -2.3435607 0.65634662 -1.9959264 -2.5578303 0.71008414 -2.2084608 -2.8662152 0.78813636 -2.1825335 -2.8688059 0.78527582 -2.9686811 -3.9520004 1.0645884 -2.9560397 -3.9858658 1.0686749 -3.4306417 -4.6855154 1.2450075 -3.393225 -4.6945777 1.2419426 -1.4526799 -2.0363824 0.55500132 -1.4395938 -2.0444572 0.55479699 -1.429816 -2.0572708 0.55581862 -1.4271352 -2.080534 0.55949646 -1.4176358 -2.0941148 0.56072241 -2.1063943 -3.1526952 0.82430196 -1.668286 -2.5305848 0.66554129 -1.631906 -2.5087738 0.65757257 -1.6022034 -2.4964981 0.6520558 -1.5281934 -2.4136586 0.62917137 -2.3551736 -3.7703943 0.96079117 -1.8877504 -3.0639174 0.78404987 -2.3107615 -3.8023579 0.96160847 -1.8268569 -3.0482306 0.77465093 -2.2704027 -3.841383 0.96426469 -2.2527053 -3.8653901 0.96671665 -2.2372375 -3.893568 0.97019017 -1.0971544 -1.9372418 0.49758595 -1.0857244 -1.9447919 0.49779028 -1.0737709 -1.9514172 0.49779028 -1.0697125 -1.9725964 0.5012638 -1.0742031 -2.0102012 0.50861949 -1.0677792 -2.0280139 0.51127577 -1.0765067 -2.0753651 0.52087903 -1.0677621 -2.089776 0.52271795 -1.1024592 -2.1907182 0.54478508 -1.124216 -2.2684815 0.56133538 -1.2275075 -2.5154912 0.61711621 -0 -0 0 -1.3074732 -2.7648613 0.67126238 -1.6726525 -3.5937159 0.86026317 -0.95625317 -2.0883086 0.51229739 -0.94945508 -2.1075232 0.51536226 -0.92698365 -2.0918319 0.51045841 -1.1883987 -2.7264977 0.6536904 -1.4096477 -3.288852 0.77975905 -1.3829776 -3.2821047 0.77628553 -1.2268081 -2.9622445 0.70211548 -0 -0 0 -0 -0 0 -1.4398285 -3.6658325 0.85495073 -0 -0 0 -0 -0 0 -0 -0 0 -0.92268527 -2.5303099 0.59504908 -1.2547965 -3.5073521 0.81040782 -0.8961035 -2.5543735 0.59790963 -0.87627268 -2.5477905 0.59525341 -1.1321529 -3.3582535 0.77260768 -0.78198081 -2.3678093 0.55336672 -0.77437007 -2.3939838 0.55806619 -0.72359139 -2.2848427 0.53313851 -0.71042818 -2.2920446 0.53375149 -1.2488784 -4.1173701 0.9309597 -1.2428055 -4.1897092 0.94505817 -0.67139119 -2.3160148 0.53620338 -0.78582877 -2.7740414 0.63468814 -0.89649397 -3.2401462 0.73460317 -1.0691329 -3.9581242 0.88866436 -0.81698632 -3.1004007 0.70211548 -0.78941643 -3.0721726 0.69496411 -0.77007526 -3.0750594 0.69455546 -1.9605894 -8.0353508 1.759294 -0.78612804 -3.3109488 0.74318486 -0.77417278 -3.3519535 0.7509492 -1.7964767 -7.9994001 1.744174 -0.92684174 -4.2496991 0.94076729 -0.89932901 -4.2486024 0.93933702 -0.55776972 -2.7178972 0.61200804 -1.6506275 -8.2974205 1.7987288 -1.6048684 -8.3343067 1.8044499 -0.78457546 -4.2145391 0.92769051 -0.59663439 -3.3184624 0.73664641 -0.57324791 -3.3047001 0.73296857 -1.4066339 -8.4117327 1.8130317 -1.2933881 -8.0374861 1.7321188 -1.2530249 -8.1033144 1.7443783 -0.43938029 -2.9633756 0.65818554 -0.39267397 -2.7653992 0.61589026 -0.37688464 -2.7764866 0.61772919 -0.50444382 -3.8941724 0.85249883 -0.31928572 -2.590482 0.57768142 -0.2932452 -2.505862 0.55949646 -0.28650084 -2.5854485 0.5758425 -0.27195728 -2.5998144 0.57849872 -0.26348901 -2.6774204 0.59443611 -0.38129604 -4.1323447 0.89908499 -0.24322076 -2.8267455 0.62508488 -0.21517667 -2.6945019 0.59709233 -0.18177357 -2.46733 0.54928023 -0.17627931 -2.6109927 0.5791117 -0 -0 0 -0.2107076 -3.8141928 0.83022738 -0.15372883 -3.1329648 0.68760836 -0.12351527 -2.8785918 0.63427949 -0.10296266 -2.8010364 0.61793351 -0.082644351 -2.6998577 0.59668368 -0 -0 0 -0 -0 0 -0.033272944 -2.7283287 0.60240477 -0.016574102 -2.7353337 0.60383505 --0.00021054308 -2.7255948 0.6017918 --0.016987955 -2.7343521 0.60363072 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0.10707791 -2.9017801 0.63897902 --0.12509073 -2.9059587 0.64000064 --0.14229541 -2.892426 0.63734436 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.5102159 -3.5832844 0.84453017 --1.5306315 -3.5703514 0.84371287 --0 -0 0 --1.53546 -3.4635944 0.82368898 --1.6290644 -3.6147573 0.86046749 --1.6524363 -3.6073637 0.86108047 --1.669583 -3.5865066 0.85862857 --3.9977851 -8.4531279 1.9846648 --3.9987094 -8.3225555 1.9601457 --1.624126 -3.3273139 0.80570835 --1.6049541 -3.2374704 0.78711474 --1.6256688 -3.2293105 0.78752339 --1.6423349 -3.2131729 0.78609312 --1.6566105 -3.1926079 0.78364122 --1.6944124 -3.2170296 0.79181427 --4.6744313 -8.7457981 2.1027648 --4.6986055 -8.6627398 2.0898921 --4.8437018 -8.8009825 2.1297357 --4.926722 -8.8232336 2.1421995 --1.95681 -3.4539909 0.86148912 --1.9199349 -3.3409135 0.83717442 --1.9507482 -3.3468316 0.84146529 --2.004616 -3.3912623 0.85515505 --2.0374634 -3.3990505 0.86005884 --5.0392127 -8.2920885 2.0582218 --2.1098297 -3.4237974 0.87231839 --2.1333909 -3.4149384 0.87334001 --0 -0 0 --5.0905075 -7.9311295 1.9999892 --5.1582918 -7.929286 2.007345 --5.1858349 -7.865612 1.9993762 --5.132854 -7.6822472 1.9613717 --5.2325773 -7.7284265 1.980987 --0 -0 0 --5.3823333 -7.7432108 2.0012152 --5.4449606 -7.7316494 2.006732 --5.4962783 -7.7036729 2.0081623 --5.6013556 -7.7499361 2.0287991 --5.6580548 -7.7280588 2.0320683 --5.6884575 -7.6703935 2.0261428 --5.7618704 -7.670567 2.0353374 --5.9220304 -7.783874 2.0743635 --6.1029124 -7.9203124 2.1199281 --6.2314887 -7.9853601 2.1471033 --6.3884015 -8.0836859 2.1834731 --6.4482794 -8.0573282 2.1869466 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.4965363 -9.0421028 2.7698865 --9.4256287 -8.864953 2.733721 --10.21708 -9.4918966 2.9437673 --9.6426115 -8.8485613 2.7645741 --10.648286 -9.6517887 3.0326488 --10.546133 -9.4419622 2.9874928 --10.718996 -9.4788876 3.019572 --10.119325 -8.8385105 2.8373139 --9.3973379 -8.1067581 2.6233854 --9.4558439 -8.0565634 2.6258373 --9.5178328 -8.0091066 2.6293108 --9.5938988 -7.9730806 2.6366665 --10.376602 -8.5164909 2.834862 --9.7647829 -7.9145393 2.656486 --11.269012 -9.0198145 3.0457256 --11.228149 -8.8746214 3.020185 --11.251525 -8.7814674 3.012012 --11.292789 -8.7027035 3.0087428 --0 -0 0 --0 -0 0 --10.388875 -7.7054849 2.7326994 --11.408978 -8.3541203 2.9844279 --11.224407 -8.1136312 2.9237435 --11.250075 -8.0275488 2.9176137 --11.311924 -7.9673877 2.9208829 --11.359795 -7.8972702 2.9206786 --11.336201 -7.7781267 2.9024937 --11.442883 -7.7484913 2.9174094 --11.029548 -7.3702846 2.8017614 --11.043509 -7.2819915 2.7939968 --11.058444 -7.1948733 2.7866411 --11.123801 -7.1406341 2.7919536 --11.13598 -7.0523419 2.7841892 --11.17074 -6.9786935 2.782146 --0 -0 0 --11.242991 -6.8334589 2.7790811 --11.236012 -6.7351527 2.7672303 --11.239206 -6.6436663 2.7580357 --11.319509 -6.5977483 2.7676389 --0 -0 0 --16.511518 -9.354641 3.9939988 --16.56348 -9.250288 3.9927728 --16.603632 -9.139513 3.9888906 --17.904451 -9.7129173 4.2845492 --7.1657405 -3.8303301 1.7288496 --6.7144852 -3.5362909 1.6168795 --16.102623 -8.3555079 3.8195052 --6.5987377 -3.3725393 1.5796922 --7.1998763 -3.6242683 1.7153642 --16.434361 -8.1472664 3.8615961 --6.9860611 -3.4098217 1.6554968 --7.0042048 -3.3656199 1.6548839 --7.2662992 -3.4368553 1.7106646 --7.340497 -3.4169948 1.7229242 --17.876211 -8.1888943 4.1370263 --0 -0 0 --0 -0 0 --7.2642164 -3.1669605 1.686963 --17.460897 -7.4858069 3.9982896 --17.557014 -7.3998199 4.0097318 --17.611132 -7.2956991 4.011775 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --7.0245495 -2.6603782 1.6007377 --7.0948763 -2.6373529 1.612793 --7.1403527 -2.6045058 1.6193314 --7.2640333 -2.599236 1.6432374 --7.3768301 -2.5886548 1.6646916 --8.3145094 -2.8605764 1.8681995 --8.2205963 -2.7719672 1.8436804 --8.3573523 -2.7610934 1.8700384 --8.203701 -2.6546025 1.8326468 --8.3038206 -2.6308281 1.8510361 --8.3422461 -2.5867865 1.8559399 --12.997601 -3.9433017 2.8679626 --13.019675 -3.8629189 2.8675539 --12.872025 -3.7333264 2.8303668 --8.6951761 -2.4640272 1.9192808 --8.7422085 -2.4195073 1.9262278 --8.8107548 -2.3803756 1.9378743 --12.56316 -3.3117449 2.7447546 --12.567126 -3.230453 2.741281 --0 -0 0 --13.844016 -3.3781669 3.0073125 --18.486477 -4.391129 3.9989026 --18.5331 -4.2822437 4.0031934 --18.498856 -4.1549301 3.9903209 --12.70812 -2.7723806 2.7478194 --12.986334 -2.7497184 2.8036003 --0 -0 0 --17.918394 -3.5650127 3.8462718 --14.568879 -2.8057046 3.1297033 --17.810665 -3.3168964 3.8143971 --17.419296 -3.1335366 3.7271502 --17.412153 -3.0220745 3.7216334 --17.499886 -2.9268064 3.7363448 --13.080485 -2.1051524 2.7982876 --13.133787 -2.031137 2.8068695 --17.063738 -2.5319147 3.6335692 --18.255516 -2.5943995 3.8816199 --13.266917 -1.8023552 2.8275063 --13.429169 -1.7405497 2.859381 --13.343413 -1.6462479 2.8391528 --12.136978 -1.4218189 2.5835419 --12.93063 -1.4344451 2.7484324 --12.150591 -1.2724665 2.5829289 --12.196163 -1.2016324 2.5908976 --13.229723 -1.2215811 2.8060522 --18.143642 -1.563243 3.8340123 --12.20353 -0.97592252 2.5882413 --13.40519 -0.98931837 2.8385398 --0 -0 0 --0 -0 0 --13.599995 -0.75230438 2.8759313 --13.585777 -0.6679284 2.8720491 --13.62385 -0.58602846 2.8792005 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --20.435835 12.616043 4.7449198 --20.341404 12.730784 4.7410693 --0 0 0 --22.348505 14.371747 5.2460542 --22.533649 14.687045 5.310164 --22.641247 14.955929 5.3567543 --0 0 0 --22.463318 15.237604 5.3584871 --0 0 0 --22.339058 15.556982 5.373889 --19.327091 13.636112 4.6736865 --19.265411 13.770423 4.6790771 --21.034779 15.231133 5.128231 --0 0 0 --20.850224 15.491041 5.1291933 --19.018103 14.311652 4.7027574 --19.373989 14.766563 4.8123021 --0 0 0 --0 0 0 --16.856291 13.345014 4.2511005 --16.771793 13.446349 4.2505231 --0 0 0 --16.662373 13.697892 4.2649622 --36.815735 30.648039 9.4312897 --0 0 0 --16.338001 13.943026 4.2470579 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.83448 31.627344 9.2639875 --0 0 0 --16.018766 14.905782 4.3259916 --0 0 0 --0 0 0 --16.496319 15.926762 4.5317979 --14.01311 13.696174 3.8774157 --14.966 14.808273 4.1636958 --15.96743 15.994355 4.4671106 --14.29673 14.497504 4.0277753 --0 0 0 --14.642303 15.217062 4.1762099 --14.083565 14.817243 4.0437546 --12.903003 13.742938 3.7314839 --0 0 0 --12.735373 13.902414 3.7320616 --12.615595 13.942456 3.7220504 --12.51673 14.004967 3.7182 --13.432534 15.216695 4.0152612 --13.224132 15.167167 3.9809926 --0 0 0 --13.850725 16.285145 4.2274203 --13.778941 16.403639 4.236084 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --11.902407 15.872003 3.9253535 --11.45098 15.466781 3.8086853 --11.389444 15.582703 3.8198516 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.2206383 13.463374 3.2345848 --9.1378546 13.519697 3.2345848 --9.1276827 13.684909 3.2603827 --8.9777317 13.640652 3.2368951 --8.861268 13.645276 3.2251513 --8.3491497 13.030927 3.069401 --8.6664152 13.710685 3.2153325 --8.1761522 13.112417 3.0647805 --8.0919437 13.156487 3.0634327 --9.7331476 16.045158 3.7149272 --7.8865628 13.182373 3.046876 --8.4461727 14.316609 3.2942667 --8.3265934 14.313876 3.2819452 --8.1731968 14.250628 3.2561471 --7.9571476 14.073281 3.2049365 --8.7294836 15.663067 3.551091 --8.6204576 15.693112 3.5458927 --8.4754257 15.655961 3.5258706 --7.8213434 14.66174 3.293304 --7.7819033 14.805876 3.3146739 --0 0 0 --8.1840553 16.04632 3.5670702 --8.0497684 16.025204 3.551476 --8.0017519 16.176329 3.5738084 --7.3554363 15.10202 3.328728 --7.3585029 15.346848 3.3722379 --7.7621069 16.446892 3.6011467 --7.2473216 15.603313 3.408432 --7.1942682 15.741204 3.4286468 --6.8513041 15.237305 3.3108234 --0 0 0 --0 0 0 --16.3929 38.333405 8.2126255 --0 0 0 --6.3641915 15.400392 3.3023524 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --6.113812 16.184147 3.4272993 --6.0457721 16.306005 3.4450114 --0 0 0 --5.7146316 16.012976 3.3687725 --0 0 0 --0 0 0 --4.5783978 13.615236 2.8512735 --4.4966121 13.648664 2.8524287 --4.4097681 13.666659 2.8505034 --0 0 0 --4.2234697 13.660681 2.8383746 --4.1338892 13.667552 2.8345242 --0 0 0 --4.2353253 14.64959 3.0249283 --3.8461461 13.615728 2.8089187 --3.8360965 13.905837 2.86321 --4.1287103 15.333402 3.1485274 --3.6240356 13.795262 2.8314438 --3.9672546 15.488432 3.1698973 --3.8766589 15.530573 3.1735554 --3.7745717 15.526415 3.1679721 --3.6686158 15.5044 3.1589236 --3.3863986 14.713756 2.99528 --3.3031197 14.76586 3.0016332 --3.3388731 15.367925 3.118494 --3.0022681 14.238766 2.8880453 --2.9228997 14.296338 2.8959386 --2.6224372 13.239733 2.6810842 --2.5527844 13.316291 2.693213 --2.6317279 14.199126 2.8662903 --0 0 0 --0 0 0 --0 0 0 --5.0895672 31.805557 6.352478 --2.1600513 14.046214 2.8212402 --2.0610874 13.972803 2.8041058 --4.4940791 31.828749 6.3395791 --0 0 0 --4.0291457 31.306299 6.2257986 --3.8209989 31.199913 6.2000008 --3.629601 31.223747 6.2001929 --3.4320467 31.191782 6.1896043 --3.259131 31.390871 6.2248359 --3.0732257 31.47962 6.2385049 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.77456135 20.561413 4.0699377 -0.89688116 20.469021 4.052803 -1.0205477 20.424911 4.0452948 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.8965255 20.361275 4.0451021 -1.3829834 13.925963 2.7786927 -1.4744853 13.974792 2.7900515 -1.6218086 14.516479 2.8988264 -1.7339674 14.702134 2.9375234 -1.8677025 15.041788 3.0068314 -1.8865764 14.467625 2.8955536 -2.0440388 14.958428 2.9950874 -2.8265126 19.776442 3.9524992 -3.1468344 21.092253 4.2170243 -2.4238386 15.592167 3.1288903 -2.2600386 13.973816 2.8102663 -0 0 0 -2.4401174 13.995297 2.8202775 -2.5564923 14.14905 2.8539689 -2.603195 13.918966 2.811229 -2.6960068 13.941268 2.8189299 -2.7763059 13.898482 2.8137317 -3.3261192 16.133928 3.2650032 -2.9403257 13.833611 2.8077636 -3.0753374 14.044406 2.8537762 -3.617564 16.047955 3.2605753 -0 0 0 -3.7514098 15.738901 3.2074392 -0 0 0 -3.6832068 14.653408 2.9973977 -3.4975333 13.562525 2.781003 -3.545553 13.407996 2.75405 -3.9707911 14.651321 3.0112593 -4.0740061 14.674902 3.0210779 -4.3190885 15.195192 3.1323557 -4.3763289 15.044974 3.1071353 -4.4817176 15.062043 3.1161838 -4.6126208 15.160996 3.1421742 -4.537394 14.591752 3.0310891 -4.6509147 14.639388 3.0466833 -4.9108968 15.135126 3.1548808 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.208961 15.269977 6.3262949 -28.192163 15.037952 6.3018446 -28.224836 14.833645 6.288753 -28.222078 14.611909 6.2681532 -28.205427 14.384526 6.2448583 -28.21862 14.173755 6.2284937 -28.191589 13.944223 6.2036586 -28.18663 13.727159 6.1840215 -28.207502 13.523832 6.1703525 -28.170145 13.293967 6.144362 -28.150616 13.074163 6.1226068 -28.162476 12.870193 6.107975 -28.144253 12.653694 6.0871825 -28.14867 12.448621 6.0715885 -28.130938 12.234969 6.0515661 -28.116156 12.023935 6.0325065 -28.115225 11.820009 6.0167198 -28.091087 11.607555 5.9963126 -28.0945 11.407657 5.9820657 -28.108368 11.21288 5.9703221 -28.092581 11.007268 5.95261 -28.079912 10.804034 5.9358606 -28.077744 10.605879 5.9216137 -28.065002 10.404746 5.9054422 -28.043476 10.201488 5.8877301 -28.034378 10.003833 5.8729057 -28.021133 9.8057022 5.8575039 -27.99909 9.6055641 5.8405623 -27.998903 9.4138842 5.828433 -28.000217 9.2234907 5.8168821 -27.999315 9.0331345 5.8051381 -27.989649 8.8407726 5.7918539 -27.95149 8.6404676 5.7729869 -27.956076 8.4543123 5.7631683 -27.95661 8.2675934 5.7527723 -27.916313 8.0697422 5.7342901 -27.919973 7.8854985 5.725049 -27.902559 7.6960359 5.7117648 -27.92083 7.5170321 5.7059894 -27.907583 7.3301182 5.6940527 -27.889292 7.1426768 5.6813464 -27.892607 6.9614382 5.6732607 -27.88998 6.7792697 5.6642122 -27.861341 6.5915232 5.6501579 -27.859182 6.4107642 5.6416869 -27.84724 6.228353 5.6314831 -27.845615 6.0488296 5.62359 -27.840918 5.8691559 5.6153116 -27.812952 5.6852489 5.6026049 -27.800144 5.5051465 5.5931716 -27.796778 5.3274469 5.5858555 -27.802891 5.1519623 5.5806575 -27.793409 4.9740114 5.5725718 -27.787628 4.797205 5.5654483 -27.764267 4.6179214 5.5550518 -27.761072 4.4425154 5.5488915 -27.752893 4.2667265 5.5419607 -27.761076 4.0937815 5.5384951 -27.752636 3.9187021 5.5319495 -27.752819 3.7451928 5.527329 -27.732452 3.5693245 5.518858 -27.706104 3.3932509 5.5094242 -27.696186 3.2196741 5.5034561 -27.685183 3.0463469 5.497488 -27.684809 2.8744919 5.4938302 -27.689228 2.7033279 5.4913273 -27.676956 2.5307889 5.485744 -27.668497 2.3589191 5.4811234 -27.653103 2.1867845 5.475348 -27.650341 2.0159261 5.4722676 -27.639671 1.8447267 5.4678397 -27.626961 1.6736751 5.4632192 -27.612215 1.5027956 5.458406 -27.618956 1.3332473 5.4580212 -27.614851 1.1632605 5.4557109 -27.60774 0.9933036 5.4530153 -27.604486 0.82362396 5.4512825 -27.600191 0.65402168 5.4495502 -27.575232 0.48415941 5.4439669 -27.575722 0.31492952 5.4435821 -27.575172 0.14571187 5.4431968 -27.566715 -0.023481054 5.4414639 -27.560165 -0.19258541 5.440309 -27.548653 -0.36155859 5.4383836 -27.537085 -0.53041667 5.4366512 -27.52154 -0.69907153 5.434341 -27.530464 -0.86836106 5.437036 -27.543249 -1.0379714 5.4406939 -27.524597 -1.2064379 5.4383836 -27.521578 -1.3755481 5.4393463 -27.523396 -1.5449969 5.4414639 -27.49577 -1.7127492 5.4379988 -27.4867 -1.881562 5.4383836 -27.48736 -2.0511317 5.4408865 -27.478168 -2.2200685 5.4416566 -27.442522 -2.3867581 5.4374213 -27.447878 -2.5570097 5.4414639 -19.407928 -1.9278613 3.8595111 -27.424192 -2.8946753 5.4433894 -19.336973 -2.1607568 3.8504624 -27.406096 -3.2332947 5.4472399 -27.401321 -3.4033303 5.4503202 -27.38187 -3.5716515 5.4507051 -27.371105 -3.7411914 5.4530153 -27.355406 -3.9101782 5.4545555 -27.355162 -4.0815754 5.4593687 -27.33736 -4.2505531 5.4609089 -18.961611 -3.0671592 3.8015621 -18.904694 -3.1771026 3.7940536 -17.824377 -3.1080544 3.5828571 -18.984987 -3.4306726 3.8181188 -17.68651 -3.3081441 3.5632198 -0 -0 0 -19.777925 -3.9512682 3.990041 -19.678347 -4.0570893 3.9750242 -18.45233 -3.9224334 3.7341793 -18.489264 -4.0490198 3.7465007 -18.422909 -4.1531096 3.7382224 -19.679916 -4.5636315 3.9965868 -19.69068 -4.6936307 4.0044799 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9518347 -2.2596498 1.654942 -7.9434733 -2.3100436 1.6560972 -0 -0 0 -0 -0 0 -0 -0 0 -8.0134478 -2.5453031 1.6826652 -7.9855456 -2.5904868 1.6801624 -7.9732265 -2.640671 1.6809325 -0 -0 0 -0 -0 0 -19.989122 -7.0330095 4.1904564 -19.942822 -7.1545339 4.1898789 -0 -0 0 -0 -0 0 -0 -0 0 -21.100204 -8.1596746 4.4715385 -20.448051 -8.0520191 4.3446665 -20.463839 -8.2036285 4.3585281 -18.919456 -7.7194958 4.0420218 -20.564629 -8.5384321 4.4016528 -20.509138 -8.6633081 4.4010754 -18.713755 -8.0404758 4.0291228 -18.599327 -8.1268568 4.0152612 -0 -0 0 -19.304846 -8.7188568 4.1889162 -19.359783 -8.8870964 4.2124038 -19.320896 -9.0131874 4.2158694 -19.314884 -9.1551075 4.2266502 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.1667295 -2.165252 0.95435458 -4.1611757 -2.1949003 0.95608729 -4.1528196 -2.2231715 0.95724243 -4.149446 -2.2542346 0.95955271 -4.1484251 -2.2867618 0.96244055 -4.1445918 -2.3179233 0.96475077 -4.1328516 -2.3447638 0.96532834 -4.1192369 -2.370568 0.96552086 -4.1630821 -2.429945 0.97880489 -4.1962199 -2.4839473 0.98977864 -4.1573453 -2.4955013 0.98438805 -4.0966964 -2.4934022 0.97399187 -4.0687957 -2.5107594 0.97110403 -4.9716082 -3.1104605 1.1836482 -4.0177927 -2.547883 0.96648347 -4.8769407 -3.1351409 1.1705568 -3.1756678 -2.0686388 0.77665681 -3.1580024 -2.0848401 0.77550173 -3.159013 -2.1134584 0.77877456 -3.1874006 -2.1608977 0.78859317 -3.1805511 -2.1848617 0.79013336 -3.2057366 -2.2312555 0.7993744 -4.2912316 -3.0265319 1.0633221 -4.4058962 -3.1481061 1.0954732 -3.1029253 -2.2455673 0.78455025 -3.0487354 -2.2349629 0.77473164 -3.0136976 -2.2378256 0.76953351 -3.0022621 -2.2580454 0.77011108 -2.8221216 -2.1497147 0.72910392 -3.0527782 -2.3552833 0.78955579 -2.8009403 -2.1884153 0.73045158 -3.3644609 -2.66242 0.87484306 -3.3932307 -2.7192311 0.88620186 -2.7921798 -2.2655795 0.73853749 -2.7979336 -2.2988727 0.74354303 -3.6231489 -3.0147865 0.95782 -3.8176641 -3.216579 1.0124962 -3.315686 -2.8284087 0.88812703 -3.304951 -2.8544748 0.88985974 -3.2977133 -2.8837461 0.89255506 -3.2006264 -2.8336527 0.87176269 -3.1298504 -2.8054101 0.85770857 -3.3835623 -3.0706096 0.9295193 -4.2142458 -3.8722844 1.1559252 -4.2421279 -3.9462025 1.1697867 -4.0842729 -3.8463237 1.1337851 -3.9881656 -3.8022299 1.1141478 -2.5550308 -2.4654324 0.72968149 -2.4998565 -2.4419649 0.71870774 -2.4848258 -2.4572577 0.71870774 -2.4662354 -2.4689856 0.71774513 -2.3993659 -2.4316661 0.70330596 -3.4751003 -3.5661485 1.0099934 -3.4456694 -3.5796256 1.0078757 -4.0732813 -4.2842631 1.1928893 -2.4813521 -2.64149 0.7441206 -3.0722728 -3.3114517 0.91931564 -2.538228 -2.7694306 0.77011108 -2.5152621 -2.7784035 0.76837838 -2.2621205 -2.5296392 0.69887793 -2.2407122 -2.5368502 0.69714528 -2.2805603 -2.6141632 0.71370214 -2.3387506 -2.7143669 0.73603469 -3.5445297 -4.1661687 1.1062545 -3.5069087 -4.173562 1.1025965 -3.192421 -3.8468192 1.0138439 -2.3168271 -2.8263597 0.75008881 -3.3795013 -4.1756101 1.0870023 -1.666422 -2.0840647 0.55660421 -1.7642169 -2.2344675 0.59164321 -1.763137 -2.2615075 0.5956862 -2.0669081 -2.6853077 0.69791538 -2.4266617 -3.193398 0.8199743 -3.2035038 -4.2704773 1.0804565 -3.2379608 -4.3720784 1.1004788 -3.2186003 -4.4021635 1.1029816 -1.5167984 -2.1004529 0.54139501 -2.1493928 -3.0161462 0.7597149 -1.4756719 -2.0972328 0.53619689 -1.4985762 -2.1578474 0.5485183 -2.4710743 -3.6065767 0.89082235 -1.4912138 -2.2045314 0.55525655 -2.9051988 -4.3542466 1.0600492 -2.8541529 -4.335103 1.0513856 -1.9495008 -3.0003088 0.73507208 -1.9606969 -3.0584862 0.7458533 -1.9125357 -3.0240064 0.73507208 -2.7759767 -4.4504738 1.0621669 -1.886077 -3.0648019 0.73911506 -1.8667274 -3.0754781 0.73892254 -1.8463103 -3.0843477 0.73834497 -1.825356 -3.0922377 0.73757488 -1.804868 -3.1008348 0.73699731 -1.1150951 -1.9422154 0.47247213 -1.1070203 -1.9558549 0.47401232 -1.085923 -1.946324 0.47035438 -1.0867147 -1.9761733 0.47555247 -1.5398082 -2.8423386 0.66730434 -1.5338839 -2.873379 0.67211741 -1.4975085 -2.847122 0.66422403 -1.4773039 -2.8510282 0.66306889 -1.4709272 -2.8818939 0.66788191 -1.5078281 -2.9996016 0.69175464 -1.0504521 -2.1212862 0.49749997 -1.0301129 -2.1126935 0.49422711 -1.042158 -2.1711814 0.50558591 -1.0401229 -2.2014964 0.51078397 -1.0067563 -2.1651168 0.50154293 -1.0040563 -2.194459 0.50654852 -1.0155185 -2.2560692 0.51848489 -1.1663524 -2.6347048 0.59838152 -1.1904726 -2.7344995 0.61821127 -1.1829312 -2.763407 0.62283176 -0.92067808 -2.1871364 0.49865511 -0.91248673 -2.2054412 0.5013504 -0.86719108 -2.1328063 0.48479354 -0.85408807 -2.1380873 0.48479354 -1.4176204 -3.6152184 0.79494643 -1.4066862 -3.653156 0.80110711 -0.85376722 -2.2571797 0.50654852 -1.3699362 -3.6922259 0.80572766 -1.349268 -3.7060952 0.8068828 -1.3495857 -3.7790003 0.82035929 -1.2278513 -3.5056355 0.76183265 -0.88123721 -2.5654087 0.56526774 -1.1334575 -3.3678966 0.73025906 -1.3568203 -4.1157598 0.88331401 -0.96852827 -2.9986508 0.65132505 -0.96961492 -3.0662956 0.66403151 -0.96671975 -3.1237516 0.67462021 -0.73565996 -2.4289119 0.53099883 -1.2527479 -4.2326064 0.89910078 -1.2243013 -4.231729 0.89736813 -0.90016824 -3.1833653 0.68212855 -0.91088033 -3.2985625 0.7044611 -0.62943405 -2.3337851 0.50731862 -0 -0 0 -0.76700383 -2.990608 0.63881111 -0.727732 -2.9114733 0.62186915 -0.70684129 -2.9034879 0.61936641 -1.7956061 -7.5860276 1.5625315 -0.77170599 -3.3489766 0.70734894 -0.65584755 -2.9274983 0.62167662 -0.63745588 -2.9295495 0.62129158 -0.90583348 -4.2920847 0.8937102 -0.68908906 -3.3659451 0.70715642 -0.82088685 -4.1401968 0.86117399 -0.61449128 -3.2006712 0.67250246 -0.79432881 -4.2811813 0.88735694 -0.756984 -4.2241535 0.87503558 -1.4532217 -8.4129076 1.7080781 -1.4025395 -8.427474 1.7092333 -1.2940658 -8.0812778 1.6387702 -1.2610027 -8.1967258 1.6601402 -0.42153633 -2.8513172 0.59857404 -0.39786091 -2.8101254 0.58991051 -0.38166037 -2.8202937 0.59145069 -0.36146805 -2.8001971 0.58702272 -0.32710764 -2.6621034 0.55929953 -0.31450504 -2.6962266 0.56565273 -0.44429594 -4.0285649 0.82825273 -0.26903582 -2.5808051 0.5421651 -0.25481552 -2.5990102 0.54543793 -0.37524828 -4.0927391 0.83941901 -0.35262817 -4.1242971 0.84519464 -0 -0 0 -0.22026549 -3.0067258 0.62456447 -0.17105308 -2.5468566 0.53388661 -0.15488897 -2.5390427 0.53215396 -0.13930678 -2.5399454 0.53215396 -0.12315207 -2.5289905 0.52984369 -0.10874612 -2.55617 0.53504175 -0.097817309 -2.6891782 0.56103224 -0.083477534 -2.7623112 0.57527888 -0.066271484 -2.7519801 0.57316113 -0.049831212 -2.7778447 0.57816666 -0.032875054 -2.785948 0.57970685 -0.015821325 -2.7939475 0.58124703 --0.0013319679 -2.8047862 0.58336478 --0 -0 0 --0 -0 0 --0.054398123 -2.8788509 0.59799647 --0.074033201 -2.9559598 0.61320567 --0.09232413 -2.9603541 0.61416829 --0.15288396 -4.0834937 0.83479846 --0.17802295 -4.0844393 0.8351835 --0.20313028 -4.0842505 0.83537602 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.3976498 -3.6839237 0.80611271 --1.4188116 -3.6716177 0.80534261 --1.4474266 -3.6783645 0.80861551 --1.4747168 -3.6812546 0.81111825 --1.4917152 -3.6585083 0.80823046 --1.4994582 -3.6139424 0.80072206 --1.5132031 -3.5847871 0.79648662 --1.5394323 -3.5853522 0.79860431 --1.5782995 -3.6145036 0.8068828 --1.5793295 -3.5572236 0.79667914 --1.6205164 -3.5903919 0.80592018 --1.6462011 -3.588407 0.80765289 --1.6656988 -3.5729032 0.80649775 --1.6674136 -3.5200536 0.79725671 --3.9383912 -8.1804905 1.8143502 --1.6807317 -3.4385049 0.78397268 --1.6223371 -3.268183 0.74893367 --1.6335201 -3.2406447 0.74508321 --1.6524788 -3.2288139 0.74469817 --1.6736175 -3.2212255 0.74527574 --1.7130466 -3.2482126 0.75355422 --4.6946917 -8.7667761 1.9841546 --4.6710677 -8.5955505 1.9523885 --4.7673225 -8.6457796 1.9701005 --1.9590058 -3.5031981 0.82055181 --1.9223312 -3.3887067 0.79744923 --1.9283978 -3.351336 0.79167354 --1.9553583 -3.3504562 0.79417634 --2.0483892 -3.4608212 0.822092 --4.5401993 -7.5618076 1.7635244 --5.0703621 -8.3283405 1.9460353 --4.6749253 -7.5739908 1.7793112 --4.7041292 -7.517714 1.772958 --4.6755147 -7.3710504 1.7456199 --5.1012416 -7.93399 1.8836582 --5.0935626 -7.8162231 1.8634434 --0 -0 0 --5.1940093 -7.760468 1.8651761 --5.2327147 -7.7154589 1.8620957 --5.372788 -7.8182535 1.8942468 --5.5182419 -7.9252515 1.9277457 --5.6697335 -8.0371675 1.9627846 --5.7035341 -7.9806738 1.9575865 --5.6954155 -7.8668437 1.9385269 --5.7046905 -7.7787366 1.9256279 --5.730073 -7.7136559 1.9183121 --5.9348469 -7.8876934 1.9697155 --6.0140672 -7.8917112 1.9797266 --5.9622335 -7.7249432 1.9475754 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.6291275 -9.3804913 2.6704955 --9.715497 -9.3491259 2.6783888 --9.7193317 -9.238636 2.6639497 --0 -0 0 --9.6607199 -8.9598694 2.6181295 --9.5816441 -8.7778063 2.5825129 --10.451052 -9.4568548 2.7983301 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.515502 -8.0936995 2.4839416 --9.5687418 -8.0383167 2.4849043 --10.399595 -8.6278725 2.6841645 --10.393128 -8.5153952 2.6691477 --9.8157835 -7.9422927 2.5103171 --9.8091316 -7.8378158 2.4964557 --11.125926 -8.7784758 2.8135393 --11.361503 -8.8517551 2.8587818 --11.264705 -8.6658115 2.8214326 --11.355176 -8.6250162 2.8306737 --10.278115 -7.7080717 2.5536346 --10.400933 -7.700911 2.5721166 --11.118252 -8.1267805 2.7349904 --11.075593 -7.9918089 2.7126577 --11.124421 -7.9236999 2.7126577 --11.231435 -7.8964877 2.7267118 --11.432861 -7.9337068 2.7632911 --11.085403 -7.5922933 2.6691477 --0 -0 0 --11.050379 -7.3707528 2.6391144 --0 -0 0 --11.083209 -7.1977201 2.6258304 --11.092461 -7.1073475 2.6177444 --11.174849 -7.0637913 2.6267929 --16.404156 -10.228343 3.8258197 --16.418961 -10.098197 3.814846 --16.589685 -10.063417 3.8398738 --16.4608 -9.8475924 3.7963638 --0 -0 0 --16.609245 -9.6616259 3.8029096 --16.318346 -9.3589029 3.723783 --16.508726 -9.3339338 3.7538166 --16.448252 -9.1670227 3.7274411 --16.558378 -9.0956869 3.7395699 --0 -0 0 --7.0337224 -3.7528515 1.5971855 --7.0974436 -3.7310774 1.606234 --7.1393752 -3.6973834 1.6104695 --6.6216784 -3.37801 1.4914908 --6.6370192 -3.3346741 1.4903357 --7.1446509 -3.5348923 1.596993 --7.0029902 -3.4115071 1.5613763 --7.0273304 -3.3701701 1.5621464 --7.2848272 -3.4387975 1.6135498 --7.0726085 -3.2857468 1.563109 --7.3148751 -3.3438406 1.611047 --7.34868 -3.3049297 1.6139349 --0 -0 0 --7.2402029 -3.1499298 1.5821687 --7.2693191 -3.1096892 1.5842865 --7.5895 -3.1916573 1.6483963 --7.2361917 -2.9910216 1.5692698 --6.8234406 -2.7715919 1.4780143 --7.7791243 -3.1041343 1.676312 --7.3978343 -2.8995593 1.5919874 --6.9777079 -2.6856923 1.4999619 --7.3998113 -2.7960763 1.5850565 --7.1656389 -2.657505 1.5324981 --7.1882653 -2.6158354 1.5338458 --8.1986475 -2.9265027 1.7409993 --7.3615379 -2.5770123 1.5633016 --8.2283735 -2.8237619 1.7398442 --8.1274166 -2.7335083 1.7153939 --8.2316484 -2.7124441 1.7334911 --22.478064 -7.2521124 4.6669483 --21.552715 -6.8078952 4.4674954 --21.623144 -6.684505 4.4734635 --0 -0 0 --12.850449 -3.8009193 2.6622169 --12.892384 -3.7274482 2.6660674 --0 -0 0 --0 -0 0 --12.266141 -3.3030555 2.5253339 --12.377292 -3.2516577 2.5438159 --12.559566 -3.2172759 2.5767372 --12.127777 -3.0275366 2.4854817 --12.314901 -2.9940825 2.5195582 --13.877181 -3.2837138 2.8308661 --13.856903 -3.1892624 2.8227804 --12.756728 -2.8538415 2.5977221 --12.796055 -2.780304 2.6021502 --14.326144 -3.0206845 2.9055648 --0 -0 0 --17.780355 -3.5214019 3.5892103 --12.848867 -2.4632196 2.5998399 --17.888805 -3.3152783 3.6024942 --12.340092 -2.2090931 2.4926052 --17.648682 -3.0472717 3.5468554 --17.681566 -2.9413385 3.5497432 --16.848526 -2.6966839 3.3807089 --19.048977 -2.928961 3.8142684 --12.960258 -1.9118161 2.6033053 --18.200247 -2.5703037 3.639266 --16.947557 -2.2875047 3.3882172 --12.920258 -1.6635444 2.588866 --12.94191 -1.5856669 2.5911763 --12.31392 -1.4321479 2.4652669 --12.262 -1.3499123 2.4533308 --13.569175 -1.40948 2.7095773 --13.435953 -1.3123746 2.6816616 --18.009323 -1.6471906 3.5811243 --18.051355 -1.5394059 3.5874774 --13.455877 -1.0646857 2.6812766 --13.540452 -0.98780698 2.6966784 --13.482615 -0.90046078 2.6841645 --13.585837 -0.82364583 2.7034166 --13.611212 -0.7413882 2.7074597 --13.658631 -0.65993744 2.7159307 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --22.104933 13.053596 4.7448764 --21.937504 13.136936 4.7262831 --20.871149 12.673018 4.5147147 --0 0 0 --20.53216 12.814661 4.4753613 --0 0 0 --22.256115 14.273046 4.8858619 --0 0 0 --0 0 0 --18.67576 12.468023 4.1545787 --0 0 0 --22.31811 15.29882 4.9994082 --0 0 0 --22.109385 15.557961 4.9950757 --19.377745 13.814364 4.4009876 --0 0 0 --0 0 0 --19.289299 14.294021 4.4396186 --19.465544 14.610491 4.5002728 --0 0 0 --0 0 0 --16.405643 12.792651 3.8514872 --16.854061 13.309397 3.9747818 --16.07305 12.85357 3.8105092 --15.968654 12.931524 3.8045521 --16.61459 13.62423 3.9767675 --16.549599 13.741627 3.9812803 --16.447655 13.828357 3.9771285 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --16.108416 14.769099 4.0442815 --0 0 0 --15.891557 14.933333 4.0356169 --0 0 0 --0 0 0 --14.114628 13.761519 3.6512914 --14.085925 13.90314 3.6657329 --15.950619 15.937958 4.1717281 --14.262076 14.426776 3.7565341 --14.189779 14.530904 3.7608666 --14.187758 14.708307 3.783973 --14.402572 15.115515 3.8652067 --0 0 0 --12.949559 13.928955 3.523845 --0 0 0 --12.730736 14.035093 3.5110281 --12.636502 14.104153 3.5088618 --0 0 0 --0 0 0 --13.979698 16.193384 3.9596181 --13.869864 16.266882 3.9567299 --0 0 0 --0 0 0 --0 0 0 --12.108291 14.927966 3.5610318 --0 0 0 --0 0 0 --12.588271 16.117241 3.7866807 --0 0 0 --12.061206 15.839338 3.6872149 --9.7041101 12.907568 2.9970901 --11.489558 15.479124 3.5713215 --10.473453 14.292663 3.2853792 --0 0 0 --10.293841 14.415309 3.284296 --9.4979782 13.47491 3.0590081 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.0644569 13.736111 3.0537732 --8.6418772 13.272204 2.9400461 --8.830883 13.746182 3.0319302 --9.4593239 14.924952 3.2763531 --9.7701244 15.626538 3.415714 --8.1627932 13.23584 2.8873343 --0 0 0 --10.162426 16.939823 3.6588733 --10.053286 16.993395 3.657068 --8.3598757 14.331028 3.0783236 --8.2198029 14.291677 3.0591886 --8.0383205 14.176715 3.0243485 --0 0 0 --8.0270147 14.57064 3.086447 --7.9355822 14.61616 3.0857248 --8.3366747 15.582118 3.2767141 --9.1527672 17.362679 3.6355863 --8.1294165 15.653571 3.2705765 --8.0820436 15.798601 3.2902532 --7.6220303 15.127634 3.1422274 --7.5002108 15.115967 3.1303132 --7.4232955 15.194401 3.1369925 --0 0 0 --0 0 0 --0 0 0 --17.409882 37.969414 7.6996136 --0 0 0 --6.7417083 15.193022 3.0839198 --0 0 0 --6.5566988 15.279128 3.0848224 --0 0 0 --6.3690834 15.359347 3.0850029 --0 0 0 --6.1867018 15.452785 3.0882523 --6.3538384 16.156813 3.2196701 --6.0370035 15.632139 3.1088314 --6.1523013 16.22621 3.218226 --5.8309956 15.668173 3.1016107 --5.7418332 15.723058 3.1054015 --5.6382837 15.738548 3.1016107 --5.4656377 15.556634 3.0595496 --5.3181844 15.439228 3.0303056 --0 0 0 --0 0 0 --0 0 0 --4.3951669 13.855054 2.7010386 --4.2619448 13.726771 2.671253 --4.1636295 13.706551 2.6624076 --4.1472397 13.960007 2.7060931 --0 0 0 --4.1694989 14.693007 2.8364279 --3.8041937 13.725932 2.6474245 --3.8267732 14.143978 2.7225204 --3.6417458 13.795357 2.6519375 --0 0 0 --3.5078497 13.981153 2.6788347 --0 0 0 --0 0 0 --3.5348995 15.274692 2.9108019 --3.3197737 14.756808 2.80935 --3.3473995 15.317882 2.9109824 --3.0153582 14.216253 2.7004972 --3.0111179 14.638149 2.7761345 --2.6589663 13.340646 2.5299065 --2.5945778 13.447491 2.5468752 --0 0 0 --5.9235001 32.860924 6.1615906 --5.7224317 32.900528 6.1623125 --2.3818302 14.211361 2.6779323 --5.1446919 31.892385 5.9622974 --2.1731997 14.019857 2.6371348 --4.7212415 31.740059 5.9227638 --4.5222368 31.73922 5.9173484 --4.3275361 31.767344 5.9175286 --4.1217566 31.710394 5.9021845 --3.9359264 31.806345 5.9153624 --3.6641123 31.178339 5.7949562 --3.4779599 31.247156 5.8036213 --3.2949047 31.351053 5.8189654 --3.0913429 31.25812 5.7982059 --2.8988528 31.269644 5.7969418 --2.8646481 33.109474 6.1327076 --2.6612806 33.124466 6.1323466 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0.75478524 20.715277 3.8377676 -0.88263041 20.727943 3.841017 -1.0030507 20.583618 3.8155639 -1.1317551 20.621271 3.8236873 -0 0 0 -0 0 0 -1.5979046 21.779955 4.0413933 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -2.1071398 20.204376 3.7615886 -1.5519289 14.04377 2.6264842 -1.6844698 14.431599 2.6999555 -1.7889481 14.550829 2.7239647 -1.9612192 15.182413 2.8429267 -2.0557914 15.180815 2.8449123 -2.1506937 15.180575 2.847259 -2.2386184 15.132066 2.8407605 -2.3402681 15.175398 2.8514111 -2.2541158 14.043934 2.6438141 -0 0 0 -0 0 0 -2.5346437 14.12495 2.6671011 -2.7351515 14.722229 2.7815502 -2.7053752 14.080226 2.6647544 -2.786166 14.035383 2.6595192 -2.8819056 14.065238 2.6683648 -2.9764898 14.086745 2.675766 -3.0647511 14.076867 2.6773906 -0 0 0 -3.7017839 16.052805 3.0568419 -3.7900033 15.986722 3.0487185 -0 0 0 -3.8806803 15.518209 2.9691095 -3.4678721 13.51437 2.5939908 -3.5329592 13.425303 2.5811739 -3.9717824 14.725271 2.8324566 -0 0 0 -4.2568755 15.045476 2.9030395 -4.2465305 14.664785 2.8353448 -4.5627007 15.402339 2.9815655 -4.4256001 14.609687 2.8349838 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.322584 15.37766 5.9482169 -28.202198 15.088976 5.9036288 -28.214207 14.873447 5.8870211 -28.223759 14.657888 5.8702326 -28.236111 14.445013 5.8543472 -28.231106 14.224573 5.8352122 -28.177765 13.981569 5.8065095 -28.172001 13.763938 5.7879162 -28.181469 13.555005 5.7727523 -28.18766 13.345634 5.7572279 -28.134396 13.109696 5.7299695 -28.123112 12.895004 5.7115564 -28.132669 12.691057 5.6976566 -28.132694 12.48389 5.6821318 -28.12583 12.274839 5.665524 -28.086731 12.053157 5.6427784 -28.086756 11.849624 5.6281567 -28.065355 11.638256 5.6095629 -28.077034 11.441704 5.5978293 -28.04353 11.227899 5.5774307 -28.059721 11.035096 5.5671411 -28.045244 10.831179 5.551075 -28.059673 10.639363 5.540966 -28.058979 10.442634 5.5281491 -27.999649 10.225394 5.5041399 -27.986862 10.026528 5.4895177 -27.994965 9.836031 5.4792285 -27.993414 9.6429291 5.4673142 -27.984026 9.4480143 5.4541359 -27.98918 9.2588301 5.4440269 -27.948153 9.0553865 5.4252529 -27.9685 8.8727245 5.4185739 -27.943512 8.676445 5.4034104 -27.949169 8.4905291 5.3943844 -27.945112 8.3023481 5.3837337 -27.923744 8.1098747 5.3700142 -27.926615 7.9252272 5.3611689 -27.920692 7.7387481 5.3508792 -27.907837 7.5510993 5.3395066 -27.89278 7.3636494 5.3279533 -27.878382 7.1771593 5.316761 -27.867517 6.9923205 5.3064713 -27.855436 6.8078861 5.2961817 -27.845972 6.6247745 5.2866144 -27.847767 6.4449186 5.2793937 -27.843607 6.2642112 5.2712703 -27.844044 6.0850577 5.2642298 -27.824089 5.9020534 5.2535791 -27.799086 5.71873 5.2422066 -27.792175 5.539782 5.2344441 -27.779287 5.3602028 5.2257795 -27.775879 5.1829753 5.2191 -27.764568 5.0047703 5.2111573 -27.777311 4.8312821 5.2079082 -27.7589 4.6527848 5.1990623 -27.757797 4.4776726 5.1936469 -27.750731 4.3019953 5.1873288 -27.741581 4.1264291 5.18083 -27.74106 3.9525247 5.1761365 -27.731655 3.77772 5.1699991 -27.728954 3.6041942 5.1653056 -27.708572 3.4287901 5.1575432 -27.699785 3.2552645 5.1521277 -27.701641 3.0832818 5.1488781 -27.690693 2.9101653 5.1434627 -27.687473 2.7381704 5.1396718 -27.67927 2.5659616 5.135159 -27.660196 2.3931088 5.1288404 -27.656712 2.221926 5.1255913 -27.652168 2.0508759 5.1223421 -27.64068 1.879565 5.1180096 -27.624207 1.7082294 5.1129551 -27.620419 1.5379326 5.1104279 -27.620495 1.3679899 5.1088028 -27.613628 1.1978484 5.1060953 -27.607681 1.0279158 5.1037483 -27.602654 0.85816264 5.1017628 -27.587734 0.68828887 5.0981522 -27.575705 0.51870453 5.095264 -27.566566 0.34934372 5.0930977 -27.568192 0.18019187 5.0930977 -27.568777 0.011033243 5.0930977 -27.558491 -0.15806952 5.0912929 -27.547167 -0.32704565 5.0894876 -27.531857 -0.49583566 5.0871406 -27.519447 -0.66454506 5.085516 -27.514851 -0.83338869 5.085516 -27.52298 -1.0027021 5.0880432 -27.543825 -1.1727322 5.0930977 -27.51548 -1.3407109 5.0893068 -27.521467 -1.5103257 5.0920148 -27.51659 -1.6794653 5.0929174 -27.493992 -1.8474813 5.0907512 -27.476252 -2.0157146 5.0896678 -27.464348 -2.1843457 5.0898485 -27.461206 -2.3537467 5.0918341 -27.459961 -2.5234609 5.0943613 -27.43515 -2.6910405 5.0927367 -27.424969 -2.8600428 5.0940003 -27.431345 -3.0309656 5.0985136 -27.429815 -3.2012763 5.1017628 -27.417467 -3.3704822 5.1032071 -27.405048 -3.539783 5.1048317 -27.375015 -3.7068148 5.1033874 -27.355652 -3.8752668 5.1041093 -27.338169 -4.0440521 5.1053729 -27.30798 -4.2109704 5.1044707 -18.099442 -2.904928 3.3976619 -17.999781 -3.0023379 3.3824985 -19.395025 -3.3574755 3.6458759 -19.067167 -3.4213567 3.5886512 -18.734432 -3.4804447 3.530524 -0 -0 0 -19.735138 -3.9174616 3.7260263 -18.686466 -3.8286426 3.5341344 -19.707712 -4.1640234 3.7301784 -0 -0 0 -18.517811 -4.1506553 3.516263 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9501181 -2.2495515 1.5496875 -7.941834 -2.2999315 1.5507706 -0 -0 0 -0 -0 0 -0 -0 0 -8.0686769 -2.5528789 1.5865134 -7.9602036 -2.5724013 1.568642 -7.9638853 -2.6276667 1.572433 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -19.945431 -7.2660003 3.929291 -0 -0 0 -21.082916 -7.9747462 4.1702838 -20.999628 -8.0908747 4.1636047 -0 -0 0 -20.373552 -8.1381817 4.0598063 -19.020294 -7.7333145 3.8016639 -20.190353 -8.3537416 4.0435596 -0 -0 0 -18.819572 -8.0584898 3.7906523 -18.74362 -8.162425 3.7854171 -19.053825 -8.4369631 3.8578053 -19.242962 -8.6623173 3.9063649 -19.284256 -8.8236036 3.9254999 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -3.9597981 -2.1462228 0.8599239 -3.9405215 -2.1671619 0.85866022 -4.1564894 -2.319242 0.90685886 -3.8656945 -2.188226 0.84855115 -3.7575116 -2.1575489 0.82851356 -3.7476022 -2.1825435 0.82923561 -3.7341399 -2.2054973 0.82923561 -4.3205123 -2.5876415 0.95758474 -3.7025902 -2.2486026 0.82833302 -3.7465167 -2.3068569 0.84078884 -3.2883892 -2.0527606 0.74475265 -3.2316785 -2.0450284 0.73518515 -3.2198975 -2.0653501 0.73536569 -3.2112877 -2.0877483 0.73626828 -3.1910245 -2.1025434 0.73464358 -3.3359447 -2.2274816 0.7694838 -3.3433957 -2.2622375 0.77417731 -3.3221505 -2.2777047 0.77255261 -3.3105357 -2.2997293 0.77309418 -3.2971668 -2.3205652 0.77327472 -4.0621414 -2.8962772 0.94891983 -4.3249722 -3.1238446 1.0124626 -2.9736712 -2.1758661 0.70955145 -2.9610546 -2.1946568 0.70973194 -2.9200001 -2.1921194 0.70341378 -4.4819093 -3.4076154 1.0666183 -2.8663819 -2.207386 0.69727612 -2.8341682 -2.210417 0.69294369 -2.800482 -2.2119172 0.68825018 -3.4659157 -2.7720788 0.8478291 -3.5459177 -2.8719032 0.87075502 -3.062 -2.5113053 0.76009679 -4.2330837 -3.5152376 1.0431508 -3.6257107 -3.0487161 0.90270692 -3.606936 -3.0709057 0.90270692 -4.1706429 -3.5951278 1.0438728 -4.0877361 -3.5676219 1.0290704 -3.2726502 -2.8919156 0.83483171 -3.9498129 -3.5335817 1.0059639 -3.5350978 -3.20189 0.90866405 -3.4820354 -3.192945 0.90036017 -3.4263337 -3.1807942 0.89133424 -3.2849002 -3.0872576 0.86064595 -3.3478477 -3.1853158 0.88140565 -3.9998569 -3.8525963 1.0525378 -2.4605813 -2.3994794 0.66406059 -2.4549124 -2.4235141 0.66640735 -2.4942665 -2.4927573 0.68048787 -2.4733922 -2.5024192 0.67904371 -2.4875407 -2.547807 0.68680602 -2.5182955 -2.6111588 0.6990813 -4.1197886 -4.324131 1.129439 -2.4590979 -2.6132169 0.69186056 -3.10202 -3.3370714 0.8694914 -4.1392903 -4.5078955 1.1565168 -2.5381203 -2.7986395 0.72670072 -0 -0 0 -3.3770494 -3.8165646 0.9685964 -2.2524989 -2.5775473 0.66153336 -3.6596911 -4.2396488 1.0612028 -3.3611095 -3.9424436 0.98412102 -3.3748698 -4.0081329 0.9949522 -3.4319746 -4.1270723 1.0184197 -3.2036939 -3.9010358 0.95975095 -1.6449211 -2.0285172 0.51260507 -1.6367477 -2.0439458 0.51386869 -1.6241755 -2.0539503 0.51386869 -1.6145694 -2.0677531 0.51477128 -1.7862597 -2.3167262 0.57019067 -1.8178942 -2.3878965 0.58409065 -1.8168029 -2.4170876 0.58824259 -2.1706829 -2.9249547 0.70178908 -2.1387415 -2.919178 0.69745666 -2.1271312 -2.9410121 0.69944239 -2.1039009 -2.9468048 0.69781768 -1.5224984 -2.1605639 0.51838166 -1.4968544 -2.1521027 0.51441026 -1.5576721 -2.2690847 0.53841931 -1.7031869 -2.5139072 0.59058934 -1.7074139 -2.5537434 0.59708798 -1.9490459 -2.9541101 0.68283463 -1.5745091 -2.4187241 0.56296986 -1.9487993 -3.0340762 0.6951099 -1.952261 -3.0808682 0.70269173 -1.914027 -3.0619323 0.6960125 -1.8972685 -3.0769675 0.69673455 -1.1852036 -1.9490947 0.45195061 -1.8629086 -3.1059222 0.69799823 -1.8157699 -3.0698893 0.68788916 -1.8003685 -3.08692 0.68915278 -1.1198494 -1.9477531 0.44563243 -1.0976889 -1.9366202 0.44184154 -1.1021019 -1.9725099 0.44797918 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -1.5320383 -2.9507058 0.64348143 -1.5416784 -3.0143399 0.65467364 -1.4965984 -2.9710407 0.64384246 -1.5806429 -3.186337 0.68608397 -0 -0 0 -1.4877031 -3.0938122 0.66333854 -0.9594034 -2.0272362 0.44491038 -0.96065587 -2.0625052 0.4508675 -1.4157456 -3.0884855 0.65683985 -1.3789718 -3.0576656 0.64889699 -1.3741479 -3.0975351 0.65521514 -1.3677057 -3.1347551 0.66099179 -1.0167961 -2.3702934 0.50664788 -1.3692803 -3.2464557 0.6799463 -0.89796042 -2.1663587 0.46368435 -0.88799167 -2.1800253 0.46530902 -0 -0 0 -1.1801201 -3.0017376 0.62524897 -1.3679187 -3.542918 0.73031116 -0.83596736 -2.2057595 0.46621162 -0.8227604 -2.2117691 0.46639213 -1.4613956 -4.0026464 0.81533563 -1.3671432 -3.8170912 0.77742666 -1.1849091 -3.3734932 0.6895138 -0.89349049 -2.5949011 0.53697515 -1.3447912 -3.9841878 0.80504608 -1.3274244 -4.0138416 0.80919802 -0.97048563 -2.9964073 0.61134905 -0.90538478 -2.8551147 0.58300751 -0.93626714 -3.0165451 0.61297369 -0.75391626 -2.4829822 0.50953621 -0.73250401 -2.466819 0.50556481 -0.86028296 -2.9633718 0.59961528 -0.84745455 -2.9875185 0.60322565 -0.86956698 -3.1386287 0.63102561 -0.81972086 -3.0309231 0.6095438 -0.79960161 -3.03019 0.60846072 -0.7751081 -3.0121789 0.60412824 -0.74296623 -2.9625003 0.59383863 -0.71333194 -2.9201865 0.58499324 -0.70701116 -2.9733083 0.59419972 -0.68697971 -2.9699247 0.59275556 -0.67241395 -2.990397 0.59582436 -0.92727238 -4.2445846 0.83067977 -0.88141221 -4.1568646 0.81316942 -0.66145527 -3.2171042 0.63608015 -0.65920097 -3.3088803 0.65250736 -0.80605316 -4.1791444 0.81443304 -0.77913219 -4.1772437 0.81316942 -0.76133883 -4.2255039 0.82129276 -1.4650716 -8.4249887 1.6027602 -1.5138397 -9.0333023 1.714321 -1.3133252 -8.14326 1.5471603 -0.43875948 -2.8326023 0.55935949 -0.4356983 -2.931555 0.57723087 -0.39966476 -2.8075876 0.55376339 -0.36092088 -2.6521068 0.52451932 -0.34210524 -2.6347642 0.52090895 -0.32895228 -2.6612167 0.52542192 -0.33707225 -2.8712537 0.56387246 -0.3184689 -2.86447 0.56224781 -0.31456143 -2.9964685 0.58625686 -0.30662528 -3.1040521 0.60575294 -0.29165962 -3.1499467 0.61387628 -0.27385274 -3.1693153 0.61712563 -0.29087606 -3.6248665 0.70070601 -0.20059578 -2.7094638 0.53192061 -0.25511476 -3.7567141 0.72435403 -0 -0 0 -0.20636949 -3.7124233 0.71568906 -0.13520984 -2.7371473 0.53625304 -0.12421154 -2.8715653 0.56080365 -0.10596725 -2.8555644 0.55773485 -0.088780195 -2.8669748 0.55972052 -0.071285278 -2.8713987 0.56044263 -0.053646855 -2.8707986 0.56026208 -0 -0 0 -0 -0 0 -0 -0 0 --0 -0 0 --0.034847755 -2.9055159 0.5665803 --0.052975852 -2.9219654 0.5696491 --0.098953113 -4.0838284 0.7830227 --0.12487228 -4.1116548 0.78825778 --0.14866677 -4.0714946 0.78103703 --0.17657398 -4.1392932 0.79367334 --0.19967186 -4.0909767 0.78500843 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0.28134209 -2.6943617 0.53047645 --0.29927316 -2.7052939 0.5328232 --0.31757694 -2.7180607 0.53553098 --0.33244875 -2.7014177 0.5328232 --0.34876609 -2.697376 0.53246218 --0.36649802 -2.7039573 0.53408682 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.3981568 -3.4993386 0.72489554 --1.4125637 -3.473382 0.72146571 --1.4522743 -3.5091834 0.73031116 --0 -0 0 --1.5072296 -3.5191269 0.73590726 --1.54136 -3.5386696 0.74168384 --1.5606546 -3.5237491 0.74060071 --1.5883024 -3.5275602 0.74330848 --1.6307873 -3.5633626 0.75251502 --1.652621 -3.5532892 0.75251502 --1.6550649 -3.5021737 0.74421114 --3.9382207 -8.203969 1.7034899 --4.0764179 -8.3600044 1.7403158 --1.6262821 -3.2833719 0.70576054 --1.6327002 -3.2460907 0.70016444 --1.654376 -3.2395155 0.70088649 --1.6710539 -3.2231908 0.69962287 --1.7004167 -3.2311563 0.70341378 --4.2590551 -7.9752455 1.6926587 --4.6340613 -8.5508394 1.8183 --1.8994056 -3.4535625 0.75666696 --1.942603 -3.4813547 0.76497084 --1.9140297 -3.3812022 0.74637735 --1.9357197 -3.3711004 0.74673837 --2.0068493 -3.445858 0.76515132 --2.0529609 -3.4758258 0.77417731 --5.0151362 -8.3743525 1.8247987 --5.0674472 -8.3451042 1.8251598 --0 -0 0 --4.9997067 -8.0102749 1.7663105 --5.040349 -7.9661479 1.7634223 --0 -0 0 --5.1168218 -7.8715324 1.756382 --5.1693525 -7.846559 1.7578261 --5.2294154 -7.8326898 1.7617975 --5.3402042 -7.8933277 1.7823768 --5.3957653 -7.8709588 1.7847235 --5.4473257 -7.8425498 1.7858065 --5.5400591 -7.8725247 1.8000675 --5.6876035 -7.9777398 1.8314779 --5.6944103 -7.8844824 1.8183 --5.7200332 -7.8184342 1.8112597 --5.7626281 -7.7760773 1.8096352 --5.9129663 -7.8774486 1.8410454 --5.9147615 -7.7799444 1.826965 --0 -0 0 --5.9989018 -7.6928134 1.8237156 --6.0411143 -7.6496849 1.8222715 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.6610775 -9.2052031 2.48243 --9.7016211 -9.1309195 2.4784586 --9.7978039 -9.1087246 2.4885676 --9.7368746 -8.9413233 2.4595041 --9.642211 -8.7459412 2.4224975 --10.401868 -9.3193302 2.596518 --10.486107 -9.2794485 2.6031973 --0 -0 0 --9.3893738 -8.1055984 2.3098536 --10.700041 -9.1231518 2.6140285 --9.5754051 -8.0632601 2.3307939 --9.5271502 -7.9232216 2.3075068 --10.407844 -8.5482082 2.5051754 --10.998626 -8.9210119 2.6324413 --10.911908 -8.7402134 2.5992258 --10.21706 -8.0812101 2.4241223 --11.128413 -8.6916227 2.6248596 --10.093489 -7.7840295 2.3726742 --10.166883 -7.7416148 2.3786314 --10.387935 -7.8097138 2.4185262 --10.348783 -7.6813412 2.398669 --11.080383 -8.1194315 2.5544572 --11.078993 -8.0143948 2.5429039 --11.250424 -8.03372 2.5705233 --11.176507 -7.8778348 2.5429039 --0 -0 0 --10.921257 -7.4990053 2.4647391 --11.002076 -7.4555798 2.4725015 --0 -0 0 --11.034453 -7.2815413 2.4596846 --11.055021 -7.1981335 2.4544494 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.516806 -9.7713232 3.5554357 --16.65546 -9.7158871 3.5722241 --16.59881 -9.546814 3.5476735 --16.448311 -9.3264084 3.5036268 --16.536135 -9.2425833 3.5101254 --16.564106 -9.1252832 3.5041683 --0 -0 0 --16.683514 -8.9259691 3.5059736 --17.071205 -8.9991083 3.5751123 --17.123482 -8.8928318 3.5745709 --16.267941 -8.322156 3.3870113 --6.6443696 -3.3475056 1.3987736 --7.3097243 -3.6266975 1.5309136 --7.0022082 -3.4207249 1.4635799 --7.0257244 -3.3789747 1.4641215 --7.2303405 -3.4229283 1.5014889 --18.79384 -8.7571621 3.8386703 --19.02335 -8.7224426 3.8742325 --19.088167 -8.6108112 3.8765793 --17.53858 -7.7825861 3.5548942 --17.462503 -7.6209245 3.530163 --17.614685 -7.5590167 3.5512838 --20.77087 -8.7629862 4.1708255 --7.4068489 -3.071188 1.5049188 --7.6459775 -3.1155107 1.5486044 --6.9463396 -2.7808137 1.4065359 --6.9889007 -2.748219 1.4115903 --7.9470057 -3.0688605 1.5968031 --7.1738458 -2.7197874 1.4413761 --7.204226 -2.6808643 1.4440838 --8.1647511 -2.981447 1.6285744 --8.1134453 -2.9064126 1.6150354 --8.0800886 -2.8386419 1.6051069 --8.2545137 -2.8431492 1.6356146 --7.2224979 -2.438163 1.43235 --22.538584 -7.4556904 4.390337 --21.624836 -7.0064964 4.2053046 --23.118702 -7.3341031 4.4847484 --0 -0 0 --0 -0 0 --0 -0 0 --12.9547 -3.7622046 2.5091467 --0 -0 0 --0 -0 0 --12.660972 -3.4254904 2.4405496 --12.704576 -3.3537652 2.4448819 --12.664907 -3.2602987 2.4335093 --12.636019 -3.1703184 2.4243028 --16.910793 -4.1328492 3.2283351 --16.954971 -4.0335617 3.2319455 --17.942434 -4.1523442 3.4133673 --12.758956 -2.870271 2.4335093 --13.989931 -3.057169 2.661505 --14.05461 -2.9810681 2.6701698 --18.308683 -3.7662604 3.4639125 --0 -0 0 --14.13897 -2.7280135 2.676127 --14.371058 -2.6814437 2.7163827 --12.469694 -2.2475345 2.3587744 --12.558833 -2.1841269 2.3728549 --12.579759 -2.1083272 2.374299 --12.607023 -2.0334492 2.3770068 --16.757868 -2.597693 3.1456573 --12.877163 -1.9152035 2.4226782 --17.055286 -2.4298704 3.1951196 --12.58686 -1.7144163 2.3647316 --12.52594 -1.6278967 2.3515537 --0 -0 0 --0 -0 0 --17.862766 -1.9880425 3.331953 --17.904953 -1.8815885 3.3375492 --0 -0 0 --0 -0 0 --20.598967 -1.7820833 3.8280196 --25.183134 -2.0231645 4.6701417 --19.674702 -1.4590977 3.6541798 --19.836367 -1.3487604 3.6823406 --19.092291 -1.1805097 3.5440631 --0 -0 0 --24.665535 -1.2215942 4.5658016 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --22.218649 13.337729 4.4677916 --21.749096 13.238049 4.3902073 --0 0 0 --20.540514 12.850427 4.1793804 --22.339108 14.167235 4.5598807 --0 0 0 --19.238483 12.534328 3.9624817 --18.988485 12.538073 3.927063 --18.875971 12.630774 3.9198105 --21.026838 14.257747 4.3805933 --22.2875 15.313128 4.6605716 --0 0 0 --21.134573 14.905983 4.4588523 --19.455629 13.901275 4.1250715 --0 0 0 --20.837545 15.278487 4.4548044 --19.740065 14.660809 4.240942 --0 0 0 --20.577875 15.678567 4.4602017 --19.611223 15.133081 4.2721443 --19.734674 15.422476 4.3192005 --20.029203 15.851587 4.4042063 --16.174465 12.96277 3.5802951 --16.016562 12.998412 3.5630915 --15.909851 13.074538 3.5571885 --15.833874 13.175696 3.5582004 --16.281862 13.718478 3.6766007 --15.617757 13.323586 3.5462253 --0 0 0 --0 0 0 --0 0 0 --35.261654 31.611563 8.1368523 --0 0 0 --0 0 0 --15.84892 14.74256 3.7373188 --0 0 0 --15.741717 15.00736 3.7550282 --15.646501 15.100928 3.7543535 --14.251448 13.92429 3.442836 --14.127902 13.97404 3.4337282 --14.07811 14.096733 3.4424987 --15.572292 15.785621 3.8277214 --14.130367 14.500697 3.4979882 --14.587942 15.155271 3.6329174 --13.372724 14.064371 3.3542888 --13.303719 14.164842 3.3586738 --13.182367 14.20935 3.3500721 --13.716867 14.968743 3.507602 --13.33308 14.730338 3.4332223 --0 0 0 --0 0 0 --14.071623 16.133614 3.6966715 --13.943417 16.186045 3.6890817 --0 0 0 --13.765931 16.382347 3.6949847 --0 0 0 --0 0 0 --12.256024 15.142687 3.3669384 --12.13765 15.186034 3.3600233 --12.078436 15.303554 3.3694682 --12.473236 16.00481 3.505578 --10.691784 13.893707 3.0333261 --10.599773 13.950416 3.0314708 --0 0 0 --11.679576 15.769832 3.3913941 --9.7350397 13.314032 2.8557255 --9.6768131 13.406284 2.8626406 --10.192023 14.304319 3.0388918 --10.078547 14.330304 3.0313022 --9.3665857 13.493059 2.8440878 --9.2797184 13.544585 2.8429074 --0 0 0 --0 0 0 --0 0 0 --8.9681473 13.804612 2.8503284 --8.8338137 13.782201 2.8346429 --9.4269876 14.908382 3.0517101 --8.3609638 13.40365 2.7366507 --8.1933451 13.316177 2.7088215 --9.5431499 15.725716 3.1810734 --9.8660603 16.485147 3.3208938 --9.8203268 16.639603 3.3396151 --8.3260851 14.307261 2.866014 --8.2018461 14.294812 2.853533 --8.6142416 15.229437 3.0274229 --8.0363674 14.413325 2.8572435 --8.0080585 14.572075 2.8786635 --9.108285 16.818167 3.3062203 --8.2550669 15.468431 3.0336633 --8.9324036 16.988001 3.3176892 --8.8710632 17.125637 3.3337121 --7.6737576 15.039146 2.9225154 --0 0 0 --18.303068 36.988628 7.0951991 --0 0 0 --7.1442285 14.893217 2.8599422 --0 0 0 --8.0465517 17.316439 3.300823 --0 0 0 --0 0 0 --7.7463884 17.506685 3.3092561 --6.6580615 15.299735 2.8886147 --16.395626 38.321285 7.1656995 --6.4881511 15.423901 2.8967104 --0 0 0 --6.2857757 15.47131 2.8909757 --6.4935927 16.268509 3.0307961 --6.4404116 16.427347 3.0527222 --6.0233035 15.645101 2.9021075 --5.9425244 15.722334 2.9095285 --5.8336024 15.725231 2.9034567 --5.7407122 15.770918 2.9053121 --5.6448298 15.808631 2.905818 --4.6667237 13.32648 2.449589 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.618381 14.610932 2.6555245 --4.5114603 14.583437 2.6455734 --4.1732688 13.78911 2.4986694 --0 0 0 --3.9837501 13.770163 2.486357 --3.9613667 14.014407 2.5254865 --3.7934926 13.742001 2.4728642 --3.7265351 13.829737 2.484333 --3.9703002 15.103077 2.705617 --3.8988414 15.210224 2.7202904 --3.8042459 15.229079 2.7194471 --3.7125938 15.259796 2.7207963 --0 0 0 --3.5151005 15.260983 2.7132068 --3.2821152 14.659927 2.6040828 --4.1539197 19.104649 3.3789134 --3.0297434 14.356721 2.544208 --2.7646096 13.509792 2.3930874 --2.6799388 13.517799 2.3915694 --3.6576383 19.064346 3.3551321 --2.7794788 14.982074 2.640851 --2.6089542 14.5603 2.564616 --2.5064752 14.500274 2.5514605 --2.3415482 14.059374 2.4723582 --3.0768898 19.203583 3.3613725 --4.9067411 31.879986 5.5527902 --2.1950588 14.863604 2.6044202 --0 0 0 --1.9254075 14.244731 2.4931035 --1.9907489 15.442099 2.6976898 --3.8371549 31.286627 5.4271374 --3.6435163 31.295876 5.4247761 --0 0 0 --3.2584798 31.331367 5.4235954 --3.0656934 31.345867 5.4227524 --2.8715034 31.344456 5.4193792 --2.6718273 31.276043 5.4047055 --2.5020535 31.571888 5.452774 --0 0 0 --0 0 0 --2.186609 35.995701 6.2041607 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.0317845 20.721964 3.5836682 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.9871548 21.374018 3.7066224 -0 0 0 -2.1111374 20.037439 3.481122 -2.2413714 20.089741 3.4924223 -1.6877978 14.3324 2.5028858 -1.7459745 14.082122 2.4615638 -1.8770516 14.414215 2.5207641 -2.0810797 15.249148 2.6669934 -2.1743288 15.23414 2.6666563 -2.2488699 15.093775 2.6447301 -0 0 0 -2.2640588 14.014153 2.4625759 -2.5653329 15.282146 2.6850402 -2.6346874 15.126287 2.660753 -2.5794351 14.2902 2.518234 -2.7730219 14.840905 2.6169009 -2.9921658 15.486527 2.732434 -2.8327703 14.193903 2.5101383 -2.8657033 13.913668 2.4642625 -3.2068653 15.100051 2.6749206 -3.3053582 15.107051 2.6796432 -3.6150792 16.049976 2.8486419 -3.718833 16.050539 2.8526897 -3.8151913 16.018787 2.8511717 -3.8981783 15.932845 2.8402088 -3.8315787 15.254748 2.7248442 -3.4915702 13.549174 2.4276628 -3.5582671 13.465554 2.4166999 -4.0212517 14.847703 2.6656442 -4.1212416 14.855042 2.6713786 -4.223897 14.870245 2.6786311 -4.2911162 14.761704 2.6639576 -4.3585682 14.657626 2.6501274 -4.4650583 14.685302 2.6599097 -4.5580077 14.667041 2.6615963 -4.6819296 14.745893 2.6808238 -4.7878304 14.764705 2.6894255 -4.9238844 14.872598 2.7142186 -5.0301971 14.886927 2.7223144 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.26977 15.309267 5.534575 -28.210119 15.053852 5.5048904 -28.242632 14.849284 5.4934216 -28.223806 14.619048 5.4723387 -28.255028 14.416031 5.4612069 -28.218765 14.179993 5.4374261 -28.195694 13.952375 5.416512 -28.171782 13.726008 5.3957663 -28.161264 13.507709 5.3778882 -28.187462 13.30815 5.3672628 -28.130928 13.070987 5.341289 -28.142471 12.866986 5.3284707 -28.135492 12.655656 5.3124475 -28.115265 12.439713 5.2942324 -28.097065 12.226068 5.2766914 -28.1054 12.025136 5.264379 -28.091431 11.815774 5.2481875 -28.081421 11.609297 5.2330084 -28.083635 11.408953 5.2203588 -28.045084 11.19331 5.2004566 -28.05267 10.997277 5.1893249 -28.060747 10.802281 5.1785307 -28.052738 10.602026 5.1650376 -28.035936 10.399535 5.1501956 -28.02512 10.200347 5.1367025 -27.988781 9.9930687 5.1188245 -27.986309 9.7989969 5.1073556 -28.003023 9.6123734 5.099597 -28.012896 9.4240274 5.0908265 -27.977514 9.2214231 5.0741291 -27.964155 9.0271788 5.0616484 -27.968266 8.839385 5.0525403 -27.952293 8.6460581 5.0400596 -27.946325 8.4566851 5.0296025 -27.935308 8.2665939 5.0184708 -27.928692 8.078599 5.0083513 -27.91703 7.889926 4.9975567 -27.894606 7.6990786 4.985076 -27.898491 7.5162387 4.9774861 -27.901186 7.3336415 4.9698963 -27.883596 7.1464009 4.9589334 -27.874323 6.9620414 4.949657 -27.869587 6.7794628 4.9413924 -27.86462 6.5974317 4.9332967 -27.864235 6.4170446 4.9262133 -27.840563 6.2319593 4.9152503 -27.824339 6.0492911 4.9058051 -27.82139 5.8701091 4.89889 -27.815361 5.6907959 4.8916373 -27.800444 5.5102453 4.8830357 -27.806627 5.3343625 4.8783131 -27.79813 5.156096 4.8712296 -27.791405 4.9786558 4.8646517 -27.76898 4.798975 4.8555441 -27.762901 4.6226707 4.849472 -27.772251 4.4492722 4.8462677 -27.758112 4.2724848 4.8391838 -27.7409 4.0957513 4.8317628 -27.733301 3.920907 4.8261967 -27.73144 3.7472343 4.8218117 -27.721649 3.5728505 4.816246 -27.718592 3.3996875 4.8120294 -27.716412 3.2269247 4.8081503 -27.697479 3.0525894 4.8015723 -27.676474 2.8785067 4.794826 -27.664185 2.7057555 4.7897658 -27.665543 2.5346119 4.7872362 -27.658968 2.3629668 4.7835255 -27.652311 2.1915755 4.7799835 -27.645576 2.020427 4.7766104 -27.635817 1.8493118 4.7729001 -27.630903 1.6787511 4.7702012 -27.631824 1.5086962 4.7686834 -27.627764 1.3385026 4.7664909 -27.620684 1.1683325 4.7639608 -27.601723 0.99790823 4.7595758 -27.60437 0.82843989 4.7590694 -27.594152 0.65869486 4.7565398 -27.582891 0.48910645 4.7540097 -27.576504 0.31974933 4.752492 -27.57696 0.15053171 4.7523232 -27.577366 -0.01868017 4.7523232 -27.556032 -0.18774945 4.7487812 -27.547462 -0.3567369 4.7476006 -27.533915 -0.52555084 4.7457452 -27.5282 -0.69443607 4.7454081 -27.516525 -0.86311626 4.7442274 -27.505787 -1.0317533 4.7433844 -27.498938 -1.2005062 4.7433844 -27.49893 -1.3696065 4.7447333 -27.487057 -1.5381457 4.7442274 -27.488907 -1.707508 4.7462516 -27.469061 -1.8755399 4.7447333 -27.494389 -2.0468338 4.7511425 -27.475416 -2.2150223 4.7501307 -27.460325 -2.3834813 4.7499619 -27.437332 -2.5511994 4.7486129 -27.455492 -2.7229099 4.7545156 -27.448071 -2.8923557 4.7562022 -27.411194 -3.0586417 4.7529979 -27.402679 -3.228045 4.7548532 -27.38529 -3.396488 4.7553592 -27.372732 -3.5656033 4.7568769 -18.774715 -2.5624943 3.2758613 -27.385462 -3.9096012 4.7669969 -27.368755 -4.0787244 4.7683458 -27.350033 -4.2476382 4.7695265 -0 -0 0 -18.124453 -3.0426772 3.1782062 -18.047178 -3.1436768 3.1680865 -19.031485 -3.4356506 3.3426511 -18.991636 -3.5489197 3.3394465 -0 -0 0 -18.765902 -3.7456198 3.3079069 -17.949013 -3.6971834 3.1692672 -17.971304 -3.8168743 3.1771944 -18.03228 -3.9456184 3.1920364 -25.662777 -5.7809763 4.53475 -0 -0 0 -0 -0 0 -18.104269 -4.4296103 3.2227328 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.9478431 -2.2570186 1.4472342 -7.932898 -2.3054678 1.4470655 -0 -0 0 -31.629576 -9.618372 5.6904178 -0 -0 0 -7.9744492 -2.5313807 1.4651122 -7.9709554 -2.5842168 1.4673048 -7.9334278 -2.6259503 1.4634256 -0 -0 0 -24.72106 -8.5232706 4.5079327 -0 -0 0 -20.59716 -7.3852663 3.7776289 -19.891394 -7.2702169 3.6573732 -19.917532 -7.4186263 3.6703603 -0 -0 0 -0 -0 0 -20.772738 -8.1757097 3.8533578 -20.408358 -8.1772518 3.795507 -19.124775 -7.7993932 3.5676453 -20.39933 -8.4656191 3.8127105 -20.382416 -8.6055822 3.8192883 -18.864765 -8.1014719 3.5465627 -0 -0 0 -18.74411 -8.3235588 3.5428522 -19.225409 -8.6789379 3.6428685 -19.238087 -8.8271608 3.6553493 -19.171947 -8.9396219 3.6531568 -0 -0 0 -19.172707 -9.2280865 3.6744082 -0 -0 0 -0 -0 0 -3.9867043 -2.009022 0.7973817 -3.9725473 -2.032548 0.79704434 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -3.8262239 -2.1388941 0.78355145 -3.8267441 -2.1701145 0.78625005 -3.8680298 -2.2250233 0.79704434 -3.7828004 -2.2069724 0.78287679 -3.7149045 -2.198004 0.77208245 -3.7047281 -2.2227862 0.77275711 -3.717962 -2.2618768 0.77815425 -3.7283382 -2.29966 0.78304547 -3.7158287 -2.3235388 0.78338277 -13.50516 -8.5642862 2.769877 -4.1969414 -2.6967764 0.88710958 -4.1885738 -2.7278585 0.88879615 -4.1972547 -2.7703459 0.89402467 -4.2432528 -2.8382592 0.90701163 -4.2559419 -2.8847108 0.91325206 -4.2519717 -2.9202602 0.91611934 -3.3101707 -2.3031361 0.723508 -3.2355669 -2.280793 0.7108584 -3.0787618 -2.1985965 0.68083662 -3.0532372 -2.2087765 0.6783067 -3.0555243 -2.2391264 0.68167996 -3.0306499 -2.2496045 0.67931867 -2.9907968 -2.2486026 0.67375284 -2.9408791 -2.2394311 0.66599447 -2.9473712 -2.2730911 0.67037964 -2.8844416 -2.2528934 0.65975398 -2.8527875 -2.2564797 0.65587473 -2.7919729 -2.2363374 0.64558643 -2.8769236 -2.3335574 0.66734374 -2.886157 -2.3705676 0.67257226 -4.3557572 -3.6234088 1.00298 -2.9563439 -2.4896464 0.69483554 -2.9402623 -2.5070996 0.69466686 -4.2845945 -3.6997485 1.0021366 -3.9702344 -3.4709442 0.93585271 -3.304646 -2.9247713 0.78861129 -3.9640372 -3.5523024 0.94428575 -4.0370479 -3.6626787 0.96621174 -3.4933872 -3.2085249 0.84511286 -3.4656959 -3.2225146 0.84325761 -2.4140322 -2.2719388 0.60072249 -2.4107471 -2.2969108 0.60325241 -2.3788781 -2.2945461 0.59903586 -2.3816738 -2.3256326 0.60308373 -2.4094038 -2.381794 0.61320341 -3.6727753 -3.6764059 0.92269713 -3.5684707 -3.6160672 0.90279508 -4.2712235 -4.38199 1.0805641 -4.2367373 -4.4003034 1.0787089 -3.6215153 -3.8075802 0.93264812 -2.6352131 -2.8044097 0.69196832 -2.6159449 -2.8183584 0.69146234 -2.9015799 -3.1650236 0.76820326 -3.5931232 -3.9683912 0.94951427 -3.4524319 -3.8602939 0.91966122 -3.4064991 -3.8562832 0.91392672 -2.9137311 -3.3392794 0.79181588 -2.3579795 -2.7357368 0.65148956 -2.595345 -3.0489552 0.71861678 -2.36164 -2.8089921 0.66144061 -1.6608073 -1.999657 0.47827429 -1.6485063 -2.00981 0.47827429 -1.6435841 -2.0290816 0.48029822 -1.6797159 -2.0999579 0.49362248 -1.6551974 -2.0955236 0.4904179 -1.6629076 -2.1320748 0.4961524 -1.6660231 -2.1633303 0.50070626 -1.657488 -2.179791 0.50205553 -2.2526784 -3.001296 0.67560816 -3.2742536 -4.4194965 0.97464484 -2.2255673 -3.0422409 0.67847538 -2.188977 -3.0310624 0.67324686 -1.7242435 -2.4182632 0.54169101 -1.6526749 -2.3481693 0.52482486 -1.4437765 -2.0780942 0.46646798 -1.4610786 -2.1308255 0.47557572 -1.4269991 -2.1087203 0.46916658 -1.745528 -2.6143277 0.57137537 -1.8221325 -2.7657719 0.60021651 -1.9909012 -3.0629048 0.65857333 -1.807201 -2.8177996 0.60628831 -1.9505311 -3.0829399 0.65773004 -1.9279265 -3.0889957 0.65654939 -1.927013 -3.1301508 0.66245258 -2.2902298 -3.7722433 0.78861129 -2.3060124 -3.851352 0.80159819 -2.2793322 -3.8603354 0.80058622 -2.2496541 -3.8640251 0.79856229 -1.1292011 -1.9660244 0.42143539 -1.1248801 -1.9866437 0.42413399 -1.0997106 -1.9702631 0.4195801 -1.1080106 -2.0141199 0.42683256 -0 -0 0 -1.1175482 -2.091917 0.4393135 -1.6849127 -3.2023866 0.6526702 -1.6892569 -3.259053 0.66160923 -1.6553421 -3.2421384 0.65638071 -0.9955101 -1.9786743 0.41249633 -0.98990732 -1.997997 0.41502625 -1.4805536 -3.0363529 0.61151683 -1.4474026 -3.0151629 0.60578233 -1.4074144 -2.978529 0.5971806 -0.96175677 -2.0672781 0.423628 -0.9392184 -2.051626 0.4195801 -0.93793291 -2.0825205 0.42430264 -1.3291084 -3.0013547 0.59515667 -0.97522628 -2.2384863 0.45128846 -0.96728826 -2.2580216 0.45381838 -0.95074022 -2.2575541 0.45263776 -1.3612369 -3.2899468 0.64271915 -0.91591692 -2.2517002 0.44943318 -1.344874 -3.3668244 0.65385079 -1.5723934 -4.0082207 0.77022719 -0.86440116 -2.2424209 0.44471067 -1.1279728 -2.9816241 0.57896513 -1.4483055 -3.901557 0.74560261 -1.4149004 -3.8844354 0.74088013 -1.3837487 -3.8726215 0.73716956 -1.1619391 -3.3154104 0.63462341 -1.1319749 -3.2945089 0.62956357 -0.88704842 -2.6334131 0.50897068 -1.3305594 -4.0336661 0.7602762 -0.93035668 -2.8786058 0.55113602 -0.77902508 -2.4613218 0.47523838 -0.75400621 -2.4340389 0.46950391 -0 -0 0 -1.1751598 -3.9676688 0.74155474 -1.151888 -3.9785922 0.7422294 -0.88381213 -3.1233702 0.58891618 -0.88114995 -3.1885943 0.59954184 -0.83926409 -3.1111388 0.58486831 -0.83093143 -3.157222 0.59212077 -0.77484232 -3.0190375 0.56682152 -0.75534803 -3.0199099 0.56614691 -0.7335428 -3.0110791 0.56378561 -0.72595215 -3.0615633 0.57188135 -0.71157646 -3.0851707 0.57525462 -0.50663954 -2.258415 0.42953113 -0.48293254 -2.2162116 0.42160407 -0.47868371 -2.2634978 0.42936248 -0.69984496 -3.4155502 0.63006955 -1.655265 -8.3469639 1.4895681 -1.6030896 -8.3521233 1.4887248 -0.7213257 -3.8833544 0.70934045 -0.6872319 -3.8304634 0.6993894 -0.66841441 -3.861804 0.70411193 -0.65134215 -3.9056969 0.71102703 -0.63095027 -3.9320049 0.71490628 -0.40368822 -2.6157506 0.48637003 -0.38935781 -2.6298797 0.48839396 -0.37348971 -2.6341712 0.48873129 -0.35824335 -2.6432509 0.48991191 -0.37174293 -2.8761113 0.52971601 -0.35648751 -2.8979051 0.53308922 -0.33345801 -2.855001 0.52533084 -0.2586188 -2.3367479 0.43577161 -0.24346051 -2.3304477 0.43442231 -0.2281975 -2.3220878 0.43273571 -0.2142148 -2.3263888 0.4332417 -0.19960088 -2.3237312 0.43256703 -0.26527399 -3.3340383 0.60578233 -0.25622839 -3.491909 0.63259947 -0.22401138 -3.3321252 0.60493898 -0.20308375 -3.3255661 0.60358971 -0.18106377 -3.2972233 0.59852988 -0.16035242 -3.2884271 0.59684324 -0.14062974 -3.3001819 0.59869856 -0.11045332 -3.0261586 0.551642 -0.093329854 -3.0750556 0.55990642 -0.07408423 -3.0598042 0.55720782 -0.057696622 -3.1952174 0.58031446 -0 -0 0 -0.017120764 -2.9443417 0.53730577 --0 -0 0 --0 -0 0 --0 -0 0 --0.074673392 -3.9648466 0.71203899 --0.099522702 -3.9850063 0.71558088 --0 -0 0 --0.08727444 -2.3553133 0.43678358 --0.1014235 -2.3478403 0.43560296 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0.19631267 -2.651288 0.48839396 --0.21828285 -2.7207723 0.50053757 --0.23565528 -2.7272375 0.5018869 --0.25256747 -2.7277031 0.50222421 --0.26959154 -2.7290447 0.50273019 --0.28509152 -2.7155762 0.50070626 --0.30393559 -2.7333674 0.50407946 --0.31966329 -2.722641 0.50256151 --0.33429995 -2.7039995 0.49969429 --0.35559744 -2.7380614 0.50593477 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.4003394 -3.4975095 0.67813808 --1.419912 -3.484288 0.67729473 --1.4473102 -3.4900758 0.67999333 --1.469081 -3.4820375 0.68016201 --1.4841948 -3.4584672 0.67746341 --0 -0 0 --1.5301245 -3.448101 0.67898136 --0 -0 0 --1.6344002 -3.5643373 0.70444924 --1.6524905 -3.5462019 0.70293128 --1.6856143 -3.5600455 0.70748514 --4.0259156 -8.3659573 1.622136 --4.0611525 -8.3083344 1.6158955 --1.667124 -3.359798 0.6752708 --1.6557541 -3.2861378 0.66312718 --1.6736404 -3.2715294 0.6622839 --1.6964099 -3.2664461 0.66329587 --1.7417166 -3.3039243 0.67257226 --4.1222672 -7.7013693 1.5281916 --4.5534477 -8.3826523 1.6658193 --1.8636268 -3.3826551 0.69432956 --1.9084066 -3.4141684 0.7027626 --1.920077 -3.3861063 0.69955808 --1.9531102 -3.395618 0.70377457 --2.0166452 -3.4567764 0.71827948 --4.9548154 -8.3713741 1.6980337 --5.0091319 -8.3458843 1.6990457 --5.0182204 -8.2459526 1.6852154 --4.9936585 -8.0933819 1.6607594 --5.0463614 -8.0676022 1.6617714 --5.170207 -8.1538506 1.6855527 --0 -0 0 --0 -0 0 --0 -0 0 --5.5096431 -8.2350368 1.7288986 --5.5490041 -8.1847601 1.7255255 --0 -0 0 --0 -0 0 --5.7276936 -8.1223125 1.7341272 --5.6473365 -7.9049697 1.6958411 --5.7997708 -8.0138874 1.7262001 --5.3359089 -7.2786646 1.5777781 --5.3775311 -7.2418308 1.5769347 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.6492443 -9.2886229 2.3252854 --0 -0 0 --9.7380743 -9.1465702 2.319551 --9.8099108 -9.1013937 2.3232615 --9.8125191 -8.9924202 2.3109493 --9.9449768 -9.0021524 2.3288274 --9.7134323 -8.6847649 2.2630494 --9.7384605 -8.6002102 2.2566402 --9.8036757 -8.5513077 2.2595074 --9.3891954 -8.0889435 2.1540942 --9.9837017 -8.4948645 2.2765422 --10.690684 -8.9838142 2.4229405 --9.6897211 -8.0418921 2.1881638 --9.8250322 -8.0528831 2.2072225 --10.931623 -8.8481379 2.4399753 --11.025747 -8.8128948 2.4487455 --11.002239 -8.6840143 2.4318795 --11.244246 -8.763566 2.4728642 --11.252498 -8.6595449 2.4630818 --11.311698 -8.595108 2.464431 --10.421956 -7.8187628 2.2628808 --11.016299 -8.1594181 2.3792572 --10.316601 -7.5436864 2.2203779 --10.324329 -7.4525552 2.2122822 --10.353807 -7.3776274 2.208909 --10.444033 -7.3457098 2.218354 --10.948033 -7.6001539 2.3139851 --10.956242 -7.5066538 2.3060579 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.520636 -9.6139441 3.3041964 --0 -0 0 --0 -0 0 --16.662083 -9.2899866 3.2977872 --16.54859 -9.0940676 3.2645609 --0 -0 0 --16.613722 -8.8661776 3.2557905 --16.753311 -8.809021 3.2723193 --16.848183 -8.7273645 3.2802463 --16.322805 -8.3286343 3.1690986 --16.405308 -8.2442541 3.1751704 --6.7482843 -3.3403218 1.3219187 --6.9937253 -3.4085026 1.3647587 --7.0225062 -3.3693621 1.3662766 --7.1553574 -3.3792286 1.3875279 --7.266242 -3.377207 1.4045628 --7.1577401 -3.2735448 1.3802755 --7.2675848 -3.269995 1.3971417 --6.9954586 -3.0961335 1.3424953 --6.9302683 -3.0165799 1.3268099 --7.9382463 -3.3973629 1.5109881 --7.814477 -3.2878325 1.4841709 --6.9272323 -2.8647828 1.3161842 --21.324978 -8.663559 3.9720955 --7.8874035 -3.1489167 1.4867009 --7.7368035 -3.0339141 1.4554986 --7.1785073 -2.7643785 1.3497478 --7.2036328 -2.7234159 1.3512658 --7.9613819 -2.9540589 1.4865322 --8.0293751 -2.9233558 1.4956399 --7.1597118 -2.5572195 1.3343996 --0 -0 0 --0 -0 0 --22.639164 -7.6164479 4.1206861 --21.734346 -7.1639433 3.9493263 --0 -0 0 --27.895897 -8.8165159 5.0395536 --0 -0 0 --27.651974 -8.3676262 4.9769802 --27.802038 -8.2271624 4.9946895 --12.97858 -3.7548132 2.3453562 --13.006118 -3.6764476 2.3461995 --29.331244 -8.0955362 5.2400918 --13.015991 -3.5073364 2.3401277 --12.801801 -3.3655252 2.2984684 --12.774469 -3.2746778 2.2900352 --12.754157 -3.1862035 2.2829514 --17.132206 -4.1679888 3.0505295 --17.12101 -4.0541611 3.0441203 --12.779906 -2.9438238 2.2775543 --12.777529 -2.8608317 2.2740123 --17.801464 -3.8706503 3.1507144 --13.943936 -2.9426668 2.4720209 --14.024499 -2.8698924 2.4829838 --17.949944 -3.5582304 3.1647134 --17.927877 -3.4396698 3.1571236 --0 -0 0 --12.620799 -2.2615881 2.2274618 --13.416322 -2.3191955 2.3632343 --12.805114 -2.132761 2.2547851 --12.824772 -2.0552411 2.2559657 --13.263844 -2.0421705 2.3298392 --18.017107 -2.6605167 3.1498711 --17.216202 -2.4344597 3.0087016 --17.289425 -2.3366942 3.0188212 --17.288773 -2.2286749 3.0162911 --13.690062 -1.6796857 2.3935933 --17.893448 -2.0836902 3.1159701 --22.218739 -2.4490011 3.8584177 --23.329424 -2.4265747 4.0469813 --17.528522 -1.7148474 3.0471563 --20.407835 -1.8699977 3.5401535 --20.388481 -1.7421428 3.5349252 --20.022451 -1.5871984 3.4703279 --19.021233 -1.3904996 3.2969439 --0 -0 0 --23.172037 -1.4080368 4.0058279 --0 -0 0 --18.195065 -0.88191104 3.1505458 --24.721447 -1.0458204 4.2674217 --18.635962 -0.6741432 3.2244194 --23.169842 -0.69554317 3.9999247 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --23.522593 -0.5868091 3.7730711 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.080421 13.613082 5.8658638 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --21.683092 13.348796 4.0802255 --20.567739 12.836866 3.886704 --22.071825 13.964481 4.1844411 --0 0 0 --22.945465 14.914599 4.3828278 --19.539709 12.872154 3.7521966 --19.137552 12.776306 3.6905146 --19.054708 12.890725 3.6897297 --22.28009 15.272758 4.3264823 --20.911627 14.524123 4.0799112 --0 0 0 --0 0 0 --19.615908 14.166474 3.8790133 --20.737799 15.171143 4.1171088 --21.867098 16.204191 4.3589711 --20.978176 15.745808 4.2021766 --21.712202 16.50598 4.3680744 --20.017265 15.412215 4.048521 --0 0 0 --18.907373 14.930804 3.8623765 --0 0 0 --37.959785 30.739395 7.7962112 --15.980103 13.10396 3.3179114 --15.913074 13.213121 3.3207364 --15.840016 13.317505 3.322463 --15.81591 13.463739 3.3345482 --15.875886 13.683681 3.364526 --15.883153 13.860705 3.383831 --35.712296 31.552368 7.6069274 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --15.699103 14.934933 3.4772172 --15.536033 14.962471 3.4615221 --15.32301 14.939625 3.4346833 --0 0 0 --14.054945 14.043856 3.1912515 --13.901853 14.062407 3.1761842 --13.98298 14.31914 3.2143233 --14.544867 15.078503 3.3631134 --0 0 0 --13.436132 14.275646 3.1491885 --0 0 0 --13.230543 14.407447 3.1422825 --0 0 0 --0 0 0 --14.919446 16.859144 3.6114109 --14.048764 16.072943 3.426208 --14.823732 17.171034 3.6387205 --0 0 0 --0 0 0 --0 0 0 --12.479717 15.194354 3.1584485 --12.399939 15.287516 3.1619015 --0 0 0 --12.557576 15.876168 3.2505791 --12.608868 16.14361 3.2890322 --12.463133 16.160456 3.276947 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --9.7850008 13.526506 2.6868091 --9.6524591 13.517172 2.6733112 --10.00349 14.19205 2.7930653 --9.8914032 14.217492 2.7861593 --9.2695208 13.499601 2.6361136 --9.1815281 13.548866 2.634701 --9.1388483 13.665697 2.6463156 --0 0 0 --0 0 0 --8.8734818 13.812488 2.6427057 --8.7457371 13.799107 2.6299925 --8.424242 13.474009 2.5590503 --8.2724562 13.413647 2.5381758 --8.2639074 13.585654 2.5607769 --8.1590519 13.600535 2.5541849 --9.7394648 16.462957 3.0735378 --8.2816687 14.196969 2.6456876 --8.2736797 14.385348 2.6709569 --8.5423346 15.065565 2.7860024 --8.1182098 14.52459 2.6780198 --9.0954914 16.510031 3.0292773 --8.179697 15.065759 2.758065 --0 0 0 --7.93571 15.054049 2.7381322 --7.7981262 15.015691 2.722594 --7.7251868 15.101063 2.7293429 --0 0 0 --0 0 0 --0 0 0 --6.9502802 14.45039 2.5819654 --17.552656 37.073128 6.5523701 --8.0835028 17.348164 3.0752642 --8.0020142 17.452198 3.0848382 --0 0 0 --0 0 0 --6.8435025 15.681227 2.7527287 --6.6303096 15.450654 2.7056432 --6.6083241 15.663934 2.7354641 --6.6785479 16.105587 2.8045228 --6.3526173 15.589285 2.7089391 --6.2641859 15.646307 2.7120781 --6.1572199 15.656877 2.7073696 --0 0 0 --0 0 0 --5.1965852 13.963604 2.4014709 --5.012218 13.725273 2.355798 --4.9192462 13.731596 2.3517172 --0 0 0 --4.6519384 13.5052 2.3036902 --0 0 0 --0 0 0 --4.7286015 14.594762 2.4717853 --4.633585 14.606557 2.4689603 --4.5570531 14.677156 2.476023 --4.5599232 15.011009 2.5268753 --4.1158566 13.854378 2.330529 --4.0872397 14.073796 2.362704 --4.1979117 14.793122 2.4774356 --3.8276978 13.810728 2.3112237 --3.9918132 14.753911 2.462682 --3.9710422 15.04263 2.5061576 --3.8727579 15.043759 2.5023909 --3.7337472 14.881404 2.4719422 --0 0 0 --3.5033011 14.726258 2.4392962 --3.5003951 15.12561 2.5009782 --3.2789664 14.575437 2.4079061 --3.1397064 14.367581 2.3708653 --2.90065 13.675521 2.2553492 --0 0 0 --2.837451 14.236009 2.3405738 --2.7902796 14.46164 2.3743184 --2.6634455 14.274611 2.3413584 --2.5710773 14.264442 2.3371208 --2.4642098 14.169028 2.3192284 --2.5333128 15.115042 2.469274 --2.4715078 15.322376 2.5001936 --2.3328092 15.049348 2.4538929 --2.2616403 15.205999 2.4768078 --2.1905868 15.376027 2.50192 --4.2595577 31.268377 5.0487738 --1.9156718 14.7397 2.3958209 --3.8777092 31.335938 5.0515985 --0 0 0 --3.5109055 31.543118 5.0774956 --3.3077965 31.473705 5.063056 --3.1223922 31.572033 5.0756121 --2.9230492 31.530611 5.0660381 --2.7343791 31.604036 5.0749846 --2.5416744 31.635971 5.0774956 --2.3479502 31.656879 5.0784373 --0 0 0 --2.2217679 35.926846 5.7541142 --1.7774844 31.921532 5.1145363 --1.5824637 31.949593 5.1173615 --1.3924747 32.098808 5.1396484 --1.1954939 32.10675 5.1396484 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.2588481 20.623518 3.3172836 -0 0 0 -1.5031663 20.488321 3.2984493 -1.6275994 20.462961 3.2959383 -0 0 0 -1.8410885 20.03331 3.2308033 -1.9819053 20.204454 3.2599962 -2.087404 20.015102 3.231745 -2.2069216 19.972467 3.2270365 -2.3079083 19.774132 3.1975296 -2.4353416 19.809591 3.205534 -4.2000742 32.517609 5.2443352 -1.9220343 14.192905 2.3098114 -2.0414953 14.409661 2.3465378 -4.7545533 32.141697 5.1972499 -2.3188541 15.036515 2.4515386 -2.2484848 14.008844 2.2884657 -5.6703024 33.997036 5.5111527 -2.5831068 14.92122 2.440238 -2.6814148 14.943001 2.4463592 -2.6500413 14.264048 2.3393183 -2.8729711 14.952615 2.4534221 -2.9819689 15.021889 2.4675477 -3.2570343 15.896322 2.6124139 -3.3675761 15.93788 2.6224589 -0 0 0 -3.260524 14.546176 2.4027267 -3.6692457 15.911688 2.628737 -3.7781987 15.936923 2.6365845 -0 0 0 -0 0 0 -3.4803624 13.56305 2.2589591 -3.5393922 13.449751 2.2438917 -4.0114594 14.872388 2.4816732 -4.099483 14.83607 2.4797897 -4.4076676 15.578486 2.6066067 -4.2696991 14.744803 2.4731979 -4.3934698 14.831013 2.4918752 -4.5310545 14.957844 2.5174582 -4.6934342 15.158069 2.5554404 -0 0 0 -4.8660369 15.058922 2.5486915 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.84934 18.331102 3.202709 -0 0 0 -0 0 0 -0 0 0 -8.1604261 17.834789 3.1506009 -8.2393074 17.719009 3.1391435 -8.2862787 17.537748 3.1162286 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -23.842329 14.503205 4.4686804 -0 0 0 -23.896112 14.137117 4.4460793 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.203758 15.089809 5.1170473 -28.199717 14.865808 5.0997829 -28.212397 14.651986 5.085814 -28.219999 14.43677 5.0712175 -28.179283 14.198461 5.0483027 -28.191561 13.988414 5.0351186 -28.156179 13.756208 5.0137734 -28.158176 13.543801 4.9993339 -28.150597 13.328086 4.9834819 -28.126213 13.105884 4.9649615 -28.131588 12.898891 4.9519343 -28.125584 12.68786 4.937181 -28.122562 12.479394 4.9232125 -28.103565 12.265122 4.9067326 -28.101151 12.059344 4.8933916 -28.095451 11.853292 4.8797369 -28.072777 11.641334 4.8634138 -28.076914 11.441655 4.8519564 -28.041153 11.226947 4.8339067 -28.026794 11.022146 4.8197813 -28.035858 10.827554 4.8098931 -28.02512 10.626262 4.7968664 -28.006493 10.4231 4.7827406 -27.997561 10.224632 4.7704983 -28.001198 10.031665 4.7606106 -27.990479 9.8344545 4.7485251 -27.974659 9.6364679 4.7358122 -27.959341 9.4396791 4.723413 -27.977354 9.2549181 4.7168207 -27.966909 9.0614643 4.7056775 -27.966442 8.8720713 4.6964173 -27.944899 8.6768761 4.6838613 -27.922016 8.4822798 4.6713052 -27.924309 8.2961674 4.6631436 -27.912092 8.1064901 4.6527848 -27.88435 7.9132318 4.6400714 -27.886698 7.7293253 4.6325378 -27.893559 7.547236 4.625946 -27.88205 7.360816 4.616529 -27.874086 7.1760535 4.6078963 -27.852455 6.9885411 4.5972238 -27.861235 6.8093033 4.5917306 -27.86598 6.6295352 4.5857663 -27.84263 6.4437304 4.5754075 -27.825762 6.2601962 4.5663042 -27.826021 6.0811186 4.560183 -27.819334 5.9010444 4.5531206 -27.801815 5.7192917 4.544488 -27.792801 5.539907 4.537425 -27.78845 5.3619709 4.5313044 -27.789761 5.1855659 4.5262818 -27.775373 5.0067186 4.5189052 -27.770544 4.8301048 4.5132546 -27.74901 4.6511269 4.5050931 -27.739 4.4746404 4.4989719 -27.731777 4.299057 4.4934788 -27.742002 4.126492 4.4909678 -27.725737 3.950341 4.4843755 -27.72401 3.7766786 4.4802947 -27.716301 3.6025493 4.4754295 -27.721222 3.4303555 4.4727612 -27.708399 3.2562771 4.4674249 -27.698412 3.0829222 4.4627161 -27.686359 2.9097097 4.4578509 -27.685019 2.7379274 4.4548688 -27.677694 2.5658157 4.4511018 -27.673239 2.3942373 4.4479628 -27.663782 2.2224941 4.4441962 -27.653261 2.050957 4.4404292 -27.638721 1.8794317 4.4361916 -27.634947 1.7088938 4.4338374 -27.621246 1.5379786 4.4300704 -27.624245 1.3681757 4.4291286 -27.631132 1.198608 4.4289718 -27.621189 1.028419 4.4263034 -27.600327 0.85809028 4.4220657 -27.596188 0.68849987 4.4206533 -27.591005 0.5189926 4.419241 -27.578857 0.34949967 4.4168863 -27.56567 0.18017535 4.4145322 -27.569218 0.011033426 4.4150028 -27.558891 -0.15807182 4.4134336 -27.547527 -0.32704991 4.4118638 -27.533154 -0.495859 4.4099808 -27.535515 -0.66493285 4.4109221 -27.522034 -0.83360612 4.4095097 -27.512453 -1.0023187 4.4088821 -27.520584 -1.171743 4.4112363 -27.509918 -1.3404399 4.4107652 -27.4923 -1.5087254 4.4093528 -27.485483 -1.6775671 4.4098234 -27.477629 -1.8463819 4.4102945 -27.474646 -2.0155969 4.4117069 -27.491297 -2.1864889 4.4164157 -27.468506 -2.354372 4.4150028 -27.459444 -2.5234137 4.4159446 -27.432632 -2.6907938 4.4142184 -17.863907 -1.8630953 2.888021 -27.423069 -3.0300515 4.4182992 -27.398075 -3.1975722 4.4173574 -19.301832 -2.3729291 3.124233 -27.367546 -3.5349395 4.4190836 -18.847492 -2.552238 3.056273 -27.381756 -3.8789644 4.428658 -27.360371 -4.0473361 4.4291286 -27.334045 -4.2149897 4.4289718 -26.264278 -4.2151895 4.2610335 -25.288122 -4.2178612 4.1080055 -18.257132 -3.1605179 2.9782681 -18.996593 -3.4086943 3.1008472 -19.035522 -3.5363741 3.1105783 -18.237568 -3.5040483 2.9850171 -18.208942 -3.6145401 2.9839184 -19.427738 -3.980505 3.1852872 -20.24651 -4.2778544 3.3223059 -20.087673 -4.3732243 3.3008037 -18.341223 -4.1110783 3.020802 -0 -0 0 -0 -0 0 -0 -0 0 -20.003475 -5.0022054 3.3105347 -0 -0 0 -0 -0 0 -0 -0 0 -7.6965175 -2.126888 1.3026528 -7.9503589 -2.2496195 1.3467562 -7.9354572 -2.298085 1.3465993 -0 -0 0 -0 -0 0 -0 -0 0 -7.9218669 -2.5064366 1.354133 -7.9871588 -2.5811105 1.3676308 -7.9111462 -2.6102684 1.3575859 -0 -0 0 -0 -0 0 -0 -0 0 -20.605408 -7.3635182 3.5111189 -20.557055 -7.4887981 3.510648 -19.798727 -7.3504748 3.3899522 -19.732008 -7.4637833 3.3863423 -19.609348 -7.5552464 3.3733153 -0 -0 0 -19.426193 -7.7597799 3.3580909 -19.256535 -7.8293605 3.3372164 -20.264906 -8.3845863 3.5189664 -20.234924 -8.5179672 3.5227332 -18.918505 -8.1008501 3.3042567 -19.040483 -8.2916956 3.3340774 -20.085545 -8.8937807 3.5246167 -19.311937 -8.6933651 3.3993692 -19.321995 -8.8408709 3.4105129 -3.9260204 -1.8259312 0.721775 -3.9192076 -1.8520958 0.72255975 -3.9184539 -1.881237 0.7244432 -3.9290299 -1.9160651 0.72836697 -3.9552562 -1.958982 0.73511589 -4.098453 -2.0613005 0.76273936 -3.960825 -2.0226402 0.74045223 -3.9053752 -2.0246363 0.73276162 -4.0738015 -2.1437478 0.76525062 -4.0143981 -2.1440487 0.7569322 -4.0541339 -2.1973424 0.7665062 -0 -0 0 -3.7543223 -2.0948842 0.71690953 -3.9562738 -2.2394891 0.75614744 -3.9056284 -2.242579 0.74939853 -5.2641764 -3.0655873 1.0017767 -3.7774665 -2.231082 0.73087823 -3.9475718 -2.3643196 0.76493669 -3.9431205 -2.3946478 0.76682013 -3.9418092 -2.4270811 0.76933134 -3.8581409 -2.408345 0.75646132 -3.5703764 -2.2593098 0.70513815 -3.5190356 -2.2571838 0.69807535 -3.5423822 -2.3029537 0.70513815 -3.5158138 -2.3164966 0.70278388 -3.4358225 -2.294158 0.69022775 -3.4028668 -2.302469 0.68661785 -3.4579163 -2.3707678 0.69995874 -3.4627721 -2.4054615 0.70372558 -3.0432959 -2.1419265 0.62509286 -3.2745683 -2.3348372 0.67280614 -3.2457685 -2.3444779 0.669981 -3.2560318 -2.3824258 0.67484647 -3.2159603 -2.383544 0.66982406 -3.3837357 -2.5401793 0.70607984 -3.3900998 -2.5776286 0.71047449 -3.3679597 -2.5935614 0.70921892 -3.2982433 -2.5722754 0.69838923 -3.0777752 -2.4308832 0.65695399 -2.9316778 -2.344867 0.63027221 -2.8581359 -2.3149545 0.61818695 -2.8293676 -2.32055 0.61520487 -2.9472866 -2.4476416 0.64251447 -2.9412842 -2.4733062 0.64439785 -3.4284112 -2.9189374 0.74924153 -4.1607723 -3.5866208 0.90666401 -3.794903 -3.3120856 0.83415234 -3.3185933 -2.9325063 0.73747015 -2.5107055 -2.24632 0.5690611 -2.4829662 -2.2490876 0.56607902 -3.51156 -3.2200139 0.79083371 -4.0954294 -3.801836 0.92173135 -3.9899769 -3.7497959 0.90383887 -2.4441962 -2.3256819 0.56984586 -3.3631885 -3.2394547 0.77576637 -3.3517339 -3.2683032 0.77764976 -3.4792264 -3.4344957 0.81060964 -3.6732662 -3.6707797 0.85895073 -2.4800227 -2.5091257 0.59433031 -3.1490738 -3.2252173 0.75002629 -2.5539517 -2.6481221 0.61834389 -3.7667043 -3.9535825 0.90148461 -3.1426489 -3.3394485 0.76242548 -2.7542608 -2.963026 0.67657298 -3.7099938 -4.0404305 0.90540838 -2.6533291 -2.925647 0.66134864 -3.3807001 -3.7737803 0.83886093 -3.3535538 -3.7900152 0.83791918 -3.3334854 -3.8142388 0.83870393 -2.5710502 -2.9786685 0.65899438 -2.5347829 -2.973346 0.65459973 -1.7530928 -2.0823388 0.46625781 -1.7762793 -2.136337 0.47520405 -1.7512275 -2.1326954 0.47222197 -1.6671832 -2.0559626 0.45432949 -1.6483623 -2.0584455 0.45275998 -1.6344755 -2.0669715 0.45244607 -1.6181145 -2.0722916 0.45150438 -1.6192409 -2.1001682 0.45511425 -1.635044 -2.147779 0.46264794 -1.6396396 -2.1814525 0.46735647 -1.6209258 -2.184335 0.46594393 -1.6308433 -2.2261038 0.47222197 -1.6553588 -2.2888801 0.48258078 -1.6694068 -2.3383758 0.49027142 -1.6624244 -2.3590689 0.49231178 -1.6930416 -2.4340804 0.50486791 -1.7954767 -2.6153917 0.53782773 -1.4458559 -2.1341925 0.44334289 -1.3717917 -2.0518999 0.42592126 -1.3542799 -2.0528598 0.42450869 -1.319563 -2.0271988 0.41807368 -1.3065656 -2.0344265 0.41791672 -1.2898284 -2.0357318 0.41666111 -2.094105 -3.3499391 0.66150558 -2.370575 -3.8443828 0.75143886 -1.8475308 -3.037883 0.59872496 -2.3227117 -3.8723369 0.75128192 -2.3416524 -3.958765 0.76462281 -2.2839751 -3.9159038 0.75410706 -2.2589197 -3.9281321 0.75379312 -1.1216472 -1.9788715 0.39515874 -1.1104476 -1.9874407 0.39547265 -2.2086315 -4.0097017 0.76116985 -2.1797457 -4.0153666 0.75975728 -1.0648248 -1.9909985 0.39249057 -1.0470616 -1.9870111 0.39060715 -1.0343945 -1.9925219 0.39045021 -1.0293461 -2.0128989 0.39296141 -1.6862491 -3.3474236 0.62933052 -1.665678 -3.357707 0.62933052 -1.6424428 -3.3625402 0.62838882 -1.0104599 -2.101634 0.40426195 -1.0178316 -2.1506398 0.41179562 -1.0158792 -2.1810148 0.4160333 -1.0065939 -2.1961844 0.41760284 -1.0036588 -2.2257254 0.42168358 -1.0320454 -2.3266268 0.43816349 -1.01854 -2.3347259 0.4384774 -0.97420496 -2.2710493 0.42639211 -1.3284206 -3.149611 0.57690871 -0.94928885 -2.2901316 0.42764774 -0.93447357 -2.2940838 0.42733383 -0.90936691 -2.2722692 0.42262527 -0.88926256 -2.2621818 0.4199571 -0.9354983 -2.4232924 0.44648191 -0.92166209 -2.4317572 0.44695279 -1.065531 -2.8640585 0.51930743 -1.0455658 -2.864049 0.5182088 -0 -0 0 -1.1776365 -3.3527949 0.59841108 -1.1470704 -3.3310113 0.59354556 -0.91841215 -2.7213535 0.49011445 -0.90790057 -2.7456903 0.4932535 -0.97597045 -3.0133345 0.53704298 -0.93028516 -2.9336019 0.52276039 -0.78047526 -2.514823 0.45213217 -0.96254003 -3.1696978 0.56011486 -1.1498102 -3.8713725 0.67547429 -0.94836199 -3.2666283 0.57424051 -0.87976593 -3.1013703 0.54598922 -0.87179941 -3.1466825 0.55258119 -0.85608673 -3.165319 0.55477852 -0.82202661 -3.1151288 0.54567534 -0.78861517 -3.064642 0.53657216 -0.54337144 -2.1670723 0.38872373 -0.51435387 -2.1060882 0.37820798 -0.50256443 -2.1140084 0.37899274 -0.50094104 -2.1661229 0.38699725 -0.48568946 -2.1604843 0.38558471 -0.46841732 -2.145092 0.38260263 -0.45955032 -2.1682138 0.38589859 -0.7290355 -3.5455928 0.60892683 -0.72966301 -3.6623511 0.62713319 -0.71578538 -3.7113662 0.63435298 -0.69789106 -3.7419012 0.63859069 -0.68192661 -3.7849905 0.64486873 -0.6602127 -3.7978604 0.6462813 -0.65893888 -3.9333322 0.66746974 -0.63778061 -3.9558263 0.67045182 -0.61243695 -3.9528334 0.66935319 -0.4210569 -2.8331316 0.48885885 -0.38025939 -2.6714032 0.46249098 -0.42625383 -3.1316552 0.53594434 -0.37329277 -2.8746798 0.49435216 -0.48628697 -3.9325149 0.66338903 -0.45257983 -3.8540137 0.65036201 -0 -0 0 -0.27000886 -2.5726013 0.44475546 -0.22865242 -2.3157303 0.40347719 -0.2126155 -2.2974219 0.40033814 -0.21026437 -2.4344656 0.42199746 -0.18962739 -2.3648307 0.41069695 -0.17365228 -2.3462517 0.40755793 -0.22861473 -3.3670895 0.57000285 -0.20630418 -3.3418143 0.56576514 -0 -0 0 -0 -0 0 -0.12249351 -2.8319731 0.48415029 -0.10879055 -2.9313636 0.49984547 -0.088161476 -2.8470829 0.48634762 -0.07096155 -2.8584306 0.48807409 -0.073440395 -3.9222758 0.65711099 -0 -0 0 -0.015521063 -2.4296529 0.41980016 -0.00058854802 -2.3714337 0.41054001 --0.014024462 -2.382256 0.41226646 --0.028606316 -2.3791625 0.41179562 --0.043239582 -2.3809171 0.41210952 --0.057919286 -2.383569 0.41258037 --0.072573386 -2.384156 0.41273734 --0.087416574 -2.3895874 0.41367903 --0.17880584 -4.1917305 0.70042962 --0 -0 0 --0 -0 0 --0.16004911 -2.6164074 0.45024875 --0.18166083 -2.6981485 0.4634327 --0.19936885 -2.7127426 0.46594393 --0.2158536 -2.7094991 0.46563002 --0.23416123 -2.7278037 0.46876904 --0.25134614 -2.7312329 0.4695538 --0.26607564 -2.7089984 0.46625781 --0.28177091 -2.6984744 0.46484527 --0.29647949 -2.6800067 0.46217707 --0.31188789 -2.6693087 0.46076453 --0.3310318 -2.6898899 0.46437439 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.4558531 -3.3991375 0.62132597 --0 -0 0 --1.5498358 -3.4993148 0.64188665 --0 -0 0 --1.6349833 -3.5725336 0.65805268 --1.6527092 -3.553479 0.65648317 --1.6765913 -3.5477362 0.65726793 --1.7162772 -3.5747769 0.6638599 --0 -0 0 --1.6451942 -3.3215649 0.62273854 --1.6535648 -3.2875845 0.61850089 --1.6755023 -3.280895 0.6191287 --1.6896938 -3.2591538 0.61708832 --1.7271336 -3.2819374 0.62305248 --0 -0 0 --4.6925631 -8.6587982 1.5988206 --1.9019305 -3.4581542 0.66087782 --1.9043486 -3.4127827 0.65475667 --1.9223346 -3.3958766 0.65381497 --1.9726369 -3.4354076 0.66323209 --2.021508 -3.4710336 0.67202139 --4.9493356 -8.3807135 1.5804572 --4.6470218 -7.759613 1.4710619 --4.9344292 -8.126029 1.5445153 --4.8526907 -7.8819804 1.5046496 --0 -0 0 --5.1217122 -8.0947523 1.5559727 --5.2992358 -8.2626963 1.5936412 --5.3848195 -8.2838488 1.603843 --5.4018626 -8.1995182 1.594112 --5.522809 -8.2721786 1.6143588 --5.4467392 -8.0508108 1.5784168 --0 -0 0 --5.5789275 -8.0320339 1.5878339 --5.6104875 -7.9726133 1.5829685 --5.6822324 -7.9702053 1.5892465 --5.3447881 -7.4003539 1.4844028 --5.3609395 -7.3275652 1.4765552 --0 -0 0 --0 -0 0 --0 -0 0 --5.5512023 -7.209445 1.4796942 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.6996593 -9.1290741 2.1505053 --9.7294531 -9.0451775 2.144855 --9.776041 -8.9772921 2.1429718 --9.8865347 -8.9675674 2.1549001 --9.9501991 -8.9146442 2.1567836 --9.8597527 -8.7251387 2.1260209 --9.8350277 -8.5962305 2.1095409 --9.5160522 -8.2149639 2.0315361 --9.552001 -8.1442451 2.028554 --9.5587339 -8.0492201 2.0196078 --9.6535015 -8.0283089 2.0290248 --9.8430042 -8.0842648 2.057904 --10.868816 -8.8157177 2.2577033 --10.828666 -8.6735344 2.2385552 --10.963787 -8.6718731 2.255192 --10.980988 -8.5764732 2.2479722 --10.994304 -8.478776 2.2401247 --10.36254 -7.8906078 2.1035769 --10.837027 -8.1473656 2.1883307 --0 -0 0 --10.274212 -7.5286541 2.057904 --10.306611 -7.4556298 2.0552359 --10.441376 -7.4559579 2.0726573 --10.851789 -7.6489415 2.1435995 --10.797182 -7.5117068 2.1239805 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.609509 -9.1502972 3.0473268 --16.671415 -9.0515089 3.0484254 --0 -0 0 --16.886948 -8.9019718 3.0674167 --16.812412 -8.7312746 3.0443447 --16.353081 -8.3657131 2.952842 --16.381174 -8.2536602 2.9487612 --6.7991123 -3.373328 1.2398722 --6.8285561 -3.3358815 1.2414417 --7.0144362 -3.3735452 1.2706348 --7.1555066 -3.3874962 1.2918233 --7.1949558 -3.3522873 1.2951192 --16.730425 -7.6710553 2.9586492 --16.690756 -7.5292673 2.9435818 --18.711777 -8.3032103 3.2869918 --16.796377 -7.3301997 2.9460931 --7.5476103 -3.2386723 1.3389087 --7.2033668 -3.0387363 1.2761281 --7.2127538 -2.9906969 1.2745585 --7.8794036 -3.210638 1.3858372 --7.1269708 -2.8531363 1.2536839 --7.1572104 -2.8144128 1.2558813 --7.2102742 -2.7843208 1.2620025 --7.9345841 -3.0082474 1.3822273 --7.9621487 -2.9629498 1.3837968 --8.021925 -2.9292853 1.3908597 --8.1327209 -2.9133184 1.4065548 --0 -0 0 --23.050972 -7.9403257 3.9082062 --22.62579 -7.6388774 3.8287888 --22.215609 -7.3488455 3.7523534 --0 -0 0 --0 -0 0 --13.145429 -4.0814295 2.2211337 --0 -0 0 --13.474749 -4.0030651 2.2675912 --13.517077 -3.925544 2.2705734 --13.000311 -3.6891077 2.181268 --13.510936 -3.7446003 2.2617841 --12.339144 -3.338408 2.0651238 --12.401411 -3.273726 2.0720296 --12.729231 -3.2768598 2.1225681 --12.646602 -3.1729739 2.1057742 --13.746078 -3.3593445 2.2825017 --13.406137 -3.1892147 2.2236447 --12.761556 -2.953238 2.1153483 --17.210663 -3.8718739 2.8371687 --13.6044 -2.972909 2.2467167 --13.810776 -2.9293423 2.2773223 --12.666706 -2.605531 2.0888233 --0 -0 0 --22.573317 -4.3555999 3.6872184 --12.697957 -2.3692193 2.0864692 --12.782235 -2.3038769 2.0977697 --0 -0 0 --13.523499 -2.2665248 2.2128153 --13.550801 -2.1857057 2.2150126 --13.585428 -2.1058471 2.2184653 --13.585395 -2.0205598 2.2164252 --17.41264 -2.4807909 2.8288503 --19.601908 -2.6701357 3.1775966 --20.211418 -2.6269612 3.2727094 --17.847404 -2.2083809 2.8916309 --17.73605 -2.0841887 2.8716979 --22.341146 -2.4865646 3.6060746 --0 -0 0 --17.608261 -1.7412361 2.845644 --20.258028 -1.8778814 3.2669022 --0 -0 0 --18.993877 -1.5258343 3.0619233 --23.295078 -1.7276616 3.7459183 --24.577301 -1.6712115 3.9485428 --24.611736 -1.5219008 3.9524667 --18.624269 -1.0368893 2.998044 --18.376778 -0.91003424 2.9577074 --0 -0 0 --18.686584 -0.69562948 3.0054207 --23.907478 -0.7432273 3.8349099 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.825523 13.216201 5.4878278 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.529678 14.579529 5.5218735 --34.483212 14.809868 5.5288272 --34.402569 15.025928 5.5305657 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --21.636742 13.352291 3.7565801 --21.686935 13.567721 3.7794702 --20.729282 13.146201 3.6279316 --21.266623 13.670705 3.7355733 --21.221302 13.826324 3.7423823 --22.148329 14.624746 3.9199982 --19.53371 13.070947 3.475234 --19.529299 13.242204 3.4887075 --21.960194 15.088223 3.9350653 --21.893997 15.241342 3.939846 --0 0 0 --0 0 0 --19.673346 14.240005 3.5898297 --19.708479 14.450556 3.6121404 --0 0 0 --19.524921 14.687753 3.6112711 --20.175007 15.371587 3.7475977 --19.242163 14.848266 3.5925822 --0 0 0 --0 0 0 --0 0 0 --37.971275 30.818068 7.1943021 --0 0 0 --36.245609 30.162695 6.9381642 --15.931821 13.423514 3.0842185 --15.834854 13.508815 3.0814657 --15.771884 13.623186 3.0853775 --15.591922 13.635673 3.0666885 --15.814636 14.002654 3.1266665 --15.618649 14.001014 3.1050804 --15.196157 13.791348 3.038583 --15.093035 13.867594 3.0349612 --14.995345 13.948484 3.0324984 --14.878504 14.011062 3.0262687 --14.798698 14.108236 3.0275726 --15.636627 15.091398 3.2157643 --0 0 0 --15.507233 15.338511 3.227499 --0 0 0 --14.012245 14.204035 2.9552803 --13.897898 14.262107 2.9496303 --13.847863 14.386324 2.9575982 --14.409719 15.155132 3.0958083 --0 0 0 --14.038956 15.132784 3.0562577 --13.722581 14.974979 3.0078697 --14.669514 16.207001 3.2345979 --0 0 0 --14.00324 15.857704 3.1314473 --14.617786 16.75988 3.2900848 --13.08371 15.187954 2.9690433 --12.990913 15.268702 2.9691882 --13.663321 16.26022 3.1436169 --13.584775 16.369638 3.1485426 --12.576591 15.345286 2.9389095 --12.686981 15.675213 2.9865732 --12.669628 15.851701 3.0051169 --12.627291 15.999046 3.0181558 --0 0 0 --0 0 0 --14.729075 19.385767 3.5986671 --0 0 0 --24.875486 33.589256 6.1538148 --0 0 0 --0 0 0 --9.8526936 13.828008 2.519933 --9.8268528 13.972377 2.5349998 --9.7082119 13.985266 2.5265973 --9.6484985 14.082936 2.5334063 --0 0 0 --0 0 0 --9.0225821 13.703602 2.4361956 --0 0 0 --9.560586 14.916265 2.6280093 --8.7862635 13.894955 2.4409766 --9.3354559 14.96614 2.6165643 --8.3594942 13.586256 2.3695536 --8.3196011 13.709195 2.3818679 --8.2332945 13.756589 2.3812883 --9.4460802 16.005388 2.755064 --9.3700876 16.101532 2.7615833 --8.2790213 14.429341 2.4696617 --8.2424459 14.572023 2.4851632 --9.0730867 16.273005 2.761873 --8.1001692 14.739713 2.4964633 --0 0 0 --7.9596701 14.914824 2.5092123 --7.9214144 15.064976 2.5260177 --0 0 0 --0 0 0 --8.2922421 16.500814 2.737824 --7.070148 14.286421 2.367815 --8.2446995 16.920664 2.7898338 --7.2344661 15.081365 2.48299 --8.1010637 17.157463 2.8119996 --0 0 0 --9.0475521 19.787825 3.2196758 --7.0159926 15.596367 2.5378973 --6.911356 15.619216 2.5347102 --6.8426261 15.723932 2.5447066 --6.6603975 15.565489 2.5128341 --6.5382962 15.54313 2.5028379 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --13.117701 34.076141 5.3801861 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.8800879 13.935933 2.1958492 --0 0 0 --4.5888319 13.6384 2.1407969 --4.4920545 13.626831 2.1347122 --4.405622 13.645663 2.1334083 --4.572547 14.465891 2.2552476 --4.602685 14.878403 2.3142116 --4.4084377 14.566373 2.2622015 --4.2330756 14.302818 2.2178702 --4.0341773 13.944522 2.1593409 --3.9525752 13.983295 2.161514 --3.8385372 13.905228 2.1460125 --3.7606075 13.956225 2.1502137 --3.9236245 14.925467 2.2934945 --3.8511274 15.024023 2.3047948 --4.9167442 19.684027 3.0045376 --0 0 0 --3.2928972 13.905183 2.1261647 --3.473933 15.08219 2.3000138 --3.2462659 14.499743 2.2094674 --3.1353786 14.418835 2.1944005 --2.923697 13.854012 2.1070414 --2.9433298 14.383522 2.1835349 --6.1977735 31.269936 4.7014503 --3.6844945 19.20437 2.8970408 --2.6347797 14.201775 2.1487651 --5.6204486 31.374823 4.7008705 --2.5785599 14.917491 2.2504668 --5.2233105 31.371159 4.6904397 --2.4220631 15.115078 2.2752404 --2.2189705 14.412825 2.1690476 --2.2346618 15.131916 2.2735019 --2.0712912 14.646668 2.1997609 --4.2511306 31.46171 4.6823268 --4.1004877 31.816931 4.7310047 --3.8469059 31.366158 4.6608853 --3.6660416 31.489418 4.6756625 --0 0 0 --3.3180168 31.904043 4.7304249 --3.1080425 31.779041 4.7091284 --2.9295037 31.977829 4.7356405 --2.9004226 33.953125 5.0233607 --2.6931293 33.984093 5.0253892 --2.4655275 33.739456 4.9871421 --2.1272087 31.791306 4.699132 --1.9373176 31.889685 4.7117362 --1.7256548 31.608528 4.6688533 --1.5469843 31.934776 4.7152133 --1.3537642 32.008911 4.7247748 --1.1587282 32.05518 4.7304249 --1.0688391 35.626064 5.252552 --0 0 0 --0.67108774 37.870327 5.5796781 --0.43772417 37.788643 5.5672188 --0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.5250423 20.489378 3.0422049 -0 0 0 -0 0 0 -1.8998184 20.435175 3.0388727 -1.9855076 20.02338 2.9800539 -2.1165261 20.088556 2.9914989 -2.2071464 19.783138 2.9484713 -2.3462093 19.919569 2.9706371 -4.0382419 32.557838 4.8374872 -4.237042 32.525578 4.836473 -1.9595994 14.359505 2.155864 -2.0320041 14.237505 2.1396379 -2.1464605 14.406796 2.1665847 -5.2643995 33.895004 5.0562472 -2.5123973 15.55052 2.3402889 -2.5259922 15.047894 2.2679965 -5.5864115 32.065086 4.79953 -5.7770758 31.997099 4.7946043 -2.6634626 14.254808 2.1571679 -2.8858876 14.936684 2.2613325 -2.8029315 14.044456 2.1308007 -3.2462828 15.760698 2.3899808 -3.3509469 15.778229 2.3956308 -3.1466501 14.381944 2.1894748 -0 0 0 -3.6548791 15.774602 2.404758 -3.3429649 14.036685 2.1465919 -0 0 0 -0 0 0 -3.5081463 13.613476 2.0922642 -3.5455894 13.417594 2.065897 -4.1605773 15.36198 2.3641932 -4.1436324 14.935726 2.3033459 -4.205451 14.805325 2.2874098 -4.4652901 15.360703 2.3760729 -4.53689 15.257144 2.3644829 -4.5826287 15.071877 2.3404338 -4.4993854 14.478453 2.253799 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.769031 18.401329 2.9584675 -7.8888221 18.369677 2.9610753 -7.971683 18.252922 2.9502096 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -8.5719004 18.092794 2.9652767 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -22.881422 13.884965 3.9527397 -0 0 0 -0 0 0 -0 0 0 -24.054657 13.800767 4.0944271 -0 0 0 -24.267141 13.529593 4.1019602 -24.360107 13.386156 4.1036987 -24.405241 13.216645 4.0976143 -28.195927 15.046278 4.7133298 -28.203642 14.828787 4.6994219 -28.236111 14.62542 4.6898603 -28.183416 14.379498 4.6665354 -28.199503 14.170314 4.6548004 -28.200785 13.954894 4.6408925 -28.19426 13.736959 4.6259708 -28.15044 13.502517 4.6052537 -28.150442 13.290674 4.5919251 -28.152498 13.081009 4.5791764 -28.146744 12.86894 4.565413 -28.106964 12.642825 4.5464349 -28.105288 12.435299 4.5338306 -28.095774 12.225507 4.5202127 -28.093845 12.020193 4.5080428 -28.09137 11.815748 4.4960184 -28.094759 11.614811 4.4851527 -28.075661 11.405714 4.4709554 -28.068842 11.202791 4.4589305 -28.054144 10.997854 4.4458919 -28.039837 10.794232 4.4331431 -28.0389 10.596797 4.4227118 -28.038454 10.400469 4.412571 -28.018991 10.198117 4.3996768 -28.014877 10.002384 4.3893909 -28.01689 9.8097029 4.3802638 -27.990454 9.6080589 4.3669353 -27.979483 9.4127884 4.3562145 -27.977509 9.2214212 4.3470879 -27.962 9.0264826 4.3360772 -27.961195 8.8371506 4.3275294 -27.942106 8.6429071 4.3163743 -27.945366 8.4563951 4.3088408 -27.94644 8.2698879 4.3011627 -27.927271 8.0781879 4.2905865 -27.908709 7.8875747 4.2803006 -27.902214 7.7011786 4.2720428 -27.899261 7.5164461 4.2645092 -27.897009 7.3325434 4.2572656 -27.899302 7.1504259 4.2508912 -27.854334 6.9570494 4.2375627 -27.843618 6.7731471 4.2295947 -27.861546 6.596704 4.2261176 -27.870644 6.41852 4.2214818 -27.891155 6.2432823 4.218729 -27.915403 6.0690856 4.2167006 -27.957926 5.898911 4.2175698 -27.993593 5.7272534 4.2175698 -28.033062 5.5563416 4.2182946 -28.120073 5.3944802 4.2262626 -28.128323 5.2173266 4.2226405 -28.137403 5.0406246 4.2193084 -28.208754 4.8749571 4.2253933 -28.248871 4.7035666 4.2269869 -28.278177 4.5303025 4.2271318 -0 0 0 -0 0 0 -28.458664 4.023427 4.2421985 -28.498505 3.8508518 4.2445168 -28.542204 3.6785707 4.2475591 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -23.718376 -0.88952422 3.5091348 -31.534527 -1.3768581 4.6555252 -31.509672 -1.5695363 4.6532068 -25.026714 -1.4003624 3.7039907 -25.147018 -1.5619384 3.7229693 -0 -0 0 -19.299397 -1.4364026 2.8674865 -25.081461 -2.0219231 3.7181883 -25.061684 -2.1751826 3.7171743 -30.457579 -2.83216 4.5126791 -19.224857 -1.9062793 2.8625607 -18.008385 -1.8972375 2.6852345 -27.40601 -3.058063 4.0715365 -27.404417 -3.2282498 4.0741444 -27.405695 -3.3990197 4.0773315 -27.387266 -3.5674975 4.0777664 -27.375645 -3.7369478 4.07936 -27.366894 -3.9069495 4.081533 -27.36883 -4.0787349 4.0854445 -27.329599 -4.2444639 4.0834165 -17.726768 -2.864166 2.6630688 -0 -0 0 -18.523706 -3.2267153 2.7869363 -19.05662 -3.4401898 2.869225 -19.158674 -3.5801442 2.887624 -19.584192 -3.7841957 2.954411 -25.752081 -5.1404867 3.878854 -20.190418 -4.1590233 3.0522013 -18.452394 -3.9190838 2.7959185 -0 -0 0 -17.566038 -3.9566686 2.6703126 -0 -0 0 -0 -0 0 -20.131296 -4.9257026 3.0684271 -30.965557 -7.7789545 4.708694 -20.159397 -5.195591 3.0820453 -20.235233 -5.3477626 3.0984161 -0 -0 0 -25.30224 -7.0204697 3.8785641 -7.9668097 -2.2624078 1.246488 -7.9242749 -2.3029606 1.2421417 -0 -0 0 -31.390017 -9.5455141 4.8377767 -30.667568 -9.5317583 4.7360749 -8.0464334 -2.5542421 1.2699577 -7.9920211 -2.5910497 1.2640178 -7.9318256 -2.6254196 1.2572087 -0 -0 0 -0 -0 0 -20.602566 -7.2448449 3.2315555 -20.585665 -7.381144 3.2359018 -20.511179 -7.4967852 3.2314107 -24.173601 -9.0041399 3.8109078 -19.690536 -7.4719648 3.1175394 -19.707998 -7.61726 3.1275358 -19.533834 -7.6880288 3.1075432 -20.577408 -8.244998 3.2796538 -20.576818 -8.3916559 3.287622 -19.249193 -7.9882469 3.0853775 -20.217068 -8.5357609 3.2470572 -19.009708 -8.1637268 3.0630667 -19.22493 -8.3962603 3.105515 -19.411777 -8.6200914 3.1437616 -19.390985 -8.7536955 3.1489773 -19.391764 -8.8976851 3.1578145 -3.9865742 -1.8578598 0.67785639 -3.7444093 -1.7729745 0.64047879 -3.8324201 -1.8435539 0.65655982 -3.75437 -1.8344373 0.64569426 -3.7660847 -1.8688811 0.64946097 -3.7987206 -1.9142294 0.65670472 -3.7340598 -1.9104468 0.64801228 -3.6959288 -1.9196333 0.64366603 -3.5974426 -1.8965676 0.62932348 -3.6563926 -1.9564365 0.64105827 -3.6121514 -1.9613563 0.63569796 -3.8911874 -2.1439972 0.6843757 -3.562768 -1.9915274 0.63149661 -3.568553 -2.0236053 0.63453895 -3.67098 -2.1116045 0.65395212 -4.7380409 -2.7646248 0.83707321 -4.7337599 -2.8012061 0.83924633 -4.7266626 -2.8363106 0.84098482 -3.8623078 -2.349745 0.69582075 -3.8074014 -2.3484557 0.68886679 -3.6419368 -2.2773061 0.66278946 -3.525121 -2.2344251 0.64496988 -3.4763882 -2.2335398 0.6388852 -3.3250053 -2.1651604 0.61483604 -3.4082601 -2.2493153 0.63178635 -3.4437325 -2.3032036 0.64047879 -3.4991429 -2.3714943 0.65279311 -3.4820793 -2.3912389 0.65235847 -3.508755 -2.4413919 0.65974706 -3.5228167 -2.4834068 0.66496253 -3.5340786 -2.5239594 0.66974342 -3.6171086 -2.6169605 0.68756294 -3.6041746 -2.6414459 0.68814242 -3.6014025 -2.6735406 0.69060528 -3.5991623 -2.7062955 0.69321305 -2.9402895 -2.2389817 0.57499564 -3.2069225 -2.4733946 0.62686062 -4.0960112 -3.199816 0.79491478 -3.1328819 -2.478174 0.61874765 -3.0535367 -2.4459879 0.60672307 -3.9188781 -3.179265 0.77274901 -4.0154858 -3.2987452 0.79476994 -3.82481 -3.1815455 0.76231807 -3.9898355 -3.3605247 0.79766738 -3.6176252 -3.0850284 0.73001111 -3.4241679 -2.9564583 0.69625539 -3.810374 -3.3311248 0.77492213 -3.3261466 -2.9438107 0.6842308 -3.8951886 -3.4905777 0.79969567 -2.4296334 -2.2036939 0.51414841 -2.402952 -2.2065098 0.51154065 -2.3900924 -2.2218864 0.51168555 -3.5576911 -3.3490446 0.74927938 -3.4898112 -3.3257475 0.73971766 -4.3065476 -4.1552014 0.91008985 -7.9835644 -7.7995706 1.6680722 -3.4469965 -3.4082079 0.74362928 -2.4898667 -2.4917929 0.54964262 -2.5488777 -2.5823972 0.56514418 -2.532294 -2.5972795 0.56499928 -2.5286601 -2.6256006 0.56760705 -2.4143302 -2.5378048 0.54674512 -2.2652776 -2.4104815 0.51820487 -2.2437155 -2.4170816 0.51675612 -2.2047787 -2.4045403 0.51154065 -2.1674092 -2.3930805 0.50661492 -2.0643208 -2.3074863 0.48720178 -2.0756643 -2.3490357 0.49285188 -3.4522681 -3.9567995 0.80273801 -2.9862368 -3.4651227 0.70364398 -1.9057719 -2.2383783 0.46431166 -1.8449011 -2.1939707 0.45359096 -1.8219268 -2.1938279 0.45141783 -1.718749 -2.0955267 0.43070081 -1.7338687 -2.1406448 0.43722016 -1.7145241 -2.1435137 0.43577141 -1.6933712 -2.1438961 0.43388805 -1.6400447 -2.1027353 0.42432633 -1.6391793 -2.1284425 0.42722383 -1.6314756 -2.1455512 0.42852771 -1.5885944 -2.1159449 0.42128399 -1.6509532 -2.2274325 0.43982789 -2.3514285 -3.2143993 0.61700916 -2.3195012 -3.2119181 0.61396682 -1.8261119 -2.5612538 0.4944455 -1.9253304 -2.735903 0.52371013 -1.7702843 -2.5485177 0.48821589 -1.542686 -2.2499571 0.43330854 -1.7383226 -2.5692303 0.48807102 -1.4770703 -2.2119253 0.42331222 -1.5483431 -2.3498726 0.4459126 -2.3811636 -3.6637268 0.67365503 -2.3575706 -3.6766024 0.67336524 -1.299143 -2.0526454 0.38955653 -1.2765752 -2.0446267 0.3868039 -1.2655609 -2.0549493 0.38723853 -1.2529281 -2.062676 0.38723853 -1.628412 -2.7189958 0.49792248 -1.5890697 -2.6905899 0.49140313 -1.5745212 -2.7037103 0.49198264 -2.240304 -3.9028602 0.69277841 -2.1617615 -3.8200719 0.67655247 -1.1366514 -2.0365281 0.37535882 -2.1466444 -3.904413 0.68625909 -2.0891957 -3.8557355 0.675973 -2.0734165 -3.883322 0.67843586 -0 -0 0 -0 -0 0 -0 -0 0 -1.0277236 -2.0427864 0.3686946 -1.0796732 -2.1794178 0.38999113 -1.0957479 -2.2464879 0.39984259 -1.0742413 -2.2371104 0.39723486 -1.0300815 -2.1792371 0.3868039 -1.0546287 -2.2671738 0.39998746 -1.0349383 -2.261004 0.39795923 -1.0190163 -2.2627997 0.39723486 -1.0135194 -2.2880116 0.4002772 -0.99867183 -2.2923729 0.39998746 -0.99470598 -2.3221095 0.4037542 -0.98158985 -2.3309054 0.40418881 -0.95933145 -2.317682 0.40114644 -1.2735229 -3.1320603 0.5289256 -1.2586818 -3.1508434 0.53066409 -1.3032383 -3.3215609 0.55630684 -0.88403666 -2.2934334 0.39375788 -0.86679995 -2.2904844 0.392454 -0.85754651 -2.3087478 0.39448223 -1.1025604 -3.0261867 0.50545597 -1.1179032 -3.1279435 0.52023315 -1.0326474 -2.9461014 0.49096853 -1.1093063 -3.2284617 0.53370643 -2.8818982 -8.5638781 1.3568822 -0.93457723 -2.8321075 0.47054124 -0.97219235 -3.0082211 0.4967635 -0.9605732 -3.0358295 0.50009561 -1.1950994 -3.8602746 0.62555677 -0.95906413 -3.1657701 0.51820487 -1.104687 -3.7294846 0.60339099 -1.0375241 -3.5831628 0.5800662 -0.90977824 -3.2152605 0.5231306 -0.87634557 -3.1711848 0.51559716 -0.87256968 -3.2347813 0.52443451 -0.81950861 -3.1137562 0.50531107 -0.81905401 -3.1915705 0.51632154 -0.52401066 -2.0935302 0.34986097 -0.51045364 -2.0938218 0.34942633 -0.49622902 -2.0911374 0.34855708 -0.49071521 -2.1259623 0.35333794 -0.47960618 -2.1376233 0.3546418 -0.47026393 -2.1579294 0.35724956 -0.73782969 -3.4919715 0.55645168 -1.7183243 -8.394702 1.2885015 -1.6598591 -8.3701468 1.2832861 -1.5691445 -8.1751366 1.2527176 -1.5698285 -8.4589586 1.2935721 -1.3582871 -7.5772653 1.1610122 -1.3885844 -8.0300589 1.2270749 -1.3448107 -8.0716124 1.2320006 -1.3212343 -8.2418938 1.2560496 -0.42914757 -2.7812047 0.4459126 -0.40051612 -2.705478 0.43432269 -0.41090953 -2.8989286 0.46257317 -0 -0 0 -0 -0 0 -0.32424635 -2.6349425 0.42258784 -0.30281088 -2.5916729 0.41592363 -0.26165712 -2.3643267 0.38216794 -0.24714497 -2.3658876 0.38216794 -0.23310487 -2.3722835 0.38289228 -0.21448407 -2.3293293 0.37637296 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0.1184784 -2.7759719 0.44069713 -0.097301111 -2.6619451 0.42389172 -0.081232645 -2.6713932 0.42519557 -0 -0 0 -0.045749377 -2.5198374 0.40288496 -0 -0 0 -0.022604642 -3.9568696 0.61324245 --0.00055414706 -2.4005291 0.38535514 --0.015222455 -2.3915758 0.38405129 --0.029793767 -2.3835223 0.38289228 --0.044929191 -2.4100049 0.3868039 --0.059415925 -2.3978143 0.38506541 --0.07422071 -2.4003716 0.38550004 --0.09596543 -2.5867453 0.41288128 --0 -0 0 --0 -0 0 --0 -0 0 --0.1640223 -2.6576769 0.42374685 --0.18599163 -2.7395408 0.43591627 --0.20404711 -2.7551222 0.43837914 --0.22206211 -2.7676258 0.4404074 --0 -0 0 --0 -0 0 --0.27667972 -2.8004849 0.4459126 --0.29167959 -2.7780707 0.44287026 --0.30828097 -2.7722952 0.44229075 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --3.9773967 -8.9583473 1.4690149 --4.0343251 -8.938283 1.4697393 --1.6270218 -3.548259 0.60541922 --1.6437446 -3.5274482 0.60368073 --1.6640866 -3.5146136 0.60324609 --1.7143747 -3.5640693 0.61295265 --4.365716 -8.9312124 1.4894421 --1.6809691 -3.3876784 0.58759969 --1.6772212 -3.3287089 0.57963157 --1.6809303 -3.285768 0.57427126 --1.6978655 -3.2692466 0.57325715 --1.7525201 -3.3244019 0.58412272 --4.6116252 -8.6153097 1.4646686 --1.8848282 -3.4713089 0.61222833 --1.9037037 -3.4553461 0.61150396 --1.9065144 -3.4107857 0.60599869 --1.9254534 -3.395581 0.60541922 --1.9546431 -3.3982811 0.60788208 --1.9924184 -3.4152765 0.61280781 --4.8895893 -8.2612019 1.4394605 --4.9865322 -8.3082409 1.4526441 --5.0775466 -8.3434114 1.4639443 --5.1405978 -8.3314648 1.4672765 --5.2005439 -8.3140259 1.4697393 --5.3097548 -8.3738708 1.4856755 --5.2818451 -8.2179537 1.464234 --5.407794 -8.3014488 1.4845164 --5.4046497 -8.1863708 1.4701738 --0 -0 0 --0 -0 0 --5.5151935 -8.0284176 1.4600327 --5.2375827 -7.5250707 1.3762953 --5.2842274 -7.4936004 1.3764402 --5.332984 -7.4650612 1.3771646 --5.3937736 -7.4530368 1.3809314 --5.4206796 -7.3942676 1.3762953 --5.5568061 -7.4831915 1.3986059 --5.5758491 -7.4133744 1.3920866 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.0835943 -8.4276543 1.848151 --9.1519136 -8.3871336 1.851483 --9.2134743 -8.3401155 1.8535112 --9.2836542 -8.3005714 1.857278 --10.039772 -8.8662548 1.9950534 --9.3616991 -8.1658611 1.8527869 --9.9169159 -8.5434952 1.9504322 --10.682088 -9.088995 2.0874832 --9.8285923 -8.2594872 1.9136341 --9.7762918 -8.1137266 1.8940761 --10.437372 -8.5546808 2.0098307 --10.666569 -8.6336384 2.0431516 --11.018473 -8.8070812 2.0992181 --11.017158 -8.6957874 2.088932 --10.813533 -8.4279327 2.0412683 --10.825833 -8.331255 2.0340247 --10.426874 -7.9228964 1.9513015 --11.031737 -8.2761478 2.053148 --10.359512 -7.6730442 1.9214573 --10.364064 -7.5783858 1.913779 --10.765799 -7.7711654 1.9779583 --0 -0 0 --10.759991 -7.5678926 1.9599938 --10.870439 -7.5462976 1.971439 --10.870008 -7.4475827 1.9631811 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.59803 -8.9890814 2.797657 --0 -0 0 --16.732489 -8.7980738 2.8018584 --16.791428 -8.6979694 2.8027277 --16.402031 -8.3690519 2.7300007 --16.964094 -8.5250196 2.8137381 --6.4007287 -3.1683533 1.0795928 --6.8576856 -3.342227 1.1508709 --6.8976912 -3.3094995 1.1540582 --7.1156092 -3.3604643 1.1860754 --6.4927082 -3.0178216 1.0822005 --16.567181 -7.5751929 2.7011707 --16.705393 -7.5147934 2.7159479 --7.5452094 -3.3393478 1.2419969 --7.540153 -3.2819352 1.2379404 --7.1244035 -3.0491905 1.1685456 --0 -0 0 --7.3057613 -3.0212555 1.1914357 --7.1655717 -2.9119513 1.1663725 --7.1759524 -2.8649955 1.1652135 --7.8262663 -3.0689814 1.2647421 --7.8837328 -3.0358307 1.2708268 --7.9744062 -3.0146813 1.282127 --7.9296703 -2.9422975 1.2722756 --7.959662 -2.8979855 1.274159 --7.2728148 -2.5975966 1.164634 --7.2727408 -2.5473645 1.1621711 --22.319126 -7.6615591 3.4889972 --7.2396817 -2.4364741 1.1523197 --7.2507362 -2.3907676 1.1517402 --7.2426705 -2.3389387 1.1482632 --22.774033 -7.1979737 3.5310106 --7.4267979 -2.298121 1.1721674 --7.4436002 -2.2533672 1.1726021 --13.294252 -3.9346662 2.0638688 --13.267769 -3.8384504 2.0561905 --13.03113 -3.6835155 2.0166397 --13.213724 -3.6477082 2.0409787 --13.500502 -3.6378491 2.0811088 --13.530225 -3.5569549 2.0822678 --12.781177 -3.2763965 1.9657888 --12.711762 -3.1756165 1.9523156 --0 -0 0 --12.741109 -3.0173333 1.9510117 --12.800844 -2.9486451 1.9572413 --17.11932 -3.8325305 2.6025114 --13.470333 -2.9292059 2.0522788 --17.550383 -3.703445 2.6601713 --13.354042 -2.7327511 2.0296783 --12.741625 -2.5261288 1.9357998 --13.611043 -2.6117232 2.0631444 --22.541164 -4.181241 3.3906276 --18.128094 -3.2479489 2.7304354 --18.055056 -3.1206524 2.7166724 --23.357059 -3.8892636 3.5008769 --16.748619 -2.6836958 2.5174701 --17.741732 -2.7312083 2.6621995 --19.533781 -2.8843784 2.9250016 --17.673002 -2.499022 2.6472776 --18.772486 -2.5370307 2.8075085 --17.825987 -2.2978899 2.6655316 --17.659046 -2.1663125 2.6388748 --17.783064 -2.0708432 2.6552455 --22.515249 -2.4816675 3.3504975 --18.830648 -1.9588691 2.8059149 --20.077196 -1.9640173 2.9875872 --18.922241 -1.7339566 2.816056 --19.860222 -1.697035 2.9523828 --19.84856 -1.5734241 2.9491956 --24.646885 -1.8014007 3.6522706 --18.528658 -1.240274 2.7528908 --18.452957 -1.121524 2.7407215 --23.645403 -1.2912074 3.5011666 --18.72624 -0.90762269 2.7789683 --23.687147 -1.0021144 3.505223 --23.723503 -0.85786086 3.5097141 --23.701618 -0.71147978 3.5058026 --23.706526 -0.56605953 3.5059476 --23.831236 -0.42274091 3.523767 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --22.477659 -0.56464684 3.0501451 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.971619 13.220984 5.0491567 --0 0 0 --0 0 0 --33.996078 13.572515 4.9442601 --33.944298 13.793916 4.9489136 --0 0 0 --34.721657 14.608775 5.0870466 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.17337 15.628646 5.0746827 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --21.535372 13.435551 3.4388859 --20.793283 13.150518 3.3342557 --20.75893 13.30781 3.3417008 --21.91107 14.236826 3.539129 --22.014517 14.496916 3.5698402 --21.965548 14.658679 3.5763547 --19.766808 13.367425 3.2349432 --28.079525 19.240885 4.6000571 --21.720503 15.080293 3.5810077 --20.854191 14.669294 3.454175 --20.765404 14.798127 3.4544411 --19.796677 14.291767 3.3092613 --0 0 0 --21.142569 15.661596 3.5634587 --19.661861 14.752478 3.3313308 --19.478643 14.802681 3.3157759 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --36.459812 30.262308 6.3899407 --0 0 0 --36.364986 30.945103 6.4391317 --0 0 0 --15.848733 13.825802 2.8552427 --15.625427 13.800753 2.8305144 --15.657928 14.001411 2.8516531 --15.588621 14.112522 2.8547111 --15.316875 14.038482 2.821075 --15.247886 14.148379 2.8242657 --15.909189 14.944678 2.9620004 --15.876085 15.09802 2.9729021 --15.561802 14.982058 2.9316881 --15.518556 15.124992 2.9408615 --0 0 0 --15.216076 15.198721 2.918925 --14.212338 14.371452 2.7452946 --14.01446 14.346371 2.7242887 --14.321213 14.841472 2.800601 --14.298262 15.000807 2.8138957 --14.070065 14.943937 2.7873061 --0 0 0 --14.399239 15.674562 2.8891447 --0 0 0 --14.163466 15.802848 2.880636 --14.04587 15.86645 2.8765144 --0 0 0 --13.856585 16.04512 2.8778439 --13.045848 15.29509 2.7306702 --12.908331 15.323306 2.7216296 --12.851466 15.447174 2.7294736 --12.791678 15.568622 2.7369187 --26.220133 32.313801 5.6160483 --15.201451 18.971331 3.2950358 --14.867661 18.789886 3.248105 --25.667887 32.851089 5.6262856 --25.135271 32.57951 5.5536957 --25.288046 33.196712 5.6318693 --0 0 0 --25.055441 33.742458 5.6716208 --24.796362 33.825218 5.6599212 --0 0 0 --0 0 0 --0 0 0 --9.7694149 14.036939 2.3281026 --9.6735611 14.08273 2.3258424 --9.6153336 14.18366 2.3326228 --21.490816 32.123016 5.2184 --21.291124 32.250969 5.2178679 --21.11231 32.410896 5.2226543 --0 0 0 --8.7893486 13.862568 2.2358363 --8.6930866 13.898591 2.2330444 --9.3638268 15.177262 2.4262185 --8.4049139 13.812029 2.2028651 --20.081013 33.459206 5.2685213 --9.2908611 15.698455 2.480993 --9.2583075 15.864736 2.4980106 --9.1533747 15.90836 2.4960163 --8.2721634 14.583179 2.2830331 --8.2226763 14.705462 2.2940676 --8.1232004 14.739146 2.2915418 --8.0524797 14.825291 2.2971256 --7.959023 14.870051 2.2964609 --8.621273 16.34758 2.5131667 --9.6029062 18.482807 2.8279884 --7.3168445 14.29674 2.1883738 --7.4453621 14.770607 2.2528536 --8.2694902 16.658989 2.5288546 --0 0 0 --7.3114691 15.194511 2.295929 --7.2100387 15.22207 2.2934029 --7.1466541 15.3307 2.3029752 --7.1061764 15.491374 2.3202586 --7.001204 15.513004 2.3170679 --6.8708968 15.476861 2.3055012 --6.7520065 15.464231 2.2975245 --0 0 0 --7.2832637 17.255259 2.5464036 --13.835594 33.347542 4.8769884 --0 0 0 --13.524101 33.761391 4.9126186 --13.37766 33.99868 4.9349537 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.8287835 14.010626 2.0219223 --4.7341599 14.014639 2.018333 --0 0 0 --4.4670639 13.779408 1.9771188 --4.6901097 14.775786 2.113524 --4.5243683 14.562931 2.079622 --4.1530023 13.663004 1.9495986 --4.3037992 14.477702 2.0600786 --4.0475368 13.928033 1.9796449 --3.9701228 13.981209 1.9836333 --0 0 0 --3.7961805 14.021222 1.9825697 --3.7174182 14.07204 1.9864253 --3.8261104 14.851851 2.0913215 --3.7295985 14.853899 2.0883965 --4.853498 19.84425 2.7744102 --0 0 0 --3.4629357 14.951896 2.0927839 --3.2644415 14.499075 2.0276392 --3.038388 13.892387 1.9416217 --3.1072659 14.636933 2.0411999 --0 0 0 --3.825897 19.177074 2.6571498 --2.7478507 14.228436 1.9779166 --3.7518828 20.087734 2.7752078 --2.6339376 14.598562 2.0239167 --2.5325816 14.547075 2.0147433 --5.2531867 31.307142 4.2922816 --5.0600429 31.332916 4.2914839 --4.8705807 31.381983 4.2940097 --2.1892703 14.701898 2.0279052 --4.6718521 32.748291 4.4713631 --3.7066908 27.174856 3.7130256 --4.1326084 31.750546 4.3289752 --3.9421015 31.810715 4.3337612 --3.7575002 31.924862 4.3459926 --3.5578082 31.913826 4.3414726 --0 0 0 --3.1945429 32.244064 4.3804264 --2.986186 32.150558 4.3652701 --2.7751589 32.010288 4.3439984 --2.5724101 31.948668 4.3334956 --2.6947768 36.246563 4.9095607 --2.3845305 34.974964 4.7364621 --2.1759579 35.086868 4.7496238 --1.7970854 32.172382 4.3563628 --1.7792319 35.794949 4.8414912 --1.5579685 35.768555 4.8365722 --1.3402466 35.824982 4.8429537 --1.1275611 36.061371 4.8736649 --0.90821421 36.144894 4.8840346 --0.68634093 36.145821 4.883503 --0.48211867 37.515999 5.0668387 --0.25155583 37.464729 5.0596595 --0.021658994 37.443764 5.0567346 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -1.7387241 20.326189 2.7705545 -3.1655121 34.513851 4.6831498 -3.3735559 34.456295 4.6780977 -2.0988176 20.158644 2.7527397 -2.1926954 19.875456 2.7163117 -3.801544 32.623219 4.4397211 -2.4463336 19.927719 2.7272134 -2.6813946 20.787186 2.8455374 -4.3020468 31.813046 4.3402758 -4.4870319 31.714411 4.3305707 -4.6699557 31.607843 4.3199348 -2.202723 14.299891 1.9748588 -5.0694032 31.622532 4.330039 -2.3599598 14.163265 1.9601015 -2.6045432 15.060692 2.0842752 -5.7639198 32.156036 4.4161892 -2.6479282 14.266522 1.9804425 -2.7182288 14.160458 1.9682113 -2.9378941 14.813354 2.0598128 -3.0058758 14.683384 2.0445237 -3.3151503 15.70327 2.1869113 -3.1881545 14.656045 2.0459862 -0 0 0 -3.2927783 14.290336 2.0011826 -3.4180927 14.428995 2.023119 -0 0 0 -0 0 0 -3.4874129 13.600379 1.917425 -3.5420654 13.469451 1.9022689 -4.1353183 15.342278 2.1655066 -4.1470785 15.018538 2.1240268 -4.1914263 14.823997 2.1004949 -4.34126 15.001742 2.1289458 -4.4757071 15.118326 2.1490211 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -4.684423 14.206776 2.0406682 -4.7715058 14.177765 2.0406682 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.7223105 18.673372 2.7446296 -7.845583 18.64665 2.7476876 -7.9625788 18.604538 2.7486181 -8.0734196 18.548059 2.7475545 -8.2203684 18.573399 2.7585893 -0 0 0 -8.4155226 18.400818 2.7482193 -8.5249271 18.341646 2.7471557 -8.6110687 18.233427 2.7389131 -8.7163534 18.166843 2.7369187 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -34.10363 50.431145 8.2004318 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -14.455091 19.766214 3.3188336 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -38.957561 39.002922 7.4286661 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -22.97711 14.568593 3.683511 -23.058506 14.422604 3.6823144 -0 0 0 -23.906013 14.547659 3.7878754 -23.014139 13.812115 3.6344531 -24.007677 14.208776 3.776176 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -24.477367 13.490537 3.7830894 -24.5292 13.323534 3.7784362 -28.134594 15.059117 4.3146167 -28.184385 14.864011 4.3082352 -28.17128 14.636872 4.2925472 -28.174978 14.419939 4.2796516 -28.20717 14.218682 4.2712755 -28.224638 14.010964 4.2609057 -28.170277 13.769183 4.2400327 -28.135452 13.538915 4.2223506 -28.137381 13.327838 4.2103853 -28.132393 13.114737 4.1976223 -28.137562 12.907571 4.1865878 -28.142155 12.701245 4.1756859 -28.156149 12.500177 4.1663795 -28.072456 12.257376 4.1429806 -28.12528 12.07551 4.1397896 -28.164146 11.888063 4.134738 -28.239307 11.716166 4.1351366 -0 0 0 -28.461 11.40081 4.1467032 -0 0 0 -28.592291 11.04819 4.1457725 -28.667883 10.875708 4.1469688 -0 0 0 -28.747986 10.50438 4.139657 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -31.969593 -0.37390852 4.3227267 -0 -0 0 -31.955662 -0.76603025 4.3217959 -0 -0 0 -24.487577 -0.88788468 3.3209608 -0 -0 0 -0 -0 0 -24.922321 -1.3633667 3.382117 -25.328001 -1.5414827 3.4378223 -30.942961 -2.0737658 4.1940327 -18.403631 -1.3470325 2.5093112 -18.371307 -1.4580483 2.5061204 -25.213417 -2.156687 3.4285161 -19.593655 -1.7972465 2.6733694 -19.954134 -1.9538424 2.723491 -27.41312 -2.8539736 3.7311065 -27.40593 -3.023319 3.732569 -27.414427 -3.1946335 3.7362914 -19.348295 -2.3752151 2.6489069 -18.067278 -2.3305988 2.4776695 -27.390266 -3.7040145 3.7416093 -27.366043 -3.8718696 3.7414765 -27.381969 -4.0456505 3.7469275 -18.7883 -2.893981 2.584028 -0 -0 0 -25.281086 -4.2121553 3.4719901 -19.699688 -3.406671 2.71578 -18.979902 -3.4022834 2.620589 -17.494017 -3.2468739 2.4207675 -26.001348 -4.9908576 3.5855281 -18.657402 -3.7001696 2.5854905 -17.661415 -3.6154344 2.4522762 -0 -0 0 -20.103741 -4.3730497 2.7938206 -20.113281 -4.5045519 2.7988727 -0 -0 0 -0 -0 0 -38.055622 -9.2613182 5.2877989 -30.853674 -7.7095404 4.2999926 -0 -0 0 -0 -0 0 -0 -0 0 -30.587347 -8.4456768 4.2905531 -7.9599328 -2.2508307 1.1436656 -7.9231229 -2.2930179 1.1404748 -7.9431167 -2.3517177 1.1452609 -7.9769168 -2.415056 1.1520413 -7.9922466 -2.4733307 1.1562957 -7.9873157 -2.5256102 1.1577581 -7.9773273 -2.5763993 1.1585559 -7.9519558 -2.6221952 1.1572263 -0 -0 0 -20.838465 -7.1555982 2.9895205 -20.527575 -7.1899552 2.9516304 -20.429869 -7.2967739 2.9440522 -20.415445 -7.4331813 2.9484396 -20.374098 -7.5600319 2.9491043 -0 -0 0 -20.094807 -7.7382531 2.9225147 -19.646488 -7.7043753 2.864815 -19.655914 -7.8475623 2.8730578 -20.433781 -8.3038292 2.9927113 -19.34656 -8.0006895 2.8423467 -19.23407 -8.0927267 2.8331733 -19.331663 -8.2737656 2.8547111 -20.112061 -8.7541466 2.9763587 -19.515076 -8.6371222 2.8967226 -19.487925 -8.7684946 2.9005783 -19.750126 -9.032589 2.947243 -19.421995 -9.0270329 2.9069598 -19.352798 -9.1396847 2.9049654 -3.7396672 -1.7946221 0.59046751 -3.7383857 -1.8223107 0.59192991 -3.7440109 -1.8535682 0.59445596 -3.7688751 -1.8947551 0.5999068 -0 -0 0 -3.7470999 -1.9417742 0.6001727 -3.7316058 -1.9628842 0.59964091 -3.6477935 -1.9474747 0.58873916 -3.5033092 -1.8980684 0.56853104 -3.6522832 -2.0078461 0.59312648 -3.6710572 -2.047596 0.59791261 -3.6955183 -2.0910671 0.60362935 -5.1491642 -2.9552705 0.83043927 -4.9621844 -2.8885925 0.80424845 -4.9469275 -2.9204969 0.80464727 -3.9067163 -2.3389318 0.6448434 -3.8770404 -2.3536024 0.64245027 -3.7814922 -2.3274813 0.62968725 -3.7654579 -2.3495913 0.62942135 -3.7459443 -2.3694727 0.62862366 -3.6420541 -2.3351803 0.61439818 -3.7024565 -2.4060829 0.62636358 -3.7621229 -2.477813 0.63832891 -3.8095038 -2.5426621 0.64843297 -3.8012197 -2.5709856 0.64962953 -0 -0 0 -3.8426569 -2.6683099 0.66159487 -3.7767615 -2.6570544 0.653485 -3.7676516 -2.6853549 0.65468156 -3.7294061 -2.6927588 0.65109193 -3.4928052 -2.5547042 0.61453116 -3.4085717 -2.5253525 0.60309756 -3.4944894 -2.6223562 0.62011498 -4.1001639 -3.1162896 0.72487825 -3.5555122 -2.7369773 0.63593584 -4.1562004 -3.2400966 0.74096501 -4.2148147 -3.3275611 0.7543928 -4.3584418 -3.4845579 0.78257787 -3.5296423 -2.8577073 0.64324796 -3.7427635 -3.0684323 0.68326545 -3.2998326 -2.7393909 0.60934615 -4.4529552 -3.742873 0.81435251 -3.5754452 -3.0430269 0.66385496 -3.8029912 -3.277102 0.70746207 -4.3773317 -3.8189909 0.81328893 -3.3568811 -2.9652941 0.63487226 -2.423209 -2.1672981 0.47014922 -2.3540227 -2.1315734 0.46004516 -2.3679342 -2.1707547 0.46496424 -2.322602 -2.1555815 0.45911452 -2.318723 -2.1786134 0.46084285 -2.3225489 -2.2091918 0.4640336 -2.3882058 -2.2997015 0.47879088 -2.3343022 -2.2755735 0.47134575 -2.3689768 -2.3378847 0.48051921 -2.5782835 -2.5758092 0.52292973 -2.5777626 -2.6070845 0.52585459 -2.5658729 -2.627106 0.52665228 -2.338418 -2.4238462 0.48583713 -2.3330753 -2.4481928 0.48769841 -2.3078182 -2.4516382 0.48570418 -2.2913818 -2.4643011 0.48543829 -2.3171198 -2.5228369 0.49354815 -2.2356594 -2.4643431 0.48038626 -2.102747 -2.3466406 0.45672145 -2.0541461 -2.3209095 0.44980812 -2.0189896 -2.3095942 0.44555378 -1.9905281 -2.3054366 0.44262892 -2.6407723 -3.0965574 0.57996458 -2.6664219 -3.1657627 0.58927095 -1.8710535 -2.2494948 0.42654216 -1.855328 -2.2586358 0.42614332 -1.8351893 -2.2622812 0.42481384 -1.7977225 -2.2441082 0.41976181 -1.6781372 -2.121413 0.39689469 -1.7334347 -2.2191408 0.41178489 -1.6313933 -2.1151662 0.39237443 -1.6105764 -2.114887 0.3906461 -2.3547695 -3.1314745 0.55962348 -2.3361015 -3.1466599 0.5597564 -2.3085463 -3.149744 0.55789512 -2.2862711 -3.1598351 0.55723041 -2.6897213 -3.7657535 0.65481448 -1.9571664 -2.7761779 0.48969263 -2.6376452 -3.7903421 0.653485 -1.9448376 -2.831847 0.49487764 -1.4480084 -2.1365705 0.38027614 -1.4023551 -2.096813 0.37243217 -2.0589311 -3.1194401 0.53542686 -1.5139256 -2.3248024 0.40620106 -1.3731676 -2.1372783 0.37482527 -1.3085457 -2.0644708 0.36192927 -1.3063656 -2.0892665 0.36458823 -1.3075732 -2.1200173 0.36817783 -1.2986623 -2.134774 0.36924142 -1.6440971 -2.7401216 0.46270412 -2.2562535 -3.812906 0.62835777 -2.2188275 -3.8027101 0.62463522 -2.2087991 -3.8394475 0.62822485 -2.2272556 -3.9270666 0.63965839 -1.7576008 -3.1439388 0.51721293 -2.1315339 -3.8681695 0.62649649 -0 -0 0 -1.0591152 -1.9795024 0.33520666 -1.0585082 -2.0078804 0.33853036 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -1.1383092 -2.3296888 0.38187152 -1.0694116 -2.2232065 0.36498708 -1.0633874 -2.2458494 0.36738014 -1.0433054 -2.2388573 0.36538592 -1.0423595 -2.2731433 0.36950731 -1.0247226 -2.2713659 0.36831078 -1.016397 -2.2902927 0.37017205 -1.020569 -2.3382683 0.3762877 -1.0089396 -2.3508613 0.37721834 -0.99526691 -2.358834 0.37748423 -0 -0 0 -0.97298104 -2.3873899 0.3798773 -1.6051421 -4.007997 0.61320168 -1.3018038 -3.3094511 0.51109731 -1.1882319 -3.076082 0.47639781 -1.1844524 -3.123162 0.48211458 -0.85813159 -2.3055835 0.36405644 -0.85893601 -2.3517659 0.36990616 -0 -0 0 -1.1136951 -3.1690547 0.4846406 -1.0661304 -3.0943074 0.47307408 -1.0198432 -3.0200379 0.46164054 -0.91533279 -2.766546 0.42494678 -0.96467119 -2.9766998 0.4537966 -0.95838362 -3.0203497 0.45911452 -0.80338019 -2.5870023 0.39742649 -0.96592844 -3.1788659 0.47972152 -0.75801593 -2.551065 0.39104494 -0.96778411 -3.3313377 0.49939787 -0.91510439 -3.2237561 0.48357701 -0.86351764 -3.1147027 0.4676232 -0.83765483 -3.0950689 0.46416655 -0.80953401 -3.0656536 0.45938042 -0.78798819 -3.0600057 0.45791799 -0.85054576 -3.3887336 0.50272155 -0.84480804 -3.4555042 0.51123029 -0.51205629 -2.1522467 0.33081934 -0.50152457 -2.166935 0.33241472 -0.49017861 -2.1786735 0.33361128 -0.47616592 -2.1787355 0.33321244 -0.46031836 -2.1699822 0.33161703 -0.43979883 -2.1378186 0.32683089 -0.42609137 -2.1375608 0.32643205 -0.43702686 -2.2646966 0.34344944 -0.40401387 -2.1650369 0.32948986 -0.51568717 -2.8599877 0.4238832 -0.48928791 -2.8123236 0.4169699 -0.43511698 -2.5953453 0.3870565 -0.42345071 -2.6243842 0.3906461 -0.40962008 -2.641624 0.39264032 -0.41559649 -2.7930949 0.41284847 -1.2067389 -8.4609671 1.1804923 -1.1531932 -8.4564276 1.1788969 -1.0932238 -8.4014263 1.1705211 -1.0170286 -8.2092886 1.1436656 -0.96385735 -8.1917505 1.1404748 -0.27033642 -2.4282515 0.36179632 -0.87145787 -8.2808304 1.1509777 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0.24333028 -3.9293487 0.56214947 -0.21822049 -3.9129553 0.5597564 -0.19612633 -3.9528267 0.56494141 -0.11789995 -2.7152359 0.39862302 -0.094899423 -2.5465448 0.37588885 -0.078714579 -2.5292478 0.37349579 -0.062994674 -2.5217566 0.37243217 -0.046823677 -2.4854307 0.36751309 -0.031763677 -2.5005369 0.36950731 -0.016193455 -2.4669874 0.36498708 -0.0010460755 -2.450191 0.36272696 --0.013955048 -2.4442048 0.36192927 --0.028396361 -2.3965025 0.35554776 --0.04304751 -2.3933103 0.35514891 --0.057589337 -2.3870559 0.35435122 --0.07649906 -2.5283241 0.37336284 --0.095493145 -2.623883 0.38625881 --0.11415159 -2.6836519 0.39436868 --0.13114455 -2.6937904 0.39583111 --0.14669667 -2.6751215 0.39343804 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --4.0849276 -8.9313383 1.3514639 --1.6362276 -3.5196328 0.55470437 --1.6577928 -3.5095267 0.55470437 --1.6801531 -3.501076 0.55497026 --4.2737918 -8.7687054 1.3425564 --1.6952918 -3.4242332 0.54659456 --1.6735412 -3.328753 0.53383148 --1.6907808 -3.312242 0.53290087 --1.7074251 -3.294765 0.53183728 --1.7497528 -3.3263328 0.5382188 --1.8676695 -3.4982767 0.56600499 --1.876354 -3.4632208 0.56241536 --1.8803824 -3.4203739 0.55762923 --1.8974724 -3.4018466 0.55656564 --1.9290463 -3.4091182 0.5594905 --1.9558475 -3.4075334 0.56108588 --4.8260121 -8.2909212 1.3208858 --4.8893886 -8.2824917 1.3242095 --4.9441891 -8.2591381 1.325273 --0 -0 0 --0 -0 0 --5.1756401 -8.2953901 1.3456142 --5.2253823 -8.2618017 1.3453482 --5.2524428 -8.1928701 1.3394985 --5.2945142 -8.1480207 1.3375043 --5.344955 -8.116209 1.3376373 --5.3897033 -8.07584 1.3364407 --5.4236088 -8.0196295 1.3327181 --0 -0 0 --5.4300456 -7.8205771 1.3111806 --5.3752899 -7.6411924 1.2872498 --5.4295516 -7.6185594 1.2889782 --5.4228244 -7.5111694 1.2767469 --5.4758306 -7.4873548 1.2783422 --5.4709339 -7.3851218 1.2669088 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.2479601 -8.4953012 1.7185344 --9.3013802 -8.4397287 1.7188002 --9.3168259 -8.3500834 1.7122858 --9.4925585 -8.4031305 1.734621 --9.5178261 -8.3218927 1.7299678 --9.9145079 -8.5619793 1.791257 --9.6825733 -8.2584972 1.7411355 --10.629019 -8.9537115 1.8982805 --9.8471889 -8.1923027 1.7523032 --10.432549 -8.5715466 1.845234 --10.625788 -8.6216564 1.8695636 --10.932952 -8.7601995 1.9133036 --10.992716 -8.6978712 1.9143672 --10.841258 -8.470377 1.8795347 --10.52578 -8.1203575 1.817315 --10.416935 -7.9348989 1.7905923 --10.402851 -7.8237681 1.7800894 --10.563655 -7.8436952 1.7989681 --10.7123 -7.8525643 1.8157196 --0 -0 0 --10.759469 -7.6859484 1.8077426 --10.784556 -7.6043634 1.8041531 --10.848096 -7.5499372 1.806945 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.560184 -8.994854 2.5619588 --16.92527 -9.0591164 2.6091554 --16.704386 -8.8094521 2.5672767 --16.760763 -8.7081614 2.5676754 --16.501553 -8.445302 2.5206118 --16.36632 -8.2497549 2.4925597 --16.460131 -8.1707726 2.4990742 --6.9751177 -3.408994 1.0754631 --6.8923049 -3.3162773 1.0600411 --6.9483519 -3.2908959 1.065359 --7.1040573 -3.3114362 1.0854342 --0 -0 0 --0 -0 0 --6.993505 -3.1045032 1.0604399 --0 -0 0 --7.5410814 -3.2374258 1.134891 --7.117034 -3.003772 1.0702782 --7.1188526 -2.9532092 1.067885 --7.1634545 -2.920325 1.0717405 --7.7148652 -3.0900824 1.1488506 --7.716157 -3.0357914 1.1463245 --7.73279 -2.9876745 1.1460587 --7.2023849 -2.7320437 1.0673532 --7.2171555 -2.6871076 1.0670873 --7.2325764 -2.6424334 1.0669544 --7.2785096 -2.6087077 1.0712087 --22.466074 -7.8977752 3.2284288 --22.546906 -7.7710814 3.2330821 --22.615761 -7.6398859 3.2361398 --22.686676 -7.5090718 3.2395964 --0 -0 0 --0 -0 0 --28.253899 -8.7782288 4.0027199 --28.211452 -8.5755863 3.9892921 --28.157139 -8.3706884 3.974402 --0 -0 0 --28.922274 -8.2132492 4.0670671 --13.04069 -3.616704 1.8493555 --13.325721 -3.6078565 1.8859162 --13.565129 -3.5834925 1.9160956 --12.778728 -3.2919786 1.8041531 --12.785229 -3.2101283 1.8022918 --12.728628 -3.1130157 1.7917888 --12.804376 -3.0484006 1.7996328 --0 -0 0 --13.293335 -2.9929376 1.8618526 --13.02679 -2.8490489 1.8227658 --12.695971 -2.6951663 1.7750374 --17.647594 -3.6334617 2.4509468 --13.30252 -2.6537776 1.8536098 --13.301037 -2.5687215 1.8512168 --17.789427 -3.3225708 2.4615827 --13.319853 -2.4031918 1.8496214 --18.013407 -3.1361506 2.4867098 --17.171171 -2.8810575 2.3695824 --18.062277 -2.9167585 2.4883053 --19.732073 -3.0623295 2.7125893 --19.643639 -2.9252837 2.6980977 --17.758696 -2.5332615 2.440311 --17.840683 -2.4333582 2.4493513 --17.994841 -2.342011 2.46823 --17.929201 -2.2216783 2.4574614 --18.952415 -2.2305033 2.5938663 --18.868227 -2.1032991 2.5807045 --18.836422 -1.9828162 2.5747218 --19.892717 -1.9706947 2.7155139 --19.870882 -1.8454813 2.7109938 --0 -0 0 --23.094885 -1.8594199 3.1420124 --18.522675 -1.3768868 2.5255308 --18.56835 -1.2657702 2.5305829 --18.518393 -1.1482543 2.522872 --0 -0 0 --23.784489 -1.1821038 3.2284288 --23.821001 -1.0374368 3.2324173 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --49.190346 8.8730946 6.1095753 --49.306721 9.2068272 6.1308112 --49.370159 9.5325336 6.1457725 --49.388622 9.8508196 6.1554251 --49.450729 10.179098 6.1707482 --49.461143 10.497996 6.1799183 --49.448166 10.812738 6.1864338 --49.583294 11.161511 6.2116508 --49.553528 11.474721 6.216598 --49.610626 11.809136 6.232645 --49.631733 12.136429 6.2444696 --49.69305 12.475061 6.2616029 --49.719391 12.806481 6.2746339 --49.766563 13.144778 6.2905602 --49.70797 13.456119 6.2934561 --0 0 0 --49.297501 13.996497 6.2629299 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.876663 13.474014 4.5786843 --0 0 0 --0 0 0 --33.967323 13.846498 4.4926562 --0 0 0 --33.975018 14.338329 4.5164251 --0 0 0 --0 0 0 --0 0 0 --34.306 15.480584 4.6088481 --34.161644 15.668441 4.6023331 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --22.116348 13.642966 3.1927016 --21.761213 13.608914 3.1538501 --21.237984 13.463653 3.090626 --20.744932 13.330202 3.0313835 --21.416365 13.948106 3.1406984 --21.655964 14.294179 3.1881166 --20.094231 13.440985 2.9726238 --19.886482 13.479362 2.954284 --21.640392 14.862921 3.2251582 --21.562639 15.005064 3.2272093 --0 0 0 --20.535986 14.667871 3.1016057 --19.827959 14.346659 3.0089414 --20.281586 14.865369 3.090626 --20.240999 15.027409 3.0983479 --0 0 0 --28.060204 21.372255 4.321444 --0 0 0 --0 0 0 --0 0 0 --40.48867 32.439667 6.3401504 --38.434147 31.182636 6.0498505 --37.305557 30.648432 5.9025288 --36.737522 30.561226 5.8425622 --0 0 0 --22.864954 19.500032 3.6867905 --22.429319 19.367462 3.6361146 --36.022034 31.493464 5.8499222 --0 0 0 --0 0 0 --0 0 0 --15.486316 14.224005 2.5900216 --15.366035 14.288339 2.5845921 --15.387214 14.485105 2.6028111 --39.011269 37.180782 6.5844798 --15.416895 14.874112 2.6380429 --15.369367 15.011436 2.6455235 --0 0 0 --32.464771 32.498547 5.617538 --32.191544 32.62294 5.6048689 --14.069949 14.433651 2.4842057 --14.260657 14.810049 2.5331924 --14.161306 14.888639 2.5317445 --31.279287 33.294609 5.5867705 --30.729362 33.114067 5.5251145 --14.23499 15.52878 2.5947273 --14.135442 15.611417 2.5940032 --13.300241 14.871304 2.4592299 --0 0 0 --27.844465 31.915171 5.1822085 --13.087111 15.186544 2.4709334 --13.018772 15.296043 2.4756391 --12.932337 15.384756 2.477087 --15.202024 18.312141 2.9270155 --16.790483 20.480185 3.2531505 --25.83951 31.916174 5.0254755 --0 0 0 --15.09127 19.114475 2.9943421 --24.946777 32.000408 4.965992 --14.87979 19.329695 2.9991682 --24.560013 32.314407 4.9675603 --24.454218 32.588364 4.986383 --24.657393 33.282604 5.0687914 --0 0 0 --22.518396 31.188242 4.7098379 --22.307592 31.299149 4.7058563 --22.116838 31.437872 4.7062182 --21.861811 31.484106 4.6930666 --21.683928 31.640583 4.696445 --9.6652145 14.289316 2.1310439 --9.521698 14.264956 2.1188574 --9.5355434 14.477318 2.1412997 --9.4643822 14.563023 2.1452813 --21.089981 32.894218 4.7835593 --9.2754068 14.662968 2.1431096 --8.713912 13.964141 2.0348804 --8.6270256 14.015655 2.0346391 --8.4764776 13.962251 2.019557 --9.1289568 15.247319 2.194268 --9.0877123 15.391951 2.2068162 --20.040644 34.426624 4.8759823 --8.3481913 14.54404 2.0725253 --8.2583046 14.594126 2.0724046 --8.109129 14.537885 2.057564 --7.8638849 14.30377 2.01823 --8.7618418 16.171642 2.269799 --8.6596441 16.219845 2.2690749 --7.6135917 14.473331 2.0219703 --8.510643 16.422726 2.2824678 --7.5712428 14.831813 2.0582879 --0 0 0 --0 0 0 --9.1540852 18.77898 2.5734916 --7.3376689 15.289708 2.0955708 --7.2441387 15.33534 2.0956914 --17.568722 37.794498 5.1000414 --7.6185937 16.654436 2.260267 --7.6152463 16.920849 2.2895865 --7.5241356 16.996304 2.2934477 --7.414556 17.030319 2.2918792 --7.366169 17.206909 2.3092537 --0 0 0 --13.91704 33.647541 4.4599581 --13.347781 32.84024 4.3429213 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.6437559 14.078893 1.836159 --4.6088414 14.266768 1.85655 --4.3856401 13.866012 1.8018925 --4.3940945 14.195175 1.840382 --0 0 0 --4.0758433 13.762584 1.7788471 --3.9344723 13.590899 1.7539918 --3.9749861 14.05324 1.8093733 --3.8197148 13.82762 1.7778819 --0 0 0 --3.7115986 14.108665 1.8074427 --3.7628005 14.668697 1.8748897 --3.6065373 14.426663 1.8417093 --3.5177143 14.447556 1.8415885 --3.4374666 14.504609 1.8460529 --3.2418516 14.063038 1.788379 --3.2197251 14.369398 1.8240933 --3.1755996 14.591615 1.8493105 --2.9342566 13.892076 1.7600247 --3.9494147 19.284948 2.4268939 --2.8240094 14.231813 1.7977902 --2.8013873 14.586186 1.8395374 --2.7946303 15.049143 1.8946775 --2.7102962 15.110954 1.9002277 --2.5752311 14.882757 1.8700635 --2.4510658 14.701461 1.8458115 --5.0912061 31.744793 3.9419792 --4.8869567 31.714605 3.9344985 --0 0 0 --4.4978189 31.775135 3.9348605 --3.7045236 27.379257 3.3923881 --4.1058993 31.81514 3.9332919 --3.9004457 31.756969 3.9231567 --3.71402 31.85327 3.9320853 --0 0 0 --3.3443418 32.102806 3.9573026 --3.1356881 32.004166 3.9428236 --2.9364436 31.992157 3.9390833 --2.7423732 32.036278 3.9423411 --2.5419798 32.005001 3.9365497 --2.3683863 32.33186 3.9745564 --2.3541148 35.092358 4.3091373 --2.1368172 35.074436 4.3052764 --1.9237885 35.127525 4.3102231 --1.7057092 35.087109 4.3039489 --1.489082 35.06617 4.3002086 --1.27364 35.067703 4.2993641 --1.0837481 35.914295 4.4014397 --0.86436224 35.961948 4.406507 --0.66900736 37.383919 4.578805 --0.44174156 37.56897 4.6008849 --0.21156955 37.634502 4.6086068 -0.01707652 33.456844 4.1007633 -0.22207171 33.41243 4.0954542 -0.42818928 33.496796 4.1059513 -0.63194519 33.400242 4.0946097 -0.83674884 33.390774 4.0940065 -1.0439395 33.459427 4.103056 -0 0 0 -1.8154525 41.738148 5.1121073 -2.0655594 41.606255 5.0975075 -2.3473713 42.06855 5.1554227 -2.6028142 42.01075 5.1502347 -0 0 0 -0 0 0 -0 0 0 -3.789875 43.744068 5.3710361 -0 0 0 -1.9901762 20.106121 2.4899974 -2.1099751 20.059965 2.4858949 -2.2171874 19.904573 2.4685204 -2.322341 19.746655 2.4509046 -3.9592454 31.966764 3.9493392 -4.1518569 31.915289 3.9460814 -4.3488145 31.898066 3.9471674 -4.5200663 31.699783 3.9261732 -4.7494278 31.906118 3.9550102 -5.0256329 32.395302 4.0188375 -2.3019233 14.264192 1.7904302 -2.3861187 14.230219 1.788017 -2.4704945 14.198684 1.7859658 -2.7175989 15.070305 1.8955221 -2.6645939 14.274639 1.7992381 -2.9220932 15.138164 1.908191 -6.3195586 31.686239 3.9614048 -3.0319791 14.733634 1.8625828 -3.3319581 15.702318 1.9852906 -3.4212441 15.649575 1.9813089 -3.2599297 14.485512 1.8389341 -3.4215391 14.779544 1.8781475 -3.7475746 15.747155 2.0016999 -0 0 0 -9.8092604 39.07515 4.9310017 -3.4981906 13.584654 1.7392718 -3.5457313 13.427606 1.7222592 -4.0579 14.993335 1.9221872 -4.2270188 15.246521 1.9572983 -4.2613792 15.012119 1.9309951 -4.2830524 14.743561 1.9003483 -0 0 0 -4.2549391 14.003192 1.8131136 -0 0 0 -4.5270653 14.266892 1.8535335 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.9109302 18.74649 2.5073719 -8.0371637 18.724051 2.5108709 -0 0 0 -8.3134565 18.730167 2.5249877 -0 0 0 -8.5248814 18.58794 2.5197995 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -33.355286 49.206917 7.2596745 -0 0 0 -34.012188 48.873741 7.2714987 -34.493343 48.922119 7.3098679 -34.634773 48.48822 7.2768078 -34.933384 48.277206 7.2771697 -15.387106 20.993347 3.1978898 -14.670565 19.760399 3.0255921 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -18.378578 20.763559 3.4045746 -18.51226 20.657793 3.405781 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.033295 19.727383 3.3660851 -0 0 0 -38.645 39.081192 6.7145476 -39.023834 38.982944 6.7385583 -39.353447 38.83271 6.7541232 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -25.094265 19.316854 3.8833401 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -23.30426 14.541416 3.3729625 -0 0 0 -0 0 0 -0 0 0 -23.285664 13.747619 3.3209596 -24.221508 14.100378 3.4407716 -0 0 0 -0 0 0 -0 0 0 -24.538506 13.489751 3.4377551 -24.650492 13.355008 3.4418573 -28.157841 15.032268 3.913866 -28.183653 14.824554 3.9048169 -28.194757 14.610241 3.8939579 -28.198992 14.393644 3.8823748 -28.152851 14.153025 3.8641555 -28.197348 13.959317 3.8584847 -28.40383 13.845189 3.8748941 -28.724525 13.784019 3.9067473 -28.988983 13.69272 3.9309993 -0 0 0 -0 0 0 -0 0 0 -31.013781 13.728511 4.1566272 -31.016426 13.502692 4.1458888 -0 0 0 -30.857712 12.985534 4.1034179 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -32.540913 -0.41593677 3.9897592 -32.446434 -0.61386538 3.9786587 -32.074875 -0.80372721 3.9340158 -32.494999 -1.0138153 3.9857774 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -24.561899 -1.5212673 3.0253508 -25.415728 -1.7308002 3.1305633 -0 -0 0 -0 -0 0 -25.318247 -2.1930132 3.1230826 -25.362633 -2.3537366 3.1302013 -18.475163 -1.8286426 2.2907932 -27.460333 -2.8888052 3.390337 -27.426304 -3.0554848 3.3884065 -19.673698 -2.3137565 2.4419758 -19.738928 -2.4443147 2.4517491 -27.400854 -3.5644073 3.3927503 -27.392239 -3.7343466 3.3944395 -27.377653 -3.9036133 3.3955252 -18.663633 -2.7777085 2.3277142 -27.318861 -4.2379155 3.3944395 -19.038763 -3.0728302 2.3782692 -19.942759 -3.3444724 2.4920485 -18.62603 -3.2411997 2.3321784 -18.855885 -3.4005442 2.3630664 -19.123508 -3.5701194 2.3987808 -18.828329 -3.6346905 2.3649969 -18.792044 -3.7474318 2.3633077 -18.070581 -3.7189479 2.2766764 -18.136761 -3.8487208 2.2877767 -0 -0 0 -0 -0 0 -18.117002 -4.1944494 2.2945335 -38.170864 -9.0857782 4.8033466 -36.456802 -8.9144487 4.5959382 -31.852129 -7.9958 4.0258355 -31.259327 -8.051178 3.9576645 -0 -0 0 -31.604692 -8.5550575 4.0138903 -0 -0 0 -7.9445739 -2.2545943 1.0380154 -7.9448895 -2.3074539 1.0398252 -25.744463 -7.651371 3.2986381 -31.690216 -9.6307755 4.0599813 -0 -0 0 -0 -0 0 -7.9638577 -2.5803814 1.0517702 -7.9478745 -2.6291981 1.0517702 -0 -0 0 -24.707998 -8.5139446 3.2106793 -24.713358 -8.6858006 3.2181599 -20.452555 -7.3293829 2.674964 -20.392281 -7.4492888 2.6730335 -0 -0 0 -20.272413 -7.6887622 2.6695344 -24.904766 -9.6211805 3.2793329 -0 -0 0 -19.634439 -7.8631358 2.6049831 -19.530668 -7.9609771 2.5977437 -19.45578 -8.070014 2.5943654 -19.351936 -8.1664667 2.5872464 -20.107836 -8.631238 2.693907 -19.679674 -8.5908089 2.6441965 -19.526787 -8.6670933 2.6309242 -19.575483 -8.8328867 2.6445584 -19.665285 -9.0190535 2.6638634 -3.6715147 -1.7101536 0.52655196 -3.6681294 -1.7360488 0.5275172 -3.6636701 -1.7615362 0.5283618 -3.6715217 -1.7931368 0.53089559 -3.7449222 -1.8575605 0.54235798 -3.6217606 -1.8242059 0.52715522 -3.5504079 -1.8156419 0.51895058 -3.4837036 -1.8085604 0.5113492 -3.5375187 -1.8641677 0.5202778 -3.5548964 -1.9012966 0.52425945 -3.5309505 -1.9164401 0.52257025 -3.6278012 -1.9979615 0.53765237 -3.8849401 -2.170851 0.5751766 -3.8430526 -2.1784854 0.57119489 -3.7762661 -2.1713314 0.56371421 -3.7225747 -2.1709459 0.5580433 -3.7219985 -2.2013299 0.5598532 -4.86518 -2.9183185 0.72382551 -4.7810354 -2.907866 0.7144143 -13.950861 -8.6053934 2.0265551 -4.7239504 -2.9531579 0.71139789 -4.6831045 -2.9677362 0.70814019 -4.7332864 -3.0404232 0.71803403 -4.6305289 -3.0146875 0.70584768 -4.4943023 -2.965385 0.68871444 -3.8109963 -2.5480247 0.59146523 -4.4279928 -3.0002611 0.68437082 -3.9209998 -2.6918335 0.61233878 -3.9060388 -2.7169757 0.61258012 -3.8730683 -2.7294507 0.61016697 -3.8425157 -2.7433548 0.60811585 -3.3615761 -2.4310913 0.53849697 -3.3441939 -2.4499111 0.53813499 -3.3179405 -2.4620996 0.5364458 -3.4495444 -2.5927942 0.55876726 -4.3527751 -3.3140783 0.6992116 -4.2781253 -3.2988858 0.69088626 -4.3188186 -3.3727446 0.70029747 -4.1758199 -3.3024764 0.6813544 -4.4281702 -3.5465291 0.72382551 -3.6824772 -2.9863272 0.61052895 -4.5614972 -3.7461734 0.75169724 -3.6577635 -3.0414498 0.61245948 -3.703567 -3.1181972 0.62271529 -4.3973584 -3.7489774 0.73661512 -3.7852347 -3.2672207 0.64202034 -2.5073633 -2.1906981 0.43895525 -2.4886711 -2.201436 0.43811065 -2.5024688 -2.2411783 0.44257495 -3.9788682 -3.6086092 0.68714595 -2.4718535 -2.2690325 0.4420923 -2.4586112 -2.284833 0.44221297 -2.4705653 -2.3243725 0.4465566 -2.424639 -2.3093526 0.4412477 -2.3461306 -2.2621503 0.4303886 -3.5280545 -3.4446292 0.63357437 -2.3407812 -2.3131068 0.43424964 -2.3510985 -2.3520072 0.4384726 -3.632086 -3.6792798 0.66265261 -3.1971745 -3.2785232 0.59086192 -3.1873255 -3.3088057 0.59267175 -4.2827477 -4.5015264 0.78946275 -2.8705294 -3.0539234 0.5436852 -2.8719938 -3.0933094 0.54730487 -2.9005833 -3.1628311 0.55587149 -3.3828092 -3.7347031 0.64672595 -2.0350592 -2.273958 0.40517136 -2.015811 -2.2804499 0.40420613 -1.9900336 -2.2793109 0.40203431 -1.9721227 -2.2869666 0.40131035 -1.9548361 -2.2952442 0.4007071 -3.5304739 -4.1986508 0.70102143 -3.4019308 -4.0964937 0.68147504 -2.6039016 -3.174547 0.53330874 -2.5762539 -3.1804342 0.53174019 -2.5951228 -3.2442551 0.53922087 -2.5942357 -3.2842712 0.54296124 -2.6869423 -3.4449675 0.5652827 -2.6239746 -3.4071107 0.55695742 -2.5916071 -3.4081302 0.55466497 -3.2379375 -4.3132715 0.68980038 -2.3687699 -3.1955919 0.517744 -2.3497036 -3.2108676 0.51786464 -2.6460648 -3.663065 0.58350188 -2.6004937 -3.6468956 0.57867563 -2.5814948 -3.667655 0.57939953 -1.7368686 -2.4994464 0.40420613 -2.2259755 -3.246222 0.51267642 -1.3440335 -1.9852556 0.32565865 -1.3373375 -2.0017221 0.32686523 -1.328306 -2.0148644 0.32758915 -1.3272766 -2.0404572 0.33012295 -1.3158032 -2.0502341 0.33036426 -1.283565 -2.0272274 0.32589996 -1.322073 -2.1167593 0.33760366 -2.3127112 -3.7556455 0.57035029 -1.6926237 -2.7862427 0.43050927 -1.6092111 -2.6858497 0.41482392 -1.3020242 -2.2032778 0.34532568 -1.2749971 -2.1880612 0.34206796 -1.268465 -2.2078969 0.34375715 -1.2558714 -2.2173665 0.34399846 -1.2388577 -2.2189617 0.34315386 -1.2218717 -2.220432 0.34230927 -1.1571578 -2.1336198 0.32927835 -1.6694865 -3.1250041 0.46489641 -1.0398555 -1.974578 0.305509 -1.0245233 -1.9747515 0.3046644 -1.0047154 -1.9659694 0.30261326 -0.99976707 -1.9862883 0.30454376 -1.0443712 -2.1071515 0.32010844 -1.5107099 -3.0968857 0.45307207 -1.0562254 -2.1985688 0.33072624 -0 -0 0 -1.0572007 -2.2716782 0.33881024 -1.4057637 -3.0707378 0.44474676 -1.4471831 -3.2132852 0.46260393 -1.0682431 -2.4105761 0.35473689 -1.0367912 -2.3788569 0.34966934 -1.0815489 -2.5238907 0.36800915 -1.0156062 -2.4106157 0.35220313 -1.0023133 -2.4204712 0.35268575 -0.98557395 -2.4219775 0.35208246 -0.97363919 -2.4353547 0.35304773 -1.3058934 -3.326633 0.46863675 -1.2843866 -3.331804 0.4682748 -1.5345937 -4.0555286 0.56130105 -1.5055362 -4.0537004 0.5598532 -1.1151729 -3.0591893 0.43002665 -0 -0 0 -1.1710782 -3.3396542 0.46441379 -1.1425039 -3.3233051 0.46139738 -1.0714262 -3.1797192 0.4420923 -1.0217407 -3.0947857 0.4303886 -0.97100329 -3.002753 0.41784033 -0.93370563 -2.9490247 0.41023895 -0.78030342 -2.5175211 0.35461625 -0.74930865 -2.4709558 0.34810078 -0.71835166 -2.4222033 0.34134403 -0.71423841 -2.4637544 0.34604964 -0.6969468 -2.4604485 0.34508437 -0.67760873 -2.4493685 0.34315386 -0 -0 0 -0.80883497 -3.0709713 0.42025346 -0.78948349 -3.0739532 0.42001215 -2.0637798 -8.2533464 1.0683002 -2.000422 -8.213769 1.0617847 -0.549236 -2.3132668 0.32324553 -0.53882122 -2.3330381 0.3252967 -0 -0 0 -0.74417675 -3.4152107 0.4591049 -0.48819882 -2.3066235 0.3208324 -0.47722211 -2.3251359 0.32276291 -0.4619807 -2.3231516 0.32215962 -0.44472292 -2.3103442 0.32022911 -0.47383824 -2.546299 0.34906605 -0.46766517 -2.6019225 0.35558149 -0.4873881 -2.8111374 0.38104007 -0.47894153 -2.8669515 0.38755551 -0.46558464 -2.8963008 0.39081323 -1.337751 -8.6759396 1.1012394 -1.3033572 -8.8116474 1.1169249 -1.1570457 -8.1678162 1.0369295 -1.1079717 -8.1826315 1.0378947 -0 -0 0 -0.30277205 -2.456269 0.33506986 -0.28493664 -2.4344161 0.33217412 -0 -0 0 -0 -0 0 -0 -0 0 -0.22048163 -2.3902597 0.32602063 -0.20403388 -2.3707969 0.32348683 -0.1898759 -2.3769522 0.32409012 -0.17521514 -2.3770826 0.32396945 -0.16135685 -2.389008 0.3252967 -0.23876226 -3.9020042 0.50941873 -0.21318798 -3.8736596 0.505799 -0.18989733 -3.88481 0.50700557 -0.11812375 -2.7562397 0.36957768 -0.14285839 -3.9047046 0.50917739 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0.015123528 -2.4956598 0.33760366 --0.00018604747 -2.4887569 0.33675906 --0.015251162 -2.457936 0.33301872 --0.031655706 -2.561028 0.34556702 --0.047087081 -2.5458977 0.34375715 --0.061512176 -2.4979265 0.33796564 --0.076590069 -2.4895644 0.33700037 --0.09138228 -2.4761517 0.33543184 --0.10618545 -2.4666185 0.33434594 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6447259 -3.5311546 0.50772953 --1.6574384 -3.5021563 0.50519574 --1.6784656 -3.4910259 0.50507504 --1.676316 -3.4325001 0.49855962 --1.6792501 -3.3856936 0.49361268 --1.6865884 -3.3487325 0.48999298 --1.695798 -3.3162284 0.48697656 --1.7151988 -3.3039989 0.48673525 --1.7743357 -3.367171 0.49687043 --1.8296268 -3.4209871 0.505799 --1.8865913 -3.4759936 0.51496893 --1.886323 -3.4252288 0.50953937 --1.9092422 -3.4170558 0.51002198 --1.9438864 -3.4294536 0.51340038 --1.995091 -3.4699488 0.52076042 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --5.1757789 -8.3917398 1.2326345 --5.1418962 -8.2234783 1.2130882 --5.1736541 -8.1624298 1.2088652 --5.2413507 -8.1580896 1.2128469 --5.2772226 -8.1041489 1.2097098 --5.2661448 -7.9796562 1.1963168 --5.2200704 -7.8052773 1.1755639 --5.2338867 -7.7229776 1.1682039 --5.2671242 -7.6702609 1.1651875 --5.3044491 -7.6239467 1.1631364 --5.3436923 -7.580709 1.1615678 --5.4414601 -7.6196699 1.1723062 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.4585447 -8.5649128 1.5851932 --9.5582781 -8.5490656 1.5929152 --9.5726089 -8.4567404 1.5867617 --9.6018772 -8.3782673 1.583142 --9.9200754 -8.5492306 1.6259751 --10.502296 -8.9391994 1.7105554 --10.360888 -8.7098017 1.6794261 --9.9054241 -8.2237949 1.5990688 --10.36335 -8.4970407 1.6631374 --10.674534 -8.6431646 1.703678 --10.878564 -8.6983786 1.7272061 --10.918486 -8.6210089 1.7251549 --10.690109 -8.3347511 1.6818392 --10.40043 -8.0068216 1.6295948 --10.453315 -7.945858 1.6301981 --10.663853 -8.0031109 1.6548121 --10.669684 -7.9056182 1.6482966 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.56966 -8.977457 2.3248184 --16.642824 -8.8854351 2.327352 --16.708452 -8.7891569 2.3289206 --6.8321691 -3.5413611 0.96960306 --16.441038 -8.3925667 2.2778828 --6.8591475 -3.449228 0.96743125 --17.111282 -8.4715881 2.3549826 --6.9759154 -3.4013298 0.97756642 --6.9805441 -3.3507323 0.97539461 --7.0270033 -3.3201318 0.97889364 --7.0895524 -3.2966185 0.98456448 --0 -0 0 --0 -0 0 --7.5593343 -3.3471715 1.0391014 --7.0727496 -3.0800374 0.97189558 --7.0887775 -3.0354099 0.9715336 --7.1228237 -2.9984021 0.97358477 --7.551137 -3.124227 1.0275183 --7.4901557 -3.0453188 1.0170212 --7.3187838 -2.9234738 0.99216586 --7.4262285 -2.9136682 1.0038695 --7.1493802 -2.7545969 0.96550077 --7.0965071 -2.6843469 0.95645154 --7.0895772 -2.6321189 0.95343512 --7.0962663 -2.5851722 0.95222855 --7.0456209 -2.5178733 0.94366193 --22.45948 -7.8685021 2.9267743 --22.256659 -7.6444588 2.8945589 --0 -0 0 --28.399431 -9.3659611 3.6689332 --27.728039 -8.9563084 3.575907 --26.41004 -8.3520432 3.4009547 --26.457945 -8.1889563 3.4005928 --28.206484 -8.5407696 3.6163268 --28.138424 -8.3320293 3.601124 --29.314226 -8.4848566 3.743499 --28.674141 -8.1092701 3.6561437 --13.068814 -3.6101706 1.6822011 --13.07826 -3.5265553 1.6806326 --0 -0 0 --0 -0 0 --12.760542 -3.1901612 1.6329732 --12.776982 -3.1110997 1.6326113 --0 -0 0 --13.096663 -3.0191624 1.667843 --12.801085 -2.8684471 1.6287502 --0 -0 0 --0 -0 0 --17.935087 -3.6730568 2.2594225 --17.634985 -3.4990127 2.219485 --17.654173 -3.3903663 2.2192438 --13.512884 -2.5094683 1.7047639 --17.728647 -3.1795986 2.2234669 --18.018776 -3.1176205 2.2568886 --18.107088 -3.0185859 2.2654552 --17.975304 -2.8833802 2.2469947 --13.426523 -2.0695989 1.6854589 --13.476287 -1.992691 1.6900438 --17.939819 -2.5399239 2.2364976 --0 -0 0 --18.876392 -2.4365711 2.3476224 --23.61055 -2.9001913 2.9255676 --19.913568 -2.3223197 2.4710541 --19.881069 -2.1949713 2.4653833 --19.791477 -2.0622485 2.4528351 --23.406876 -2.2936633 2.8928697 --24.81534 -2.2779737 3.0631163 --18.57193 -1.5902905 2.2998424 --18.567484 -1.4752055 2.2981532 --19.936506 -1.4608473 2.4639354 --19.970848 -1.3402183 2.4670725 --23.90547 -1.4567512 2.9452348 --23.979378 -1.3136232 2.953198 --0 -0 0 --22.821383 -0.96951759 2.8105819 --22.792181 -0.82821006 2.8063591 --22.750198 -0.68693852 2.800688 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --49.173691 8.8140945 5.5056729 --49.334682 9.1557369 5.5297327 --49.331268 9.4685822 5.5357203 --49.405827 9.7975845 5.5506349 --49.401264 10.11211 5.5569491 --49.422905 10.432901 5.5664206 --49.487148 10.764058 5.5808997 --49.526875 11.091397 5.5928755 --49.582844 11.42387 5.6069193 --49.610481 11.751259 5.6180234 --49.627266 12.077301 5.6281481 --49.665066 12.409774 5.6408854 --49.748791 12.755508 5.6590662 --49.705158 13.069875 5.6630945 --49.822708 13.42816 5.6856298 --0 0 0 --0 0 0 --49.907993 14.441598 5.7244954 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --35.638706 13.72368 4.216907 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.648773 15.334766 4.1841378 --0 0 0 --0 0 0 --57.558662 26.751484 6.9857183 --57.432983 27.122831 6.9905081 --57.145386 27.417103 6.9759202 --0 0 0 --0 0 0 --0 0 0 --56.904232 29.040356 7.0311155 --56.815884 29.436068 7.0423288 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --21.56723 13.639976 2.8291807 --0 0 0 --20.790556 13.50879 2.7498169 --21.57984 14.210683 2.8642359 --0 0 0 --20.19006 13.653643 2.7037661 --0 0 0 --21.498138 14.925913 2.9007063 --27.757793 19.52528 3.7511744 --0 0 0 --0 0 0 --20.222666 14.788885 2.7782311 --0 0 0 --0 0 0 --0 0 0 --41.104141 31.636026 5.715024 --40.923363 31.89864 5.7169833 --40.637917 32.078926 5.7045727 --0 0 0 --38.202206 30.924664 5.417273 --0 0 0 --36.947075 30.666742 5.293056 --21.728539 18.261623 3.142935 --0 0 0 --22.451698 19.344439 3.2801075 --37.653824 32.846966 5.5067616 --37.318203 32.959599 5.4872746 --36.681026 32.799675 5.4234786 --36.532875 33.072826 5.4314256 --0 0 0 --15.677733 14.547215 2.37673 --15.359224 14.428074 2.3423281 --14.681884 13.962385 2.2533839 --15.27411 14.705094 2.3564808 --15.077523 14.69516 2.3402596 --0 0 0 --14.6513 14.634612 2.3023739 --14.557734 14.720701 2.3018296 --14.069798 14.403018 2.2395577 --14.230346 14.747307 2.2788587 --13.721211 14.395426 2.21245 --13.665334 14.514086 2.2176754 --31.642708 34.023155 5.1230059 --14.124402 15.375395 2.3209903 --14.037143 15.469869 2.3221877 --15.778446 17.604689 2.6235313 --13.355353 15.086461 2.241082 --13.24094 15.143429 2.2374892 --13.164665 15.24395 2.24032 --0 0 0 --17.006336 20.187796 2.9253101 --27.300606 32.814018 4.7093115 --16.736494 20.369625 2.9217176 --0 0 0 --15.059933 18.794724 2.672086 --14.960365 18.907043 2.6749165 --15.035639 19.243654 2.7089918 --14.923351 19.34342 2.7100804 --24.417732 32.054237 4.4474869 --24.693823 32.832649 4.5337095 --24.49605 32.989136 4.5344715 --24.365459 33.237427 4.5478621 --24.138914 33.355705 4.543725 --0 0 0 --22.338001 31.678562 4.279614 --23.637268 33.961628 4.5660429 --23.450953 34.138802 4.5703974 --23.304073 34.375027 4.5826998 --0 0 0 --9.4657326 14.338724 1.9161143 --9.4160957 14.455672 1.9238439 --9.2772369 14.435406 1.9137193 --9.2390585 14.571813 1.9240617 --19.876472 31.777735 4.1393938 --8.6529293 14.025068 1.8392543 --9.1630621 15.057845 1.9648867 --8.4730072 14.118264 1.8377302 --9.0464478 15.285498 1.9796926 --8.9900656 15.405108 1.9878576 --8.3891878 14.580286 1.8767045 --8.2608185 14.563181 1.868104 --8.7874632 15.715472 2.0063651 --17.765429 32.233513 4.0652552 --8.6357021 15.898993 2.0159452 --7.7775559 14.531032 1.8394721 --17.079142 32.38448 4.0441351 --7.6994829 14.819441 1.8634228 --9.6863127 18.926279 2.3629041 --8.7842579 17.42664 2.1717339 --7.5429749 15.195494 1.8923813 --9.6108818 19.663111 2.4313812 --9.8348885 20.438301 2.5184748 --9.29737 19.628645 2.4130917 --7.7293577 16.580614 2.0379364 --7.6797009 16.741571 2.0516536 --17.059626 37.798691 4.5761676 --0 0 0 --0 0 0 --16.056255 37.396572 4.4915781 --14.200938 33.643406 4.033793 --0 0 0 --13.796021 33.837234 4.0364056 --13.564851 33.863113 4.0295467 --13.385934 34.019711 4.0382562 --0 0 0 --12.974152 34.199074 4.0403247 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.664577 14.695354 1.7229844 --4.4061985 14.182604 1.6609304 --4.2404523 13.950678 1.6313186 --0 0 0 --4.0556202 13.955846 1.6260929 --4.2881856 15.101185 1.7536849 --3.8941514 14.040963 1.6302299 --3.7980516 14.028132 1.6260929 --3.724601 14.099227 1.6315362 --3.6558766 14.191123 1.6393747 --3.6801007 14.656785 1.6894535 --0 0 0 --9.303525 39.074623 4.4334431 --3.2856467 14.186506 1.62925 --3.2371895 14.37805 1.6485195 --3.0813582 14.088834 1.6138998 --3.0398595 14.319454 1.6376328 --2.9918361 14.53159 1.6592973 --2.9887812 14.981528 1.7075254 --2.8687105 14.854158 1.6913042 --3.6908813 19.761164 2.236074 --3.4361041 19.043877 2.1537707 --3.3203819 19.071457 2.1545327 --0 0 0 --3.1623304 19.582792 2.2068977 --4.935914 31.8029 3.5591333 --4.7305779 31.764748 3.5516214 --3.940701 27.623581 3.0903525 --4.3322234 31.760326 3.5449805 --4.1397023 31.805038 3.547049 --4.0102501 32.360584 3.6056194 --3.8610027 32.804157 3.6518877 --3.5970829 32.266083 3.5900514 --3.432966 32.609829 3.6255419 --0 0 0 --2.9891362 32.182316 3.5741568 --2.8034632 32.33672 3.5891805 --2.604996 32.353313 3.5891805 --2.4059148 32.361748 3.5884185 --0 0 0 --2.1559336 34.764042 3.8490458 --1.9382043 34.698208 3.8404453 --1.7269912 34.744198 3.8442554 --1.5126907 34.729309 3.8415339 --1.3197895 35.278328 3.9007576 --1.1254904 35.995171 3.9784884 --0.90648061 36.075928 3.9866533 --0.68901455 36.286545 4.0091887 --0.43817535 34.099369 3.7692463 --0.22248633 33.142174 3.6641898 --0.019068202 33.045498 3.6535208 -0.18345843 33.002251 3.6488395 -0.38596457 33.001495 3.6489484 -0.5896374 33.065098 3.6562424 -0.79403377 33.124458 3.6632099 -0.99101609 32.911301 3.6404567 -1.19949 33.0854 3.6602705 -1.4077799 33.202557 3.6739876 -0 0 0 -2.2460692 41.062817 4.5382819 -2.5032361 41.134586 4.5477533 -2.7641592 41.246399 4.5617971 -0 0 0 -2.1728153 27.379786 3.0424509 -2.3638132 27.635338 3.0720627 -0 0 0 -3.3655202 34.374214 3.8170388 -2.0785728 19.964161 2.2326992 -2.2037561 19.975733 2.2354209 -3.8043902 32.647648 3.6341424 -2.5269549 20.584562 2.3057489 -4.1125541 31.883734 3.5552139 -4.3011851 31.806675 3.5495529 -4.5312161 32.026733 3.5768785 -4.7073045 31.860653 3.5616372 -0 0 0 -5.069294 31.621851 3.5418234 -5.186286 31.128315 3.4905469 -2.4631982 14.243241 1.6174924 -5.5726233 31.088747 3.4934864 -2.6503141 14.27938 1.6250043 -2.8862779 15.03603 1.7112268 -6.2804308 31.669306 3.5703466 -3.008981 14.698554 1.677587 -3.0387526 14.393863 1.6455802 -0 0 0 -8.6171751 38.478222 4.3528814 -8.8408365 38.371346 4.3468938 -3.5400052 14.943693 1.7163436 -9.1848259 37.741295 4.2884326 -3.8744485 15.504775 1.784712 -3.482909 13.582811 1.5701354 -3.5328183 13.434283 1.5557649 -10.146045 37.644653 4.304327 -10.343237 37.459995 4.2905006 -10.789514 38.162033 4.3777032 -4.0946469 14.149461 1.6476486 -11.392443 38.484276 4.4299593 -4.3742456 14.449223 1.6878204 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -8.0682592 18.851473 2.2801652 -0 0 0 -8.3170919 18.791948 2.2850642 -0 0 0 -24.775953 54.175301 6.5586333 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -33.505817 50.881725 6.7065835 -0 0 0 -0 0 0 -33.736034 49.23381 6.5708265 -34.077744 49.083858 6.5785561 -0 0 0 -0 0 0 -14.9857 20.757931 2.8383255 -14.545374 19.889671 2.7330513 -29.440413 39.744041 5.4512396 -29.758295 39.662045 5.464848 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -31.902716 38.919674 5.5458446 -32.140285 38.722424 5.5457358 -0 0 0 -0 0 0 -0 0 0 -36.360596 41.681709 6.0921388 -0 0 0 -0 0 0 -18.665415 20.617914 3.0803366 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -18.986423 19.721273 3.0325441 -0 0 0 -0 0 0 -38.97448 39.019859 6.0743933 -39.519913 39.083344 6.1216416 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -43.907558 37.919525 6.3881478 -44.05999 37.581665 6.3767166 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -23.905628 15.993129 3.1844134 -24.02405 15.859838 3.187135 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -23.440912 14.462457 3.0509427 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -25.851875 14.455627 3.2782567 -24.625511 13.572187 3.1138678 -0 0 0 -28.17663 15.081618 3.5345292 -28.186867 14.865319 3.5244048 -28.177872 14.640298 3.5121026 -28.183992 14.424554 3.5018692 -28.147699 14.188704 3.4866278 -28.183477 13.990531 3.4804225 -28.325054 13.844839 3.4872811 -28.738207 13.828973 3.5272353 -28.930323 13.703444 3.5402992 -30.741903 14.331277 3.7491059 -30.824741 14.140306 3.7485616 -0 0 0 -30.916901 13.725881 3.7390902 -0 0 0 -0 0 0 -31.029688 13.09765 3.7230866 -31.513462 13.074626 3.7709882 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -32.70829 -0.58327883 3.6171591 -32.466583 -0.77827156 3.59114 -32.109459 -0.96688098 3.5526011 -33.016853 -1.1970057 3.6527586 -0 -0 0 -35.59211 -1.7279104 3.93701 -0 -0 0 -18.598263 -1.1320111 2.0750599 -18.599892 -1.2467047 2.0760398 -25.432592 -1.8613571 2.8272212 -25.434566 -2.0184743 2.8287454 -24.81159 -2.1223223 2.7616832 -25.036667 -2.2964013 2.7879202 -0 -0 0 -27.477398 -2.8606648 3.0599785 -27.436604 -3.0267024 3.0574746 -18.611103 -2.1689007 2.0864909 -27.405289 -3.3641326 3.0583456 -19.366869 -2.4982116 2.1730402 -19.372849 -2.6199279 2.1754353 -25.299345 -3.579494 2.8327734 -18.38044 -2.7158179 2.0692899 -27.366814 -4.2151546 3.066946 -18.287819 -2.9318869 2.0628669 -20.294304 -3.3813727 2.287677 -19.009592 -3.2873466 2.1472387 -18.983192 -3.4028733 2.1465855 -19.108561 -3.5464942 2.1629155 -20.102705 -3.8587275 2.2762458 -18.208466 -3.611145 2.0674393 -18.194729 -3.7245963 2.068419 -18.193903 -3.840889 2.0709231 -18.192335 -3.9573116 2.073427 -37.428646 -8.3821344 4.2350874 -37.12756 -8.5542784 4.207109 -37.866585 -8.969573 4.2962708 -0 -0 0 -37.647579 -9.407073 4.2842956 -31.500662 -8.076869 3.5959301 -31.29669 -8.2295561 3.5785115 -0 -0 0 -0 -0 0 -7.9643154 -2.2520697 0.94088483 -7.9551215 -2.3022768 0.9414292 -0 -0 0 -25.779713 -7.8040252 2.9843161 -32.002747 -9.9025221 3.7032728 -0 -0 0 -7.9687304 -2.5736232 0.95155382 -7.9839435 -2.6327417 0.95514643 -0 -0 0 -24.935337 -8.5623159 2.9218266 -26.873146 -9.4124146 3.152842 -0 -0 0 -0 -0 0 -20.259144 -7.5173793 2.4010074 -25.044046 -9.4679956 2.9666796 -20.149599 -7.7593517 2.3991566 -19.664797 -7.711555 2.3477714 -19.753744 -7.8866186 2.3638837 -0 -0 0 -19.547079 -8.0836086 2.3510375 -19.444885 -8.1814222 2.3448322 -20.009361 -8.563798 2.4180994 -0 -0 0 -19.555521 -8.6550217 2.3765123 -19.773098 -8.896801 2.4090636 -3.69098 -1.6884003 0.47896269 -19.644402 -9.1303988 2.4068861 -19.588009 -9.250762 2.4068861 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -5.1218171 -2.6539986 0.66621375 -5.1071959 -2.686301 0.66643149 -5.0669394 -2.7049494 0.66349202 -5.0790906 -2.7516127 0.66708463 -3.4409103 -1.8916698 0.46448341 -3.9275801 -2.190644 0.52697301 -3.9850113 -2.2548378 0.53590006 -3.7564168 -2.1560519 0.50879222 -4.8943543 -2.8491132 0.65467381 -4.8690758 -2.8745432 0.65369403 -4.7941999 -2.8701587 0.64639997 -4.7391081 -2.8768275 0.64160979 -4.6875033 -2.8850129 0.63725513 -4.6604357 -2.907933 0.63605762 -4.6618285 -2.9486945 0.63856155 -3.8486221 -2.4675987 0.53513801 -3.9401045 -2.5604908 0.54907298 -3.8354857 -2.5261221 0.53742421 -3.7934542 -2.5319517 0.53394049 -3.8824253 -2.6258996 0.54776657 -3.8006384 -2.6047213 0.5390572 -3.7870343 -2.6296933 0.53938383 -3.1756659 -2.2342446 0.45969325 -4.5203018 -3.2217011 0.64237189 -4.3126545 -3.1138074 0.61700588 -3.8168433 -2.791666 0.55233896 -3.7525139 -2.7801235 0.54591584 -4.2084908 -3.1580603 0.61069161 -4.1914086 -3.1856279 0.61101824 -4.1899014 -3.2252307 0.61352217 -4.174737 -3.2545455 0.61417538 -4.2350554 -3.3435388 0.62538862 -4.246295 -3.3949099 0.62985218 -4.0044093 -3.2420247 0.59871626 -3.9329326 -3.224313 0.5914222 -3.8480575 -3.1944199 0.58216852 -3.6602044 -3.0766289 0.55810893 -3.5693371 -3.0378292 0.54776657 -3.6131368 -3.1135275 0.55680251 -3.3699851 -2.9402554 0.52425134 -2.542733 -2.2462466 0.40602189 -2.5363126 -2.2684321 0.40711057 -2.5186613 -2.2806163 0.40656623 -4.01792 -3.6829698 0.63137633 -2.5072448 -2.3269033 0.40907016 -3.5123417 -3.2998269 0.56224585 -3.5107572 -3.3391266 0.56507641 -2.4331958 -2.343014 0.4043889 -2.298465 -2.2406466 0.38599038 -2.3059018 -2.2756522 0.38925639 -2.3305779 -2.3283951 0.39524406 -2.3043642 -2.330636 0.39339334 -2.2705703 -2.3248215 0.39034507 -2.8326366 -2.9359992 0.48124892 -2.9304798 -3.0749266 0.49964741 -2.9108758 -3.0921259 0.49953854 -2.937206 -3.1586981 0.5068326 -2.9735873 -3.2374203 0.51586854 -2.0578773 -2.2684226 0.36987808 -2.0399389 -2.2765653 0.36922488 -2.0213194 -2.2838295 0.36846283 -2.0000703 -2.2879574 0.36726528 -1.9742987 -2.2866447 0.36530569 -1.9370072 -2.2714889 0.36138648 -2.8568132 -3.3917646 0.52011436 -2.8531139 -3.429862 0.52305377 -1.8399649 -2.2399383 0.35191506 -1.8499875 -2.2805181 0.35605201 -3.8710866 -4.8315692 0.71248215 -3.2917712 -4.1606693 0.61548173 -1.837687 -2.3525658 0.36138648 -3.2277141 -4.1842232 0.61319554 -2.5845418 -3.3934283 0.501607 -2.7459135 -3.651525 0.53481138 -2.7199006 -3.6635165 0.53415823 -1.8369473 -2.5064392 0.37477711 -1.8471763 -2.5530963 0.37956724 -1.4015644 -1.9625921 0.29857028 -2.4028928 -3.4082694 0.4911558 -2.4131677 -3.467823 0.49714348 -2.3957841 -3.4883001 0.49790552 -2.7904644 -4.1167397 0.57912022 -2.3494804 -3.5124803 0.49725235 -1.606596 -2.4342756 0.35387465 -1.3279381 -2.0392871 0.30096537 -1.3218497 -2.0574317 0.30227175 -1.3001513 -2.0512319 0.30042103 -1.3160069 -2.1046803 0.30629984 -2.6361797 -4.2733684 0.58434582 -2.6099093 -4.289463 0.58434582 -1.7297647 -2.8828588 0.40264702 -2.2127838 -3.7394602 0.51031637 -0 -0 0 -1.2232703 -2.1267064 0.3031427 -0 -0 0 -1.1800995 -2.1111908 0.29933235 -1.1464906 -2.0809572 0.29465109 -1.1374962 -2.0949407 0.295522 -1.118522 -2.0904877 0.29410675 -0 -0 0 -1.06941 -2.0590694 0.28855455 -1.0431687 -2.0390458 0.28528854 -1.0342174 -2.0525093 0.28615946 -1.0631526 -2.1425123 0.29639295 -1.5402156 -3.1519198 0.41865045 -1.0372117 -2.1562932 0.29650182 -1.5056762 -3.1795669 0.41973913 -1.0824964 -2.3229232 0.31511804 -1.0806575 -2.3566272 0.31838405 -1.457528 -3.2302999 0.42256966 -1.0778756 -2.428766 0.3254604 -0 -0 0 -1.0503428 -2.4472909 0.32611361 -1.3546189 -3.2101481 0.41603765 -1.3448009 -3.2422717 0.41886818 -1.3361408 -3.2780766 0.42213419 -1.3237643 -3.3055916 0.42442039 -1.299089 -3.3025515 0.423114 -1.278442 -3.3095334 0.42300513 -1.5218604 -4.0125198 0.50443757 -1.4857638 -3.9910405 0.50084496 -0 -0 0 -1.1468567 -3.2004843 0.40678397 -1.1341208 -3.2271545 0.40907016 -1.1259595 -3.2678852 0.41298938 -0 -0 0 -1.0317321 -3.1181962 0.39415541 -0.97364455 -3.0043771 0.38032931 -0.9181971 -2.8937566 0.36693868 -0.8644402 -2.7835226 0.35365692 -0.80484396 -2.6489654 0.33765349 -0.94607788 -3.1836321 0.39818347 -0.74786294 -2.5746412 0.3280732 -0.89091629 -3.1385839 0.39176032 -0.83178771 -3.0003076 0.37543032 -2.2981727 -8.4889183 0.99760449 -0.66693252 -2.5259049 0.32056141 -0.78683758 -3.0555398 0.38000271 -0.77848482 -3.1017675 0.384684 -2.0827749 -8.5166903 0.99466509 -0.58609223 -2.4631827 0.31174317 -0.56782699 -2.4531748 0.31021905 -0.9639551 -4.2826977 0.5152154 -0.73756319 -3.3737595 0.41266277 -0.72283548 -3.4064207 0.41581991 -0.57521528 -2.7954578 0.34701604 -0.55785733 -2.7979598 0.34690717 -0.54482633 -2.8228025 0.34930226 -0.81661934 -4.3739057 0.52174741 -1.4867004 -8.2409906 0.95155382 -0.51085085 -2.9361608 0.36084214 -0.49414137 -2.9470828 0.36171308 -1.3788197 -8.539772 0.9818188 -1.2812643 -8.2573128 0.9495942 -0 -0 0 -0 -0 0 -1.1395372 -8.3563223 0.95808583 -1.0851628 -8.3394995 0.95547301 -0 -0 0 -0 -0 0 -0.26870921 -2.4136572 0.30042103 -0.25555959 -2.431078 0.30216289 -0 -0 0 -0.35075349 -3.7801521 0.45022184 -0.20484301 -2.3670366 0.29465109 -0.19215053 -2.3910384 0.29715502 -0.1788763 -2.4110076 0.29922348 -0.16272672 -2.3922246 0.29704615 -0.15050687 -2.4328642 0.30140084 -0.13635258 -2.4476368 0.30292496 -0.12883446 -2.5993376 0.31947273 -0.11058958 -2.5474441 0.31370279 -0.096109055 -2.5788689 0.31707767 -0.079817437 -2.5645065 0.31544465 -0 -0 0 -0.050078202 -2.6567297 0.3254604 -0.031807121 -2.5039148 0.3086949 -0 -0 0 -0 -0 0 --0.014061082 -2.4633205 0.30423138 --0.029140629 -2.4602058 0.30390477 --0.043226041 -2.4033284 0.29769936 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6550375 -3.5036924 0.45882234 --1.6730647 -3.4863014 0.4579514 --1.6778764 -3.4420135 0.45381445 --1.6725072 -3.3781996 0.44728243 --1.6815971 -3.3447809 0.4444519 --1.6948589 -3.3202331 0.44271004 --1.7106267 -3.3009448 0.44162136 --1.7535205 -3.3334973 0.44695583 --1.8464936 -3.4586031 0.4638302 --1.8686273 -3.4489563 0.46404794 --1.886403 -3.4313276 0.46328586 --1.9117789 -3.4275019 0.46426567 --1.9401156 -3.4286852 0.46589866 --4.8411069 -8.4354916 1.0996127 --0 -0 0 --4.9841776 -8.4430761 1.1082132 --0 -0 0 --5.0889592 -8.3838263 1.1085398 --0 -0 0 --5.13095 -8.2237558 1.0960201 --5.1722813 -8.1778355 1.0941694 --5.1762257 -8.0739746 1.0848068 --0 -0 0 --0 -0 0 --5.2312651 -7.838418 1.0665172 --5.2725801 -7.7962909 1.0652108 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.6962147 -8.7980089 1.4683448 --9.7411327 -8.7303867 1.4670385 --9.8548059 -8.7238245 1.4758567 --10.066046 -8.8012581 1.4988276 --10.314712 -8.907609 1.5270241 --9.9857302 -8.5170832 1.4718286 --0 -0 0 --9.8174562 -8.1675653 1.433072 --10.009475 -8.2239218 1.4532124 --10.589272 -8.5920258 1.5278951 --10.533966 -8.4404869 1.5127625 --10.56607 -8.3602724 1.5100409 --10.347713 -8.0847425 1.4725907 --10.406569 -8.0283842 1.4738971 --0 -0 0 --10.412947 -7.8313608 1.4613774 --11.048991 -8.2040882 1.5416123 --0 -0 0 --10.705117 -7.7467651 1.4816266 --0 -0 0 --10.815624 -7.6262708 1.483804 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.608984 -8.8898191 2.0975955 --16.653545 -8.7826395 2.0963979 --16.699183 -8.6761656 2.095418 --16.449472 -8.4186459 2.0581856 --16.325064 -8.2289581 2.0366299 --16.528393 -8.2046595 2.0553551 --6.96982 -3.4064045 0.88405633 --6.9825282 -3.359695 0.88307655 --6.9850445 -3.3082767 0.88089919 --7.0989118 -3.3090374 0.89222133 --7.1516089 -3.2803385 0.89614058 --7.1951594 -3.2470276 0.89897108 --7.0759406 -3.1411026 0.88231444 --7.0868821 -3.0940461 0.88133466 --7.17698 -3.0810943 0.8898263 --7.4540086 -3.1460137 0.92052674 --7.4373631 -3.0853605 0.91628093 --0 -0 0 --0 -0 0 --0 -0 0 --7.629528 -2.947772 0.9302159 --21.321993 -8.0887947 2.5319743 --22.824463 -8.4989719 2.7018065 --21.939705 -8.0165663 2.592613 --22.295406 -7.9918199 2.6283214 --22.416235 -7.8802538 2.6367042 --7.014853 -2.41747 0.84704161 --22.50654 -7.6029878 2.6361599 --22.559374 -7.4669337 2.6369219 --0 -0 0 --0 -0 0 --26.728428 -8.3042564 3.099715 --28.244497 -8.5856304 3.2674789 --28.297598 -8.4124479 3.2675877 --0 -0 0 --28.622461 -8.1281052 3.2930624 --29.21492 -8.1029749 3.35479 --13.031208 -3.5281098 1.5129802 --0 -0 0 --33.868992 -8.7258024 3.8648314 --12.775781 -3.2077558 1.4770542 --12.801016 -3.1307218 1.4777074 --12.83449 -3.0555711 1.4793404 --12.914976 -2.9911189 1.4863079 --0 -0 0 --18.333494 -4.0098276 2.089757 --34.431213 -7.3099308 3.8893263 --0 -0 0 --0 -0 0 --25.295584 -4.8854961 2.855962 --17.893822 -3.3420711 2.0280294 --17.985403 -3.2451003 2.0359766 --18.167543 -3.1629896 2.0540485 --18.122887 -3.0407629 2.0469723 --19.576904 -3.1613796 2.2062445 --19.528154 -3.030678 2.1987326 --17.971279 -2.6762056 2.024328 --18.832695 -2.6864908 2.1178446 --18.833067 -2.5687351 2.1161027 --23.69437 -3.083926 2.6512923 --23.818403 -2.9515643 2.662941 --19.646217 -2.3121715 2.2009101 --19.697577 -2.1957667 2.2050469 --23.499952 -2.4738216 2.6223338 --18.485535 -1.8312622 2.0688546 --18.616188 -1.7289281 2.0820274 --19.936666 -1.7282758 2.2260582 --19.937979 -1.605196 2.2250786 --19.986115 -1.4857033 2.2293243 --23.639547 -1.6115731 2.62941 --23.014015 -1.4271072 2.5597353 --22.887356 -1.2783275 2.5449293 --22.882856 -1.137277 2.543623 --22.843719 -0.99485862 2.538615 --0 -0 0 --22.813471 -0.71318197 2.5341516 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --49.16497 8.8685169 4.8715057 --49.35228 9.2153358 4.8954048 --49.32901 9.5245867 4.8987775 --49.394581 9.8520088 4.9111123 --49.466763 10.182399 4.9243145 --49.421852 10.489655 4.9261456 --49.50922 10.826091 4.9412751 --49.536053 11.150875 4.950623 --49.625729 11.491442 4.9664268 --49.627872 11.813242 4.9737511 --49.66951 12.145668 4.9852185 --49.750443 12.48947 5.0008302 --49.766369 12.818583 5.0101776 --49.730083 13.135141 5.014514 --49.74847 13.467083 5.0245361 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --34.923733 14.486938 3.695251 --0 0 0 --0 0 0 --34.66758 15.134483 3.6969855 --0 0 0 --57.826153 26.094934 6.1768923 --35.176559 16.133978 3.7814994 --0 0 0 --56.627186 26.819172 6.100955 --56.485779 27.177778 6.1035566 --56.537048 27.630938 6.1271667 --0 0 0 --56.269264 28.360733 6.1353579 --56.171276 28.744911 6.1437416 --55.995609 29.089949 6.1439347 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --21.886375 14.254247 2.5634215 --21.158049 13.965493 2.4891224 --21.940622 14.676162 2.5903077 --21.872404 14.82559 2.5929096 --20.085985 13.795231 2.3938155 --21.743561 15.130976 2.5993662 --19.964806 14.075665 2.399694 --19.902361 14.21526 2.402585 --20.117151 14.555927 2.4387226 --20.399944 14.952129 2.4834368 --20.731363 15.391502 2.5345113 --0 0 0 --0 0 0 --0 0 0 --39.839108 31.124235 4.9293256 --0 0 0 --0 0 0 --0 0 0 --39.382446 32.354786 4.9693179 --36.927437 30.719221 4.6852283 --0 0 0 --35.395061 30.186991 4.538558 --23.653843 20.42491 3.0603857 --22.425817 19.60593 2.9186299 --36.930668 32.689892 4.8097343 --21.056126 18.869253 2.7720559 --36.542213 33.154671 4.811758 --0 0 0 --0 0 0 --0 0 0 --15.276191 14.558417 2.0777321 --15.188724 14.65395 2.078021 --14.453432 14.116734 1.9907128 --32.069229 31.711004 4.4011388 --0 0 0 --14.223998 14.413682 1.995242 --14.077626 14.441527 1.9872435 --13.975633 14.51401 1.9854126 --29.834373 31.368567 4.2259436 --29.701309 31.614876 4.2344241 --14.273466 15.380214 2.0661681 --14.081979 15.361844 2.0522912 --0 0 0 --13.483031 15.07571 1.9928328 --15.726168 17.802759 2.3344536 --27.255968 31.240601 4.0486283 --0 0 0 --0 0 0 --27.43457 32.639156 4.1627269 --0 0 0 --15.320852 18.687443 2.374253 --16.569324 20.465256 2.584044 --0 0 0 --0 0 0 --0 0 0 --24.663654 32.040752 3.9493706 --0 0 0 --23.329515 31.089464 3.7978816 --23.014484 31.064871 3.777741 --23.03849 31.499548 3.8130114 --22.802248 31.581406 3.8059766 --22.582043 31.684248 3.80164 --0 0 0 --23.901943 34.422379 4.0919938 --23.752174 34.658707 4.1025939 --0 0 0 --23.323412 34.945091 4.1023049 --21.951807 33.331055 3.8986814 --0 0 0 --9.2569675 14.436951 1.6950589 --9.212369 14.563299 1.7030574 --0 0 0 --0 0 0 --8.5734663 14.122035 1.634155 --8.4902325 14.180353 1.6348296 --19.084608 32.326332 3.6691356 --8.4537792 14.520896 1.6614269 --8.8337011 15.390021 1.7526864 --8.7704716 15.499377 1.7588539 --8.7610149 15.706766 1.7759109 --8.6956406 15.816923 1.7821747 --7.9275703 14.631601 1.6458155 --17.453516 32.693626 3.6227829 --17.230806 32.758698 3.6182537 --7.7530689 14.960632 1.6660526 --7.6733437 15.031859 1.6686544 --7.5832005 15.083106 1.6691363 --9.4978809 19.184553 2.1072204 --9.591054 19.67552 2.153862 --9.4270878 19.64426 2.1442251 --7.7140465 16.33028 1.7832347 --16.076323 34.583755 3.727052 --0 0 0 --17.820328 39.60006 4.2389531 --0 0 0 --16.290606 37.421021 3.9860864 --0 0 0 --0 0 0 --8.4513168 20.431736 2.1753519 --8.3261652 20.484129 2.1754482 --13.250509 33.183208 3.4940367 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --11.750396 37.966431 3.8824918 --4.3772373 14.454158 1.4968323 --4.3031592 14.530373 1.5018433 --4.0744634 14.074622 1.4532744 --3.9376521 13.921208 1.4353501 --3.8807735 14.048727 1.4457577 --3.7983849 14.08669 1.4472033 --3.5594802 13.530237 1.3891903 --3.6408098 14.192983 1.4532744 --3.6535623 14.614833 1.4931703 --3.7671983 15.47256 1.5764313 --3.644655 15.379159 1.5648673 --3.2949762 14.293576 1.4548162 --3.2100387 14.326152 1.456069 --3.2727253 15.038067 1.5246823 --3.1082206 14.716035 1.4908575 --2.9196448 14.255071 1.443445 --3.8652444 19.481417 1.9575624 --3.7627125 19.593719 1.9663318 --5.0660415 27.285955 2.7215595 --3.5005553 19.518892 1.9545752 --5.5263901 31.94595 3.1735203 --5.3139086 31.881077 3.1638837 --4.3977213 27.419754 2.723294 --4.5240064 29.358614 2.9106314 --4.7148318 31.896685 3.1563671 --4.1746869 29.491749 2.9184372 --4.2970395 31.7598 3.1375756 --0 0 0 --3.9916432 32.499714 3.2048397 --3.4792821 29.839401 2.9432034 --3.5998354 32.612534 3.2112963 --3.4004858 32.64193 3.2120671 --3.2155609 32.819687 3.2273896 --3.0127585 32.823929 3.225944 --0 0 0 --2.8344634 35.689247 3.5008788 --2.6625221 36.349228 3.5633247 --2.3870988 35.58429 3.4875803 --0 0 0 --1.9510067 35.624821 3.4889293 --1.6940806 34.84774 3.4125104 --1.4914089 35.12101 3.4380476 --1.2869631 35.434868 3.4676323 --1.0708641 35.48687 3.4719687 --0.86189002 35.858952 3.5074317 --0.60486859 33.793579 3.3069885 --0.40331617 34.292301 3.3549793 --0.18507691 32.895691 3.2195837 -0.016831543 33.007687 3.230377 -0.21920298 32.983074 3.2280641 -0.42148989 32.97414 3.2273896 -0.62354338 32.957001 3.2260404 -0 0 0 -1.0332433 33.116989 3.2425191 -0 0 0 -1.4513342 33.372295 3.2687309 -1.664421 33.530766 3.285017 -1.8636394 33.403648 3.273742 -2.5202339 40.678463 3.9805934 -1.8829477 27.648407 2.7177048 -0 0 0 -0 0 0 -0 0 0 -3.1854582 34.320351 3.3717473 -3.3933351 34.273415 3.3691452 -2.1013374 19.977892 1.9795341 -3.6843455 33.068836 3.2561069 -3.7922683 32.238968 3.1774714 -3.9911129 32.223984 3.1783388 -4.2125216 32.381489 3.1961665 -4.4326501 32.512825 3.2115853 -4.4958773 31.530188 3.1182058 -4.6842747 31.468534 3.1149292 -4.882463 31.472643 3.1182058 -5.078815 31.462727 3.1202295 -5.279182 31.475145 3.1245661 -5.4349976 31.22839 3.1035581 -2.5813613 14.315136 1.4429631 -2.6724377 14.316639 1.4446977 -2.8613875 14.8238 1.4963504 -6.2497854 31.336464 3.1283243 -3.0061541 14.608189 1.4786189 -7.0709863 33.316681 3.3321404 -7.4590092 34.112793 3.4154015 -3.4111657 15.157281 1.5388482 -3.543179 15.30479 1.555616 -3.63218 15.262427 1.5535923 -3.6325998 14.858913 1.5156238 -3.8431952 15.312279 1.5631326 -3.5082722 13.62379 1.3967069 -3.543247 13.4182 1.3783009 -4.1124282 15.194749 1.5586997 -3.9454415 14.231185 1.464453 -4.2297974 14.900893 1.5343189 -4.2431016 14.606076 1.5072398 -4.349659 14.637012 1.5130218 -4.4451771 14.629093 1.5149492 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.9138594 20.485882 2.1608968 -0 0 0 -0 0 0 -0 0 0 -7.8688173 18.970795 2.023092 -7.9676547 18.88089 2.0187554 -8.114768 18.904816 2.0264649 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.144136 31.902866 3.6368525 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -32.686779 50.865173 5.8884659 -32.840183 50.420952 5.8604231 -33.146748 50.215179 5.8600378 -32.371719 48.392654 5.6715441 -0 0 0 -33.851849 49.285599 5.8235145 -0 0 0 -33.586292 47.635696 5.6777115 -14.88233 20.836212 2.513696 -14.663877 20.266329 2.4565504 -14.579053 19.890987 2.4223402 -0 0 0 -29.889103 39.744995 4.8493414 -14.563346 19.12122 2.3617253 -30.341755 39.332661 4.8441377 -30.548206 39.101826 4.8387408 -0 0 0 -30.711447 38.331741 4.7900758 -30.882101 38.06374 4.7802463 -31.160568 37.928905 4.7871847 -0 0 0 -0 0 0 -0 0 0 -36.082199 41.784988 5.379745 -36.391632 41.624252 5.3876472 -36.835693 41.614071 5.4153042 -37.126873 41.428036 5.4206042 -37.474678 41.303387 5.4341922 -0 0 0 -0 0 0 -38.444878 40.836334 5.4647403 -0 0 0 -19.043331 19.737783 2.6900475 -39.228279 40.160931 5.4700408 -38.650219 39.086468 5.356617 -38.802704 38.762054 5.3447638 -19.230791 18.977163 2.6504407 -0 0 0 -39.644413 38.171043 5.3628807 -0 0 0 -0 0 0 -44.073734 40.899242 5.8559904 -0 0 0 -44.370876 40.172939 5.8296819 -43.519932 38.919289 5.6872516 -43.423702 38.356323 5.6440792 -43.664986 38.095047 5.6449466 -44.191986 38.0798 5.6825299 -44.292156 37.695034 5.6656656 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -18.469414 14.582032 2.3129637 -0 0 0 -0 0 0 -25.233669 19.178741 3.1032689 -0 0 0 -25.483118 18.87949 3.1051962 -0 0 0 -0 0 0 -25.809288 18.3951 3.1031725 -0 0 0 -26.876835 18.66284 3.2026231 -0 0 0 -0 0 0 -0 0 0 -24.130493 15.892711 2.8320923 -24.19417 15.722656 2.8282378 -0 0 0 -0 0 0 -0 0 0 -24.036156 14.79394 2.7672374 -23.756351 14.421511 2.7253177 -24.105722 14.431914 2.754806 -23.840681 14.075263 2.7151029 -24.299934 14.146029 2.7569261 -24.106571 13.83614 2.7257032 -25.754696 14.572652 2.8996456 -0 0 0 -0 0 0 -0 0 0 -28.178577 15.043337 3.1272643 -28.182257 14.82382 3.1176276 -28.195797 14.61078 3.1092436 -28.179417 14.383653 3.0977759 -28.178211 14.165773 3.0881393 -28.184317 13.952868 3.0794663 -28.395557 13.841157 3.0930541 -28.680965 13.763117 3.1146402 -28.987177 13.691868 3.1384428 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -31.108519 13.316331 3.3108432 -31.217165 13.136783 3.3137343 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -32.511108 12.065789 3.3920805 -36.643612 13.34409 3.810313 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -32.77787 -0.62014788 3.2086942 -32.764492 -0.8210327 3.2078271 -37.267548 -1.1628867 3.644562 -0 -0 0 -0 -0 0 -0 -0 0 -31.332573 -1.7480181 3.0729134 -0 -0 0 -0 -0 0 -25.46649 -1.8913125 2.5070467 -30.530182 -2.4560628 3.0000598 -25.446321 -2.2041128 2.5075285 -30.664246 -2.8459899 3.0162497 -25.429243 -2.5173895 2.5086849 -27.429701 -2.8855815 2.7049844 -27.432253 -3.0561478 2.7070081 -27.414961 -3.2246442 2.7072008 -27.408489 -3.3945117 2.70855 -27.38221 -3.561981 2.7080681 -27.367727 -3.731004 2.7088392 -19.318449 -2.7541521 1.9239304 -27.387812 -4.0766816 2.7154884 -27.360315 -4.244348 2.7152956 -18.521622 -2.989332 1.8510771 -18.831776 -3.1580904 1.8833599 -0 -0 0 -19.083504 -3.4416084 1.9120773 -19.167698 -3.5783718 1.922485 -18.394821 -3.5509768 1.8484751 -37.693897 -7.5179625 3.7559621 -37.761124 -7.7725883 3.7672369 -37.611458 -7.9826455 3.7572148 -0 -0 0 -37.489304 -8.4387856 3.7550948 -38.166992 -8.8377542 3.8276591 -38.142063 -9.0789223 3.8306465 -0 -0 0 -37.78064 -9.484252 3.8059766 -31.417963 -8.0920429 3.1757369 -31.394667 -8.2917852 3.1784351 -31.403725 -8.5006495 3.1845062 -31.304935 -8.6804113 3.1798806 -7.974371 -2.2630548 0.83720058 -7.9393072 -2.3058317 0.8350805 -31.553928 -9.3782463 3.2217038 -0 -0 0 -32.214005 -10.006304 3.3005321 -0 -0 0 -7.9680457 -2.5817389 0.84558451 -7.9501643 -2.629956 0.84539181 -25.223816 -8.5189247 2.6122794 -0 -0 0 -26.709957 -9.3876295 2.7757177 -25.186419 -9.0260992 2.6249998 -25.174501 -9.1965246 2.629529 -0 -0 0 -0 -0 0 -20.003086 -7.7273216 2.110786 -0 -0 0 -24.267952 -9.7190475 2.5656378 -19.638098 -8.0047741 2.0878506 -19.745825 -8.190341 2.1043293 -19.494371 -8.2265835 2.083225 -19.929192 -8.5545444 2.1343958 -19.879065 -8.6778612 2.1346848 -19.638947 -8.7168846 2.1149297 -19.629547 -8.8572845 2.1196516 -19.876099 -9.1157522 2.1517417 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -5.0937438 -2.7652435 0.59580147 -5.1786733 -2.8526547 0.60707635 -0 -0 0 -4.9173107 -2.7878191 0.58192462 -0 -0 0 -3.8012543 -2.2168591 0.460695 -3.8209872 -2.2599118 0.46445331 -3.8036349 -2.2812657 0.46406785 -3.8728948 -2.3552668 0.47351182 -3.8685355 -2.3852575 0.4746682 -13.600703 -8.5050182 1.5877062 -4.5812507 -2.9031599 0.55976021 -4.5641885 -2.9317534 0.55985659 -4.0081658 -2.6093125 0.49769992 -4.0419207 -2.6667581 0.50348192 -4.0436821 -2.7036841 0.505602 -3.9718163 -2.6910253 0.49914542 -3.2644155 -2.240839 0.41800445 -3.208122 -2.2312613 0.41299337 -3.2033191 -2.2572134 0.41405341 -3.1602511 -2.2559981 0.41058421 -3.1366727 -2.2683444 0.40942779 -3.1315258 -2.2940209 0.41048783 -4.3808408 -3.2512989 0.56284398 -4.301147 -3.2332489 0.55561644 -3.743592 -2.8500576 0.49018329 -4.0318122 -3.1088674 0.52757365 -4.1099191 -3.2095344 0.53952318 -4.5249252 -3.5786936 0.59319955 -4.5098724 -3.6119919 0.59406686 -4.4582534 -3.6157651 0.59040487 -4.5721087 -3.7548916 0.60746187 -4.4778214 -3.7236741 0.59849972 -3.7781322 -3.1810079 0.51282954 -3.7153761 -3.1673133 0.50733662 -3.5783525 -3.0885661 0.49230337 -3.7923739 -3.3142171 0.52227348 -3.9068644 -3.4568372 0.53971589 -3.3133521 -2.9679046 0.46532062 -2.5373011 -2.300616 0.36625543 -2.5282681 -2.3208547 0.36692998 -2.543864 -2.3641152 0.37088102 -2.5322089 -2.3824086 0.37126651 -3.5147178 -3.3483279 0.50463831 -3.964699 -3.8239048 0.56795138 -3.5039809 -3.4211137 0.50878209 -2.332139 -2.3045607 0.35208949 -2.2947412 -2.2955883 0.34890938 -2.2785153 -2.3074999 0.34862027 -2.3039138 -2.3620656 0.35411319 -2.3390825 -2.4277837 0.36105162 -2.2102761 -2.3223627 0.34505469 -2.9524493 -3.1411259 0.45202199 -2.9737422 -3.2029595 0.45780399 -3.0885425 -3.3678966 0.47707739 -3.0023522 -3.3144732 0.46763343 -2.9288793 -3.2734766 0.45992407 -2.592454 -2.9333017 0.41366795 -2.5076644 -2.8726497 0.40383852 -1.8993939 -2.2025607 0.316241 -1.889069 -2.2179637 0.31672281 -1.8658179 -2.2180839 0.31527731 -1.8496299 -2.2264271 0.31489184 -1.8390892 -2.2415829 0.31537369 -1.8284318 -2.2566934 0.31585553 -1.8226304 -2.2779765 0.3171083 -1.8265043 -2.3117731 0.31990293 -2.8336134 -3.6331205 0.48073933 -1.8241036 -2.3679295 0.3240467 -2.1919756 -2.8822904 0.38523972 -1.8851136 -2.5103531 0.3385981 -2.1925824 -2.9577596 0.39111808 -2.2501893 -3.0747976 0.40354943 -1.8420826 -2.5494685 0.33917633 -1.8177396 -2.5485649 0.33773082 -2.7532964 -3.9118774 0.49779627 -2.5810778 -3.7153065 0.47264451 -1.465564 -2.1365781 0.28549993 -1.5053989 -2.2238574 0.29465479 -2.3382058 -3.5013974 0.44228894 -2.3451447 -3.5589049 0.44730002 -2.3671925 -3.6408315 0.45510572 -2.6794841 -4.177319 0.51514232 -1.3986987 -2.2092628 0.28781274 -1.4119873 -2.2608709 0.29272747 -1.4074786 -2.2847505 0.29446205 -1.6816261 -2.7681248 0.3482348 -1.6743232 -2.7946172 0.35006577 -1.7208996 -2.9128373 0.36220801 -1.6003455 -2.7469954 0.34245279 -0 -0 0 -0 -0 0 -0 -0 0 -1.1133974 -2.0230923 0.25822809 -1.133202 -2.0893981 0.26478106 -1.129266 -2.1129954 0.26661202 -1.1176697 -2.1225274 0.26690111 -1.0959247 -2.1125541 0.26507014 -1.6055585 -3.1432056 0.37637395 -1.5746191 -3.1298759 0.37386841 -1.5549433 -3.1385865 0.37377205 -1.5347838 -3.1462789 0.37357932 -1.0839999 -2.2564533 0.27701965 -1.5024347 -3.1783764 0.37502483 -1.4820652 -3.1857302 0.37483206 -1.8243241 -3.9858761 0.45905676 -1.0989567 -2.4394062 0.29369113 -1.4259952 -3.2188416 0.37550664 -1.0772812 -2.4718735 0.29571483 -1.0648354 -2.4848423 0.2963894 -1.0673264 -2.5335314 0.30082229 -1.0407293 -2.5133588 0.29802763 -1.0267869 -2.5233858 0.2984131 -1.0031645 -2.5093019 0.29629302 -0.99210978 -2.5265296 0.29744944 -1.2759948 -3.3100135 0.37810856 -1.2655171 -3.3438492 0.38080683 -1.4929181 -4.0196977 0.44980556 -1.2148521 -3.3329396 0.37810856 -1.1883521 -3.3234589 0.37637395 -1.1738603 -3.3475966 0.37810856 -1.1251721 -3.272836 0.36972463 -1.0441091 -3.0985553 0.35122219 -0 -0 0 -0.97541642 -3.0164175 0.34158549 -0.9664923 -3.0527148 0.34466922 -0.92802799 -2.9948802 0.33821264 -0.89838612 -2.9633651 0.33445433 -0.93076521 -3.1396585 0.351704 -0.90677917 -3.1290567 0.35006577 -0.90733314 -3.2044804 0.35710058 -0.91838777 -3.3212819 0.36827913 -0.8925513 -3.3066726 0.36625543 -0.82262683 -3.1234145 0.3473675 -0.80146849 -3.1206901 0.34659657 -1.0402792 -4.1578269 0.44961283 -1.0265173 -4.2124872 0.45443115 -2.0832169 -8.7882643 0.90909034 -2.0341711 -8.8222198 0.91121042 -0.65445769 -2.9165268 0.3240467 -0.64522499 -2.9603641 0.32799774 -1.7735649 -8.3946028 0.86533976 -0.74020922 -3.6096878 0.39140719 -1.6574422 -8.3503208 0.85888314 -1.6011077 -8.3339415 0.85628122 -1.5374073 -8.276083 0.84963191 -1.4881781 -8.294178 0.85049921 -0.52599859 -3.0343778 0.33281609 -1.4068986 -8.435524 0.86264145 -1.3782774 -8.5884676 0.87680739 -0 -0 0 -0 -0 0 -0.58441126 -4.1213379 0.43766332 -0.56191391 -4.1455598 0.43968701 -0.53621197 -4.146955 0.43949428 -0.5056619 -4.1086745 0.43544689 -0.47133824 -4.033596 0.42783388 -0.41699472 -3.768301 0.40171844 -0.3946898 -3.7787085 0.40248939 -0.3713026 -3.779078 0.40229666 -0.22588345 -2.4491355 0.27277949 -0.20592988 -2.3929555 0.26719022 -0.19140065 -2.3961585 0.26738295 -0.1777847 -2.412178 0.26882845 -0.25766918 -3.8254344 0.40586224 -0.23352647 -3.816015 0.4048022 -0 -0 0 -0.13205652 -2.6941831 0.29581121 -0.11126103 -2.5945032 0.28607813 -0.095952958 -2.6120467 0.28771639 -0.0786044 -2.5688112 0.28347623 -0.063724712 -2.6060622 0.28704181 -0.047981907 -2.6203368 0.28839093 -0 -0 0 -0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6494948 -3.4853845 0.40798229 --1.6574711 -3.4473932 0.40499493 --1.6755332 -3.4308984 0.40432036 --1.6850471 -3.3973725 0.40181482 --1.6816691 -3.338973 0.39661101 --1.6989509 -3.3223891 0.39593643 --1.7243524 -3.3216178 0.39699647 --1.7799869 -3.3778872 0.40432036 --1.8448298 -3.4493926 0.41337886 --1.8616846 -3.4301362 0.41251156 --1.8841377 -3.4212637 0.41280064 --1.9099523 -3.4183261 0.41376433 --1.9613376 -3.4602201 0.41973907 --0 -0 0 --4.9022655 -8.4031124 0.97654718 --4.9704623 -8.4011421 0.97972727 --5.0208931 -8.3687782 0.97953457 --5.0219603 -8.2553339 0.97018695 --5.0568414 -8.1989517 0.96729594 --5.1920295 -8.3036346 0.98281103 --5.2423487 -8.2707796 0.98271465 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --10.064565 -9.0018129 1.3419706 --0 -0 0 --0 -0 0 --10.122234 -8.7234211 1.3283828 --9.978487 -8.4934263 1.3033274 --10.034986 -8.4358826 1.3039056 --10.36074 -8.6017418 1.338405 --10.040761 -8.2325935 1.2917634 --10.491819 -8.4952459 1.3416815 --10.531308 -8.4207649 1.3401396 --10.456999 -8.2566919 1.3246245 --10.401487 -8.1097612 1.311615 --10.527561 -8.1046762 1.3209625 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --10.640414 -7.5846071 1.2997619 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.464136 -9.051403 1.8536789 --0 -0 0 --16.584507 -8.8543053 1.8548354 --16.667595 -8.7676678 1.8580154 --0 -0 0 --16.457434 -8.4009352 1.8236125 --16.670527 -8.381156 1.8411512 --0 -0 0 --6.9980912 -3.4121382 0.78843892 --6.9982562 -3.3592308 0.78622252 --7.0115361 -3.3128266 0.78545153 --7.013679 -3.2613513 0.78352422 --7.0435152 -3.2228088 0.78458428 --7.0631571 -3.1795299 0.78458428 --7.0852642 -3.1373398 0.78487337 --7.4064612 -3.2253017 0.81677079 --7.4087262 -3.1723542 0.81493986 --7.4161253 -3.1218171 0.81368709 --0 -0 0 --7.4382005 -3.024204 0.81204885 --7.4510703 -2.9762926 0.81147063 --7.5470295 -2.9610436 0.81956547 --7.606854 -2.9307773 0.82390195 --21.53418 -8.1430387 2.263624 --22.121243 -8.2102165 2.3191311 --0 -0 0 --7.603375 -2.717098 0.81638533 --22.552311 -7.9010196 2.3482339 --22.599424 -7.7621694 2.3481376 --22.640024 -7.6211333 2.3474631 --0 -0 0 --28.432882 -9.1839457 2.9274957 --27.817732 -8.7971535 2.8593643 --27.319691 -8.4556341 2.8034713 --28.216053 -8.5436678 2.8889489 --0 -0 0 --28.687832 -8.3035765 2.9261465 --28.738241 -8.1273956 2.9261465 --29.200127 -8.0648355 2.9675844 --12.996867 -3.5046151 1.3379232 --13.009463 -3.4225235 1.3370558 --0 -0 0 --12.797483 -3.199393 1.3118078 --12.819775 -3.1215153 1.3120968 --0 -0 0 --0 -0 0 --0 -0 0 --18.116335 -3.9424014 1.8296835 --18.13434 -3.8299339 1.8291054 --0 -0 0 --0 -0 0 --0 -0 0 --19.611546 -3.6415086 1.96585 --18.17079 -3.2588663 1.8219743 --18.277733 -3.1624084 1.8305509 --18.164249 -3.0281112 1.8175414 --19.703852 -3.1605387 1.9667174 --18.142 -2.7960386 1.8118557 --18.216909 -2.6932538 1.8175414 --24.202427 -3.4261725 2.4012358 --24.693489 -3.3412442 2.4472029 --23.991909 -3.0965636 2.3767586 --19.614183 -2.4094992 1.9479258 --19.648373 -2.2914083 1.9498532 --23.485865 -2.5927455 2.3223114 --23.363722 -2.4342597 2.3089163 --18.429152 -1.8061414 1.8274672 --24.6437 -2.2622256 2.4306278 --25.913628 -2.2184861 2.5527246 --23.714092 -1.8837832 2.3378265 --23.133562 -1.694923 2.2803917 --23.092878 -1.5495503 2.2754769 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --49.183647 8.8158789 4.2746429 --49.28244 9.1460419 4.2879167 --49.380005 9.4779358 4.3012753 --49.371746 9.7908258 4.3056717 --49.433739 10.118757 4.3163247 --49.470165 10.442878 4.3249488 --49.521996 10.771637 4.3350945 --49.52206 11.09032 4.3409281 --49.566685 11.420146 4.3508201 --49.665356 11.764257 4.3656158 --49.617409 12.074903 4.3678141 --49.744427 12.429604 4.3854847 --49.735752 12.752166 4.3914876 --49.805939 13.096374 4.404592 --49.732338 13.403805 4.4052687 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --40.9743 13.509734 3.6956623 --40.899136 13.763754 3.6964231 --40.873283 14.034833 3.7017496 --40.781696 14.283716 3.7013268 --0 0 0 --0 0 0 --0 0 0 --36.704685 13.876146 3.3644054 --0 0 0 --0 0 0 --35.157673 14.036253 3.246969 --0 0 0 --34.986462 14.468158 3.2473073 --0 0 0 --0 0 0 --34.856747 15.171727 3.2604966 --0 0 0 --57.944756 26.071098 5.4262633 --34.413002 15.738235 3.2457008 --56.453014 26.237621 5.317028 --56.298168 26.58692 5.3177042 --56.128582 26.929274 5.3171968 --56.032158 27.307213 5.323792 --55.888554 27.662882 5.326159 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --33.353218 18.332275 3.2642167 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --56.922161 34.072735 5.6639261 --0 0 0 --0 0 0 --0 0 0 --52.169712 32.993538 5.2724714 --0 0 0 --0 0 0 --20.849678 13.729876 2.1530945 --21.263988 14.19051 2.2039921 --0 0 0 --20.231756 13.863505 2.1158938 --20.100475 13.955563 2.1111591 --21.061735 14.815281 2.2198026 --20.066465 14.300056 2.1256168 --20.400875 14.72794 2.1698351 --0 0 0 --0 0 0 --20.750399 15.569189 2.2360356 --0 0 0 --0 0 0 --0 0 0 --41.093483 32.438538 4.4771338 --0 0 0 --0 0 0 --37.843143 31.020292 4.1867981 --37.047916 30.750439 4.1201749 --0 0 0 --35.569702 30.268364 3.9978347 --21.749407 18.739359 2.4708238 --22.498274 19.626373 2.5681379 --37.048405 32.721313 4.2289872 --0 0 0 --36.78664 33.302555 4.2453051 --35.935917 32.935871 4.1709876 --0 0 0 --15.447275 14.510783 1.8331672 --0 0 0 --15.086431 14.524413 1.8117766 --0 0 0 --14.492828 14.299758 1.762401 --14.421734 14.405314 1.7644302 --14.267912 14.427646 1.7565672 --14.183294 14.519197 1.7570745 --14.103626 14.615989 1.7582581 --29.519476 30.969303 3.6651406 --14.167738 15.047674 1.7885262 --14.062926 15.121189 1.7870042 --13.771692 14.991461 1.7621473 --0 0 0 --27.673754 30.876343 3.5530307 --27.600683 31.177618 3.5679955 --15.459797 17.680996 2.0277107 --27.52211 31.868408 3.6077328 --0 0 0 --0 0 0 --26.006786 31.258938 3.4851391 --0 0 0 --16.523836 20.364277 2.260047 --15.343698 19.148848 2.1169083 --25.157007 31.793215 3.4749088 --15.343751 19.637983 2.1494591 --25.211111 32.677807 3.5368822 --23.56642 30.936703 3.3347292 --0 0 0 --0 0 0 --23.129068 31.550877 3.3542597 --22.931536 31.687357 3.3537524 --22.763897 31.865572 3.3577261 --0 0 0 --23.600088 33.908211 3.5402641 --23.363941 34.012135 3.5361211 --23.102247 34.077328 3.5281737 --23.529343 35.170002 3.6253188 --21.920347 33.204067 3.4108219 --34.679203 53.237862 5.4260097 --34.316334 53.394325 5.4204292 --20.808161 32.817635 3.3320239 --9.1331596 14.602147 1.4962457 --19.802177 32.095314 3.2347941 --0 0 0 --8.5495348 14.245773 1.4445872 --8.9035006 15.043977 1.5181435 --8.4433832 14.468377 1.4562548 --8.4120941 14.620096 1.4660623 --8.3010883 14.634169 1.4624268 --18.438381 32.974251 3.240459 --10.295351 18.680185 1.8446656 --8.004632 14.737204 1.4578612 --7.953084 14.858956 1.4648787 --7.8715229 14.925984 1.4666542 --7.8266506 15.06419 1.4752779 --16.640186 32.512962 3.1339293 --8.0089912 15.888705 1.5446068 --7.9596429 16.03483 1.5538225 --9.5479498 19.534361 1.8797528 --14.963616 31.096052 2.9629743 --0 0 0 --14.519845 31.146387 2.9507148 --14.51667 31.645161 2.9890149 --14.358707 31.814468 2.9965396 --14.187082 31.955704 3.0015278 --8.851491 20.272406 1.9117962 --8.7269354 20.326336 1.9117962 --0 0 0 --0 0 0 --13.74491 33.711884 3.1239526 --13.420712 33.503296 3.0972357 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --4.2587996 14.654939 1.3297719 --4.0397711 14.226458 1.2896963 --3.9840956 14.365237 1.2997575 --3.8130615 14.083565 1.2728715 --3.6464005 13.803237 1.2462391 --3.8689122 15.017977 1.3507396 --3.6034176 14.351413 1.2903727 --0 0 0 --0 0 0 --3.3242543 14.353183 1.2849617 --3.3155789 14.726174 1.3156525 --3.1898136 14.584657 1.3016176 --4.1627145 19.608027 1.735684 --3.1225317 15.166303 1.3487105 --3.9009187 19.553078 1.7266375 --3.8022232 19.687197 1.7361913 --3.6250012 19.408478 1.7101507 --4.9281535 27.312273 2.3897429 --4.6890278 26.931667 2.3544021 --4.5382013 27.046408 2.3618422 --3.1750858 19.661768 1.7247773 --4.916924 31.680557 2.7551568 --4.7393236 31.823469 2.7648797 --0 0 0 --4.2932248 31.474447 2.7302153 --0 0 0 --0 0 0 --3.8209047 32.463509 2.8084216 --3.3548877 30.093817 2.6041551 --2.7580588 26.199614 2.2701929 --3.6572714 36.914024 3.1823747 --3.4267392 36.893108 3.1787393 --0 0 0 --2.1680055 26.926842 2.3270087 --2.0022273 26.932682 2.3264167 --0 0 0 --0 0 0 --2.0227957 36.212273 3.1122849 --1.8322293 36.860924 3.1663954 --1.5655987 35.943687 3.0875971 --1.3423028 35.879932 3.0814252 --0.84262997 26.951986 2.3228657 --0 0 0 --0.62224817 32.772358 2.8161154 --0.3484396 27.122343 2.3363934 --0.22552204 33.593578 2.8853598 --0 0 0 -0.18052746 32.473858 2.7903285 -0.41778681 35.725224 3.0663757 -0.59458828 33.342918 2.8644764 -0 0 0 -0 0 0 -0.97238076 26.818995 2.3119593 -1.1421533 26.935968 2.322443 -1.3201605 27.191198 2.3447635 -1.8520793 33.858585 2.9120767 -0 0 0 -2.0660541 30.827871 2.6564898 -2.1320636 29.132174 2.5133512 -0 0 0 -1.7086952 19.975061 1.7359376 -3.1591237 34.444191 2.969738 -3.3709922 34.430107 2.9702454 -2.0787637 19.965994 1.7381359 -2.1944604 19.891459 1.7328939 -2.3560252 20.217094 1.7618937 -3.9715476 32.354069 2.8007278 -4.1591597 32.24509 2.7935412 -4.4049997 32.57444 2.8239784 -4.7165885 33.337063 2.8917007 -4.9094019 33.228638 2.884937 -5.1192636 33.237282 2.888319 -5.3500757 33.373482 2.9027765 -5.2925968 31.766447 2.767416 -5.4673796 31.617516 2.7574396 -5.6176815 31.340137 2.7364717 -2.6702423 14.386765 1.2764224 -2.7669194 14.414145 1.2802271 -2.9057031 14.651017 1.3022094 -6.4500532 31.510094 2.7639496 -8.071084 38.234028 3.3505397 -8.3042603 38.177944 3.3500323 -8.524642 38.065014 3.3447058 -3.455539 14.996788 1.3406785 -3.5392246 14.940398 1.3376348 -3.6244693 14.89226 1.3353519 -3.7882404 15.15975 1.3607162 -3.4859815 13.594796 1.2256939 -3.5239761 13.400655 1.21056 -3.9826291 14.775736 1.3333229 -4.0641999 14.718364 1.3304483 -10.450277 36.962124 3.2940619 -10.793475 37.300266 3.3296564 -11.106142 37.517105 3.3547671 -11.314482 37.376724 3.3484259 -11.846974 38.287048 3.4355097 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.9044762 20.156782 1.8719745 -8.1510315 20.416059 1.9001287 -0 0 0 -8.2825346 20.02813 1.8738345 -8.0478363 19.127373 1.7956281 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -18.97023 31.691463 3.1688473 -19.22068 31.667315 3.1780629 -0 0 0 -31.796783 50.966972 5.1320381 -32.097729 50.753227 5.1302629 -32.345623 50.457176 5.1203709 -0 0 0 -32.69276 49.647007 5.0787735 -0 0 0 -32.407032 47.922249 4.9435821 -0 0 0 -0 0 0 -0 0 0 -14.652793 20.561457 2.1771905 -14.612461 20.240911 2.1530945 -14.615807 19.985987 2.1357625 -0 0 0 -14.648274 19.522976 2.1058326 -30.071188 39.570938 4.2519841 -15.038074 19.538366 2.1268849 -15.214032 19.518028 2.1346633 -30.714823 38.909828 4.2410774 -30.832914 38.570419 4.2247601 -30.904741 38.177593 4.2026086 -31.123886 37.969524 4.200664 -31.18318 37.569286 4.1776671 -31.420164 37.385635 4.178597 -31.730331 37.287758 4.18925 -0 0 0 -0 0 0 -36.533829 41.365154 4.7176714 -0 0 0 -43.847591 48.435078 5.5785332 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.094419 19.833452 2.3708887 -0 0 0 -39.388332 39.921135 4.793426 -0 0 0 -0 0 0 -0 0 0 -19.987881 19.287409 2.3916874 -0 0 0 -0 0 0 -20.973562 19.505928 2.4651592 -0 0 0 -0 0 0 -44.331745 39.733749 5.0862136 -43.678688 38.667747 4.9846721 -43.88662 38.374088 4.9814591 -44.104664 38.089752 4.979599 -0 0 0 -44.573334 37.549503 4.9801064 -18.117117 15.072847 2.034559 -18.189245 14.944953 2.0323608 -18.289114 14.839971 2.0332909 -18.312954 14.673886 2.0260198 -18.519073 14.65337 2.0386174 -18.62748 14.554187 2.0406466 -18.716433 14.439617 2.0406466 -18.834799 14.347448 2.0438592 -0 0 0 -25.542898 18.966742 2.7343581 -0 0 0 -0 0 0 -20.974356 14.983342 2.2220008 -21.107428 14.88365 2.2263126 -21.035606 14.640582 2.2094877 -20.909863 14.363417 2.1873362 -20.998425 14.235405 2.1874208 -21.297388 14.248135 2.209065 -21.29294 14.056801 2.1997647 -0 0 0 -24.19142 15.547477 2.4748821 -0 0 0 -25.066343 15.678504 2.5435345 -25.119675 15.498244 2.5393071 -0 0 0 -23.960651 14.38019 2.4059758 -23.889801 14.139009 2.3903346 -24.422749 14.252822 2.4342148 -0 0 0 -0 0 0 -24.728792 13.827611 2.4388649 -24.872511 13.708324 2.4446142 -0 0 0 -25.859367 13.841259 2.5235813 -28.16218 14.852299 2.7363873 -28.151983 14.626847 2.7267487 -28.165808 14.415246 2.7195623 -28.166531 14.198197 2.7112765 -28.170118 13.983899 2.7034137 -28.294779 13.83004 2.7071338 -28.648466 13.785788 2.7324979 -28.945034 13.710412 2.7524512 -0 0 0 -30.720474 14.092473 2.9026921 -0 0 0 -0 0 0 -0 0 0 -31.049744 13.331165 2.9020157 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -31.144571 12.254601 2.8747067 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -37.829212 -0.90675598 3.2456162 -36.641716 -1.1033003 3.1453431 -31.883459 -1.1559289 2.7419674 -0 -0 0 -0 -0 0 -31.468758 -1.7213827 2.7089939 -31.774874 -1.9337434 2.7359645 -0 -0 0 -31.714962 -2.3210521 2.7330899 -31.443853 -2.4952741 2.7112765 -30.686333 -2.6247387 2.6481197 -30.856194 -2.8300843 2.6640146 -19.445843 -1.9040824 1.6927339 -19.435774 -2.0235703 1.692903 -27.421566 -3.0250437 2.3757079 -27.405458 -3.1935883 2.3759615 -27.392269 -3.3625348 2.3765533 -27.39385 -3.5334787 2.3784981 -27.368692 -3.7010972 2.3782444 -25.241058 -3.5712483 2.1979048 -27.382328 -4.0457029 2.3834863 -27.336308 -4.2104568 2.3817108 -18.669704 -2.9931021 1.6392154 -18.553682 -3.0913904 1.6308452 -18.530437 -3.2044964 1.630507 -18.590851 -3.3325515 1.6374398 -19.160809 -3.55619 1.688422 -19.138626 -3.6736917 1.688422 -18.323063 -3.6338701 1.6198541 -37.874786 -7.7528119 3.3151989 -19.299799 -4.0743279 1.7085443 -37.813797 -8.2250576 3.3184116 -37.58857 -8.4179478 3.3032777 -37.590584 -8.6609554 3.3080122 -0 -0 0 -0 -0 0 -37.392895 -9.3434372 3.3052223 -37.52211 -9.6207085 3.3216245 -0 -0 0 -0 -0 0 -31.50182 -8.6981659 2.8078299 -7.9534888 -2.2490087 0.73616445 -7.9194393 -2.2919519 0.73438895 -7.8736978 -2.3311684 0.73159891 -31.873966 -9.648778 2.8605874 -25.768679 -7.9736123 2.3236268 -31.557447 -9.9773188 2.8431706 -7.979105 -2.5769732 0.74631011 -7.9621964 -2.6255717 0.7462256 -25.407524 -8.5505323 2.3095074 -0 -0 0 -25.261185 -8.8478451 2.3059564 -0 -0 0 -24.622635 -8.9649143 2.2582715 -24.645636 -9.1449442 2.2653735 -24.535002 -9.2755585 2.2604699 -0 -0 0 -20.001865 -7.8437285 1.857855 -0 -0 0 -0 -0 0 -19.872515 -8.2181845 1.8595459 -19.581083 -8.2387247 1.8373946 -19.866354 -8.5025959 1.8684235 -19.805588 -8.6207552 1.8676625 -19.674868 -8.7078409 1.860476 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -3.9693034 -2.0878882 0.41539156 -3.9783938 -2.123934 0.41750523 -3.9223554 -2.1250508 0.41336241 -0 -0 0 -0 -0 0 -3.813195 -2.1576385 0.40659863 -3.7912416 -2.1760359 0.40575317 -3.7821243 -2.2017639 0.40617588 -3.7925696 -2.2391109 0.40854323 -3.8189425 -2.2863922 0.41251695 -13.896151 -8.4346189 1.4141502 -6.7828126 -4.1744027 0.71063113 -6.7486172 -4.2106686 0.70978564 -6.687284 -4.229629 0.70623469 -4.1395965 -2.6541257 0.45208514 -4.1290822 -2.6832759 0.45267698 -4.0967283 -2.698149 0.45107058 -4.1074467 -2.7414873 0.45386064 -4.0789924 -2.7588241 0.45267698 -3.2178257 -2.2053714 0.36584678 -3.1747673 -2.2046168 0.36280307 -3.1587353 -2.2223356 0.36254942 -3.1466627 -2.2428319 0.36271852 -4.116055 -2.9718816 0.46561274 -4.0333977 -2.9500277 0.45884892 -4.1529379 -3.0767329 0.47339109 -4.1459365 -3.1111269 0.47465929 -4.117249 -3.1292727 0.47364473 -4.7849474 -3.6832039 0.54720098 -4.672667 -3.6426618 0.53756255 -4.2748146 -3.3749235 0.4969798 -4.1660771 -3.3307853 0.48742595 -4.1029654 -3.321804 0.48277584 -4.8423319 -3.9697416 0.56613958 -4.8370509 -4.0152884 0.56825328 -4.8443604 -4.0718179 0.57180429 -3.7303247 -3.1748207 0.45047873 -3.5892384 -3.092937 0.43686661 -3.7601645 -3.2806194 0.45825711 -4.2702227 -3.7719483 0.51828575 -3.3200066 -2.9691896 0.4127706 -3.8261971 -3.4642956 0.47279924 -2.5362573 -2.3250232 0.32678586 -3.7118146 -3.4445701 0.4645136 -2.8379822 -2.6663742 0.36525494 -2.7897975 -2.6535251 0.36153486 -2.7562354 -2.6540074 0.35950571 -2.3217423 -2.2633326 0.30996093 -2.2978809 -2.2677383 0.30877727 -2.2768731 -2.2747536 0.30793178 -2.251662 -2.2773459 0.30657902 -3.5989041 -3.684561 0.47186923 -3.6488788 -3.7818611 0.48074672 -3.6091051 -3.7868688 0.47871757 -3.0748739 -3.2663031 0.41547611 -3.4259653 -3.6842172 0.46172354 -3.0318635 -3.3008554 0.41513792 -2.9432545 -3.2441304 0.40651408 -2.9193032 -3.2576768 0.40600678 -2.6846025 -3.0330567 0.37852889 -4.0531559 -4.6359415 0.55734664 -2.5957291 -3.0061977 0.37184966 -1.8911505 -2.2177281 0.28214484 -1.8620998 -2.2110012 0.28011569 -1.7803085 -2.1404259 0.27106911 -1.6817439 -2.0473769 0.25965521 -1.6691498 -2.0576572 0.25965521 -1.6758083 -2.091965 0.2622762 -1.6487198 -2.0842364 0.2603316 -1.643262 -2.1037354 0.26134616 -2.1075139 -2.7322857 0.32763135 -2.0013454 -2.6278563 0.31511831 -2.0510664 -2.7276824 0.32441854 -2.0313208 -2.7362161 0.3239958 -1.877229 -2.5613871 0.30429626 -1.8462887 -2.5518699 0.30209804 -2.6038439 -3.6455424 0.41496882 -2.5584574 -3.6288779 0.41158694 -2.4814978 -3.5659966 0.40347037 -2.4381313 -3.5499461 0.40025759 -2.4873142 -3.6695826 0.4109951 -1.4679812 -2.1949043 0.25889429 -1.4577798 -2.2088597 0.25940159 -1.4409359 -2.2127535 0.25889429 -1.4197892 -2.2098181 0.25771064 -1.4014012 -2.2109146 0.25694969 -1.4073598 -2.2507284 0.26007795 -1.5881575 -2.5747769 0.2915296 -2.1566308 -3.5446191 0.38689908 -1.3462077 -2.2437863 0.25686514 -1.363373 -2.304311 0.26202255 -1.3396658 -2.2962821 0.26041615 -1.6848476 -2.9288771 0.32154393 -1.6693028 -2.9434934 0.32196668 -1.6468337 -2.9458535 0.32120574 -8.9226589 -16.189642 1.6033673 -1.1330491 -2.0867536 0.23632014 -1.1757104 -2.1973281 0.24629673 -1.1529093 -2.1868737 0.24460578 -1.1031756 -2.1240556 0.23792654 -1.089214 -2.1290104 0.23775744 -1.1286076 -2.2397559 0.24764949 -1.5627749 -3.1489537 0.33312693 -1.5565511 -3.1853392 0.33566335 -1.5266072 -3.1732814 0.3336342 -1.5352601 -3.2420218 0.33921432 -1.5283902 -3.279377 0.34183532 -1.4766637 -3.2198627 0.3354097 -1.4495009 -3.2125151 0.33388785 -1.4071196 -3.1703494 0.32915321 -1.7353339 -3.9752011 0.40287855 -1.6967576 -3.9528127 0.39983484 -0 -0 0 -7.1296573 -17.184916 1.613513 -1.6255927 -3.9879882 0.40025759 -1.0037938 -2.5068464 0.26396713 -1.5703292 -3.9918737 0.39882028 -1.5440102 -3.9967866 0.39839754 -1.2533138 -3.3046701 0.33473334 -0 -0 0 -0 -0 0 -1.1794963 -3.2915366 0.33152053 -1.1764622 -3.3475931 0.335917 -1.1175849 -3.2435889 0.3259404 -0 -0 0 -1.0438805 -3.1548972 0.31680927 -1.0248101 -3.1621909 0.31689382 -0.97463655 -3.0715485 0.30826998 -0.95665848 -3.0803256 0.30852363 -0.9229598 -3.0375171 0.30421171 -0.92815655 -3.1233518 0.31131369 -0.92371309 -3.1796999 0.31579471 -0.93222308 -3.284035 0.32450309 -0.92244166 -3.3271399 0.32780045 -0.90383232 -3.3394697 0.32839227 -0.82147622 -3.1108551 0.30784726 -1.0574414 -4.1058326 0.39459291 -0.97811103 -3.896733 0.37573883 -0.95678687 -3.9133079 0.37666884 -0.70495588 -2.9623857 0.29322055 -0.69441068 -2.9996598 0.29609516 -0.76858222 -3.4150541 0.33185872 -0.87472701 -4.0008283 0.38233352 -0.74979413 -3.5333941 0.34132802 -1.7115952 -8.3141994 0.75510305 -1.6654222 -8.3489733 0.75721675 -1.6090604 -8.3326206 0.75493395 -1.5496688 -8.2982597 0.75112933 -0.53895605 -2.9889352 0.29254416 -0 -0 0 -0 -0 0 -1.414184 -8.7587385 0.7876538 -0.64409995 -4.1522932 0.3913801 -0.61097699 -4.104919 0.38698363 -0.5369429 -3.766299 0.35764569 -0.52823406 -3.8751612 0.36669225 -0.52952749 -4.0710058 0.38317901 -0 -0 0 -0.4426043 -3.7634981 0.35637745 -0.42380962 -3.804764 0.35967481 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0.1896459 -2.3599365 0.23572831 -0.17545758 -2.3650305 0.23606649 -0.25923535 -3.8075233 0.35866025 -0.23580627 -3.8080478 0.3585757 -0.21338101 -3.8263357 0.36001301 -0.14165778 -2.8572624 0.27757928 -0.11249989 -2.5912905 0.25492057 -0 -0 0 -0.1153329 -3.6999528 0.3489373 -0.090174317 -3.6029725 0.34065163 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6464229 -3.4307711 0.35773021 --1.6630776 -3.4116471 0.35688475 --1.6764656 -3.3861971 0.35544744 --1.6904992 -3.3624923 0.35417923 --1.6975113 -3.3254306 0.35164282 --1.7146752 -3.308759 0.35105097 --1.7715844 -3.367846 0.35773021 --1.834443 -3.4360261 0.36533949 --1.8531187 -3.4203246 0.36491674 --1.869751 -3.4010308 0.36415583 --1.9027164 -3.4112506 0.3662695 --4.8006225 -8.4851284 0.86205554 --4.8689618 -8.4840326 0.86484563 --4.8587747 -8.3472118 0.85436171 --4.9104071 -8.3181 0.85444629 --4.9495835 -8.2681494 0.85250169 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.8494816 -8.4008656 1.1332836 --10.047918 -8.4641733 1.1496013 --10.024599 -8.3399067 1.1413157 --10.064805 -8.2693844 1.140132 --10.456573 -8.4843493 1.1774174 --9.9501371 -7.9726577 1.1167123 --10.352054 -8.1909256 1.1549278 --10.392695 -8.1198902 1.1539133 --10.551982 -8.1405725 1.1656653 --10.826048 -8.2465525 1.1895922 --10.50695 -7.9020634 1.1503623 --11.128825 -8.2633705 1.2109827 --10.588664 -7.7619281 1.1488404 --10.628019 -7.6909695 1.1479949 --10.685551 -7.633142 1.149094 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.454226 -8.9372988 1.6236587 --16.500849 -8.8319368 1.6228977 --16.615543 -8.7625971 1.6287315 --16.647776 -8.6494551 1.6267024 --16.465481 -8.4268398 1.6042973 --16.604074 -8.369606 1.6125829 --16.748829 -8.3140888 1.6214604 --6.9979925 -3.4201751 0.69575077 --7.0035825 -3.3698266 0.69431347 --7.0169239 -3.3233776 0.69363713 --7.0182185 -3.2714186 0.69186163 --7.0571785 -3.2370188 0.69363713 --7.0814486 -3.1957054 0.69405985 --7.2994556 -3.2403376 0.71249115 --7.3274193 -3.1990767 0.71325213 --0 -0 0 --0 -0 0 --7.381381 -3.0621333 0.71291393 --7.394495 -3.0145271 0.71240664 --7.3980532 -2.9631701 0.71105385 --7.4049687 -2.9133425 0.71003932 --0 -0 0 --21.683807 -8.2260618 2.0026848 --22.151272 -8.2482891 2.0404775 --22.690002 -8.2907324 2.0846112 --22.473124 -8.0555258 2.0605152 --0 -0 0 --22.298038 -7.6853013 2.0360811 --0 -0 0 --0 -0 0 --0 -0 0 --28.390957 -9.0122023 2.562304 --27.646421 -8.5894823 2.4912844 --27.302013 -8.2991257 2.4561126 --28.446972 -8.4568558 2.5530038 --28.530859 -8.291604 2.5558784 --28.561069 -8.1106701 2.5541029 --0 -0 0 --12.874602 -3.4857049 1.1665953 --12.978597 -3.4285309 1.1738664 --12.89518 -3.3219819 1.1647353 --12.776156 -3.2078502 1.1525605 --12.850768 -3.1428912 1.1573796 --0 -0 0 --0 -0 0 --40.454212 -9.1089239 3.5533688 --0 -0 0 --0 -0 0 --18.148788 -3.7366638 1.6070874 --0 -0 0 --17.947714 -3.466238 1.585866 --17.906937 -3.344521 1.5805395 --18.245811 -3.2920914 1.6080174 --25.079296 -4.3664865 2.1948609 --18.226858 -3.0582101 1.6030291 --19.521103 -3.1523676 1.7126871 --18.243322 -2.8312516 1.6013381 --18.405226 -2.7408369 1.6137667 --24.151873 -3.4453866 2.1049025 --0 -0 0 --19.377403 -2.521981 1.692903 --25.59856 -3.1721904 2.2235227 --24.756603 -2.9137189 2.1499662 --23.575771 -2.6281631 2.0476639 --23.791624 -2.5045307 2.0647426 --0 -0 0 --23.358227 -2.1694336 2.0253434 --23.866453 -2.0690207 2.0675325 --0 -0 0 --0 -0 0 --0 -0 0 --23.704178 -1.4699163 2.0500312 --0 -0 0 --43.411266 -2.1578948 3.7228866 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --49.162308 8.876894 3.6510806 --49.323586 9.2188835 3.6670353 --49.359119 9.5393353 3.6738937 --49.386707 9.8593979 3.6803191 --49.410271 10.179755 3.6866 --49.505905 10.516524 3.6983674 --49.52034 10.837576 3.7042873 --49.579399 11.169724 3.7136726 --49.553654 11.48386 3.7169213 --49.642345 11.82584 3.7288332 --49.660885 12.152741 3.7356915 --49.737251 12.495384 3.747026 --49.745602 12.82249 3.7534513 --49.802914 13.163676 3.7637029 --49.732758 13.472143 3.764569 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --40.962105 14.123637 3.1712809 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --35.390694 14.181326 2.794718 --0 0 0 --35.323624 14.660055 2.8033092 --34.748783 14.672049 2.7652631 --34.916534 14.995989 2.7856216 --34.172184 14.925293 2.7341475 --34.165642 15.172744 2.7409337 --57.879444 26.131144 4.6316886 --34.186279 15.686961 2.7576103 --56.651394 26.418316 4.559567 --56.418827 26.73254 4.554008 --0 0 0 --56.106239 27.432512 4.5555964 --0 0 0 --55.788532 28.130632 4.5574732 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --33.519325 19.019003 2.8246062 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --21.287041 13.86916 1.8740308 --21.234833 14.021499 1.8769186 --20.864086 13.961261 1.8521562 --21.062819 14.282146 1.877063 --21.17783 14.550634 1.8948948 --20.33836 14.158294 1.8287654 --20.869717 14.719165 1.8835604 --20.219889 14.447403 1.8338189 --20.323954 14.710977 1.8510733 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --41.433456 31.973949 3.8232627 --0 0 0 --40.123737 31.75638 3.7388682 --39.832401 31.925251 3.7299883 --0 0 0 --37.666935 30.956345 3.5640872 --37.035465 30.820026 3.5225756 --35.915157 30.262596 3.4344993 --0 0 0 --0 0 0 --21.750717 19.022367 2.1265647 --22.319065 19.762474 2.1928387 --21.318106 19.11075 2.1073611 --0 0 0 --35.804665 32.899784 3.5546296 --35.804401 33.307037 3.5746274 --36.132298 34.028027 3.6276176 --15.138253 14.431985 1.5489423 --15.060897 14.535683 1.5500973 --14.966431 14.622942 1.549592 --31.18364 30.846024 3.2099044 --30.970528 31.013493 3.2075219 --14.334723 14.530966 1.5124844 --14.269655 14.643651 1.5150112 --31.821976 33.061539 3.35653 --0 0 0 --14.07758 14.988894 1.5234579 --13.956857 15.044278 1.5204258 --14.011846 15.290681 1.5362362 --13.896343 15.352704 1.533926 --13.777949 15.410912 1.531327 --16.464998 18.645788 1.8355516 --16.251293 18.632959 1.8246503 --0 0 0 --15.768721 18.533949 1.7964226 --16.51124 19.649805 1.8928013 --24.272051 29.249241 2.7861991 --24.059883 29.358278 2.7825172 --15.377516 18.999861 1.8042917 --24.602537 30.783422 2.8874149 --15.508365 19.64986 1.8469582 --15.354399 19.702166 1.8430598 --23.905844 31.06743 2.8724706 --23.699684 31.193674 2.8706658 --23.513823 31.346483 2.8713877 --25.657326 34.645031 3.1555426 --25.209396 34.480545 3.1267371 --25.078485 34.746998 3.1367722 --22.93075 32.185417 2.8955004 --22.697836 32.275745 2.8910968 --22.511311 32.431618 2.8926127 --23.465145 34.25267 3.0403214 --23.296429 34.457977 3.0457358 --23.046366 34.543022 3.0407543 --21.803495 33.118427 2.9051023 --0 0 0 --34.241798 53.429089 4.6284399 --0 0 0 --0 0 0 --8.9783821 14.592268 1.2751836 --8.9554195 14.757082 1.2844965 --8.8636789 14.810042 1.2843522 --8.5085526 14.416618 1.2467391 --8.4384937 14.500451 1.2494104 --10.932629 19.055017 1.6251789 --10.561663 18.672895 1.5878547 --8.3071117 14.898989 1.269769 --8.2261028 14.96891 1.2713573 --8.0676117 14.896315 1.2612501 --8.1117525 15.199844 1.2821141 --7.8855958 14.996843 1.2614667 --16.872009 32.573807 2.6903257 --16.122929 31.600805 2.6028991 --15.479586 30.805248 2.5304887 --9.6515846 19.503613 1.6101626 --9.5531349 19.606403 1.6137002 --8.9331884 18.623253 1.5300997 --8.8200274 18.68042 1.5303164 --8.7052402 18.734188 1.5303164 --14.192173 31.041187 2.5055819 --14.065263 31.269587 2.5168443 --13.845288 31.292364 2.5118628 --13.646654 31.362095 2.5107076 --8.5701723 20.029528 1.6119674 --8.4277782 20.035767 1.6083578 --12.646802 30.59129 2.431078 --0 0 0 --11.81537 29.603846 2.3422074 --11.627678 29.660927 2.3410523 --11.458719 29.766155 2.3437235 --11.298779 29.896549 2.3484161 --11.201139 30.197229 2.3663201 --11.038155 30.32725 2.3710849 --10.887743 30.494915 2.3788097 --10.516527 30.035864 2.3385255 --10.790833 31.436586 2.4408243 --10.595512 31.495588 2.4403188 --10.193834 30.928175 2.3921657 --10.004483 30.992041 2.3923099 --9.8246498 31.086128 2.3948367 --9.6437435 31.178225 2.3972914 --9.2962828 30.721298 2.3583066 --9.0561037 30.603695 2.3451674 --8.8276958 30.518801 2.3346272 --4.0799923 14.434207 1.120761 --3.941468 14.278216 1.1071886 --3.806051 14.124928 1.093905 --3.7167752 14.13837 1.093183 --3.5819228 13.973472 1.0791774 --3.7012763 14.816742 1.1404699 --3.4945605 14.363327 1.1050228 --3.4047546 14.377705 1.1045175 --3.3187087 14.408045 1.1052394 --3.2809942 14.654919 1.1220605 --3.2323227 14.864828 1.1361383 --4.1644249 19.735645 1.4950136 --4.0172668 19.633795 1.4856284 --0 0 0 --3.8017657 19.815811 1.4955189 --3.6602843 19.731873 1.4876498 --0 0 0 --3.4063213 19.708471 1.4827406 --3.2768118 19.677841 1.4789865 --4.4099998 27.527046 2.052927 --4.9536476 32.184822 2.3920934 --4.0657516 27.537649 2.0498948 --4.2124376 29.795975 2.2131972 --4.340764 32.125252 2.3814809 --4.1579676 32.263062 2.3896387 --0 0 0 --0 0 0 --3.3147097 30.076731 2.2252536 --0 0 0 --0 0 0 --3.3662879 36.747593 2.706064 --2.5054138 29.327168 2.1655493 --0 0 0 --1.937393 26.508757 1.9589307 --1.8421849 27.529245 2.0321352 --1.6657994 27.417578 2.0232553 --0 0 0 --1.6775286 34.631683 2.5447111 --1.458811 34.494839 2.5340986 --0 0 0 --1.0057286 33.52018 2.4624102 --0.64360231 26.960762 1.9870863 --0.47795036 26.952236 1.98622 --0.38045022 32.830894 2.4115856 --0.17690596 32.446629 2.3836467 -0.02222706 32.503952 2.3877618 -0.2215509 32.486248 2.3865345 -0.35983568 27.785969 2.0464296 -0.61906493 32.422249 2.3822751 -0 0 0 -1.0188932 32.476013 2.3868954 -0 0 0 -1.1829083 27.096233 1.9982041 -1.3551539 27.209 2.0069396 -0 0 0 -2.1293917 34.27607 2.5208149 -2.3434727 34.318085 2.5248578 -2.0479004 27.508707 2.031702 -1.6238855 20.14678 1.4980457 -1.7504071 20.170221 1.5005003 -1.8687781 20.101501 1.4963131 -1.9976965 20.146229 1.5004281 -2.102766 19.958027 1.4876498 -2.2488654 20.156874 1.5030992 -2.3574452 20.014915 1.4937862 -2.491508 20.091135 1.5004281 -4.183919 32.117893 2.3794594 -4.3594561 31.934488 2.3679807 -4.5537691 31.896278 2.3671865 -4.7416015 31.815453 2.3633602 -4.8817625 31.43194 2.3374426 -5.0637107 31.33444 2.3325336 -5.2837973 31.469011 2.3447342 -5.5219908 31.6954 2.3637934 -5.6360726 31.216295 2.3310897 -5.8385019 31.23995 2.3354213 -2.7860005 14.419906 1.0980922 -2.9211001 14.636302 1.1153466 -2.9573104 14.358255 1.096143 -3.0754099 14.481304 1.106611 -3.3032506 15.097422 1.1536814 -0 0 0 -0 0 0 -3.5244145 14.798294 1.1361383 -3.5980775 14.706636 1.1309403 -3.6520345 14.540151 1.1201835 -3.5131228 13.632782 1.054054 -3.5317078 13.36508 1.0356445 -3.9633896 14.634123 1.1324564 -10.22475 36.848675 2.8030202 -10.487185 36.913807 2.8126943 -10.774474 37.058502 2.8285048 -11.089523 37.287098 2.8508127 -11.399074 37.484585 2.8709548 -10.333581 33.247028 2.5551069 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -8.0369473 20.058247 1.5991169 -0 0 0 -8.289753 19.975613 1.6004887 -8.0846987 19.14888 1.5395571 -8.1929884 19.077835 1.5378966 -8.4987335 19.459526 1.5720443 -8.3839769 18.880146 1.5303164 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.061195 31.752104 2.7156658 -19.325676 31.749563 2.7254119 -0 0 0 -0 0 0 -31.863455 50.240028 4.3412528 -32.476402 50.518429 4.3821149 -31.933073 49.009586 4.2690592 -32.213951 48.783596 4.2665324 -21.248585 31.753355 2.8005657 -13.756501 20.287691 1.809273 -21.649073 31.508297 2.8021541 -14.063694 20.20248 1.8167812 -14.365031 20.367653 1.839089 -0 0 0 -14.330824 19.798805 1.8041472 -14.261533 19.450705 1.7808287 -0 0 0 -14.755188 19.614557 1.8116554 -14.80514 19.431625 1.8032809 -15.032557 19.480967 1.8161315 -30.38623 38.88052 3.6068258 -30.569752 38.624519 3.6004727 -30.731941 38.343609 3.5918818 -30.925779 38.103981 3.587189 -31.103901 37.84647 3.5809083 -31.25132 37.553711 3.5713787 -31.487585 37.368877 3.5721006 -32.008247 37.517166 3.60466 -32.385853 37.491394 3.621048 -36.330502 41.539707 4.0295205 -0 0 0 -43.560047 48.58913 4.758461 -43.47393 47.898495 4.7171659 -43.742043 47.603668 4.7144947 -44.040783 47.342407 4.7152891 -18.967598 20.141298 2.037622 -0 0 0 -19.126749 19.817318 2.0285978 -19.662741 20.124035 2.071553 -0 0 0 -19.481222 19.454851 2.0278759 -0 0 0 -19.923519 19.414085 2.0485954 -20.033644 19.283173 2.047729 -39.735821 37.778763 4.003675 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -43.580421 38.959702 4.2662435 -43.800713 38.67572 4.2645111 -0 0 0 -17.659985 15.212996 1.7222073 -17.57675 14.954413 1.7054584 -17.678104 14.854624 1.7063969 -17.960039 14.904463 1.7243732 -18.028011 14.775016 1.7222073 -18.434656 14.920115 1.7516624 -18.095768 14.463008 1.7118114 -18.134844 14.312776 1.7072632 -18.642439 14.528606 1.7458147 -18.420576 14.174914 1.7174425 -18.583448 14.119544 1.7243732 -18.723192 14.04535 1.7292101 -18.834669 13.949196 1.7315203 -20.849888 15.244333 1.9045688 -21.001265 15.158139 1.9097668 -21.225475 15.122745 1.9214622 -21.191408 14.903296 1.9102721 -20.887518 14.498874 1.8754747 -21.025459 14.404257 1.8798064 -21.062216 14.240342 1.8753303 -21.154175 14.114161 1.8757635 -21.293695 14.019194 1.8803838 -21.453758 13.936628 1.8868091 -21.72781 13.925814 1.9030528 -24.457443 15.464236 2.1295247 -24.740591 15.43158 2.1456239 -24.85775 15.293594 2.147573 -0 0 0 -24.066162 14.40253 2.0651278 -24.109413 14.228233 2.0613737 -0 0 0 -24.55472 14.087639 2.0841148 -0 0 0 -24.760595 13.80468 2.0870025 -0 0 0 -25.747311 13.943368 2.1544316 -28.195948 15.046289 2.3483438 -28.181801 14.817305 2.3396807 -28.163252 14.587686 2.3308008 -28.156277 14.365652 2.323004 -28.171705 14.156346 2.3171563 -28.178474 13.943855 2.3107309 -28.356754 13.816123 2.3182392 -28.643337 13.738915 2.3344827 -28.916506 13.652321 2.3496435 -30.794323 14.308407 2.4928758 -0 0 0 -0 0 0 -0 0 0 -31.113331 13.538419 2.491071 -31.23708 13.36491 2.4943197 -31.416872 13.214365 2.5020444 -0 0 0 -36.6045 14.870162 2.8948507 -0 0 0 -0 0 0 -0 0 0 -36.748482 13.888037 2.8786073 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -36.348709 -1.8107553 2.6693175 -32.221149 -1.8032628 2.3709407 -32.029297 -1.9897343 2.3578734 -0 -0 0 -25.682556 -1.9118736 1.8991543 -31.505077 -2.5400596 2.3228595 -36.515781 -3.1698585 2.6880879 -31.032583 -2.8856502 2.2909498 -30.964668 -3.0710845 2.2873402 -25.487839 -2.6857107 1.89013 -27.426584 -3.0603597 2.0325685 -27.428091 -3.2310398 2.0340846 -27.397852 -3.3980465 2.0333626 -27.408134 -3.5702164 2.0356727 -27.396582 -3.7398069 2.0364668 -27.394842 -3.9109406 2.0380552 -27.366383 -4.0783706 2.0377662 -19.168507 -2.9766386 1.4391356 -19.633326 -3.1723421 1.4745827 -18.723318 -3.1432524 1.4092474 -18.612299 -3.2421534 1.4025333 -19.286968 -3.4817877 1.4536465 -19.236809 -3.5947499 1.4515529 -18.916693 -3.6551759 1.429606 -19.190269 -3.8303492 1.4514807 -19.178127 -3.9504418 1.452347 -38.104858 -8.0943279 2.8547111 -0 -0 0 -37.60276 -8.47122 2.8250394 -37.921238 -8.7878113 2.8526175 -37.73756 -8.989583 2.8430157 -32.184731 -7.8756466 2.4333882 -32.099041 -8.0637445 2.4306448 -0 -0 0 -0 -0 0 -0 -0 0 -31.589703 -8.7653189 2.4079759 -7.9260449 -2.2508249 0.63143164 -7.9178309 -2.3010869 0.63186485 -0 -0 0 -31.444279 -9.5620174 2.4139681 -0 -0 0 -25.726479 -8.1692638 1.988819 -7.9763422 -2.585964 0.64197195 -7.9527502 -2.6323488 0.64139438 -25.407341 -8.5858536 1.9762572 -25.315521 -8.7282581 1.9732972 -26.439487 -9.2977381 2.063684 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.008368 -2.7079651 0.57887459 -20.11832 -7.9181051 1.5999833 -19.932335 -7.9864898 1.5892986 -0 -0 0 -0 -0 0 -19.763577 -8.3442659 1.5878547 -19.564459 -8.4020023 1.5762316 -19.785824 -8.6412621 1.5978175 -19.615753 -8.7106829 1.5885767 -19.645567 -8.868638 1.5952185 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -4.0051303 -2.0803406 0.36171573 -3.9940546 -2.1058073 0.3618601 -3.9740241 -2.1265082 0.36128256 -3.9512613 -2.1456144 0.36048841 -3.8672731 -2.1308126 0.35464072 -3.8610897 -2.1583967 0.35521829 -3.8512433 -2.1840162 0.35550705 -3.88272 -2.2334785 0.35926113 -7.1326227 -4.162539 0.63280332 -13.726668 -8.1253586 1.1896338 -13.639784 -8.187356 1.1865295 -13.803131 -8.4010658 1.2046502 -13.807341 -8.520175 1.209415 -6.7673702 -4.232831 0.61280566 -0 -0 0 -7.0748358 -4.546946 0.64377677 -6.9874725 -4.5516114 0.63865101 -3.9157321 -2.5844359 0.37463841 -3.8724468 -2.5901082 0.37225601 -6.7043929 -4.5451064 0.62132454 -3.8666756 -2.655509 0.37456623 -3.8363936 -2.6694965 0.37333891 -4.695292 -3.3104208 0.45087504 -4.0394907 -2.8851199 0.39434731 -4.1210866 -2.9817882 0.40322715 -4.1702757 -3.0565615 0.40929142 -4.12502 -3.0624664 0.40690902 -4.8808541 -3.6705532 0.47708136 -4.8669667 -3.707082 0.4778755 -4.3356256 -3.3444483 0.43138272 -3.8010788 -2.9693067 0.384168 -3.7108381 -2.9356256 0.37752616 -5.0430212 -4.0406141 0.50278234 -3.6412344 -2.9539144 0.37442183 -4.2078791 -3.4568703 0.42921689 -4.8305645 -4.0185518 0.48985967 -4.8058162 -4.0481157 0.48985967 -3.7360878 -3.186101 0.39044884 -3.6794844 -3.1770165 0.38691136 -3.5886002 -3.1371536 0.38005295 -4.4839978 -3.9691145 0.4684903 -3.3374388 -2.9905379 0.35940552 -3.3352742 -3.0257072 0.36099377 -3.9416275 -3.6204188 0.42243069 -3.9149573 -3.64046 0.42199752 -3.1962435 -3.0086308 0.35276368 -3.5985682 -3.4294422 0.39485267 -2.7902229 -2.6915908 0.3156561 -2.7700884 -2.7051754 0.31529513 -2.289705 -2.2633851 0.26808041 -4.4358444 -4.4405746 0.48935431 -3.6002409 -3.6482761 0.4060427 -2.2476556 -2.3051476 0.26808041 -4.2392354 -4.4028988 0.47744235 -3.513236 -3.693687 0.40402126 -3.1163464 -3.3167479 0.3644591 -3.1020412 -3.3423879 0.36510882 -4.1817884 -4.562233 0.48300126 -2.6337943 -2.9084024 0.31904921 -3.0187221 -3.3751252 0.36279863 -3.9182038 -4.4358182 0.46343675 -2.7004349 -3.0947008 0.33233285 -2.6950648 -3.1270819 0.33384892 -2.6687176 -3.1352031 0.33305478 -1.710125 -2.0335605 0.22736311 -1.6957043 -2.0417128 0.22714654 -1.6812482 -2.0497646 0.22692995 -1.6717765 -2.0639186 0.22729091 -1.6565905 -2.0710208 0.22700214 -1.6506484 -2.0897591 0.22779627 -1.6396339 -2.1022081 0.22801286 -1.6340028 -2.1217148 0.22887918 -2.1060545 -2.7702336 0.28692296 -2.0944033 -2.7902849 0.28757271 -2.0309446 -2.7405634 0.28194159 -1.7215372 -2.3528059 0.2460613 -2.6818259 -3.7139587 0.36662489 -2.6404681 -3.7043495 0.36431471 -2.6974359 -3.8338866 0.37434962 -2.492445 -3.5889869 0.35131982 -1.6355909 -2.385581 0.24440084 -1.5410422 -2.2774129 0.23407714 -1.5054518 -2.2544675 0.23126158 -1.4893967 -2.26033 0.2309728 -1.4744129 -2.2677534 0.23082842 -1.4421731 -2.2482061 0.22837383 -1.4288841 -2.2578559 0.22844602 -1.4150033 -2.2665808 0.22844602 -2.4698055 -4.0124688 0.37608227 -2.4368606 -4.0139046 0.37492719 -1.3556304 -2.2631433 0.22599143 -2.3864067 -4.0417881 0.3747828 -2.3505266 -4.0373893 0.37319455 -2.3118126 -4.0275116 0.37117311 -10.498816 -18.561769 1.578614 -10.457574 -18.756516 1.589443 -8.9691219 -16.32119 1.383041 -1.6252706 -2.9989865 0.28194159 -1.1861367 -2.2204597 0.21725598 -1.1734182 -2.2294617 0.21740037 -1.1578816 -2.233077 0.2171116 -10.476711 -20.533361 1.7035813 -1.1335256 -2.2533565 0.21761696 -1.576152 -3.1828225 0.29212093 -1.5653294 -3.2103665 0.2935648 -1.5460328 -3.2208102 0.29363701 -1.5241122 -3.2257261 0.29327604 -1.4933645 -3.2114992 0.291399 -1.4678253 -3.2079027 0.29038829 -7.8004642 -17.340548 1.411341 -1.4089795 -3.1818919 0.28692296 -1.386246 -3.1831608 0.28634542 -7.4368062 -17.38032 1.4033997 -7.2851686 -17.318975 1.3950251 -7.1562843 -17.308968 1.3907658 -7.0525713 -17.35902 1.3912711 -8.1677227 -20.463552 1.6298715 -7.8818512 -20.1047 1.5981063 -7.7913051 -20.238317 1.6047481 -1.2572964 -3.3238523 0.29226533 -1.0072722 -2.7124395 0.24447304 -0.99436212 -2.7288787 0.24526717 -0.98195863 -2.7471399 0.24620569 -0.97661877 -2.7860613 0.24873248 -0.9663049 -2.8118122 0.25024855 -0.95889139 -2.8469939 0.25248656 -0.95045775 -2.880295 0.25458017 -0.95605028 -2.9582098 0.2600669 -0.96222425 -3.0410542 0.26591459 -0.94796699 -3.0611939 0.26699749 -0.92858833 -3.0650437 0.26685309 -0.91033 -3.0725965 0.26699749 -0.91224253 -3.1499836 0.27241203 -0.94225931 -3.3302066 0.28555128 -0.92578763 -3.3503473 0.28663421 -0.86785638 -3.2172837 0.27623829 -0.82198799 -3.1231906 0.26880234 -0.9828015 -3.8305836 0.32128721 -0.9580707 -3.8317034 0.32092625 -0.75587553 -3.1029027 0.26620337 -0.74003887 -3.1210701 0.26721409 -0.78667068 -3.4113081 0.28843904 -0.77356631 -3.4511099 0.29103801 -0.76635844 -3.5201173 0.2958028 -1.7779984 -8.4228611 0.65814334 -1.7070951 -8.3398046 0.65121275 -0.79992419 -4.0306368 0.33247724 -0.79471612 -4.137341 0.3399854 -1.5389307 -8.2923403 0.64550942 -0.64682353 -3.6048455 0.30013445 -0.61501336 -3.5527253 0.29601941 -1.4397532 -8.6419659 0.66918898 -0.65165657 -4.0612879 0.33276603 -0.62778652 -4.0721107 0.33327138 -0.60322565 -4.078846 0.33348796 -0.58781797 -4.1506133 0.33846933 -0.5093326 -3.7617416 0.3098084 -0.48981002 -3.7924941 0.31182984 -0.46495256 -3.7825584 0.3108913 -0.43746829 -3.7486842 0.30822015 -0 -0 0 -0.39576495 -3.7954361 0.31125227 -2.1241627 -21.715271 1.6143498 -0 -0 0 -0 -0 0 -0 -0 0 -0.22938477 -3.1243927 0.26179954 -0.21360366 -3.1764948 0.26548141 -0.19362548 -3.1697812 0.26490387 -0.1646096 -2.9956295 0.25219777 -0.13494162 -2.7634668 0.23530443 -0.13811077 -3.2405703 0.26981306 -0.11862033 -3.252321 0.27060717 -0.098811619 -3.2579722 0.27096814 -0.079104327 -3.2704825 0.27183446 -0.059494194 -3.2968345 0.2737115 -0.040681221 -3.4198084 0.28259134 -0.018892037 -3.2713845 0.27183446 --0.001117967 -3.1836684 0.26548141 --0.020761976 -3.1995595 0.26663652 --0.040678777 -3.2213128 0.26822478 --0.060806073 -3.2399495 0.26959646 --0.08101242 -3.2524772 0.27053499 --0.10206366 -3.2868104 0.27306178 --0.12346438 -3.3190129 0.27544418 --0.14448029 -3.3331394 0.27652708 --0.1655252 -3.3441441 0.2773934 --0 -0 0 --0 -0 0 --1.4662026 -21.47769 1.5932692 --1.5998119 -21.493155 1.5950742 --1.7314208 -21.47995 1.5948576 --1.8652576 -21.492769 1.5965902 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6467557 -3.4236007 0.31002498 --1.6725508 -3.4232881 0.31081912 --1.6819905 -3.3897352 0.30894208 --1.6937762 -3.3615394 0.30749819 --1.7116431 -3.3457565 0.30706504 --1.7312201 -3.333421 0.30692065 --1.8042308 -3.4224191 0.31507856 --1.8327292 -3.4253526 0.31623363 --1.8575218 -3.4210539 0.3168112 --1.8832935 -3.4183261 0.31753314 --1.9232218 -3.4406543 0.32034868 --4.7613678 -8.3932762 0.73351365 --4.8112855 -8.36131 0.73329705 --4.836854 -8.2877016 0.72961521 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.9191599 -8.4399576 0.97774518 --10.021159 -8.4212809 0.98250997 --10.113323 -8.3933897 0.98633623 --10.112947 -8.2888212 0.98149925 --10.445054 -8.4543734 1.0077056 --10.553611 -8.4355793 1.0129757 --10.389076 -8.2001314 0.99305028 --10.399073 -8.1049643 0.98936838 --10.37114 -7.9813986 0.98229337 --10.4088 -7.9091654 0.98128265 --10.540113 -7.9073906 0.98879081 --10.637328 -7.8787766 0.99319464 --10.711236 -7.8321953 0.99550486 --10.752622 -7.7616553 0.99492729 --10.848783 -7.7302551 0.99925894 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.352236 -8.8559847 1.3810918 --16.459064 -8.7836552 1.3854234 --16.554142 -8.7043123 1.3888165 --16.489449 -8.5415668 1.3792148 --16.468695 -8.4030619 1.3732948 --0 -0 0 --16.6108 -8.2202377 1.3765435 --7.0076547 -3.4152889 0.59930545 --7.0050964 -3.3610122 0.59742838 --7.0183721 -3.3145602 0.59685081 --7.037673 -3.2710135 0.59677863 --7.0748463 -3.2356486 0.59815031 --7.2346482 -3.2551813 0.60926819 --7.2481008 -3.2079043 0.6087628 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --22.25441 -8.7244892 1.7652348 --22.079473 -8.4999943 1.7475474 --21.952078 -8.2966642 1.7336862 --22.176508 -8.2263241 1.7471142 --22.40933 -8.1566095 1.761192 --22.4552 -8.0176144 1.7609032 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --28.422279 -8.9828568 2.1926219 --27.539248 -8.5183144 2.1215832 --27.516533 -8.3266468 2.1159523 --28.470909 -8.425065 2.1841753 --28.514404 -8.2479954 2.1835978 --28.577913 -8.0766764 2.1846085 --28.652893 -7.9083371 2.1865578 --0 -0 0 --12.974053 -3.4107933 1.0060451 --12.810199 -3.2838335 0.9922561 --12.80785 -3.1996119 0.9905957 --12.844687 -3.1252069 0.99189514 --34.068565 -8.0660543 2.5691848 --34.099922 -7.8528333 2.5678852 --34.255501 -7.6676316 2.5758986 --35.022156 -7.6138582 2.6292498 --0 -0 0 --34.922405 -7.1445336 2.6151721 --0 -0 0 --18.939125 -3.6336219 1.4309055 --18.263807 -3.3880453 1.3795757 --18.31665 -3.2817197 1.3819581 --0 -0 0 --18.38801 -3.0621035 1.3843405 --18.26759 -2.9269786 1.3741611 --18.923998 -2.91313 1.4209428 --18.260693 -2.69647 1.371129 --19.187439 -2.7130668 1.4376917 --24.236725 -3.2751572 1.8053024 --0 -0 0 --23.669226 -2.9032052 1.7611198 --23.693527 -2.7587259 1.7616252 --23.756605 -2.6184266 1.7650182 --23.502388 -2.4445565 1.7453816 --25.92017 -2.5352528 1.9201627 --23.919964 -2.1916161 1.7736815 --23.867373 -2.0392041 1.7689167 --0 -0 0 --44.364353 -3.2415764 3.2548089 --0 -0 0 --0 -0 0 --45.063847 -2.4597418 3.3017349 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --40.057011 14.314319 2.5996921 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --39.607433 15.539605 2.6002338 --0 0 0 --0 0 0 --35.425083 14.656776 2.3464653 --35.252605 14.839398 2.3411095 --34.725941 14.869191 2.3125854 --34.496773 15.022208 2.3035588 --34.330933 15.201263 2.2987444 --0 0 0 --57.075562 26.114347 3.8191888 --56.807449 26.414404 3.8120878 --56.485458 26.687422 3.8014965 --0 0 0 --0 0 0 --40.631016 20.119881 2.7686102 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --33.682472 19.062901 2.3684902 --34.332733 19.710022 2.4218676 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --20.978449 13.819917 1.5497155 --20.916502 13.963896 1.5514004 --20.943695 14.168599 1.5596447 --20.927994 14.345941 1.5648801 --20.453424 14.205892 1.5365366 --20.698942 14.56549 1.561089 --20.499453 14.613999 1.552965 --20.457951 14.77457 1.5565757 --0 0 0 --0 0 0 --40.901764 30.699594 3.1183617 --40.672894 30.919781 3.1153529 --40.524326 31.201036 3.1185424 --0 0 0 --40.356174 31.867956 3.1352718 --0 0 0 --0 0 0 --36.798763 30.174955 2.9041901 --36.917805 30.653328 2.9280806 --36.240799 30.468813 2.8896272 --0 0 0 --34.470669 29.710211 2.7787201 --22.474581 19.61261 1.8335124 --21.700768 19.173172 1.7809775 --21.499388 19.231432 1.7742376 --32.994232 29.87986 2.7187834 --32.750675 30.027107 2.7139089 --20.70133 19.215109 1.7380108 --21.126427 19.852373 1.7829634 --20.481329 19.484211 1.7394551 --32.968067 31.750334 2.7946069 --14.931726 14.558145 1.2924567 --14.87835 14.68525 1.2955258 --14.737123 14.725468 1.291193 --14.46403 14.631054 1.2755469 --14.437448 14.784515 1.281023 --14.354775 14.881445 1.2817452 --14.187449 14.889752 1.2751256 --29.02862 30.841713 2.5886195 --0 0 0 --0 0 0 --17.376225 19.156332 1.5944273 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --25.031542 29.357054 2.3610885 --15.778474 18.736908 1.5119842 --24.070053 28.941387 2.3045819 --23.813456 28.992887 2.2971199 --0 0 0 --23.434034 29.255665 2.2950134 --15.517074 19.617622 1.5431561 --23.19676 29.699152 2.3071091 --23.055546 29.894674 2.3112013 --23.086367 30.317499 2.3325644 --23.385193 31.104036 2.3812478 --23.129051 31.159575 2.3746886 --23.08552 31.502996 2.3897932 --0 0 0 --23.563278 32.996712 2.4796381 --22.979078 32.599754 2.4397404 --22.589348 32.468105 2.4197614 --22.36484 32.569893 2.4171135 --22.133215 32.660236 2.4137437 --23.009474 34.405937 2.5305481 --20.471701 31.021536 2.2759373 --20.306026 31.185041 2.2787054 --20.048473 31.206593 2.2713637 --20.467409 32.292686 2.3401465 --20.149282 32.226383 2.3265464 --19.955881 32.357059 2.3270881 --8.8877325 14.61115 1.0662496 --8.8425894 14.739878 1.071485 --8.5634155 14.475133 1.0491592 --8.4905319 14.554995 1.0510849 --18.788713 32.666706 2.3071091 --8.3171883 14.66851 1.051807 --8.2533274 14.766318 1.0550566 --8.176054 14.841162 1.0567416 --10.273906 18.922762 1.3333173 --18.016577 33.673897 2.3376193 --17.606195 33.397942 2.3113217 --15.752043 30.33049 2.0956457 --15.583827 30.462116 2.0980527 --15.371468 30.507244 2.0946827 --14.89293 30.01442 2.0552063 --9.5886364 19.626274 1.3520926 --9.0284262 18.770811 1.2909523 --14.393897 30.401649 2.0630896 --14.234489 30.548208 2.0670011 --9.1927147 20.048944 1.3649104 --13.887689 30.785189 2.0712736 --13.712298 30.900843 2.0733197 --8.6640072 19.852474 1.3410802 --8.5274658 19.871323 1.3388536 --8.3964529 19.902121 1.3374695 --12.486772 30.111454 2.0004449 --12.286331 30.149605 1.9979775 --12.099621 30.220718 1.9977368 --11.611465 29.525238 1.9479098 --11.41246 29.550303 1.9449612 --11.747989 30.983385 2.0328805 --11.329951 30.443071 1.9935243 --11.115891 30.437946 1.9887704 --10.521212 29.367605 1.9158955 --10.306073 29.332726 1.9095768 --10.288128 29.866346 1.9396054 --10.178439 30.147375 1.9535064 --10.048131 30.375105 1.9640374 --9.8514099 30.40485 1.9620515 --9.6091223 30.289658 1.9509789 --9.6394711 31.044901 1.9949687 --9.1064196 29.976463 1.9239593 --8.9757614 30.211662 1.9352726 --8.7974567 30.29109 1.9368372 --8.5555601 30.147646 1.9245008 --8.4061451 30.328472 1.9325646 --3.8564699 14.253727 0.92543429 --3.7607841 14.246238 0.92350858 --3.6640916 14.233278 0.92128205 --3.5652707 14.209989 0.91845369 --3.5320477 14.452677 0.93217415 --3.4199662 14.375998 0.92609626 --3.4230745 14.791538 0.95052832 --4.4247227 19.667845 1.2505732 --4.2519565 19.456684 1.2358899 --0 0 0 --4.0390215 19.634499 1.243713 --3.9487176 19.810646 1.2530404 --3.8142266 19.767855 1.2489485 --3.7148352 19.908636 1.2561697 --3.5895977 19.914354 1.2551467 --0 0 0 --5.2080498 31.071371 1.9345504 --4.4521317 27.599482 1.7206196 --4.9877043 32.173599 1.9980377 --0 0 0 --4.5649099 32.038692 1.9862429 --0 0 0 --3.4575102 26.600561 1.6523782 --0 0 0 --3.2072563 27.291321 1.6918547 --3.3606598 30.193415 1.8667305 --0 0 0 --0 0 0 --3.4562285 37.281181 2.2924259 --3.2268941 37.295719 2.2920649 --3.0258141 37.661068 2.3130066 --0 0 0 --2.5407357 37.361744 2.2928472 --1.7609044 28.47583 1.7552216 --2.002404 35.959927 2.2064924 --0 0 0 --1.5576808 35.905998 2.2019191 --1.2497644 33.563782 2.0600808 --1.0412527 33.48901 2.0551462 --0.6726352 26.960669 1.661104 --0.62904787 33.437389 2.0514152 --0.4119648 32.502396 1.9948483 --0.2136115 32.67001 2.0048378 --0.013098006 32.549923 1.9975562 -0.18600231 32.44059 1.990997 -0 0 0 -0.5069834 28.151339 1.732655 -0 0 0 -0 0 0 -1.1820407 32.447548 1.9926819 -1.2184982 28.619087 1.7621419 -0 0 0 -1.4978091 27.293327 1.683129 -1.8866708 30.912273 1.9022954 -0 0 0 -2.0345471 27.733007 1.7116531 -0 0 0 -3.5538716 41.465446 2.5442085 -0 0 0 -0 0 0 -2.0892498 20.032804 1.24949 -2.2154179 20.049372 1.2512953 -2.3554041 20.181147 1.2601414 -4.2828455 34.840038 2.1514301 -0 0 0 -2.7316971 20.172949 1.2624884 -4.5046897 31.799231 1.9714392 -4.7017665 31.784815 1.9722817 -4.9072013 31.823439 1.976434 -5.1136036 31.862705 1.9807066 -5.3392272 32.011894 1.9917792 -0 0 0 -2.6662173 14.858294 0.94529283 -2.7662685 14.889744 0.94824153 -0 0 0 -2.8679388 14.447375 0.9232077 -2.9811733 14.549785 0.93060952 -0 0 0 -9.1167669 41.878353 2.6190693 -9.3700628 41.806038 2.6181064 -3.4432018 14.93134 0.95901334 -0 0 0 -3.5569687 14.603799 0.94138134 -3.6397293 14.554585 0.93969637 -3.4863479 13.586379 0.8808428 -3.5409443 13.455648 0.87404275 -9.9291477 36.814308 2.3339484 -10.147406 36.72575 2.3322635 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -8.1466379 20.036928 1.3392147 -7.9664321 19.254208 1.2914337 -8.0642862 19.157124 1.2883044 -0 0 0 -8.2975712 19.053974 1.288124 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -32.26062 63.187164 4.3123431 -32.539318 62.778877 4.2981415 -33.053116 62.82362 4.3148708 -33.053364 61.899364 4.2656455 -33.307949 61.465454 4.2498789 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -38.760017 64.727242 4.5835629 -19.24114 31.688559 2.2702205 -19.513708 31.697405 2.279247 -0 0 0 -20.229427 31.974335 2.3162563 -32.477028 50.642712 3.6621857 -31.565897 48.563572 3.5270872 -31.872618 48.383144 3.5281103 -13.586473 20.351141 1.5104196 -13.746325 20.319479 1.5142107 -13.944676 20.342607 1.522094 -21.872381 31.491892 2.3467662 -14.313316 20.340569 1.5346711 -13.982427 19.613499 1.4873716 -14.447307 20.004782 1.5228763 -14.121872 19.303478 1.4771414 -14.559776 19.64794 1.509517 -0 0 0 -29.994928 39.456291 3.0232213 -30.203579 39.228794 3.0199716 -30.350418 38.92308 3.0108247 -30.317104 38.392212 2.9844067 -30.532154 38.180519 2.982481 -30.792234 38.02504 2.9850085 -31.023706 37.833843 2.9848881 -31.27886 37.671188 2.9871147 -31.612835 37.601566 2.9968033 -31.863016 37.43045 2.9986689 -0 0 0 -42.595024 48.811405 3.9408073 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.065226 20.040888 1.7028069 -19.009192 19.738031 1.6872811 -0 0 0 -19.301865 19.555845 1.6917343 -0 0 0 -19.911644 19.684538 1.7232071 -0 0 0 -0 0 0 -39.949059 38.065701 3.3619001 -45.591896 42.911942 3.8098011 -0 0 0 -0 0 0 -43.177914 39.16626 3.5496538 -0 0 0 -0 0 0 -17.570004 15.357338 1.442058 -0 0 0 -17.598391 15.005211 1.4294809 -17.669516 14.879586 1.4278561 -17.68911 14.711528 1.4222596 -17.752048 14.580538 1.4201534 -18.048162 14.639233 1.4362208 -18.005205 14.422128 1.4259906 -18.139549 14.347915 1.429541 -18.143858 14.171211 1.4231622 -18.305559 14.117528 1.428879 -18.832588 14.340574 1.4622775 -18.511732 13.917622 1.4314667 -18.567926 13.782355 1.4293003 -20.833271 15.266538 1.5923212 -20.35396 14.724189 1.5497155 -20.49185 14.633247 1.5532659 -20.683235 14.579124 1.5607882 -20.776398 14.454791 1.561089 -21.14365 14.518588 1.5814892 -21.0679 14.277143 1.5695138 -20.765131 13.886797 1.5412304 -20.874109 13.775067 1.5429755 -21.481874 13.987699 1.5806466 -21.568977 13.856704 1.580767 -21.687319 13.745474 1.5831741 -0 0 0 -0 0 0 -25.118429 15.279477 1.8076963 -24.20253 14.519618 1.736747 -24.208693 14.322048 1.73097 -24.321981 14.188326 1.7327753 -24.565195 14.128902 1.7436675 -24.68008 13.994156 1.7456534 -0 0 0 -25.475063 14.034635 1.7886802 -0 0 0 -28.144936 15.058336 1.9595842 -28.173225 14.851843 1.9552515 -28.152208 14.620727 1.9476691 -28.14275 14.397249 1.9409894 -28.128046 14.172644 1.934069 -28.16083 13.973166 1.9304584 -28.279221 13.816323 1.9326849 -28.573055 13.743361 1.9467063 -28.903139 13.684394 1.9631348 -30.834118 14.367719 2.0860171 -0 0 0 -0 0 0 -31.026752 13.768172 2.0816243 -31.181091 13.608281 2.0862579 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -36.555431 14.635971 2.4091101 -0 0 0 -36.65593 14.156788 2.4041755 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -41.506668 14.298059 2.6818345 -0 0 0 -0 0 0 -42.648777 13.818705 2.7379799 -0 0 0 -0 0 0 -0 0 0 -47.97842 14.254436 3.0526481 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -37.62899 -2.0648623 2.3071694 -37.072609 -2.2625763 2.2743726 -37.4823 -2.5185101 2.3000083 -25.571749 -1.8760238 1.5810077 -0 -0 0 -31.732855 -2.719815 1.9553117 -31.621138 -2.9057965 1.9495949 -0 -0 0 -27.467922 -2.8645215 1.7001592 -27.449829 -3.0330076 1.7001592 -27.405914 -3.198487 1.6986548 -27.417477 -3.3704834 1.7005804 -27.4042 -3.5396733 1.7010618 -27.386909 -3.7084253 1.7013627 -27.384396 -3.8793383 1.7026265 -27.370939 -4.0488992 1.7032884 -19.25209 -2.9688466 1.2095923 -19.303488 -3.0981486 1.2138649 -19.417034 -3.2387021 1.2219889 -18.800756 -3.2546139 1.1855214 -18.942545 -3.3989973 1.1954507 -19.263842 -3.5787859 1.2164526 -19.073895 -3.6647165 1.2061622 -0 -0 0 -18.775194 -3.8468201 1.1906364 -18.672131 -3.9452374 1.185762 -18.761686 -4.0845747 1.1928028 -37.607021 -8.4289694 2.3586812 -37.680065 -8.6884947 2.3664441 -37.463844 -8.8810825 2.3563945 -0 -0 0 -37.212593 -9.3052845 2.347729 -0 -0 0 -9.0556774 -2.3831956 0.5997538 -32.000362 -8.6308374 2.0333619 -8.9872646 -2.48351 0.59734666 -7.9988799 -2.2633464 0.53638691 -7.9119725 -2.2912853 0.53181338 -8.924715 -2.6439795 0.59638381 -8.8424063 -2.6787248 0.59223157 -0 -0 0 -0 -0 0 -7.9842396 -2.5801675 0.54108071 -7.9635181 -2.6275456 0.54077983 -25.441631 -8.5669508 1.6536419 -7.2254853 -2.4827983 0.49582726 -0 -0 0 -0 -0 0 -7.4252286 -2.7052295 0.51165396 -7.3963246 -2.7462227 0.51087165 -0 -0 0 -7.016499 -2.7036443 0.48854578 -7.018362 -2.7539372 0.48974934 -7.2775712 -2.9072866 0.5076822 -7.2632942 -2.9533901 0.50792295 -7.1998401 -2.9792025 0.50497425 -7.1998248 -3.0310688 0.50617778 -5.7202539 -2.4496961 0.41037524 -19.748598 -8.6000481 1.3337986 -4.643784 -2.0565765 0.34141186 -4.5764642 -2.0604482 0.33780119 -4.5582891 -2.0859983 0.33744013 -4.5435939 -2.1130865 0.33731979 -4.5576186 -2.1537178 0.3391251 -4.532619 -2.1760273 0.33834279 -0 -0 0 -0 -0 0 -0 -0 0 -3.957773 -2.0210819 0.30313897 -3.9435248 -2.0444098 0.30301863 -3.9309063 -2.0685682 0.30301863 -3.8846803 -2.0747821 0.30073187 -3.875387 -2.1004813 0.30097258 -3.8685484 -2.1275873 0.30139384 -3.8528059 -2.1498253 0.30121329 -0 -0 0 -0 -0 0 -7.1716061 -4.1762114 0.5355444 -7.087399 -4.1856236 0.53145236 -13.792784 -8.2597666 1.0044473 -7.1694574 -4.3536172 0.54090017 -6.8221483 -4.2002473 0.51821327 -6.7826986 -4.233572 0.51725042 -3.949281 -2.4990284 0.3169798 -6.9226537 -4.4398828 0.53103107 -6.8818898 -4.4735718 0.53006822 -3.8984449 -2.5685527 0.31667891 -6.7476058 -4.5050354 0.52435136 -3.527653 -2.3868852 0.29200613 -3.4874177 -2.3909903 0.29014063 -2.9381387 -2.0410905 0.25090492 -2.9516826 -2.0774617 0.25283059 -3.0835586 -2.1986713 0.26354221 -3.0781019 -2.2233944 0.26414397 -3.0523171 -2.2333992 0.26324129 -3.0385556 -2.2520857 0.26324129 -2.9767797 -2.2347357 0.25963065 -4.8018203 -3.65081 0.39888135 -4.7453194 -3.6540198 0.3962937 -4.4709144 -3.486655 0.37703693 -4.4627538 -3.5245385 0.37805992 -5.5846887 -4.4663887 0.4663403 -5.5835538 -4.5219297 0.46838632 -5.0161638 -4.1136909 0.42632228 -3.6583939 -3.0380731 0.32191435 -3.6190543 -3.0431199 0.32028955 -3.7758951 -3.2147315 0.33419055 -3.7092202 -3.1974354 0.33045954 -3.5376081 -3.0875614 0.3183037 -3.7302957 -3.2962458 0.33533391 -3.3491681 -2.9963133 0.30614784 -3.337379 -3.0228374 0.30668944 -3.3069961 -3.0324652 0.30572662 -3.9372635 -3.6550295 0.35910404 -4.4777913 -4.20818 0.4056814 -3.9355073 -3.74435 0.36271468 -3.4803486 -3.3522854 0.32654801 -3.4582844 -3.3721838 0.32642767 -3.3977437 -3.3540735 0.32305771 -4.4313335 -4.4282188 0.41290268 -3.6693199 -3.7121105 0.34989688 -7.8581128 -8.0472746 0.71330869 -3.5181525 -3.6476607 0.34074989 -3.4640296 -3.6359372 0.33798173 -3.1508937 -3.348208 0.3124063 -3.8167574 -4.1058335 0.37318555 -2.7443006 -2.988878 0.27985027 -2.7198737 -2.9990065 0.27930868 -3.6579397 -4.0832067 0.36572355 -3.5481415 -4.0098939 0.35802084 -2.726619 -3.1199596 0.28502557 -2.7472143 -3.1827207 0.28869638 -3.4134994 -4.0038857 0.35242432 -2.6153615 -3.1062474 0.28003082 -3.1324115 -3.7668903 0.33057991 -3.0984685 -3.7729268 0.32955688 -1.6748812 -2.0654528 0.19554164 -1.6646725 -2.0788071 0.19578235 -1.6549821 -2.0928965 0.19608323 -1.6470248 -2.1093051 0.19656466 -1.6383185 -2.1249044 0.1969859 -1.6421822 -2.1571529 0.19867086 -1.6247163 -2.1616037 0.19824962 -1.6506892 -2.2244315 0.20222133 -1.6476297 -2.2490106 0.20330453 -1.6718286 -2.3116465 0.20721607 -1.6738559 -2.3446059 0.20890105 -2.4151235 -3.4268787 0.28797424 -1.6529392 -2.3764415 0.20974353 -1.6400217 -2.3890076 0.20992406 -1.6410117 -2.4221623 0.21160902 -1.6116911 -2.4106128 0.21004441 -1.5880727 -2.4071267 0.20908158 -1.6391797 -2.5180395 0.21636304 -1.7882583 -2.7841909 0.23471718 -1.7679349 -2.7900524 0.23435612 -1.5274621 -2.4436822 0.20896122 -1.706316 -2.7673585 0.23122689 -1.3635172 -2.2422216 0.19343543 -1.6747954 -2.7923691 0.23152778 -1.6586467 -2.8043113 0.23164813 -1.6685697 -2.8609943 0.23489772 -1.6599418 -2.8867536 0.23598091 -1.6692779 -2.9446411 0.23929067 -1.4690301 -2.628958 0.21678428 -1.6195301 -2.9404242 0.23760569 -1.581453 -2.9134626 0.23507825 -1.2343823 -2.3079021 0.19301419 -1.5893381 -3.0156524 0.24073492 -1.5813861 -3.0457218 0.24211901 -1.5708513 -3.0713634 0.24320221 -1.5667987 -3.1103609 0.24518806 -1.5538961 -3.1324344 0.24603054 -1.0486903 -2.1472874 0.17929372 -1.0238127 -2.1293943 0.17766893 -1.0427643 -2.203299 0.18218224 -9.1671524 -19.673681 1.3437279 -0.9856922 -2.1506004 0.17784946 -0.96796262 -2.1465993 0.1771875 -1.4013613 -3.1588593 0.24356326 -1.3699743 -3.1399527 0.24175794 -8.764842 -20.424446 1.3751405 -8.5601978 -20.290226 1.3628644 -8.3843012 -20.218815 1.3548006 -8.2111111 -20.14971 1.3469776 -7.7986598 -19.478764 1.3001595 -7.7944393 -19.81979 1.3191755 -7.5953608 -19.667046 1.3062373 -7.1938934 -18.973139 1.2585167 -1.2415789 -3.337074 0.24988191 -1.4015394 -3.8387525 0.28159544 -1.386039 -3.8698328 0.28303969 -1.1792822 -3.3574786 0.24976155 -1.2519661 -3.6355102 0.26703247 -6.75634 -20.011923 1.3085843 -4.6947002 -14.192564 0.93644679 -6.5262542 -20.142704 1.3117136 -0.99302953 -3.1313748 0.23327293 -0.96580487 -3.1116703 0.23164813 -0.95365751 -3.1404598 0.23309238 -0.93550724 -3.1500795 0.2333331 -0.89722908 -3.0905774 0.22924103 -0.95128554 -3.3533754 0.2453686 -0.93442452 -3.3726161 0.24621108 -0.84540403 -3.1258395 0.23044458 -0.82264107 -3.1174562 0.2296021 -5.1782603 -20.11446 1.2874018 -0.80205786 -3.1979933 0.23399505 -0.76891148 -3.1475847 0.23056494 -0.772919 -3.2503226 0.23664285 -0.77321798 -3.3425272 0.24205883 -0.77548128 -3.4484882 0.24831729 -0.8103599 -3.709651 0.26414397 -0.83750361 -3.9498801 0.27864674 -0.67446148 -3.2803237 0.23712428 -0.65588224 -3.2922318 0.23760569 -0.76408994 -3.9616861 0.27846619 -0.56361055 -3.0223393 0.22057547 -0.73861527 -4.0994525 0.28634945 -0.71173704 -4.0940733 0.28574768 -0.68313742 -4.0776901 0.28448397 -0.65921718 -4.0887032 0.2849052 -0.64053994 -4.1341 0.28743264 -3.1112823 -20.917507 1.310149 -2.9831579 -20.938181 1.3102692 -2.8551664 -20.960047 1.3105099 -2.7263756 -20.976181 1.3104498 -2.5995784 -21.008366 1.3114127 -0.44133368 -3.7583294 0.26336166 -0.42897677 -3.8571966 0.26919886 -0.40425792 -3.849829 0.2685971 -0.38003871 -3.8462768 0.26823604 -2.0075614 -21.656685 1.3464359 -1.4876558 -17.196457 1.0758178 -1.5691963 -19.533516 1.2166331 -1.44525 -19.488028 1.2133234 -0.17341481 -2.5554962 0.18964425 -0.1571151 -2.5465493 0.18904248 -1.1140485 -20.009649 1.2434121 -0.9900158 -19.991184 1.2419076 -0.86789614 -20.009848 1.24269 -0.12072874 -3.2518754 0.23140742 -0.10086644 -3.255548 0.23158795 -0.081287436 -3.2720716 0.23255078 -0.062448796 -3.3383775 0.23652251 -0.0420397 -3.3446865 0.23688357 -0.021202449 -3.2969694 0.23399505 -0.00097470795 -3.3030267 0.23435612 --0.019275168 -3.2999759 0.23417558 --0.24638507 -20.744894 1.2859576 --0.38099626 -21.150187 1.3105099 --0.08001367 -3.299062 0.23417558 --0.10013401 -3.2945182 0.23393488 --0.74015868 -20.313639 1.2606831 --0.86431998 -20.297745 1.2600211 --0.9932192 -20.381788 1.265437 --0.14929445 -2.7139857 0.19909211 --0.16606593 -2.7150111 0.19921246 --0.18292253 -2.716929 0.199393 --0.19922476 -2.7107778 0.19909211 --0.21632877 -2.7154746 0.19945318 --1.8467233 -21.544762 1.3388536 --1.9798894 -21.543959 1.3395156 --2.1195452 -21.607899 1.3441492 --2.2893567 -21.951897 1.3658131 --2.3471704 -21.241938 1.3236287 --0 -0 0 --2.7192137 -22.119045 1.3787513 --2.7941513 -21.63171 1.3501669 --0 -0 0 --3.0176773 -21.301273 1.332234 --0 -0 0 --0 -0 0 --0 -0 0 --3.4955206 -20.95693 1.3161064 --3.5482852 -20.497402 1.2893275 --3.6937311 -20.585285 1.2960674 --3.8123138 -20.521013 1.2935399 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --6.0411115 -25.4832 1.6141053 --0 -0 0 --0 -0 0 --6.1886368 -24.11849 1.5363561 --0 -0 0 --6.0186214 -22.31465 1.4285781 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6628873 -3.4635444 0.26685196 --1.6591733 -3.4021339 0.26342183 --1.6778024 -3.3874168 0.26312095 --1.6931745 -3.3663568 0.26239881 --1.7119826 -3.3523481 0.2621581 --1.7375728 -3.3515289 0.26282007 --1.7915678 -3.4044082 0.26715285 --1.8237073 -3.4144835 0.2685971 --1.8460506 -3.4058621 0.26877764 --1.8770138 -3.4128392 0.27004135 --1.9149399 -3.4317677 0.27214757 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.927496 -8.6770563 0.83011317 --0 -0 0 --0 -0 0 --9.9358807 -8.3668289 0.81831837 --0 -0 0 --10.149652 -8.3361368 0.82704413 --10.430851 -8.4604616 0.84491682 --10.356359 -8.2952042 0.83516806 --10.396885 -8.2234526 0.83438575 --10.67056 -8.3340054 0.85147619 --10.606884 -8.1799822 0.84275043 --0 -0 0 --10.796622 -8.1169872 0.84955049 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.365303 -8.7557135 1.1541688 --16.461103 -8.6774769 1.1570574 --16.42634 -8.5307627 1.1510998 --16.443718 -8.4120817 1.1487529 --0 -0 0 --0 -0 0 --7.0343008 -3.4364047 0.50720078 --7.0102768 -3.3715444 0.50419194 --7.019104 -3.3229136 0.50340962 --7.0420752 -3.2810473 0.50359017 --7.1310334 -3.2693963 0.50816363 --7.2392182 -3.2653956 0.51400083 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --22.1495 -8.5541306 1.4666705 --22.179169 -8.4095697 1.4652263 --22.215384 -8.2677517 1.4642634 --22.38571 -8.1751156 1.4719661 --22.352757 -8.0079784 1.4666705 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --27.773079 -8.4370327 1.7851298 --28.489334 -8.4640417 1.8269531 --28.525396 -8.2846212 1.8259903 --28.567049 -8.1069832 1.8254486 --28.548922 -7.9128828 1.8212363 --34.044773 -9.2116776 2.1614797 --12.920165 -3.4106836 0.84082472 --12.810349 -3.2977445 0.83270079 --12.823565 -3.2173789 0.83227956 --34.090897 -8.3319283 2.1509488 --34.102535 -8.1133518 2.1485415 --34.149731 -7.9034996 2.1484213 --34.662109 -7.798326 2.1771259 --40.403316 -8.8299532 2.5285022 --18.37022 -3.896559 1.1673478 --0 -0 0 --18.455811 -3.6786404 1.1697549 --18.598589 -3.5885918 1.1771567 --18.446577 -3.441994 1.1665052 --18.410372 -3.3184719 1.163015 --18.399902 -3.2001426 1.1611495 --18.292196 -3.0658948 1.1533866 --18.30081 -2.9520085 1.1527848 --19.039639 -2.9514525 1.1967746 --23.574394 -3.5065198 1.4720865 --24.348478 -3.4691033 1.5179417 --24.194244 -3.2957885 1.5072904 --0 -0 0 --24.509253 -3.032845 1.5240798 --23.641121 -2.7782342 1.4702812 --0 -0 0 --0 -0 0 --23.935595 -2.3670723 1.4852654 --0 -0 0 --25.89311 -2.2401984 1.6020699 --0 -0 0 --44.428097 -3.2953346 2.72101 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --42.066727 13.350698 2.1476352 --46.310181 15.010961 2.3652859 --0 0 0 --40.622429 13.720304 2.0874503 --0 0 0 --40.79401 14.338344 2.1048508 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --40.222248 15.539385 2.0990665 --35.633854 14.018454 1.8680308 --0 0 0 --35.307449 14.392839 1.8601909 --35.171421 14.58969 1.8577529 --34.893505 14.725989 1.8480009 --34.698776 14.895288 1.8425992 --60.870846 26.574751 3.2141378 --0 0 0 --0 0 0 --0 0 0 --55.488098 25.864021 2.9653192 --55.187531 26.137304 2.9578617 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --33.751747 19.143105 1.8924584 --0 0 0 --34.021564 19.851868 1.9205672 --0 0 0 --33.73428 20.2432 1.9182725 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --49.357815 33.017384 2.8774078 --20.882116 14.154287 1.2427571 --20.839334 14.31269 1.2453384 --20.518282 14.278245 1.2317622 --20.474369 14.434957 1.2343436 --20.429302 14.591665 1.236925 --20.377419 14.744264 1.2391717 --44.793015 32.832752 2.6933632 --44.589909 33.106384 2.6933155 --41.405895 31.138197 2.514864 --41.503288 31.611984 2.5322645 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --36.863373 30.665924 2.3302934 --0 0 0 --34.620811 29.52663 2.2130785 --34.341465 29.654287 2.2069118 --34.118256 29.828941 2.2043304 --21.734533 19.238096 1.4245549 --33.018444 29.590069 2.1573393 --21.394733 19.41074 1.417958 --32.762447 30.09371 2.1644621 --21.030577 19.556187 1.4098314 --32.437958 30.537994 2.1675694 --32.200077 30.688904 2.1642709 --32.092392 30.964275 2.1696727 --14.760887 14.417062 1.0229074 --14.703399 14.538264 1.0250108 --14.60474 14.619022 1.0243894 --14.434786 14.627306 1.0189397 --14.358009 14.729192 1.019848 --14.239651 14.788231 1.0179359 --28.0693 29.512625 1.984672 --0 0 0 --27.65814 29.804335 1.9813735 --27.486893 29.986734 1.982234 --0 0 0 --16.759832 18.740009 1.2386459 --27.229824 30.826733 2.0038891 --16.68751 19.126415 1.2502145 --25.021889 29.037537 1.8698951 --24.76362 29.096956 1.8640152 --16.04792 19.0916 1.2290374 --24.233076 29.191908 1.851156 --15.694012 19.142643 1.2200981 --16.172701 19.97533 1.2654638 --15.50158 19.388405 1.2234443 --15.485065 19.6133 1.2313797 --23.077507 29.602465 1.8317955 --22.756525 29.563038 1.8208961 --22.656898 29.810268 1.8273975 --22.962147 30.599871 1.8663576 --22.843523 30.834095 1.8719506 --0 0 0 --0 0 0 --23.15905 32.493881 1.9450904 --22.981647 32.667233 1.9469548 --21.631157 31.151913 1.8504868 --21.482517 31.346672 1.8541198 --20.841 30.81432 1.8157812 --20.75633 31.098642 1.8248161 --20.326145 30.862534 1.8040215 --19.997066 30.772257 1.7917837 --19.734018 30.779175 1.7852346 --20.517069 32.436932 1.8722852 --20.196045 32.367298 1.8612905 --19.152615 31.118484 1.7841829 --18.930216 31.184185 1.7813146 --8.7658978 14.640842 0.85210449 --8.5687571 14.512859 0.84201789 --8.5142183 14.624728 0.84531635 --8.414876 14.660234 0.84440804 --0 0 0 --0 0 0 --10.495008 19.090384 1.0780252 --10.321533 19.050785 1.0723844 --10.187511 19.082037 1.0706635 --16.388134 31.156513 1.7202214 --0 0 0 --15.599977 30.562571 1.6776282 --0 0 0 --14.820951 29.937983 1.6341746 --9.3395243 19.159451 1.0555096 --0 0 0 --9.4040136 19.908463 1.0891635 --9.2694702 19.939522 1.0877771 --9.1382246 19.976948 1.0867733 --9.0351505 20.076366 1.0890679 --13.799134 31.17334 1.666968 --13.791782 31.680546 1.6890533 --13.428913 31.371552 1.6685933 --12.317258 29.269526 1.5552027 --12.140867 29.352858 1.5556329 --12.043269 29.630379 1.5661497 --11.872345 29.731546 1.5675839 --12.041981 30.70212 1.6137624 --11.928037 30.969311 1.6237055 --11.364404 30.054356 1.5731769 --10.836093 29.197363 1.5258989 --10.633156 29.198542 1.5226005 --10.419189 29.166349 1.5176767 --10.250269 29.258955 1.5191586 --10.100393 29.408211 1.5235566 --9.963727 29.600273 1.5301535 --9.6696186 29.320299 1.5129919 --9.5484705 29.561579 1.5221703 --9.4277344 29.811991 1.5318266 --9.1985683 29.720421 1.5243692 --9.0391893 29.852783 1.5281936 --8.8833513 30.000587 1.5328305 --9.1497746 31.611773 1.6104161 --8.5376301 30.189039 1.5368938 --8.352499 30.241821 1.5369416 --8.2192955 30.487316 1.546598 --8.0877104 30.748732 1.557067 --3.6675286 14.297175 0.74182111 --3.5978968 14.392089 0.74540639 --3.5031428 14.38769 0.74411571 --3.4219339 14.439045 0.7455976 --3.354357 14.551264 0.75009114 --3.2759249 14.620307 0.75248134 --4.2847729 19.690098 0.99981821 --0 0 0 --4.0195827 19.627682 0.99427295 --3.9128716 19.72154 0.99766701 --3.8207898 19.896244 1.0050288 --3.6937149 19.892796 1.003738 --3.5759921 19.939665 1.0049332 --3.451875 19.951389 1.0044552 --4.4555507 26.730164 1.3323414 --4.4350433 27.652521 1.3757472 --4.2698498 27.70883 1.3771814 --4.7431321 32.088188 1.5878049 --3.8017166 26.856182 1.3335365 --3.6237378 26.781998 1.3288517 --3.4783821 26.951336 1.3359745 --0 0 0 --6.3972287 54.8731 2.6793568 --3.3314054 30.179911 1.4885643 --4.548883 43.669441 2.136688 --0 0 0 --0 0 0 --3.1658332 36.985241 1.8119569 --2.9633415 37.312645 1.826776 --1.9840353 27.082317 1.3350184 --1.8272461 27.234505 1.3417587 --0 0 0 --1.4385294 26.261501 1.2941462 --1.2847319 26.421482 1.3014123 --0 0 0 --1.2628459 34.770226 1.700574 --0.81247628 26.914894 1.3241191 --0.8066572 33.557861 1.6419188 --0.60259026 33.666042 1.6468904 --0.39046785 33.196678 1.6242791 --0.18675275 33.195454 1.6241357 -0.016952762 33.229935 1.6257612 -0.21602245 32.50705 1.5911989 -0.42730719 33.427979 1.6353697 -0.62233841 32.893433 1.609938 -0 0 0 -0.95908546 30.742813 1.5074466 -1.215829 32.55899 1.5947365 -1.3329306 30.65189 1.5037658 -0 0 0 -1.6412739 29.420504 1.4456364 -0 0 0 -0 0 0 -2.0647593 27.800497 1.3695805 -2.5016677 31.096804 1.5284804 -2.425163 27.996969 1.3803364 -1.8854673 20.319328 1.012056 -2.0103056 20.309364 1.0121516 -2.1061342 20.02347 0.99900556 -2.2291775 20.012156 0.99910116 -4.0339599 34.293007 1.6879538 -4.2446704 34.270584 1.6880972 -2.5855579 19.878588 0.99479878 -2.7327206 20.047422 1.003738 -2.8242266 19.809763 0.99307787 -2.9454298 19.790085 0.99298227 -4.9313846 31.787918 1.5749457 -0 0 0 -0 0 0 -5.6163869 32.27039 1.6030543 -5.8756475 32.575432 1.6195945 -0 0 0 -0 0 0 -2.8929391 14.508431 0.74344641 -2.9776771 14.469862 0.74244255 -3.0925398 14.574432 0.74846584 -9.2447853 42.278492 2.1066194 -3.375803 15.000205 0.77126825 -3.463948 14.962667 0.7704556 -3.5415812 14.881857 0.76753956 -3.5509655 14.525105 0.75104725 -3.6597247 14.581515 0.75491935 -3.5146568 13.648575 0.70993596 -3.5276737 13.359245 0.69669431 -10.040635 37.092041 1.8744843 -10.274445 37.052834 1.8756316 -10.511971 37.025608 1.8774481 -11.285257 38.840405 1.9711435 -9.9808083 33.581036 1.712047 -10.185218 33.514385 1.711808 -0 0 0 -10.583032 33.346886 1.7098001 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.8048105 19.840658 1.0557964 -8.0835047 20.184618 1.0760175 -8.1585598 20.015322 1.0698508 -8.169838 19.696404 1.0559398 -8.4466772 20.015844 1.0751569 -0 0 0 -24.544844 56.221462 2.9713423 -0 0 0 -0 0 0 -25.067888 54.653416 2.9130695 -0 0 0 -36.687317 77.462212 4.1374202 -0 0 0 -0 0 0 -31.377886 63.217304 3.4130971 -31.665833 62.826462 3.4025326 -31.461443 61.479488 3.3406267 -0 0 0 -32.180908 61.026932 3.3372805 -32.598118 60.909344 3.3416784 -33.21199 61.151443 3.3658192 -0 0 0 -34.196819 61.162987 3.3890519 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.522827 31.647116 1.8150163 -0 0 0 -0 0 0 -35.181343 54.746899 3.1498895 -0 0 0 -21.01158 31.831961 1.8608123 -0 0 0 -13.816323 20.38356 1.2139314 -13.938307 20.294283 1.2136924 -0 0 0 -14.257097 20.22212 1.2195722 -13.923402 19.493782 1.1819029 -14.054462 19.424168 1.1828589 -14.419631 19.673502 1.2027931 -0 0 0 -0 0 0 -0 0 0 -30.465221 39.492706 2.422507 -30.515102 39.059452 2.4075921 -0 0 0 -30.55555 38.137173 2.3741772 -30.805344 37.969135 2.3754203 -31.082758 37.834198 2.3788142 -31.787041 38.210995 2.4141891 -31.827204 37.785286 2.3998001 -35.413467 41.522938 2.6472325 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -43.99667 47.897537 3.1480253 -0 0 0 -0 0 0 -19.071959 20.011736 1.3584423 -19.23531 19.936747 1.3612627 -19.272125 19.731173 1.3554306 -0 0 0 -19.711384 19.691549 1.3688635 -19.83326 19.571634 1.3689591 -19.42795 18.937836 1.3338711 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -17.701563 15.636785 1.1657929 -17.653414 15.402456 1.1566625 -17.531174 15.107371 1.1429906 -17.517805 14.909534 1.1363459 -17.628075 14.817834 1.1375409 -17.780916 14.761067 1.1414131 -18.098261 14.837862 1.1554674 -18.118317 14.669341 1.1511172 -18.052729 14.433772 1.1416043 -18.079802 14.274455 1.1378756 -18.05912 14.07912 1.1313264 -18.201368 14.011303 1.1347204 -18.424576 14.003917 1.1429906 -20.581036 15.44449 1.266898 -18.698576 13.853465 1.1491573 -18.850952 13.788002 1.1531727 -20.551659 14.839109 1.2485892 -20.56098 14.654757 1.2438087 -20.795116 14.630044 1.25227 -21.150326 14.686749 1.2677585 -21.289482 14.590574 1.2706267 -21.678127 14.662234 1.2879317 -20.928555 13.968917 1.2396499 -20.826176 13.716629 1.228894 -20.947638 13.613075 1.2310451 -21.413376 13.729575 1.2527959 -22.20717 14.046958 1.2929989 -0 0 0 -24.34462 14.983776 1.4035213 -0 0 0 -24.458097 14.642859 1.3996969 -24.456306 14.438686 1.3946297 -25.140953 14.635575 1.4276621 -24.658506 14.152895 1.3961116 -24.728365 13.991982 1.3952034 -25.393002 14.163035 1.4269451 -0 0 0 -25.556108 13.8456 1.4264671 -28.142223 15.023931 1.5621821 -28.137518 14.80029 1.5569714 -28.151531 14.587843 1.5528603 -28.136417 14.361707 1.5472673 -28.153505 14.153355 1.5434908 -28.169994 13.945778 1.539762 -28.268503 13.779231 1.5404791 -28.715443 13.779659 1.559744 -28.91506 13.657806 1.5658629 -0 0 0 -0 0 0 -0 0 0 -31.083828 13.759515 1.6622832 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -36.597061 14.613578 1.9213798 -36.923164 14.481743 1.9335698 -36.819309 14.180965 1.9237221 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -42.40295 14.854438 2.1856871 -0 0 0 -41.662823 14.023589 2.1392694 -42.432983 13.993532 2.1737838 -42.642563 13.77312 2.1800461 -0 0 0 -0 0 0 -48.252041 14.609587 2.4482255 -48.165504 14.261351 2.4394772 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -17.432268 0.74084944 0.87046111 -17.425507 0.63347471 0.86993527 -17.446037 0.52705348 0.87074792 -17.351084 0.41764778 0.86606318 -17.344332 0.3110151 0.86563295 -17.462772 0.20595682 0.87122595 -17.457714 0.098769873 0.87093914 -17.446005 -0.0083439611 0.8703655 -17.437634 -0.11533709 0.86998308 -0 -0 0 -17.424919 -0.3291257 0.86950505 -17.470501 -0.43723956 0.87179965 -17.383627 -0.54180884 0.86778408 -17.475798 -0.6520443 0.87237328 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -17.410774 -1.4001404 0.87136936 -17.431709 -1.5095319 0.87280351 -0 -0 0 -0 -0 0 -27.423088 -2.8848855 1.355096 -27.427702 -3.0556407 1.3561954 -25.494844 -2.9987106 1.2639819 -27.424818 -3.3965347 1.3579643 -27.40247 -3.5646174 1.3579165 -25.393761 -3.4618106 1.2619742 -27.377428 -3.9035811 1.3589203 -27.362841 -4.0729637 1.3593984 -27.347206 -4.2423139 1.3598764 -19.264338 -3.1092517 0.96931934 -19.568991 -3.2817681 0.9850468 -18.938372 -3.2955713 0.95540845 -19.02199 -3.4305108 0.96047568 -19.323622 -3.6074905 0.97620314 -18.925501 -3.6534548 0.95789427 -18.931133 -3.7751772 0.95928055 -19.074909 -3.9257061 0.96745503 -19.07489 -4.0478592 0.9686501 -37.657127 -8.234128 1.8802207 -37.570812 -8.4571352 1.8784997 -37.624283 -8.7120705 1.8837104 -37.511814 -8.9288845 1.8808421 -37.602833 -9.1947145 1.8880606 -37.365513 -9.3800268 1.879169 -0 -0 0 -0 -0 0 -9.0478516 -2.4482918 0.48401523 -9.0153332 -2.4989576 0.48315477 -7.9678526 -2.261204 0.43181348 -7.9288898 -2.3028045 0.4305706 -8.9103613 -2.6474006 0.48028654 -8.8767471 -2.6967952 0.47942606 -26.121584 -8.1136465 1.3444836 -9.0971823 -2.8862057 0.49218968 -7.984695 -2.5871363 0.43711972 -7.9715152 -2.6370223 0.43726313 -25.538906 -8.6253567 1.3255055 -7.2416248 -2.4944615 0.40198392 -7.2214713 -2.5371923 0.4017449 -11.238646 -4.0269232 0.6067754 -0 -0 0 -7.3579535 -2.7383466 0.41116226 -7.2550921 -2.75085 0.4067643 -0 -0 0 -7.0218749 -2.7614138 0.39653429 -7.0187078 -2.8100183 0.39725134 -7.2112961 -2.9386287 0.40810281 -7.1857486 -2.979759 0.40772039 -19.701118 -8.3138437 1.0588081 -19.590992 -8.4093523 1.0557486 -4.8228421 -2.1043603 0.28725481 -4.7167192 -2.0925751 0.28237882 -4.6682835 -2.1054528 0.28051448 -4.5926313 -2.1053224 0.27721602 -4.5090113 -2.1005456 0.27348733 -4.6422787 -2.1974373 0.28123152 -4.5648022 -2.1951311 0.27783746 -4.562016 -2.2283621 0.27841112 -3.9631236 -1.9658692 0.24714743 -3.9982605 -2.0139775 0.24968103 -4.5780234 -2.3415346 0.28151834 -3.9785631 -2.0656536 0.24996784 -3.9649301 -2.0895607 0.24992004 -3.9256144 -2.0997097 0.24848594 -3.8854468 -2.1089785 0.24700402 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -7.1878109 -4.1930785 0.43367782 -7.0785656 -4.1877575 0.42904088 -7.1452355 -4.286622 0.43420368 -7.1580505 -4.3542681 0.43640265 -13.782349 -8.5014324 0.81041956 -6.7585583 -4.2256794 0.4168987 -3.5251503 -2.2335844 0.23514867 -3.8508594 -2.4733372 0.25446141 -3.3920171 -2.2079854 0.2291254 -3.3742373 -2.2260053 0.22888638 -3.3796103 -2.2594414 0.22998586 -3.3135951 -2.2448261 0.22697422 -3.3096387 -2.2719021 0.22754787 -3.035743 -2.1112943 0.21239406 -2.9468119 -2.0763512 0.20794831 -2.9730301 -2.122262 0.2102429 -2.9251561 -2.1152847 0.20818733 -2.9145386 -2.1349647 0.20833074 -2.9879961 -2.2171171 0.21349356 -2.9735374 -2.2348089 0.21344575 -5.4357333 -4.1389785 0.36240238 -25.302156 -19.517902 1.5647634 -5.2900796 -4.1315765 0.35666591 -3.375257 -2.6690593 0.24136317 -4.4064698 -3.5291417 0.30561146 -4.3211288 -3.5045068 0.30169156 -0 -0 0 -3.9645042 -3.2966342 0.28218761 -4.0152483 -3.3807447 0.28663337 -3.885752 -3.3126273 0.27979741 -3.6211691 -3.1255405 0.26435679 -3.5680845 -3.1181149 0.26220563 -3.5817933 -3.1690805 0.26430899 -3.4931035 -3.1290004 0.25986323 -3.3517816 -3.0396278 0.2519756 -3.8075335 -3.4959767 0.28280905 -2.8468347 -2.6458685 0.22142898 -4.0676126 -3.8279564 0.30274323 -3.8018286 -3.6219788 0.28672898 -2.7904625 -2.6908855 0.22095095 -2.7660391 -2.7002792 0.2204251 -4.4688997 -4.4175625 0.3361581 -4.4544163 -4.4576206 0.33701855 -3.6033452 -3.6501524 0.2808969 -2.7498326 -2.8195643 0.22391479 -3.5132499 -3.6473248 0.27778965 -3.1727829 -3.33442 0.25570431 -2.8438232 -3.0254951 0.23414479 -3.8205612 -4.1155419 0.30417734 -3.7567663 -4.0969353 0.30145255 -3.592787 -3.9666321 0.29155716 -3.6203156 -4.0466785 0.29528585 -3.5808699 -4.0523462 0.29423416 -2.7226562 -3.1190858 0.23357114 -3.3841689 -3.9257267 0.28347832 -2.6796439 -3.1469374 0.23323652 -3.754123 -4.4647427 0.31459859 -3.1167533 -3.7529385 0.26889816 -3.3710291 -4.1103349 0.28983623 -1.6827472 -2.0767376 0.16334738 -1.6849422 -2.1057482 0.16449466 -1.6695142 -2.112911 0.16430345 -3.6068954 -4.6251054 0.31612831 -2.9832079 -3.8738215 0.26942399 -2.9460859 -3.8745575 0.2683723 -1.6477321 -2.1939931 0.16674145 -1.6716976 -2.2546268 0.16975307 -1.6566527 -2.2632291 0.16965747 -2.4794211 -3.4322464 0.23806471 -2.4287496 -3.4059107 0.23562671 -1.6957467 -2.4085312 0.1763978 -1.6854937 -2.4254546 0.17678024 -1.6604162 -2.4209197 0.17591977 -1.5839779 -2.3400478 0.17066135 -1.5779071 -2.3621852 0.1713784 -1.5804138 -2.3976831 0.17286032 -2.3727872 -3.6494417 0.24375336 -2.3428028 -3.6521597 0.2430841 -2.3240869 -3.6723752 0.24341872 -2.3110271 -3.7018204 0.24427919 -2.7275081 -4.4296408 0.28438658 -1.5092312 -2.4841142 0.17453346 -1.4801084 -2.4701881 0.17324276 -1.804628 -3.0546703 0.2052235 -1.7828361 -3.0605063 0.20493667 -1.6700555 -2.9076524 0.19590175 -1.768754 -3.1238832 0.20723125 -1.752472 -3.1399117 0.20751807 -1.724031 -3.1339741 0.2066098 -1.7019141 -3.1392241 0.20632298 -1.2578695 -2.3539114 0.16315615 -1.5949135 -3.0299189 0.19929582 -1.5919162 -3.0698018 0.20092115 -1.1997981 -2.348196 0.16162643 -1.5447043 -3.0703645 0.19991727 -1.5165302 -3.060986 0.1989134 -1.5406071 -3.1582265 0.20359817 -1.0661902 -2.2193365 0.15326077 -1.0034966 -2.1219699 0.14776333 -1.0123508 -2.1751883 0.15024912 -1.0018933 -2.1877177 0.15058376 -8.0899744 -17.975859 0.9788323 -7.8800721 -17.800467 0.96707261 -1.3932121 -3.1976526 0.20235527 -7.6960201 -17.977554 0.97132713 -7.6913271 -18.275782 0.98437756 -7.3511438 -17.77158 0.95583868 -7.34162 -18.061571 0.96850669 -7.2576962 -18.173996 0.97199637 -7.1529751 -18.235855 0.97290468 -6.7189469 -17.443289 0.93002462 -6.6181488 -17.501003 0.93088514 -1.2416987 -3.3427205 0.20608397 -1.2139879 -3.3305664 0.20508009 -1.3366616 -3.7386699 0.2254445 -1.1819412 -3.3706658 0.20637079 -1.1982211 -3.4855509 0.21182042 -5.968545 -17.7299 0.93074173 -5.9547367 -18.054567 0.94527406 -4.616848 -14.291557 0.75420231 -1.2622889 -3.9881923 0.23562671 -0.97527951 -3.1475697 0.19312914 -0.95652688 -3.1554065 0.19322474 -0.93799835 -3.1640894 0.19336815 -0.92328674 -3.1860967 0.19418082 -0.89828414 -3.1724784 0.19322474 -0.86843181 -3.1403806 0.1913604 -0.85148621 -3.15433 0.19179063 -0.82805079 -3.1440389 0.19102576 -0.83181846 -3.2390428 0.19547153 -0.78843755 -3.1500876 0.19083455 -4.404335 -18.090233 0.92648715 -4.278976 -18.056654 0.92352331 -0.79716134 -3.454124 0.20508009 -0.77158582 -3.4394562 0.204124 -0.9258554 -4.2503242 0.24360995 -0.73179638 -3.4603934 0.20469765 -0.90147507 -4.3973856 0.25025466 -0.87525356 -4.4067531 0.25044587 -0.58587146 -3.0455856 0.18385521 -3.4543614 -18.603323 0.94097173 -3.3849201 -18.873898 0.95311385 -3.2678566 -18.887423 0.95277923 -3.1348286 -18.804649 0.94780767 -3.0225492 -18.843256 0.94876373 -2.9258828 -18.984848 0.95473921 -2.7627573 -18.687231 0.93948978 -2.6753345 -18.896687 0.94881153 -0.44084227 -3.2504621 0.19241208 -0.42050609 -3.250134 0.19226867 -2.3873112 -19.433479 0.9724744 -2.3686354 -20.310923 1.0140637 -0.4271102 -3.8599715 0.22128557 -0.34692827 -3.3200772 0.19518469 -0.37737355 -3.8410637 0.22013828 -0.25204167 -2.7342401 0.16683705 -0.27511317 -3.201498 0.18920922 -0.25664967 -3.2180617 0.18992628 -0.23616983 -3.209614 0.18944824 -0.17236821 -2.5532341 0.15789774 -0.19731151 -3.2212436 0.18987848 -0.2329496 -4.2347183 0.23839933 -0.2066222 -4.229084 0.23806471 -0.13997571 -3.2712338 0.19212526 -0.15507148 -4.2412829 0.23854274 -0.60554177 -20.049873 0.99542022 -0.079811193 -3.2762518 0.19226867 -0.059778351 -3.2806747 0.19245988 -0.039577108 -3.274987 0.19217306 -0.01952051 -3.28216 0.19250768 --0.00061173114 -3.269233 0.19188623 --0.021685751 -3.4209905 0.19915241 --0.044468462 -3.5606215 0.20584494 --0.059121642 -3.1807842 0.1876795 --0.078061126 -3.1573951 0.18658002 --0.098680437 -3.1967914 0.18849216 --0.11971149 -3.2340558 0.1903087 --0.87340462 -20.093981 0.99800164 --0.13575123 -2.7564752 0.16750631 --0.15644807 -2.8234072 0.17075697 --1.2419471 -20.055559 0.99709338 --0.17967491 -2.6538551 0.16272593 --0.19269823 -2.6088738 0.16062255 --0.21086597 -2.6345246 0.16191326 --0.22676842 -2.6301956 0.16176985 --0 -0 0 --1.9604914 -19.806404 0.98796284 --2.1581972 -20.518167 1.0228118 --2.2905812 -20.56311 1.0256323 --2.4321191 -20.679613 1.0319424 --2.555645 -20.637537 1.0306517 --2.803771 -21.555513 1.0757306 --2.8126209 -20.633322 1.032038 --2.9178751 -20.46636 1.0248196 --3.0344262 -20.387804 1.0219035 --3.1573222 -20.354982 1.0212343 --3.2792926 -20.317478 1.0203738 --3.654103 -21.788401 1.0927488 --3.1023414 -17.828354 0.9014858 --3.2187693 -17.848301 0.90339792 --4.023365 -21.550529 1.0846221 --3.4129326 -17.679962 0.89718342 --4.3279681 -21.702303 1.0945175 --4.3420172 -21.097139 1.0662655 --4.4726295 -21.075962 1.0665523 --0 -0 0 --5.2519603 -23.333849 1.1800863 --5.8664827 -25.336914 1.2800919 --4.4833012 -18.837654 0.96214879 --5.0721798 -20.745466 1.0575174 --4.688591 -18.679495 0.95712942 --5.9079409 -22.939291 1.1690915 --6.491693 -24.580086 1.2521266 --5.5716796 -20.584852 1.0560354 --6.2514997 -22.546562 1.1551806 --6.3700809 -22.438597 1.1517386 --0 -0 0 --7.6928716 -25.884077 1.3277522 --7.8338299 -25.77809 1.3248363 --6.5401201 -21.05644 1.0906454 --6.6894431 -21.079702 1.0938482 --6.8263602 -21.062014 1.0950433 --6.9943819 -21.137318 1.100971 --0 -0 0 --8.0450706 -23.347496 1.2172776 --9.9957638 -28.44001 1.478143 --10.136041 -28.283173 1.4733148 --10.251805 -28.06283 1.4652838 --10.448548 -28.065859 1.4686779 --0 -0 0 --10.742854 -27.807878 1.4621288 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --1.6810538 -3.4964046 0.22109435 --1.6678258 -3.4151289 0.21731785 --1.678979 -3.3851476 0.21626617 --1.6916258 -3.3587265 0.2154057 --1.7103826 -3.344727 0.21521449 --1.7419251 -3.3554423 0.21636178 --1.7895046 -3.3959358 0.21913441 --1.8286902 -3.4192371 0.22099875 --1.8544031 -3.4167297 0.22147679 --1.8811182 -3.4157846 0.22205043 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --9.8523788 -8.3861065 0.65462697 --0 -0 0 --0 -0 0 --10.288568 -8.4357367 0.672171 --10.30287 -8.3422813 0.6698764 --10.374148 -8.2951231 0.67111927 --10.555779 -8.334672 0.67910254 --10.631142 -8.288784 0.68058443 --10.587607 -8.1508951 0.67489576 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.474388 -8.6660509 0.92629594 --16.463396 -8.5317163 0.92285407 --16.589279 -8.4682264 0.92682177 --0 -0 0 --0 -0 0 --7.019136 -3.4223952 0.40915447 --7.0138869 -3.3667309 0.40776819 --7.0335097 -3.3232045 0.40772039 --7.0537682 -3.2799852 0.40772039 --7.073761 -3.2366424 0.40772039 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --22.262234 -8.4183064 1.1744933 --22.281628 -8.2697334 1.1728679 --22.488693 -8.1899338 1.1808512 --22.496193 -8.0366726 1.1787 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --27.99431 -8.4765339 1.4352629 --28.376223 -8.4024334 1.4517553 --0 -0 0 --28.358011 -8.0198793 1.4458276 --0 -0 0 --0 -0 0 --12.806067 -3.3690333 0.66915935 --12.79457 -3.2822056 0.6675818 --12.827065 -3.2067862 0.66820323 --34.10482 -8.3022556 1.7152976 --34.289249 -8.1246128 1.7218945 --34.275188 -7.8994861 1.7187873 --0 -0 0 --40.477524 -8.8070707 2.0179434 --40.547413 -8.562047 2.0187562 --40.608971 -8.3150949 2.0192342 --40.591625 -8.0523577 2.0159357 --18.362047 -3.5262611 0.93026364 --18.418694 -3.42009 0.9319846 --18.486525 -3.3154714 0.9342792 --18.744707 -3.2431734 0.94584769 --18.400688 -3.0675118 0.92820811 --0 -0 0 --24.148949 -3.7214346 1.2048008 --24.034966 -3.5530381 1.1982039 --24.172028 -3.4218705 1.203797 --24.235132 -3.2792466 1.2058525 --24.384573 -3.1472239 1.2121148 --23.813534 -2.9251144 1.1836716 --28.105171 -3.2771389 1.3896103 --0 -0 0 --24.013357 -2.5019121 1.19089 --24.016329 -2.3533535 1.1903163 --28.025942 -2.5725448 1.3823441 --25.905457 -2.2177868 1.2797573 --0 -0 0 --44.444916 -3.2552567 2.1681907 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --118.43729 10.108509 4.2904339 --118.49245 10.845967 4.2947264 --118.45948 11.576319 4.2960143 --118.41008 12.305433 4.2968726 --118.15354 13.012061 4.2904339 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --46.568428 14.714111 1.7837377 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --40.974304 14.343148 1.5895336 --40.833755 14.575814 1.5875661 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --35.481033 14.158172 1.4030204 --0 0 0 --35.105129 14.510057 1.3952937 --34.979507 14.710077 1.3938986 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --55.83197 25.521805 2.2329934 --55.195774 25.641594 2.2141061 --55.009384 25.966562 2.2129972 --54.824692 26.291937 2.2120314 --54.683899 26.638344 2.2128899 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --52.435963 28.391294 2.1699996 --52.292301 28.729826 2.1712873 --52.120274 29.053062 2.1715021 --0 0 0 --33.858063 19.421824 1.4327824 --0 0 0 --33.707554 19.889175 1.4365385 --33.542858 20.070484 1.4347856 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --49.59272 33.524052 2.1782987 --20.823997 14.26398 0.9390983 --0 0 0 --20.478985 14.400036 0.93172938 --20.406521 14.537018 0.93244481 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --37.528084 30.368135 1.7636341 --37.144699 30.436949 1.7545481 --36.941093 30.65089 1.7537968 --39.822182 33.456036 1.8973126 --34.646973 29.47275 1.6637955 --34.248913 29.498262 1.6535648 --0 0 0 --0 0 0 --21.678122 19.377697 1.0763898 --21.536585 19.490229 1.0753167 --21.443853 19.646988 1.0766401 --32.651978 30.286264 1.629741 --32.341679 30.369747 1.6236597 --32.247437 30.655754 1.6282384 --32.163139 30.953526 1.6334254 --32.167305 31.339981 1.6431552 --14.664004 14.463601 0.77286762 --14.599026 14.577312 0.77408385 --14.444644 14.601256 0.77079284 --14.338716 14.673173 0.76997012 --28.193798 29.207264 1.4886935 --27.959574 29.322571 1.4858675 --27.667439 29.374998 1.4800367 --27.626225 29.694201 1.4873699 --27.604446 30.03828 1.4958835 --28.879879 31.815775 1.573651 --27.255768 30.399323 1.497064 --27.13896 30.645292 1.5008558 --25.257481 28.87582 1.4088154 --25.918053 30.00049 1.4547104 --24.81171 29.078682 1.4038789 --16.32711 19.37467 0.94253236 --24.025948 28.867865 1.3799834 --15.924403 19.374386 0.9333033 --16.053377 19.777439 0.94739735 --15.666698 19.54495 0.93223017 --23.069599 29.144768 1.3661041 --22.898336 29.296007 1.3665692 --22.729139 29.450197 1.367213 --22.634626 29.702772 1.3723284 --22.921806 30.465576 1.4003018 --22.370924 30.116282 1.378481 --22.222355 30.302944 1.3806989 --22.915649 31.653774 1.4343921 --21.700647 30.366032 1.3715771 --21.303076 30.19973 1.3584847 --21.087679 30.287228 1.3566246 --20.297523 29.537235 1.3184563 --20.148998 29.710022 1.3205668 --0 0 0 --19.954174 30.214388 1.3316917 --19.743855 30.29858 1.3300821 --19.546764 30.402344 1.3293667 --0 0 0 --19.258087 30.777164 1.3351617 --18.929255 30.668541 1.3256464 --18.715256 30.742285 1.3238935 --18.503637 30.818842 1.3223196 --8.5993919 14.524383 0.63979721 --8.5267382 14.605354 0.64097768 --20.993952 36.471268 1.5419216 --20.778158 36.614174 1.5425297 --20.556034 36.746208 1.5427443 --18.020723 32.68322 1.3715414 --17.969196 33.06802 1.3827379 --17.770203 33.185581 1.3830599 --10.109722 19.161716 0.81110746 --16.432871 31.61441 1.3109801 --16.320108 31.873873 1.3173832 --16.167877 32.059963 1.320853 --10.004933 20.146049 0.84076214 --9.6247425 19.682766 0.81987149 --9.5709839 19.88102 0.82541609 --9.6435432 20.350275 0.84169221 --14.710059 31.540033 1.2813253 --9.3172197 20.301779 0.83518177 --9.1871281 20.346725 0.83471674 --14.142839 31.841074 1.2827204 --13.320694 30.49313 1.2267021 --12.984242 30.227201 1.2131804 --12.412449 29.392118 1.1776593 --12.193937 29.37635 1.1741178 --12.055358 29.553329 1.1780884 --11.859295 29.590567 1.1766934 --11.692883 29.701832 1.1781958 --11.502849 29.753445 1.1774446 --11.1509 29.377796 1.1603816 --10.931703 29.341715 1.1564109 --11.143689 30.481054 1.1972978 --0 0 0 --10.187812 28.963835 1.1346259 --10.014137 29.038082 1.1350909 --9.824254 29.064899 1.1338032 --9.6328478 29.085735 1.1323366 --9.5571976 29.461792 1.1442842 --9.3689823 29.497021 1.1434258 --9.2180786 29.651291 1.1470745 --9.0374222 29.712074 1.1472534 --8.8731794 29.828272 1.1495427 --8.7058964 29.936852 1.1515818 --8.5826902 30.203115 1.159523 --8.7772741 31.624531 1.2103902 --8.6099844 31.777143 1.2140747 --8.3709059 31.663195 1.207922 --3.68309 14.286437 0.56371099 --3.6048598 14.346567 0.56510603 --3.5250795 14.40239 0.56635809 --3.4447496 14.457773 0.56761009 --3.3598101 14.495188 0.56821817 --3.2760792 14.538929 0.56907672 --4.3071256 19.676207 0.7565915 --4.1792507 19.669027 0.75537527 --4.0504165 19.655149 0.7539444 --3.929934 19.680613 0.75398022 --3.8421094 19.875082 0.76020443 --6.4432201 34.462402 1.2905544 --0 0 0 --4.8826065 28.014484 1.0534959 --5.7443786 34.197697 1.2768539 --4.4886909 27.76449 1.0423352 --0 0 0 --4.7886453 32.116169 1.1979059 --3.9086177 27.364569 1.0250576 --4.7724657 34.942009 1.2979592 --4.5577178 34.968651 1.2978876 --4.3429451 34.994968 1.2978518 --0 0 0 --3.0479665 27.297779 1.0187975 --4.5841632 43.47097 1.6002651 --0 0 0 --0 0 0 --0 0 0 --2.0930116 25.939034 0.96710747 --0 0 0 --1.8656067 27.294802 1.0148984 --2.3190215 37.288036 1.3729007 --2.0776563 37.078056 1.3648878 --1.3853416 27.774668 1.0310314 --0 0 0 --0 0 0 --0.84747517 26.956415 1.0009832 --0.84299296 33.318996 1.2286338 --0.63972336 33.38549 1.2308517 --0.43964261 33.755524 1.2439798 --0.23279703 33.798557 1.2454464 --0.025498645 33.917274 1.2496675 -0.18235661 33.868824 1.2479504 -0.39101943 33.941013 1.2505976 -0.57493806 32.559074 1.2012327 -0 0 0 -0 0 0 -1.0371946 28.745878 1.0652291 -1.293807 30.64006 1.1333382 -2.0015054 41.378094 1.5184554 -1.5440509 28.316778 1.0507058 -1.6870868 27.801025 1.0325695 -2.8414361 42.510864 1.560666 -2.0309587 27.817101 1.0339646 -4.0105038 50.652943 1.8543867 -2.3896706 27.995205 1.0413336 -4.0784178 44.554077 1.6370741 -0 0 0 -2.0846021 20.056047 0.75737852 -2.2080622 20.046852 0.75752157 -3.3205118 28.538078 1.0640128 -2.4518347 20.001383 0.75691348 -2.5824296 20.047415 0.75913131 -2.688271 19.904425 0.75455254 -4.6790881 33.113636 1.2326759 -2.9305761 19.858072 0.75412327 -3.0510001 19.830828 0.75380135 -3.1712005 19.802853 0.75347936 -5.5508642 33.352592 1.2458757 -8.3690023 48.449005 1.7955066 -5.3127723 29.668777 1.1144866 -5.3815875 29.025417 1.0922724 -0 0 0 -0 0 0 -2.9625714 14.484672 0.56481987 -3.1027436 14.709705 0.57372701 -3.1819065 14.639608 0.57186687 -3.3065882 14.775848 0.57759035 -3.3987582 14.762098 0.57784075 -3.481447 14.707901 0.57662451 -3.53668 14.542545 0.57133031 -9.5820885 38.376499 1.4514551 -3.4688282 13.537703 0.53584486 -3.5340512 13.448505 0.53334087 -3.6011696 13.369634 0.53123033 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -10.170821 33.61972 1.2928796 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.6734419 20.307718 0.81268144 -7.8190813 20.315279 0.81479192 -0 0 0 -0 0 0 -8.0235958 19.754034 0.79880202 -8.1064806 19.612074 0.79522485 -8.3963432 19.965458 0.81089282 -8.4499092 19.752769 0.80463278 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -31.721132 63.138176 2.564811 -31.626583 61.998711 2.5268931 -31.697117 61.206253 2.5028188 -0 0 0 -32.311283 60.560501 2.492588 -32.659428 60.318916 2.490871 -0 0 0 -33.739235 60.527248 2.5160184 -34.186237 60.453926 2.5215631 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.583662 31.835915 1.3735088 -19.737915 31.649857 1.3707544 -29.815207 47.162247 2.0328155 -20.48284 31.963968 1.3945068 -0 0 0 -0 0 0 -20.727764 31.071907 1.3725787 -13.657419 20.203238 0.90851355 -13.850025 20.219645 0.91287774 -0 0 0 -14.190228 20.180597 0.91867274 -14.024456 19.686981 0.9008227 -14.148499 19.605421 0.90103734 -14.234322 19.471445 0.89896256 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -31.184301 39.518757 1.8375382 -31.345095 39.225174 1.8328879 -31.584558 39.03133 1.8328521 -32.048943 39.111984 1.8455869 -0 0 0 -32.21022 38.339287 1.8279872 -32.444859 38.140926 1.8279872 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.190229 19.939934 1.0262022 -19.274559 19.783155 1.0242705 -19.391373 19.660248 1.0240558 -19.669809 19.699306 1.0320687 -39.218018 38.798317 2.0102794 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -17.4681 15.661517 0.87538904 -17.419474 15.426165 0.86848515 -17.053452 14.916319 0.8465929 -17.148436 14.814667 0.84677178 -17.323399 14.781171 0.8507424 -17.776756 14.980499 0.86773396 -17.586439 14.636518 0.85460573 -17.933775 14.740282 0.86655349 -18.580986 15.082182 0.89223748 -17.540186 14.059682 0.84026134 -18.252207 14.447379 0.86884284 -18.509796 14.467434 0.87653375 -18.427332 14.221699 0.86880708 -20.219234 15.407655 0.94553721 -20.368494 15.32476 0.94800544 -18.685986 13.880102 0.86880708 -18.799812 13.786462 0.87009484 -20.821972 15.073832 0.95573211 -21.484848 15.353693 0.98084378 -20.134048 14.202519 0.9175638 -20.554611 14.311126 0.93212283 -20.202217 13.882492 0.91302079 -20.177843 13.684229 0.90829897 -20.236513 13.543487 0.90722579 -20.797062 13.734638 0.92772293 -21.000675 13.684794 0.93283826 -21.148975 13.597296 0.93559271 -21.291925 13.505278 0.93813246 -32.017426 20.03417 1.3875313 -32.059811 19.787998 1.3841687 -24.565531 14.954885 1.0650501 -32.452736 19.484652 1.3905361 -24.517599 14.516356 1.0554992 -24.623468 14.375722 1.0562146 -24.66964 14.200434 1.0544976 -25.222174 14.313176 1.0736711 -0 0 0 -25.445803 14.030088 1.0757101 -0 0 0 -28.11985 15.057537 1.1773731 -28.172823 14.864194 1.1757991 -28.14645 14.630207 1.1710773 -28.112934 14.394374 1.1661408 -28.11685 14.179304 1.1627783 -28.167521 13.988735 1.1613474 -28.258211 13.818274 1.161562 -28.608997 13.772942 1.1721504 -28.968409 13.727672 1.1830608 -0 0 0 -0 0 0 -31.040531 14.015918 1.2547113 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -36.625698 14.678935 1.4479853 -36.804348 14.489073 1.4514194 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -39.385025 13.582557 1.5268618 -39.444901 13.332959 1.5260032 -42.560799 14.095821 1.6404366 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -48.262527 14.357177 1.8379675 -0 0 0 -48.399513 13.753733 1.8366439 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -17.359333 0.43901116 0.65718222 -17.3617 0.332488 0.65718222 -0 0 0 -0 0 0 -0 0 0 -17.442581 -0.094108373 0.65997237 -0 -0 0 -0 -0 0 -0 -0 0 -17.298166 -0.51804709 0.65507168 -0 -0 0 -0 -0 0 -17.455393 -0.84456861 0.66115284 -17.465849 -0.95252734 0.66172522 -17.41379 -1.0568939 0.66007972 -17.493727 -1.1695207 0.66319185 -17.501173 -1.2779295 0.66372842 -17.421272 -1.379612 0.66115284 -17.413475 -1.4865658 0.6611886 -0 -0 0 -0 -0 0 -27.442514 -2.8521948 1.0231974 -27.42251 -3.0203066 1.0231259 -27.403461 -3.1885109 1.0231259 -27.399252 -3.3585405 1.0236982 -25.464174 -3.2800865 0.95462316 -25.423761 -3.4335952 0.95390773 -27.407005 -3.8727882 1.026381 -27.377785 -4.0401521 1.0262022 -27.350504 -4.2077589 1.0261307 -27.811644 -4.4535527 1.0438018 -19.261532 -3.2058637 0.7345562 -19.170595 -3.3117425 0.73198062 -19.169588 -3.4328318 0.73269606 -19.293591 -3.5773509 0.73799026 -19.121111 -3.6668725 0.73251724 -19.134523 -3.7913144 0.73384076 -0 -0 0 -0 -0 0 -37.660179 -8.1847639 1.4151112 -37.561462 -8.4049959 1.4133584 -37.509182 -8.6353102 1.4133584 -37.497311 -8.8751974 1.4148966 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -9.0494394 -2.4376402 0.37108082 -9.0314217 -2.4923232 0.3709735 -7.9686532 -2.251797 0.3320182 -7.934526 -2.2948196 0.331267 -8.9178934 -2.6385787 0.36850527 -0 -0 0 -0 -0 0 -9.0822229 -2.8700252 0.37655386 -7.9754772 -2.5742676 0.33559537 -7.9481421 -2.6194029 0.3351661 -25.557838 -8.5961542 1.0008043 -0 -0 0 -7.221333 -2.5281932 0.3094821 -11.23213 -4.0096731 0.46251306 -11.227037 -4.0856929 0.46326426 -7.3497305 -2.7260122 0.31620714 -7.24125 -2.7364423 0.31270152 -6.9995499 -2.6943147 0.30408058 -6.9698596 -2.7321069 0.30357978 -11.13541 -4.4437132 0.46476668 -7.1996903 -2.9246089 0.31377468 -7.1889987 -2.9717844 0.31406087 -19.674353 -8.2739267 0.79958898 -19.663643 -8.4117842 0.80116296 -19.691385 -8.5669641 0.8042751 -5.6973052 -2.5206757 0.25861484 -4.7684727 -2.144882 0.22277169 -4.6525159 -2.1271524 0.2187295 -4.7127895 -2.1897638 0.221627 -4.7227621 -2.2297311 0.22255707 -4.8297396 -2.3165727 0.22735046 -4.6932473 -2.2866435 0.22248551 -4.6737537 -2.3127387 0.22227089 -4.5996447 -2.3113136 0.21987419 -4.6200948 -2.3572035 0.22126928 -4.6188555 -2.392401 0.22180586 -4.6014357 -2.4193017 0.22169854 -4.5168486 -2.4103267 0.21887258 -4.4984589 -2.4360929 0.2187295 -4.4956889 -2.470386 0.21923029 -4.4891753 -2.5027902 0.21958801 -32.471661 -18.36269 1.3708975 -4.4130468 -2.5318341 0.2177279 -3.3781402 -1.9658474 0.17551738 -3.3565466 -1.980952 0.1751239 -3.3520467 -2.0061281 0.17544584 -3.3507817 -2.033397 0.17591088 -3.3884633 -2.0848114 0.1780214 -3.3586476 -2.0949869 0.17730597 -3.3719163 -2.1321101 0.17841488 -3.2973461 -2.1133993 0.17580356 -3.1611152 -2.0535743 0.17054513 -3.009887 -1.9817201 0.16460705 -2.9835374 -1.9907233 0.16399893 -3.3620555 -2.2731569 0.18088312 -3.3834975 -2.3180273 0.18242131 -3.3651056 -2.3358953 0.18224245 -3.5117571 -2.469738 0.18928945 -3.0342088 -2.161901 0.16897118 -3.0751822 -2.2196596 0.17136788 -3.1534779 -2.3057201 0.17544584 -3.5673487 -2.6420038 0.19451211 -5.4778261 -4.1089315 0.28072169 -3.0786712 -2.3391941 0.17401497 -0 -0 0 -5.2972088 -4.127985 0.27599984 -3.4987485 -2.7613313 0.19515601 -5.5756149 -4.4559498 0.29109547 -3.4389625 -2.7833133 0.19397554 -0 -0 0 -0 -0 0 -0 -0 0 -4.7953668 -4.0796733 0.26097578 -3.7161906 -3.20119 0.21118169 -3.6128726 -3.151026 0.20721103 -3.5844803 -3.1651978 0.20678177 -3.5746777 -3.1957901 0.20724681 -3.3564162 -3.0379529 0.19766001 -3.7989874 -3.4811013 0.22005305 -3.8918581 -3.6103644 0.22563341 -3.8419483 -3.608181 0.2242741 -2.8679938 -2.7269371 0.17727019 -3.4834301 -3.3529177 0.20867768 -3.45277 -3.3644652 0.20817687 -3.8034708 -3.7519073 0.22684966 -3.7803781 -3.7751744 0.22684966 -3.7543314 -3.7954576 0.22670656 -3.5507658 -3.6340194 0.21747749 -2.9793863 -3.0869997 0.18918215 -3.7838328 -3.9687917 0.23189345 -7.745223 -8.2236576 0.43997693 -3.9479115 -4.2439375 0.24308997 -3.5235021 -3.8346786 0.22202049 -3.8700101 -4.2639465 0.24173065 -3.832433 -4.2749629 0.24112253 -3.7875783 -4.2774496 0.24012092 -3.8599551 -4.4134398 0.24548666 -3.8301888 -4.4340158 0.24534358 -3.1406076 -3.6812491 0.20882076 -3.7658281 -4.4692216 0.244807 -3.7664638 -4.5260415 0.24638095 -3.7468712 -4.5591035 0.24684599 -3.7289038 -4.5944223 0.24741833 -3.7118938 -4.6312518 0.24806222 -3.0445404 -3.8468518 0.21121746 -3.103348 -3.9709682 0.21601085 -3.5503047 -4.6006904 0.24362655 -3.5395749 -4.6454391 0.24466392 -3.5542648 -4.7245669 0.24723947 -1.6521981 -2.2248504 0.13480929 -1.6337875 -2.2284992 0.13452311 -2.4628103 -3.4025304 0.18596269 -1.6452487 -2.3028562 0.13691981 -1.5734813 -2.2312458 0.13334265 -1.5620452 -2.244139 0.13348573 -1.556736 -2.2660358 0.13402231 -1.5366322 -2.2664471 0.13362882 -1.5188057 -2.2700195 0.13337842 -1.5065007 -2.2817976 0.13348573 -1.4886522 -2.2851374 0.13323534 -1.4864932 -2.312722 0.13402231 -1.4754864 -2.3268628 0.13423695 -1.4855664 -2.3748424 0.13588244 -1.5103345 -2.4476936 0.1385653 -1.500484 -2.465451 0.13892302 -1.488929 -2.4806089 0.13917342 -2.4074819 -4.0668049 0.20477857 -1.8982592 -3.2521234 0.17040205 -1.8363888 -3.1909564 0.16739723 -1.653017 -2.9136052 0.15552105 -1.7907499 -3.2019134 0.1669322 -1.7324661 -3.1428297 0.16407047 -1.2751123 -2.3473182 0.13123213 -1.2672901 -2.3674319 0.13173293 -1.2443457 -2.3592534 0.13108903 -1.2404473 -2.3872387 0.13191178 -1.621581 -3.1678078 0.16299732 -1.2245589 -2.4290504 0.13298494 -1.572361 -3.1668823 0.16217457 -8.2062654 -16.782089 0.70429343 -1.4887291 -3.0931935 0.15849009 -1.4637301 -3.089627 0.15798929 -7.77178 -16.664022 0.69377655 -7.6723032 -16.717754 0.69402695 -7.5432587 -16.706223 0.69173759 -7.3724551 -16.598757 0.68572795 -1.3834702 -3.1678724 0.15934862 -1.3636119 -3.1753836 0.15931284 -7.36272 -17.435007 0.71305746 -7.0900846 -17.081121 0.69760412 -6.8692589 -16.840227 0.68662226 -6.7988892 -16.964619 0.68980592 -6.7279825 -17.090635 0.69306111 -6.665514 -17.241587 0.6972822 -6.3546081 -16.742126 0.67660618 -6.2011685 -16.645014 0.67141932 -1.2164651 -3.3284042 0.16246074 -1.2223361 -3.409179 0.16525093 -1.1758605 -3.3440242 0.16249652 -1.2576284 -3.6478288 0.17372881 -5.8441582 -17.290356 0.68891162 -5.7533526 -17.372374 0.69066441 -5.6614513 -17.452976 0.69238144 -5.5324726 -17.41881 0.68980592 -0.97751021 -3.1455083 0.15351784 -0.96313542 -3.1677008 0.15412596 -0.94966477 -3.193666 0.15487716 -0.93646961 -3.221504 0.15569991 -0.94646192 -3.3319707 0.15959902 -0.87575138 -3.1566799 0.15287395 -0.84930903 -3.1359503 0.15190811 -0.83235019 -3.1497979 0.15223007 -0.80951464 -3.1412978 0.15172926 -4.4108157 -17.553732 0.68347436 -3.9829602 -16.27293 0.63528997 -0.81132281 -3.4064784 0.16095833 -0.78724623 -3.397763 0.16045754 -0.77473193 -3.4395759 0.16181685 -3.9850502 -18.205013 0.70268369 -3.87431 -18.234009 0.70286256 -1.7243441 -8.3687325 0.34146193 -0.61082309 -3.0606496 0.14732935 -1.6184819 -8.3735638 0.34088957 -3.370189 -18.026932 0.69205952 -3.2463689 -17.974497 0.68941242 -3.12658 -17.93993 0.68744498 -2.9826696 -17.757725 0.68014759 -2.8731756 -17.772732 0.68004024 -2.7671392 -17.809776 0.68075567 -2.6662095 -17.882761 0.68279469 -2.5780554 -18.05015 0.68826771 -2.4729338 -18.107216 0.68977016 -2.3945932 -18.373756 0.69885612 -2.2820551 -18.390087 0.6989277 -2.1639075 -18.359081 0.69731796 -2.048445 -18.347183 0.69642365 -1.9338386 -18.340523 0.69574398 -1.7740817 -17.876686 0.67864519 -0.3012329 -3.2409515 0.15212275 -0.28038961 -3.2317872 0.15172926 -0.20540547 -2.5501075 0.12718993 -0.21515769 -2.8921556 0.13942382 -0.17211956 -2.5235221 0.12615256 -0.15278561 -2.4626901 0.12393472 -0.13347781 -2.3887465 0.12125184 -0.11762306 -2.3655658 0.12039332 -0.1055517 -2.4221537 0.12239654 -0.089411095 -2.3888016 0.1211803 -0.098723851 -3.1514399 0.14847404 -0.081863381 -3.2498922 0.15197966 -0.061307825 -3.2183597 0.15083496 -0.041728538 -3.2316658 0.1513 -0.021933096 -3.2368579 0.15147886 -0.0020556725 -3.2159448 0.15072766 --0.01745691 -3.1749239 0.14926101 --0.036500521 -3.1367838 0.1479017 --0.052414335 -2.9476511 0.14114086 --0.067386888 -2.8163948 0.13645478 --0.085354216 -2.8389034 0.13727753 --0.1015831 -2.8053687 0.13609706 --0.11803593 -2.78672 0.13545318 --0.13305692 -2.743021 0.13391499 --1.0448407 -19.159248 0.72242963 --1.1572359 -19.067686 0.71938902 --0.17772681 -2.6533566 0.13080287 --0.19400415 -2.652216 0.13080287 --0.20806581 -2.623081 0.12980126 --0.22577147 -2.6406739 0.13048092 --1.7621752 -19.248131 0.72747344 --1.9030871 -19.470692 0.73587978 --2.0254135 -19.486481 0.73688138 --2.1542406 -19.558121 0.73992193 --2.2835608 -19.624941 0.74281943 --2.4190094 -19.733561 0.74725515 --2.5506425 -19.800613 0.75022417 --2.668879 -19.76082 0.74936563 --2.7842069 -19.702513 0.74786323 --2.9463313 -19.964848 0.75798661 --3.0359576 -19.733042 0.75025994 --3.1961648 -19.958765 0.75913131 --2.9545317 -17.751284 0.67975408 --3.0678184 -17.758425 0.68068415 --3.1200073 -17.42251 0.66916567 --3.6853793 -19.876282 0.75920284 --3.429178 -17.881502 0.6873377 --3.5423284 -17.877771 0.68798155 --4.0656295 -19.878511 0.7618857 --3.7905281 -17.970831 0.69302535 --4.5579948 -20.971657 0.80381006 --4.1971292 -18.755821 0.72357434 --4.3049593 -18.698551 0.72242963 --4.4499927 -18.800154 0.72715145 --5.020052 -20.642761 0.79604763 --4.6324315 -18.552149 0.72006869 --5.2715039 -20.573795 0.79583299 --5.6254497 -21.408058 0.82792014 --5.7910066 -21.500515 0.83264196 --5.8832169 -21.321037 0.82731199 --6.050611 -21.414368 0.83214116 --6.231585 -21.548685 0.83854431 --6.6656089 -22.53064 0.87664109 --6.8043075 -22.491228 0.87671262 --6.4243455 -20.774414 0.81396919 --7.4019585 -23.425667 0.91498822 --7.5965061 -23.537683 0.92092633 --7.7345324 -23.471647 0.9202109 --6.9567704 -20.683432 0.81672359 --0 -0 0 --8.4307184 -24.08367 0.94897127 --8.5793419 -24.034309 0.94907856 --8.7994394 -24.181248 0.95669794 --9.0028963 -24.275784 0.96238565 --9.3010941 -24.61553 0.97751701 --7.9906607 -20.761097 0.83189076 --9.8993044 -25.256924 1.0066351 --10.248536 -25.68301 1.0254152 --10.588696 -26.069632 1.0428002 --10.8019 -26.133471 1.0478083 --11.106934 -26.411236 1.0611868 --11.109993 -25.971382 1.046735 --0 -0 0 --10.933022 -24.714436 1.0029507 --0 -0 0 --16.015455 -35.035347 1.4145031 --16.262547 -35.006207 1.4172575 --16.490259 -34.933777 1.4183664 --1.6701081 -3.4816906 0.17383611 --1.663868 -3.4147761 0.17158251 --1.6679494 -3.3704648 0.17022319 --1.6854584 -3.3539159 0.16997278 --1.7060059 -3.3435111 0.16997278 --1.7292466 -3.3383048 0.17018741 --1.7724826 -3.3709762 0.17194022 --1.7968966 -3.3670907 0.1722264 --1.8398865 -3.397306 0.17390767 --1.8655094 -3.3947115 0.17426538 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --10.324634 -8.4858923 0.51398844 --10.302796 -8.3625479 0.51059014 --10.459961 -8.384181 0.51545507 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.482691 -8.6962051 0.70268369 --16.454163 -8.5525007 0.69939274 --0 -0 0 --0 -0 0 --0 -0 0 --7.0081286 -3.4266422 0.31484783 --7.0155158 -3.377074 0.31431127 --7.0370078 -3.3343921 0.31434703 --7.075449 -3.2995994 0.31506246 --0 -0 0 --0 -0 0 --0 -0 0 --36.100494 -15.770309 1.4457318 --0 -0 0 --36.292221 -15.326502 1.4457675 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --22.281677 -8.4573307 0.88869607 --22.331278 -8.3197556 0.88862455 --22.382845 -8.1829195 0.88866031 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --28.179754 -8.760582 1.0919147 --28.223417 -8.5846014 1.0915569 --28.306211 -8.4203825 1.0927017 --28.355427 -8.2459822 1.09263 --28.412218 -8.0737534 1.0928805 --0 -0 0 --0 -0 0 --12.791137 -3.3813896 0.50919503 --12.778742 -3.2943578 0.5079788 --12.82973 -3.223681 0.5091235 --0 -0 0 --34.276806 -8.1674509 1.296886 --34.365215 -7.9660063 1.2983168 --0 -0 0 --40.494522 -8.8646927 1.5194212 --40.586277 -8.624157 1.5208163 --40.617874 -8.3707256 1.5200651 --0 -0 0 --0 -0 0 --0 -0 0 --18.61767 -3.3625467 0.71280706 --18.481413 -3.2209623 0.70711941 --18.694983 -3.1401172 0.7141664 --52.395634 -8.4711733 1.9354452 --27.515995 -4.2754335 1.032355 --27.544676 -4.1069603 1.0324622 --24.075089 -3.4387167 0.9061169 --24.196733 -3.3047254 0.9097656 --23.993586 -3.127131 0.90171695 --24.05695 -2.9853892 0.90332669 --24.08077 -2.8384244 0.90354133 --27.876806 -3.112627 1.0396523 --27.859602 -2.9377463 1.0383645 --27.857214 -2.7647734 1.0376492 --29.46575 -2.7419686 1.0948837 --25.913755 -2.2510931 0.9666782 --29.672497 -2.3943212 1.1011795 --39.859879 -2.9704437 1.4663361 --0 -0 0 --42.269211 -2.6288648 1.5515442 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --59.64743 14.963211 1.4528253 --0 0 0 --0 0 0 --53.626659 14.506974 1.3159205 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --46.857353 14.231781 1.1642264 --46.77774 14.521692 1.1644337 --46.696331 14.811162 1.164641 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --41.017223 14.408766 1.0375727 --41.019337 14.692875 1.0398073 --0 0 0 --0 0 0 --0 0 0 --40.740593 15.731489 1.0421339 --35.704819 14.039183 0.91985726 --34.987812 14.005708 0.90421557 --0 0 0 --35.042332 14.528973 0.90992862 --34.90094 14.721954 0.9086386 --35.208675 15.10692 0.91863632 --35.183125 15.352262 0.92034101 --60.180759 26.701727 1.5528949 --56.176434 25.33864 1.4558431 --55.881767 25.619524 1.4523416 --55.070145 25.657501 1.4357324 --54.969509 26.022301 1.4372066 --54.656544 26.285868 1.4333135 --0 0 0 --39.927402 19.808788 1.0628436 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --52.220428 27.935982 1.4004637 --0 0 0 --51.727444 28.494144 1.3966167 --0 0 0 --0 0 0 --33.819103 19.44869 0.93476176 --0 0 0 --33.619194 19.886671 0.93586749 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --55.879112 37.365807 1.5847542 --49.54842 33.574169 1.4149536 --20.80162 14.281446 0.61722928 --20.752171 14.435648 0.618312 --20.543083 14.478043 0.61492562 --27.640432 19.735455 0.81840533 --45.485168 32.900894 1.3293507 --45.230019 33.140957 1.3278533 --0 0 0 --44.875061 33.734955 1.3294429 --44.493828 33.87764 1.3244209 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --37.080982 30.453087 1.1414665 --36.894196 30.680677 1.1414896 --0 0 0 --35.172939 29.986942 1.1008536 --35.47261 30.620295 1.1155968 --34.713482 30.338676 1.0981352 --21.948648 19.420805 0.71112525 --21.925871 19.641838 0.71411997 --21.651655 19.636971 0.70935148 --0 0 0 --33.954689 31.564167 1.1040555 --32.888214 30.951078 1.0764581 --33.650925 32.060532 1.1067969 --38.755245 37.380199 1.2765284 --32.703476 31.932556 1.0890359 --0 0 0 --14.520478 14.5296 0.50914294 --14.420519 14.60775 0.50879735 --14.238489 14.601472 0.50575656 --28.167448 29.244032 0.97141248 --27.977142 29.405449 0.97106695 --27.634615 29.404627 0.96563041 --27.546852 29.674019 0.96878636 --27.64127 30.144602 0.97823125 --27.439678 30.295855 0.97767836 --27.257936 30.468866 0.97783965 --27.089005 30.656521 0.97848463 --26.058321 29.857269 0.94897515 --25.881809 30.024929 0.94922853 --26.331543 30.928427 0.97178108 --26.246788 31.214905 0.97555906 --0 0 0 --0 0 0 --15.835533 19.551872 0.61557066 --15.690915 19.618219 0.61467224 --23.395195 29.622566 0.90559781 --23.053766 29.561373 0.89963138 --22.730444 29.518499 0.89428693 --22.686848 29.838867 0.89953923 --22.386301 29.821598 0.89504713 --22.417185 30.247555 0.90334022 --22.240023 30.396637 0.90368575 --22.334642 30.922358 0.91476625 --21.339531 29.92975 0.88281488 --21.198059 30.120626 0.88451958 --20.717415 29.8248 0.87258673 --20.56794 30.000834 0.8739689 --20.170593 29.811817 0.86521512 --19.934555 29.856033 0.86302668 --20.48744 31.095644 0.89387232 --19.830393 30.504103 0.87417626 --20.831305 32.47826 0.9249022 --19.156292 30.273743 0.86132199 --18.960648 30.375446 0.86090732 --18.798019 30.530376 0.86196703 --18.732277 30.845957 0.86738056 --18.494888 30.88055 0.86523819 --8.5905056 14.543907 0.42503735 --8.5197182 14.628308 0.4258897 --20.767126 36.168926 0.99684459 --18.247553 32.236938 0.88938022 --18.171669 32.567429 0.89516234 --17.854918 32.46632 0.88958752 --17.688717 32.636791 0.89120007 --17.387346 32.555996 0.88627028 --17.708647 33.652973 0.91207099 --10.028624 19.34412 0.53789222 --10.082956 19.744526 0.54666907 --9.9827271 19.848 0.54775178 --9.8217106 19.83004 0.54572457 --9.6761904 19.841408 0.54448062 --15.008182 31.261818 0.8348763 --9.5276489 20.161131 0.54964072 --17.400606 37.415733 0.9866395 --14.493025 31.670044 0.83835477 --14.276677 31.71006 0.83713388 --13.40907 30.2778 0.7988475 --13.121246 30.125778 0.79297328 --12.44343 29.055113 0.76413178 --12.221085 29.026798 0.76152873 --12.015228 29.034727 0.75987011 --11.808983 29.039371 0.75816542 --11.58051 28.98595 0.75505549 --12.008986 30.60228 0.79331881 --12.342555 32.028996 0.8267445 --12.18223 32.200439 0.82911724 --11.430441 30.782528 0.79244345 --10.985023 30.148521 0.77518922 --10.426704 29.171322 0.74964195 --10.172785 29.021526 0.74443579 --9.9620333 28.988852 0.74213213 --9.7635536 28.988794 0.74065781 --9.5761003 29.019676 0.73996675 --9.4110775 29.118793 0.74095726 --9.2762604 29.315153 0.74432057 --9.1299229 29.480389 0.74694669 --8.992341 29.679373 0.75040215 --8.8339167 29.814508 0.75233722 --8.6566515 29.888317 0.75282097 --8.5161037 30.092861 0.75646073 --8.3762999 30.3074 0.76035386 --8.2159557 30.453783 0.76263446 --8.4322262 32.036022 0.79914701 --3.7226944 14.501791 0.38080764 --3.5982299 14.38276 0.37744433 --3.5146432 14.423994 0.37790507 --0 0 0 --0 0 0 --0 0 0 --8.7897587 40.36404 0.98769915 --4.1614652 19.687611 0.49949071 --4.0349665 19.685352 0.4988457 --3.9137144 19.707779 0.49879962 --3.813468 19.839417 0.50133359 --5.2005262 27.983265 0.69165957 --4.9181795 27.398655 0.67723888 --4.7753839 27.575092 0.68067127 --4.6820974 28.059456 0.69131404 --4.4542236 27.741186 0.68322831 --5.5702486 36.108139 0.8776778 --4.7562661 32.138294 0.78442681 --4.9313536 34.794918 0.84558821 --4.7470136 35.040493 0.85061014 --3.8367412 29.688122 0.72559208 --4.3118968 35.057407 0.84971172 --3.53473 30.269184 0.73803169 --3.3807843 30.57847 0.74471217 --0 0 0 --2.9360707 29.912231 0.72837943 --0 0 0 --3.3865347 39.483475 0.94895208 --0 0 0 --1.9242084 26.202429 0.64121008 --1.8394387 27.344889 0.66733325 --2.2723711 37.193718 0.89444822 --2.3018849 41.901642 1.0027879 --1.3624274 27.920319 0.67993408 --0 0 0 --0.99139583 27.158659 0.66203487 --0 0 0 --0.95559865 39.475914 0.94570398 --0 0 0 --0.33740401 28.251446 0.686845 --0.22185197 38.279156 0.91787612 -0.013368707 39.196556 0.93900043 -0 0 0 -0 0 0 -0.63754863 34.008957 0.81960326 -0 0 0 -0.87088495 28.076 0.68306702 -1.0438458 28.089111 0.6835047 -1.3326907 30.769939 0.74549544 -2.0549598 41.539124 0.99414933 -1.7154622 30.846096 0.74768388 -1.9027861 30.804056 0.74696976 -1.9582024 28.826859 0.70158821 -2.0652683 27.873133 0.67984194 -2.2612252 28.170853 0.6870293 -0 0 0 -0 0 0 -3.0499642 30.861385 0.75040215 -2.1031315 20.028496 0.49985927 -2.2197931 19.959574 0.49856925 -2.3524866 20.032953 0.50059646 -2.4765897 20.028063 0.50082678 -2.5963411 19.988695 0.50027394 -2.7146235 19.940689 0.49953678 -2.8314276 19.885057 0.49863836 -4.9794087 33.490829 0.81600958 -5.2002764 33.559425 0.81833625 -4.6711516 28.969997 0.7119776 -4.9206977 29.369694 0.72199839 -4.9399805 28.414078 0.70036733 -5.2530761 29.153612 0.71840471 -0 0 0 -11.938848 61.889206 1.488186 -5.9248085 29.734377 0.734438 -2.9969018 14.576113 0.37871134 -3.0678225 14.470409 0.37666109 -0 0 0 -3.2958481 14.656981 0.38198251 -3.3762534 14.595575 0.38101497 -3.4745381 14.611543 0.38189036 -10.63012 43.505211 1.0677733 -0 0 0 -3.4976671 13.59243 0.35922262 -3.5263994 13.363855 0.35429284 -3.614337 13.364162 0.3548227 -8.3890495 30.274826 0.75970882 -8.5315361 30.070824 0.75606912 -9.7990313 33.747791 0.84556514 -0 0 0 -10.225797 33.669003 0.84662485 -0 0 0 -11.984549 37.785381 0.94922853 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.9245462 20.155308 0.53485143 -7.9956775 19.975439 0.53160334 -0 0 0 -8.1169033 19.578451 0.5241856 -8.3468504 19.788956 0.53070492 -0 0 0 -8.5626726 19.624563 0.52918452 -0 0 0 -24.895916 55.19495 1.4310329 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -37.932098 77.648117 2.0270975 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -32.320435 60.415848 1.6146322 -32.690052 60.215519 1.6146092 -33.07869 60.049706 1.6155537 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.498558 47.509277 1.3123959 -0 0 0 -0 0 0 -19.804775 31.679937 0.89670575 -0 0 0 -20.504904 31.921532 0.91004378 -20.717295 31.821087 0.9107579 -20.734304 31.423845 0.90331715 -21.142906 31.619307 0.91227829 -21.327547 31.475739 0.9119097 -13.823077 20.13405 0.59856987 -14.01487 20.147335 0.60133421 -14.158962 20.09038 0.60216355 -14.215738 19.910372 0.59953737 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.76317 36.368107 1.1042398 -0 0 0 -0 0 0 -31.743048 38.651619 1.1882993 -31.971943 38.446896 1.188023 -35.994926 42.748112 1.3235224 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.422506 19.892063 0.67643261 -19.469696 19.697149 0.67399073 -19.73304 19.72006 0.67864406 -39.242149 38.736404 1.3063835 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -17.392761 15.75371 0.57654715 -17.419802 15.584704 0.57440478 -17.581776 15.53644 0.576455 -17.370964 15.161383 0.56710225 -17.391726 14.992503 0.56491381 -17.223047 14.663871 0.55703539 -18.214872 15.316457 0.5841952 -17.447077 14.489095 0.55839455 -17.837912 14.629639 0.56740171 -18.694157 15.140915 0.59013855 -18.044985 14.432741 0.56825405 -18.232059 14.399817 0.57115668 -17.861242 13.929877 0.55774951 -18.42799 14.190856 0.57175559 -18.505962 14.070861 0.57150221 -20.531652 15.413035 0.6273883 -18.806557 13.93854 0.57521105 -18.580282 13.595024 0.56631905 -18.752501 13.54515 0.56885302 -19.048536 13.581885 0.57488853 -20.30311 14.289229 0.60789955 -20.22208 14.047466 0.60317713 -20.371386 13.966648 0.6049509 -20.381348 13.79041 0.60285461 -20.703377 13.823855 0.60944301 -20.714342 13.648162 0.6074158 -20.782608 13.510996 0.60700113 -21.615767 13.864649 0.62754953 -21.65143 13.700752 0.62621343 -31.906252 19.916121 0.90248787 -32.059353 19.739367 0.90334022 -32.19696 19.55266 0.90380096 -20.297495 12.156982 0.58099318 -20.289928 11.983914 0.57880473 -20.306059 11.825989 0.57728434 -20.306278 11.659855 0.57537228 -20.259113 11.468066 0.57223934 -20.224335 11.285091 0.569475 -20.251148 11.137661 0.56836927 -20.276917 10.990328 0.56726354 -20.230209 10.804953 0.56429183 -20.248352 10.65548 0.56304789 -20.281399 10.514476 0.56221855 -20.337519 10.385741 0.56201124 -20.416939 10.268842 0.56242591 -0 0 0 -20.998802 10.240548 0.5741514 -21.201839 10.179002 0.57774502 -21.595633 10.205466 0.58619934 -23.08832 10.737975 0.62255067 -23.131954 10.586123 0.62199777 -23.184624 10.438653 0.62169832 -22.783867 10.090563 0.60999584 -24.004829 10.455534 0.63913679 -24.261526 10.390691 0.64397442 -24.714582 10.405711 0.65371877 -25.138239 10.402943 0.66270292 -25.656313 10.433394 0.67401379 -25.943592 10.365154 0.67956555 -26.629313 10.450072 0.69497681 -26.726515 10.299421 0.69580615 -62.645271 23.699089 1.5791564 -0 0 0 -0 0 0 -37.500999 13.403625 0.95346725 -0 0 0 -39.433537 13.550909 0.99661422 -42.515575 14.318857 1.0695472 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -48.336655 14.321196 1.1974678 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -17.164778 0.73249793 0.43169484 -17.225897 0.62923938 0.43300793 -17.211447 0.52298605 0.43259326 -17.417217 0.42227408 0.43726963 -17.413485 0.31528792 0.4371314 -17.35911 0.20776857 0.43584138 -17.35206 0.10120507 0.43565708 -17.339357 -0.0052622561 0.43535763 -17.349997 -0.11172601 0.43561101 -17.343985 -0.21811828 0.43549582 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -17.371264 -1.0725234 0.43685499 -17.376324 -1.1799048 0.4371314 -0 -0 0 -0 -0 0 -0 -0 0 -17.473537 -1.6181632 0.4401722 -0 -0 0 -27.411886 -2.8788722 0.67092693 -27.435436 -3.0516577 0.67189443 -27.426125 -3.2211075 0.6721248 -27.40386 -3.3890848 0.67207873 -27.393454 -3.5585852 0.67233211 -25.389923 -3.4567764 0.62625951 -27.379395 -3.8989887 0.6730693 -27.379677 -4.0705886 0.6736452 -27.360111 -4.239429 0.67378342 -27.725416 -4.4704232 0.6829288 -19.308702 -3.2346392 0.48693591 -19.295385 -3.3542531 0.48709717 -19.173101 -3.45432 0.48472443 -19.151545 -3.5718989 0.48472443 -0 -0 0 -43.591114 -8.6864281 1.0600102 -0 -0 0 -0 -0 0 -0 -0 0 -37.648212 -8.467659 0.92499435 -37.597496 -8.6989555 0.92504042 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -9.1141195 -2.4645281 0.25337079 -9.0419836 -2.504652 0.25201163 -7.9867773 -2.2650743 0.22710939 -7.9333658 -2.3026068 0.22616491 -7.9305882 -2.3546579 0.22644134 -7.9035554 -2.3994973 0.22614187 -7.8686333 -2.4417226 0.2256581 -7.8897147 -2.5014443 0.22653349 -7.9265265 -2.5667541 0.22780047 -7.9220181 -2.6191094 0.22807692 -0 -0 0 -0 -0 0 -7.2442818 -2.543793 0.21273473 -7.2050076 -2.5797665 0.21215883 -11.220526 -4.0960741 0.31105369 -7.3133516 -2.7202897 0.21561427 -0 -0 0 -6.9996352 -2.7017872 0.20870338 -6.9810648 -2.7439537 0.20865731 -11.121155 -4.4509673 0.31183693 -7.2135043 -2.9380636 0.21529177 -7.1814885 -2.9765258 0.21494623 -0 -0 0 -19.632633 -8.4231739 0.52807873 -19.631893 -8.5658712 0.52936882 -4.6088166 -2.043715 0.15198798 -4.5907221 -2.0694892 0.15184978 -4.5997477 -2.1076181 0.15240264 -4.6329455 -2.1573353 0.15357749 -4.6078744 -2.180161 0.15327802 -4.6052217 -2.213593 0.15355445 -4.589756 -2.2409308 0.15350838 -4.5714417 -2.266829 0.15339321 -4.5458403 -2.2889886 0.15309374 -4.6892471 -2.3974252 0.15717116 -4.6815467 -2.4298387 0.15735546 -4.341094 -2.2869637 0.14887808 -4.3437285 -2.3225176 0.14931577 -4.4427357 -2.4106593 0.15228747 -4.3691912 -2.4055545 0.15074404 -4.3805294 -2.4469504 0.15143512 -4.4880567 -2.5433085 0.15468323 -3.3561454 -1.9288378 0.12501247 -3.3528826 -1.9544317 0.12524283 -3.3373857 -1.9729316 0.1251507 -3.3260744 -1.9938866 0.12517373 -3.3300061 -2.0241287 0.12561142 -4.3394961 -2.6747673 0.15327802 -3.4185078 -2.1358576 0.12869829 -3.0101445 -1.9063339 0.11791729 -3.4130685 -2.1911557 0.12927419 -3.3828034 -2.2011466 0.12881346 -2.974545 -1.9614178 0.11791729 -2.9499884 -1.9712964 0.11757175 -3.0222542 -2.0465636 0.11992145 -3.0121124 -2.066767 0.11999056 -2.9460304 -2.0480995 0.1184932 -2.9644599 -2.0880237 0.11936858 -3.024003 -2.1578796 0.12141881 -3.0333865 -2.1928003 0.12206382 -3.9222522 -2.872591 0.14784145 -3.190084 -2.3663068 0.12733914 -5.4625354 -4.1051927 0.19326906 -5.4531517 -4.1507459 0.19372979 -23.465782 -18.0947 0.71861207 -5.3143473 -4.1490469 0.19117275 -5.5883222 -4.4184871 0.19997261 -5.5720301 -4.4614429 0.20029514 -21.565794 -17.49 0.67562634 -3.4625978 -2.8423183 0.13904159 -3.457391 -2.8737388 0.13941017 -21.688335 -18.261343 0.6891256 -21.576639 -18.394726 0.6891486 -21.467905 -18.530689 0.68928683 -3.6839111 -3.2182546 0.14853254 -2.8495181 -2.5199788 0.12346904 -2.8176205 -2.5227396 0.12296224 -3.3367331 -3.0249159 0.13959445 -3.771714 -3.4618635 0.15378483 -2.8841999 -2.6796825 0.12653287 -4.4387641 -4.1759305 0.17624523 -2.8778796 -2.7403905 0.12738521 -2.8660476 -2.7628558 0.12754647 -3.4606071 -3.3775694 0.14724252 -4.3072166 -4.2561951 0.17534681 -4.2683001 -4.269814 0.17493215 -2.9884071 -3.0258889 0.13381234 -3.2503505 -3.3319201 0.14307293 -3.5322199 -3.665751 0.15311676 -3.6957147 -3.8829191 0.15933657 -2.7242899 -2.897244 0.12745433 -2.6738143 -2.8787351 0.12634858 -2.6425874 -2.8803496 0.12588786 -3.6523275 -4.0309863 0.16115645 -3.732173 -4.1703024 0.16477314 -2.7916825 -3.1577532 0.13293697 -2.7683101 -3.1703038 0.13279875 -3.1965704 -3.7067037 0.14860165 -3.4692817 -4.0733733 0.15910621 -3.4628806 -4.1167746 0.15977426 -3.1444061 -3.7849116 0.1492006 -3.1629629 -3.8551548 0.150721 -3.2160089 -3.9692736 0.15353142 -3.2115743 -4.013916 0.15426858 -3.1831675 -4.0288391 0.15413037 -1.6601778 -2.1270485 0.097990885 -1.6672229 -2.1633351 0.098751083 -1.6527075 -2.1719327 0.098705009 -1.6363487 -2.1780348 0.09858983 -1.6068822 -2.1663475 0.097967848 -1.6035947 -2.1898828 0.098359466 -1.5848596 -2.1923869 0.098152138 -1.5678953 -2.197186 0.098013923 -1.5549595 -2.2075825 0.09803696 -1.553932 -2.2351463 0.098543756 -1.5345353 -2.236393 0.098313391 -1.5219046 -2.2474227 0.098359466 -1.5125269 -2.2633703 0.098543756 -2.4583647 -3.7294135 0.13874212 -2.4207237 -3.721796 0.13812013 -2.4005401 -3.740787 0.13823532 -2.354022 -3.7182736 0.13722172 -2.2893443 -3.6656485 0.13540184 -2.1708925 -3.5238342 0.1311862 -1.9157243 -3.1525526 0.12081987 -1.5367907 -2.5638638 0.10469445 -1.908921 -3.2300563 0.12227115 -1.8815196 -3.2287493 0.12192561 -1.8641618 -3.2445683 0.12204079 -1.3424172 -2.3693759 0.098566793 -1.3298022 -2.3810606 0.098658934 -1.3108317 -2.3812912 0.098451607 -1.3004827 -2.3971999 0.098658934 -1.2890459 -2.4113076 0.098820195 -1.684819 -3.1995077 0.11913822 -1.6642352 -3.2080102 0.11909214 -1.2444433 -2.4346261 0.098820195 -1.6516924 -3.2817807 0.12047432 -1.6306373 -3.2900617 0.12042825 -7.7149563 -15.819281 0.4413701 -7.6225047 -15.876234 0.44162348 -1.1580712 -2.4481518 0.09822125 -1.3466375 -2.8930566 0.10934778 -1.3958337 -3.047627 0.11305663 -7.3688903 -16.365734 0.44938672 -7.2634759 -16.39967 0.4491103 -7.177083 -16.476927 0.44993961 -1.3611561 -3.1756232 0.11542937 -6.8785338 -16.33617 0.44424963 -6.7770209 -16.375298 0.44418052 -6.5796394 -16.178564 0.4382602 -6.5243797 -16.329111 0.4410015 -6.4317322 -16.38838 0.44148529 -6.3145189 -16.384623 0.4404256 -6.1912274 -16.363214 0.43895128 -6.0506907 -16.293116 0.4363021 -5.989275 -16.436081 0.43890521 -1.1927979 -3.3340762 0.11741049 -1.1703339 -3.3356714 0.11727227 -5.5535026 -16.15873 0.42952943 -5.4379773 -16.14418 0.42835459 -1.2067829 -3.6538084 0.12448264 -5.2698884 -16.303877 0.43063518 -5.183321 -16.378798 0.4316718 -5.1031294 -16.476189 0.43326131 -0.96544737 -3.1828773 0.11245769 -0.94845521 -3.1973681 0.11266501 -0.96052092 -3.3125994 0.11529115 -0.95405889 -3.367491 0.116466 -0.89796257 -3.2451203 0.11340217 -0.85121614 -3.1511497 0.11102943 -0.83390057 -3.164048 0.11121372 -4.4222288 -17.227716 0.44565484 -4.335115 -17.329206 0.44742864 -4.2145076 -17.297199 0.44604647 -0.80789292 -3.4024327 0.1163969 -0.79014605 -3.420964 0.1167194 -3.7090919 -16.540697 0.42641953 -3.6005116 -16.530909 0.42565933 -3.6327429 -17.185543 0.44056383 -0.6387229 -3.1112311 0.10900224 -1.6576272 -8.3436365 0.23183183 -1.6107395 -8.3762312 0.23236167 -3.0457129 -16.385881 0.41985419 -2.9763706 -16.57843 0.4239316 -2.8843126 -16.652531 0.42524469 -2.7944181 -16.743874 0.42697239 -2.6626306 -16.580065 0.42275676 -2.5375314 -16.44492 0.41923219 -2.5613945 -17.30377 0.43888217 -2.4533491 -17.306292 0.43858269 -2.3487236 -17.332909 0.43885913 -2.2478349 -17.389627 0.4398497 -2.1453621 -17.437822 0.44065598 -2.037282 -17.441721 0.44044864 -1.8139192 -16.401581 0.41605321 -1.7232045 -16.507858 0.41826469 -0.24072391 -2.4414713 0.092346989 -0.2258303 -2.443898 0.092370026 -0.21100138 -2.4472296 0.0924161 -0.19582291 -2.446485 0.092370026 -0.18051517 -2.4436524 0.092277877 -0.28420705 -4.2102594 0.13305214 -1.0398514 -17.009682 0.42849278 -0.13194226 -2.3816762 0.090780519 -0.11674187 -2.3704584 0.09050408 -0.10279061 -2.3851135 0.090826593 -0.089574546 -2.4246631 0.091725007 -0.083784223 -2.7249498 0.098635897 -0.068947457 -2.803369 0.10043273 -0.051690917 -2.8007407 0.10036363 -0.20951751 -17.50606 0.43922773 -0.017144727 -2.7711725 0.099672534 -0.00014859522 -2.750231 0.099188775 --0.016589902 -2.7291863 0.098705009 --0.033158615 -2.7150381 0.098382503 --0.049685743 -2.7077866 0.09822125 --0.066523626 -2.7164254 0.098428577 --0.55387026 -17.869635 0.4477742 --0.66592175 -17.930838 0.44927156 --0.11469438 -2.6727912 0.097461052 --0.13025193 -2.6550624 0.097069435 --0.14565182 -2.6382422 0.096700847 --0.16115861 -2.6263227 0.096447453 --0.17686361 -2.6192999 0.09630923 --1.2858365 -17.359785 0.4369241 --0.20971341 -2.625901 0.096516557 --1.5744915 -18.218197 0.45717299 --1.6852318 -18.197243 0.45691961 --1.7926267 -18.14378 0.45592904 --1.9452884 -18.526167 0.46505141 --1.9799854 -17.804449 0.44860348 --2.2282481 -18.975508 0.47606277 --2.3496702 -19.002157 0.47700727 --2.4514055 -18.873373 0.47435808 --2.601027 -19.106613 0.48014021 --2.7316079 -19.18432 0.48232865 --2.8580928 -19.22653 0.48371083 --2.9847388 -19.264942 0.48502389 --3.1049595 -19.259096 0.48532337 --3.226212 -19.258417 0.48576105 --3.3497999 -19.269777 0.48649821 --3.4747121 -19.286247 0.48737359 --3.4114625 -18.291615 0.46456766 --3.6526031 -18.938831 0.4802554 --3.7763615 -18.9543 0.48115379 --3.9076979 -19.004215 0.48288152 --4.0323215 -19.018021 0.48377994 --3.7564659 -17.196789 0.44141617 --3.864326 -17.184145 0.44166955 --4.7141414 -20.377222 0.51775849 --4.8451004 -20.373201 0.51835746 --5.0238886 -20.563541 0.52358669 --5.1506991 -20.535238 0.52365577 --5.2883177 -20.548752 0.52473849 --5.4359908 -20.59808 0.52669656 --5.5233746 -20.420546 0.52326417 --5.6528411 -20.401686 0.52363276 --5.8404121 -20.586861 0.52890807 --5.4990702 -18.940596 0.49027619 --6.2890391 -21.174896 0.54480314 --6.4775414 -21.329138 0.54945648 --6.5955462 -21.247934 0.54846591 --6.7602568 -21.315701 0.55109203 --6.6607537 -20.563372 0.53388393 --6.8426862 -20.691065 0.53798437 --6.9624805 -20.627851 0.53747755 --7.1914754 -20.88249 0.544734 --7.3492956 -20.922861 0.54680729 --7.6005974 -21.2209 0.55521554 --8.1363354 -22.2848 0.5824675 --8.2551365 -22.18667 0.58129263 --8.4187603 -22.208515 0.58308947 --8.7882452 -22.760773 0.59801698 --8.9738359 -22.82365 0.60091954 --9.3808641 -23.435476 0.61748266 --9.5256166 -23.380253 0.6175518 --9.9254551 -23.940105 0.63298613 --10.086151 -23.911913 0.63381541 --10.270528 -23.937773 0.63602692 --10.743897 -24.622911 0.65484756 --10.849771 -24.45509 0.65229052 --10.983178 -24.351604 0.65136909 --11.11864 -24.253765 0.6506089 --11.267672 -24.185991 0.6506319 --11.462917 -24.215796 0.65316594 --0 -0 0 --1.6634265 -3.4076285 0.12319261 --1.6811937 -3.3910887 0.12303135 --1.6938726 -3.3646386 0.1226167 --1.7163068 -3.3577421 0.12270884 --1.7516211 -3.3755391 0.123446 --1.7750971 -3.3700342 0.12358423 --1.7990431 -3.3652496 0.12374548 --1.8497089 -3.4094994 0.12519677 --17.703773 -32.139832 0.8813175 --17.890404 -32.012272 0.88083375 --18.613604 -32.831577 0.90545958 --18.824175 -32.733215 0.90589726 --19.691599 -33.760445 0.93639731 --0 -0 0 --20.576008 -34.30241 0.95752162 --0 -0 0 --0 -0 0 --0 -0 0 --18.680666 -29.477987 0.83996731 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --30.252485 -44.061905 1.267383 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --10.305405 -8.4525442 0.34293595 --10.353189 -8.3860064 0.34282076 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.476727 -8.670949 0.46484408 --16.455063 -8.5310392 0.46290904 --16.581892 -8.4681015 0.46484408 --0 -0 0 --7.0133934 -3.4745383 0.21616715 --6.9977384 -3.4134748 0.21522266 --7.0158472 -3.3691752 0.21515355 --7.0255413 -3.3209381 0.21487711 --7.0684485 -3.2883065 0.21545301 --0 -0 0 --0 -0 0 --0 -0 0 --36.023994 -15.689958 0.94121188 --0 -0 0 --36.335449 -15.29791 0.94425273 --36.256809 -15.003575 0.93996793 --0 -0 0 --0 -0 0 --0 -0 0 --40.098396 -15.451829 1.0260086 --0 -0 0 --22.343803 -8.2972412 0.58502454 --0 -0 0 --0 -0 0 --43.160305 -15.128184 1.0896579 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --28.313412 -8.3892097 0.71626234 --0 -0 0 --52.892445 -14.967333 1.3024442 --0 -0 0 --0 -0 0 --12.802219 -3.3704076 0.34086269 --12.80426 -3.2870698 0.34042498 --12.854254 -3.2159617 0.34113911 --34.33828 -8.3654261 0.85019547 --34.423985 -8.1628761 0.85102475 --0 -0 0 --0 -0 0 --0 -0 0 --40.530678 -8.5658998 0.99037141 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --46.386196 -8.3257046 1.1217475 --18.549795 -3.2127941 0.4696126 --18.592825 -3.1028624 0.47016549 --52.451218 -8.4207001 1.2598962 --29.780655 -4.5943418 0.73015326 --29.863668 -4.4197187 0.73144329 --27.533398 -3.9024515 0.67659384 --24.216219 -3.2809894 0.5989154 --24.114933 -3.1167121 0.59610498 --27.753372 -3.41378 0.68014145 --27.687407 -3.2333393 0.67813724 --27.609343 -3.052629 0.67587972 --27.655396 -2.8860681 0.6765247 --25.857782 -2.5382607 0.63450652 --27.622028 -2.540345 0.6749813 --25.874035 -2.2196445 0.63420701 --29.566559 -2.3535874 0.71925706 --29.594402 -2.1731505 0.71957958 --29.616158 -1.9921254 0.71978694 --39.47686 -2.4117887 0.9471553 --41.976509 -2.3059957 1.0045156 --41.754211 -2.0368998 0.99907911 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --243.81808 1.5853306 5.6540952 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 -0 0 --121.53112 -2.287369 1.3726013 --0 -0 0 --0 -0 0 --0 -0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --74.574036 2.7161655 0.85656738 --95.583656 4.0686855 1.0879976 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --59.896358 14.198633 0.71288013 --59.752731 14.552397 0.71225339 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --0 0 0 --50.012844 14.149378 0.60753363 --0 0 0 --80.117027 23.73168 0.95481086 --79.874199 24.193834 0.95371133 --0 0 0 --46.985939 14.864061 0.57790118 --0 0 0 --0 0 0 --0 0 0 --41.244026 14.170177 0.5155465 --41.127991 14.413057 0.51521665 --41.066086 14.674901 0.51553553 --73.036285 26.60556 0.89074093 --0 0 0 --51.784092 19.587044 0.64479691 --0 0 0 --63.385979 24.868639 0.78472376 --61.931221 24.737455 0.7693193 --0 0 0 --35.068668 14.509316 0.45332381 --35.009392 14.737022 0.45368668 --0 0 0 --35.188957 15.323624 0.45804083 --0 0 0 --0 0 0 --30.885534 14.131563 0.40948534 --30.811844 14.327131 0.4096503 --0 0 0 --63.207561 30.339127 0.80695635 --31.184652 15.204737 0.41750097 --39.899395 19.757601 0.52558529 --27.182873 13.66903 0.37057281 --0 0 0 --26.974024 13.981331 0.37008899 --0 0 0 --28.768305 15.362098 0.39461964 --0 0 0 --0 0 0 --27.224066 15.188004 0.37879732 --0 0 0 --0 0 0 --33.804535 19.683559 0.46614441 --33.674511 19.885525 0.46603444 --0 0 0 --46.984688 28.528654 0.64043176 --0 0 0 --0 0 0 --0 0 0 --44.152622 28.315012 0.61276746 --0 0 0 --43.245693 28.488348 0.60544455 --42.933685 28.662111 0.60364127 --42.582256 28.806787 0.60132128 --20.82119 14.27273 0.31358388 --20.715975 14.388239 0.31335297 --20.608492 14.501844 0.3131001 --20.469454 14.592615 0.31242937 --0 0 0 --0 0 0 --45.351215 33.606117 0.65668285 --44.862652 33.672466 0.65281248 --0 0 0 --0 0 0 --58.407139 45.542934 0.85042101 --57.795422 45.638947 0.84578097 --56.967636 45.555565 0.83808422 --56.263519 45.561298 0.83209175 --37.102253 30.423813 0.56360722 --40.06525 33.266647 0.60863316 --54.235123 45.596966 0.81513691 --53.58884 45.617771 0.80985916 --52.929211 45.61932 0.80436146 --52.109608 45.473148 0.79649979 --51.776402 45.745022 0.79571909 --21.987999 19.668488 0.36040211 --21.742384 19.690269 0.35855487 --33.600468 30.806213 0.53726232 --0 0 0 --35.9795 33.809334 0.57890177 --33.700783 32.059734 0.54747701 --47.154987 45.412998 0.75588292 --46.760178 45.589096 0.75411272 --46.320862 45.718513 0.7516607 --14.52954 14.518057 0.26186174 --14.440888 14.607646 0.26187274 --0 0 0 --43.829098 45.435997 0.73018682 --43.506714 45.659191 0.72950512 --43.036579 45.724316 0.72647035 --27.995453 30.112122 0.48811314 --0 0 0 --41.290768 45.519993 0.71179157 --41.020695 45.783665 0.7119565 --0 0 0 --0 0 0 --0 0 0 --38.911564 45.635242 0.69546348 --0 0 0 --25.247221 30.356766 0.47016871 --25.096657 30.555151 0.47079545 --16.017351 19.747133 0.31559604 --15.73147 19.63979 0.31270427 --26.411491 33.39056 0.50414437 --36.5481 46.792698 0.68888825 --36.594948 47.449982 0.69491369 --36.341274 47.723751 0.69560641 --23.020603 30.619116 0.45723817 --0 0 0 --36.52354 49.84042 0.71545303 --36.473747 50.418438 0.72026902 --36.533291 51.158829 0.72726202 --36.460091 51.724476 0.7318691 --36.464691 52.41098 0.73808146 --21.622375 31.488667 0.45602867 --0 0 0 --20.575058 30.765846 0.44298819 --22.091082 33.475384 0.4770298 --20.298544 31.173552 0.44505531 --20.265789 31.544849 0.44828796 --19.592209 30.91186 0.43843612 --19.722893 31.544443 0.4450883 --0 0 0 --22.29388 36.649284 0.50770682 --22.146263 36.914864 0.50936711 --8.5911598 14.522028 0.22154179 --8.5074348 14.58397 0.22166274 --0 0 0 --20.945118 36.938393 0.50293487 --20.937132 37.458118 0.50787175 --20.417389 37.06039 0.50127459 --19.873266 36.602352 0.49398464 --17.953365 33.555756 0.45447832 --19.969591 37.88105 0.50688219 --10.134372 19.513994 0.277794 --10.008069 19.563347 0.27764007 --9.9206896 19.689575 0.27844274 --9.8143568 19.779636 0.27880558 --9.7200222 19.895187 0.27948731 --15.004944 31.19586 0.41665432 --17.618586 37.212376 0.48873985 --14.630284 31.397585 0.41689622 --0 0 0 --0 0 0 --0 0 0 --39.634052 90.812889 1.1255467 --0 0 0 --38.315693 90.816109 1.1198621 --37.743561 91.015327 1.1194553 --0 0 0 --13.665918 34.132656 0.44029433 --13.444882 34.187019 0.43995348 --11.922794 30.871662 0.39990839 --12.068175 31.827793 0.410299 --11.48376 30.856335 0.39803919 --11.197136 30.660406 0.3949275 --10.483346 29.261913 0.37779674 --11.796575 33.574757 0.42731982 --9.9658375 28.930777 0.372475 --9.7762985 28.956327 0.37206817 --9.5918465 28.995832 0.37183726 --9.4226894 29.081728 0.37215614 --9.2743082 29.234308 0.37325567 --9.1226292 29.38043 0.37428921 --0 0 0 --8.7967129 29.609024 0.37565264 --9.9402065 34.225582 0.42790258 --9.7417545 34.327297 0.42837536 --9.040554 32.617241 0.4081879 --9.3738365 34.644058 0.4306514 --8.5497618 32.385406 0.40431753 --0 0 0 --3.618005 14.420146 0.19948511 --3.5292192 14.441103 0.19947411 --0 0 0 --0 0 0 --0 0 0 --8.8383989 40.441963 0.4912028 --8.5801258 40.448483 0.49067503 --4.0515456 19.695375 0.25711176 --3.9380496 19.75713 0.25752959 --3.8214846 19.805466 0.25780445 --6.3232107 33.885998 0.41504902 --6.1084299 33.886761 0.41463119 --4.7980313 27.586153 0.34389809 --4.6075158 27.488844 0.34249067 --4.4780974 27.760429 0.34520653 --4.9780707 32.111462 0.3933222 --4.7756481 32.105793 0.39292637 --5.1426601 36.093262 0.43689677 --4.9289279 36.181602 0.43753451 --4.5924935 35.331619 0.42778161 --4.3672652 35.291653 0.42703393 --3.5615349 30.305592 0.3715404 --3.3855834 30.417311 0.37254098 --3.1781862 30.240608 0.37036389 --3.9496455 39.935734 0.4772827 --3.7119153 40.038872 0.47816232 --3.4534996 39.914452 0.47654602 --3.2293475 40.194038 0.47940481 --1.9654515 26.500605 0.3282077 --1.8599424 27.352173 0.33746579 --1.6883121 27.302191 0.33679506 --1.5308774 27.493744 0.33879623 --0 0 0 --1.1825775 27.261709 0.33605838 --1.0218683 27.445318 0.33800456 --1.2251269 39.40057 0.46946502 --1.0522946 42.169319 0.49984518 --0.74512362 39.603592 0.47156513 --0.49954411 39.405449 0.46934405 --0.25954214 39.681747 0.47235677 --0.017295182 42.675411 0.50526589 -0 0 0 -0.40487328 34.110531 0.41111267 -0.61396605 34.096409 0.41099173 -0 0 0 -1.7331256 57.234299 0.66564411 -0 0 0 -1.1919328 27.99494 0.34411797 -2.0214903 41.491268 0.49278614 -1.5515983 28.273743 0.34737259 -1.7606211 28.846569 0.35379389 -1.8776656 27.943289 0.34396404 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -2.2032709 19.939425 0.25659499 -2.3331089 19.990088 0.25730968 -4.920568 40.028255 0.47947076 -5.0924387 39.427082 0.47314844 -5.3365436 39.411938 0.47333536 -0 0 0 -4.9622545 33.545914 0.40889162 -5.1686044 33.518787 0.40893558 -4.701283 29.293346 0.36223832 -4.9320927 29.570694 0.36565787 -5.1240158 29.600962 0.36633959 -5.2566333 29.296335 0.36329389 -5.52176 29.723629 0.3684397 -0 0 0 -0 0 0 -0 0 0 -3.0600665 14.482341 0.19877042 -3.1699274 14.56002 0.19985895 -3.2642362 14.562738 0.20011185 -3.3528559 14.539512 0.20007886 -3.4445426 14.529368 0.20019981 -7.5881186 31.156326 0.38861617 -9.5280294 38.103409 0.46789268 -3.4912164 13.605353 0.19045793 -3.5161083 13.36126 0.18792899 -3.6084404 13.378053 0.18836881 -0 0 0 -9.7910862 34.607441 0.43148705 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -10.721687 33.891354 0.42688 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -7.722497 20.043465 0.27219737 -7.845336 19.995703 0.27219737 -7.9649124 19.939758 0.27210942 -8.085227 19.88588 0.27205443 -8.1176395 19.619684 0.26948154 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -25.001104 55.540684 0.70575511 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -44.835667 87.817581 1.120225 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.833994 31.779224 0.44792512 -29.560266 46.722862 0.64396125 -20.449732 31.887804 0.45255414 -20.550188 31.615845 0.45064095 -20.935219 31.779751 0.45446736 -21.092068 31.594145 0.45371965 -21.261436 31.428516 0.45324686 -13.799527 20.130854 0.30438077 -0 0 0 -14.073145 19.99925 0.30490854 -35.1385 49.290676 0.7016319 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -28.817959 36.493732 0.54732311 -29.075062 36.358391 0.54791683 -35.440617 43.765381 0.65525347 -35.667278 43.496838 0.65453875 -31.94887 38.478138 0.58594978 -36.007896 42.829315 0.65128416 -0 0 0 -37.33765 43.320404 0.66487443 -0 0 0 -0 0 0 -37.163403 41.546623 0.64895314 -36.974628 40.828629 0.64169621 -37.229858 40.606884 0.64178419 -37.608925 40.518398 0.64389527 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -19.576649 19.834253 0.34244668 -19.702221 19.718004 0.34251267 -39.232964 38.786022 0.64264178 -36.691608 35.831081 0.59993583 -36.878387 35.574032 0.59944105 -0 0 0 -0 0 0 -0 0 0 -38.790546 35.622765 0.61512041 -0 0 0 -17.272182 15.474992 0.29101044 -17.313644 15.32167 0.29022977 -17.340324 15.156577 0.28925118 -17.300541 14.93554 0.28732699 -17.365988 14.807046 0.28695315 -17.491699 14.729841 0.28745893 -17.39109 14.463664 0.28473207 -17.997219 14.781915 0.29209897 -17.507475 14.200656 0.28388545 -17.445217 13.973562 0.28178534 -17.572193 13.899136 0.28236809 -19.382963 15.139044 0.30644789 -18.653595 14.385947 0.29503474 -20.085176 15.294424 0.31360587 -19.441746 14.616855 0.30346817 -19.847414 14.73211 0.30780032 -18.970377 13.901372 0.29461691 -20.088278 14.531986 0.30863598 -20.295059 14.492715 0.31023031 -20.513554 14.459516 0.31197858 -20.638004 14.358502 0.31246236 -20.593004 14.140468 0.3106921 -20.446781 13.856213 0.30760241 -21.041765 14.071803 0.31435356 -20.789705 13.719367 0.30990043 -22.298843 14.519678 0.32860354 -22.39677 14.388527 0.32872447 -0 0 0 -0 0 0 -0 0 0 -32.082245 19.515676 0.44892567 -20.36153 12.215246 0.29710186 -20.48171 12.117066 0.29768461 -24.729992 14.426349 0.35082516 -21.370832 12.291576 0.30709663 -21.586763 12.240119 0.30887789 -21.725178 12.14305 0.30968055 -21.794022 12.006623 0.30961457 -21.781164 11.825912 0.30853701 -28.185488 15.080035 0.38750565 -23.102867 12.178865 0.32318282 -23.1745 12.035497 0.32314983 -0 0 0 -20.326273 10.241507 0.28628242 -21.312227 10.57484 0.29761863 -0 0 0 -20.370768 9.7980146 0.28456715 -21.599966 10.226545 0.29879513 -21.694937 10.109022 0.29919097 -22.607325 10.365822 0.30948263 -22.275831 10.048862 0.30472162 -22.601213 10.029208 0.3078993 -22.927181 10.005936 0.31107694 -23.436567 10.057511 0.31644267 -23.840559 10.058115 0.32053295 -24.199245 10.034983 0.32407346 -24.663174 10.050466 0.32885644 -25.123545 10.058768 0.33358443 -25.46582 10.014949 0.33690503 -26.039824 10.056648 0.34295246 -26.415194 10.015803 0.3466469 -26.674826 9.9274769 0.34897792 -0 0 0 -34.063728 12.203708 0.43388405 -34.125702 11.990157 0.43374109 -35.566647 12.251803 0.44965139 -35.648731 12.035898 0.44973934 -35.708622 11.812539 0.44958541 -35.733818 11.57811 0.44904664 -35.771782 11.348351 0.4486728 -35.80827 11.118565 0.44829896 -35.73613 10.856203 0.44669363 -34.270344 10.181635 0.42912304 -35.713982 10.372503 0.44494537 -36.116524 10.249541 0.44882673 -0 0 0 -37.780083 10.222405 0.46637532 -0 0 0 -0 0 0 -0 0 0 -55.232815 13.499333 0.66122395 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -56.55093 11.272648 0.67007524 -56.605289 10.922793 0.66992128 -54.980534 10.259754 0.65100926 -0 0 0 -57.421333 9.9876671 0.67689234 -130.49535 21.87435 1.4909552 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -17.278984 0.64320016 0.22613785 -17.230633 0.53554964 0.22556609 -0 0 0 -17.355879 0.32632136 0.22688553 -0 0 0 -0 0 0 -0 0 0 -17.324663 -0.099516995 0.22651169 -0 -0 0 -0 -0 0 -17.348886 -0.41909015 0.22683056 -17.317003 -0.52465552 0.22651169 -17.349432 -0.63221085 0.22690752 -0 -0 0 -17.33737 -0.84492153 0.22687453 -17.337851 -0.95161438 0.22694051 -17.345659 -1.0588322 0.22709444 -17.3538 -1.1662486 0.22725937 -17.393188 -1.2761455 0.22777615 -17.43786 -1.387045 0.22835891 -17.436993 -1.4946986 0.22844687 -17.475288 -1.6060535 0.22897464 -0 -0 0 -27.41963 -2.8594861 0.33914807 -27.430391 -3.0308604 0.33946696 -27.409292 -3.1988811 0.33944497 -27.393118 -3.3674891 0.33948892 -27.403673 -3.5396054 0.3398408 -25.365952 -3.4347994 0.31747624 -27.399757 -3.8815141 0.34030259 -27.379381 -4.050148 0.34034657 -27.364885 -4.2197447 0.34046751 -27.676138 -4.4417591 0.34422794 -0 -0 0 -0 -0 0 -19.286777 -3.4607582 0.25147113 -19.334982 -3.5920005 0.2522518 -0 -0 0 -43.56049 -8.6463528 0.52434283 -0 -0 0 -0 -0 0 -0 -0 0 -37.596889 -8.4266987 0.45967913 -37.547398 -8.6579046 0.45971212 -10.880705 -2.5796394 0.15896724 -10.975428 -2.6733267 0.16022071 -0 -0 0 -64.156784 -16.461508 0.76432735 -0 -0 0 -60.046654 -16.19486 0.71987319 -9.041564 -2.4985125 0.13915361 -8.0388708 -2.2746601 0.12787238 -7.9383183 -2.2989135 0.12688279 -7.9585786 -2.3578026 0.12727863 -7.9334345 -2.4034026 0.12715769 -7.8516736 -2.4313343 0.12638801 -7.8966699 -2.4984658 0.12708071 -7.9173484 -2.5585544 0.12749854 -7.9451818 -2.6214967 0.12800433 -46.81715 -15.764372 0.57920963 -46.569176 -15.999681 0.57746136 -46.097378 -16.154499 0.57311821 -7.2098994 -2.5767913 0.12019762 -11.256542 -4.1008735 0.16774152 -7.328661 -2.7211034 0.12196787 -42.457542 -16.059404 0.53515124 -7.0297208 -2.7087381 0.11884519 -11.022191 -4.324759 0.16620217 -11.014019 -4.3997269 0.16642208 -7.1806064 -2.9197724 0.12124218 -7.1911993 -2.9756274 0.12158304 -37.538315 -15.801529 0.48385793 -4.6437483 -1.9887637 0.091554731 -4.6213732 -2.0128284 0.091433778 -4.6052785 -2.0395274 0.091389798 -4.5607638 -2.053381 0.09100496 -4.5598993 -2.086735 0.0911479 -4.6784835 -2.1758065 0.092742227 -4.7220039 -2.2313831 0.093434937 -4.6352038 -2.2252665 0.09254431 -4.5585465 -2.2229905 0.091774635 -4.537652 -2.2473695 0.091686673 -4.5157366 -2.2711267 0.091587715 -4.7501893 -2.4256496 0.094655417 -4.6997051 -2.4363449 0.094215602 -4.6218371 -2.4320796 0.093434937 -4.3104539 -2.3021359 0.0897405 -4.3261385 -2.344739 0.09011434 -4.3633666 -2.3996651 0.090763062 -4.5965619 -2.5647461 0.093885742 -4.5981431 -2.602752 0.094105653 -4.423389 -2.5398123 0.092093505 -3.3500273 -1.9510506 0.078635193 -3.3422978 -1.9741114 0.078690164 -3.3404167 -2.000747 0.078822114 -4.2135692 -2.5588589 0.090213299 -3.379477 -2.0809038 0.079646759 -3.4981301 -2.1836607 0.081351042 -3.4669199 -2.1938567 0.081120141 -3.4769619 -2.2302022 0.081428006 -3.47998 -2.2623932 0.081647918 -3.4952593 -2.3029563 0.082032755 -3.5467629 -2.3682196 0.082901388 -2.9855351 -2.0201497 0.075644456 -3.0176213 -2.06896 0.0762382 -2.9884439 -2.0760286 0.076018296 -2.9584761 -2.0822423 0.075787395 -2.9887981 -2.1311193 0.07637015 -4.0149198 -2.8999348 0.090466186 -4.0043139 -2.9298286 0.090565145 -3.9910822 -2.9579155 0.09063112 -5.4555717 -4.0952101 0.1110165 -5.4335251 -4.1310282 0.11106049 -5.3692522 -4.1343989 0.11052171 -5.3769021 -4.1930909 0.11098352 -5.5880718 -4.4131517 0.11430412 -5.5476122 -4.4367399 0.11411719 -20.090954 -16.269661 0.32028005 -20.003119 -16.402775 0.32045597 -19.885941 -16.511787 0.32022509 -3.4615922 -2.9107387 0.08573819 -3.4398599 -2.928683 0.085683212 -4.5852432 -3.9524651 0.10257208 -3.622905 -3.1619942 0.088882856 -3.5809541 -3.1643023 0.088552997 -2.8445027 -2.5448971 0.077975467 -3.3461809 -3.0308082 0.085650228 -3.7712266 -3.4580822 0.092269428 -3.8891866 -3.6104057 0.094358541 -2.8700931 -2.6974766 0.079316899 -2.8795693 -2.7398474 0.079712734 -3.4785144 -3.3505192 0.089113764 -3.4621863 -3.375988 0.089179732 -3.0336137 -2.994683 0.082879394 -2.9819357 -2.9800222 0.082362615 -2.9628916 -2.9975519 0.082351618 -2.9472377 -3.018537 0.082395598 -2.977951 -3.0876608 0.08317627 -2.9623983 -3.1094947 0.083231248 -3.7704735 -4.0064735 0.096502639 -3.7308402 -4.013422 0.096260741 -2.9249516 -3.1855905 0.083561108 -3.8653886 -4.2618351 0.099273466 -3.8211496 -4.2653646 0.09897659 -3.2448761 -3.6672127 0.089850448 -3.2381074 -3.7051227 0.09011434 -3.4871464 -4.0397887 0.094688408 -3.1742299 -3.7232754 0.089806467 -3.470803 -4.1220498 0.095260166 -3.4965975 -4.204772 0.096139789 -13.404035 -16.319687 0.26822805 -3.4422157 -4.2442575 0.096095808 -3.2066848 -4.0038543 0.092412367 -3.1746132 -4.0140438 0.092280425 -3.5395486 -4.532279 0.099240482 -1.6594976 -2.1523654 0.065891579 -3.3255491 -4.3677382 0.096370697 -3.3467596 -4.4520001 0.09725032 -1.6225785 -2.1865613 0.065946557 -1.6097225 -2.1972826 0.065957546 -1.5962099 -2.2071183 0.065957546 -1.5785694 -2.2111747 0.065880582 -1.5609394 -2.2150979 0.06580361 -1.5284725 -2.197547 0.065440767 -1.5160919 -2.2085328 0.065462761 -1.505878 -2.2227604 0.065528728 -1.4994375 -2.242764 0.065671667 -1.4768356 -2.2385688 0.065495744 -1.5007213 -2.3054066 0.066254422 -1.5346508 -2.3894455 0.067233011 -1.5263842 -2.408952 0.067364953 -1.526418 -2.4420121 0.067672826 -1.9145368 -3.1049662 0.076117255 -1.9146771 -3.1482639 0.076524079 -1.8973814 -3.1633828 0.076568067 -1.5912807 -2.6904452 0.070377678 -1.4951316 -2.5636921 0.068640411 -1.4295173 -2.4861391 0.067540877 -1.4827945 -2.6157699 0.069069237 -1.4330527 -2.5645931 0.068310551 -1.3087231 -2.3762789 0.065836601 -1.297935 -2.3912945 0.065924563 -1.3002203 -2.4309537 0.066320397 -1.4340342 -2.7210574 0.069827914 -7.8548656 -15.124939 0.22341099 -1.681532 -3.2877076 0.076612048 -7.6695676 -15.221977 0.22343299 -1.6326153 -3.2910762 0.076403134 -1.6246818 -3.3261881 0.076711006 -1.1530298 -2.3980339 0.065264843 -1.1382941 -2.4050636 0.065264843 -1.1260495 -2.4174409 0.065330811 -1.1349517 -2.4761143 0.065957546 -1.3639878 -3.024451 0.072488785 -1.3733906 -3.0958285 0.07324747 -1.1663785 -2.6734619 0.06807965 -1.1353616 -2.6465693 0.067672826 -1.1225995 -2.6617775 0.067771785 -1.1269302 -2.7184935 0.068365529 -1.3536314 -3.3226256 0.075457536 -6.3445745 -15.847083 0.22370787 -6.2139153 -15.801034 0.2227073 -6.0566816 -15.683088 0.22087108 -5.955729 -15.707802 0.22072813 -5.8536549 -15.729055 0.22055221 -5.7529168 -15.753406 0.22042026 -1.1921777 -3.3287339 0.074885778 -1.1700732 -3.3312693 0.0748308 -5.5355778 -16.070293 0.22290522 -1.2167511 -3.6049635 0.077843525 -1.1892697 -3.5962226 0.077656604 -5.119247 -15.800378 0.21863902 -5.055161 -15.935382 0.21983752 -1.0084133 -3.2488892 0.073412396 -0.97014767 -3.1947396 0.072719693 -0.96220315 -3.2399316 0.073170498 -0.97633111 -3.362926 0.07451193 -0.95758921 -3.375587 0.074588902 -0.88824749 -3.2060225 0.072587743 -0.85994011 -3.1795599 0.0722249 -4.2112598 -15.952499 0.21742953 -4.1152921 -15.985786 0.2175175 -3.9969282 -15.930237 0.21660487 -0.83388144 -3.4134026 0.07464388 -0.80690384 -3.3931625 0.074358001 -3.7005475 -15.990393 0.21648392 -3.586998 -15.944509 0.21571425 -3.4884562 -15.963287 0.21568127 -3.3786139 -15.928636 0.21505453 -1.7125515 -8.3261852 0.12947769 -1.6686636 -8.3728209 0.12988453 -1.617447 -8.3838835 0.12989552 -2.9852207 -15.99889 0.21496657 -2.9299283 -16.255053 0.21762745 -2.8296199 -16.269768 0.21759446 -0.46843502 -2.7968678 0.06718903 -0.45142421 -2.8006766 0.06720002 -0.43392467 -2.8014176 0.067178033 -0.41069493 -2.7634761 0.066727221 -0.39232025 -2.7560446 0.066617273 -0.37270242 -2.7385843 0.066397361 -0.35344264 -2.7219791 0.066188447 -0.33317262 -2.695318 0.065869585 -1.8929759 -16.109177 0.21436182 -1.7978575 -16.154276 0.21473567 -1.7064379 -16.238594 0.21554932 -0.23877667 -2.4180887 0.062724918 -0.2246736 -2.4274735 0.06281288 -0.21460214 -2.4845946 0.063428618 -0.19646965 -2.4499824 0.063032784 -0.17817831 -2.4072649 0.062548988 -0.16245431 -2.3943462 0.062395055 -0.14726597 -2.3873136 0.06230709 -0.13228129 -2.3821819 0.062241118 -0.11781044 -2.3859448 0.062274106 -0.10295159 -2.3816278 0.062219128 -0.090048343 -2.42818 0.062724918 -0.085592933 -2.7645042 0.066419356 -0.068928093 -2.7769728 0.066551298 -0.30674854 -16.316126 0.21545036 -0.20993975 -16.578665 0.21832015 -0.10885292 -16.677633 0.21939769 -0.0065362477 -16.719984 0.2198595 --0.016092926 -2.743783 0.066177458 --0.032868877 -2.7386332 0.06612248 --0.30415764 -16.880236 0.22165175 --0.40743759 -16.866056 0.2215198 --0.081547849 -2.6805937 0.065495744 --0.096538499 -2.6400719 0.065055929 --0.11316107 -2.6494203 0.065165885 --0.12805326 -2.6207108 0.064858012 --0.14648668 -2.6628087 0.065330811 --0.15996015 -2.6149497 0.064814031 --0.17492975 -2.5979559 0.064638108 --1.2731464 -17.352301 0.22732535 --1.3719848 -17.24847 0.2262698 --1.4752322 -17.209839 0.22593993 --1.6072428 -17.488234 0.22911759 --1.7104192 -17.436245 0.22865579 --1.8184109 -17.435368 0.22876574 --1.9273344 -17.441772 0.22896366 --2.0325804 -17.414721 0.22879872 --2.1368351 -17.381079 0.22856782 --2.2611179 -17.504496 0.23008518 --2.3604312 -17.430838 0.22942546 --2.4980528 -17.632849 0.23183344 --2.6146851 -17.674561 0.23247117 --2.7116566 -17.584064 0.23164652 --2.8820827 -17.957083 0.23598969 --2.9754326 -17.838455 0.23486815 --3.0635135 -17.696703 0.23349373 --3.1632116 -17.628361 0.23294397 --3.3009021 -17.767885 0.23472522 --3.4260857 -17.831747 0.23567082 --3.5453629 -17.860411 0.23623158 --3.6591001 -17.858892 0.23646249 --3.8696845 -18.314514 0.24183922 --3.9811366 -18.286518 0.24179523 --4.0705223 -18.160269 0.24065171 --4.233099 -18.357107 0.24315865 --4.2909946 -18.100193 0.24055275 --4.609715 -18.926538 0.25020668 --4.4909577 -17.958866 0.23956317 --5.0700073 -19.758657 0.26031139 --5.2148128 -19.81711 0.26133397 --4.3997297 -16.312037 0.22178368 --4.9268761 -17.830713 0.23942024 --5.7003732 -20.147858 0.26624888 --5.8205538 -20.100975 0.26611695 --5.9474735 -20.077347 0.26625988 --6.080699 -20.073971 0.26664472 --6.2212048 -20.09264 0.26729345 --6.3063731 -19.933964 0.26590803 --6.5017366 -20.121351 0.26852494 --6.6410537 -20.129509 0.26908571 --6.7784805 -20.130077 0.26956949 --6.9444308 -20.211992 0.27100989 --7.1314812 -20.349243 0.27311 --7.2794247 -20.370073 0.27386868 --7.4621162 -20.483809 0.27572688 --7.8281364 -21.085398 0.28332469 --7.9280052 -20.959341 0.28241205 --8.1017551 -21.027868 0.28379747 --8.3274069 -21.22444 0.28671125 --8.4860401 -21.244448 0.2875579 --8.8324032 -21.72368 0.29386923 --9.2923775 -22.459082 0.30327025 --9.4773378 -22.51408 0.30461168 --9.8368931 -22.973024 0.31080207 --10.012799 -22.992912 0.31176966 --10.186889 -23.006016 0.31267127 --10.29092 -22.861013 0.31168169 --10.440151 -22.817444 0.31192359 --11.005353 -23.667831 0.3230179 --11.108081 -23.510351 0.32192937 --1.6458892 -3.4281306 0.07782153 --1.6559373 -3.3954971 0.077546649 --1.6723033 -3.3763115 0.077436693 --1.6925393 -3.3650935 0.077425703 --1.7067896 -3.3421767 0.077271767 --1.7396886 -3.3556111 0.077568643 --1.7644358 -3.3528378 0.077667601 --1.7887431 -3.349005 0.077755563 --4.5566921 -8.4080629 0.14116576 --15.774196 -28.687149 0.39599407 --15.984021 -28.650948 0.39676374 --16.96871 -29.982134 0.41482911 --17.320127 -30.169697 0.41853452 --17.416367 -29.910769 0.41659933 --17.519234 -29.667299 0.41486207 --17.55864 -29.321609 0.41181636 --18.709215 -30.812502 0.43238866 --19.65016 -31.919058 0.448167 --19.863113 -31.82588 0.44852984 --0 -0 0 --20.681843 -32.249748 0.45728216 --20.859171 -32.091217 0.45687532 --21.08099 -32.001038 0.4573811 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --27.891108 -39.124226 0.56434393 --0 -0 0 --28.390377 -38.808067 0.5647397 --0 -0 0 --29.53195 -39.346062 0.57696658 --25.528334 -33.580692 0.49984518 --0 -0 0 --0 -0 0 --31.350031 -39.700287 0.59225011 --31.518097 -39.413464 0.59093064 --31.079721 -38.380058 0.57905567 --31.29244 -38.161572 0.57867086 --32.044685 -38.593536 0.5875991 --0 -0 0 --32.467262 -38.140285 0.58677441 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --37.967926 -38.943142 0.63406545 --0 -0 0 --0 -0 0 --38.651287 -38.210964 0.63364762 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --10.308075 -8.4662609 0.18268421 --10.362935 -8.4053717 0.1827282 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --137.87766 -95.928505 1.8829616 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --16.529774 -8.7136784 0.24147636 --16.438284 -8.5369663 0.23968412 --0 -0 0 --0 -0 0 --6.9975982 -3.4718182 0.1219019 --6.989121 -3.4143307 0.12153906 --6.999126 -3.3661807 0.12140711 --7.0196486 -3.3231714 0.12140711 --7.0652852 -3.291863 0.12171498 --0 -0 0 --0 -0 0 --0 -0 0 --36.030697 -15.724849 0.46828851 --36.056667 -15.473502 0.46745285 --0 -0 0 --36.306648 -15.055913 0.46820053 --0 -0 0 --0 -0 0 --0 -0 0 --39.914101 -15.415154 0.50649732 --0 -0 0 --22.330256 -8.310504 0.29800346 --0 -0 0 --43.069599 -15.430271 0.53907657 --0 -0 0 --46.093845 -15.878278 0.57208461 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --49.572826 -15.059782 0.60570842 --28.370607 -8.4287672 0.36144665 --52.617386 -15.281996 0.63849658 --0 -0 0 --0 -0 0 --0 -0 0 --12.781356 -3.3740363 0.18136477 --12.791165 -3.2928054 0.18124382 --12.885809 -3.2329977 0.18209046 --34.310001 -8.3854799 0.42438406 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --40.251869 -8.5384169 0.48846498 --0 -0 0 --0 -0 0 --0 -0 0 --0 -0 0 --18.644392 -3.3606589 0.24432416 --18.599642 -3.2348862 0.24359846 --18.664505 -3.1283042 0.24410425 --27.216496 -4.3903461 0.33914807 --27.248852 -4.2241855 0.33921406 --27.096228 -4.0304265 0.33723488 --27.208551 -3.8766456 0.33821347 --24.171286 -3.2926607 0.30424884 --24.140463 -3.1377125 0.30368808 --27.47278 -3.3996086 0.34040156 --27.37693 -3.2173181 0.33911508 --26.906212 -2.9947364 0.3336944 --26.874357 -2.8243604 0.33314461 --25.850323 -2.556458 0.32164347 --27.496429 -2.5490091 0.33965388 --25.877756 -2.2388699 0.32162148 --28.400764 -2.2817135 0.34930778 --28.348415 -2.1025243 0.34858209 --39.609116 -2.693589 0.47255468 --39.573997 -2.4473531 0.47199392 --0 -0 0 --0 -0 0 --41.790157 -1.8130132 0.49596381 --0 -0 0 --0 -0 0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --63.69471 13.90506 -0.088954993 --0 0 -0 --0 0 -0 --58.071224 13.80186 -0.078384236 --58.000015 14.161477 -0.078413032 --103.11124 25.848337 -0.16787472 --0 0 -0 --0 0 -0 --0 0 -0 --79.59021 22.041191 -0.12234329 --49.870895 14.140506 -0.063309491 --80.311562 23.305803 -0.12433803 --79.42218 23.577017 -0.1228463 --95.351631 28.943829 -0.15509996 --0 0 -0 --46.979084 14.891832 -0.058406163 --75.000839 24.282578 -0.11513998 --74.76783 24.715012 -0.11497295 --74.478333 25.127277 -0.11469649 --74.266968 25.56459 -0.11458322 --41.074894 14.420976 -0.047366962 --0 0 -0 --0 0 -0 --67.428421 25.077675 -0.10190637 --0 0 -0 --65.715294 25.362761 -0.099024661 --63.890629 25.109999 -0.095584273 --33.914139 13.569011 -0.033918336 --33.838577 13.780243 -0.033935618 --35.016224 14.510988 -0.036560066 --60.718445 25.60078 -0.090298899 --32.716221 14.030639 -0.032132868 --0 0 -0 --58.759697 26.058912 -0.087196402 --30.920891 13.939944 -0.0289075 --30.848412 14.135657 -0.028936299 --54.657639 25.453695 -0.079545751 --29.134178 13.785151 -0.025668694 --29.082394 13.979687 -0.025739729 --31.132008 15.200878 -0.03030324 --39.88942 19.781271 -0.049271464 --27.177671 13.685473 -0.022209104 --27.09853 13.854707 -0.022220625 --27.022772 14.025787 -0.022241743 --29.039143 15.299369 -0.026805252 --28.906803 15.456985 -0.026722698 --55.108612 29.905033 -0.08416494 --27.421133 15.098113 -0.023887064 --27.325357 15.264619 -0.023881303 --0 0 -0 --58.06604 33.380104 -0.092376187 --33.784008 19.697445 -0.03886966 --0 0 -0 --0 0 -0 --46.635838 28.354017 -0.068573751 --46.205608 28.482208 -0.067997791 --45.33036 28.327961 -0.066413902 --44.713043 28.325144 -0.065407895 --44.240528 28.407686 -0.064728267 --43.62957 28.394951 -0.063729942 --43.024624 28.378553 -0.062741213 --42.595291 28.47196 -0.062153734 --42.423927 28.735588 -0.062163331 --42.412529 29.109098 -0.062549226 --42.245438 29.377354 -0.062578022 --20.568188 14.490368 -0.012093358 --27.725225 19.7887 -0.02918588 --42.596207 30.799803 -0.064707145 --42.490318 31.122044 -0.064906813 --42.394127 31.453079 -0.065135278 --42.430569 31.885635 -0.0656882 --59.851288 45.554832 -0.10819392 --59.152473 45.598854 -0.10718023 --58.533421 45.696945 -0.10635661 --57.57653 45.52124 -0.10470361 --0 0 -0 --0 0 -0 --37.057423 30.422913 -0.055839311 --40.087452 33.324444 -0.06387201 --54.158623 45.587109 -0.099698536 --53.537685 45.628609 -0.098840356 --52.80019 45.562302 -0.097682677 --52.115238 45.532097 -0.096651718 --51.850605 45.864929 -0.096692033 --34.237518 30.661085 -0.052026466 --21.785242 19.751211 -0.020245086 --49.656101 45.580132 -0.093195967 --36.138134 33.582241 -0.058502156 --38.141876 35.883007 -0.064328939 --0 0 -0 --38.89724 37.504059 -0.067525506 --46.560085 45.447346 -0.088703491 --46.125286 45.578949 -0.088284962 --14.508456 14.512506 -0.0031871223 --14.419136 14.601254 -0.0031871223 --44.450409 45.571224 -0.086008005 --43.862583 45.524086 -0.085157506 --43.333557 45.530865 -0.084464438 --28.818958 30.654184 -0.044565886 --31.160261 33.554935 -0.05170393 --41.729729 45.493923 -0.082310356 --41.318871 45.604607 -0.081935979 --40.774864 45.562927 -0.081177637 --40.219685 45.501312 -0.080380894 --39.91935 45.723888 -0.080321379 --39.315449 45.593845 -0.079372965 --38.800243 45.55862 -0.078677975 --38.322361 45.56089 -0.078088582 --37.855503 45.57056 -0.077527978 --37.490185 45.69838 -0.077270716 --37.107101 45.801678 -0.076959699 --15.748447 19.683119 -0.01218551 --23.967539 30.336422 -0.038015321 --23.926722 30.669779 -0.038470328 --36.537579 47.43293 -0.078739412 --36.481934 47.966652 -0.079488158 --36.361061 48.421497 -0.080044918 --0 0 -0 --36.491146 49.857426 -0.082408264 --36.548809 50.584568 -0.083602421 --36.472321 51.136791 -0.084378041 --36.457779 51.785641 -0.085378289 --36.448616 52.453461 -0.08641886 --36.413956 53.09589 -0.087396063 --0 0 -0 --20.472097 30.649588 -0.034551892 --22.053944 33.46072 -0.040728085 --20.180574 31.03096 -0.034855228 --20.110212 31.341892 -0.035283357 --19.808952 31.293169 -0.034893628 --19.736267 31.605824 -0.035327516 --22.105862 35.889099 -0.044713717 --21.879524 36.01466 -0.044692598 --8.7522354 14.606459 0.0035189523 --8.5922518 14.541073 0.0037838931 --8.5073986 14.601296 0.0037666142 --19.102451 33.256031 -0.037420165 --21.136986 37.326721 -0.046144012 --20.878313 37.40332 -0.046028819 --20.569851 37.387909 -0.045715883 --20.3167 37.470345 -0.045621809 --17.895218 33.492943 -0.036694456 --19.838583 37.684982 -0.045552693 --19.624472 37.839737 -0.045625649 --19.393742 37.962997 -0.045633327 --9.9016285 19.678185 -0.0060822726 --9.7780352 19.733192 -0.0060707536 --15.152164 31.057861 -0.03013429 --14.958714 31.14484 -0.030122772 --14.774597 31.251408 -0.030155409 --17.367006 37.32645 -0.042828411 --41.484543 90.615135 -0.155123 --0 0 -0 --15.254027 34.427902 -0.03608394 --39.566326 90.805077 -0.15395381 --0 0 -0 --38.339565 91.023888 -0.1534124 --37.709187 91.085571 -0.15305531 --37.108513 91.214272 -0.15284605 --14.032166 35.10532 -0.03637192 --13.415257 34.168697 -0.034263913 --13.618299 35.321526 -0.036467914 --13.076361 34.54586 -0.034705479 --12.847081 34.579514 -0.034611408 --11.511686 31.576988 -0.028316183 --11.148018 31.172457 -0.027348572 --11.007499 31.385595 -0.027644232 --10.921354 31.762726 -0.028273946 --10.448452 31.004686 -0.026603667 --11.971889 36.259613 -0.037099548 --11.257843 34.812851 -0.034033529 --9.9559689 31.444397 -0.02711243 --0 0 -0 --10.713197 35.337639 -0.034682442 --10.487926 35.374905 -0.034626767 --0 0 -0 --9.8318167 34.719658 -0.033067837 --10.139648 36.663612 -0.036821168 --9.4646912 35.058784 -0.033507489 --9.2435389 35.093956 -0.033463329 --0 0 -0 --3.6177094 14.449944 0.0076120957 --3.5308728 14.479643 0.0075967372 --9.027318 38.040424 -0.03885046 --8.8031816 38.136024 -0.038931094 --8.6025105 38.338612 -0.039224833 --8.8125324 40.4347 -0.04324118 --8.194499 38.739689 -0.039810389 --8.7323637 42.571503 -0.047222976 --3.9279275 19.761328 -0.0024710142 --3.8150997 19.829247 -0.0025574078 --6.3711452 34.250362 -0.030673772 --0 0 -0 --6.2387881 35.990154 -0.033916418 --4.6442461 27.802679 -0.017906696 --5.6651316 35.245506 -0.032324854 --4.9526505 32.066685 -0.026083384 --4.7588773 32.117245 -0.026123701 --5.9326444 41.809059 -0.044861544 --0 0 -0 --3.9091363 30.207006 -0.022266701 --3.7306824 30.286997 -0.022376133 --3.5454714 30.315277 -0.022387652 --3.352792 30.276827 -0.02227246 --4.1873007 40.061646 -0.041121654 --0 0 -0 --3.6985774 40.144867 -0.041188851 --3.4564636 40.216621 -0.041284844 --0 0 -0 --3.6960762 50.225052 -0.060475774 --2.5120621 37.253288 -0.035473425 --2.2826993 37.256023 -0.035450388 --1.5122617 27.433256 -0.016537836 --2.5361254 51.807823 -0.063372843 --0 0 -0 --1.5498794 42.273476 -0.045003615 --0 0 -0 --0.9609375 39.41217 -0.039478254 --0.71881771 39.402328 -0.039449457 --0.47741041 39.436996 -0.039508972 --0 0 -0 -0 0 -0 -0 0 -0 -0.42259097 33.985268 -0.02904189 -0.63260096 34.062019 -0.02919548 -0 0 -0 -1.7663835 57.2286 -0.073713213 -0 0 -0 -0 0 -0 -2.0377593 41.337685 -0.043248862 -1.7058239 30.769651 -0.022954011 -1.7640526 28.640629 -0.018880066 -1.8961951 27.986742 -0.017643675 -2.07548 28.077299 -0.017841421 -0 0 -0 -6.4901714 75.207298 -0.1087142 -0 0 -0 -0 0 -0 -0 0 -0 -2.2141359 19.940371 -0.002307826 -2.3306203 19.876749 -0.0022118329 -4.8416252 39.201027 -0.039622243 -5.1003413 39.311401 -0.039894864 -5.3475204 39.323956 -0.039981257 -5.5347605 38.911221 -0.039245952 -4.9813414 33.544044 -0.028895982 -5.1939549 33.557316 -0.028982375 -4.7684846 29.606348 -0.021362446 -4.9512119 29.583435 -0.021375885 -8.3469305 48.055347 -0.057430875 -8.6409264 47.99929 -0.057423197 -5.3356781 28.633001 -0.019707527 -0 0 -0 -0 0 -0 -0 0 -0 -3.0855935 14.566712 0.0076236152 -3.1625435 14.490841 0.0077349669 -3.2603891 14.511165 0.0076562525 -10.015924 43.323151 -0.049158193 -10.284105 43.27158 -0.049179312 -0 0 -0 -9.5396414 38.057476 -0.039115399 -3.4568577 13.443601 0.0095607545 -3.5176013 13.339948 0.0097239427 -3.6179171 13.386652 0.0095876325 -9.5379248 34.443691 -0.032405488 -0 0 -0 -9.9384232 34.250103 -0.032257657 -10.119077 34.089737 -0.032059912 -13.645247 44.954594 -0.053984724 -10.575172 34.087154 -0.032309495 -11.974465 37.776455 -0.039871827 -12.198947 37.680389 -0.039827671 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -7.9582639 19.892036 -0.0049226764 -8.0752659 19.830791 -0.0048977183 -8.1925812 19.770708 -0.0048766001 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -25.060951 55.586693 -0.080853179 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -37.950043 77.719231 -0.12983844 -0 0 -0 -38.46328 76.378654 -0.12797041 -38.85973 76.001427 -0.12766899 -0 0 -0 -0 0 -0 -33.466679 62.58466 -0.10004411 -0 0 -0 -0 0 -0 -37.897297 67.836815 -0.11297245 -41.104572 72.528877 -0.12384271 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -19.849514 31.763821 -0.035699967 -20.168732 31.838255 -0.036147296 -20.316698 31.640697 -0.035980269 -20.63265 31.703178 -0.036410317 -20.853769 31.616884 -0.036504392 -21.024033 31.453417 -0.036423754 -40.008133 59.065388 -0.10075254 -13.780765 20.079929 -0.010545949 -13.923125 20.022907 -0.010611225 -14.038234 19.926474 -0.010586266 -35.171116 49.275406 -0.080018036 -0 0 -0 -34.63327 47.283909 -0.076314628 -34.910831 47.054451 -0.076276228 -34.121109 45.405201 -0.072832003 -33.740707 44.33004 -0.070745111 -0 0 -0 -33.80032 43.295471 -0.069241859 -33.915249 42.89743 -0.068777256 -34.037823 42.513664 -0.068347208 -34.204201 42.188274 -0.068061143 -34.17878 41.632126 -0.06720297 -31.965347 38.45261 -0.059790384 -34.392796 40.859943 -0.06632559 -34.585129 40.58041 -0.066154726 -34.715225 40.230404 -0.065807231 -0 0 -0 -35.147331 39.734703 -0.065636359 -35.261719 39.374523 -0.065265827 -35.633633 39.30188 -0.065640204 -35.665833 38.855598 -0.065048881 -35.974373 38.712208 -0.065248549 -31.467413 33.448528 -0.05195735 -36.45155 38.2729 -0.06526199 -34.08556 35.351906 -0.05807019 -36.943619 37.848465 -0.065331101 -19.603533 19.839458 -0.017336497 -37.495117 37.482044 -0.065574922 -37.771358 37.297646 -0.065701634 -36.790405 35.885864 -0.062458992 -38.656136 37.245541 -0.066847794 -38.942619 37.063492 -0.067003302 -39.017025 36.680691 -0.066602051 -39.757973 36.920319 -0.067955554 -40.142944 36.821678 -0.068370245 -40.49485 36.689484 -0.06869854 -17.552824 15.709215 -0.0090139005 -17.152121 15.162134 -0.0077410326 -17.692299 15.447253 -0.0088814301 -17.159676 14.797702 -0.007291785 -17.311817 14.744651 -0.007447294 -17.480022 14.703806 -0.0076431194 -17.566069 14.593079 -0.0076335203 -17.429523 14.299822 -0.0070729209 -18.230234 14.770474 -0.008835353 -18.322863 14.660212 -0.0088411132 -18.36853 14.512794 -0.0087336004 -18.34054 14.308783 -0.0084494613 -18.363029 14.145939 -0.0082920324 -18.422419 14.012418 -0.0082267569 -18.516846 13.905721 -0.0082478756 -18.73196 13.88832 -0.0085588936 -18.829737 13.782571 -0.0085896114 -19.484592 14.079062 -0.0099411933 -19.911741 14.202537 -0.010745615 -21.252039 14.962559 -0.013688762 -20.85811 14.494641 -0.012554124 -20.405653 13.995373 -0.011294696 -20.565678 13.920347 -0.011467483 -20.829493 13.913309 -0.011880253 -21.320267 14.052682 -0.012813305 -21.414474 13.927051 -0.012832504 -20.865755 13.388767 -0.011386849 -20.848656 13.19791 -0.011162225 -0 0 -0 -20.378115 12.552475 -0.0097396076 -0 0 -0 -20.48687 12.275249 -0.0096416948 -0 0 -0 -20.816553 12.128123 -0.010042946 -21.259113 12.211841 -0.010858887 -21.425013 12.132903 -0.011060473 -21.428328 11.961736 -0.010904963 -21.424217 11.787612 -0.010736016 -21.453945 11.633056 -0.010643862 -21.395264 11.431928 -0.010361643 -20.30315 10.688836 -0.0078408653 -20.329292 10.543801 -0.0077563915 -21.102472 10.780972 -0.0092846006 -20.322262 10.225671 -0.0074664922 -21.251104 10.530079 -0.0093229981 -21.262289 10.373618 -0.009209726 -20.433123 9.814373 -0.0073090638 -21.504614 10.167048 -0.009457388 -21.700781 10.097336 -0.009741528 -23.095285 10.574215 -0.012556043 -22.277124 10.034784 -0.010697618 -22.557707 9.99512 -0.011158385 -23.123743 10.076613 -0.012216228 -23.416773 10.03378 -0.012700033 -23.831789 10.038963 -0.01343726 -24.258823 10.044015 -0.014197525 -24.653458 10.030634 -0.014888675 -25.048828 10.012782 -0.015579825 -25.478405 10.003608 -0.01634009 -25.886406 9.9808989 -0.017054278 -26.348383 9.973732 -0.017877899 -26.843103 9.9731064 -0.018766794 -37.393585 13.631952 -0.040202044 -0 0 -0 -35.279125 12.372876 -0.035565577 -35.402607 12.172756 -0.035663489 -35.463364 11.95083 -0.035636611 -35.428722 11.697581 -0.035419669 -35.346642 11.430441 -0.03511057 -0 0 -0 -0 0 -0 -34.15575 10.354928 -0.032311413 -34.151531 10.125262 -0.032177024 -34.372456 9.9617243 -0.032495718 -36.089794 10.21976 -0.03580172 -36.386032 10.062889 -0.036268245 -37.234894 10.052093 -0.037834853 -38.293839 10.086259 -0.039816149 -38.947773 10.003329 -0.040991105 -0 0 -0 -0 0 -0 -0 0 -0 -59.381443 13.706731 -0.080791742 -0 0 -0 -0 0 -0 -0 0 -0 -54.514877 11.181882 -0.070629917 -54.575596 10.84581 -0.070616484 -54.639153 10.510359 -0.070612639 -54.694748 10.173438 -0.070597284 -0 0 -0 -57.433441 9.9552145 -0.075698353 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -17.20414 0.73718035 0.003150339 -17.192348 0.6310181 0.0031810568 -17.187901 0.52527213 0.0031964155 -17.364748 0.42403525 0.0028623599 -17.366024 0.31746095 0.0028642796 -17.317648 0.21029532 0.0029602726 -17.312613 0.10399663 0.0029717919 -17.312925 -0.0022335283 0.0029717919 -17.310585 -0.10845093 0.0029756315 -17.307594 -0.21463971 0.0029794713 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -17.343088 -1.0677462 0.0028508406 -17.33621 -1.1741413 0.0028508406 -0 -0 -0 -0 -0 -0 -0 -0 -0 -17.46946 -1.6147131 0.002528304 -0 -0 -0 -27.431543 -2.8760998 -0.016743261 -27.422325 -3.0453563 -0.016760539 -27.417027 -3.2151904 -0.016787417 -27.40373 -3.3842158 -0.016800856 -27.392366 -3.5535851 -0.016820055 -25.365507 -3.4489448 -0.012936177 -27.387287 -3.8952389 -0.01689877 -27.370783 -4.0643864 -0.016914129 -27.364107 -4.2351604 -0.016950605 -0 -0 -0 -0 -0 -0 -0 -0 -0 -19.311617 -3.4758072 -0.0014611671 -19.286978 -3.5936859 -0.0014554076 -0 -0 -0 -43.583519 -8.6770086 -0.049106356 -0 -0 -0 -0 -0 -0 -0 -0 -0 -37.646927 -8.4604702 -0.037869412 -37.58456 -8.6890554 -0.037850212 -0 -0 -0 -11.165174 -2.7251568 0.014145383 -11.084223 -2.7775645 0.014272094 -11.203526 -2.8806493 0.014001394 -10.917802 -2.8786883 0.014533195 -10.947235 -2.9584126 0.014439122 -9.0669651 -2.5098743 0.018148294 -9.0302286 -2.559459 0.018190529 -7.9156866 -2.2959776 0.02038685 -7.9244571 -2.3513343 0.020340774 -7.9213629 -2.4033995 0.020317735 -7.8625331 -2.4383271 0.020406049 -7.8855538 -2.4986126 0.020329256 -7.9994607 -2.5888433 0.020068154 -7.9388003 -2.6231265 0.020158388 -25.549292 -8.6189356 -0.015556786 -0 -0 -0 -41.091877 -14.426938 -0.047401521 -10.882875 -3.8951273 0.014018672 -7.2458758 -2.64325 0.021402458 -11.236345 -4.1779342 0.013195052 -7.2624545 -2.7507493 0.021300705 -7.0616541 -2.724324 0.021678917 -11.070054 -4.3496656 0.013375519 -7.1502438 -2.8598139 0.021425495 -7.197391 -2.9300363 0.021291105 -34.093346 -14.128507 -0.034642126 -0 -0 -0 -9.0951881 -3.8996356 0.0172114 -19.585396 -8.5415144 -0.0048113246 -5.6497474 -2.5044129 0.024345605 -5.6643577 -2.5525956 0.024282249 -4.7222314 -2.1627805 0.026238587 -4.7460389 -2.2090242 0.026159873 -4.642909 -2.1957583 0.026349939 -4.7041535 -2.2601666 0.02619059 -4.5706849 -2.230629 0.026445933 -4.7835689 -2.3710394 0.025960207 -4.7992969 -2.4156389 0.025894932 -29.407227 -15.03519 -0.027198823 -4.3246307 -2.243535 0.026856782 -4.3275924 -2.2788851 0.026820306 -4.272964 -2.2837036 0.026908619 -4.268539 -2.3151257 0.026887501 -4.6904883 -2.581486 0.025931409 -4.6282916 -2.5843685 0.026033163 -4.4896784 -2.543196 0.026303863 -4.5078001 -2.5901337 0.026228989 -4.414938 -2.5729144 0.026399856 -4.3302064 -2.5592356 0.026553445 -3.3041382 -1.9799469 0.02881504 -4.2557521 -2.586205 0.026649438 -4.4747481 -2.7571018 0.026119556 -7.0119672 -4.3807735 0.020336935 -4.4498696 -2.817693 0.026098438 -4.468679 -2.8681784 0.026015883 -4.4635682 -2.9037259 0.025987085 -3.5908797 -2.3672235 0.027953023 -4.3802114 -2.9266055 0.026096517 -23.075123 -15.629151 -0.01729618 -22.949108 -15.750071 -0.017227065 -22.942345 -15.953391 -0.01743825 -4.1280437 -2.9070828 0.026516967 -4.0905943 -2.9184139 0.026563045 -4.0588346 -2.9334972 0.026595682 -21.228949 -15.548425 -0.014308877 -21.084158 -15.642043 -0.014191765 -5.4838729 -4.1197395 0.023042019 -5.4282541 -4.1302953 0.023114974 -5.3909292 -4.1543665 0.023143772 -3.8976638 -3.0415192 0.026718553 -5.570951 -4.4031706 0.022577412 -5.5461702 -4.4391456 0.022571653 -19.148695 -15.524011 -0.011116148 -18.992023 -15.591084 -0.010964479 -18.747589 -15.583943 -0.010593946 -18.436638 -15.517724 -0.010054465 -4.2048941 -3.5822973 0.025605034 -3.4954066 -3.0148158 0.027348267 -3.6892042 -3.2217493 0.026806867 -3.595964 -3.179394 0.026995013 -3.5763879 -3.2013986 0.026995013 -3.3803625 -3.0634174 0.02745194 -3.7762542 -3.4648221 0.026371058 -3.8669989 -3.5920813 0.026077319 -16.68022 -15.691469 -0.0077563915 -16.573486 -15.783866 -0.0077295131 -3.4978819 -3.3711247 0.02688366 -3.2595911 -3.1801751 0.027467299 -3.9441967 -3.8959799 0.025566636 -3.0803409 -3.0799015 0.027847432 -3.5454857 -3.589015 0.026524646 -3.5282848 -3.6157134 0.026511207 -3.0099452 -3.1223962 0.027883908 -3.0369196 -3.1893396 0.027755277 -2.970717 -3.1583691 0.027885828 -3.910044 -4.209034 0.025180744 -3.7672055 -4.105454 0.02551288 -3.7446296 -4.1314564 0.0255052 -3.2757521 -3.6588056 0.026781907 -3.7691469 -4.2625136 0.025286335 -3.2121918 -3.6776359 0.026835663 -3.8843822 -4.5030813 0.024792932 -3.8754814 -4.5489092 0.024737256 -3.2546675 -3.867769 0.026505448 -3.7976425 -4.5699711 0.024802532 -3.4035735 -4.147089 0.025910292 -12.435716 -15.348301 -0.0017145888 -12.346929 -15.431344 -0.0017318676 -3.5733833 -4.5213366 0.025146186 -3.5412683 -4.5376577 0.025159625 -3.599401 -4.6710048 0.024888925 -3.5385888 -4.6508169 0.024990678 -3.5189919 -4.6844368 0.024961879 -1.6112524 -2.1714566 0.031019041 -2.5292747 -3.4538813 0.02799142 -2.5747972 -3.5617406 0.027772557 -2.7880588 -3.9072025 0.026995013 -11.079247 -15.73586 -0.0007373796 -1.5107893 -2.1722291 0.031130394 -1.5200551 -2.2144463 0.031053599 -10.499628 -15.511456 0.00024942897 -10.073788 -15.0808 0.0013917462 -9.9667568 -15.120619 0.0014416627 -1.5023229 -2.3080897 0.030923048 -1.4832723 -2.3096895 0.030940328 -1.467468 -2.3162124 0.030946087 -1.9897497 -3.1844225 0.029001268 -1.4200548 -2.3033936 0.031015201 -1.3809737 -2.27104 0.031107355 -1.3546785 -2.2588828 0.031153431 -1.3433361 -2.2714572 0.031143833 -1.3540384 -2.3219965 0.031049758 -1.6216654 -2.8210635 0.029963117 -1.5496324 -2.7343707 0.030176222 -1.5425731 -2.7612913 0.030137826 -1.4759539 -2.6804595 0.03033557 -1.2888472 -2.3747461 0.03102288 -1.266241 -2.3676155 0.031055519 -1.4668902 -2.784158 0.030168543 -1.4787822 -2.8490331 0.030047592 -1.4667319 -2.8687396 0.030024553 -7.3614211 -14.62919 0.0047687818 -7.2710752 -14.673188 0.0047707018 -1.1580694 -2.3712749 0.031143833 -1.1608144 -2.4143934 0.031067038 -6.9775343 -14.757527 0.0048705344 -6.8750415 -14.774675 0.0049242903 -6.7792616 -14.805671 0.0049473289 -6.6599522 -14.784076 0.0050797993 -6.5654678 -14.816434 0.0050970782 -6.5726957 -15.081962 0.0046247924 -1.330954 -3.1036043 0.029726975 -1.3146026 -3.1181636 0.029713536 -6.2117348 -15.001739 0.0050375625 -6.1493378 -15.112747 0.0048858933 -6.0687394 -15.180837 0.0048225378 -1.0969927 -2.7911141 0.030452682 -1.076249 -2.7884619 0.03047188 -5.7380166 -15.157165 0.0050951582 -5.6184402 -15.120845 0.0052410676 -5.4813752 -15.033835 0.0054887296 -1.2010976 -3.3554595 0.029367961 -1.1844573 -3.37409 0.029344922 -5.15593 -14.993169 0.0057709492 -5.0845919 -15.086121 0.005646158 -5.0279813 -15.226237 0.005425374 -1.1603675 -3.5848286 0.028976308 -4.8144951 -15.203849 0.0055924021 -4.495296 -14.504289 0.0070572561 -0.96799403 -3.1892867 0.029811449 -0.96460718 -3.2498155 0.029702017 -0.9646883 -3.3248277 0.029563786 -0.9543494 -3.3662848 0.029492751 -0.88436949 -3.1937692 0.029847926 -0.86553806 -3.2020319 0.029842166 -4.0125074 -15.231268 0.005970615 -3.9393711 -15.335024 0.0058131861 -3.8755515 -15.480166 0.0055732033 -0.82766759 -3.3903868 0.029510031 -0.80800337 -3.4002664 0.02950043 -3.597827 -15.582983 0.0055060084 -3.5133083 -15.654529 0.0054080957 -3.4254916 -15.713897 0.0053332211 -0.64547718 -3.0463178 0.030231899 -0.62014306 -3.017894 0.030295253 -0.60102928 -3.0186999 0.030301014 -0.57777363 -2.997781 0.030349011 -2.9413104 -15.808629 0.0053389804 -0.5347544 -2.970197 0.030416206 -0.49619815 -2.8561704 0.030644668 -0.49381784 -2.9499044 0.030468041 -2.5045447 -15.577877 0.0059187785 -0.44109967 -2.8490074 0.030675385 -0.41657647 -2.8041785 0.03076754 -0.39809832 -2.797771 0.030784817 -0.37958017 -2.7902517 0.030804018 -0.36219576 -2.7905447 0.030807856 -1.95489 -15.865948 0.0055194474 -1.8584306 -15.88559 0.0055040885 -0.30581838 -2.7520123 0.03089425 -0.31386888 -2.9925368 0.030433483 -0.4134739 -4.1946201 0.028118132 -0.38690299 -4.1881161 0.02813541 -1.3174525 -15.320387 0.0066886428 -1.2254108 -15.353103 0.0066406461 -1.137566 -15.447099 0.0064736186 -1.0453856 -15.4927 0.0063987439 -0.15146655 -2.4542832 0.031489406 -0.14916427 -2.6868148 0.031043999 -0.11728097 -2.3730564 0.031648755 -0.10126474 -2.3397627 0.03171403 -0.087235816 -2.3493338 0.031696752 -0.081078604 -2.6206985 0.03117647 -0.066944361 -2.7011228 0.03102288 -0.051753316 -2.7774699 0.030876972 -0.03474633 -2.780735 0.030871212 -0.017825956 -2.8048954 0.030825134 -0.00061628362 -2.7989521 0.030836655 --0.016519781 -2.7929032 0.030848173 --0.033431981 -2.7747507 0.030882731 --0.29715145 -16.033175 0.0054234546 --0.39834362 -16.145014 0.00520459 --0.49761617 -16.149261 0.0051911511 --0.09563417 -2.6142037 0.031187989 --0.11081013 -2.5935864 0.031226385 --0.79123998 -16.065454 0.0053293812 --0.14201978 -2.5810483 0.031247504 --0.15693137 -2.5651567 0.031276304 --0.17375016 -2.5801086 0.031245586 --1.2181647 -16.485983 0.0044731232 --1.3372705 -16.702478 0.0040411544 --1.4424815 -16.72584 0.0039797188 --1.5459111 -16.725636 0.00396244 --1.6505711 -16.736734 0.003922123 --1.7660656 -16.848619 0.0036859801 --1.8670948 -16.816595 0.0037262973 --1.9761865 -16.855474 0.0036283843 --2.085948 -16.894638 0.0035285517 --2.1736145 -16.758553 0.0037666142 --2.3053787 -16.957939 0.0033538442 --2.4092464 -16.942484 0.0033557641 --2.5188882 -16.965958 0.0032808895 --2.6443608 -17.088535 0.0030121088 --2.3197246 -14.406363 0.0081957337 --2.8647611 -17.119892 0.0028853982 --2.9892647 -17.21431 0.0026665339 --3.1107812 -17.28422 0.0024937466 --3.2319849 -17.346401 0.002334398 --3.3716695 -17.499062 0.0019965025 --3.3704011 -16.932751 0.0030639451 --3.5841432 -17.446573 0.002015701 --3.6496651 -17.228598 0.0023996732 --3.7811186 -17.324095 0.0021673702 --3.9744053 -17.687904 0.0014051853 --4.132422 -17.877529 0.00098281587 --4.2818131 -18.019175 0.00065259979 --3.877542 -15.884504 0.0048186979 --4.4452257 -17.736359 0.001105687 --4.5464969 -17.679695 0.0011632828 --4.7752776 -18.107853 0.00025710842 --4.9322286 -18.248112 -8.0787118e-05 --5.1201711 -18.492165 -0.00062794751 --5.2556381 -18.538328 -0.00078345626 --5.4888535 -18.917732 -0.0016070766 --5.3125482 -17.899168 0.00036462065 --5.8553691 -19.292944 -0.0024978921 --5.9466715 -19.169741 -0.0023231849 --6.1566534 -19.424583 -0.0029106622 --6.2486176 -19.302721 -0.0027417145 --6.3707056 -19.27541 -0.0027647528 --6.2832985 -18.626701 -0.0015302822 --6.6025333 -19.183489 -0.0027397946 --6.7631845 -19.265274 -0.0029893764 --6.8913789 -19.251657 -0.0030469724 --7.065259 -19.362131 -0.0033599096 --7.2745662 -19.562105 -0.0038590736 --7.4104056 -19.559179 -0.0039454675 --7.1990075 -18.655056 -0.0021791952 --7.7376599 -19.690136 -0.0044062338 --7.9753528 -19.934744 -0.00501099 --8.1250544 -19.953041 -0.00515114 --8.2718344 -19.961935 -0.0052740113 --8.3941631 -19.910805 -0.0052740113 --8.4468012 -19.697174 -0.0049361154 --8.6262732 -19.779715 -0.005218335 --8.7584229 -19.751093 -0.0052701714 --9.6114779 -21.320583 -0.0086894436 --8.9938908 -19.62849 -0.0052413736 --10.066591 -21.618025 -0.0095725795 --10.207175 -21.573025 -0.0096090576 --10.477999 -21.798391 -0.010223413 --1.6878434 -3.4591329 0.0288208 --1.6854887 -3.4012299 0.028922552 --1.6892347 -3.356885 0.028995508 --1.7111661 -3.3491278 0.028989749 --1.7524158 -3.378505 0.028903354 --1.7735791 -3.3685734 0.028901435 --1.8060042 -3.3796732 0.028853439 --4.5535502 -8.3932962 0.017877592 --13.123835 -23.835772 -0.016029073 --13.432252 -24.045504 -0.016668387 --12.779783 -22.551512 -0.013554372 --0 -0 -0 --0 -0 -0 --15.644053 -26.457903 -0.022800421 --16.633047 -27.740479 -0.025887558 --17.104271 -28.13348 -0.027001077 --17.287592 -28.045877 -0.027041394 --17.423315 -27.881611 -0.026910845 --17.527704 -27.66943 -0.026672782 --18.342312 -28.566048 -0.028965095 --18.533609 -28.478107 -0.029022692 --18.703594 -28.357174 -0.029007332 --19.339052 -28.932735 -0.030602736 --19.542574 -28.852442 -0.03069297 --19.968235 -29.094757 -0.031537708 --19.925999 -28.654785 -0.030796643 --20.203392 -28.676674 -0.031136459 --20.858271 -29.223654 -0.032720342 --21.69639 -30.006752 -0.034880187 --21.878328 -29.870642 -0.034874428 --22.080862 -29.762339 -0.034937784 --21.924229 -29.175421 -0.03385498 --22.056803 -28.979872 -0.033709072 --23.076746 -29.936928 -0.036358479 --23.056925 -29.534655 -0.035724927 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --27.461658 -33.035172 -0.046264965 --27.638083 -32.835445 -0.046188168 --27.888985 -32.723846 -0.046335999 --0 -0 -0 --0 -0 -0 --29.447313 -33.291012 -0.049119797 --29.999277 -33.498554 -0.050121963 --30.282173 -33.399784 -0.050344668 --30.331007 -33.043911 -0.049903098 --0 -0 -0 --31.319405 -33.291206 -0.051542662 --31.403772 -32.973137 -0.051210526 --32.586281 -33.796997 -0.05392329 --32.731571 -33.533443 -0.053754341 --32.858692 -33.253021 -0.053541236 --0 -0 -0 --0 -0 -0 --34.14814 -33.308681 -0.055372782 --35.130344 -33.848553 -0.057448152 --35.410538 -33.701988 -0.057642061 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --10.317468 -8.4654455 0.01058788 --10.36844 -8.40135 0.0105898 --0 -0 -0 --35.622787 -28.14382 -0.050949425 --0 -0 -0 --0 -0 -0 --0 -0 -0 --20.970184 -15.747928 -0.014138009 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --16.403454 -8.6360474 0.00061996217 --16.465012 -8.5398388 0.00060076354 --0 -0 -0 --0 -0 -0 --6.9725189 -3.4558086 0.021269986 --6.9747181 -3.4037538 0.021310303 --7.0071907 -3.3665216 0.021285346 --7.0240989 -3.3217533 0.021293025 --7.070642 -3.2908247 0.021237349 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --36.128246 -15.47979 -0.039249793 --36.217018 -15.25549 -0.03923827 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --22.288456 -8.437108 -0.0095437821 --22.370741 -8.3116817 -0.0096071372 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --28.350088 -8.4054546 -0.020559944 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --12.790498 -3.3697069 0.010816344 --12.787687 -3.2851927 0.01086242 --12.938564 -3.2394438 0.01060324 --34.335182 -8.3710165 -0.03163946 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --40.29821 -8.5241213 -0.04286873 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --18.684622 -3.3577132 -0.00023629586 --18.663488 -3.235831 -0.00015566169 --0 -0 -0 --27.184938 -4.3697987 -0.016651107 --27.151941 -4.1937566 -0.016535915 --27.227612 -4.0345497 -0.016633829 --27.207302 -3.8610873 -0.016547434 --24.213108 -3.284869 -0.010701458 --28.658913 -3.7088552 -0.019269798 --27.537767 -3.3921452 -0.017058117 --28.429129 -3.3249531 -0.018741837 --27.682676 -3.0656219 -0.017261622 --27.959558 -2.9227271 -0.017760787 --25.849222 -2.5419731 -0.013656124 --25.893211 -2.385977 -0.0137118 --25.88644 -2.2252567 -0.013671483 --27.48258 -2.1926033 -0.016720222 --29.464193 -2.1687617 -0.020510027 --30.66824 -2.0682261 -0.022802342 --30.674364 -1.8796436 -0.022790823 --39.461002 -2.1747808 -0.039664481 --41.614037 -2.0373433 -0.043778744 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --112.10613 -2.0430038 -0.17905407 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --152.03152 5.6283779 -0.25586963 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 -0 -0 --112.13109 -2.1691427 -1.5296394 --87.869766 -1.1604209 -1.1906796 --0 -0 -0 --0 -0 -0 --87.842247 0.45699403 -1.1902047 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --69.695068 14.240609 -0.95689672 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --58.084858 13.737114 -0.79704374 --57.993649 14.091841 -0.79696 --102.68208 25.618589 -1.4413565 --80.788139 20.683647 -1.1280731 --0 0 -0 --0 0 -0 --53.612816 14.782949 -0.74016184 --49.893295 14.087354 -0.68752438 --0 0 -0 --79.722786 23.569513 -1.1244429 --0 0 -0 --43.599976 13.4742 -0.60081929 --43.516479 13.741471 -0.60081929 --43.523651 14.037996 -0.60217357 --43.473736 14.316986 -0.60271811 --0 0 -0 --57.872692 19.849243 -0.81791723 --41.057556 14.364251 -0.5709821 --40.997841 14.62632 -0.57141489 --0 0 -0 --66.871391 24.785845 -0.95943785 --51.793354 19.559565 -0.73667127 --51.651833 19.869097 -0.73636413 --0 0 -0 --33.835629 13.494775 -0.4722555 --0 0 -0 --35.017662 14.466754 -0.49265426 --32.89938 13.828585 -0.46192348 --45.917103 19.632528 -0.66091251 --57.269749 24.903149 -0.83562124 --57.050938 25.225372 -0.83462995 --31.045296 13.955397 -0.4388859 --32.978107 15.068114 -0.46988192 --29.235653 13.57564 -0.41369811 --29.158133 13.757757 -0.41379586 --29.075872 13.937706 -0.41383773 --31.124926 15.155459 -0.44699791 --39.858063 19.711163 -0.58449745 --39.815891 19.995293 -0.58574009 --27.158171 13.848122 -0.38927826 --27.084232 14.020476 -0.38945979 --28.91227 15.19241 -0.41965997 --28.847622 15.385055 -0.42012072 --49.971077 27.045437 -0.75701416 --27.431393 15.065022 -0.4006016 --27.279917 15.200447 -0.39966613 --0 0 -0 --24.698093 14.161838 -0.36114448 --24.582211 14.296527 -0.36068371 --24.419096 14.402898 -0.35946903 --24.477859 14.640738 -0.3618705 --46.649906 28.291969 -0.72543174 --46.045292 28.313187 -0.71838081 --45.405701 28.305315 -0.71072954 --44.861786 28.34996 -0.70462805 --44.160751 28.287613 -0.69590169 --43.822811 28.451872 -0.69317907 --43.193008 28.421234 -0.68558365 --42.651764 28.441643 -0.67944032 --42.452423 28.686579 -0.67903543 --42.386162 29.022219 -0.68090636 --42.302586 29.347864 -0.68252593 --20.567867 14.457172 -0.31465042 --20.473886 14.579622 -0.31456664 --42.755093 30.842825 -0.6997413 --42.577957 31.114023 -0.6999647 --42.740673 31.637035 -0.70612204 --42.536144 31.891495 -0.70595449 --42.157303 32.013412 -0.70275712 --41.533661 31.943529 -0.6952455 --41.335297 32.196545 -0.69521755 --41.006645 32.346771 -0.69289982 --40.780834 32.576557 -0.69242513 --39.747581 32.152672 -0.67747164 --37.055691 30.353209 -0.63245755 --38.616573 32.029678 -0.66416568 --38.211811 32.091755 -0.66038191 --37.963142 32.282215 -0.65944648 --37.584763 32.359924 -0.65613741 --37.00185 32.255501 -0.64903069 --0 0 -0 --36.480213 32.597214 -0.64672691 --21.780056 19.703651 -0.37371042 --0 0 -0 --34.516834 32.004776 -0.62088293 --34.284813 32.183117 -0.62021273 --33.859825 32.177284 -0.61584258 --33.233727 31.972662 -0.60754901 --33.012566 32.15226 -0.60707432 --32.673679 32.215214 -0.6043098 --14.499795 14.473185 -0.24967043 --14.414233 14.565434 -0.24974024 --31.885046 32.616692 -0.60051209 --31.553038 32.675777 -0.59787327 --28.968853 30.37042 -0.54966182 --28.792929 30.559242 -0.54988521 --31.195564 33.518921 -0.60298342 --29.858515 32.47966 -0.57965261 --29.610935 32.609699 -0.57866126 --29.116529 32.463257 -0.57251793 --28.730473 32.430992 -0.56859457 --28.379496 32.433594 -0.56538326 --28.136147 32.556427 -0.56444776 --0 0 -0 --27.457382 32.570522 -0.55844402 --0 0 -0 --0 0 -0 --0 0 -0 --15.792456 19.694794 -0.31610247 --24.13438 30.478991 -0.50646287 --0 0 -0 --0 0 -0 --24.577986 32.241261 -0.52969593 --0 0 -0 --0 0 -0 --23.842556 32.500351 -0.52644271 --0 0 -0 --0 0 -0 --0 0 -0 --36.490772 52.389946 -0.85511243 --0 0 -0 --22.287708 32.85117 -0.5179258 --22.017294 32.885109 -0.51620847 --22.132584 33.500122 -0.52425069 --20.203802 30.992567 -0.48019999 --20.020287 31.126884 -0.48038149 --0 0 -0 --30.335291 48.460873 -0.76192886 --30.02949 48.633331 -0.76171941 --29.742477 48.836315 -0.76204056 --8.7100029 14.501678 -0.19981147 --8.6020041 14.523017 -0.19929488 --8.5354242 14.614378 -0.19992317 --19.023228 33.034416 -0.49589348 --20.306108 35.76783 -0.53791964 --0 0 -0 --19.908636 36.092247 -0.53916228 --12.601949 23.18149 -0.33203334 --17.943346 33.494873 -0.4941901 --12.24558 23.199982 -0.32991108 --12.094232 23.257826 -0.32964578 --11.949472 23.328037 -0.32958993 --9.9333248 19.689009 -0.27153519 --9.80165 19.728098 -0.27120012 --23.849833 48.75042 -0.72142458 --14.953458 31.047215 -0.44479188 --17.591145 37.104191 -0.53698415 --17.379635 37.246769 -0.53752869 --37.055695 80.702591 -1.2036085 --0 0 -0 --15.262177 34.34491 -0.48839578 --0 0 -0 --14.841537 34.534206 -0.48846561 --0 0 -0 --0 0 -0 --14.574777 35.711567 -0.50219041 --14.043517 35.022606 -0.49049011 --13.488659 34.245697 -0.47754717 --20.591818 53.234615 -0.76061642 --13.072721 34.422668 -0.47775662 --19.914644 53.42334 -0.75972283 --19.571699 53.504147 -0.75912249 --0 0 -0 --11.068791 31.450817 -0.42916822 --10.942142 31.710964 -0.43201649 --0 0 -0 --10.349297 31.230658 -0.42301089 --10.263671 31.620733 -0.42781389 --11.190683 35.210861 -0.47950187 --23.106415 74.27739 -1.0498011 --10.74756 35.312057 -0.4790132 --10.406304 34.959499 -0.47292569 --10.575209 36.340878 -0.49209577 --10.342727 36.372379 -0.49162105 --10.219435 36.795479 -0.49684289 --0 0 -0 --0 0 -0 --0 0 -0 --3.6376059 14.466204 -0.17188711 --3.5463955 14.478539 -0.17174751 --9.0678511 38.025951 -0.50946474 --0 0 -0 --0 0 -0 --8.8485365 40.386997 -0.54092151 --0 0 -0 --0 0 -0 --3.9484355 19.755316 -0.24490932 --3.8292344 19.789968 -0.2450629 --9.612524 51.363159 -0.69326288 --8.0110731 44.308216 -0.59233028 --7.2732859 41.68713 -0.55449277 --4.6734653 27.79306 -0.35713732 --4.5154643 27.899191 -0.35824034 --4.9877734 32.063202 -0.41669998 --4.7921247 32.101112 -0.41681167 --6.0059838 41.994553 -0.55595875 --5.7513137 42.053398 -0.5562799 --5.5001588 42.141438 -0.55703384 --0 0 -0 --3.5777307 30.306574 -0.38972506 --4.8382411 43.261044 -0.57144284 --0 0 -0 --0 0 -0 --3.7412734 40.127033 -0.52634501 --0 0 -0 --3.764312 46.546478 -0.61567503 --0 0 -0 --2.5537474 37.264954 -0.48517051 --1.7052749 27.344204 -0.34616306 --1.5317371 27.252323 -0.3447389 --0 0 -0 --2.2853315 52.045769 -0.6910429 --0 0 -0 --0 0 -0 --1.0803896 42.405102 -0.55591691 --0.76139379 39.372795 -0.51348585 --0 0 -0 --0.31952214 45.224461 -0.59510875 --0.042018421 45.21957 -0.59502494 -0.23546521 45.222973 -0.59508079 -0.38545442 33.972496 -0.43800628 -0.59421289 33.987488 -0.4382576 -1.0260112 43.439644 -0.5703398 -1.2923839 43.427536 -0.57027 -1.5577859 43.389809 -0.56986511 -1.8205476 43.297516 -0.56872022 -1.4806128 30.718336 -0.3930341 -1.6692318 30.711668 -0.39307597 -1.7003577 28.100855 -0.3567045 -1.8700228 28.048988 -0.35613206 -3.0958364 42.507256 -0.55872327 -3.3502197 42.406719 -0.55759233 -3.6113777 42.39732 -0.55775988 -3.8641775 42.294701 -0.55664295 -0 0 -0 -4.3917809 42.329628 -0.55784369 -2.1894791 19.910019 -0.24328971 -4.5406599 39.085293 -0.51303905 -4.778089 39.037838 -0.51277375 -5.0051579 38.911587 -0.51141942 -5.2344661 38.81078 -0.51044208 -5.4741826 38.78981 -0.51060963 -4.9459724 33.557156 -0.43723837 -5.1533008 33.53606 -0.43737799 -4.745945 29.6709 -0.3831768 -4.903481 29.494253 -0.38109642 -5.1263576 29.706989 -0.38454509 -7.7336407 43.232445 -0.57686019 -8.0107832 43.249069 -0.57778168 -8.3679981 43.679321 -0.58460915 -8.6793423 43.84687 -0.58773673 -8.9576263 43.838833 -0.58839291 -3.0680475 14.557763 -0.1713426 -3.1505251 14.507396 -0.1708958 -10.268962 45.929432 -0.62077123 -7.1711078 31.1737 -0.41026342 -10.233033 43.268055 -0.5844416 -7.5505199 31.072664 -0.41010985 -9.5009565 38.079815 -0.51162887 -3.447268 13.463312 -0.15765966 -3.4978168 13.32005 -0.15590042 -0 0 -0 -0 0 -0 -0 0 -0 -9.9156771 34.311474 -0.46231443 -0 0 -0 -10.35161 34.238895 -0.4630684 -15.808257 51.152779 -0.71120423 -11.89915 37.682037 -0.51538467 -12.129831 37.607365 -0.51537073 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -8.0335274 19.788385 -0.26181751 -8.1536503 19.735949 -0.26177564 -0 0 -0 -0 0 -0 -0 0 -0 -24.606321 55.650841 -0.81325382 -24.950195 55.505196 -0.81335157 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -35.965126 71.616753 -1.0826402 -0 0 -0 -36.449173 70.41256 -1.0707304 -0 0 -0 -33.416451 62.658245 -0.95517939 -0 0 -0 -0 0 -0 -0 0 -0 -37.453468 66.258659 -1.0263865 -37.849869 66.011124 -1.0261213 -26.90773 46.267288 -0.71096689 -0 0 -0 -30.450312 50.91074 -0.79194754 -26.151587 43.120625 -0.66779584 -30.40029 49.439571 -0.77402014 -29.621357 47.516853 -0.74546742 -20.045488 31.720329 -0.48755807 -30.551718 47.695381 -0.75451493 -20.562279 31.670713 -0.49086708 -20.776556 31.574856 -0.4913837 -20.929964 31.386881 -0.49037841 -30.143255 44.60815 -0.71536499 -30.372902 44.358829 -0.7142899 -13.874165 19.998121 -0.30346671 -13.99661 19.912615 -0.30346671 -30.287006 42.532215 -0.69269043 -30.513481 42.298542 -0.69188058 -30.704012 42.016869 -0.69026101 -30.877365 41.714363 -0.68829232 -31.06736 41.436913 -0.68677044 -31.255718 41.159504 -0.6852625 -29.931307 38.917282 -0.64915633 -31.590101 40.556705 -0.6814369 -0 0 -0 -31.844526 39.864433 -0.6760475 -32.002377 39.561783 -0.67413467 -32.228046 39.344563 -0.67377168 -31.802427 38.342583 -0.65919513 -32.133553 38.261581 -0.66128945 -32.801701 38.574055 -0.6706441 -33.039726 38.374336 -0.67068601 -33.273251 38.169376 -0.67065811 -31.574814 35.775421 -0.62988853 -33.743137 37.762665 -0.67074186 -33.964149 37.543785 -0.67053241 -34.181042 37.320667 -0.67026716 -34.398518 37.098503 -0.67004377 -0 0 -0 -31.681355 33.337952 -0.60578978 -34.080074 35.424297 -0.64999408 -35.247673 36.190857 -0.66902453 -19.558523 19.836639 -0.35258564 -19.709538 19.745981 -0.35317206 -35.990299 35.617519 -0.6706441 -36.298256 35.484089 -0.67240334 -36.746189 35.483658 -0.67688525 -34.137115 32.561787 -0.62234896 -37.267647 35.113712 -0.67858863 -37.497768 34.898685 -0.67888182 -37.876823 34.82021 -0.68202329 -38.08902 34.586472 -0.68200934 -38.412922 34.452923 -0.68411762 -17.892511 15.850657 -0.2973792 -17.905905 15.667483 -0.29582939 -17.488024 15.113377 -0.28634909 -17.570541 14.997349 -0.28616756 -17.968792 15.147695 -0.29176641 -18.135937 15.099214 -0.29312074 -17.820446 14.65234 -0.28574869 -18.100967 14.697775 -0.28918341 -18.165068 14.56579 -0.28872263 -18.831833 14.911537 -0.29901278 -19.423946 15.187426 -0.30789271 -18.521116 14.299235 -0.29032829 -25.745344 19.625952 -0.41563886 -20.567007 15.47974 -0.32304168 -18.915209 14.055498 -0.29265997 -19.022058 13.95455 -0.29302299 -19.104895 13.835811 -0.29298112 -21.325449 15.245398 -0.32964578 -20.117983 14.196443 -0.30741802 -20.323683 14.155601 -0.30944252 -20.67795 14.214726 -0.31398022 -20.634047 13.998882 -0.31177419 -20.731186 13.879799 -0.31196967 -21.238932 14.031786 -0.31904849 -21.11606 13.765233 -0.3155719 -21.281698 13.687877 -0.31692624 -21.539204 13.667399 -0.31980246 -21.592148 13.51588 -0.31929982 -20.178152 12.459071 -0.29474035 -31.95299 19.459969 -0.48600826 -20.255808 12.166238 -0.29353958 -20.252651 11.995859 -0.292283 -20.236078 11.818918 -0.29083094 -20.066465 11.55531 -0.28693548 -20.071775 11.394942 -0.28588831 -20.093325 11.244712 -0.2851204 -20.118166 11.097062 -0.28442231 -20.141954 10.949532 -0.28372419 -20.130316 10.783713 -0.28248155 -20.166924 10.644589 -0.28202081 -20.089918 10.446836 -0.27978685 -20.135841 10.314252 -0.27950761 -20.210356 10.196362 -0.2796891 -20.448944 10.15981 -0.28243965 -20.714785 10.133894 -0.28560907 -20.98197 10.105528 -0.28879246 -21.369745 10.131233 -0.29383281 -21.5937 10.075603 -0.29633203 -23.084484 10.599238 -0.31829455 -22.320776 10.083198 -0.30560291 -22.552179 10.021577 -0.30819988 -22.907352 10.011554 -0.31268173 -23.554451 10.122701 -0.32158962 -23.755199 10.036748 -0.32369789 -24.308525 10.095212 -0.33113974 -24.859741 10.145744 -0.33852574 -25.205515 10.106895 -0.34279817 -0 0 -0 -26.016808 10.063407 -0.35311621 -0 0 -0 -0 0 -0 -0 0 -0 -33.928082 12.175149 -0.4669359 -33.912544 11.935205 -0.46560952 -33.890617 11.69428 -0.46421328 -33.88596 11.460483 -0.46309632 -0 0 -0 -33.871876 10.994392 -0.46086237 -33.885334 10.769391 -0.46008047 -33.921181 10.552064 -0.45964766 -33.950851 10.333247 -0.45914501 -34.0462 10.134434 -0.45961973 -34.578178 10.062243 -0.46646121 -35.838596 10.190936 -0.48387203 -0 0 -0 -0 0 -0 -0 0 -0 -39.993279 10.318583 -0.54033512 -0 0 -0 -0 0 -0 -0 0 -0 -59.403427 13.781195 -0.8151108 -0 0 -0 -54.501759 11.941136 -0.74268895 -54.483047 11.587151 -0.74139047 -54.60894 11.264145 -0.74218637 -54.622116 10.917883 -0.74140447 -54.616417 10.568655 -0.74038523 -54.659595 10.229473 -0.74009204 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -17.182083 0.64859176 -0.20369297 -17.200729 0.54362643 -0.20390239 -0 0 -0 -17.33507 0.33500129 -0.20570353 -0 0 -0 -0 0 -0 -0 0 -0 -17.286076 -0.090253249 -0.20497748 -17.287195 -0.19633958 -0.20500541 -17.290665 -0.30249545 -0.20507522 -17.294481 -0.4087249 -0.20515899 -17.222685 -0.51278245 -0.2041956 -17.244196 -0.6193459 -0.20454466 -17.220091 -0.72430271 -0.20426542 -17.122438 -0.82547385 -0.20296693 -17.104073 -0.92981428 -0.20278543 -17.298658 -1.0468814 -0.20559183 -17.328823 -1.1554649 -0.20610842 -17.337364 -1.2629328 -0.20633182 -17.430962 -1.3773205 -0.20775597 -17.419193 -1.4839944 -0.20771408 -17.439632 -1.5935776 -0.20813294 -0 -0 -0 -27.478786 -2.8511193 -0.34936041 -27.435928 -3.0169404 -0.34901133 -27.412928 -3.1847658 -0.34895548 -27.405771 -3.3544874 -0.34913701 -27.401533 -3.5247514 -0.34937435 -25.402481 -3.4262099 -0.32151979 -27.388889 -3.8653555 -0.3498351 -27.386419 -4.0365453 -0.35014227 -27.370029 -4.2058759 -0.35026795 -27.431581 -4.3877907 -0.35151058 -0 -0 -0 -0 -0 -0 -19.289841 -3.4508917 -0.23723012 -19.242741 -3.5644524 -0.2368671 -15.614437 -2.9916468 -0.18559799 -15.466311 -3.0617709 -0.18375498 -15.315959 -3.1297903 -0.18188404 -15.272006 -3.218554 -0.18153499 -15.212885 -3.3037138 -0.1809765 -15.24307 -3.4083407 -0.18170254 -15.26572 -3.511893 -0.18233083 -15.310052 -3.6211438 -0.18328026 -11.128964 -2.704555 -0.12352213 -11.001561 -2.7451968 -0.12193044 -11.031005 -2.8245533 -0.12260062 -10.997993 -2.8881221 -0.12237723 -13.590897 -3.6582198 -0.16013096 -31.665052 -8.7313452 -0.42225695 -9.0241766 -2.5483158 -0.09453664 -7.9075255 -2.2855191 -0.078535981 -7.9163656 -2.3407993 -0.078871071 -7.8693118 -2.3794911 -0.078396358 -7.8755808 -2.4342265 -0.07870353 -7.8614497 -2.4828053 -0.078717493 -7.9640698 -2.5690544 -0.080448799 -7.9348602 -2.6134942 -0.080253333 -37.182716 -12.498667 -0.51134962 -37.111 -12.728527 -0.51143336 -37.040695 -12.958967 -0.51155907 -0 -0 -0 -10.855143 -3.9482262 -0.12489042 -7.2116761 -2.6733873 -0.070996404 -7.2624874 -2.743021 -0.072001681 -11.075533 -4.2608042 -0.12930247 -7.0914197 -2.7783248 -0.069949239 -7.160614 -2.8562329 -0.071247727 -7.1707478 -2.9113989 -0.071666591 -33.708141 -13.925773 -0.47286984 -9.1098719 -3.8294654 -0.10158754 -9.098156 -3.8904004 -0.10176905 -19.596277 -8.5215244 -0.26198506 -8.9765692 -3.9694085 -0.10065208 -5.6515088 -2.540812 -0.050122947 -9.0154009 -4.1195726 -0.10200641 -4.8508501 -2.2528734 -0.038283017 -4.8061891 -2.2680886 -0.037808303 -28.885622 -13.846511 -0.41089171 -4.7788935 -2.3273349 -0.037822265 -28.741314 -14.213679 -0.41132456 -28.574926 -14.350277 -0.41009587 -4.3281546 -2.2073333 -0.031441547 -5.2673368 -2.7270651 -0.046422966 -5.3823919 -2.8286335 -0.048503332 -4.7852783 -2.5524721 -0.039330181 -4.6683984 -2.5270543 -0.037724528 -4.6037245 -2.5286977 -0.036942646 -4.471951 -2.4921691 -0.035085678 -4.447 -2.5141494 -0.034932092 -3.6247811 -2.0788383 -0.021947265 -4.3821025 -2.5489271 -0.03438757 -4.3577676 -2.5706875 -0.034247946 -3.556726 -2.1277561 -0.021472551 -3.5478783 -2.1521323 -0.021542363 -3.5490861 -2.1827645 -0.02177972 -3.5551424 -2.2166662 -0.022100849 -3.605715 -2.2790341 -0.023161976 -3.523463 -2.2574298 -0.022031039 -3.4952881 -2.2697506 -0.021793682 -3.487978 -2.2955515 -0.021905379 -4.0594912 -2.7074442 -0.031734753 -4.0618572 -2.745178 -0.032055885 -21.858358 -14.966868 -0.33351332 -21.762827 -15.098428 -0.33345747 -4.0916262 -2.8764019 -0.033438139 -21.172728 -15.077257 -0.32654619 -21.017376 -15.161843 -0.3254711 -20.857748 -15.242143 -0.32432622 -20.223753 -14.970072 -0.31494361 -4.735888 -3.5511816 -0.046255421 -4.7418804 -3.6013381 -0.046744097 -4.5675144 -3.5133266 -0.044063359 -4.5821581 -3.5695503 -0.044705618 -4.5562444 -3.5945022 -0.04463581 -4.550509 -3.6354966 -0.044929013 -4.5133457 -3.6514015 -0.044663731 -3.8936913 -3.1898823 -0.033884931 -3.8548045 -3.1977549 -0.033535875 -4.1988168 -3.5267963 -0.040167909 -4.1542454 -3.5330615 -0.039749045 -3.4846148 -3.000684 -0.027811382 -3.4616148 -3.0180666 -0.027727608 -3.1019249 -2.7381999 -0.021374816 -2.9501097 -2.6365926 -0.018847661 -2.9220123 -2.6439118 -0.018624267 -2.9005728 -2.6570637 -0.018526532 -2.89448 -2.6843293 -0.018722001 -3.8774626 -3.6402597 -0.037864152 -3.1947396 -3.0364919 -0.025144605 -3.3828552 -3.2549939 -0.029151751 -2.9953492 -2.9178019 -0.021989152 -2.9261241 -2.8855808 -0.020983875 -2.857409 -2.8526218 -0.019978598 -2.8356316 -2.8658366 -0.019894825 -2.808208 -2.8731716 -0.019699354 -2.8183088 -2.9191196 -0.020257842 -3.9501383 -4.1417575 -0.043518834 -3.9369934 -4.1790166 -0.043770153 -4.0011983 -4.2997112 -0.045613162 -4.0234642 -4.3771815 -0.046618439 -3.2880442 -3.6215644 -0.031902298 -3.267096 -3.6431601 -0.031930223 -3.9203322 -4.4257998 -0.046157688 -3.9391937 -4.5024462 -0.04713504 -3.8716102 -4.4803839 -0.046283346 -3.8635211 -4.5268712 -0.04670221 -3.4070885 -4.0421071 -0.03741736 -3.3879805 -4.0698524 -0.037543021 -12.573801 -15.292579 -0.24005048 -12.411657 -15.28561 -0.23854257 -12.235689 -15.25929 -0.23671353 -12.107689 -15.290964 -0.2359456 -3.560261 -4.5538936 -0.044314679 -3.5463064 -4.5938568 -0.04463581 -3.5077469 -4.6020117 -0.044398453 -2.9965935 -3.981935 -0.033186819 -2.7424924 -3.6912572 -0.027811382 -2.9427717 -4.0119581 -0.033075124 -2.9310024 -4.0477552 -0.033382293 -2.9061105 -4.0656633 -0.033382293 -1.5251374 -2.1619177 -0.00054324296 -1.508986 -2.1671326 -0.00047343204 -1.5041571 -2.1887105 -0.00068286475 -1.4963129 -2.2061729 -0.00082248659 -1.4760723 -2.2053423 -0.00065494038 -1.454245 -2.2018437 -0.0004455077 -1.4461679 -2.2191017 -0.00058512948 -1.4211655 -2.2102733 -0.0002919237 -9.4393568 -14.876232 -0.20961294 -9.3229647 -14.894037 -0.2089567 -1.3902222 -2.2522225 -0.00055720512 -1.3706555 -2.2513165 -0.00040362115 -1.3578457 -2.2613986 -0.00043154552 -1.3617799 -2.2997983 -0.00092022185 -1.3612591 -2.331423 -0.0012972007 -1.5320542 -2.661201 -0.0064771697 -1.3409388 -2.3627343 -0.0015345578 -1.4514264 -2.5942912 -0.0051088762 -1.5093734 -2.7371044 -0.0072450894 -1.1749617 -2.1621258 0.0020397604 -7.6102057 -14.206475 -0.18864174 -1.1548753 -2.1887615 0.0018442898 -1.1248157 -2.1638701 0.0023469285 -7.2968197 -14.245364 -0.18709193 -1.4603028 -2.8952532 -0.008878665 -1.4438452 -2.9068453 -0.0089205513 -7.0918155 -14.496719 -0.1889489 -7.0022979 -14.53906 -0.18893494 -6.9189529 -14.5944 -0.18913041 -1.1103537 -2.3805208 -0.00027796152 -1.0961435 -2.3881977 -0.0002919237 -1.0843507 -2.4012573 -0.00038965896 -1.0691904 -2.4069517 -0.00037569678 -1.0499966 -2.4033885 -0.00022211281 -1.037204 -2.4143791 -0.0002919237 -1.3305939 -3.150177 -0.01134997 -1.3031859 -3.13889 -0.011056765 -1.2884357 -3.1579363 -0.011224311 -5.8680863 -14.634833 -0.18376894 -5.7679176 -14.644514 -0.183378 -5.6783128 -14.680562 -0.18339196 -1.2662839 -3.3353624 -0.013416373 -1.0746554 -2.8839784 -0.006574905 -5.4047251 -14.776021 -0.18329422 -5.264987 -14.672441 -0.18126971 -1.1827208 -3.3616612 -0.013360525 -5.0972576 -14.772809 -0.18181422 -5.0126042 -14.821803 -0.18207951 -4.9115 -14.821909 -0.18163273 -4.805335 -14.805164 -0.18094857 -1.1063043 -3.4821227 -0.014617121 -1.0142273 -3.26161 -0.011294122 -0.97701728 -3.211334 -0.010470353 -0.96414119 -3.2402685 -0.010805446 -0.96435744 -3.3152487 -0.011810723 -0.93442494 -3.2874415 -0.011322047 -0.89550459 -3.225673 -0.010344693 -0.85685486 -3.161623 -0.0093394164 -3.9698379 -15.006261 -0.1803482 -3.8564525 -14.948041 -0.17916141 -0.86045659 -3.4231653 -0.012885811 -0.83800876 -3.4225533 -0.012802037 -3.3867459 -14.203376 -0.16748904 -3.4100339 -14.700191 -0.17431654 -3.3774099 -14.976393 -0.17797463 -3.291445 -15.024183 -0.17836557 -0.65670508 -3.0896685 -0.0077058417 -1.7255254 -8.3670902 -0.082892179 -1.6776812 -8.3951702 -0.083143502 -1.6280376 -8.415123 -0.083283126 -0.54812491 -2.930892 -0.0052345353 -0.5288856 -2.9273126 -0.0051368005 -0.51091403 -2.9305027 -0.0051368005 -2.4953914 -14.841205 -0.1737441 -2.4098725 -14.890783 -0.17423277 -0.44351378 -2.8534529 -0.0039220904 -0.4227488 -2.8343637 -0.0036149225 -0.4059158 -2.8408637 -0.0036707714 -0.38983193 -2.8532076 -0.0038103932 -0.36752924 -2.8188605 -0.0032937925 -0.35355604 -2.8478539 -0.0036707714 -1.7933547 -15.193029 -0.17722067 -1.6830933 -15.05171 -0.17508446 -0.43658367 -4.1366158 -0.021681985 -1.4899479 -14.987651 -0.17391163 -1.4035274 -15.056246 -0.17474937 -1.2981091 -14.915154 -0.17265505 -1.2021334 -14.868023 -0.17188711 -1.0939724 -14.648772 -0.16871771 -1.0234867 -14.938517 -0.17268297 -0.93622625 -15.01537 -0.17367429 -0.83273846 -14.819171 -0.17085391 -0.2100966 -4.20434 -0.022380093 -0.10515164 -2.4034629 0.0028076803 -0.094817989 -2.520968 0.0011741052 -0.086965695 -2.7623584 -0.0021907801 -0.06998907 -2.7618403 -0.002176818 -0.052828647 -2.7512209 -0.002023234 -0.036263477 -2.7754889 -0.0023583265 -0.019317593 -2.7876577 -0.0025258726 -0.0022143589 -2.7897236 -0.0025537969 --0.078268327 -14.980331 -0.17278069 --0.17100038 -15.051558 -0.17378597 --0.26471421 -15.128205 -0.17487502 --0.36119232 -15.281239 -0.17703916 --0.45625773 -15.322711 -0.17765351 --0.092255756 -2.5590844 0.00064354239 --0.10997211 -2.6064231 -2.6642283e-05 --0.74568099 -15.466521 -0.17981763 --0.84235805 -15.494603 -0.18027839 --0.1556952 -2.5670285 0.00048995839 --0.18361303 -2.7486019 -0.0020651205 --0.20526771 -2.8132427 -0.0029866246 --0.2209508 -2.7919943 -0.0027073808 --0.23858711 -2.7965639 -0.002791154 --0.2525582 -2.7601957 -0.0023024776 --0.26978093 -2.7615798 -0.0023443643 --0.2870301 -2.762856 -0.0023862508 --0.30288449 -2.7511036 -0.002246629 --0.32022074 -2.7531664 -0.0023024776 --0.33747223 -2.7541273 -0.0023443643 --0.355768 -2.7629137 -0.0024979482 --2.1713486 -16.097631 -0.19041494 --2.2703605 -16.085985 -0.19044286 --2.3808281 -16.151878 -0.1915738 --2.5025158 -16.284222 -0.19365416 --2.6306539 -16.445297 -0.19615339 --2.7633214 -16.620201 -0.19886205 --2.864059 -16.596035 -0.19876432 --2.9609065 -16.550591 -0.19837338 --3.0685947 -16.565538 -0.19884808 --3.1959548 -16.680939 -0.20076092 --3.3137791 -16.739485 -0.20187788 --3.4260361 -16.76586 -0.20254807 --3.553792 -16.862911 -0.20423749 --3.4660263 -15.960391 -0.19165757 --3.5865812 -16.040308 -0.19310963 --3.6291223 -15.77536 -0.18963306 --3.7573767 -15.886105 -0.19154587 --3.8446293 -15.820971 -0.19094549 --4.2742047 -17.130089 -0.21012953 --4.4422231 -17.349579 -0.21367593 --4.5397067 -17.288147 -0.21318725 --4.6534953 -17.288933 -0.21360612 --4.7900553 -17.370907 -0.21521176 --4.9136677 -17.401812 -0.21609138 --5.0919695 -17.619169 -0.21969363 --5.2402368 -17.723753 -0.22167626 --5.4249907 -17.942989 -0.22534831 --5.6149907 -18.168257 -0.22913206 --5.4921217 -17.391642 -0.21826948 --5.8381343 -18.099888 -0.22915998 --5.9443917 -18.049479 -0.22895055 --6.005012 -17.863861 -0.22675849 --6.0953703 -17.770876 -0.22593471 --6.1230693 -17.500963 -0.22250003 --6.5569043 -18.378462 -0.23607126 --6.6736503 -18.349159 -0.23623881 --6.7982755 -18.340681 -0.23672749 --7.2317896 -19.148922 -0.24941911 --7.0318065 -18.279205 -0.23707654 --7.133986 -18.210577 -0.23669957 --7.4945054 -18.79059 -0.24608214 --7.6499043 -18.843384 -0.2475761 --7.785615 -18.84507 -0.24831609 --8.0223694 -19.085463 -0.25268626 --8.210474 -19.20229 -0.25521341 --8.3269463 -19.148798 -0.25517154 --8.409915 -19.019613 -0.25398475 --8.5285091 -18.972212 -0.25405455 --8.6829891 -19.003197 -0.25533909 --8.8865967 -19.137289 -0.25822926 --9.4032116 -19.928829 -0.27129784 --9.3476791 -19.500172 -0.26555938 --1.6637357 -3.4160125 -0.0166556 --1.670481 -3.3770583 -0.016208809 --1.6911708 -3.3667448 -0.016208809 --1.7086174 -3.350069 -0.016111074 --1.7410922 -3.3626099 -0.016474091 --1.7658778 -3.3598297 -0.01659975 --1.8005759 -3.3753996 -0.017018616 --4.5445132 -8.3960629 -0.096910208 --4.6031647 -8.3811665 -0.097119644 --11.975682 -21.492325 -0.30715272 --12.16736 -21.524635 -0.3088561 --12.367343 -21.568411 -0.31076893 --12.72264 -21.875896 -0.31696814 --12.905395 -21.8801 -0.3183085 --13.054289 -21.825388 -0.3187134 --14.650661 -24.156725 -0.35810071 --12.95033 -21.060501 -0.30882818 --15.627822 -25.06888 -0.37609798 --13.861602 -21.934608 -0.3259179 --0 -0 -0 --17.168503 -26.443382 -0.40384081 --14.009623 -21.290672 -0.31948134 --17.655912 -26.476952 -0.40797362 --17.812441 -26.359835 -0.40783399 --17.855782 -26.07761 -0.4049159 --18.661783 -26.899204 -0.42074901 --18.861557 -26.834091 -0.42160073 --18.939434 -26.596493 -0.41952035 --19.211077 -26.630615 -0.42211732 --19.449039 -26.614767 -0.4238905 --19.672657 -26.576904 -0.42531466 --19.721996 -26.304491 -0.42267582 --19.845535 -26.133612 -0.42181015 --0 -0 -0 --0 -0 -0 --20.349216 -25.796865 -0.42239657 --20.553925 -25.730112 -0.42344373 --20.767382 -25.672701 -0.42468634 --20.72303 -25.298809 -0.42024639 --20.199953 -24.353834 -0.40541855 --0 -0 -0 --0 -0 -0 --20.560644 -23.880144 -0.40361744 --0 -0 -0 --24.229856 -27.453175 -0.47489434 --22.685625 -25.387766 -0.43901154 --0 -0 -0 --23.996311 -26.200262 -0.45970351 --24.162739 -26.05913 -0.45982915 --0 -0 -0 --24.474506 -25.754129 -0.45970351 --23.594307 -24.524759 -0.43880212 --0 -0 -0 --0 -0 -0 --0 -0 -0 --30.393509 -30.078613 -0.56069195 --30.488119 -29.804184 -0.55894667 --30.697754 -29.642946 -0.55947727 --0 -0 -0 --31.739653 -29.905134 -0.57253188 --0 -0 -0 --0 -0 -0 --30.871597 -28.032637 -0.54587811 --0 -0 -0 --31.241716 -27.67688 -0.54640865 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --10.286439 -8.5638275 -0.15049706 --10.315622 -8.4814978 -0.15007819 --10.344183 -8.3991337 -0.14965934 --10.444669 -8.3749132 -0.15053895 --34.15469 -27.044994 -0.57193148 --18.819786 -14.715022 -0.29718372 --35.389427 -27.322887 -0.58790427 --0 -0 -0 --0 -0 -0 --0 -0 -0 --35.813892 -26.273451 -0.58382732 --35.763062 -25.900131 -0.58018315 --36.008347 -25.742428 -0.58167714 --36.119053 -25.488138 -0.5808813 --0 -0 -0 --0 -0 -0 --35.956543 -24.394581 -0.57032585 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --38.406502 -24.041409 -0.59629554 --0 -0 -0 --0 -0 -0 --0 -0 -0 --43.010307 -25.475986 -0.66162455 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --16.309479 -8.7368221 -0.22195549 --16.35482 -8.6323833 -0.22182985 --16.375544 -8.5152626 -0.2213272 --16.447063 -8.4246531 -0.22163437 --16.564507 -8.3569069 -0.22266757 --6.9471698 -3.4513202 -0.071917906 --6.9727068 -3.4108253 -0.071987718 --6.9953055 -3.368845 -0.072015643 --7.0257831 -3.3305712 -0.072169229 --6.9953446 -3.2637217 -0.071387343 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --36.240147 -15.57471 -0.51439339 --0 -0 -0 --51.91539 -21.560703 -0.7485531 --0 -0 -0 --0 -0 -0 --39.822113 -15.685162 -0.5612365 --22.210083 -8.5908871 -0.29612261 --22.403526 -8.5080528 -0.29823089 --22.382229 -8.3431845 -0.29714185 --22.531601 -8.2417612 -0.29860786 --0 -0 -0 --0 -0 -0 --0 -0 -0 --46.205154 -15.627079 -0.64468843 --0 -0 -0 --0 -0 -0 --0 -0 -0 --49.58609 -15.425236 -0.68872517 --28.307062 -8.6154394 -0.37676814 --28.361309 -8.4421587 -0.37679607 --28.441378 -8.2763605 -0.37721494 --0 -0 -0 --0 -0 -0 --0 -0 -0 --12.790716 -3.3836639 -0.14834689 --12.808332 -3.3043685 -0.148305 --34.385952 -8.6471071 -0.45869824 --34.335419 -8.410738 -0.45721823 --34.488503 -8.2242556 -0.45868427 --0 -0 -0 --0 -0 -0 --0 -0 -0 --40.241013 -8.5581264 -0.53807324 --40.270245 -8.3064051 -0.53775209 --0 -0 -0 --0 -0 -0 --0 -0 -0 --18.685234 -3.3781159 -0.22874112 --18.663256 -3.2560115 -0.22814074 --0 -0 -0 --52.4828 -8.4946632 -0.70598239 --27.100389 -4.215692 -0.34656796 --26.97345 -4.0265908 -0.34441778 --24.15387 -3.4542692 -0.30430445 --24.173618 -3.3058634 -0.30429047 --24.185516 -3.1564393 -0.30417877 --27.664465 -3.4380307 -0.35286489 --27.835976 -3.2860403 -0.35498714 --27.718483 -3.0998423 -0.35306036 --29.768478 -3.1443121 -0.38158512 --27.775331 -2.7615383 -0.35335359 --25.862312 -2.4111478 -0.32629487 --25.914473 -2.2557096 -0.32682544 --27.721792 -2.2417564 -0.35195735 --29.910749 -2.2341599 -0.38242283 --29.923895 -2.0505888 -0.38242283 --50.764397 -3.1661811 -0.67382753 --56.846699 -3.195549 -0.75863379 --62.719334 -3.1397827 -0.84048009 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --64.695351 13.28217 -1.7159134 --0 0 -0 --0 0 -0 --60.622372 13.613406 -1.6120911 --60.634125 14.0074 -1.6147171 --0 0 -0 --0 0 -0 --0 0 -0 --60.520927 15.555174 -1.6215343 --60.426277 15.92674 -1.6215874 --53.578827 14.47397 -1.4360918 --0 0 -0 --49.878994 14.1334 -1.3390601 --0 0 -0 --46.882305 13.907934 -1.2610209 --64.157372 19.462238 -1.7424393 --47.145401 14.617804 -1.2731698 --43.54982 13.796344 -1.1756076 --43.480515 14.068533 -1.1760584 --43.432289 14.347917 -1.177146 --41.363693 13.946574 -1.1217068 --57.884743 19.913843 -1.5877403 --41.109257 14.424984 -1.1194522 --0 0 -0 --61.903477 22.579121 -1.7118815 --61.061954 22.697639 -1.6920136 --0 0 -0 --51.601479 19.904934 -1.4309988 --58.628738 23.030083 -1.6348503 --33.809036 13.520113 -0.92960638 --56.775127 23.110107 -1.5899684 --35.007427 14.500186 -0.96886468 --32.930805 13.877306 -0.91164833 --45.879795 19.666986 -1.2879711 --54.65691 23.827709 -1.5455642 --54.361629 24.097 -1.5412669 --31.026426 13.981014 -0.8664217 --32.985851 15.108223 -0.92613149 --52.726192 24.542995 -1.5066507 --29.123678 13.773965 -0.81827718 --52.145329 25.055693 -1.4985337 --31.111189 15.183991 -0.88201892 --39.901302 19.778492 -1.1451292 --50.765438 25.553259 -1.4715039 --27.19828 13.899727 -0.77389938 --27.132002 14.07648 -0.77448297 --28.962662 15.252617 -0.83199108 --49.804783 26.621288 -1.461928 --49.33823 26.762417 -1.4528031 --24.909523 13.709434 -0.71787673 --24.591904 13.731882 -0.71079427 --24.434122 13.841126 -0.70856613 --24.320133 13.974355 -0.70769078 --24.187292 14.096134 -0.70625836 --24.101206 14.244788 -0.70628488 --24.044214 14.410904 -0.70723981 --24.036491 14.607489 -0.70975977 --23.997471 14.786164 -0.71135134 --22.563362 14.094189 -0.66933429 --22.321905 14.134496 -0.66448009 --22.192696 14.244195 -0.66315377 --22.130014 14.396453 -0.66394955 --22.010384 14.511608 -0.6629681 --21.959993 14.672492 -0.66421485 --21.891899 14.822093 -0.664931 --21.885443 15.014392 -0.66766322 --20.677435 14.372953 -0.63161451 --20.549625 14.471927 -0.63034123 --20.466137 14.60181 -0.63052696 --20.402081 14.745852 -0.63137579 --35.695366 26.135281 -1.1373307 --35.455647 26.29545 -1.1347311 --35.270454 26.495096 -1.1339619 --35.048351 26.66622 -1.1319989 --34.89278 26.887482 -1.1322907 --34.746845 27.116449 -1.1329539 --34.664509 27.396086 -1.1358187 --34.502003 27.613264 -1.1360309 --34.423557 27.898718 -1.139161 --34.311226 28.158245 -1.1412034 --34.42688 28.608477 -1.1511772 --34.321831 28.879034 -1.1536441 --34.631737 29.504648 -1.1706471 --37.296097 32.171715 -1.2703846 --36.788548 32.129684 -1.2594824 --36.386272 32.17403 -1.2522408 --21.907738 19.611818 -0.74363333 --21.747734 19.710293 -0.74222749 --21.661739 19.875805 -0.74350071 --34.492275 32.0415 -1.2126377 --34.078022 32.04845 -1.2047329 --33.639652 32.027405 -1.1958998 --33.379887 32.172855 -1.1935921 --33.065228 32.263268 -1.1892684 --14.596773 14.417728 -0.50781816 --14.48612 14.485107 -0.50699586 --14.419449 14.596478 -0.50784469 --14.329615 14.68468 -0.50784469 --30.953527 32.11433 -1.1469595 --30.668356 32.211704 -1.1435908 --28.751217 30.571434 -1.0770108 --29.755058 32.030457 -1.1234841 --29.406574 32.047436 -1.1175424 --29.099287 32.105793 -1.1131921 --28.846403 32.22192 -1.1109904 --28.319054 32.026112 -1.097807 --28.024693 32.087837 -1.0938812 --27.843601 32.278114 -1.0945444 --27.539354 32.324318 -1.0902207 --29.042788 34.515881 -1.1603817 --28.823429 34.684975 -1.1600899 --28.598015 34.846497 -1.1595858 --15.899518 19.616882 -0.63344479 --15.752617 19.681292 -0.63233072 --24.18696 30.603188 -0.99846762 --25.042994 32.089184 -1.0435085 --24.643057 31.979349 -1.0347019 --24.404608 32.075062 -1.0328717 --24.167112 32.17065 -1.0310944 --23.907928 32.235626 -1.0283623 --23.678978 32.339775 -1.0269829 --23.473658 32.475548 -1.0266912 --23.237951 32.568512 -1.0250466 --22.978968 32.627121 -1.0223409 --22.482788 32.342316 -1.0086005 --22.135752 32.263687 -1.0016507 --21.814631 32.217621 -0.99584156 --21.525457 32.214554 -0.99149132 --21.288321 32.28677 -0.98960793 --20.168022 30.999825 -0.94475269 --20.538454 31.997068 -0.97231305 --20.327297 32.099686 -0.9715969 --20.028801 32.061871 -0.96653044 --19.811769 32.151821 -0.96552247 --19.593349 32.238609 -0.96446139 --8.732193 14.567242 -0.41407564 --8.5719452 14.500927 -0.41038856 --18.896961 32.422787 -0.95920926 --18.597061 32.363041 -0.95385104 --18.376949 32.43914 -0.95271045 --18.174149 32.545181 -0.95252478 --18.004478 32.711254 -0.95419586 --12.600727 23.229078 -0.66463923 --12.404241 23.205452 -0.66161531 --12.222495 23.206829 -0.65938711 --12.059614 23.242346 -0.65821999 --11.898579 23.280298 -0.65715891 --9.9272137 19.72047 -0.54925162 --9.7931499 19.755037 -0.54848236 --9.7024422 19.877642 -0.55033916 --14.90826 31.025913 -0.87679332 --16.040792 33.9146 -0.9589175 --15.860657 34.073105 -0.96069473 --15.637553 34.139793 -0.95981938 --15.426138 34.231453 -0.95971328 --15.213782 34.320892 -0.95958066 --14.995317 34.396187 -0.95907664 --14.778864 34.475605 -0.95873183 --14.562388 34.554581 -0.95841348 --14.340528 34.620193 -0.95775038 --14.133486 34.721424 -0.95814824 --13.920916 34.809349 -0.95820129 --13.765907 35.043911 -0.96247196 --13.215697 34.259399 -0.93777639 --13.028248 34.400612 -0.93950051 --13.216396 35.554661 -0.96992576 --13.018539 35.691437 -0.97151726 --12.785152 35.731113 -0.97040319 --12.559712 35.791908 -0.96992576 --10.871369 31.599407 -0.85013479 --10.65428 31.597317 -0.84822494 --10.453931 31.64311 -0.8476944 --11.63201 35.948597 -0.9659999 --11.429327 36.076469 -0.96759146 --11.198574 36.116322 -0.96676916 --10.771323 35.507076 -0.94798881 --0 0 -0 --8.723959 30.081451 -0.79451001 --8.4907122 29.963215 -0.78978842 --8.2915058 29.959833 -0.78827643 --8.1093445 30.016901 -0.7884621 --7.9331636 30.097025 -0.78931093 --3.7042887 14.409198 -0.35818559 --3.63305 14.500504 -0.36006895 --3.5387959 14.501157 -0.35948536 --3.4686902 14.602351 -0.36166048 --7.0615559 30.565815 -0.79583633 --6.8638005 30.563702 -0.7946161 --6.6750708 30.600359 -0.79448348 --6.4820094 30.616291 -0.79382032 --4.0444984 19.69693 -0.49696907 --3.9153743 19.680197 -0.49585497 --3.7930331 19.695999 -0.49564278 --3.69754 19.855505 -0.49932986 --5.4345427 30.215317 -0.77803743 --5.2428913 30.212635 -0.7770825 --4.6616459 27.876936 -0.71339381 --4.4906669 27.906002 -0.71342033 --4.6680183 30.188437 -0.77397895 --4.4794717 30.194756 -0.77339542 --4.28793 30.178125 -0.77222824 --4.0982409 30.171179 -0.77135289 --3.9072573 30.151146 -0.77015924 --3.7177753 30.138836 -0.76920432 --3.531498 30.15016 -0.76891249 --3.3506198 30.209015 -0.76992053 --3.1701927 30.276728 -0.77119374 --2.9896483 30.349331 -0.77262616 --2.8083324 30.420856 -0.77405852 --2.6319959 30.558027 -0.77726817 --2.4485867 30.625418 -0.77864754 --2.2664344 30.718624 -0.78074306 --2.0817475 30.788803 -0.78225505 --1.6808945 27.350714 -0.69052851 --1.714244 31.001675 -0.78729498 --1.5328141 31.19133 -0.79206961 --1.3478341 31.349957 -0.79604852 --1.1587218 31.446545 -0.79840934 --0.96801507 31.527002 -0.80037224 --0.77849704 31.693243 -0.80464292 --0.58554173 31.78038 -0.80684453 --0.39237902 31.934311 -0.81084996 --0.19683588 32.003094 -0.8126272 --0.00046133818 32.166641 -0.81695092 -0.19717415 32.209023 -0.81809151 -0.39636198 32.334152 -0.82146031 -0.59639269 32.420063 -0.82382113 -0.79940784 32.582684 -0.82825094 -1.0027225 32.688076 -0.83119529 -1.2062192 32.761227 -0.8333174 -1.4106941 32.834103 -0.83546597 -1.6185132 32.954628 -0.83891433 -1.6926854 30.629429 -0.77740079 -1.7255114 28.095118 -0.71031684 -2.2733841 33.63736 -0.85801297 -2.4951839 33.832134 -0.86358345 -2.7169094 33.993557 -0.86830503 -2.9516044 34.280014 -0.87639546 -3.1750286 34.403603 -0.88018864 -3.3948858 34.473011 -0.88257599 -2.0792034 19.86743 -0.49346766 -2.2020602 19.863239 -0.49370638 -2.3225017 19.83744 -0.49338809 -4.2190671 34.210651 -0.8780666 -4.411171 34.04731 -0.87440598 -4.5992765 33.867058 -0.87032104 -4.791244 33.727352 -0.8673501 -4.9703746 33.510433 -0.8623367 -5.1797161 33.504002 -0.86299986 -4.7573647 29.570173 -0.75814301 -4.9362416 29.525637 -0.75774515 -6.1814823 35.626949 -0.92289531 -6.4247437 35.726089 -0.92660898 -6.6663427 35.806877 -0.92987162 -6.896131 35.818306 -0.93130404 -7.1621985 36.008659 -0.93761718 -2.994375 14.589606 -0.35861 -3.0600269 14.458492 -0.35555953 -3.1578465 14.481441 -0.35670015 -3.2477386 14.466669 -0.35683277 -8.7363911 37.819347 -0.99337465 -7.4118176 31.2117 -0.81464314 -9.2569427 37.94334 -0.99976736 -9.5082893 37.960491 -1.0018098 -3.4637578 13.480166 -0.33272073 -3.5288243 13.391961 -0.33089045 -3.6484737 13.509024 -0.33471018 -0 0 -0 -0 0 -0 -9.9626637 34.356022 -0.91260326 -12.722 42.884987 -1.1503814 -15.525048 51.179214 -1.3825625 -15.84974 51.118317 -1.383544 -4.5430851 14.343377 -0.36264196 -4.6387029 14.339008 -0.36330509 -4.7328696 14.32926 -0.3638356 -4.831244 14.331209 -0.36471096 -4.9363241 14.351395 -0.36611685 -5.0196557 14.30763 -0.36574548 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -7.9572086 19.899462 -0.53208935 -8.0539074 19.788229 -0.53031212 -8.1977463 19.792927 -0.53187716 -8.2941923 19.683298 -0.5301795 -0 0 -0 -0 0 -0 -24.640669 55.588055 -1.5768647 -24.978413 55.429436 -1.576679 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -25.159445 51.548622 -1.4854831 -25.473936 51.390591 -1.4854034 -17.776485 35.316479 -1.0125529 -17.45647 34.15728 -0.98127884 -17.127985 33.013142 -0.95029658 -17.229141 32.715492 -0.94454044 -17.32588 32.415207 -0.93870479 -17.147419 31.613243 -0.91772276 -17.333359 31.493422 -0.91729838 -17.487282 31.31665 -0.91517627 -17.617514 31.10004 -0.91186059 -17.58288 30.599594 -0.89987087 -17.742117 30.442766 -0.89838541 -17.862448 30.221457 -0.89493704 -18.029045 30.08042 -0.89398211 -18.188354 29.928225 -0.89270884 -18.364832 29.804996 -0.89236403 -18.525122 29.656143 -0.89124995 -18.713692 29.552896 -0.89159477 -18.795853 29.283566 -0.88674057 -18.902128 29.055405 -0.88318604 -19.074551 28.930531 -0.8829208 -19.258371 28.822922 -0.88323915 -19.424774 28.689312 -0.88276166 -13.779795 20.086023 -0.60975718 -13.893081 19.987141 -0.60930622 -14.01776 19.904787 -0.60941231 -14.136146 19.813519 -0.60925317 -20.592575 28.490711 -0.89621025 -20.799486 28.408182 -0.8976692 -21.029976 28.3563 -0.90018916 -21.263613 28.306652 -0.90284175 -21.536171 28.306118 -0.90719199 -21.821114 28.318344 -0.91204625 -22.334574 28.619715 -0.92671508 -22.607697 28.606047 -0.93090618 -22.910851 28.626781 -0.93634397 -23.204403 28.631666 -0.94133085 -23.545803 28.691202 -0.94828063 -23.965471 28.839876 -0.95841348 -24.436758 29.042601 -0.97056234 -24.589216 28.862436 -0.96952784 -24.809597 28.76173 -0.97130507 -24.972458 28.593903 -0.97077459 -31.291981 35.388794 -1.2169083 -31.417185 35.094086 -1.2132742 -31.629913 34.898434 -1.2131947 -31.830608 34.689705 -1.2126907 -32.097973 34.553066 -1.2148393 -13.601102 14.463413 -0.49023148 -13.696485 14.386926 -0.49049675 -32.670269 33.895935 -1.2126111 -19.443209 19.927166 -0.70217335 -19.556684 19.798956 -0.70185506 -19.676386 19.677172 -0.70180202 -19.786085 19.545532 -0.70140415 -33.690353 32.873642 -1.2124519 -33.884949 32.660057 -1.2122133 -34.082539 32.449463 -1.2121336 -15.240884 14.334245 -0.51858765 -15.276548 14.192154 -0.51670432 -15.341982 14.078552 -0.51593506 -15.427337 13.983479 -0.51590854 -15.573177 13.942563 -0.51805717 -15.700372 13.883826 -0.51954257 -15.910253 13.896384 -0.52394593 -18.11924 15.63061 -0.59837759 -18.102947 15.423843 -0.59447825 -17.830088 15.003553 -0.5817458 -17.919506 14.891951 -0.58166623 -18.304962 15.023331 -0.59177262 -18.114107 14.681629 -0.5821172 -18.207752 14.57333 -0.58224982 -18.344671 14.499144 -0.58386791 -20.199385 15.764521 -0.64331239 -18.400066 14.179582 -0.57980943 -25.694588 19.550257 -0.82013404 -18.46958 13.875267 -0.57638758 -18.523857 13.739051 -0.57537961 -18.600552 13.619817 -0.57514089 -21.679834 15.670882 -0.67323363 -21.84882 15.589816 -0.67562097 -22.111614 15.573456 -0.68105876 -20.98126 14.58564 -0.64145559 -44.937477 30.830542 -1.4094863 -21.305183 14.426268 -0.64615071 -21.478912 14.352472 -0.64888287 -21.495634 14.173638 -0.64662814 -21.586388 14.044203 -0.64676076 -21.784044 13.983302 -0.6502887 -21.855921 13.840817 -0.64986432 -0 0 -0 -31.901608 19.6576 -0.95772386 -20.038797 12.179303 -0.58564514 -20.042841 12.013978 -0.58346999 -20.028402 11.838891 -0.58076435 -19.997889 11.655878 -0.57760781 -19.985823 11.485143 -0.57506132 -0 0 -0 -0 0 -0 -19.989786 11.003018 -0.56888074 -19.985746 10.841551 -0.56673217 -20.028971 10.706466 -0.56604248 -20.048294 10.559147 -0.56466317 -20.055029 10.406011 -0.56293899 -20.116722 10.28185 -0.56288594 -20.207111 10.172155 -0.56370819 -0 0 -0 -20.749058 10.12773 -0.5760693 -21.016247 10.098932 -0.5821172 -21.400431 10.122366 -0.59158695 -21.729492 10.115305 -0.59941208 -22.358276 10.241533 -0.61596423 -22.274874 10.038444 -0.61172009 -22.518827 9.9825945 -0.61702526 -22.75285 9.9197321 -0.62203866 -24.894367 10.671969 -0.68211979 -24.956617 10.517855 -0.68204021 -0 0 -0 -26.320801 10.714285 -0.71747881 -26.555904 10.620504 -0.72233307 -26.956463 10.589293 -0.73190892 -26.571383 10.250294 -0.71912342 -0 0 -0 -59.368942 22.067822 -1.6440814 -33.866692 12.353024 -0.91997749 -33.908909 12.133203 -0.91904908 -33.921406 11.9034 -0.9173249 -33.888882 11.658944 -0.91438049 -33.887787 11.426514 -0.91236454 -33.895565 11.197987 -0.91064036 -33.861866 10.95687 -0.9078021 -33.883671 10.734703 -0.90655535 -33.922165 10.518307 -0.90581268 -33.974586 10.306484 -0.90549433 -34.043896 10.099815 -0.90568 -34.738888 10.074481 -0.92318714 -35.561787 10.076961 -0.94419563 -38.991146 10.790594 -1.0369302 -39.071098 10.555057 -1.037328 -39.151558 10.319452 -1.037779 -39.215111 10.079278 -1.0378056 -0 0 -0 -54.281136 13.243236 -1.4460125 -55.39817 13.156122 -1.4742891 -56.475227 13.046341 -1.5014516 -58.217209 13.072969 -1.5466782 -0 0 -0 -54.582611 11.555172 -1.4438639 -54.626045 11.214615 -1.4431477 -0 0 -0 -0 0 -0 -54.787834 10.200642 -1.4421928 -0 0 -0 -58.494049 10.149547 -1.538747 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -17.308853 0.74468386 -0.42312098 -17.154259 0.63261795 -0.41890335 -17.169807 0.52771717 -0.41922167 -17.318628 0.42593384 -0.42309445 -17.31192 0.31949532 -0.42285573 -17.272572 0.21276329 -0.42176816 -17.266556 0.106734 -0.42158249 -17.274881 0.00078622595 -0.42179468 -17.285557 -0.10527819 -0.42208648 -17.275591 -0.21122779 -0.42184773 -0 -0 -0 -0 -0 -0 -17.148874 -0.52549684 -0.41866463 -0 -0 -0 -17.150122 -0.73628682 -0.41890335 -17.055422 -0.83708763 -0.41651604 -17.024014 -0.94028687 -0.41582635 -0 -0 -0 -17.306414 -1.1690897 -0.42367804 -17.327827 -1.2773911 -0.42444727 -0 -0 -0 -0 -0 -0 -17.403906 -1.6055888 -0.42717946 -0 -0 -0 -27.473154 -2.8756194 -0.69639075 -27.435122 -3.0419333 -0.69586021 -27.417925 -3.2104473 -0.69591326 -27.400686 -3.3789873 -0.69599283 -27.394308 -3.5489783 -0.69639075 -25.40082 -3.4492354 -0.64360422 -27.39323 -3.8912096 -0.69758439 -27.369827 -4.0593648 -0.69761091 -27.363174 -4.2301292 -0.69811493 -0 -0 -0 -0 -0 -0 -19.37171 -3.3605654 -0.48511198 -19.297598 -3.4698088 -0.48367959 -15.277112 -2.8435369 -0.37574574 -15.136675 -2.913594 -0.37243 -15.127337 -3.0081713 -0.37266874 -14.943105 -3.066956 -0.36818585 -14.919116 -3.1575522 -0.36805323 -13.37291 -2.9160271 -0.32659325 -13.286491 -2.9826937 -0.32473645 -13.222162 -3.0535858 -0.32348973 -13.05048 -3.0983913 -0.31932515 -13.072011 -3.1883616 -0.32043925 -11.099257 -2.7792773 -0.26701611 -11.002604 -2.8269222 -0.26484099 -13.177369 -3.4722595 -0.32500172 -13.030359 -3.5191548 -0.32155335 -13.021046 -3.6025076 -0.32189816 -13.029473 -3.691057 -0.32274699 -7.9392433 -2.3013146 -0.18274334 -7.9335985 -2.3525445 -0.18298207 -7.9209275 -2.4017603 -0.18303512 -7.8735781 -2.4402506 -0.18213324 -7.9070582 -2.5039141 -0.18348606 -7.9324427 -2.5656176 -0.18462668 -7.922246 -2.6161234 -0.18478583 -25.496387 -8.5961332 -0.67737168 -25.411024 -8.7413568 -0.6764698 -37.167397 -13.041692 -1.0086005 -37.185501 -13.304865 -1.0113857 -10.908256 -3.9777362 -0.27149898 -7.2246528 -2.6844172 -0.16791536 -7.2117848 -2.7301126 -0.16802147 -7.1855707 -2.7707138 -0.16775621 -7.095861 -2.7862422 -0.16568719 -7.1436033 -2.8557136 -0.16754401 -7.1389089 -2.9047687 -0.16791536 -32.548946 -13.481788 -0.89825279 -0 -0 -0 -9.1000395 -3.8998389 -0.22611317 -19.574535 -8.5327148 -0.53002036 -9.0103722 -3.9929864 -0.22491951 -5.6382174 -2.5396287 -0.12748991 -5.5943546 -2.5612712 -0.1266676 -27.773024 -12.927183 -0.77628672 -28.342915 -13.404671 -0.79535884 -5.3174024 -2.5538387 -0.11993003 -27.648056 -13.493645 -0.77976161 -27.543243 -13.652381 -0.77912498 -5.3203888 -2.6769021 -0.12144201 -5.2940722 -2.7044926 -0.12115022 -26.182571 -13.583856 -0.74610025 -5.3648534 -2.8242235 -0.12428027 -24.772612 -13.240613 -0.7087518 -4.4651585 -2.4208217 -0.098178796 -4.4327054 -2.4385331 -0.097648278 -4.4089317 -2.4608119 -0.097383015 -4.3954892 -2.4888036 -0.09743607 -3.725754 -2.1396832 -0.077409022 -3.7237825 -2.1690478 -0.077753857 -3.7043796 -2.1882949 -0.077568173 -3.6968846 -2.214581 -0.077753857 -4.5468693 -2.762126 -0.10457154 -4.54175 -2.7973149 -0.1049429 -13.67407 -8.5409584 -0.39121035 -3.5122073 -2.2228115 -0.073695391 -3.5069146 -2.2497201 -0.073960654 -4.1256728 -2.682785 -0.093987703 -3.462352 -2.2815802 -0.073430136 -4.0184665 -2.6837814 -0.091626897 -3.4696856 -2.3479974 -0.074570753 -3.4527404 -2.3675463 -0.074491173 -3.4578476 -2.4023817 -0.075127795 -3.4324172 -2.4160702 -0.074782953 -4.9180593 -3.5077624 -0.1236967 -4.8980637 -3.5390444 -0.12374976 -4.8819022 -3.5731657 -0.12393544 -4.8004704 -3.5589857 -0.12197252 -3.3167274 -2.490201 -0.07345666 -4.7572303 -3.6182323 -0.12199905 -3.2867107 -2.5313249 -0.073483184 -4.8306789 -3.7685931 -0.12597793 -4.5847325 -3.6221235 -0.11844458 -4.7653379 -3.8125975 -0.12534131 -4.6354604 -3.7555327 -0.12170726 -4.4971938 -3.6894109 -0.11775491 -4.2807288 -3.5559289 -0.11107038 -3.8243754 -3.2165508 -0.096003674 -3.7984796 -3.2347698 -0.095791467 -3.1412265 -2.7082241 -0.07345666 -3.107233 -2.7123227 -0.072846569 -3.0688152 -2.7121334 -0.072077312 -3.4207828 -3.0609691 -0.085207634 -3.3989739 -3.0792155 -0.08510153 -3.3034158 -3.0297227 -0.082342833 -3.8618803 -3.5860727 -0.10324524 -3.863106 -3.6316166 -0.10409407 -3.243469 -3.0865681 -0.082210205 -3.4641404 -3.3374279 -0.091043331 -3.4629147 -3.3774705 -0.091759525 -2.9144402 -2.877383 -0.072077312 -2.8847136 -2.8831947 -0.071626373 -2.8318439 -2.8652809 -0.07030008 -2.8079264 -2.8761632 -0.070061348 -2.7916131 -2.8947778 -0.070114397 -4.0331173 -4.2346134 -0.1185772 -4.0221243 -4.2753015 -0.11916077 -3.9012477 -4.1980953 -0.11547367 -3.3124416 -3.6083891 -0.093377605 -4.0810375 -4.5011964 -0.12462511 -4.0553422 -4.5283871 -0.12470469 -4.0678725 -4.5988669 -0.12632276 -3.3945124 -3.8851101 -0.10030086 -3.9824021 -4.6151338 -0.12515563 -3.950768 -4.6356778 -0.12502299 -12.3539 -14.680944 -0.47253871 -3.8054178 -4.5777097 -0.12136243 -3.6142805 -4.4023757 -0.11454527 -3.5714648 -4.4050541 -0.11388212 -3.5556118 -4.4409337 -0.11435959 -3.5413122 -4.4791374 -0.11491663 -3.4897771 -4.470047 -0.11388212 -11.17581 -14.501831 -0.44922248 -2.716192 -3.5681934 -0.082395889 -2.85395 -3.7973981 -0.089451775 -2.9348035 -3.9553523 -0.094093807 -2.9730752 -4.0587826 -0.096905552 -2.9574842 -4.0899115 -0.097329967 -10.32559 -14.470433 -0.43511069 -2.9335492 -4.1634927 -0.098550156 -2.9182172 -4.1961889 -0.099027619 -2.911077 -4.2412181 -0.09990298 -1.4810808 -2.1854467 -0.033455614 -1.4620897 -2.1861815 -0.033190355 -1.4442459 -2.1884348 -0.032978147 -1.4302456 -2.1964176 -0.032951623 -1.414042 -2.2009456 -0.032818995 -1.396767 -2.2036686 -0.032633312 -1.3932817 -2.2283063 -0.033137303 -1.3853511 -2.2461753 -0.03342909 -1.37933 -2.2674472 -0.033826977 -1.3700165 -2.2835848 -0.034065712 -1.3590306 -2.2971117 -0.034224864 -1.3569905 -2.3261356 -0.034861486 -1.3765583 -2.3933573 -0.03666525 -1.3736719 -2.4226336 -0.037301868 -1.4923176 -2.6701634 -0.044569965 -1.4378281 -2.6100838 -0.042474419 -1.3750778 -2.5327432 -0.039874882 -1.2393523 -2.3163195 -0.033110779 -1.223719 -2.3212268 -0.033031199 -1.4308851 -2.755501 -0.045790154 -1.1223571 -2.1936457 -0.028787058 -7.155107 -14.212941 -0.38563991 -7.0593281 -14.239559 -0.38513589 -1.0861737 -2.2229166 -0.029052317 -1.0958914 -2.2781956 -0.030484715 -1.0912944 -2.3047581 -0.031068284 -6.5347948 -14.036938 -0.37426028 -6.4493752 -14.078588 -0.37431332 -6.3296041 -14.044072 -0.37216476 -6.2295394 -14.051574 -0.37126285 -1.0400561 -2.382967 -0.032394581 -1.0230519 -2.383791 -0.032235425 -5.6864634 -13.491384 -0.35189897 -1.313516 -3.1682644 -0.054411069 -1.2786002 -3.1383028 -0.053323507 -1.2730529 -3.1804318 -0.054304969 -5.5681829 -14.173046 -0.36746967 -5.338294 -13.836674 -0.35693887 -5.4090614 -14.280508 -0.36861026 -1.1169524 -3.0017617 -0.048389692 -1.0865247 -2.9756889 -0.047461286 -1.0928286 -3.0510087 -0.049397677 -1.1796665 -3.3585594 -0.057859436 -1.1401764 -3.3109081 -0.056320935 -4.8146191 -14.276683 -0.363199 -4.7128186 -14.263242 -0.36200532 -4.3519564 -13.447308 -0.33845034 -4.4209065 -13.952152 -0.35176632 -1.0457752 -3.3691499 -0.05701061 -0.98039782 -3.2281852 -0.05292562 -0.96142447 -3.2370152 -0.0530052 -0.96938449 -3.3388634 -0.055657789 -0.92571646 -3.2629964 -0.053403087 -0.89608014 -3.2339313 -0.052448153 -3.6837578 -13.633069 -0.33813202 -3.5954518 -13.638017 -0.33765456 -3.493788 -13.590112 -0.33574468 -0.85287666 -3.4004023 -0.056427039 -3.3497345 -13.726166 -0.33831769 -3.2545943 -13.700748 -0.33707097 -3.1470685 -13.619164 -0.33431229 -3.1729453 -14.125899 -0.34757525 -0.68298632 -3.1260972 -0.048310116 -1.8046637 -8.5198641 -0.19449431 -1.7276282 -8.4103317 -0.19123162 -1.6687759 -8.3844976 -0.19025017 -1.6061484 -8.3366632 -0.18868513 -0.55219418 -2.9598343 -0.043296721 -0.52676886 -2.9228282 -0.04220916 -2.4409678 -14.062662 -0.34213743 -2.3569427 -14.091178 -0.34250879 -2.2761524 -14.140905 -0.34346372 -0.44327357 -2.8597941 -0.040193193 -2.0967307 -14.129208 -0.34242922 -0.42923418 -3.0134752 -0.044172075 -1.9678437 -14.482738 -0.35123581 -0.52360708 -4.0326805 -0.071308061 -1.7941298 -14.53953 -0.35213768 -1.7062782 -14.562179 -0.352456 -1.6084118 -14.49587 -0.3504135 -1.5221422 -14.531316 -0.35110319 -1.4047383 -14.253869 -0.34346372 -1.3304789 -14.40556 -0.34728345 -1.2507232 -14.514045 -0.34996256 -1.1512909 -14.391905 -0.3465142 -1.046715 -14.178374 -0.34065199 -0.9684602 -14.314188 -0.34410036 -0.17702475 -2.8634863 -0.039530046 -0.15956169 -2.8665149 -0.039583094 -0.14010701 -2.829499 -0.038575113 -0.18392022 -4.2544904 -0.076401033 -0.10243235 -2.7510877 -0.036453042 -0.085090429 -2.7366767 -0.036055151 -0.068223365 -2.7341492 -0.035975575 -0.051831603 -2.7555053 -0.036532618 -0.17558622 -14.237868 -0.34123555 -0.088220999 -14.238677 -0.34123555 -0.00085145648 -14.284934 -0.34245574 --0.085475832 -14.069751 -0.33675268 --0.032877129 -2.7687931 -0.036877453 --0.049681287 -2.7585444 -0.036612198 --0.067367651 -2.7891674 -0.0374345 --0.45826423 -14.959677 -0.36054641 --0.54853696 -14.915626 -0.35945883 --0.63699812 -14.84107 -0.35757551 --0.73153335 -14.907771 -0.35945883 --0.82497907 -14.938934 -0.36041376 --0.16845047 -2.7598536 -0.036771353 --0.18639308 -2.7737286 -0.03716924 --0.20142272 -2.7456155 -0.036453042 --0.21778765 -2.738349 -0.036293887 --0.23355629 -2.7250097 -0.035975575 --0.24953705 -2.7155619 -0.035763368 --0.2656067 -2.7080107 -0.035604212 --0.28200951 -2.7043417 -0.035551161 --0.30091205 -2.7234249 -0.036108203 --0.31622142 -2.7096131 -0.035789892 --1.8972207 -15.388997 -0.37484387 --1.9926379 -15.384997 -0.37505606 --2.0898266 -15.393283 -0.37561309 --2.1877544 -15.404913 -0.37627625 --2.2974927 -15.494037 -0.37903494 --2.4061153 -15.567572 -0.38139576 --2.5117555 -15.61568 -0.38309342 --2.5452008 -15.227282 -0.37306663 --2.636193 -15.197589 -0.37269527 --2.8046033 -15.599268 -0.38396877 --2.9048409 -15.606335 -0.3846319 --3.0215263 -15.697176 -0.38757628 --3.1419709 -15.799915 -0.3908655 --3.2432816 -15.801882 -0.39144906 --3.3741367 -15.942071 -0.39579931 --3.3887999 -15.540162 -0.38545421 --3.4974506 -15.578573 -0.38707229 --3.5740707 -15.475004 -0.38484412 --3.6393886 -15.328291 -0.38144881 --3.7295814 -15.290133 -0.38102439 --3.9149089 -15.632532 -0.39102465 --3.9634709 -15.424263 -0.38598472 --4.0483556 -15.362922 -0.38497674 --4.1255975 -15.275064 -0.38325256 --4.2147131 -15.233084 -0.38280162 --4.3214569 -15.254063 -0.38410139 --4.4358559 -15.299267 -0.38609084 --4.5137243 -15.218092 -0.38460538 --4.6165929 -15.221678 -0.38548073 --4.7353659 -15.275177 -0.38776198 --4.9262218 -15.552689 -0.3963033 --5.0769558 -15.693366 -0.40107796 --5.2101569 -15.773923 -0.40420803 --5.8140693 -17.245882 -0.44633114 --5.9366899 -17.259037 -0.44771048 --6.0461187 -17.23266 -0.44800228 --6.1540999 -17.201826 -0.44818795 --6.262958 -17.173134 -0.44845322 --6.3811007 -17.16905 -0.44943467 --6.2657485 -16.547165 -0.43290904 --6.849999 -17.760033 -0.46850678 --6.9964905 -17.813501 -0.47123894 --7.1505761 -17.882545 -0.47444859 --7.3491139 -18.056839 -0.48070869 --7.4567099 -18.004019 -0.4804965 --7.5697575 -17.964375 -0.48068216 --7.6892953 -17.93964 -0.4813188 --7.8335834 -17.970926 -0.48360002 --7.9692259 -17.980097 -0.48527116 --8.070775 -17.911722 -0.48471409 --7.9719591 -17.406534 -0.47142464 --8.7253428 -18.746601 -0.51208884 --8.9120131 -18.844524 -0.51654518 --9.0499868 -18.83634 -0.51792455 --1.6774455 -3.4393554 -0.064941853 --1.6772062 -3.3860073 -0.063668609 --1.6871635 -3.3542228 -0.063031986 --1.7104424 -3.3491483 -0.063191138 --1.7387869 -3.3536744 -0.063642085 --1.7751703 -3.3730145 -0.064543962 --1.8099707 -3.3885067 -0.065339737 --4.5490665 -8.3885202 -0.2166169 --4.6038265 -8.36658 -0.21680258 --4.6604376 -8.3477745 -0.21709438 --10.580641 -18.678854 -0.53304428 --10.846965 -18.877934 -0.54113466 --11.402044 -19.564995 -0.56429178 --11.54782 -19.538553 -0.56564462 --12.132092 -20.242434 -0.58962399 --12.121078 -19.945507 -0.58272725 --12.127861 -19.683529 -0.5768916 --12.254234 -19.618069 -0.57718337 --12.592587 -19.887083 -0.58800596 --12.191115 -18.994274 -0.56230235 --12.920728 -19.861771 -0.59214395 --12.127785 -18.395082 -0.54805791 --12.242093 -18.322815 -0.54813749 --13.271238 -19.60154 -0.5915339 --0 -0 -0 --16.417976 -23.619186 -0.72668332 --17.421421 -24.737391 -0.76625991 --17.426561 -24.424969 -0.75957543 --0 -0 -0 --16.511951 -22.552624 -0.70509124 --18.210846 -24.555315 -0.77461559 --18.296926 -24.357594 -0.77177733 --18.553177 -24.385679 -0.77647239 --18.719542 -24.29355 -0.77721512 --18.828274 -24.127008 -0.77549094 --18.988977 -24.027496 -0.776048 --19.160412 -23.940968 -0.7770825 --19.437243 -23.983707 -0.78257334 --20.175734 -24.584942 -0.80732203 --19.655342 -23.653423 -0.77946985 --19.018106 -22.603043 -0.74724084 --20.508799 -24.073204 -0.80257386 --20.041687 -23.234642 -0.77761304 --20.030657 -22.935802 -0.77143246 --19.998177 -22.617014 -0.7645092 --20.207254 -22.572828 -0.76732099 --20.319197 -22.419527 -0.76628643 --0 -0 -0 --21.645332 -23.301485 -0.80732203 --21.535872 -22.900259 -0.79756051 --21.910347 -23.013838 -0.80657929 --22.024782 -22.851616 -0.80557132 --0 -0 -0 --20.955406 -21.21489 -0.75466812 --20.798193 -20.798931 -0.74389863 --21.204922 -20.947004 -0.7543233 --21.240753 -20.726442 -0.75090146 --21.566183 -20.787186 -0.75822258 --21.688257 -20.649641 -0.75803691 --0 -0 -0 --0 -0 -0 --25.203209 -23.126682 -0.87106371 --25.382412 -23.005838 -0.87241656 --25.461277 -22.794323 -0.87021488 --25.88973 -22.893261 -0.88045388 --26.879026 -23.4757 -0.91037512 --27.077822 -23.357996 -0.91231149 --0 -0 -0 --10.24828 -8.6243057 -0.31882116 --10.264869 -8.5312338 -0.31757444 --10.276838 -8.435113 -0.3161951 --10.297337 -8.3467207 -0.31513408 --10.442015 -8.3583355 -0.31831717 --10.481339 -8.2848091 -0.31791928 --28.994385 -22.627897 -0.93934137 --0 -0 -0 --26.670753 -20.292936 -0.85268128 --0 -0 -0 --28.355831 -21.030607 -0.90018916 --0 -0 -0 --0 -0 -0 --21.910666 -15.633941 -0.67763692 --0 -0 -0 --0 -0 -0 --26.050852 -17.873466 -0.80172503 --0 -0 -0 --0 -0 -0 --0 -0 -0 --26.158197 -17.018349 -0.79148608 --29.655813 -19.035736 -0.8984915 --33.736458 -21.363722 -1.0230041 --33.990692 -21.233639 -1.0268768 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --20.888342 -12.174825 -0.60495597 --20.941851 -12.034474 -0.60431933 --0 -0 -0 --0 -0 -0 --33.440773 -18.405979 -0.97629195 --16.280212 -8.8316774 -0.45487249 --16.312939 -8.7203083 -0.45423585 --16.36083 -8.6172552 -0.45407671 --16.417833 -8.5190067 -0.45420933 --16.401255 -8.3830805 -0.45216683 --16.555069 -8.333971 -0.4552173 --6.9470897 -3.4447172 -0.16916208 --6.9779773 -3.4068487 -0.16945387 --6.9987502 -3.3639686 -0.16945387 --7.0310073 -3.3265176 -0.1697987 --39.04771 -18.176092 -1.1062953 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --36.224079 -15.528328 -1.0092106 --40.098354 -16.898506 -1.1180463 --40.231762 -16.664772 -1.1189216 --40.707317 -16.569851 -1.1296382 --41.922977 -16.765533 -1.1614957 --39.98645 -15.707252 -1.1033775 --22.282955 -8.5961723 -0.59715736 --22.408199 -8.4868984 -0.59922642 --22.389576 -8.3231239 -0.59723693 --22.414867 -8.1763391 -0.59652072 --45.708988 -16.355047 -1.2516042 --46.838528 -16.435692 -1.2805705 --0 -0 -0 --0 -0 -0 --49.135933 -16.232355 -1.3365401 --0 -0 -0 --49.204685 -15.58801 -1.3330121 --49.27076 -15.276922 -1.3322164 --28.410942 -8.6189032 -0.75121975 --28.378956 -8.4193983 -0.74888545 --28.373436 -8.2286835 -0.74732047 --51.716953 -14.654218 -1.3897511 --12.676634 -3.509006 -0.31242844 --12.715297 -3.4358499 -0.31290591 --12.736139 -3.3577657 -0.31290591 --12.749725 -3.2778132 -0.31272021 --12.776385 -3.2012208 -0.31290591 --12.926895 -3.1547501 -0.3164869 --52.779922 -12.534389 -1.4028814 --53.841526 -12.437985 -1.4297255 --0 -0 -0 --40.192421 -8.7670813 -1.0549942 --40.284576 -8.5285816 -1.0560553 --40.312649 -8.2764149 -1.0554187 --0 -0 -0 --18.431669 -3.5496261 -0.46147743 --18.803947 -3.5017793 -0.47094718 --18.683403 -3.360858 -0.46712744 --18.706629 -3.2466681 -0.46720701 --18.631546 -3.1160011 -0.46466053 --18.879288 -3.0384586 -0.47081453 --52.161602 -8.0648584 -1.3639679 --24.063999 -3.5701964 -0.60893488 --24.250734 -3.4459534 -0.6133647 --24.200102 -3.2874038 -0.61145484 --27.673729 -3.5863075 -0.70387101 --24.084841 -2.9712203 -0.60734332 --29.901943 -3.502434 -0.76228106 --29.924858 -3.3191135 -0.76233411 --29.81044 -3.121387 -0.75875312 --38.500031 -3.7922425 -0.9899528 --25.894688 -2.3906682 -0.6534453 --25.91584 -2.2323365 -0.65363097 --29.895004 -2.3902159 -0.75920403 --36.081173 -2.6618819 -0.92342585 --0 -0 -0 --0 -0 -0 --56.872089 -3.1437817 -1.4748195 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --46.796406 13.532393 -1.8431183 --46.34454 13.710425 -1.8283105 --46.061554 13.934639 -1.8203281 --43.611458 13.486085 -1.724848 --43.543133 13.758243 -1.7254651 --43.45314 14.023625 -1.7252722 --43.500092 14.334079 -1.7307096 --0 0 -0 --45.469246 15.604053 -1.8183614 --41.128498 14.397123 -1.6448314 --40.946213 14.615955 -1.6410139 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --33.122765 13.217169 -1.3394573 --32.656834 13.264109 -1.323454 --32.312561 13.355837 -1.3125023 --32.477787 13.65805 -1.3228755 --31.352448 13.411806 -1.2791846 --31.274147 13.605922 -1.2793773 --31.136156 13.773709 -1.2771022 --31.024628 13.952613 -1.2759839 --30.928434 14.138144 -1.2755597 --30.811197 14.313758 -1.2742871 --29.140511 13.755658 -1.2067647 --29.000597 13.907845 -1.2044125 --30.647614 14.929667 -1.2787989 --29.533506 14.611849 -1.2347995 --30.581745 15.364747 -1.2839663 --27.211203 13.881143 -1.1420573 --30.359837 15.722793 -1.2826166 --29.007694 15.24901 -1.2278968 --41.974854 22.395288 -1.799196 --41.471977 22.454973 -1.7831926 --24.640057 13.537693 -1.0481583 --24.492811 13.653111 -1.0453433 --24.356386 13.773626 -1.0430295 --24.206406 13.885526 -1.0401374 --24.11125 14.028264 -1.0397133 --24.03849 14.184069 -1.0403302 --23.949291 14.330273 -1.040253 --23.953176 14.532931 -1.0444179 --22.695814 13.961322 -0.99151045 --22.412163 13.977117 -0.98252547 --22.235603 14.057239 -0.97839928 --22.100134 14.162139 -0.97616267 --21.94075 14.250669 -0.97284633 --21.801983 14.351512 -0.97049403 --21.833218 14.564868 -0.97604698 --21.784002 14.725981 -0.97793657 --21.745173 14.894942 -0.98036599 --21.710014 15.067399 -0.98302674 --20.530807 14.436475 -0.9317776 --20.46463 14.578411 -0.93285733 --33.150002 23.922773 -1.5408292 --20.338238 14.867956 -0.93544102 --32.600971 24.140461 -1.5286821 --32.435444 24.327452 -1.5278723 --32.213154 24.471008 -1.5243632 --31.996662 24.61763 -1.5211624 --31.810328 24.78647 -1.5194657 --31.581551 24.921146 -1.5157251 --31.315632 25.02463 -1.5101722 --31.110226 25.174822 -1.5076271 --30.877878 25.301905 -1.5037708 --30.704361 25.476215 -1.5028839 --30.493906 25.619141 -1.5001847 --30.301125 25.775982 -1.4984107 --30.101509 25.926207 -1.4963284 --29.898935 26.072985 -1.4941304 --29.727903 26.246691 -1.4935905 --21.891926 19.568806 -1.0963612 --21.782555 19.712822 -1.0969396 --29.087975 26.650383 -1.4856466 --21.517763 19.958937 -1.0958213 --28.735432 26.98344 -1.4844127 --28.438238 27.034637 -1.4774328 --14.816531 14.2596 -0.75678223 --28.072847 27.350901 -1.4757361 --27.901651 27.519831 -1.4755819 --14.473764 14.452243 -0.75254041 --14.417143 14.573457 -0.7543143 --28.454741 29.117897 -1.5343508 --14.186556 14.696798 -0.75149924 --27.95874 29.321697 -1.5267154 --28.086607 29.820026 -1.5440685 --28.127722 30.233227 -1.5567939 --0 0 -0 --29.19523 32.163177 -1.6395099 --28.8379 32.163898 -1.6302935 --28.518105 32.202591 -1.623198 --28.261425 32.310032 -1.619766 --27.932642 32.332359 -1.6120921 --27.574169 32.316147 -1.6026058 --27.385666 32.496956 -1.6032228 --26.996538 32.437038 -1.5918084 --26.782408 32.58432 -1.5909215 --26.500731 32.647957 -1.5859469 --15.781321 19.687943 -0.9369449 --24.030985 30.359301 -1.4574192 --15.588377 19.943892 -0.94006848 --24.698191 32.001446 -1.5232062 --24.391136 32.007736 -1.5161879 --24.178061 32.135239 -1.5151467 --23.852316 32.110523 -1.5068558 --23.608156 32.192616 -1.5038095 --23.342207 32.242973 -1.4993362 --23.043415 32.244946 -1.4926649 --22.802505 32.325306 -1.4898114 --22.494104 32.307159 -1.4824075 --22.12793 32.200806 -1.470993 --22.017429 32.464985 -1.4770087 --21.782242 32.546322 -1.4745407 --20.215881 30.610653 -1.3788679 --19.988943 30.674679 -1.37613 --19.809538 30.811039 -1.3767855 --19.640985 30.964918 -1.3782895 --20.120081 32.154716 -1.4269935 --8.8438931 14.328982 -0.61302233 --8.7381382 14.353958 -0.6117112 --8.7028799 14.495543 -0.61568314 --8.5934086 14.514277 -0.61414063 --8.4784937 14.522722 -0.61217397 --8.4964066 14.760666 -0.62046486 --18.56698 32.717834 -1.4149621 --18.412712 32.914864 -1.4186641 --18.154434 32.925716 -1.4141909 --17.994526 33.114632 -1.4176229 --12.41199 23.179457 -0.977898 --12.248546 23.215408 -0.97616267 --12.087434 23.254663 -0.97462022 --10.04722 19.62299 -0.81397003 --9.9990692 19.827915 -0.82017857 --9.7981033 19.729593 -0.81331444 --13.786988 28.194235 -1.1743724 --9.6185379 19.979795 -0.81894457 --13.367644 28.208694 -1.1678555 --13.13095 28.154346 -1.1620711 --12.912102 28.134487 -1.1578293 --12.692348 28.109364 -1.1534332 --12.465684 28.065254 -1.1483045 --12.220439 27.974558 -1.1412861 --12.01267 27.965466 -1.137777 --11.805474 27.954878 -1.1342678 --11.59503 27.933577 -1.130373 --11.401901 27.951458 -1.1281749 --11.190774 27.922575 -1.1240873 --10.988119 27.911682 -1.1208096 --10.790706 27.911472 -1.1180331 --10.587325 27.893078 -1.1145625 --10.38109 27.863878 -1.1107062 --10.140615 27.737474 -1.1029167 --9.9250231 27.673134 -1.0977494 --9.7139215 27.616625 -1.0929676 --9.5198517 27.60486 -1.0900755 --9.3307734 27.605007 -1.0877231 --9.1505346 27.629488 -1.0864121 --8.9663391 27.640442 -1.0845996 --8.7669258 27.601606 -1.0808206 --8.5736675 27.578543 -1.0777355 --8.3856764 27.569447 -1.0752676 --8.1901417 27.532267 -1.0717199 --8.0001249 27.510038 -1.0688276 --7.8188839 27.515354 -1.0670924 --7.6370773 27.516596 -1.0652415 --7.4610391 27.536898 -1.0642003 --7.2766104 27.524195 -1.0618865 --3.7695274 14.621683 -0.54592407 --3.6390684 14.482694 -0.5394842 --3.5491855 14.500868 -0.53932995 --3.4386015 14.431973 -0.53574365 --3.3912797 14.630939 -0.54280055 --6.195981 27.495556 -1.0508963 --6.0292916 27.542816 -1.0512819 --5.8624635 27.590046 -1.0517061 --5.6930637 27.625498 -1.0517061 --3.9438119 19.750103 -0.7404319 --3.8233118 19.777855 -0.74058616 --3.7073948 19.830408 -0.74174303 --4.9830117 27.588739 -1.0451119 --4.8182697 27.645376 -1.0461531 --4.6508675 27.688215 -1.046693 --4.4799314 27.710314 -1.0464616 --4.3035288 27.696796 -1.0448805 --4.1367459 27.744423 -1.0457289 --3.9706707 27.79896 -1.0468858 --3.8059752 27.866364 -1.0485826 --3.6488678 27.996206 -1.0527472 --3.4851408 28.083517 -1.0552924 --3.3190753 28.157961 -1.0573747 --3.1554434 28.260223 -1.0605754 --2.9874325 28.330727 -1.0625806 --2.8185759 28.399237 -1.0645473 --2.6487134 28.463755 -1.0663983 --2.4783378 28.529247 -1.0683264 --2.3069365 28.589733 -1.0701002 --2.1348121 28.648191 -1.0718355 --1.9620569 28.705614 -1.0735708 --1.7015777 27.361742 -1.0211648 --1.613058 28.788389 -1.0759231 --1.4397215 28.864611 -1.0785068 --1.2664273 28.960752 -1.0819002 --1.0915192 29.04287 -1.0847925 --0.9145202 29.087971 -1.0862963 --0.73814654 29.176947 -1.0895356 --0.56144333 29.302813 -1.0942402 --0.38453871 29.528521 -1.1028396 --0.20471984 29.729172 -1.1105134 --0.022370653 29.820801 -1.1140226 -0.16142274 29.972261 -1.119884 -0.34764895 30.172543 -1.1276736 -0.53524584 30.309717 -1.1330724 -0.72361249 30.406757 -1.1369671 -0.91238302 30.475658 -1.1398207 -1.1009097 30.512426 -1.1414789 -1.2891212 30.529057 -1.1424044 -1.4795089 30.58445 -1.1448724 -1.6694826 30.617701 -1.1465305 -1.7053078 28.101357 -1.0496622 -2.0649397 30.892023 -1.158022 -2.2565603 30.907673 -1.1591403 -2.4500282 30.942057 -1.1610299 -2.6461267 31.000118 -1.1638836 -2.843941 31.066887 -1.1671227 -3.0521007 31.228859 -1.1741025 -2.0497854 19.721008 -0.7283619 -2.1812532 19.803411 -0.73206389 -2.3008759 19.773773 -0.73144686 -3.8562329 31.459955 -1.1863654 -4.050344 31.44462 -1.1867124 -4.2476211 31.451855 -1.1879849 -4.4479351 31.47764 -1.1900287 -4.6560192 31.551577 -1.1940006 -4.8688231 31.647844 -1.1988981 -4.734149 29.564075 -1.1186501 -5.329493 32.022377 -1.2159811 -5.5478191 32.116096 -1.2209556 -5.8028955 32.406044 -1.2336812 -6.0245771 32.493626 -1.2385399 -6.2345672 32.511986 -1.240738 -6.472002 32.665237 -1.2482963 -2.9526541 14.436176 -0.53184885 -3.0574677 14.495029 -0.5348953 -3.1467745 14.47795 -0.53497243 -3.2883532 14.694353 -0.54430449 -3.3185999 14.413899 -0.53400838 -7.4011254 31.269133 -1.2032555 -8.1802816 33.638885 -1.2991984 -8.3971825 33.630718 -1.3008951 -3.4409401 13.428851 -0.49818406 -3.5192101 13.392022 -0.49756706 -9.3141537 34.581989 -1.3453188 -9.5264359 34.525154 -1.3453573 -9.7413588 34.477589 -1.3458201 -4.1851764 14.471776 -0.54457438 -4.2177687 14.256099 -0.53693908 -4.275651 14.132393 -0.53300571 -4.35461 14.081071 -0.5320031 -4.4358096 14.037888 -0.53134757 -4.5117335 13.979024 -0.53007501 -4.6202512 14.020359 -0.53289008 -4.6921754 13.950072 -0.53119332 -4.7789807 13.9248 -0.53134757 -4.8735757 13.921622 -0.53242731 -4.9736857 13.932865 -0.53412402 -5.0672832 13.924622 -0.53504956 -5.2196846 14.07409 -0.54249203 -12.765947 33.785755 -1.3570031 -12.965117 33.686272 -1.3561547 -5.7119513 14.572915 -0.567249 -5.7308979 14.361255 -0.55992216 -5.7888274 14.251755 -0.5568372 -5.8601346 14.177181 -0.55521756 -5.9477887 14.142799 -0.55529469 -6.04035 14.119819 -0.55587316 -6.1296644 14.088904 -0.55614305 -6.2341876 14.092151 -0.55787838 -6.3225875 14.05819 -0.5580712 -6.4627333 14.137276 -0.56308424 -15.104807 32.514027 -1.3467456 -15.299333 32.410793 -1.3463213 -15.563158 32.452362 -1.3521442 -15.190478 31.183023 -1.301782 -15.220679 30.764114 -1.287784 -15.192039 30.237978 -1.2691199 -15.357764 30.105915 -1.2674617 -15.203536 29.357153 -1.2390413 -15.200655 28.915707 -1.2238864 -15.243735 28.570629 -1.2128961 -15.399248 28.440531 -1.211315 -15.528719 28.264059 -1.2077287 -15.6279 28.035576 -1.2018673 -15.753885 27.858265 -1.198281 -15.908613 27.733339 -1.197047 -16.068432 27.617929 -1.1962758 -16.239113 27.521397 -1.1963915 -16.448208 27.488979 -1.1994379 -16.624861 27.401207 -1.2000549 -16.80315 27.315704 -1.2008262 -16.984716 27.234982 -1.2018673 -17.172865 27.164038 -1.2034098 -17.407686 27.165007 -1.2083073 -17.642075 27.162436 -1.2131275 -17.886425 27.172195 -1.2186034 -18.191444 27.269754 -1.2282438 -18.355627 27.153481 -1.2280511 -13.743557 20.064207 -0.90173763 -13.86698 19.980322 -0.90177619 -13.990464 19.896494 -0.90185332 -19.367815 27.188042 -1.2514198 -14.201996 19.679554 -0.89977098 -19.878086 27.191944 -1.2630656 -20.135538 27.192331 -1.2689656 -20.350573 27.13302 -1.2720891 -20.571075 27.079256 -1.2755597 -20.706377 26.912924 -1.2736316 -20.890776 26.810589 -1.2748656 -21.005989 26.61993 -1.2718192 -21.449638 26.841824 -1.2891722 -21.224216 26.228096 -1.2652636 -21.854048 26.670105 -1.2938381 -21.746742 26.209446 -1.2774879 -22.582701 26.879625 -1.3180166 -22.679871 26.661398 -1.3140062 -22.968893 26.667862 -1.3214488 -23.130121 26.524166 -1.3213331 -13.110271 14.848841 -0.72762924 -13.061288 14.611665 -0.71953118 -13.144664 14.524579 -0.7191841 -13.068155 14.26314 -0.70973635 -13.144554 14.170964 -0.70911938 -13.221682 14.079846 -0.70857948 -13.333987 14.025975 -0.71004486 -13.441971 13.966935 -0.71127886 -13.583899 13.942168 -0.71440238 -13.686733 13.876343 -0.71536642 -13.890234 13.910897 -0.72184491 -31.600235 31.261948 -1.678612 -14.965378 14.624271 -0.7707032 -14.849932 14.334379 -0.75971299 -14.850824 14.160242 -0.75508553 -14.87851 14.013357 -0.75196201 -14.953241 13.911591 -0.75138354 -15.013304 13.796588 -0.75007242 -15.091757 13.698835 -0.74976397 -15.168831 13.599973 -0.74941689 -15.275931 13.527843 -0.75065088 -15.412803 13.481224 -0.75342733 -15.592018 13.470017 -0.75836331 -15.818042 13.496681 -0.76565158 -34.205498 28.825508 -1.689448 -34.391708 28.623394 -1.6899493 -34.566692 28.411831 -1.6899493 -18.110456 14.70024 -0.86336821 -18.219027 14.603839 -0.86429369 -35.395638 28.017595 -1.705297 -18.359076 14.349627 -0.86244273 -35.863358 27.678812 -1.7114669 -25.753592 19.625137 -1.2127419 -36.300129 27.311728 -1.7162873 -26.09516 19.383894 -1.2176778 -36.74456 26.946352 -1.7216474 -36.956154 26.754372 -1.723884 -37.305794 26.660158 -1.7327148 -20.897871 14.741336 -0.9501332 -20.929705 14.572292 -0.94739527 -21.063196 14.474156 -0.94947761 -38.187008 25.898132 -1.7438207 -0 0 -0 -38.607838 25.497505 -1.748718 -0 0 -0 -0 0 -0 -21.871948 13.873195 -0.96274304 -0 0 -0 -31.777578 19.613792 -1.4043189 -24.417881 14.864996 -1.0663983 -20.031527 12.026769 -0.86487216 -20.049915 11.871049 -0.86240417 -19.998976 11.675755 -0.85688978 -19.981907 11.501974 -0.85295641 -19.998222 11.348573 -0.85056555 -19.96196 11.166622 -0.84589952 -19.994223 11.024145 -0.84431851 -19.993885 10.864518 -0.84134918 -20.023174 10.721821 -0.83972961 -20.017881 10.561455 -0.83664459 -20.037977 10.415385 -0.8347165 -20.098839 10.290872 -0.83460081 -20.165173 10.169154 -0.83475506 -20.450035 10.155906 -0.84435707 -20.675343 10.110129 -0.85137534 -20.944067 10.082773 -0.86024469 -21.986187 10.418801 -0.90212321 -22.110378 10.311999 -0.9047069 -22.265869 10.218654 -0.90864027 -22.458382 10.140647 -0.91415465 -22.569494 10.024558 -0.916237 -22.822874 9.9698915 -0.92433506 -24.379251 10.472143 -0.98715293 -24.338108 10.278039 -0.98275685 -24.360107 10.111653 -0.98106009 -24.455002 9.9755793 -0.98244834 -24.901604 9.9799862 -0.99849021 -25.131594 9.8936262 -1.0055085 -25.683002 9.9291344 -1.0258309 -26.216158 9.9507942 -1.0453433 -44.215805 16.473488 -1.7841182 -33.822701 12.365421 -1.352954 -33.90358 12.15968 -1.3531854 -33.830498 11.899696 -1.3471698 -33.9076 11.693521 -1.3473625 -33.837666 11.43757 -1.3416167 -33.910053 11.230673 -1.3417325 -33.875671 10.989092 -1.3375678 -34.074841 10.823076 -1.3429279 -33.867706 10.528949 -1.331899 -33.911594 10.314836 -1.3310893 -33.96563 10.103999 -1.3307422 -34.582539 10.056968 -1.3530698 -35.870083 10.193127 -1.4022751 -35.925213 9.9709692 -1.4020052 -36.845066 9.9831991 -1.4363642 -37.610855 9.9433861 -1.4645146 -0 0 -0 -39.784584 9.9973984 -1.5462664 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -17.130878 0.74895418 -0.62493807 -17.159117 0.644728 -0.62586355 -0 0 -0 -17.2936 0.43734726 -0.63079953 -17.240011 0.33015475 -0.62864006 -0 0 -0 -0 0 -0 -0 0 -0 -17.263905 -0.093148455 -0.62944984 -0 -0 -0 -0 -0 -0 -17.265259 -0.41104728 -0.62968123 -17.249428 -0.51658863 -0.62917989 -17.260912 -0.62295961 -0.62975836 -0 -0 -0 -17.293888 -0.83675796 -0.63137794 -17.300402 -0.94350821 -0.63184071 -17.299273 -1.0499463 -0.63203353 -17.303473 -1.1568059 -0.63245767 -17.294056 -1.2628107 -0.63238055 -17.308893 -1.3707151 -0.63326752 -17.346951 -1.4808884 -0.63507992 -0 -0 -0 -17.292664 -1.6902492 -0.63373023 -17.387321 -1.8072714 -0.63781786 -27.428604 -3.0209775 -1.028106 -27.417492 -3.1901431 -1.0284145 -27.404345 -3.3591645 -1.0286844 -27.389162 -3.528017 -1.0289158 -25.403297 -3.4308317 -0.95244694 -27.391298 -3.870569 -1.0307667 -27.390759 -4.0420666 -1.0316923 -27.377293 -4.2118802 -1.032155 -27.350935 -4.3797851 -1.032155 -0 -0 -0 -15.396317 -2.6598115 -0.56616926 -15.150524 -2.7131951 -0.55718422 -15.106081 -2.8010056 -0.55610448 -14.969863 -2.8708725 -0.55143845 -14.850024 -2.9424753 -0.54742801 -13.395506 -2.7398334 -0.49085724 -13.306089 -2.8067155 -0.48800364 -13.161676 -2.8607204 -0.48299056 -13.065865 -2.9239697 -0.47990558 -12.944456 -2.9803228 -0.47581798 -12.882168 -3.049336 -0.47408268 -12.873896 -3.1309192 -0.47450686 -12.840869 -3.2064643 -0.47396699 -10.990481 -2.8162196 -0.40104586 -13.019938 -3.4214439 -0.48272061 -12.835636 -3.4573514 -0.47620359 -12.859453 -3.5485361 -0.47801602 -12.823976 -3.6235697 -0.47747615 -7.9471426 -2.2984679 -0.28246704 -7.9501376 -2.3522897 -0.28316116 -7.9336414 -2.4004478 -0.28308403 -7.8786678 -2.4366841 -0.28146443 -7.9216905 -2.503345 -0.28381673 -7.9309063 -2.5598838 -0.28481933 -7.9321327 -2.6141276 -0.28551346 -25.480364 -8.570097 -1.0006497 -32.552799 -11.17153 -1.2913703 -32.016785 -11.207641 -1.2722819 -31.949293 -11.404553 -1.272359 -31.85524 -11.591833 -1.271395 -10.975738 -4.0706863 -0.41496682 -10.960835 -4.1418405 -0.415391 -7.1713505 -2.7604349 -0.25975391 -7.1384616 -2.7981865 -0.25909835 -7.122086 -2.8423052 -0.25913692 -7.1026602 -2.8851998 -0.25905979 -28.776541 -11.894331 -1.1648476 -28.095074 -11.815023 -1.1393965 -9.0906878 -3.8890815 -0.34478357 -19.588549 -8.5222263 -0.78759348 -8.9929314 -3.9785161 -0.34270123 -5.5143671 -2.4803205 -0.19655043 -5.411799 -2.4742284 -0.19284846 -26.874477 -12.484958 -1.1067729 -26.029268 -12.287057 -1.073995 -25.924555 -12.432712 -1.0727611 -25.810051 -12.573168 -1.0711414 -5.3333554 -2.6390698 -0.19284846 -5.3063474 -2.6663618 -0.19238572 -5.2952275 -2.7015953 -0.19261709 -3.7967093 -1.9666389 -0.12821819 -3.7757258 -1.9852486 -0.12783258 -3.7731714 -2.0135527 -0.12825675 -3.7774413 -2.0457063 -0.12898944 -3.7788305 -2.0765443 -0.12960644 -4.4983115 -2.5078828 -0.16196012 -4.4123836 -2.4955955 -0.15883659 -4.3839865 -2.5151644 -0.15825815 -3.715503 -2.1621234 -0.12910512 -3.6737664 -2.1681232 -0.12783258 -3.6363842 -2.1762586 -0.12675282 -3.599896 -2.1845353 -0.12571165 -3.5881264 -2.2076299 -0.12578878 -13.623747 -8.4964952 -0.5828281 -4.1621442 -2.6316714 -0.15324508 -4.1425529 -2.6550038 -0.15309082 -3.4792347 -2.2601881 -0.1233208 -3.4335837 -2.2606161 -0.12185543 -3.3506525 -2.2356162 -0.11865477 -3.3492897 -2.2645276 -0.1192332 -3.4202459 -2.3431981 -0.1232051 -4.9302654 -3.422128 -0.19481513 -4.9296103 -3.4666839 -0.19577919 -4.8797607 -3.4765747 -0.19442952 -4.855906 -3.5046966 -0.19431382 -4.7963953 -3.5067098 -0.1925014 -4.8550949 -3.5955381 -0.19635762 -5.4244981 -4.0689349 -0.22489366 -3.2971721 -2.5051768 -0.1230123 -4.8569927 -3.7373066 -0.19971253 -3.2582991 -2.5393078 -0.12262667 -4.8758736 -3.8480048 -0.20291319 -4.8521705 -3.8778501 -0.20291319 -4.829062 -3.9081781 -0.20295176 -4.8034453 -3.9364684 -0.20287463 -5.2782941 -4.3799701 -0.22790152 -15.867697 -13.331332 -0.76299077 -15.398183 -13.098891 -0.74336261 -16.12085 -13.885014 -0.78427714 -3.1335089 -2.7330115 -0.12366785 -3.6582685 -3.2303438 -0.15154833 -3.0572691 -2.7333004 -0.12146981 -3.0463676 -2.7573719 -0.1217783 -3.3417878 -3.0622239 -0.13812868 -3.8855941 -3.6045544 -0.16774446 -3.3017726 -3.10095 -0.13801299 -3.4615693 -3.2912042 -0.14753786 -3.4787495 -3.3484132 -0.14954309 -3.4466867 -3.3585384 -0.14892611 -3.3890195 -3.3431358 -0.14692087 -4.1356678 -4.1299219 -0.18876086 -3.5304604 -3.5691679 -0.15694705 -2.7842503 -2.8496552 -0.11695803 -4.0908732 -4.2384176 -0.19053473 -2.7449334 -2.8792686 -0.11672665 -4.2358704 -4.4977908 -0.20164065 -3.3383176 -3.5887253 -0.15235814 -7.5509739 -8.2171593 -0.39387327 -7.656229 -8.4349899 -0.40281972 -3.3877659 -3.7790198 -0.15906796 -4.0826583 -4.6106472 -0.2008694 -4.0615282 -4.6438847 -0.20129359 -4.0257711 -4.6604009 -0.2008694 -3.9951541 -4.682734 -0.20075372 -3.988884 -4.7339034 -0.20210339 -11.344852 -13.631495 -0.64761263 -3.45207 -4.2004457 -0.17302749 -11.208207 -13.808479 -0.64954072 -3.5733864 -4.4584627 -0.18370922 -3.563328 -4.5022426 -0.18478896 -2.9436445 -3.7666488 -0.14769211 -2.8179078 -3.6517432 -0.14121366 -2.8996229 -3.8056674 -0.14784636 -2.8912368 -3.8433497 -0.14881042 -10.289147 -13.851862 -0.62910277 -10.224051 -13.942132 -0.63041389 -10.094363 -13.943897 -0.62752175 -9.9208841 -13.882812 -0.62169886 -9.8009539 -13.894431 -0.61938512 -1.5002177 -2.1553414 -0.064551979 -2.9425623 -4.2826614 -0.16373399 -2.9078159 -4.2882309 -0.16315556 -1.446396 -2.1618295 -0.063587926 -1.4386109 -2.179002 -0.063973546 -1.4208492 -2.1810906 -0.063665047 -2.7898126 -4.3398094 -0.16230719 -1.4078933 -2.2203016 -0.064667664 -1.3990138 -2.2365222 -0.065014727 -1.386314 -2.2467649 -0.065091848 -1.3751001 -2.2594967 -0.065284662 -1.3591528 -2.2644649 -0.065130413 -1.34676 -2.2753413 -0.065246098 -1.356957 -2.3249834 -0.06709709 -1.5625123 -2.7151809 -0.084103025 -1.5640711 -2.7568727 -0.085529827 -1.5642006 -2.7969403 -0.086879499 -1.5199898 -2.7574825 -0.084720016 -1.3718349 -2.5253086 -0.07411541 -1.2152702 -2.2702878 -0.062585309 -1.196654 -2.2688639 -0.062199686 -1.2698151 -2.4437366 -0.069487944 -6.7572341 -13.197683 -0.53539658 -1.3706689 -2.71877 -0.080709547 -6.5983253 -13.286771 -0.53570509 -6.5162358 -13.326109 -0.53566653 -1.0685532 -2.220437 -0.058304902 -1.0561925 -2.2296607 -0.058420587 -1.4086934 -3.0212538 -0.091854028 -6.1151257 -13.324898 -0.52899528 -6.027493 -13.349419 -0.52845538 -5.9118013 -13.310354 -0.52525473 -5.8364196 -13.361029 -0.52587175 -5.6083999 -13.056881 -0.51160371 -5.5235138 -13.080002 -0.51114094 -5.5998416 -13.491113 -0.52691293 -1.2870582 -3.1561284 -0.094746195 -5.4405551 -13.575511 -0.52760702 -1.1439061 -2.9066932 -0.083755963 -1.1437061 -2.9593265 -0.085645512 -5.2347884 -13.792 -0.53250444 -5.1368065 -13.788278 -0.53103906 -4.9896584 -13.64873 -0.52402073 -1.1587864 -3.2319963 -0.095710248 -1.1664547 -3.3172846 -0.098910913 -1.0760334 -3.1212785 -0.090620033 -4.6055207 -13.626023 -0.51827496 -4.4772139 -13.519327 -0.51279914 -4.3843093 -13.516129 -0.51156515 -4.2135658 -13.266589 -0.50038213 -4.0872889 -13.148108 -0.49455923 -0.97757578 -3.2151737 -0.09289521 -0.95982397 -3.2278159 -0.093165144 -0.96009165 -3.3027287 -0.095941626 -0.92369241 -3.2518468 -0.093666449 -0.90372205 -3.2574532 -0.093666449 -3.6423876 -13.443957 -0.50072914 -3.5572743 -13.456393 -0.50034356 -0.86556423 -3.3586857 -0.097059928 -0.84713131 -3.3726556 -0.097406983 -3.267643 -13.350707 -0.49363372 -3.2116055 -13.479374 -0.4979527 -3.1279345 -13.494932 -0.49779844 -0.70852733 -3.145803 -0.087650746 -1.8145413 -8.2904367 -0.29071936 -1.7592763 -8.2808886 -0.28990954 -1.7245687 -8.3698225 -0.29299453 -1.6706359 -8.3675079 -0.29249322 -1.6073128 -8.3157921 -0.2900638 -1.5588289 -8.3392496 -0.29060367 -1.5364059 -8.5079584 -0.29685074 -0.51659715 -2.9661148 -0.079398431 -0.64522427 -3.8433216 -0.11360312 -0.49212143 -3.0462143 -0.082290597 -0.47541562 -3.0620129 -0.08279191 -2.0516696 -13.761552 -0.50015074 -1.9950294 -13.968757 -0.50774747 -1.9092813 -13.980735 -0.50774747 -1.8228153 -13.987233 -0.50755471 -1.7404031 -14.02592 -0.50863445 -1.6592225 -14.078015 -0.51025403 -1.5689287 -14.053173 -0.50890434 -1.4795264 -14.032722 -0.50774747 -1.3894473 -14.001762 -0.50620502 -1.2959146 -13.928437 -0.50304288 -1.2103405 -13.935131 -0.50300431 -1.1260995 -13.958232 -0.50362134 -1.0373129 -13.923026 -0.5020017 -0.96263176 -14.086644 -0.50809455 -0.87785459 -14.119213 -0.50913572 -0.78947079 -14.093405 -0.50794029 -0.69416702 -13.921335 -0.50111479 -0.12196018 -2.7972651 -0.071261808 -0.10434368 -2.7859783 -0.07079906 -0.085802197 -2.740623 -0.069025196 -0.067973003 -2.7011404 -0.06748271 -0.050957255 -2.6785278 -0.066595778 -0.034078293 -2.6448183 -0.065284662 -0.017904507 -2.6529715 -0.065593161 -0.0016594146 -2.6969986 -0.067289896 --0.074633121 -13.81752 -0.49644876 --0.15900044 -13.780831 -0.49506053 --0.24769813 -14.014384 -0.50412261 --0.33451572 -14.047565 -0.5054723 --0.41920918 -13.995308 -0.50354421 --0.099735767 -2.7541502 -0.069565065 --0.59741175 -14.142858 -0.5094828 --0.69407463 -14.343534 -0.51738805 --0.78598809 -14.410846 -0.52016455 --0.87070525 -14.344909 -0.51781225 --0.18557112 -2.7707324 -0.070374876 --0.20184104 -2.7595754 -0.069989257 --0.21995261 -2.7732272 -0.070567682 --0.23526521 -2.7519126 -0.069796443 --0.2516908 -2.7454417 -0.069603629 --1.4228936 -14.556743 -0.52764559 --1.5122886 -14.548732 -0.52768415 --0.29879192 -2.709553 -0.068408199 --0.31471896 -2.7017133 -0.068176828 --1.8192132 -14.839785 -0.5401783 --1.9181482 -14.88979 -0.54256916 --2.0106776 -14.886652 -0.54291624 --2.1138654 -14.958136 -0.54619402 --2.2193184 -15.037807 -0.54981887 --2.3120027 -15.02687 -0.54993457 --2.4003706 -14.988721 -0.54900908 --2.4954112 -14.992438 -0.54974174 --2.5958602 -15.026078 -0.55166984 --2.6883619 -15.011835 -0.55174696 --2.7756863 -14.969511 -0.55074435 --2.8806577 -15.020895 -0.55344373 --2.983839 -15.058808 -0.55564177 --3.087594 -15.096019 -0.55783981 --3.2158377 -15.24594 -0.56451106 --3.3437018 -15.384108 -0.57075816 --3.4439254 -15.38963 -0.57179934 --3.5344784 -15.351655 -0.57114375 --3.6088157 -15.246054 -0.5678274 --3.7013512 -15.219739 -0.56767315 --3.7917635 -15.185107 -0.56721044 --3.8446896 -15.004742 -0.56096333 --4.032927 -15.347154 -0.57557845 --4.1241612 -15.311505 -0.57515424 --4.2047443 -15.237748 -0.57322615 --4.2908268 -15.185699 -0.57218492 --4.3955817 -15.199402 -0.57380456 --4.4709024 -15.111777 -0.57137513 --4.5291114 -14.970243 -0.56678623 --4.6368227 -14.993722 -0.56886858 --4.783226 -15.13745 -0.57584834 --4.8843036 -15.133492 -0.57688951 --4.9604945 -15.052938 -0.57484573 --5.066143 -15.061996 -0.57646537 --5.3060441 -15.460671 -0.59401119 --5.4655166 -15.612679 -0.60156935 --5.5652423 -15.590143 -0.60203212 --5.9922352 -16.466553 -0.63943744 --6.0844731 -16.406054 -0.63847339 --6.2012706 -16.411409 -0.64024723 --6.2939563 -16.352533 -0.63939887 --6.3912582 -16.306164 -0.63909042 --6.5467405 -16.405855 -0.64487469 --6.6070476 -16.266315 -0.64074856 --6.793376 -16.435099 -0.64950216 --6.9200444 -16.454823 -0.65208584 --7.022058 -16.414808 -0.65220153 --7.1864257 -16.518021 -0.65837151 --7.3725338 -16.665522 -0.66646957 --7.5090795 -16.696522 -0.66970879 --7.6579137 -16.751921 -0.67402774 --7.9154835 -17.038115 -0.68821865 --8.1414442 -17.246763 -0.69920886 --1.6569729 -3.4543002 -0.11105801 --1.6685096 -3.4243047 -0.11020964 --1.6748668 -3.3844464 -0.10893708 --1.6825925 -3.3482115 -0.10781878 --1.7071917 -3.3458357 -0.10816585 --1.7345819 -3.3486075 -0.10874428 --1.7578857 -3.3432081 -0.10897565 --1.8000033 -3.3729138 -0.11074951 --4.5497036 -8.4021549 -0.33194235 --9.9728041 -18.151356 -0.76245093 --4.6451707 -8.3325977 -0.33136392 --10.252347 -18.129377 -0.76696271 --10.329087 -18.006321 -0.7643019 --10.47003 -17.995289 -0.76665419 --10.600054 -17.964272 -0.76815814 --10.719316 -17.914328 -0.76885223 --10.841992 -17.869576 -0.76981628 --11.081275 -18.013792 -0.77937973 --11.243415 -18.028553 -0.78315884 --11.358096 -17.965982 -0.78346729 --11.703718 -18.263618 -0.80031902 --11.903735 -18.327221 -0.80656606 --12.041787 -18.293066 -0.80837852 --12.140495 -18.198883 -0.80745304 --12.21388 -18.067755 -0.80483079 --12.295712 -17.950426 -0.80286413 --12.381695 -17.840164 -0.8012445 --13.127181 -18.668736 -0.84393287 --13.236845 -18.581326 -0.84362435 --13.419024 -18.594561 -0.84813613 --13.533455 -18.51268 -0.84817469 --13.521917 -18.260649 -0.84007663 --13.697261 -18.262072 -0.84416425 --15.237985 -20.058735 -0.93532532 --16.250389 -21.121153 -0.99162614 --16.920153 -21.714687 -1.0255609 --17.098879 -21.668507 -1.0284145 --15.853539 -19.838764 -0.94323057 --17.160465 -21.206142 -1.0159589 --16.095798 -19.642723 -0.94323057 --16.341719 -19.695087 -0.9508273 --16.950762 -20.175915 -0.98013461 --17.396023 -20.449808 -0.9993 --17.378363 -20.176868 -0.99085492 --0 -0 -0 --18.138525 -20.544128 -1.0208178 --18.358803 -20.538239 -1.0262935 --18.591757 -20.543751 -1.0324636 --18.888243 -20.615692 -1.0422198 --18.917208 -20.394644 -1.0367054 --18.95307 -20.183487 -1.0316923 --19.039377 -20.027704 -1.0296099 --18.750322 -19.482826 -1.006704 --19.23839 -19.746033 -1.0271034 --19.340944 -19.609118 -1.0261008 --19.453133 -19.482296 -1.0256766 --19.550285 -19.340782 -1.0244812 --17.328062 -16.933191 -0.8981899 --17.4151 -16.810587 -0.89730299 --19.621656 -18.709402 -1.0094805 --20.718075 -19.513578 -1.0615394 --20.90765 -19.451429 -1.0652415 --16.457586 -15.123874 -0.82577008 --0 -0 -0 --20.480951 -18.362867 -1.0247511 --0 -0 -0 --22.93856 -20.064091 -1.1392808 --23.664644 -20.444271 -1.1700535 --10.180075 -8.6859207 -0.47963563 --24.14909 -20.350662 -1.1819307 --24.262753 -20.193153 -1.1813908 --10.30658 -8.4710522 -0.47805458 --10.358363 -8.4076529 -0.47805458 --18.695412 -14.985708 -0.88785523 --10.516387 -8.3239403 -0.48079249 --18.851133 -14.734236 -0.88654411 --0 -0 -0 --0 -0 -0 --24.972036 -18.788465 -1.1692051 --25.397284 -18.865488 -1.1841288 --25.17977 -18.465242 -1.1682025 --0 -0 -0 --0 -0 -0 --19.403606 -13.68725 -0.87956434 --19.560211 -13.618752 -0.88299638 --19.602228 -13.470179 -0.88106829 --25.148506 -17.055357 -1.1358488 --25.568245 -17.111929 -1.1505024 --19.502481 -12.879651 -0.86514211 --26.065138 -16.985096 -1.1638064 --19.864992 -12.771756 -0.8745898 --20.084745 -12.739548 -0.88106829 --26.316608 -16.46693 -1.1612227 --26.312563 -16.240589 -1.1564796 --26.326365 -16.026871 -1.1526234 --26.34882 -15.819768 -1.1492299 --27.09285 -16.041155 -1.1782672 --20.943901 -12.227441 -0.89911538 --0 -0 -0 --29.005198 -16.460049 -1.2502244 --28.464674 -15.923195 -1.2218812 --28.614344 -15.777188 -1.2241949 --16.213242 -8.8100605 -0.6753003 --28.919437 -15.48571 -1.2291694 --28.083286 -14.816954 -1.1885633 --16.406349 -8.527648 -0.67676568 --16.295599 -8.3434772 -0.66970879 --28.105009 -14.173333 -1.1779202 --6.9379191 -3.4452174 -0.26214474 --6.9526443 -3.3995094 -0.26187482 --6.9823761 -3.3611195 -0.26226044 --7.0344725 -3.3331904 -0.26361012 --29.911209 -13.950363 -1.2368819 --28.831057 -13.231797 -1.1874065 --28.925364 -13.060813 -1.1879849 --29.161119 -12.952449 -1.194579 --32.89732 -14.37098 -1.3485966 --32.815941 -14.096286 -1.3415011 --33.195469 -14.01868 -1.3538024 --33.459904 -13.889054 -1.3612835 --33.555595 -13.688016 -1.3617463 --33.713158 -13.511605 -1.3648312 --22.119057 -8.7076206 -0.88056695 --22.463793 -8.6845226 -0.89263695 --22.347563 -8.4823389 -0.88565719 --22.391699 -8.3422661 -0.88534868 --22.246317 -8.1330042 -0.87728918 --22.664513 -8.1285944 -0.89240557 --35.49897 -12.486592 -1.4154248 --35.620262 -12.284178 -1.4172758 --35.740402 -12.080744 -1.4191269 --35.731331 -11.833885 -1.415772 --35.896416 -11.644637 -1.419551 --36.042427 -11.448059 -1.4225974 --28.095722 -8.734457 -1.0986363 --28.33712 -8.6191874 -1.106233 --28.345415 -8.432045 -1.1044592 --28.133717 -8.1815042 -1.0938932 --12.659086 -3.5970371 -0.47107482 --12.786834 -3.548692 -0.47531667 --13.064918 -3.5396824 -0.48557422 --12.792708 -3.3818049 -0.47385129 --12.810315 -3.3024983 -0.47373563 --12.650081 -3.1785352 -0.46656305 --34.301109 -8.3959913 -1.3259991 --12.966137 -3.0893056 -0.47759184 --34.692619 -8.0419035 -1.3375292 --0 -0 -0 --0 -0 -0 --39.785458 -8.4539833 -1.5328468 --39.868877 -8.216361 -1.5341194 --39.933239 -7.9745111 -1.5346978 --18.898798 -3.6533611 -0.70603436 --40.108635 -7.4989281 -1.5378599 --18.708172 -3.3788943 -0.69685656 --18.718708 -3.2623236 -0.69647098 --28.002573 -4.7036757 -1.0589943 --18.764238 -3.0334871 -0.69674093 --23.986126 -3.7269106 -0.89996374 --28.440207 -4.2404985 -1.0728767 --28.467669 -4.0661955 -1.0729538 --24.192242 -3.304112 -0.90547818 --28.543169 -3.7201638 -1.0740336 --27.684875 -3.4356639 -1.0397904 --27.712381 -3.266547 -1.0400603 --28.195673 -3.1482351 -1.0580689 --28.605001 -3.0163579 -1.0732238 --0 -0 -0 --25.877863 -2.4080448 -0.96617508 --25.905094 -2.2503405 -0.96667641 --30.170414 -2.4345055 -1.1312984 --30.65712 -2.2845418 -1.1495769 --30.831066 -2.1073632 -1.1557854 --32.212749 -2.003324 -1.2087314 --35.306301 -1.9783573 -1.3278501 --39.003445 -1.9455712 -1.4702604 --0 -0 -0 --0 -0 -0 --0 -0 -0 --37.87191 2.7999074 -1.9066927 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --37.362038 4.1496253 -1.8870642 --0 0 -0 --0 0 -0 --0 0 -0 --37.155926 5.0526333 -1.8822592 --0 0 -0 --0 0 -0 --37.028996 5.7314186 -1.880828 --0 0 -0 --0 0 -0 --0 0 -0 --37.695934 6.7858419 -1.9234076 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --38.337566 9.11133 -1.9798906 --0 0 -0 --38.230618 9.5830479 -1.9802995 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --38.183426 13.143114 -2.029882 --37.232323 13.071774 -1.982702 --36.905071 13.211782 -1.9693096 --35.471416 12.944585 -1.8956517 --35.213474 13.095841 -1.8859396 --34.845753 13.203018 -1.8702471 --34.895454 13.467284 -1.8774544 --34.830753 13.688452 -1.8784767 --33.281101 13.315709 -1.7977136 --32.471779 13.223584 -1.7575366 --32.145542 13.321252 -1.7439909 --31.588358 13.318026 -1.7176151 --30.953508 13.274615 -1.6868434 --30.424757 13.269444 -1.6618989 --30.222258 13.402431 -1.6551515 --29.908203 13.483356 -1.6421682 --28.980562 13.279676 -1.5946304 --28.410563 13.229991 -1.5670789 --28.074282 13.283603 -1.5526643 --27.902239 13.412343 -1.5475527 --27.122126 13.242799 -1.5078356 --26.644003 13.212401 -1.4851913 --26.415258 13.301519 -1.4767572 --25.849421 13.216013 -1.4489502 --25.579929 13.27683 -1.4381136 --25.128658 13.238939 -1.4167472 --24.78187 13.25112 -1.4013612 --24.440275 13.26193 -1.3862309 --24.106491 13.272906 -1.3715097 --23.726421 13.253988 -1.354028 --23.320566 13.215647 -1.3349618 --23.020853 13.233058 -1.3220806 --22.774439 13.27798 -1.3123175 --22.486223 13.295471 -1.3000497 --22.209793 13.316607 -1.2884463 --22.185694 13.487914 -1.2919222 --22.311649 13.752711 -1.3044968 --22.037138 13.770796 -1.2930468 --21.980066 13.923391 -1.2947336 --21.948004 14.092532 -1.298005 --21.86363 14.228572 -1.2981584 --21.770912 14.359158 -1.2978517 --21.72142 14.518556 -1.3002541 --21.758434 14.737257 -1.3080748 --21.747469 14.925306 -1.3130331 --21.729273 15.109783 -1.3176335 --20.530741 14.463984 -1.2484226 --20.443232 14.590847 -1.2485249 --21.838352 15.789835 -1.3423225 --27.311508 20.003803 -1.6957375 --20.200071 14.986092 -1.250365 --29.417582 22.106215 -1.8464271 --29.286949 22.290537 -1.8467849 --28.898102 22.275921 -1.83053 --28.70656 22.41041 -1.8270031 --28.493303 22.526667 -1.822096 --28.260216 22.625546 -1.8159109 --28.089827 22.773363 -1.8138663 --27.869287 22.879383 -1.8085502 --27.657724 22.99122 -1.8038476 --27.375549 23.042154 -1.7944423 --27.093794 23.090494 -1.7850369 --26.882044 23.196278 -1.7803342 --26.672274 23.302305 -1.775785 --26.459225 23.403986 -1.7710311 --26.274948 23.529917 -1.768271 --21.745722 19.715378 -1.4653584 --25.848114 23.725639 -1.7588145 --25.652304 23.837564 -1.7553387 --25.405905 23.900761 -1.7483357 --14.910282 14.199741 -1.0168678 --24.690121 23.805206 -1.718433 --24.515005 23.928349 -1.7163883 --14.602343 14.428263 -1.0136986 --14.454936 14.458964 -1.0094559 --23.795343 24.096966 -1.6963509 --23.574518 24.168165 -1.6910349 --23.378662 24.263454 -1.687559 --14.04135 14.7522 -1.0054178 --22.964916 24.427004 -1.6790227 --22.676651 24.418892 -1.6686461 --22.41028 24.430984 -1.6598542 --22.216368 24.519924 -1.6565317 --21.986246 24.567217 -1.6504489 --21.773581 24.632069 -1.6456951 --21.56292 24.697496 -1.6410947 --21.31706 24.720425 -1.633734 --21.09893 24.773205 -1.6285201 --20.884815 24.828827 -1.623613 --20.698254 24.915791 -1.620904 --20.500011 24.987503 -1.6172746 --20.32053 25.081001 -1.6151789 --15.752859 19.688633 -1.2535853 --19.923925 25.217981 -1.6079715 --19.728273 25.287788 -1.6045979 --19.490467 25.301552 -1.5976973 --17.285381 22.725903 -1.4244145 --19.001007 25.302435 -1.582567 --18.785324 25.337517 -1.5774043 --18.580547 25.385414 -1.5731617 --18.398115 25.462517 -1.5708615 --18.21254 25.534271 -1.5683057 --18.025627 25.603077 -1.5656477 --17.792967 25.604939 -1.5589004 --17.550234 25.589266 -1.5511819 --17.358185 25.645191 -1.5480127 --17.12784 25.642422 -1.5413165 --16.893787 25.631124 -1.5342114 --16.68611 25.657274 -1.5295087 --16.475513 25.676802 -1.5244994 --16.262104 25.68965 -1.5191834 --8.9158115 14.276649 -0.8245188 --15.782746 25.622818 -1.5032864 --15.603971 25.684181 -1.5011905 --8.6776905 14.482033 -0.82712573 --8.5891752 14.535865 -0.82717681 --8.3872156 14.394995 -0.81572688 --14.72174 25.628979 -1.475786 --8.4052925 14.841846 -0.83601987 --14.330193 25.671669 -1.4678119 --14.144966 25.709238 -1.4648983 --13.97029 25.764816 -1.4631093 --12.40435 23.215397 -1.3102217 --12.233293 23.237164 -1.3071036 --12.058299 23.249729 -1.3035256 --11.892698 23.278811 -1.3009697 --12.983074 25.802959 -1.4414362 --9.779912 19.73698 -1.0904235 --12.600212 25.826597 -1.4338199 --12.397406 25.8116 -1.428606 --12.207638 25.821272 -1.4248745 --12.019483 25.832306 -1.4212965 --11.837889 25.855625 -1.418485 --11.65113 25.865854 -1.4150093 --11.459838 25.86381 -1.4109199 --11.266219 25.853987 -1.4064729 --11.057421 25.806044 -1.3999811 --10.866694 25.797012 -1.3957385 --10.691394 25.822603 -1.3934895 --10.492857 25.78966 -1.3880712 --10.295499 25.756184 -1.382704 --10.102233 25.729628 -1.3777969 --9.9183035 25.724037 -1.3741165 --9.7330561 25.71249 -1.3701806 --9.5444994 25.689342 -1.3656824 --9.3548841 25.66016 -1.3609287 --9.168005 25.635265 -1.3564816 --8.9943438 25.644857 -1.3539768 --8.8225336 25.658009 -1.3517278 --8.6509018 25.670017 -1.3494787 --8.4788284 25.678991 -1.3471273 --8.3063574 25.684921 -1.3446738 --8.1314201 25.681133 -1.3417602 --7.9630494 25.696201 -1.33992 --7.7930627 25.704435 -1.3377732 --7.6210041 25.703894 -1.3352174 --7.4478559 25.697414 -1.332406 --7.2688174 25.667679 -1.328419 --7.1002736 25.672331 -1.3263232 --6.9397545 25.704807 -1.325761 --3.7727721 14.320971 -0.72100919 --6.6141067 25.750309 -1.3237674 --3.6338458 14.514419 -0.72882992 --3.5383325 14.510244 -0.72744977 --3.4047337 14.344141 -0.71758443 --3.4026768 14.737464 -0.73716176 --5.7716994 25.720848 -1.3122152 --5.6127076 25.750898 -1.3119596 --5.4496379 25.761402 -1.3107328 --4.037406 19.679802 -0.99125874 --3.9228055 19.73555 -0.99289441 --3.7995615 19.748461 -0.99233216 --3.654942 19.645725 -0.98578936 --4.6686783 25.982306 -1.3141576 --4.5118947 26.026207 -1.3149755 --4.359354 26.096743 -1.3172246 --4.1999378 26.127932 -1.3174802 --4.0387788 26.148273 -1.3172246 --3.877528 26.167624 -1.316969 --3.7159116 26.184002 -1.3166112 --3.5547769 26.203341 -1.3164579 --3.395467 26.236544 -1.3170712 --3.2357612 26.267788 -1.3176335 --3.0763798 26.303019 -1.3184514 --2.9188855 26.357134 -1.3202915 --2.7627108 26.428185 -1.3230518 --2.6040154 26.480419 -1.3248919 --2.4424016 26.505844 -1.3254031 --2.2791204 26.513367 -1.3250453 --2.1165533 26.528843 -1.3251475 --1.9561535 26.574198 -1.3268343 --1.7942693 26.603636 -1.3277545 --1.632708 26.642056 -1.3291857 --1.4731594 26.72337 -1.3328661 --1.3137481 26.82567 -1.3376709 --1.1531793 26.928017 -1.3425269 --0.99034357 27.000454 -1.3459005 --0.82574904 27.04196 -1.3477408 --0.66070676 27.083458 -1.349632 --0.49571368 27.152905 -1.3530056 --0.3298811 27.220345 -1.3563282 --0.16325143 27.288769 -1.359753 -0.0042033577 27.345182 -1.3626155 -0.17326128 27.545376 -1.3728898 -0.34321958 27.619688 -1.3767745 -0.51452363 27.715916 -1.381835 -0.68734258 27.824057 -1.38756 -0.8593806 27.86224 -1.389758 -1.035978 28.009136 -1.3975787 -1.2135488 28.134954 -1.4043771 -1.3870935 28.145931 -1.4053483 -1.5614824 28.167803 -1.406933 -1.7287582 28.06798 -1.4023325 -1.9162817 28.283028 -1.4139358 -2.1106339 28.552597 -1.4284016 -2.2931287 28.630695 -1.4331043 -2.4760602 28.700661 -1.4374491 -2.666559 28.841055 -1.4454743 -1.9473773 19.744205 -0.97847974 -3.0505989 29.095196 -1.460349 -2.201432 19.826019 -0.98400027 -2.3401458 19.957947 -0.99151433 -2.428889 19.670645 -0.97745746 -3.7949433 29.252232 -1.4727701 -3.9765139 29.244228 -1.473588 -4.1610827 29.255861 -1.4754792 -4.3501997 29.294977 -1.478853 -4.5437722 29.357544 -1.4835045 -4.7304926 29.370523 -1.4856514 -4.916224 29.374434 -1.4873893 -5.1273084 29.521812 -1.4966413 -5.3508258 29.725689 -1.5089091 -5.5629463 29.852327 -1.517241 -5.7860832 30.025528 -1.5280775 -2.9330425 14.736255 -0.73205018 -2.9371638 14.298311 -0.71012151 -3.0701814 14.493982 -0.72131586 -3.158844 14.473895 -0.72126478 -3.3016891 14.694914 -0.73389035 -7.155046 30.950109 -1.5889053 -3.3882363 14.259783 -0.71318847 -7.6146231 31.188868 -1.6062337 -7.8398504 31.27718 -1.6133898 -3.46031 13.457022 -0.67418706 -3.5346644 13.404635 -0.67255133 -8.632391 31.934509 -1.6561738 -8.8574953 31.986813 -1.6617966 -4.0840421 14.406684 -0.72944331 -4.0972099 14.122392 -0.71564204 -4.1727014 14.059648 -0.7136485 -4.2458372 13.990776 -0.7113483 -4.3203568 13.928215 -0.7094059 -4.4968805 14.188948 -0.72484285 -4.480185 13.840894 -0.70761681 -4.5634594 13.808402 -0.70736122 -4.6394801 13.754592 -0.70598114 -4.7228141 13.723033 -0.70582777 -4.8195009 13.729603 -0.70777017 -4.9225049 13.752426 -0.71063262 -5.0201488 13.758552 -0.71262616 -5.1295419 13.794886 -0.71630651 -5.2516007 13.862144 -0.72172481 -5.4448004 14.110102 -0.73711067 -5.6397753 14.352483 -0.7522921 -5.6739373 14.183161 -0.74488026 -5.7310977 14.07501 -0.7408421 -5.8238525 14.055264 -0.74171108 -5.8820472 13.953008 -0.73803073 -5.9840841 13.955203 -0.74017763 -6.0604153 13.897168 -0.73900193 -6.1609583 13.894412 -0.74094439 -6.2777042 13.926451 -0.74488026 -6.3871689 13.940328 -0.74784499 -6.4945097 13.947951 -0.750503 -6.6218333 13.996306 -0.75551236 -6.7958603 14.13903 -0.76594001 -14.837479 30.387814 -1.6938462 -14.74367 29.73164 -1.6615921 -14.757821 29.307018 -1.6424748 -14.723677 28.797993 -1.6184504 -14.81636 28.545786 -1.6091473 -14.950733 28.377468 -1.6047002 -15.062878 28.16983 -1.598004 -15.176373 27.968031 -1.5916656 -15.27881 27.749285 -1.5843561 -15.394722 27.558237 -1.5786822 -15.538905 27.419815 -1.5761265 -15.693916 27.301443 -1.5747974 -15.851078 27.187378 -1.5737751 -16.006924 27.071552 -1.5727017 -16.170675 26.9694 -1.5724971 -16.355568 26.902098 -1.5744396 -16.511419 26.786783 -1.5735706 -16.701933 26.727312 -1.5761265 -16.927078 26.721348 -1.5820048 -17.115002 26.654797 -1.5843049 -17.331619 26.631308 -1.5893143 -17.555187 26.616165 -1.5949371 -17.777002 26.595957 -1.6003554 -17.969542 26.530201 -1.6030644 -18.177767 26.486137 -1.6072049 -13.854783 19.924635 -1.2051275 -13.98368 19.849045 -1.2057409 -18.966244 26.572996 -1.6339896 -14.177049 19.607969 -1.2014471 -19.402445 26.490522 -1.6436504 -19.720531 26.581108 -1.6570429 -19.916859 26.504313 -1.6599053 -20.189199 26.526237 -1.6692084 -20.512552 26.610672 -1.682703 -20.770092 26.605536 -1.6905749 -20.823315 26.338928 -1.6815274 -21.199259 26.478844 -1.6991112 -21.481464 26.496437 -1.7088743 -21.736795 26.477596 -1.7163883 -21.927578 26.378283 -1.7186886 -22.321836 26.519823 -1.7371925 -22.542442 26.450768 -1.7417929 -22.804796 26.428389 -1.7496648 -12.964895 14.840658 -0.97163022 -12.877053 14.55886 -0.95782894 -12.904845 14.411131 -0.95312631 -12.943386 14.276928 -0.94934374 -13.005756 14.170018 -0.94745243 -13.092457 14.08995 -0.94745243 -13.128024 13.955524 -0.94366986 -13.243024 13.905806 -0.94586784 -13.341963 13.838665 -0.94689018 -13.455924 13.786555 -0.94903702 -13.555005 13.718649 -0.95011044 -13.756882 13.753128 -0.95864683 -13.889334 13.716174 -0.96212268 -14.721766 14.36079 -1.015641 -14.754947 14.217526 -1.0117562 -14.802117 14.088857 -1.0089449 -14.760221 13.877376 -0.99994844 -14.853874 13.794702 -1.0005618 -14.900702 13.668872 -0.99795491 -14.981332 13.574504 -0.99775046 -15.074017 13.490982 -0.99841493 -15.163995 13.40485 -0.9989261 -15.303889 13.362126 -1.002862 -15.490722 13.358624 -1.0099671 -15.611935 13.296994 -1.0126252 -15.815516 13.303805 -1.0208037 -15.993646 13.286918 -1.0272443 -0 0 -0 -0 0 -0 -18.170286 14.538146 -1.1540627 -18.260715 14.42762 -1.154165 -25.553154 19.935284 -1.621824 -25.726421 19.81773 -1.6251465 -25.760096 19.593 -1.6195238 -25.948511 19.486143 -1.6239197 -26.021858 19.292658 -1.6210061 -26.148611 19.139116 -1.6215684 -29.166847 21.074495 -1.8047676 -0 0 -0 -0 0 -0 -20.912912 14.532721 -1.2664665 -29.490765 20.225836 -1.7933177 -0 0 -0 -29.745882 19.868517 -1.79388 -0 0 -0 -0 0 -0 -19.275091 12.368203 -1.135201 -30.456581 19.279419 -1.8079368 -30.599716 19.108047 -1.8094703 -24.179783 14.893965 -1.4165426 -20.076406 12.197365 -1.1653594 -20.221121 12.116035 -1.1695509 -19.995857 11.814951 -1.1517625 -20.033459 11.671927 -1.1497179 -19.966137 11.4692 -1.1415393 -19.990944 11.320886 -1.1388813 -19.997244 11.162965 -1.135201 -19.96036 10.982288 -1.1290671 -20.022102 10.856751 -1.1287603 -19.990566 10.681456 -1.1230866 -19.077438 10.043626 -1.0665013 -20.089996 10.419704 -1.1213486 -20.082401 10.259893 -1.1172594 -20.161928 10.145005 -1.1182306 -0 0 -0 -20.757034 10.127141 -1.1451175 -20.893503 10.035473 -1.1493601 -21.401619 10.11836 -1.1746625 -21.875299 10.17853 -1.1979202 -22.179794 10.155107 -1.2115681 -22.569502 10.16647 -1.2299699 -22.692635 10.054897 -1.2333946 -23.019415 10.031157 -1.2482182 -25.663755 10.99646 -1.3920583 -25.718779 10.833744 -1.3913937 -25.602066 10.600096 -1.3812728 -25.22999 10.265176 -1.357146 -0 0 -0 -0 0 -0 -26.134979 10.076729 -1.3966587 -26.201921 9.9182987 -1.3969653 -27.194723 10.103728 -1.4478767 -27.757257 10.119318 -1.4751726 -0 0 -0 -0 0 -0 -34.81525 11.970821 -1.8473471 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -36.530758 8.9062271 -1.8875242 -0 0 -0 -0 0 -0 -0 0 -0 -36.030876 7.8528714 -1.8504653 -0 0 -0 -0 0 -0 -36.133072 7.1811285 -1.8485739 -36.16861 6.9577761 -1.848165 -0 0 -0 -0 0 -0 -35.700138 6.1885242 -1.8174955 -0 0 -0 -35.478565 5.7025843 -1.8022119 -0 0 -0 -0 0 -0 -35.299671 5.0091548 -1.7878484 -35.355473 4.7959552 -1.7891773 -35.381264 4.5785437 -1.789024 -35.41761 4.3624606 -1.789484 -0 0 -0 -35.931042 3.978709 -1.8133041 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -35.956539 2.8683083 -1.8092147 -35.894775 2.6418407 -1.8051766 -35.994011 2.4271863 -1.8094703 -35.984303 2.2048204 -1.8082435 -36.031059 1.9858508 -1.8099815 -36.033588 1.7642918 -1.8095214 -17.133806 0.73417145 -0.84077364 -17.137989 0.62902659 -0.84077364 -18.617907 0.56887686 -0.91637397 -18.614058 0.45445862 -0.91601616 -18.597525 0.33989081 -0.91504496 -18.595264 0.22572392 -0.91484052 -18.3706 0.11028069 -0.9032883 -18.279051 -0.0024232266 -0.89858568 -17.741405 -0.11117904 -0.87108535 -17.917145 -0.22224009 -0.88013285 -18.008307 -0.33390126 -0.88488662 -17.962988 -0.44332954 -0.88268864 -17.98189 -0.55421829 -0.8838132 -17.97316 -0.6643579 -0.88355762 -17.953779 -0.77398044 -0.88279086 -17.87388 -0.88043827 -0.87895721 -17.950907 -0.99468523 -0.88319981 -17.920542 -1.1033367 -0.88197303 -17.695223 -1.1984806 -0.87077862 -18.325954 -1.3542525 -0.90354389 -18.307344 -1.4658751 -0.90303278 -18.330839 -1.5810133 -0.90471959 -0 -0 -0 -17.293335 -1.7055018 -0.85242808 -17.306383 -1.81408 -0.8536548 -27.430222 -3.0462334 -1.3755989 -27.426884 -3.2163467 -1.3764168 -27.410597 -3.3850641 -1.3766212 -27.402185 -3.5548594 -1.3772857 -25.398718 -3.4534619 -1.2749518 -27.393082 -3.8960636 -1.379177 -27.38249 -4.0661254 -1.3798926 -27.366896 -4.2355924 -1.3804038 -27.485331 -4.4267826 -1.3879178 -31.09816 -5.204783 -1.5768421 -15.373507 -2.6694827 -0.76164627 -15.094407 -2.7165127 -0.74799836 -14.982222 -2.7913287 -0.74304008 -13.433047 -2.5879655 -0.66319716 -13.288606 -2.6447918 -0.65650094 -13.116586 -2.694315 -0.64837354 -13.120323 -2.7790937 -0.64944696 -13.058142 -2.8497472 -0.64709562 -12.914715 -2.9015651 -0.64050168 -12.905425 -2.9827783 -0.64096171 -12.76154 -3.0321164 -0.63436776 -12.806728 -3.1259983 -0.63774145 -12.698184 -3.1821775 -0.63303876 -11.009988 -2.8308659 -0.54486394 -12.752813 -3.3627269 -0.63804811 -12.72037 -3.4377856 -0.63743472 -12.710587 -3.5189705 -0.63804811 -12.70605 -3.601799 -0.63896823 -7.9101691 -2.2943764 -0.38456458 -7.9103031 -2.3471324 -0.3853313 -7.9043531 -2.3982358 -0.38579136 -7.865643 -2.439292 -0.38451347 -7.9047918 -2.5047114 -0.38742706 -7.9120774 -2.5605502 -0.38865384 -7.9180264 -2.6162591 -0.38982952 -25.249105 -8.5176544 -1.3268855 -25.197311 -8.6727448 -1.3269366 -25.170948 -8.8367844 -1.328419 -25.073002 -8.9755793 -1.3260676 -27.075788 -9.8804741 -1.4382159 -10.954924 -4.0732636 -0.561221 -10.997898 -4.1662388 -0.56495243 -7.1698499 -2.766084 -0.3563486 -7.1276464 -2.8001618 -0.35496849 -7.122385 -2.8486667 -0.35563299 -26.487511 -10.78636 -1.4268169 -26.366394 -10.926122 -1.4238012 -26.174625 -11.035315 -1.4169005 -9.0649776 -3.8866782 -0.4678323 -9.0409594 -3.9422269 -0.4678323 -8.9983406 -3.9895291 -0.46680999 -24.494764 -11.042613 -1.3382332 -5.6276159 -2.577692 -0.27982816 -5.5827231 -2.5986819 -0.27819246 -5.3346725 -2.5231044 -0.26505569 -24.205587 -11.635226 -1.3376198 -23.234529 -11.344434 -1.2864017 -23.142117 -11.475692 -1.2851238 -3.8163455 -1.9206208 -0.18168572 -5.3036723 -2.7105634 -0.26786706 -3.8137624 -1.9783512 -0.1829125 -3.7856476 -1.993335 -0.18199241 -3.8032885 -2.0325382 -0.18373035 -3.7898679 -2.0553601 -0.18367924 -3.7859333 -2.0833929 -0.18419039 -4.4662056 -2.4938154 -0.2248275 -4.5029511 -2.5507181 -0.22789446 -4.5071292 -2.5897479 -0.22907013 -3.629272 -2.1148078 -0.17800538 -3.6807005 -2.1751618 -0.18183906 -3.63902 -2.1807566 -0.18015224 -3.6213038 -2.2004499 -0.17989667 -3.7701106 -2.322726 -0.18965979 -3.7811949 -2.3616934 -0.19119327 -3.765789 -2.3843155 -0.19114216 -3.7805004 -2.426264 -0.19293121 -3.7772603 -2.457042 -0.19364683 -5.0526242 -3.3314211 -0.27277419 -3.4105635 -2.2784319 -0.1729449 -3.346081 -2.2651503 -0.16982684 -3.354351 -2.3008981 -0.17120697 -3.7124124 -2.5803056 -0.19441357 -3.6907952 -2.5990093 -0.19405575 -4.9168258 -3.5081742 -0.2721608 -4.8757849 -3.5242326 -0.27093402 -17.650635 -12.927366 -1.0828072 -17.73941 -13.160392 -1.0935416 -3.9638124 -2.9773953 -0.2167512 -3.1833727 -2.4215853 -0.16773109 -3.1470985 -2.4246094 -0.16635096 -3.1353111 -2.4463325 -0.16655542 -3.1453106 -2.4853451 -0.16819113 -3.1518304 -2.5220749 -0.16962238 -5.3813148 -4.3615985 -0.31755167 -5.3251195 -4.3704543 -0.31560928 -15.863201 -13.186062 -1.0188102 -15.46721 -13.018175 -0.99775046 -15.307992 -13.045462 -0.99243438 -4.9417987 -4.2629776 -0.29705423 -14.816592 -12.943868 -0.96999454 -4.9137979 -4.3451357 -0.29874104 -3.6550581 -3.2718549 -0.21409318 -3.4521706 -3.128526 -0.20146756 -3.4012733 -3.120609 -0.19926958 -3.8546512 -3.5806065 -0.23229042 -2.7633631 -2.5982244 -0.1571501 -2.7401371 -2.6082432 -0.15663895 -2.7190492 -2.6201549 -0.15628113 -2.7100675 -2.6437654 -0.1567923 -4.2551756 -4.2032866 -0.26914495 -4.2187138 -4.2187219 -0.26837823 -3.5626254 -3.6063733 -0.22247617 -2.6910908 -2.7573781 -0.16021706 -2.6838222 -2.7839072 -0.16093268 -2.6852794 -2.819855 -0.16231281 -3.3581281 -3.5704737 -0.2138887 -3.3599417 -3.6166258 -0.21567777 -7.6824017 -8.3739796 -0.54465944 -7.6167936 -8.4054174 -0.54358602 -7.5850554 -8.4743214 -0.54511946 -11.642211 -13.169809 -0.86270231 -4.0808992 -4.6726975 -0.2805438 -7.49822 -8.6941872 -0.55063999 -10.935498 -12.838995 -0.82620561 -3.9704137 -4.7187428 -0.27865252 -3.3919485 -4.0815759 -0.23464175 -3.3674738 -4.1030841 -0.23469287 -3.2460489 -4.0049415 -0.22687215 -2.9961901 -3.7432618 -0.20841931 -2.7218137 -3.4434125 -0.18766627 -10.335429 -13.247096 -0.82298529 -10.259438 -13.317385 -0.82344538 -10.164834 -13.363392 -0.8223719 -9.7852087 -13.0294 -0.79701847 -9.7288675 -13.121286 -0.79906309 -9.6782551 -13.221836 -0.80167001 -9.618001 -13.310114 -0.80351019 -9.5396299 -13.373757 -0.80381685 -3.001893 -4.2621136 -0.22983687 -2.9357934 -4.2230425 -0.22625875 -2.9216876 -4.2582726 -0.22733217 -1.4742577 -2.1761827 -0.097549006 -2.8880711 -4.3220425 -0.22907013 -2.8323698 -4.2954865 -0.22636098 -1.445385 -2.2205324 -0.098622441 -1.4365865 -2.2369242 -0.099082485 -1.4324484 -2.2608862 -0.10000257 -1.4100858 -2.2560792 -0.099184714 -1.394645 -2.2621379 -0.099031366 -1.3791829 -2.2680919 -0.098878019 -1.3816646 -2.3039265 -0.10051373 -1.3832499 -2.339016 -0.10209832 -1.3568069 -2.3267488 -0.10087154 -1.3703594 -2.3835268 -0.10373403 -1.5274456 -2.6951873 -0.12157346 -7.4014263 -13.258048 -0.74017763 -7.2616897 -13.197335 -0.73399258 -7.1220274 -13.133656 -0.72770536 -7.0375419 -13.170061 -0.72729641 -1.1281859 -2.1407192 -0.086865798 -6.7264318 -12.968183 -0.7107349 -6.6244726 -12.965631 -0.7082302 -6.5286336 -12.973917 -0.70639002 -6.4914675 -13.099641 -0.71129715 -1.1031483 -2.2586918 -0.091670685 -1.3279262 -2.7623591 -0.11988664 -6.1404076 -12.98667 -0.69826263 -6.0627136 -13.02863 -0.69851822 -5.9843202 -13.069218 -0.69872266 -1.3495524 -2.9935362 -0.13108101 -1.2640066 -2.8501871 -0.12259578 -5.6805129 -13.034328 -0.69074857 -5.5996418 -13.067101 -0.69064635 -5.5065656 -13.070842 -0.68895954 -5.3720164 -12.973353 -0.68170106 -5.290431 -13.001446 -0.68144548 -1.2664723 -3.1655707 -0.13752161 -5.1432581 -13.097925 -0.68323457 -5.0997958 -13.225217 -0.68849951 -1.2143533 -3.2051587 -0.1384417 -1.194664 -3.2125494 -0.1384417 -4.7874351 -13.130126 -0.67832744 -4.6896305 -13.111295 -0.67572051 -1.1789535 -3.3583951 -0.14518899 -1.1641692 -3.3825657 -0.14610907 -4.4392085 -13.170787 -0.67439151 -1.0186279 -3.0817454 -0.12913862 -4.2664943 -13.191012 -0.67260247 -4.1444817 -13.087455 -0.66565067 -4.0437059 -13.046816 -0.66212368 -0.97890592 -3.2252841 -0.13552809 -0.96392292 -3.2475073 -0.13639706 -0.94592422 -3.2600753 -0.13675487 -0.92100561 -3.2485216 -0.13583478 -3.613646 -13.063646 -0.65675652 -3.5508587 -13.150174 -0.66018128 -3.4652715 -13.153364 -0.65921009 -0.86857927 -3.3775165 -0.14150865 -0.87378341 -3.4864452 -0.14697805 -0.85923374 -3.5198791 -0.1484604 -3.1109934 -13.106178 -0.65246278 -0.82226342 -3.5574052 -0.14989164 -0.72259015 -3.2154725 -0.13169441 -1.828351 -8.384716 -0.40225065 -1.7940208 -8.4768744 -0.40649328 -1.717896 -8.3703232 -0.40035936 -1.6602757 -8.3493614 -0.39872366 -1.6193883 -8.413331 -0.40153503 -1.543813 -8.294486 -0.39483887 -0.5660224 -3.1442549 -0.12653171 -0.54654843 -3.1466849 -0.12648059 -2.2495885 -13.463464 -0.66166365 -2.1640837 -13.459265 -0.66074359 -2.0907552 -13.532496 -0.66386163 -2.008121 -13.548034 -0.664015 -1.9328097 -13.615473 -0.66687745 -1.8415804 -13.570667 -0.66396385 -1.7655814 -13.638166 -0.66687745 -1.6828424 -13.656672 -0.6672864 -1.5972754 -13.651862 -0.66651964 -1.5113913 -13.642546 -0.66554844 -1.425474 -13.630704 -0.66447502 -1.3396616 -13.617328 -0.66335046 -1.2464647 -13.520871 -0.6579833 -1.1586058 -13.471548 -0.65506971 -1.0760829 -13.480394 -0.65517193 -0.99693888 -13.535547 -0.65767664 -0.91561371 -13.567317 -0.65900564 -0.83173853 -13.562712 -0.65849447 -0.75157958 -13.623402 -0.66135699 -0.66001815 -13.465164 -0.65302509 -0.57981813 -13.525834 -0.65593868 -0.49696049 -13.53313 -0.65614313 -0.41464394 -13.559881 -0.65736991 -0.33029157 -13.515245 -0.65496749 -0.049341578 -2.6450548 -0.098417982 -0.033183254 -2.6512995 -0.098724678 -0.082632691 -13.715775 -0.66503727 --0.0015296314 -13.728008 -0.66565067 --0.085579678 -13.698778 -0.66416836 --0.170068 -13.732947 -0.66595739 --0.25221062 -13.617814 -0.6601302 --0.33709726 -13.669923 -0.66289043 --0.41979644 -13.629664 -0.66094804 --0.5040468 -13.643799 -0.66181701 --0.5881418 -13.649428 -0.66227704 --0.67808115 -13.771246 -0.66871762 --0.77556711 -14.001158 -0.68072987 --0.86355084 -14.030027 -0.68246782 --0.958538 -14.15599 -0.68921512 --1.0447901 -14.141874 -0.68880618 --1.1135943 -13.911209 -0.6773051 --1.2085495 -14.015553 -0.68303007 --1.2955364 -14.018813 -0.68359238 --1.3988907 -14.186514 -0.69263989 --1.491537 -14.231299 -0.69540012 --1.587101 -14.296323 -0.69923383 --1.6796789 -14.327975 -0.70138067 --1.7685417 -14.325328 -0.70178962 --1.8557643 -14.309256 -0.70153403 --1.947298 -14.325307 -0.70296526 --2.0545721 -14.449534 -0.71001923 --2.1500905 -14.483086 -0.71242172 --2.2545013 -14.570288 -0.71763551 --2.3397305 -14.530544 -0.71630651 --2.4304931 -14.525764 -0.71681768 --2.5161572 -14.490898 -0.71579534 --2.6080327 -14.491896 -0.71666431 --2.7234383 -14.617979 -0.72407615 --2.8172395 -14.622568 -0.72520065 --2.8770697 -14.455148 -0.71737993 --2.9886284 -14.548743 -0.72320718 --3.042232 -14.362087 -0.71441525 --3.241497 -14.85247 -0.74109769 --3.3347592 -14.842046 -0.74160886 --3.4451137 -14.904984 -0.74600482 --3.5323472 -14.866076 -0.74508476 --3.6324995 -14.880989 -0.74702716 --3.6890113 -14.719893 -0.7397176 --3.7725439 -14.670867 -0.73833746 --3.8688598 -14.671584 -0.73961532 --3.9788795 -14.721804 -0.74355125 --4.0875282 -14.763522 -0.74707824 --4.1864843 -14.767949 -0.74866283 --4.2878757 -14.779388 -0.75065637 --4.3770585 -14.748013 -0.75040078 --4.4738503 -14.741903 -0.75152534 --4.5659962 -14.719897 -0.75183201 --4.7105536 -14.862964 -0.76103288 --4.7444425 -14.657057 -0.75152534 --4.9051285 -14.841968 -0.7630775 --5.0436759 -14.952588 -0.77069378 --5.1226506 -14.884531 -0.76870024 --5.1367941 -14.633264 -0.75679028 --5.1736336 -14.453851 -0.74876511 --5.2694139 -14.441535 -0.74983853 --5.4216371 -14.580227 -0.75919271 --5.5768199 -14.72039 -0.76870024 --5.9745021 -15.4825 -0.81240433 --6.0880198 -15.492953 -0.81501126 --6.1647882 -15.409872 -0.81250656 --6.2607322 -15.375456 -0.812711 --6.3522801 -15.330293 -0.81235319 --6.5835838 -15.61679 -0.83044821 --6.9170513 -16.130472 -0.86132222 --7.0003242 -16.052025 -0.85932869 --6.9921994 -15.768668 -0.84588522 --7.0576258 -15.656275 -0.84200042 --7.1252656 -15.550939 -0.83852452 --7.2015772 -15.466187 -0.83622432 --7.2984762 -15.426221 -0.8364799 --1.6427835 -3.4199102 -0.15720122 --1.6615456 -3.4052787 -0.15694565 --1.6779716 -3.3860726 -0.15643448 --1.6955721 -3.3694692 -0.15607667 --1.7148509 -3.3563342 -0.15592332 --1.7450751 -3.3643632 -0.15699676 --1.7740653 -3.3694961 -0.15791684 --4.5003343 -8.4180307 -0.45157745 --4.6543164 -8.5789785 -0.46256739 --9.3829746 -17.042236 -0.95874906 --4.65452 -8.3337679 -0.45157745 --4.6981812 -8.2920189 -0.45081073 --9.7413673 -16.947161 -0.96350282 --9.8678074 -16.925892 -0.96580303 --9.9445353 -16.819466 -0.96309388 --10.102506 -16.849775 -0.96856326 --10.228014 -16.824165 -0.97076124 --10.630297 -17.246519 -0.99994844 --10.84548 -17.356279 -1.0105294 --10.995063 -17.35774 -1.0146698 --10.601124 -16.510946 -0.96728539 --10.813913 -16.617178 -0.97776413 --11.723476 -17.775164 -1.0528533 --11.848972 -17.727802 -1.0543869 --11.952484 -17.647324 -1.0539268 --12.094451 -17.623056 -1.0569937 --12.207488 -17.555893 -1.0574538 --12.287369 -17.441473 -1.0550002 --12.348899 -17.302347 -1.0510131 --12.43318 -17.196306 -1.0491219 --12.507772 -17.077799 -1.0464638 --12.798584 -17.25177 -1.0624632 --12.922198 -17.196865 -1.0639966 --13.069814 -17.17288 -1.0675747 --13.235303 -17.170666 -1.0726352 --14.002316 -17.936943 -1.127687 --14.150514 -17.89926 -1.1308562 --14.288164 -17.847178 -1.1331564 --14.480427 -17.86157 -1.1399037 --14.600524 -17.785505 -1.1407726 --14.58233 -17.542757 -1.1306006 --14.678119 -17.439199 -1.1296805 --15.115233 -17.736448 -1.1557496 --15.991733 -18.533289 -1.2159129 --16.277966 -18.63261 -1.2293564 --15.822266 -17.888329 -1.1853456 --15.837784 -17.686012 -1.1781384 --16.775146 -18.502954 -1.2413175 --16.030664 -17.465311 -1.1764004 --15.214964 -16.37389 -1.1070361 --17.046503 -18.120489 -1.2363592 --17.217291 -18.078468 -1.2408063 --16.652712 -17.272251 -1.1910195 --16.678852 -17.088276 -1.1851923 --16.760927 -16.962883 -1.1835566 --16.955809 -16.9508 -1.1901505 --17.109953 -16.896263 -1.1937798 --16.190952 -15.793789 -1.1206841 --16.282522 -15.689295 -1.1203263 --17.240818 -16.409781 -1.1812564 --17.348459 -16.310524 -1.1817676 --16.218006 -15.061416 -1.0958418 --16.144518 -14.809731 -1.0843407 --14.402562 -13.050145 -0.95777786 --18.520473 -16.575144 -1.2351325 --16.757097 -14.812977 -1.1077517 --17.931782 -15.656325 -1.1814097 --18.056252 -15.570786 -1.1833521 --10.188469 -8.6782532 -0.64801574 --18.116804 -15.239396 -1.1747136 --17.924191 -14.890559 -1.1556984 --10.337215 -8.4816456 -0.64740235 --10.367335 -8.4004555 -0.64597106 --18.068127 -14.456416 -1.1473665 --18.152571 -14.342185 -1.1471109 --10.587923 -8.2610312 -0.65036702 --17.549463 -13.519276 -1.0968641 --17.620163 -13.402271 -1.0960974 --17.795504 -13.364066 -1.102078 --17.942152 -13.302799 -1.1062183 --18.049229 -13.211332 -1.107854 --18.171238 -13.130164 -1.1104609 --18.344965 -13.085108 -1.1163392 --19.534708 -13.753581 -1.1858057 --19.516212 -13.562225 -1.1794162 --19.448338 -13.338858 -1.1700621 --19.533953 -13.222073 -1.1703176 --19.248468 -12.857351 -1.1477755 --19.400377 -12.787365 -1.1522737 --19.764809 -12.854287 -1.1697553 --18.417719 -11.818117 -1.0830628 --19.950598 -12.629469 -1.1715443 --20.175114 -12.598853 -1.1804385 --19.498632 -12.010793 -1.1351498 --23.618608 -14.349179 -1.3774902 --19.702812 -11.805512 -1.1386257 --22.281315 -13.165204 -1.2876285 --21.153557 -12.324446 -1.2160662 --22.437731 -12.888798 -1.2874241 --21.935869 -12.422168 -1.2532786 --22.427645 -12.519514 -1.2776608 --22.540792 -12.401883 -1.2798078 --16.22933 -8.800416 -0.90793985 --22.268473 -11.898447 -1.2552722 --16.666618 -8.7745771 -0.92705721 --6.8676977 -3.5628054 -0.35900664 --6.896544 -3.5242336 -0.35941556 --6.9126859 -3.4791577 -0.35910887 --6.9177957 -3.4286962 -0.35818878 --6.9207516 -3.3774276 -0.35716647 --6.9179382 -3.3236578 -0.35583746 --6.9228525 -3.2738917 -0.35496849 --6.9491487 -3.2343011 -0.35532629 --6.9843001 -3.198668 -0.35619527 --7.0374875 -3.1709278 -0.35808656 --7.0230269 -3.1127191 -0.35619527 --25.843914 -11.26183 -1.4059106 --26.082357 -11.175803 -1.415367 --26.237877 -11.052382 -1.420223 --26.565414 -10.998906 -1.4346377 --26.834993 -10.918114 -1.4458321 --22.058779 -8.8177185 -1.178905 --27.472668 -10.786519 -1.4736391 --28.039667 -10.811019 -1.5011394 --22.378935 -8.4713535 -1.1877481 --22.413641 -8.3276196 -1.186828 --28.176678 -10.272204 -1.4980214 --22.791559 -8.1511402 -1.2019072 --28.421242 -9.9679623 -1.5045642 --28.599922 -9.8339729 -1.5109537 --28.749634 -9.6885977 -1.5158097 --28.847424 -9.524847 -1.5179055 --27.867649 -9.0121346 -1.4620869 --27.844347 -8.8162556 -1.4578954 --27.865484 -8.63519 -1.4561574 --27.869202 -8.4492731 -1.4535506 --27.918606 -8.277544 -1.4534483 --27.96887 -8.1060829 -1.4534483 --12.533863 -3.5500789 -0.62976736 --13.06846 -3.6149771 -0.6570121 --30.151623 -8.1400919 -1.5615072 --12.783478 -3.3678582 -0.6396327 --12.799065 -3.2881148 -0.63937712 --12.771528 -3.197638 -0.63687247 --12.590059 -3.0702529 -0.62629145 --13.091603 -3.1075349 -0.65169609 --31.265734 -7.217484 -1.6053647 --31.258759 -7.0141368 -1.6027067 --31.317795 -6.8258195 -1.6035756 --31.343456 -6.6302223 -1.6027578 --18.370798 -3.7689366 -0.92286569 --18.469004 -3.6711321 -0.92680162 --19.005077 -3.6565809 -0.95358634 --32.05835 -5.96347 -1.631996 --18.729057 -3.3656955 -0.93697369 --18.751324 -3.251054 -0.93707591 --26.672998 -4.4555888 -1.3471273 --26.546013 -4.2671232 -1.3391533 --19.089281 -2.9487877 -0.95164394 --26.519321 -3.9296267 -1.3351662 --26.507336 -3.7617831 -1.3333261 --24.237928 -3.2882349 -1.2149417 --26.47821 -3.4267321 -1.3295435 --26.484861 -3.2624915 -1.3288279 --23.800364 -2.783783 -1.189486 --26.556652 -2.9409719 -1.3305658 --26.82848 -2.8045382 -1.3436515 --26.736847 -2.6292205 -1.3380798 --25.89921 -2.3865294 -1.2942225 --26.016848 -2.2364609 -1.2995385 --26.998734 -2.154022 -1.3492743 --27.207655 -2.0027549 -1.359344 --29.910795 -2.0171738 -1.497408 --32.725681 -2.0052648 -1.6411458 --0 -0 -0 --0 -0 -0 --38.362576 -1.6423633 -1.9283147 --38.40287 -1.4080775 -1.9298993 --38.502625 -1.1752158 -1.9346019 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --38.329044 0.24154732 -1.9248388 --0 0 -0 --38.402077 0.71335316 -1.928877 --38.301132 0.94659877 -1.9239699 --0 0 -0 --38.380444 1.4200151 -1.9287747 --38.273228 1.6512647 -1.9237654 --0 0 -0 --37.744522 2.0927651 -1.8978497 --37.86454 2.3325541 -1.9046992 --37.660198 2.5520079 -1.8949871 --31.019409 -0.7847842 -1.9204605 --31.033619 -0.59462923 -1.9210901 --31.025705 -0.40405625 -1.9203975 --31.061533 -0.21391261 -1.9225383 --31.054276 -0.023312513 -1.9220346 --31.041859 0.16716903 -1.9212791 --31.009312 0.35727912 -1.9193271 --0 0 -0 --30.94173 0.73633659 -1.9154863 --30.912689 0.92546117 -1.9139751 --0 0 -0 --30.856127 1.3029277 -1.9112676 --30.815653 1.4906902 -1.9092528 --30.763075 1.6774075 -1.9065453 --0 0 -0 --30.420525 2.0334289 -1.8863336 --30.459234 2.2238257 -1.8896078 --30.473867 2.4129624 -1.8914337 --30.446556 2.5988827 -1.8906782 --30.36941 2.7801013 -1.8868374 --30.380585 2.969207 -1.8886633 --30.866072 3.2079666 -1.9206494 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --30.436649 4.1105289 -1.9005007 --30.110443 4.2547617 -1.8813595 --30.043289 4.4334626 -1.8787779 --30.009602 4.6168108 -1.8784001 --29.974794 4.7999125 -1.8780223 --29.928043 4.9809589 -1.8769519 --29.882166 5.161952 -1.8760074 --29.83814 5.3430977 -1.8752518 --29.797926 5.524807 -1.8748111 --29.778168 5.7103586 -1.8757555 --29.758232 5.89607 -1.876763 --29.746918 6.0837507 -1.8784001 --29.858437 6.2976713 -1.8880336 --29.95772 6.5108566 -1.8969747 --29.982458 6.7091517 -1.9011933 --30.078835 6.9247875 -1.9101343 --30.108618 7.1264567 -1.9148567 --30.302883 7.3690753 -1.9303459 --30.268717 7.5577731 -1.9311016 --30.378393 7.7834826 -1.9413018 --30.344542 7.9735389 -1.9422463 --30.508982 8.2171974 -1.9562244 --30.408922 8.3907042 -1.9530133 --30.59889 8.6455116 -1.9688803 --30.630594 8.8577738 -1.9744842 --30.551743 9.038475 -1.97291 --30.68294 9.2824068 -1.9852512 --30.713125 9.4976244 -1.9910439 --30.775129 9.7240839 -1.9990405 --30.730082 9.9176378 -2.0000479 --30.82505 10.157542 -2.010437 --30.994848 10.424754 -2.0259264 --30.900091 10.604373 -2.0239115 --30.971972 10.841913 -2.0331044 --30.94058 11.044498 -2.035497 --30.969767 11.269629 -2.0420454 --31.092798 11.53093 -2.055016 --0 0 -0 --31.043028 11.947823 -2.0613756 --31.03046 12.16211 -2.0655313 --0 0 -0 --30.94915 12.570528 -2.0703166 --0 0 -0 --0 0 -0 --30.583145 13.082727 -2.0614386 --30.046543 13.071865 -2.030082 --29.634459 13.109424 -2.0072258 --29.010067 13.046638 -1.969636 --28.414812 12.989141 -1.9339349 --28.013262 13.013979 -1.9115825 --27.788479 13.117457 -1.9015081 --27.384407 13.132792 -1.8789037 --27.01889 13.162024 -1.8589439 --26.63706 13.178862 -1.8377879 --26.311342 13.219293 -1.8205355 --25.955915 13.240809 -1.8011423 --25.7572 13.339241 -1.7928311 --25.205784 13.250449 -1.7593968 --25.277218 13.486603 -1.7703526 --24.462923 13.245619 -1.717903 --23.984076 13.177298 -1.6893171 --23.765907 13.247924 -1.6794316 --23.400965 13.23335 -1.6589051 --23.179081 13.296241 -1.6487048 --22.801174 13.266069 -1.6271079 --22.534544 13.296684 -1.6135705 --22.252131 13.314795 -1.5988368 --22.251926 13.500778 -1.6048814 --22.212023 13.663727 -1.6080925 --22.151476 13.814548 -1.6098555 --22.062077 13.947539 -1.6095408 --22.002972 14.099878 -1.6115556 --21.953705 14.259083 -1.6143891 --21.939159 14.441808 -1.6199299 --21.953083 14.644827 -1.6277375 --21.920689 14.818377 -1.632145 --21.822765 14.94809 -1.6316414 --21.794588 15.126094 -1.6365526 --20.555138 14.453583 -1.5481502 --20.465252 14.578856 -1.5480872 --21.832146 15.755385 -1.6614237 --24.223858 17.708384 -1.8559216 --24.095495 17.842432 -1.8544105 --23.985561 17.989943 -1.8544105 --23.869959 18.133154 -1.8540328 --23.740053 18.26528 -1.8525845 --23.606277 18.394039 -1.8508844 --23.489052 18.535448 -1.8505696 --23.340572 18.651812 -1.8477992 --23.191551 18.767054 -1.8450288 --23.07519 18.908367 -1.8449658 --22.946447 19.039402 -1.8439584 --22.836069 19.185617 -1.8445251 --22.612253 19.235493 -1.835773 --22.239716 19.155041 -1.8146168 --22.033756 19.214396 -1.8072499 --21.746363 19.199951 -1.7930199 --21.518019 19.234587 -1.7837012 --21.407732 19.373623 -1.7843938 --21.348061 19.559223 -1.7894939 --21.266426 19.725815 -1.7928311 --14.965987 14.053778 -1.2580718 --21.363451 20.30917 -1.8224874 --21.370029 20.566517 -1.8340099 --21.206261 20.661037 -1.8307358 --14.593845 14.394403 -1.2560569 --14.468523 14.44701 -1.2527827 --21.014688 21.242275 -1.8479881 --20.89023 21.377243 -1.8485548 --20.768372 21.515072 -1.8494363 --20.54299 21.544592 -1.8409361 --13.951496 14.812834 -1.2466122 --20.476242 22.009153 -1.8593848 --20.346888 22.140991 -1.8599514 --20.156988 22.206305 -1.8549142 --19.909756 22.206217 -1.844462 --19.724825 22.273422 -1.8398657 --19.536533 22.335438 -1.8349544 --19.33844 22.384657 -1.8290987 --19.174814 22.472527 -1.8265802 --19.023058 22.573732 -1.8252579 --18.88036 22.685429 -1.82488 --18.739542 22.799307 -1.8247541 --18.588602 22.900688 -1.8236837 --15.763615 19.665855 -1.5529355 --18.134596 22.910315 -1.8062425 --17.919312 22.926012 -1.7986238 --17.733179 22.977066 -1.7939644 --17.295452 22.696482 -1.7631117 --17.345474 23.054184 -1.7830086 --17.195953 23.149765 -1.78219 --17.042372 23.239552 -1.7809937 --16.879557 23.316198 -1.7788528 --16.712381 23.38604 -1.7762713 --16.507593 23.401699 -1.7695971 --16.311226 23.427195 -1.7638043 --16.135519 23.480776 -1.7602782 --15.919437 23.473616 -1.7522188 --15.728478 23.501184 -1.7469298 --15.539981 23.530626 -1.7418926 --15.332646 23.529379 -1.7346517 --15.137788 23.544945 -1.7287959 --8.9950495 14.181514 -1.022332 --14.772012 23.607952 -1.719792 --14.611676 23.673519 -1.717966 --14.442789 23.724367 -1.7151326 --8.689517 14.473289 -1.0278728 --8.5995302 14.524616 -1.0277469 --13.892447 23.795719 -1.7012174 --13.73622 23.863214 -1.6999581 --13.583137 23.935764 -1.6991396 --13.416524 23.98382 -1.6966209 --13.249352 24.029858 -1.6940393 --13.098799 24.10544 -1.6936616 --12.423446 23.20085 -1.6232041 --12.24965 23.217503 -1.6189854 --12.071056 23.223156 -1.6140742 --11.915598 23.271912 -1.6123112 --11.812127 23.423004 -1.6178521 --9.7988224 19.731041 -1.3527077 --11.828073 24.188404 -1.6615496 --11.66428 24.229052 -1.6593459 --11.493597 24.254171 -1.6561346 --11.318827 24.269064 -1.6522938 --11.130569 24.252796 -1.6463751 --10.976619 24.309721 -1.6456195 --10.79565 24.305471 -1.6407083 --10.633127 24.341074 -1.6386305 --10.454424 24.338003 -1.6339711 --10.291302 24.369513 -1.6317673 --10.113647 24.364912 -1.6271709 --9.9417162 24.371988 -1.623456 --9.7693367 24.376022 -1.6196151 --9.5903368 24.361216 -1.6145779 --9.4230433 24.373989 -1.6114926 --9.2570181 24.38843 -1.6085963 --9.0810661 24.374628 -1.603874 --8.9148865 24.384899 -1.6008517 --8.7465639 24.387472 -1.5973886 --8.5795393 24.391724 -1.5941144 --8.4147453 24.400509 -1.591218 --8.2370644 24.369425 -1.5857401 --8.0669851 24.357927 -1.5816474 --7.9025936 24.361401 -1.5786251 --7.7351403 24.353312 -1.5749102 --7.5612698 24.322166 -1.5697471 --7.4037571 24.34137 -1.5679841 --7.2411714 24.342337 -1.5650877 --7.0802469 24.347017 -1.5625061 --6.9138083 24.330482 -1.5586023 --6.7571826 24.346483 -1.5569023 --3.8365011 14.160343 -0.88840598 --6.4405584 24.361959 -1.5526206 --6.283978 24.37396 -1.5508577 --3.6379607 14.478286 -0.90465087 --3.5462074 14.488703 -0.90389532 --5.8280225 24.459286 -1.5491576 --5.6726499 24.472223 -1.5477095 --3.341449 14.828998 -0.92184025 --5.3682823 24.52342 -1.546639 --4.1375375 19.472731 -1.2187818 --5.0639162 24.572788 -1.5456946 --3.9354012 19.707989 -1.2307451 --3.8136435 19.727846 -1.2304932 --4.6186409 24.70402 -1.5484021 --4.4616508 24.702429 -1.5465131 --4.316165 24.764736 -1.5487798 --4.1664448 24.804533 -1.5496613 --4.0149655 24.834557 -1.5499761 --3.8617415 24.853792 -1.5496613 --3.7097576 24.880968 -1.5499132 --3.5561743 24.897335 -1.5495354 --3.4045558 24.927586 -1.5501021 --3.2524419 24.954935 -1.5505428 --3.1027019 25.002153 -1.5523058 --2.9521542 25.0455 -1.55388 --2.8016343 25.091906 -1.5557059 --2.648458 25.116564 -1.5562097 --2.4940987 25.130356 -1.5560837 --2.3404098 25.151148 -1.5564616 --2.1894102 25.203812 -1.5589172 --2.0388157 25.267504 -1.5621283 --1.8863351 25.314373 -1.5643321 --1.7330157 25.355341 -1.566221 --1.5796361 25.401358 -1.5684878 --1.4265389 25.460394 -1.571636 --1.271036 25.48362 -1.5725805 --1.1155198 25.51088 -1.5738398 --0.96076679 25.565115 -1.5768621 --0.80551565 25.6224 -1.5801363 --0.64969862 25.682732 -1.5836623 --0.49378374 25.774044 -1.5892031 --0.3363564 25.832472 -1.5927292 --0.17808601 25.86898 -1.5949329 --0.019387871 25.914495 -1.5977664 -0.13986748 25.960035 -1.6006627 -0.29994512 26.027548 -1.6050073 -0.46075082 26.088081 -1.6089741 -0.62226319 26.145626 -1.6128149 -0.78473783 26.210148 -1.6171595 -0.94957441 26.316544 -1.6242115 -1.1148622 26.400961 -1.6299413 -1.2815107 26.490318 -1.6360489 -1.4479939 26.554703 -1.6406454 -1.6151943 26.616047 -1.6451159 -1.7868621 26.731106 -1.6530493 -1.9567329 26.800262 -1.6581495 -2.1322451 26.928034 -1.6670276 -2.3028638 26.978085 -1.6710572 -2.4725394 27.009165 -1.6739537 -1.9133424 19.575638 -1.2037332 -2.820612 27.138594 -1.6842169 -2.1835735 19.82448 -1.2211115 -3.1763825 27.299212 -1.6967468 -3.3535407 27.358458 -1.701784 -3.5565324 27.610561 -1.7191623 -3.7338941 27.64756 -1.7229402 -3.9126813 27.68935 -1.7270958 -4.0944524 27.745783 -1.732259 -4.2834363 27.842453 -1.7400666 -4.4747062 27.943756 -1.748252 -4.6767187 28.099871 -1.7600265 -4.8583913 28.124735 -1.7634895 -5.034564 28.115026 -1.7648118 -5.2337232 28.227856 -1.7740675 -2.8603587 14.915033 -0.92095876 -2.8276901 14.27065 -0.88066131 -5.8180056 28.447449 -1.7947199 -3.0528531 14.473149 -0.8960247 -3.1390579 14.442442 -0.89526916 -6.3589497 28.417349 -1.800009 -3.4185963 14.848273 -0.92410696 -6.7106433 28.351744 -1.8009535 -3.4611845 14.232078 -0.88689482 -7.0483871 28.228527 -1.7984349 -3.4490588 13.46054 -0.83948237 -3.5206804 13.397617 -0.83677489 -3.6087897 13.397927 -0.8382231 -3.9569099 14.339522 -0.90131372 -3.9970639 14.14594 -0.89023197 -4.0624394 14.047325 -0.88538367 -4.1230755 13.936003 -0.87971687 -4.1848116 13.832109 -0.87455374 -4.2625289 13.783289 -0.87304258 -4.3352947 13.719761 -0.87058699 -4.4190893 13.691952 -0.87052399 -4.506454 13.675006 -0.8712166 -4.5855055 13.632908 -0.87027216 -4.6710129 13.610179 -0.87064993 -4.7564135 13.586914 -0.87102771 -4.8631773 13.623269 -0.87543523 -4.9572554 13.622246 -0.87738717 -5.073019 13.678596 -0.88324285 -5.1850734 13.721899 -0.88828003 -5.3000002 13.769928 -0.893695 -5.4929166 14.01405 -0.91245848 -5.6046925 14.044968 -0.916866 -5.6918921 14.013088 -0.91705489 -5.7670937 13.952074 -0.91529191 -5.8491116 13.908145 -0.91472524 -5.9264898 13.853642 -0.91346592 -6.0157623 13.827084 -0.91415852 -6.1093726 13.809991 -0.91554374 -6.2075019 13.802281 -0.91762161 -6.3107452 13.804779 -0.92045504 -6.4197183 13.818294 -0.92410696 -6.5631757 13.903191 -0.93279612 -6.6768427 13.922051 -0.93695176 -6.8552346 14.07193 -0.95036322 -12.889429 26.05204 -1.7966089 -13.056207 25.986731 -1.7976164 -13.231285 25.937244 -1.7998201 -13.40533 25.884817 -1.801898 -13.575048 25.823278 -1.8034091 -13.753912 25.77824 -1.8061795 -13.925131 25.717936 -1.8079425 -14.096127 25.6565 -1.8097056 -14.263491 25.587831 -1.8110279 -14.426613 25.511124 -1.8118464 -14.601248 25.454155 -1.8141761 -14.78225 25.407217 -1.8173243 -14.955112 25.345261 -1.819465 -15.127256 25.281282 -1.821543 -15.290378 25.201639 -1.8225504 -15.444201 25.106495 -1.8224874 -15.613804 25.036663 -1.8243763 -15.770331 24.94545 -1.8247541 -15.935482 24.867542 -1.8262023 -16.095921 24.781851 -1.8271468 -16.255358 24.694292 -1.8280283 -16.41765 24.610691 -1.8292876 -13.624529 20.154581 -1.4976525 -16.691917 24.368668 -1.8263283 -16.830885 24.251032 -1.8251948 -13.932926 19.814663 -1.4910412 -14.215796 19.955587 -1.5086083 -17.175716 23.80035 -1.8145539 -14.268196 19.517784 -1.4881448 -17.446297 23.560516 -1.8124131 -17.592329 23.45542 -1.8126019 -17.730484 23.33988 -1.8120352 -17.872145 23.229067 -1.8119093 -18.010046 23.113457 -1.8114686 -18.155237 23.007215 -1.8118464 -18.307903 22.910198 -1.8130426 -18.436832 22.783466 -1.8119093 -18.568691 22.660648 -1.8111538 -18.704199 22.542446 -1.8108389 -18.852436 22.43948 -1.8118464 -18.958727 22.286894 -1.8088241 -19.052135 22.120235 -1.8046684 -12.96013 14.861593 -1.2068814 -12.881319 14.589516 -1.1906996 -12.926033 14.460349 -1.1864809 -12.938846 14.297145 -1.1793659 -12.99464 14.182899 -1.1764065 -13.069204 14.089727 -1.1752732 -13.149262 14.002724 -1.1747065 -13.271378 13.960114 -1.1780436 -13.370626 13.892801 -1.1793029 -13.512728 13.869117 -1.184466 -13.617196 13.805839 -1.186229 -13.755948 13.776405 -1.1910774 -13.901236 13.752105 -1.1964923 -14.936108 14.595668 -1.2803613 -14.974402 14.454534 -1.2758908 -15.010085 14.312103 -1.2712944 -14.827363 13.965181 -1.2478715 -14.899621 13.861703 -1.2467381 -14.981455 13.767319 -1.2464863 -15.008008 13.622813 -1.241575 -15.05416 13.497157 -1.2384268 -15.132957 13.401224 -1.238112 -15.347111 13.423763 -1.2491938 -15.451845 13.348916 -1.2510827 -15.664043 13.365277 -1.2619126 -15.893809 13.393682 -1.2741277 -16.187408 13.472116 -1.2915061 -22.695223 18.65399 -1.8162539 -22.841799 18.5408 -1.8188984 -22.963697 18.407164 -1.819591 -18.219847 14.421765 -1.4288321 -23.237391 18.162697 -1.8235579 -23.36578 18.033188 -1.8249431 -23.481546 17.893715 -1.8253838 -23.590099 17.748697 -1.8253208 -23.698561 17.603617 -1.8253208 -23.801298 17.454332 -1.8249431 -23.899864 17.302109 -1.8243134 -23.990963 17.144691 -1.82318 -21.14596 14.916345 -1.5954367 -20.863605 14.52627 -1.5667248 -21.322479 14.652337 -1.5950589 -24.351627 16.51491 -1.8191503 -24.511389 16.404591 -1.8236208 -24.704023 16.314934 -1.8306098 -23.430714 15.268351 -1.7272218 -19.271187 12.389968 -1.4082426 -23.447762 14.872754 -1.7146288 -23.541117 14.730189 -1.7148178 -23.596235 14.563974 -1.7122362 -23.650204 14.397638 -1.7096547 -20.026358 12.023664 -1.4365138 -20.041359 11.865983 -1.4322321 -20.04915 11.705048 -1.4275098 -19.938955 11.477249 -1.4142872 -21.175573 12.016722 -1.4989117 -20.039103 11.209778 -1.4114538 -20.052446 11.05625 -1.407487 -20.066418 10.903934 -1.4036462 -20.022089 10.721241 -1.3957126 -20.034536 10.570242 -1.3919348 -19.170099 9.9642572 -1.3258847 -20.086344 10.284473 -1.3865198 -20.151743 10.162381 -1.3867086 -20.261988 10.062512 -1.3901087 -20.812868 10.177382 -1.4244875 -20.977436 10.098837 -1.4316654 -21.259964 10.074644 -1.4470918 -21.723871 10.13173 -1.4751111 -21.967039 10.081504 -1.487704 -23.126352 10.442269 -1.5637025 -22.424749 9.9602642 -1.5108751 -22.8284 9.9723053 -1.5344869 -29.589602 12.710349 -1.9945699 -29.633936 12.514574 -1.9923033 -29.713854 12.334038 -1.992555 -25.522474 10.411037 -1.7018471 -25.584949 10.253867 -1.701784 -25.62324 10.087182 -1.700147 -25.72747 9.9463263 -1.7030433 -25.872923 9.820508 -1.7087731 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -29.346014 9.7190514 -1.9131566 -29.331049 9.5147839 -1.9082453 -29.336563 9.3180151 -1.9047823 -29.306461 9.1108723 -1.8990525 -29.311207 8.9154863 -1.8957154 -29.227612 8.6944895 -1.8866484 -29.07629 8.4556255 -1.873237 -29.214985 8.3018837 -1.8789667 -29.201904 8.1048508 -1.8748111 -0 0 -0 -28.928658 7.6479316 -1.8506327 -29.039789 7.486979 -1.8548512 -28.979679 7.2821403 -1.8479881 -28.927845 7.0806952 -1.8417546 -28.919292 6.8908029 -1.8384175 -0 0 -0 -28.819613 6.4943705 -1.8266431 -28.729254 6.2890277 -1.8182688 -0 0 -0 -28.732912 5.9212961 -1.8136723 -28.691385 5.7294421 -1.8086982 -28.693665 5.5470357 -1.8066202 -28.732067 5.3717875 -1.8069351 -28.763504 5.1952124 -1.8068721 -28.824335 5.023766 -1.8087611 -28.872334 4.8497849 -1.8098944 -28.932091 4.6774745 -1.8118464 -28.952356 4.4986362 -1.8113426 -28.979414 4.3209033 -1.8113426 -28.978706 4.1391969 -1.8096426 -28.98477 3.9587429 -1.8084463 -0 0 -0 -29.269857 3.6323817 -1.8236208 -29.270781 3.450263 -1.8222985 -29.306278 3.2722576 -1.823243 -29.312902 3.0910151 -1.8224244 -29.33231 2.911195 -1.8224874 -29.348627 2.7310681 -1.8224244 -29.444372 2.5578477 -1.8274616 -29.416739 2.3736801 -1.8247541 -29.472549 2.1962533 -1.8273987 -29.539238 2.0190475 -1.8307987 -29.622789 1.8422213 -1.8353322 -29.624567 1.6599219 -1.8347656 -29.658117 1.4793113 -1.8362767 -29.692558 1.2984387 -1.8379138 -18.523102 0.69600946 -1.1322683 -18.525028 0.58227801 -1.1321423 -17.68021 0.44713339 -1.0786223 -17.693598 0.33885169 -1.0793149 -0 0 -0 -18.442921 0.12684907 -1.1264125 -17.778673 0.013175506 -1.084478 -17.708561 -0.09553732 -1.0800705 -17.532001 -0.20217182 -1.0689888 -17.518457 -0.30953103 -1.0682331 -17.540173 -0.417586 -1.0697443 -17.549252 -0.52556086 -1.0704999 -17.533728 -0.63279945 -1.0697443 -0 -0 -0 -17.650246 -0.85399199 -1.0776778 -17.664604 -0.96336228 -1.0789372 -17.910395 -1.087023 -1.0948672 -17.933262 -1.1988952 -1.0967562 -17.958414 -1.3113067 -1.098834 -17.976892 -1.4235995 -1.1005341 -17.851475 -1.5239472 -1.0931672 -26.214075 -2.3997653 -1.6235819 -26.213757 -2.5620227 -1.6245264 -25.874926 -2.6892929 -1.6040628 -25.23991 -2.7799475 -1.5648358 -25.202551 -2.9324577 -1.5635766 -16.218134 -1.9881479 -0.99368298 -15.58005 -2.007051 -0.95388925 -15.448757 -2.0865836 -0.94633353 -15.253835 -2.1556451 -0.93474799 -14.987565 -2.2119048 -0.91862905 -14.92735 -2.2966933 -0.91566968 -14.893268 -2.3850868 -0.91441041 -14.870477 -2.4751146 -0.91390669 -14.837307 -2.5632539 -0.91277331 -14.834071 -2.6565323 -0.91359186 -13.397559 -2.4842534 -0.82248193 -13.158587 -2.523561 -0.80812597 -13.15754 -2.6071625 -0.80907047 -13.40823 -2.7424355 -0.82625979 -12.970263 -2.7358887 -0.79912204 -12.913247 -2.8067315 -0.79654044 -12.873382 -2.8809006 -0.79509228 -12.80197 -2.9475217 -0.7916292 -12.726344 -3.0124562 -0.78791428 -12.707621 -3.0904868 -0.78791428 -12.662274 -3.1618736 -0.78621423 -11.004893 -2.8199122 -0.67955202 -12.654373 -3.3253906 -0.78829211 -12.946926 -3.4873247 -0.80875564 -12.732871 -3.5136099 -0.79616266 -12.628476 -3.5683355 -0.7907477 -7.9219561 -2.2911847 -0.48310214 -7.9048772 -2.3389003 -0.48291326 -7.9027958 -2.3911166 -0.48373181 -7.8813009 -2.4374983 -0.48329106 -7.8966494 -2.4954331 -0.48530591 -7.915381 -2.5548735 -0.48757264 -7.9109302 -2.6071413 -0.48832822 -13.952639 -4.6930385 -0.89155424 -13.879213 -4.7633367 -0.88859487 -13.835595 -4.8434625 -0.88765037 -13.534915 -4.8316398 -0.86951655 -0 -0 -0 -10.993011 -4.0770917 -0.70253414 -10.993927 -4.1543441 -0.70429718 -7.1643291 -2.7577324 -0.44714931 -7.1509895 -2.8030968 -0.44740117 -7.1299477 -2.8454423 -0.44714931 -0 -0 -0 -19.830132 -8.1966085 -1.316566 -19.528311 -8.212513 -1.2993766 -19.66474 -8.4122543 -1.3122214 -9.0380287 -3.9323344 -0.58466423 -9.01373 -3.9877167 -0.58466423 -19.717735 -8.8677578 -1.3268292 -19.587614 -8.9541388 -1.3216032 -5.5943904 -2.5993106 -0.35200962 -5.5530653 -2.6216598 -0.35024661 -5.4486856 -2.6133919 -0.34407607 -5.3509002 -2.6070025 -0.3383463 -5.3204904 -2.632705 -0.33733886 -5.3800387 -2.7033846 -0.34269086 -3.8528907 -1.9658453 -0.23571382 -3.8602531 -1.9995462 -0.23709904 -3.8549786 -2.0269096 -0.23760276 -3.8512745 -2.055223 -0.2382324 -20.283644 -10.982797 -1.4180651 -20.119656 -11.054187 -1.411139 -19.894537 -11.089966 -1.3998053 -19.595034 -11.081153 -1.3830568 -19.489447 -11.179824 -1.3803493 -19.364408 -11.266577 -1.3762565 -13.949396 -8.2311277 -0.98467898 -3.7894678 -2.2678545 -0.2414436 -6.8420897 -4.1515841 -0.46773878 -4.0512247 -2.4924951 -0.26291457 -3.8944323 -2.4291122 -0.25239947 -4.0144277 -2.5382891 -0.26247382 -3.4962802 -2.2408752 -0.22482093 -3.4975302 -2.2720709 -0.22595429 -3.4443429 -2.2676983 -0.22299495 -3.3498302 -2.2350676 -0.21688737 -3.267426 -2.2091897 -0.21166131 -3.2282844 -2.2117131 -0.20970939 -3.1998944 -2.2212374 -0.20857604 -3.18049 -2.2368116 -0.20813528 -3.157764 -2.2499151 -0.20744267 -3.6820805 -2.6576202 -0.2493142 -3.6294482 -2.6536593 -0.24648078 -3.6435757 -2.6984477 -0.24887344 -3.1662683 -2.375237 -0.2125428 -3.1413031 -2.3867719 -0.21172427 -3.130554 -2.4090445 -0.21203908 -3.635299 -2.8330584 -0.2535958 -3.6452687 -2.8769488 -0.25579956 -5.4121985 -4.3253646 -0.39992577 -15.161747 -12.269358 -1.193344 -15.111652 -12.383031 -1.1954219 -14.93093 -12.388853 -1.1868587 -14.726257 -12.372383 -1.1762806 -14.775496 -12.569205 -1.1866698 -14.702631 -12.663537 -1.1870476 -2.9536202 -2.5761452 -0.21008718 -4.9106412 -4.3360381 -0.37612513 -2.8972297 -2.5902481 -0.20800935 -3.5598547 -3.2220559 -0.26574799 -2.8424132 -2.6047065 -0.20605744 -3.4461436 -3.1969504 -0.25938854 -2.7498496 -2.5826883 -0.20083137 -2.7440774 -2.609139 -0.20171288 -2.7093198 -2.607934 -0.20007579 -2.6825442 -2.6140623 -0.19913132 -3.6413367 -3.5919952 -0.28551891 -2.6714509 -2.6679394 -0.20102027 -2.6248486 -2.6537731 -0.19831279 -2.6154914 -2.6769667 -0.19894244 -2.5851536 -2.6786036 -0.19768314 -3.3696554 -3.5344322 -0.2709111 -12.012933 -12.754668 -1.0682331 -11.640089 -12.511753 -1.0409695 -7.6962595 -8.3752508 -0.68043357 -7.5622177 -8.3314238 -0.6726889 -2.8905525 -3.2244711 -0.23602864 -2.8561563 -3.2257094 -0.23464341 -10.972216 -12.544418 -1.0142725 -10.788688 -12.488407 -1.0040091 -3.0942891 -3.6269662 -0.26360717 -3.3703918 -3.9999895 -0.29282281 -3.3898375 -4.073524 -0.29716736 -2.8159745 -3.4265668 -0.24263994 -10.279767 -12.664697 -0.99191993 -10.194374 -12.718189 -0.99116439 -9.9959764 -12.628691 -0.97894925 -9.7572718 -12.483773 -0.96245247 -3.1754084 -4.1149468 -0.29074496 -3.1609881 -4.1486416 -0.29187834 -9.5336342 -12.671625 -0.96327102 -9.4777222 -12.759527 -0.96560073 -9.2936068 -12.673383 -0.95433003 -9.2525406 -12.781097 -0.95829678 -9.1797457 -12.84575 -0.95892644 -9.0662355 -12.852902 -0.95514858 -2.9616885 -4.2543335 -0.28986347 -2.9824436 -4.3406954 -0.29508954 -2.9888039 -4.4076462 -0.29880446 -2.9739151 -4.444149 -0.30018967 -8.562109 -12.965064 -0.94305933 -8.4796705 -13.013175 -0.94274449 -2.8160453 -4.38061 -0.29137462 -2.7655919 -4.3607244 -0.28860417 -2.7472532 -4.3911481 -0.28961161 -2.7244515 -4.4147162 -0.29011533 -1.4092124 -2.3155289 -0.13383693 -2.6793184 -4.4632187 -0.29124868 -1.4056065 -2.3747275 -0.1369222 -1.3789322 -2.3626225 -0.13541104 -1.3763591 -2.3917978 -0.1369222 -1.3631351 -2.4028018 -0.13711108 -2.4870646 -4.4466262 -0.28425962 -6.9215946 -12.553836 -0.86724985 -6.8668323 -12.637284 -0.87020916 -6.7731433 -12.649266 -0.8680684 -6.631597 -12.569659 -0.85944223 -6.5888691 -12.676528 -0.86416459 -6.4663868 -12.629662 -0.85799402 -6.4027023 -12.696725 -0.85994595 -6.1977143 -12.480131 -0.84193802 -6.2073917 -12.694547 -0.85434204 -5.9423604 -12.343928 -0.82714128 -5.8271875 -12.297185 -0.82134855 -5.7414989 -12.311002 -0.81983739 -5.7141423 -12.451216 -0.82714128 -5.7004762 -12.625209 -0.83677489 -5.5690193 -12.538642 -0.82840061 -5.4851866 -12.557029 -0.82733023 -1.3223946 -3.079433 -0.17426027 -1.3030864 -3.0865698 -0.1741973 -5.2194524 -12.574752 -0.82178932 -5.174993 -12.686936 -0.82726723 -5.0710597 -12.653604 -0.8228597 -1.2529031 -3.183553 -0.1786678 -0.94543213 -2.4464872 -0.12829603 -0.93784058 -2.4718363 -0.12961829 -0.90802151 -2.4382653 -0.12697378 -0.89270079 -2.4428537 -0.12691081 -0.87836879 -2.4501641 -0.12703674 -0.85470796 -2.4310293 -0.12539965 -0 -0 -0 -4.3054667 -12.738357 -0.81114829 -4.2507582 -12.83559 -0.81587064 -4.1703811 -12.856685 -0.81555581 -1.0129812 -3.1904173 -0.17400841 -0.99605268 -3.2051501 -0.17457509 -0.97898144 -3.2197948 -0.17514177 -0.95892215 -3.2247844 -0.17507881 -0.93688756 -3.2229412 -0.17457509 -0.93100786 -3.2775893 -0.17778629 -3.5664458 -12.850797 -0.80422217 -3.4763041 -12.831017 -0.80151469 -3.3947029 -12.841493 -0.80082208 -0.86698586 -3.3641996 -0.18200493 -3.2242141 -12.831852 -0.79754788 -3.1411474 -12.833944 -0.79641455 -3.0671988 -12.873364 -0.79773682 -2.9856725 -12.881248 -0.79704416 -0.70874864 -3.146785 -0.16632672 -1.8919027 -8.6438122 -0.52106988 -1.8006595 -8.4756336 -0.50948435 -0.64627463 -3.1377933 -0.16494149 -0.62583661 -3.1358275 -0.1645637 -0.60544711 -3.1337295 -0.16418591 -2.4323885 -13.011301 -0.79792571 -1.4892639 -8.2469759 -0.49153942 -2.2747645 -13.052952 -0.7987442 -1.4420141 -8.5864716 -0.51212889 -2.1413343 -13.246387 -0.80938524 -2.054652 -13.22476 -0.80718148 -1.9717015 -13.225273 -0.80642593 -1.8947496 -13.266762 -0.80831486 -1.814121 -13.284071 -0.80869263 -0.50618529 -3.8864088 -0.21008718 -1.6399052 -13.216195 -0.80302584 -0.45646858 -3.8754783 -0.20901679 -0.43057606 -3.8593609 -0.20782046 -0.41002753 -3.8917055 -0.20970939 -1.2825379 -12.924726 -0.78224748 -1.2067237 -12.970113 -0.78464013 -1.124699 -12.949433 -0.78287715 -1.058629 -13.122219 -0.79339224 -0.98476875 -13.21804 -0.79905903 -0.90364581 -13.223834 -0.79905903 -0.82143557 -13.212196 -0.79798865 -0.7409659 -13.227949 -0.79868126 -0.65784729 -13.193372 -0.79622567 -0.57740521 -13.209126 -0.79698122 -0.4946574 -13.167541 -0.79414779 -0.41159454 -13.098506 -0.78961432 -0.33242807 -13.148674 -0.79263663 -0.25281447 -13.206346 -0.79616266 -0.17326014 -13.321412 -0.80334067 -0.091793664 -13.362144 -0.80585927 -0.0096776215 -13.197783 -0.79547006 --0.072535813 -13.427135 -0.80995196 --0.15262476 -13.226847 -0.79735899 --0.23407963 -13.242624 -0.79842943 --0.31571013 -13.256903 -0.79943687 --0.39659923 -13.239753 -0.79849237 --0.47390836 -13.128357 -0.7916292 --0.55845225 -13.219929 -0.79761088 --0.63700259 -13.163421 -0.79427373 --0.73150402 -13.411387 -0.81020379 --0.80924809 -13.331933 -0.80548143 --0.90135127 -13.481065 -0.81524098 --0.95273668 -13.046277 -0.78810322 --1.0697886 -13.50779 -0.81769663 --1.1434001 -13.392582 -0.81083345 --1.2246443 -13.375376 -0.81020379 --1.3063998 -13.36463 -0.8100149 --1.3924022 -13.395076 -0.81247056 --1.4937938 -13.560876 -0.82355231 --1.5971566 -13.724937 -0.83457112 --1.6844978 -13.740635 -0.83620822 --1.7729841 -13.762705 -0.83828604 --1.8907868 -13.998826 -0.85402727 --1.9737144 -13.966209 -0.852705 --2.068696 -14.017024 -0.85673475 --2.1596713 -14.036619 -0.85881257 --2.2459157 -14.024089 -0.85887551 --2.3281553 -13.987401 -0.85742736 --2.4195423 -14.005306 -0.85950518 --2.537622 -14.169974 -0.87102771 --2.62834 -14.174745 -0.87234998 --2.722595 -14.196576 -0.87480557 --2.8011184 -14.136528 -0.87203515 --2.8856061 -14.108319 -0.87134254 --2.9809749 -14.132339 -0.87405002 --3.0890393 -14.212282 -0.88040948 --3.1722636 -14.17553 -0.8792761 --3.3171721 -14.407696 -0.89558393 --3.4130988 -14.41912 -0.89766181 --3.4953775 -14.372693 -0.8960247 --3.5839844 -14.352911 -0.89615065 --3.6682692 -14.316149 -0.89520615 --3.7494483 -14.268274 -0.89356905 --3.8366666 -14.244036 -0.89350611 --3.9319577 -14.249088 -0.89539504 --4.0206709 -14.229496 -0.89570987 --4.1847 -14.470128 -0.91315109 --4.2728419 -14.442265 -0.9130252 --4.3605108 -14.41291 -0.91283625 --4.4559407 -14.408766 -0.91434741 --4.554791 -14.414461 -0.91655117 --4.6452966 -14.392891 -0.91699195 --4.7194672 -14.321462 -0.91415852 --4.811707 -14.305477 -0.91504002 --4.9081397 -14.301171 -0.91674012 --5.0043707 -14.295278 -0.91837716 --5.1228571 -14.350776 -0.9241699 --4.8733044 -13.391533 -0.86189783 --5.340219 -14.399119 -0.93172568 --5.4408159 -14.398758 -0.93392944 --5.6118693 -14.580259 -0.94847429 --5.6975846 -14.536259 -0.94784468 --5.8440003 -14.644702 -0.95760417 --5.9975924 -14.76576 -0.96830821 --6.0587268 -14.657662 -0.96345991 --6.1485505 -14.620211 -0.96345991 --6.2275448 -14.557433 -0.96175987 --6.6018133 -15.174206 -1.0068426 --6.396028 -14.458011 -0.96024871 --6.6602244 -14.808973 -0.98726058 --6.3169689 -13.818394 -0.92139947 --6.9945035 -15.055591 -1.0101798 --6.9589458 -14.741633 -0.99129033 --1.651041 -3.4419305 -0.20366478 --1.6655732 -3.4182768 -0.20272031 --1.6772224 -3.3892076 -0.20139806 --1.6935061 -3.3699346 -0.20076841 --1.7159659 -3.3630362 -0.20102027 --1.7328972 -3.3453541 -0.20051655 --1.7687157 -3.3638103 -0.20259438 --4.4892006 -8.4133015 -0.56445253 --4.6818686 -8.6462545 -0.58315307 --8.3289356 -15.159238 -1.0540661 --8.4198503 -15.104361 -1.0538143 --4.6898999 -8.292779 -0.56388587 --8.6393309 -15.060498 -1.0582218 --9.2806349 -15.950934 -1.1271052 --9.365654 -15.872201 -1.1255311 --9.2225389 -15.412775 -1.0960007 --9.5592079 -15.755221 -1.1254681 --9.6274633 -15.650368 -1.122068 --9.5865316 -15.371668 -1.1057601 --9.7275991 -15.386792 -1.1113011 --10.358132 -16.16375 -1.1740139 --9.9298201 -15.288022 -1.1129382 --10.473397 -15.910379 -1.1645691 --10.533163 -15.78936 -1.1602876 --10.61252 -15.6988 -1.1583357 --10.782528 -15.741251 -1.166584 --10.19836 -14.694184 -1.0912783 --11.030567 -15.686938 -1.1726916 --11.150353 -15.652288 -1.1752732 --11.256697 -15.598144 -1.1764065 --11.335114 -15.505415 -1.1745806 --11.111113 -15.004862 -1.1407685 --11.002967 -14.669735 -1.1197383 --11.086735 -14.593998 -1.1191087 --11.818112 -15.360202 -1.1855364 --11.919498 -15.296844 -1.1862921 --12.089176 -15.319787 -1.1940366 --12.885098 -16.124002 -1.2649978 --13.167107 -16.271179 -1.2833836 --13.220521 -16.133728 -1.2787871 --13.334561 -16.070738 -1.2802984 --13.447684 -16.006191 -1.2817465 --13.610954 -16.000154 -1.288106 --13.759675 -15.975323 -1.2930171 --12.464249 -14.292935 -1.1592802 --12.831119 -14.532657 -1.1859142 --12.750444 -14.26391 -1.1698582 --12.837727 -14.185407 -1.1698582 --12.893512 -14.072518 -1.1669618 --12.60973 -13.594354 -1.1326461 --12.690856 -13.514544 -1.1324571 --14.305559 -15.04801 -1.2727425 --14.410771 -14.973613 -1.2739389 --14.532323 -14.915647 -1.2766464 --14.629878 -14.832592 -1.2772131 --14.609198 -14.63096 -1.2672646 --15.227262 -15.06396 -1.3141733 --14.548526 -14.216906 -1.2461715 --13.768087 -13.290053 -1.1701101 --13.846485 -13.202569 -1.1698582 --13.929414 -13.119412 -1.1700472 --14.561316 -13.546952 -1.2175854 --14.552309 -13.372936 -1.2097149 --14.634089 -13.283393 -1.2097149 --14.678166 -13.160038 -1.2065667 --15.602164 -13.816754 -1.2776538 --15.682893 -13.717476 -1.277339 --10.123095 -8.745203 -0.8068037 --15.484114 -13.211746 -1.24699 --16.216625 -13.665728 -1.3007618 --16.39529 -13.645134 -1.3085694 --10.327724 -8.4884329 -0.80623704 --10.380389 -8.4255323 -0.80629998 --15.315971 -12.276753 -1.2012147 --15.455961 -12.233957 -1.2064407 --15.647111 -12.229854 -1.2157595 --15.75741 -12.161055 -1.2185929 --15.846021 -12.075028 -1.2197262 --15.730808 -11.835363 -1.2048036 --16.440054 -12.211746 -1.2548605 --16.280479 -11.938893 -1.2365378 --16.3316 -11.822971 -1.2348378 --16.389223 -11.712095 -1.2337044 --16.668737 -11.758011 -1.2497604 --16.897823 -11.765004 -1.2618496 --17.936157 -12.325253 -1.3358332 --18.007317 -12.212167 -1.3355184 --18.06864 -12.092565 -1.3345109 --18.103357 -11.95562 -1.3315516 --18.234068 -11.881911 -1.3358961 --18.327618 -11.783299 -1.3374703 --18.436655 -11.694142 -1.3402407 --18.508062 -11.580797 -1.3402407 --18.661152 -11.517863 -1.3463483 --18.768982 -11.425979 -1.3491187 --19.115107 -11.476536 -1.3694563 --19.559589 -11.580728 -1.396909 --19.661306 -11.478609 -1.3991756 --20.854067 -12.004027 -1.4809039 --20.997637 -11.915743 -1.486004 --21.160938 -11.837353 -1.4925523 --21.251526 -11.717409 -1.4938745 --21.287947 -11.56773 -1.491356 --21.089302 -11.292726 -1.4720888 --6.8216081 -3.5987892 -0.44941604 --16.375376 -8.5115471 -1.1271682 --16.451277 -8.4231901 -1.1288682 --7.1861067 -3.6236143 -0.47057217 --6.9489894 -3.4507153 -0.45231241 --6.956583 -3.4014356 -0.45136794 --6.9737263 -3.3569551 -0.45111609 --6.8670292 -3.253839 -0.44223806 --22.052197 -10.284863 -1.4979674 --22.133936 -10.158102 -1.4992895 --7.258666 -3.2772129 -0.46528316 --22.328979 -9.9177256 -1.5042638 --22.407705 -9.7885208 -1.5055231 --22.485683 -9.6587238 -1.5067824 --22.573946 -9.5329971 -1.5087973 --21.977568 -9.1226406 -1.4640923 --21.928709 -8.9450207 -1.4569772 --21.968359 -8.8043594 -1.4559698 --21.978323 -8.652215 -1.4530106 --21.978868 -8.4970417 -1.4494845 --21.977407 -8.3418341 -1.4458954 --22.047817 -8.2141438 -1.4472177 --22.108114 -8.0824757 -1.4479103 --22.228687 -7.9722781 -1.4526957 --22.63212 -7.9605861 -1.4764334 --22.843761 -7.8778596 -1.4873263 --24.032841 -8.1232901 -1.5633247 --24.101181 -7.9819498 -1.564584 --24.156349 -7.8360734 -1.5650247 --24.17544 -7.6786413 -1.5631357 --24.302153 -7.5550475 -1.5684248 --24.511326 -7.4554548 -1.5791918 --24.676184 -7.3404875 -1.5870624 --12.488862 -3.6316268 -0.78338087 --13.155073 -3.7379863 -0.82563019 --25.136005 -6.9763222 -1.6085963 --25.21109 -6.8308334 -1.6107371 --12.78553 -3.3799074 -0.7971701 --12.805062 -3.3011439 -0.79710716 --12.880248 -3.236376 -0.80069613 --12.489809 -3.0569081 -0.77406204 --25.74564 -6.1345491 -1.6325859 --13.141807 -3.0460742 -0.81391871 --25.866688 -5.8288999 -1.6356711 --25.937063 -5.6777587 -1.6379379 --18.313959 -3.8912992 -1.1440427 --26.093735 -5.3773756 -1.6436676 --19.149157 -3.8237989 -1.1947923 --26.274364 -5.0793037 -1.6511605 --26.450226 -4.9451389 -1.6604792 --18.7272 -3.3823311 -1.1634358 --18.720072 -3.2625611 -1.1616728 --26.343861 -4.4250326 -1.6481382 --26.328152 -4.2564569 -1.6454307 --18.340075 -2.8495445 -1.1337794 --19.213032 -2.8645749 -1.1883699 --24.258108 -3.4648607 -1.5087973 --24.241335 -3.310818 -1.5064045 --26.346375 -3.4338143 -1.6390712 --26.371899 -3.2727058 -1.6393861 --26.407343 -3.1126988 -1.6403935 --26.366432 -2.9439621 -1.6366156 --26.425686 -2.7865217 -1.6392601 --26.219824 -2.602242 -1.625156 --25.852715 -2.4057043 -1.6009146 --25.914715 -2.2511764 -1.6039369 --26.877062 -2.1687152 -1.6640053 --27.069008 -2.017112 -1.6753389 --28.151243 -1.9241574 -1.7430259 --30.880852 -1.9204763 -1.9148567 --30.994688 -1.736711 -1.921342 --31.013733 -1.546946 -1.9219086 --31.035603 -1.3571873 -1.9227272 --31.021404 -1.165906 -1.921342 --31.013012 -0.97506958 -1.9203975 --25.864546 1.9118208 -1.9218043 --25.843384 2.0697696 -1.9211264 --25.826223 2.2279599 -1.920825 --25.805115 2.3857417 -1.9202977 --25.772129 2.5422711 -1.9189419 --25.741169 2.6987977 -1.917812 --25.703312 2.8543797 -1.9162301 --25.663527 3.0094824 -1.914573 --25.618847 3.1637156 -1.9126143 --25.572254 3.3173854 -1.9105805 --25.515846 3.4693933 -1.9078689 --0 0 -0 --0 0 -0 --0 0 -0 --25.347214 4.0823264 -1.9020686 --25.30792 4.2354722 -1.9010141 --25.259842 4.3869243 -1.8993568 --25.209877 4.5377693 -1.8976244 --25.166855 4.6896281 -1.8964945 --25.090607 4.8349018 -1.8928788 --25.033087 4.9833117 -1.8907696 --25.004969 5.1374202 -1.8909956 --24.960293 5.2880635 -1.8900163 --24.936144 5.4430318 -1.8906943 --24.939247 5.6042442 -1.8935567 --24.931593 5.7634525 -1.8956659 --24.938446 5.9264679 -1.8989803 --24.940359 6.0888371 -1.9019933 --24.948957 6.2533927 -1.905609 --24.997997 6.4289641 -1.9124638 --25.023643 6.5995226 -1.917586 --25.019258 6.7628298 -1.9204484 --25.061857 6.9396381 -1.9270772 --25.105145 7.1177673 -1.9338566 --25.130907 7.2919636 -1.9393554 --25.129663 7.4590812 -1.9428204 --25.150213 7.6334085 -1.9480933 --25.144808 7.8005857 -1.9514077 --25.153503 7.9728045 -1.9559274 --25.16008 8.1451159 -1.9603716 --25.20336 8.3303261 -1.967829 --25.225468 8.5096798 -1.9737045 --25.239721 8.6873446 -1.9790527 --25.234865 8.8592272 -1.9829696 --25.236361 9.0340652 -1.9874892 --25.227289 9.2058363 -1.9912556 --25.203974 9.3729687 -1.9939673 --25.190746 9.5444012 -1.997583 --25.176361 9.7160244 -2.0011988 --25.179379 9.8951235 -2.006321 --25.174664 10.072032 -2.010916 --25.199198 10.261666 -2.0179965 --25.177212 10.433272 -2.0213864 --25.193577 10.621654 -2.0280151 --25.188414 10.80198 -2.0329866 --25.213058 10.996197 -2.0405192 --25.203451 11.176568 -2.0453403 --25.287117 11.399858 -2.0579951 --25.15777 11.5278 -2.0530989 --25.133568 11.703839 -2.0570159 --25.103643 11.877882 -2.0605562 --25.066238 12.048973 -2.0635693 --25.021404 12.216989 -2.0660551 --25.26757 12.529779 -2.0931728 --25.335382 12.757689 -2.1054511 --0 0 -0 --25.035313 12.994128 -2.0933988 --24.894239 13.115425 -2.0882013 --24.528397 13.115572 -2.0637953 --24.145094 13.101741 -2.0378075 --23.9044 13.161625 -2.0240228 --23.433199 13.090174 -1.9902763 --22.963791 13.013443 -1.95653 --22.675167 13.034328 -1.9383762 --22.435402 13.080295 -1.9244407 --22.116964 13.077117 -1.9035752 --21.835339 13.092068 -1.8858734 --21.655762 13.165707 -1.8771355 --21.409048 13.196299 -1.8624468 --21.504406 13.437863 -1.87819 --21.363426 13.532738 -1.8729925 --21.149096 13.579514 -1.8612415 --20.998516 13.665511 -1.8552154 --20.690359 13.646401 -1.8349525 --20.547379 13.733753 -1.8296043 --20.366955 13.794701 -1.8208663 --20.196426 13.860724 -1.8130324 --19.975101 13.889879 -1.8005282 --19.888683 14.011608 -1.8004528 --19.783669 14.120054 -1.7987202 --19.650599 14.207874 -1.7944267 --19.560638 14.326413 -1.7942007 --19.465157 14.440818 -1.7935227 --19.359444 14.547401 -1.7919408 --19.240459 14.643569 -1.7891538 --19.13998 14.753436 -1.7881745 --19.04595 14.868144 -1.7878733 --18.946541 14.978544 -1.78712 --18.83326 15.077688 -1.7850862 --19.036272 15.432859 -1.813861 --18.950468 15.556967 -1.8147649 --19.713463 16.386906 -1.8991309 --19.554565 16.458754 -1.893406 --19.398567 16.531857 -1.8879825 --19.292234 16.646664 -1.8875306 --19.176214 16.752916 -1.8861747 --19.04393 16.844498 -1.883237 --18.92536 16.947727 -1.8817304 --18.813627 17.056833 -1.8809772 --18.685843 17.151047 -1.878642 --15.016438 13.953461 -1.5111226 --18.440557 17.347628 -1.875177 --18.239901 17.371048 -1.8653845 --18.204752 17.551851 -1.8729172 --18.086723 17.653473 -1.8718626 --14.559365 14.385793 -1.5087874 --14.466592 14.470625 -1.5083355 --17.715979 17.940117 -1.8672676 --17.584679 18.027067 -1.8650079 --17.46059 18.120981 -1.8635767 --17.340137 18.218386 -1.8625973 --17.228024 18.32444 -1.8625973 --13.791854 14.850807 -1.4936467 --16.988377 18.519777 -1.8610909 --16.857685 18.605194 -1.8592077 --16.709961 18.671127 -1.8554413 --16.566025 18.740431 -1.852127 --16.438263 18.827454 -1.8506957 --16.337408 18.945332 -1.8524283 --16.2215 19.045979 -1.8525037 --16.05876 19.090971 -1.8471555 --15.852753 19.082529 -1.8366849 --15.688565 19.122391 -1.8311108 --15.5157 19.15011 -1.8244821 --15.349939 19.184998 -1.8186818 --15.248005 19.299166 -1.8206403 --15.182047 19.459978 -1.8271185 --15.172494 19.695751 -1.8407526 --15.143714 19.909914 -1.8522776 --15.076948 20.076614 -1.859283 --14.928535 20.135103 -1.8561193 --14.795874 20.214254 -1.8549894 --14.693753 20.335375 -1.8578519 --14.573334 20.431644 -1.8584545 --14.448841 20.522312 -1.858605 --14.329474 20.620409 -1.859509 --14.211703 20.721102 -1.8607142 --14.090442 20.816998 -1.8615428 --13.964108 20.90555 -1.8617688 --13.842155 21.00083 -1.8626727 --13.714666 21.087875 -1.8628987 --9.0666971 14.129318 -1.2308315 --13.448987 21.245319 -1.8620701 --13.317846 21.326595 -1.8619947 --13.185169 21.405363 -1.8617688 --9.1396694 15.042992 -1.2922982 --8.6879511 14.499158 -1.2394941 --8.5973005 14.549618 -1.2392681 --12.707083 21.810383 -1.8694521 --8.2050476 14.283076 -1.2069529 --12.525935 22.119127 -1.8828603 --12.412821 22.236492 -1.8864007 --8.2445183 14.983848 -1.2545594 --12.233113 22.560711 -1.9013153 --12.120767 22.684601 -1.9055337 --10.173595 19.324343 -1.6123618 --11.813477 22.777634 -1.9009387 --10.221922 20.008066 -1.6598929 --10.03353 19.940357 -1.6488953 --9.7848253 19.746897 -1.6274271 --9.466301 19.402374 -1.5934547 --10.766891 22.416487 -1.8412046 --9.4657173 20.021021 -1.6355624 --10.416545 22.386898 -1.8278718 --10.271099 22.433165 -1.8264406 --10.124659 22.476671 -1.8248587 --9.9966516 22.561165 -1.8267418 --9.8038607 22.497753 -1.8164974 --9.7155046 22.673891 -1.8260639 --9.5769711 22.734915 -1.8262146 --9.4754343 22.885384 -1.8337473 --9.3611364 23.007748 -1.8390201 --9.2212677 23.068459 -1.8393214 --9.0635157 23.083763 -1.836007 --8.8969555 23.074743 -1.8308095 --8.7410851 23.091597 -1.8277965 --8.5752735 23.080297 -1.8225988 --8.416419 23.085638 -1.8188325 --8.270916 23.126516 -1.8180039 --8.1245689 23.164598 -1.8170247 --7.9693131 23.176294 -1.8140116 --7.8119907 23.180344 -1.8104713 --7.6592956 23.196594 -1.8079854 --7.5063891 23.210894 -1.8054243 --7.3544989 23.227045 -1.8030893 --7.2044635 23.247923 -1.8012061 --7.0556068 23.27165 -1.7996242 --6.9050298 23.288692 -1.7975904 --6.7509012 23.292313 -1.7945772 --6.6045952 23.321783 -1.7936734 --3.9015102 14.10465 -1.0681256 --6.3004932 23.336575 -1.7886264 --6.1571841 23.374794 -1.7886264 --6.0141392 23.414064 -1.7887771 --3.6311777 14.503757 -1.0920795 --3.5371566 14.505421 -1.0904976 --5.5531373 23.398552 -1.7792859 --3.2795005 14.203783 -1.0638319 --5.2557597 23.421152 -1.7758962 --5.1376414 23.570848 -1.7850108 --4.9698076 23.492664 -1.7765741 --4.8227611 23.509041 -1.7755196 --3.916204 19.70233 -1.4800879 --3.7969341 19.7348 -1.4807658 --4.3999767 23.651669 -1.7799639 --3.4878273 19.40892 -1.4522923 --4.1117868 23.717638 -1.7810185 --3.9693015 23.761108 -1.7824497 --3.8209 23.769264 -1.7812444 --3.6714828 23.769594 -1.7795119 --3.5243971 23.783785 -1.7789093 --3.3811975 23.824707 -1.7804159 --3.2381644 23.868719 -1.7822237 --3.0919034 23.890118 -1.7823744 --2.9450145 23.90666 -1.7822237 --2.8010497 23.94805 -1.7840315 --2.6571264 23.992537 -1.7861407 --2.5125554 24.034176 -1.7880992 --2.3670857 24.069979 -1.7896811 --2.2211795 24.103909 -1.7911876 --2.0732388 24.117085 -1.7911876 --1.9276773 24.160166 -1.7935227 --1.7805676 24.18745 -1.7947279 --1.6339332 24.224783 -1.7967618 --1.4873953 24.269188 -1.7993982 --1.339606 24.298767 -1.8009801 --1.1903889 24.304537 -1.8008294 --1.0422596 24.335293 -1.8026372 --0.89489275 24.395041 -1.8067049 --0.74728781 24.468843 -1.8119024 --0.59803396 24.509853 -1.8146895 --0.44815966 24.541973 -1.816874 --0.29886493 24.651947 -1.8250093 --0.14808345 24.735083 -1.8311862 -0.0036993716 24.778402 -1.8344252 -0.1560335 24.82478 -1.8379655 -0.30882499 24.861244 -1.8408279 -0.46286744 24.939636 -1.8469294 -0.61785883 25.016075 -1.8529556 -0.77318996 25.071615 -1.8574752 -0.92852479 25.107254 -1.8605636 -1.0853583 25.165838 -1.8654598 -1.2430439 25.225433 -1.8705068 -1.3995683 25.249191 -1.8729172 -1.5526892 25.211266 -1.8707327 -1.7064091 25.187336 -1.8696781 -1.8609235 25.176392 -1.8696781 -2.0156865 25.168476 -1.8699794 -2.1705081 25.160601 -1.8703561 -1.8547066 20.064051 -1.4847581 -1.9206872 19.473759 -1.4408426 -2.0798757 19.840445 -1.4696175 -2.1965103 19.781719 -1.4661524 -2.3145943 19.740139 -1.4640433 -3.0910947 25.031004 -1.8678703 -2.52689 19.480833 -1.4465674 -3.3985686 24.995138 -1.8681716 -3.5494843 24.957031 -1.866891 -3.7041624 24.945633 -1.8677197 -3.8583767 24.930319 -1.8683223 -4.0125422 24.914049 -1.8689249 -4.1655011 24.889944 -1.8690002 -4.3186564 24.866863 -1.8692262 -4.470449 24.835972 -1.8689249 -2.7992861 15.024914 -1.1171633 -4.7709246 24.75868 -1.8673429 -2.8210509 14.173812 -1.0543407 -5.0669656 24.66213 -1.864556 -3.069397 14.49028 -1.0815338 -3.1510181 14.438051 -1.0789727 -5.4995012 24.473234 -1.8574752 -3.4613912 14.975383 -1.1237167 -5.7924938 24.3748 -1.8552154 -5.9400535 24.331049 -1.8546127 -3.5371344 14.114072 -1.0617981 -3.4520187 13.424789 -1.0097473 -3.5259337 13.371537 -1.0072615 -6.5257492 24.142328 -1.8518257 -3.9559014 14.288247 -1.0825883 -4.0326166 14.225332 -1.0795753 -4.0386739 13.920688 -1.0575799 -4.1098242 13.847849 -1.0538135 -4.173861 13.753671 -1.0483899 -4.2519679 13.707802 -1.0468081 -4.3341894 13.675751 -1.0463561 -4.4253926 13.671667 -1.048164 -4.5292277 13.704849 -1.052985 -4.6078143 13.660739 -1.0517043 -4.6857061 13.615237 -1.0503484 -4.8018641 13.679374 -1.0578058 -4.9095731 13.716308 -1.063154 -4.9939842 13.686861 -1.0632293 -5.0723095 13.641007 -1.0620241 -5.1937213 13.7094 -1.0700841 -5.3089805 13.758208 -1.0766375 -5.531177 14.076177 -1.105111 -5.6167021 14.040122 -1.1049604 -5.6986074 13.995235 -1.1041318 -5.787046 13.966455 -1.1046591 -5.8958788 13.985812 -1.1091787 -5.9658608 13.912715 -1.1061656 -6.0503182 13.87402 -1.106015 -6.1248226 13.812935 -1.1040565 -6.2254462 13.810546 -1.1069943 -6.371552 13.906249 -1.1181426 -6.4925423 13.943727 -1.1245453 -6.5997295 13.949595 -1.128387 -10.891538 22.658611 -1.8617688 -11.025113 22.580605 -1.8608649 -11.162128 22.50985 -1.8606389 -11.294206 22.429359 -1.8596597 -11.432979 22.362301 -1.8598857 -11.569517 22.290842 -1.8598104 -11.711651 22.230021 -1.8607142 -11.84501 22.152464 -1.8602623 -11.980712 22.079369 -1.8602623 -12.106343 21.98797 -1.8587557 -12.229845 21.893251 -1.8570232 -12.359525 21.80999 -1.8563453 -12.476715 21.705215 -1.8538595 -12.590072 21.594656 -1.8509218 -12.702542 21.483524 -1.847984 -12.825919 21.391495 -1.8467788 -12.950717 21.30217 -1.8458749 -13.078041 21.217211 -1.8454229 -13.208509 21.137413 -1.8454982 -13.335289 21.051756 -1.8451216 -13.457205 20.95863 -1.8441423 -13.579568 20.866468 -1.8433137 -13.678246 20.738638 -1.8393214 -13.445593 20.116299 -1.7904344 -13.418898 19.812164 -1.7702467 -13.482653 19.645596 -1.7625633 -13.555119 19.493731 -1.756236 -13.640016 19.361282 -1.7517164 -13.765509 19.286963 -1.7526202 -13.936178 19.27486 -1.7593997 -14.075397 19.217947 -1.7621114 -14.202558 19.144033 -1.7633166 -14.396437 19.158562 -1.7729585 -14.549957 19.117474 -1.7774781 -15.162552 19.670683 -1.8387941 -15.291554 19.58828 -1.8398488 -15.420116 19.505035 -1.8409033 -15.553842 19.427956 -1.8426358 -15.694108 19.358488 -1.845197 -15.82778 19.280323 -1.8470048 -15.964271 19.20508 -1.8491893 -16.103643 19.1327 -1.8517504 -16.236259 19.051744 -1.8535582 -16.353504 18.952517 -1.8536335 -16.461615 18.842806 -1.8527296 -13.116278 14.829296 -1.4581678 -13.236958 14.781963 -1.4615575 -13.325399 14.698248 -1.4613315 -13.31284 14.504551 -1.4498818 -13.243424 14.252399 -1.4323307 -13.466599 14.315396 -1.4473207 -13.556246 14.234664 -1.4475467 -13.604573 14.111018 -1.4433284 -13.55647 13.88956 -1.4287903 -13.713632 13.879172 -1.4365489 -13.864121 13.860327 -1.4435544 -14.117779 13.941745 -1.4614822 -17.875734 17.437073 -1.8490386 -17.980236 17.324986 -1.8488126 -14.932532 14.212974 -1.5199357 -14.905396 14.013852 -1.5081095 -15.57859 14.467663 -1.5686722 -15.207049 13.949862 -1.5215176 -15.26871 13.834866 -1.5191072 -15.203955 13.607262 -1.5039665 -15.319288 13.542112 -1.5072055 -15.433641 13.475403 -1.5103693 -15.614209 13.465102 -1.5201617 -15.832426 13.48477 -1.5336453 -17.416687 14.650536 -1.6818883 -17.503952 14.541481 -1.6816624 -17.599787 14.439497 -1.6823404 -17.705101 14.345045 -1.6839975 -17.81381 14.252957 -1.6860313 -17.927532 14.164402 -1.6885924 -18.051058 14.082961 -1.6921328 -18.203487 14.02305 -1.6984603 -18.312206 13.928597 -1.7006447 -18.426828 13.838127 -1.7034318 -18.563459 13.763402 -1.7083281 -18.756191 13.728745 -1.7184973 -18.90797 13.662454 -1.7248247 -19.088865 13.61566 -1.7338638 -19.252773 13.555104 -1.7413212 -19.492809 13.545963 -1.755784 -19.631477 13.464453 -1.7609062 -19.83099 13.423107 -1.7716026 -20.037361 13.384248 -1.7829016 -20.199038 13.313727 -1.790133 -20.348061 13.23357 -1.7962345 -19.225365 12.336299 -1.6882159 -19.10775 12.095974 -1.670966 -19.154545 11.961603 -1.6685555 -19.168146 11.807242 -1.6632826 -19.133703 11.624692 -1.6538668 -19.143084 11.470173 -1.6484433 -19.153006 11.316993 -1.6431704 -19.138508 11.150571 -1.6358637 -19.148634 10.999654 -1.6308168 -19.148085 10.84363 -1.6249413 -19.14286 10.686084 -1.6187645 -19.130312 10.525647 -1.6120604 -19.1472 10.382402 -1.6079928 -19.165689 10.240758 -1.6041511 -19.111691 10.061656 -1.594208 -24.432089 12.671453 -2.0417244 -24.519146 12.526292 -2.0425532 -0 0 -0 -0 0 -0 -20.820173 10.157943 -1.7126217 -21.014244 10.093459 -1.7236948 -21.386801 10.111355 -1.7496825 -21.616602 10.058173 -1.7636933 -24.261911 11.108292 -1.9783747 -24.348707 10.967814 -1.9799565 -0 0 -0 -0 0 -0 -24.246742 10.389365 -1.9553246 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -24.397352 9.0645418 -1.9287343 -0 0 -0 -0 0 -0 -0 0 -0 -24.218292 8.3275547 -1.8972477 -0 0 -0 -0 0 -0 -0 0 -0 -24.027498 7.6079082 -1.8665144 -24.088015 7.4647617 -1.8676443 -24.030302 7.2855783 -1.859509 -23.979906 7.1099362 -1.8520516 -23.97998 6.9501753 -1.8486619 -23.984756 6.7923112 -1.8457242 -23.97216 6.6301327 -1.8415059 -23.970995 6.4717436 -1.8382668 -23.914791 6.299397 -1.8308095 -23.932711 6.1473317 -1.8292276 -23.862606 5.9734945 -1.8208663 -0 0 -0 -23.816717 5.6523581 -1.8117518 -23.816944 5.4982662 -1.8091154 -23.831745 5.347877 -1.8076842 -23.861189 5.2009106 -1.8074582 -23.895578 5.0550222 -1.8076842 -23.921261 4.9073048 -1.8073075 -24.008625 4.7719007 -1.8117518 -24.074663 4.6316538 -1.8146142 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -24.352999 3.7615671 -1.8241054 -24.379566 3.6126535 -1.8244067 -24.400288 3.4628553 -1.8243314 -24.42404 3.3134747 -1.8245573 -24.448856 3.1641891 -1.824934 -24.486614 3.0164297 -1.8263652 -24.52249 2.8682101 -1.8277211 -24.570351 2.7210901 -1.8300562 -24.625263 2.5743196 -1.832994 -24.670366 2.4260995 -1.8352537 -24.720535 2.2779717 -1.8379655 -24.770807 2.1294048 -1.8407526 -24.813227 1.9797517 -1.8430125 -24.841812 1.8287071 -1.844293 -24.90629 1.6798673 -1.8483607 -24.946983 1.528903 -1.8506957 -24.964855 1.3762959 -1.8513737 -24.999722 1.2244043 -1.8534075 -25.032667 1.072094 -1.855366 -0 0 -0 -17.426193 0.53253829 -1.2796433 -17.522837 0.42788506 -1.286724 -17.545073 0.32072207 -1.2882305 -17.531754 0.21288088 -1.2871006 -17.467916 0.10491908 -1.2822044 -17.432333 -0.0022569741 -1.2794926 -17.423018 -0.10916289 -1.2788147 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -17.375504 -1.0697441 -1.2776848 -18.295835 -1.2391992 -1.3478893 -18.299822 -1.3523196 -1.3487933 -18.297142 -1.4650576 -1.3492452 -18.22522 -1.571897 -1.3444996 -0 -0 -0 -0 -0 -0 -22.86816 -2.3974502 -1.6995902 -22.504166 -2.498965 -1.6730752 -22.35372 -2.6212001 -1.6628307 -16.639881 -2.054476 -1.2291743 -15.717204 -2.0384767 -1.1598736 -14.988056 -2.0374427 -1.1052617 -14.476727 -2.0584409 -1.0672216 -13.605711 -2.0197682 -1.0016873 -13.473826 -2.084754 -0.99257278 -13.36135 -2.15137 -0.98496479 -13.275121 -2.2211301 -0.97939062 -13.219979 -2.2953746 -0.97622687 -13.194852 -2.3745041 -0.9753983 -13.16925 -2.4534118 -0.97456968 -13.377192 -2.5771995 -0.99174422 -12.921044 -2.5716043 -0.95784712 -12.943115 -2.6586661 -0.96078491 -12.782185 -2.7074399 -0.94963652 -12.733183 -2.7788 -0.94715071 -12.72173 -2.8581891 -0.94760269 -12.710753 -2.9377668 -0.94812995 -12.802114 -3.04176 -0.95664191 -12.592375 -3.0736566 -0.9418025 -12.564573 -3.1486819 -0.94112462 -11.013382 -2.8317389 -0.82165629 -12.438211 -3.2797415 -0.93434519 -12.507376 -3.3802018 -0.94135058 -12.225011 -3.384491 -0.92086166 -12.11 -3.4327791 -0.91347963 -7.9229426 -2.2980835 -0.58580804 -7.9029574 -2.3449516 -0.58535606 -7.8893743 -2.3936889 -0.5854314 -7.8754907 -2.4423475 -0.58550674 -7.8774662 -2.4960487 -0.58686262 -7.9075389 -2.5590806 -0.5904783 -7.9361858 -2.6222622 -0.5940187 -11.86556 -4.0021329 -0.9085834 -11.832294 -4.0719419 -0.90790546 -11.852247 -4.1603236 -0.91152114 -11.739188 -4.2017107 -0.90451574 -11.742225 -4.2842598 -0.90685087 -11.054948 -4.1104665 -0.85359484 -11.003409 -4.1683273 -0.85148567 -7.1811881 -2.7704601 -0.54407698 -7.1621976 -2.8137414 -0.54392636 -11.73304 -4.6935554 -0.91724598 -11.720643 -4.7722297 -0.91860187 -11.545594 -4.7837358 -0.90670025 -11.455382 -4.8289185 -0.90172869 -19.063942 -8.17521 -1.5295776 -9.0106449 -3.9290042 -0.70520103 -9.016448 -3.9975593 -0.70768684 -18.790241 -8.4706287 -1.5196345 -18.729753 -8.5820255 -1.5189565 -18.656857 -8.6875257 -1.5172993 -5.5383162 -2.6194696 -0.42543727 -5.4978743 -2.6417377 -0.42340344 -5.3632846 -2.6176662 -0.41346031 -5.2801223 -2.6172976 -0.40781081 -5.3450079 -2.6904609 -0.41466555 -5.3612485 -2.7400033 -0.41745263 -5.3514156 -2.7765231 -0.41805524 -17.910809 -9.4358635 -1.4919142 -17.85697 -9.5479355 -1.4922909 -17.800678 -9.6587515 -1.4925168 -17.713127 -9.7524004 -1.4901063 -17.641636 -9.8545809 -1.489127 -17.56262 -9.9523172 -1.4875453 -17.485662 -10.050946 -1.4861894 -3.5100124 -2.04527 -0.26951078 -3.4862385 -2.0601704 -0.26853153 -3.4760976 -2.0830612 -0.26875752 -3.4675109 -2.106941 -0.26913416 -3.4765873 -2.1417825 -0.27109265 -3.4473135 -2.1530335 -0.26966146 -3.4643624 -2.1933563 -0.2723732 -3.4676201 -2.225348 -0.27387974 -3.4480503 -2.2427754 -0.27335244 -16.471842 -10.863778 -1.4531962 -16.404873 -10.964643 -1.4531962 -3.3112421 -2.2415512 -0.26468986 -4.2445264 -2.9118838 -0.35146636 -3.2155368 -2.2347629 -0.25843775 -4.2052126 -2.9614542 -0.35116506 -15.647705 -11.167824 -1.4148549 -15.615248 -11.289919 -1.4182446 -4.2280202 -3.0955129 -0.35847175 -4.1088457 -3.0471268 -0.34905589 -5.4595718 -4.1014771 -0.47846735 -5.439064 -4.1385231 -0.4789193 -5.5730948 -4.2947969 -0.49413532 -5.50105 -4.2933207 -0.48976636 -5.4378395 -4.2979269 -0.48622602 -14.791824 -11.841842 -1.3939893 -14.628263 -11.858903 -1.3851761 -14.602235 -11.987035 -1.389771 -3.6514487 -3.0340478 -0.3212603 -14.251876 -11.995153 -1.3698094 -13.979931 -11.913555 -1.3501492 -2.9185662 -2.5170321 -0.25376749 -2.9000633 -2.5322685 -0.25346619 -2.8911929 -2.5559614 -0.25414413 -2.8487141 -2.5497043 -0.25143236 -2.8359709 -2.5698147 -0.25173366 -3.5180106 -3.2277679 -0.32329413 -3.4586954 -3.2126374 -0.31922647 -12.907904 -12.142403 -1.3013374 -12.825935 -12.214498 -1.3005841 -2.6481345 -2.5517771 -0.24043465 -2.6260052 -2.5617089 -0.2397567 -2.5903778 -2.5581486 -0.23764755 -2.5598283 -2.5591848 -0.23606569 -2.5461791 -2.576972 -0.23629166 -2.5372818 -2.599685 -0.23704493 -2.5309687 -2.6252577 -0.23809952 -2.9623358 -3.1109712 -0.28713727 -2.9411426 -3.1269095 -0.28691128 -2.9171512 -3.1397822 -0.28638399 -7.7009516 -8.3942032 -0.82316279 -7.6339021 -8.4243011 -0.82143027 -7.5767484 -8.4650383 -0.82082766 -10.691221 -12.093894 -1.1820197 -10.58468 -12.122459 -1.1783288 -2.8920739 -3.3522632 -0.2970804 -3.4022455 -3.9932215 -0.3589237 -10.173615 -12.09393 -1.1564839 -9.9367399 -11.96053 -1.1372756 -10.049734 -12.248703 -1.159497 -9.8155813 -12.114111 -1.1404393 -9.6345444 -12.040962 -1.1275585 -9.6210594 -12.176532 -1.1349405 -9.5320578 -12.217254 -1.1332079 -9.3309565 -12.111986 -1.1176153 -9.2286959 -12.132502 -1.1141503 -9.1169558 -12.139462 -1.10948 -9.0428915 -12.195975 -1.1095554 -9.0073462 -12.305144 -1.1146022 -8.9293375 -12.356948 -1.114301 -8.8556652 -12.414752 -1.1146022 -8.6943684 -12.34818 -1.1034539 -2.930162 -4.2149377 -0.35041177 -2.9031165 -4.2311931 -0.35026112 -2.8916311 -4.2703972 -0.35221961 -2.8997116 -4.3394709 -0.35688987 -2.871933 -4.3555164 -0.35673922 -7.9561896 -12.232658 -1.0649619 -7.8099031 -12.170463 -1.0550187 -2.7262115 -4.3048491 -0.34754935 -7.6288052 -12.215483 -1.0505744 -2.6836379 -4.3549609 -0.34905589 -2.6884463 -4.4233313 -0.35365084 -2.6950779 -4.4962001 -0.3586224 -2.6638885 -4.5066423 -0.35809511 -2.6346803 -4.520318 -0.35786912 -2.618814 -4.5571513 -0.35967699 -1.3998247 -2.4698017 -0.1770848 -2.4849343 -4.4496317 -0.34762469 -6.6117768 -12.015972 -0.99867427 -6.5360227 -12.052809 -0.99837297 -6.4478483 -12.066301 -0.99611318 -6.375083 -12.108284 -0.99633914 -6.303422 -12.152484 -0.99679112 -6.1593337 -12.055067 -0.98526609 -6.0825605 -12.087289 -0.98481411 -6.0312996 -12.170845 -0.98873115 -5.9473257 -12.188804 -0.98714924 -5.8797636 -12.240347 -0.98842984 -1.1614977 -2.4543006 -0.16774428 -1.1434721 -2.4550526 -0.16721699 -1.124236 -2.4529557 -0.16646372 -1.1030213 -2.4461699 -0.16533382 -5.4958715 -12.402184 -0.98737526 -5.3507624 -12.277524 -0.97434372 -5.2694378 -12.296375 -0.97321379 -5.2078238 -12.36156 -0.97592556 -5.1364536 -12.404338 -0.97682947 -5.0275545 -12.355263 -0.97027606 -0.95737112 -2.3922 -0.15727384 -0.92846358 -2.3618298 -0.15433611 -0.9135955 -2.3665519 -0.15426078 -0.90329307 -2.3833041 -0.1551647 -0.90427846 -2.4308653 -0.1585544 -4.508256 -12.364244 -0.95679259 -1.1698384 -3.2680418 -0.224842 -1.1590036 -3.3015058 -0.22695115 -1.1568793 -3.3613622 -0.23116945 -4.1531558 -12.321855 -0.94489092 -4.0805979 -12.356575 -0.9456442 -3.9930446 -12.345326 -0.94278181 -3.9193268 -12.376249 -0.94330907 -3.8250163 -12.341011 -0.93863881 -0.97856832 -3.2241702 -0.21715866 -0.9624511 -3.2425425 -0.21813791 -0.95003074 -3.2742462 -0.22017173 -0.94486368 -3.3327832 -0.2243147 -3.4568834 -12.496745 -0.94210386 -3.3809192 -12.520609 -0.94232982 -0.88894486 -3.3708246 -0.22597189 -0.86750108 -3.3733182 -0.22574592 -3.1234941 -12.475282 -0.93411922 -3.0305934 -12.427365 -0.92892164 -2.9715493 -12.518494 -0.93457115 -2.8922145 -12.525804 -0.93374258 -0.72083259 -3.2076383 -0.21098186 -1.8966749 -8.6982508 -0.63514709 -0.67501938 -3.1859996 -0.20864673 -1.7200724 -8.3809357 -0.60893339 -1.6639513 -8.3678589 -0.60712552 -1.6225578 -8.4298096 -0.61111784 -2.3309257 -12.526678 -0.92515528 -1.4800246 -8.2321854 -0.59447062 -2.209723 -12.742981 -0.93961805 -2.134284 -12.77302 -0.9408986 -1.3840957 -8.6055717 -0.62106097 -1.9670312 -12.731236 -0.93577641 -1.893991 -12.77759 -0.93841285 -1.8135927 -12.775149 -0.93735826 -1.7393258 -12.816669 -0.93969339 -1.6612911 -12.832044 -0.94007003 -1.5822802 -12.840016 -0.93991935 -0.45414311 -3.8743618 -0.25730786 -1.4000182 -12.636459 -0.92304617 -0.4127824 -3.9391484 -0.26182747 -0.38148376 -3.8691638 -0.25632861 -0.35672987 -3.8605092 -0.25550002 -1.0957135 -12.739536 -0.928545 -0.31012124 -3.874536 -0.25625327 -0.28700012 -3.8853161 -0.25693122 -0.2629537 -3.8840194 -0.25670522 -0.78773767 -12.844204 -0.93472183 -0.70293438 -12.74027 -0.92651117 -0.62479705 -12.745339 -0.92658651 -0.54572898 -12.729008 -0.92508 -0.47571951 -12.953338 -0.9418025 -0.39544016 -12.930099 -0.93984401 -0.31221101 -12.772783 -0.92779171 -0.23646581 -12.919023 -0.93871415 -0.15784194 -12.974073 -0.94278181 -0.077716276 -12.888046 -0.93622833 --0.0013743453 -12.937141 -0.93991935 --0.080572017 -12.907972 -0.9377349 --0.16069233 -12.981019 -0.94330907 --0.24097005 -13.013686 -0.94587016 --0.32103798 -13.020934 -0.9465481 --0.39781779 -12.918055 -0.93894011 --0.47474939 -12.852592 -0.93419451 --0.5537315 -12.852426 -0.93442053 --0.62727672 -12.741224 -0.92628521 --0.719473 -12.990025 -0.94541824 --0.78266376 -12.717638 -0.92515528 --0.86182964 -12.729509 -0.92643589 --0.95933759 -12.986514 -0.94632214 --1.0415522 -13.012191 -0.94873261 --1.1237748 -13.033372 -0.95084172 --1.2003267 -12.989493 -0.94805467 --1.2873511 -13.056309 -0.95370418 --1.3505876 -12.887506 -0.9415012 --1.4353638 -12.930511 -0.94541824 --1.5381458 -13.121514 -0.96063423 --1.6416134 -13.297881 -0.9747957 --1.7329296 -13.362712 -0.98052049 --1.8389453 -13.52869 -0.99400401 --1.922202 -13.519127 -0.99415463 --2.0065827 -13.516941 -0.99490792 --2.098484 -13.562514 -0.99935222 --2.1532733 -13.373163 -0.98586869 --2.2939 -13.709816 -1.0126851 --2.3694451 -13.64636 -1.0089188 --2.4579039 -13.658062 -1.0109526 --2.5549998 -13.714284 -1.0164514 --2.6508019 -13.759055 -1.0211216 --2.7505593 -13.81979 -1.0270724 --2.8367093 -13.80949 -1.0275998 --2.9226296 -13.797677 -1.0280517 --3.0059595 -13.77364 -1.0275998 --3.0683308 -13.656674 -1.0199918 --3.1803727 -13.760003 -1.029483 --3.278578 -13.798437 -1.0340025 --3.3944054 -13.905929 -1.0439457 --3.475302 -13.867429 -1.0425898 --3.5431852 -13.779209 -1.0373923 --3.6225796 -13.737926 -1.0358857 --3.7120106 -13.734691 -1.0373923 --3.7943521 -13.704929 -1.036865 --3.8868058 -13.711129 -1.0392001 --3.9919841 -13.759803 -1.044925 --4.0791755 -13.744609 -1.0456781 --4.1871848 -13.797563 -1.051855 --4.2948151 -13.845895 -1.0577304 --4.3796911 -13.819283 -1.0577304 --4.4702382 -13.810173 -1.0591617 --4.5545788 -13.781538 -1.0590863 --4.6349106 -13.741049 -1.0581071 --4.7210846 -13.718008 -1.0585591 --4.8249888 -13.745233 -1.0630786 --4.8840284 -13.644958 -1.0574292 --4.8483472 -13.287817 -1.0311401 --4.9315267 -13.262491 -1.0315168 --5.011044 -13.227321 -1.0311401 --5.1746936 -13.410287 -1.0484653 --5.3010159 -13.490577 -1.0575799 --5.1154914 -12.78752 -1.0030432 --5.5831394 -13.71172 -1.0810064 --5.6812935 -13.711287 -1.0837935 --5.7610559 -13.666062 -1.082965 --5.5940332 -13.045776 -1.0349065 --5.8569641 -13.430731 -1.0694815 --5.9356246 -13.386337 -1.0688035 --6.1029 -13.538744 -1.0844715 --6.2926211 -13.734014 -1.1038305 --6.3624597 -13.664411 -1.1012694 --6.4790249 -13.694517 -1.1070695 --1.6549587 -3.4452362 -0.25135702 --1.675192 -3.4332247 -0.25120637 --1.6838213 -3.3978679 -0.24909723 --1.702396 -3.3830192 -0.24872059 --1.7199441 -3.3662951 -0.24819331 --1.7401075 -3.3547933 -0.24811798 --1.7708855 -3.3634613 -0.24977517 --4.4915514 -8.4016066 -0.6823017 --4.7166181 -8.6937828 -0.70979595 --7.6408749 -13.87852 -1.1594217 --1.8499776 -3.3137653 -0.2493232 --1.8707674 -3.3032193 -0.24939853 --4.7456641 -8.2572823 -0.68207568 --8.3995752 -14.407832 -1.2224702 --8.5121851 -14.397222 -1.2260859 --8.1188354 -13.541697 -1.155354 --8.2064352 -13.499293 -1.156032 --7.805613 -12.664363 -1.08643 --7.9058971 -12.652592 -1.0896691 --8.0004597 -12.630798 -1.0920795 --8.1133709 -12.636848 -1.097051 --8.1951084 -12.593514 -1.0976537 --8.2184191 -12.461419 -1.0902717 --8.258152 -12.356044 -1.0853001 --9.561882 -14.118119 -1.2507178 --9.9118509 -14.443121 -1.2858953 --9.9980087 -14.378756 -1.2855941 --10.088919 -14.321215 -1.2859707 --9.7322607 -13.636536 -1.2281951 --9.7041502 -13.422227 -1.2138076 --9.4846344 -12.950558 -1.1752403 --10.597764 -14.285525 -1.306309 --10.805033 -14.37966 -1.3213743 --10.951644 -14.390056 -1.328681 --11.10244 -14.40393 -1.3364396 --11.204725 -14.353613 -1.3381722 --11.332786 -14.335435 -1.3430685 --11.526484 -14.397956 -1.3558739 --11.659199 -14.381953 -1.3612221 --10.906943 -13.286667 -1.2611881 --11.037348 -13.278536 -1.2669884 --11.064675 -13.146482 -1.2606609 --11.151601 -13.085931 -1.2614142 --12.107905 -14.03264 -1.3627287 --12.172785 -13.934054 -1.3603183 --12.22568 -13.822504 -1.3566272 --12.275005 -13.707859 -1.3526349 --12.236311 -13.497099 -1.3388501 --12.36138 -13.468043 -1.3435957 --12.382013 -13.325472 -1.336741 --12.429379 -13.212934 -1.3329747 --12.483397 -13.108259 -1.3300369 --12.648726 -13.119707 -1.3393021 --12.714362 -13.026865 -1.3377203 --12.801764 -12.956408 -1.3385488 --13.067204 -13.063723 -1.358435 --13.138601 -12.974891 -1.3575312 --13.228674 -12.904473 -1.3586611 --13.271701 -12.788467 -1.3548948 --13.365811 -12.721917 -1.3565519 --13.421097 -12.618494 -1.3542168 --13.524575 -12.560332 -1.3569286 --13.576405 -12.454194 -1.3543675 --13.587537 -12.31174 -1.3477387 --13.555079 -12.131718 -1.3368163 --13.46788 -11.905673 -1.3205457 --10.07851 -8.8002739 -0.97336447 --13.750411 -11.858018 -1.3342552 --13.797859 -11.752089 -1.3317693 --14.139853 -11.894421 -1.358435 --10.335933 -8.5872393 -0.97773343 --10.337546 -8.4819164 -0.97276187 --10.401018 -8.427743 -0.97389174 --15.115817 -12.094501 -1.425024 --15.190526 -12.002142 -1.4250994 --15.269387 -11.913002 -1.4256266 --10.645001 -8.200984 -0.97773343 --15.501735 -11.791126 -1.4339125 --15.574589 -11.696385 -1.4339879 --15.629242 -11.588131 -1.4324061 --15.671082 -11.470812 -1.4296943 --15.729856 -11.366264 -1.4286397 --15.81148 -11.278219 -1.4297696 --15.928491 -11.214856 -1.4342139 --16.208275 -11.263711 -1.4536482 --16.404549 -11.251461 -1.4653238 --16.639263 -11.262934 -1.4804645 --16.746202 -11.186101 -1.4839295 --16.824514 -11.089723 -1.4848335 --16.954103 -11.026507 -1.4904077 --17.261473 -11.076275 -1.5119511 --17.367868 -10.994684 -1.5154161 --17.291216 -10.798127 -1.5026106 --17.357994 -10.69235 -1.5026859 --17.425831 -10.587195 -1.5029119 --17.483622 -10.475973 -1.5023093 --17.53727 -10.362412 -1.5014054 --17.674622 -10.297777 -1.5078834 --17.771198 -10.208503 -1.5108212 --17.843914 -10.105165 -1.5117252 --17.92909 -10.008608 -1.513759 --16.197384 -8.9121304 -1.3591883 --16.370104 -8.8767395 -1.3693575 --6.8182774 -3.6440458 -0.54663813 --16.354271 -8.610158 -1.3588117 --16.347485 -8.4788904 -1.3537648 --7.2056561 -3.6821353 -0.57390642 --7.2058439 -3.6266489 -0.57202321 --6.9527607 -3.4460194 -0.54882258 --6.972878 -3.4028561 -0.54874724 --6.9936261 -3.3600073 -0.54874724 --6.9266653 -3.2756941 -0.54144055 --6.8128271 -3.1708789 -0.53029221 --19.140152 -8.7635708 -1.5528536 --19.215385 -8.6557913 -1.5546614 --7.3185906 -3.243664 -0.56735295 --7.2981329 -3.1811714 -0.56403857 --19.518106 -8.3634634 -1.5667137 --19.626034 -8.2675428 -1.571384 --19.727987 -8.1683235 -1.5756023 --19.835001 -8.0704184 -1.5802726 --19.954519 -7.976687 -1.5859973 --20.036503 -7.8672161 -1.5887091 --20.124405 -7.7595501 -1.5919482 --20.181896 -7.6398058 -1.5927768 --20.248959 -7.5234675 -1.594434 --20.275066 -7.3919091 -1.5928521 --20.473087 -7.3220916 -1.6051304 --20.525156 -7.1989732 -1.605733 --20.601004 -7.0839205 -1.6082941 --20.680935 -6.9697995 -1.6112318 --20.760241 -6.8549643 -1.6141696 --20.8503 -6.7430987 -1.6180112 --20.929308 -6.6270752 -1.6210244 --21.01244 -6.5118113 -1.6244141 --21.088263 -6.3937511 -1.6272764 --12.447251 -3.6911399 -0.94338441 --21.311672 -6.1769481 -1.6388015 --13.185286 -3.734524 -0.99784565 --21.445456 -5.9314332 -1.6434717 --21.491074 -5.8023334 -1.644225 --12.791831 -3.3700581 -0.96191478 --12.801644 -3.2887771 -0.96108621 --12.852537 -3.2179132 -0.96349663 --21.844006 -5.3260684 -1.6610982 --21.919935 -5.2022953 -1.664488 --21.988363 -5.076221 -1.6673503 --13.193259 -2.9611194 -0.98406088 --18.215155 -3.9705536 -1.3709394 --22.054661 -4.6656752 -1.6655425 --19.282314 -3.9558833 -1.4495806 --21.957682 -4.3643613 -1.6537915 --21.83227 -4.200357 -1.6421158 --21.685091 -4.0342278 -1.6288583 --18.718964 -3.3638823 -1.3993375 --18.722548 -3.2460668 -1.398057 --21.513723 -3.593987 -1.610328 --21.528479 -3.4608061 -1.6098007 --21.550295 -3.3287969 -1.6098759 --21.597933 -3.2005954 -1.6119851 --19.358284 -2.7475445 -1.4396374 --21.849016 -2.9642594 -1.6282557 --21.976562 -2.8443418 -1.6366169 --22.208363 -2.735888 -1.6529629 --22.530769 -2.6353488 -1.6762389 --22.652563 -2.5087926 -1.6842989 --23.014647 -2.4060228 -1.7106632 --23.218521 -2.2833931 -1.7250507 --23.263868 -2.1438103 -1.7274611 --23.436539 -2.0147684 -1.7395887 --24.118418 -1.9243484 -1.790359 --26.024239 -1.9156947 -1.9338566 --26.068336 -1.7581898 -1.9363424 --26.097544 -1.5993624 -1.9377736 --26.216387 -1.4452335 -1.9460595 --26.118193 -1.2791312 -1.9379995 --26.20525 -1.1222585 -1.9440256 --26.166801 -0.95980221 -1.9406359 --26.190138 -0.79977471 -1.9419918 --26.165644 -0.63835597 -1.9398074 --26.160095 -0.47763118 -1.9391295 --26.136608 -0.3167938 -1.937171 --26.121109 -0.15631595 -1.9358904 --26.112602 0.003961341 -1.9352125 --26.109095 0.16416624 -1.9349865 --26.103607 0.32431582 -1.9346851 --26.096142 0.48438567 -1.9343085 --26.08869 0.64440078 -1.9340072 --26.076271 0.8042196 -1.9334046 --26.051912 0.96350437 -1.9319733 --26.030567 1.1226926 -1.9308435 --26.009245 1.2817043 -1.9297889 --25.985956 1.4404414 -1.928659 --25.967672 1.599309 -1.927981 --25.946426 1.7578716 -1.9271525 --22.53828 -0.57403761 -1.9388834 --22.550343 -0.43590793 -1.9396694 --22.531673 -0.2972571 -1.9378355 --22.539051 -0.15904202 -1.9383594 --22.527649 -0.020730797 -1.9373115 --22.515398 0.11743451 -1.9362636 --22.493334 0.25534707 -1.9344296 --22.483376 0.39321956 -1.933731 --22.467594 0.53086191 -1.9325957 --22.447981 0.66823649 -1.9311984 --22.406624 0.80464005 -1.9279672 --22.38534 0.94143987 -1.9265699 --22.352276 1.0774815 -1.924212 --22.318386 1.2131528 -1.9218541 --22.283676 1.3484489 -1.9194962 --22.268024 1.4846897 -1.9188849 --22.24061 1.6199934 -1.917313 --22.217342 1.755409 -1.9161777 --22.198212 1.8910227 -1.9154791 --22.17528 2.026196 -1.9145185 --22.142599 2.1602883 -1.9127718 --22.125956 2.2958038 -1.9125099 --22.100559 2.4303253 -1.9115492 --22.078304 2.5650814 -1.9109379 --22.050283 2.6990509 -1.9098899 --22.029356 2.8337898 -1.9095407 --21.996744 2.9669089 -1.9082307 --21.97122 3.1008482 -1.9076194 --21.923201 3.2313905 -1.9050869 --21.89016 3.3638811 -1.9039515 --21.84845 3.4948294 -1.9021176 --21.812838 3.6265361 -1.900895 --21.784285 3.7592926 -1.9003711 --21.78042 3.8963959 -1.9021176 --21.767857 4.0321417 -1.9031656 --21.711397 4.1596332 -1.9003711 --21.650286 4.28581 -1.8972272 --21.61187 4.4161801 -1.8961792 --21.56097 4.5437751 -1.8940833 --21.618353 4.6945868 -1.9017683 --21.48609 4.8041067 -1.8925114 --21.44747 4.9338427 -1.8917254 --21.40225 5.0619102 -1.8904154 --21.361109 5.1907845 -1.8895422 --21.309525 5.3169332 -1.8877956 --21.273605 5.4468446 -1.8875335 --21.2446 5.5785394 -1.8879702 --21.224401 5.7126722 -1.8892802 --21.22064 5.8515334 -1.8921621 --21.237064 5.9965181 -1.8969651 --21.239109 6.1380525 -1.9005457 --21.258366 6.285203 -1.9057854 --21.276613 6.4328203 -1.9110253 --21.277668 6.5758977 -1.9147804 --21.291065 6.7234287 -1.9197582 --21.276905 6.8628097 -1.9222908 --21.263727 7.0028925 -1.924998 --21.248686 7.1427541 -1.9276179 --21.240265 7.2852802 -1.9309365 --21.257223 7.4371824 -1.9367002 --21.268423 7.5878921 -1.9420273 --21.281382 7.7400403 -1.9476163 --21.271786 7.8846693 -1.9511969 --21.292902 8.0414371 -1.9577466 --21.282209 8.1869583 -1.9614145 --21.308561 8.3475466 -1.9686629 --21.307833 8.4984331 -1.9734659 --21.30513 8.6492491 -1.9781817 --21.274675 8.7893209 -1.9803649 --21.263508 8.9378366 -1.9844694 --21.257727 9.0892868 -1.9891852 --21.23353 9.2334547 -1.9922417 --21.212919 9.3796806 -1.9957349 --21.201307 9.5304937 -2.0001888 --21.214916 9.6935215 -2.0071752 --21.185759 9.8377762 -2.0101445 --21.174547 9.9909639 -2.0149474 --21.148777 10.137924 -2.0184407 --21.108566 10.278402 -2.0206239 --21.136183 10.45277 -2.0295315 --21.110819 10.601933 -2.0333741 --21.094179 10.756155 -2.0381773 --21.064941 10.904618 -2.0418451 --21.024971 11.048029 -2.0445523 --20.990189 11.194641 -2.0478709 --20.964033 11.346457 -2.05215 --20.939423 11.499812 -2.0566909 --20.898054 11.644564 -2.0596602 --20.873041 11.799043 -2.0643761 --20.847782 11.954148 -2.0691793 --20.837765 12.118903 -2.0756416 --20.81707 12.278416 -2.0811434 --20.85932 12.47648 -2.0931947 --20.800261 12.615084 -2.0950286 --20.69446 12.725256 -2.0921469 --20.621061 12.855157 -2.0926709 --20.595692 13.015502 -2.0982599 --20.392971 13.063181 -2.0855098 --20.136972 13.074147 -2.0671706 --19.869129 13.074255 -2.0475214 --19.602879 13.072125 -2.0279596 --19.280457 13.028741 -2.002372 --19.04891 13.043243 -1.9863033 --18.802364 13.04461 -1.9685755 --18.576084 13.057195 -1.9529434 --18.304922 13.035138 -1.932421 --18.138958 13.085433 -1.9231641 --17.9417 13.111261 -1.9105012 --17.692766 13.096642 -1.8921621 --17.464621 13.094404 -1.8760061 --17.292709 13.132037 -1.8659632 --17.153374 13.192955 -1.8595008 --17.077602 13.302242 -1.8601121 --17.023815 13.428988 -1.863256 --16.874939 13.480344 -1.8558329 --16.716005 13.522235 -1.8472747 --16.558737 13.563949 -1.838891 --16.403122 13.605515 -1.830682 --16.253727 13.65081 -1.8231716 --16.100601 13.69156 -1.8152246 --15.959669 13.741345 -1.8086749 --15.781188 13.75719 -1.7977587 --15.646437 13.809597 -1.7919077 --15.518324 13.866844 -1.7868426 --15.297755 13.839502 -1.7708613 --15.133945 13.861115 -1.7615169 --14.971908 13.882597 -1.7523474 --14.850854 13.940794 -1.7480682 --14.681269 13.952052 -1.7379379 --14.534363 13.983167 -1.730515 --14.423312 14.047758 -1.7274585 --14.32053 14.119907 -1.7254498 --14.242788 14.21666 -1.7265851 --14.172807 14.321486 -1.7287683 --14.103467 14.427412 -1.7311263 --14.000836 14.499345 -1.7293797 --13.890292 14.562634 -1.7266724 --13.792478 14.638888 -1.7256244 --13.934506 14.972635 -1.7554913 --13.851138 15.067388 -1.7566265 --14.882827 16.390343 -1.903253 --14.734087 16.427959 -1.8969651 --14.607907 16.489721 -1.8936467 --14.468406 16.535561 -1.8885815 --14.342571 16.59614 -1.8853503 --14.217834 16.657312 -1.8822938 --14.101233 16.727482 -1.8803725 --14.002153 16.818283 -1.8808966 --13.899328 16.904652 -1.8809838 --13.790945 16.984205 -1.8803725 --13.677748 17.057625 -1.8791499 --13.567261 17.134199 -1.878364 --13.455736 17.209276 -1.8774906 --13.340756 17.279688 -1.8761808 --13.223004 17.346169 -1.8745215 --13.119317 17.430956 -1.8749582 --13.004392 17.500732 -1.8738228 --12.890282 17.57136 -1.8728622 --12.77229 17.636406 -1.8713776 --12.654565 17.701477 -1.8699803 --12.541118 17.77228 -1.8692816 --12.426708 17.841539 -1.8684957 --12.315872 17.915812 -1.8683211 --12.202355 17.986095 -1.8677971 --12.08456 18.04987 -1.8666618 --11.962049 18.106224 -1.8648279 --9.1425714 14.025079 -1.4301012 --11.709857 18.206411 -1.8601121 --11.587249 18.261095 -1.8583655 --11.472341 18.327627 -1.8579289 --11.357051 18.393438 -1.8574922 --11.245013 18.464479 -1.8576669 --8.6924763 14.472498 -1.4424145 --8.5979271 14.516133 -1.4414539 --10.864049 18.601238 -1.8508551 --10.736287 18.644241 -1.8484973 --10.619719 18.706301 -1.848148 --10.505712 18.77285 -1.8483226 --10.399949 18.854403 -1.8500692 --8.1872196 15.06082 -1.4652076 --10.178143 18.999926 -1.8519905 --10.052534 19.04528 -1.8503312 --9.9157219 19.0686 -1.846576 --9.7912664 19.114897 -1.8451787 --9.6325121 19.092791 -1.8371444 --9.4876976 19.096224 -1.83173 --9.3558998 19.12455 -1.8288481 --9.2682047 19.243525 -1.8348738 --9.181962 19.36754 -1.8414235 --9.0814867 19.463236 -1.8452661 --8.9722834 19.541225 -1.8474493 --8.8632851 19.620422 -1.8498073 --8.7512255 19.693554 -1.8516412 --8.640995 19.771524 -1.853999 --8.5254164 19.837902 -1.855309 --8.4077978 19.899933 -1.8562696 --8.2889748 19.959427 -1.8570555 --8.1746311 20.030203 -1.8589768 --8.0586195 20.097551 -1.8606361 --7.9409924 20.161449 -1.8620334 --7.8142595 20.202364 -1.8613347 --7.6855555 20.237823 -1.8601995 --7.5553184 20.268732 -1.8587148 --7.4236226 20.295063 -1.8568809 --7.2949171 20.328979 -1.8558329 --7.1700435 20.373358 -1.8558329 --7.0481491 20.426386 -1.8567063 --6.9303427 20.491896 -1.8588022 --6.8091769 20.548218 -1.8601121 --6.6863503 20.600033 -1.8610728 --6.5631442 20.651115 -1.8620334 --6.4363079 20.690998 -1.8620334 --6.3103895 20.733913 -1.8623827 --6.1827655 20.771288 -1.8622954 --4.2884922 14.737925 -1.3080143 --3.9720962 13.969621 -1.2356181 --5.8039188 20.89789 -1.8637799 --5.6789713 20.945608 -1.8649153 --5.5559502 21.001245 -1.8668364 --5.4292245 21.043623 -1.8676225 --3.6486135 14.509974 -1.2740431 --3.5507431 14.496287 -1.2708119 --5.0386496 21.130302 -1.8667492 --4.904624 21.142384 -1.8650899 --3.207916 14.224901 -1.2407705 --4.2318192 19.316092 -1.6959324 --4.1780825 19.646677 -1.7232666 --4.0634913 19.701212 -1.7258865 --3.9314008 19.670094 -1.7209086 --3.8043876 19.661572 -1.7180269 --3.7468994 20.02236 -1.7481556 --3.480226 19.249964 -1.6773312 --3.3680379 19.305304 -1.6803877 --3.3565722 19.962191 -1.7369773 --3.4645069 21.406345 -1.8634306 --3.3343198 21.435076 -1.8641293 --3.2042048 21.464983 -1.8650025 --3.0732841 21.490156 -1.8655266 --2.9421751 21.514532 -1.8660505 --2.8093355 21.526253 -1.8655266 --2.6760943 21.534187 -1.8647406 --2.5422773 21.536352 -1.863518 --2.4093096 21.544617 -1.8629067 --2.2761273 21.550077 -1.8621206 --2.1452355 21.577517 -1.8633432 --2.0123355 21.585314 -1.8629067 --1.8824447 21.627028 -1.8655266 --1.7492266 21.632214 -1.8650025 --1.6180936 21.664394 -1.8669238 --1.4860865 21.687828 -1.8681464 --1.3536048 21.706482 -1.8690197 --1.2211177 21.727308 -1.870155 --1.088177 21.742352 -1.8708537 --0.95505393 21.755585 -1.871465 --0.82169658 21.765018 -1.8718143 --0.68851137 21.781599 -1.8728622 --0.55507743 21.794376 -1.8736482 --0.4216283 21.812311 -1.8749582 --0.2878615 21.820463 -1.8754821 --0.15397526 21.822815 -1.8755695 --0.020076625 21.830322 -1.8761808 -0.11390834 21.837008 -1.8767921 -0.2480762 21.851837 -1.8781893 -0.3823781 21.86285 -1.8793246 -0.51663643 21.865072 -1.8797612 -0.65075862 21.860495 -1.879674 -0.78491557 21.857086 -1.8797612 -0.91918075 21.855841 -1.8801106 -1.0531725 21.847799 -1.8799359 -1.1872082 21.840925 -1.8799359 -1.3221016 21.848145 -1.8812459 -1.455008 21.822723 -1.8797612 -1.5882312 21.804443 -1.8789753 -1.7214417 21.787336 -1.878364 -1.693541 19.879532 -1.7114772 -1.8041593 19.744761 -1.7005609 -1.930596 19.787849 -1.705364 -2.0542371 19.79743 -1.7072853 -2.1711006 19.742863 -1.7036175 -2.3039241 19.830101 -1.712525 -2.4198682 19.769117 -1.7084205 -2.5263824 19.639286 -1.6982903 -2.6162169 19.396349 -1.6782045 -2.7364342 19.388807 -1.6789905 -3.1760521 21.547712 -1.8718143 -3.3085091 21.529787 -1.8719889 -3.4408658 21.511049 -1.8721635 -3.5734437 21.493462 -1.8725129 -3.704411 21.466223 -1.8720763 -3.8351784 21.438187 -1.8716396 -3.9661043 21.411312 -1.8713776 -2.7044377 14.11519 -1.2223439 -4.2302961 21.369823 -1.8721635 -4.3637323 21.355177 -1.8732115 -3.0533509 14.488019 -1.2604196 -3.1379628 14.449542 -1.2586731 -3.2413442 14.496123 -1.2646115 -4.888957 21.252333 -1.8741722 -3.5576959 15.041766 -1.3174459 -5.1547976 21.213003 -1.8761808 -5.2863078 21.186773 -1.8767047 -3.425801 13.379463 -1.1731774 -3.5073254 13.356263 -1.1730027 -5.6715078 21.071451 -1.8753948 -5.7972507 21.023769 -1.8742595 -4.027317 14.262523 -1.2616423 -4.0580602 14.041354 -1.2437397 -4.1271944 13.958872 -1.2384999 -4.1922989 13.865582 -1.2322996 -4.2720032 13.822466 -1.2307276 -4.338738 13.738997 -1.2254878 -4.4202051 13.703583 -1.2247019 -4.5060754 13.68188 -1.2252258 -4.578197 13.619037 -1.2219946 -4.7363315 13.808359 -1.2421678 -4.7749143 13.647396 -1.2299416 -4.8622451 13.628162 -1.2309023 -5.016593 13.792799 -1.2490668 -5.1956453 14.016763 -1.2729079 -5.4082499 14.320118 -1.3043464 -5.5807772 14.507018 -1.3250436 -5.6867628 14.516097 -1.3291481 -5.6288505 14.112659 -1.2943909 -5.7097178 14.06401 -1.2930809 -5.8369842 14.128147 -1.3025125 -5.9370728 14.124208 -1.3055691 -5.9758468 13.975765 -1.2949148 -6.0960484 14.018313 -1.3025125 -6.1831565 13.983378 -1.3027745 -6.3999438 14.236838 -1.3308073 -6.5368576 14.306031 -1.3412869 -6.6899629 14.406603 -1.3549103 -9.19522 19.487997 -1.8514664 -9.3116093 19.424921 -1.8508551 -9.4328032 19.371899 -1.8512918 -9.5554638 19.321693 -1.8520777 -9.6827803 19.280502 -1.8538244 -9.816287 19.2509 -1.8567935 -9.9429245 19.207115 -1.8584528 -10.06615 19.156328 -1.8595008 -10.183501 19.094202 -1.8595008 -10.295729 19.022598 -1.8586274 -10.384922 18.909294 -1.8536497 -10.485721 18.818241 -1.8509425 -10.590695 18.735336 -1.8491086 -10.711896 18.681234 -1.8502438 -10.836336 18.63238 -1.8519905 -10.96058 18.582699 -1.853737 -11.083599 18.530485 -1.855309 -11.206906 18.478313 -1.8569683 -11.317467 18.404957 -1.8565316 -11.424388 18.325869 -1.8555709 -11.530232 18.245319 -1.8545229 -11.634444 18.162485 -1.8533003 -11.741871 18.084906 -1.852689 -11.854807 18.015848 -1.8530384 -11.972864 17.954372 -1.854261 -12.085593 17.884697 -1.8546977 -12.201859 17.820068 -1.8557457 -12.308699 17.74159 -1.8553963 -12.416182 17.664101 -1.8552216 -12.528378 17.593264 -1.8558329 -12.630847 17.508789 -1.855047 -12.738041 17.430958 -1.855047 -12.841792 17.348467 -1.8546103 -12.945608 17.266157 -1.854261 -13.047091 17.180845 -1.8536497 -13.151051 17.098888 -1.8534751 -13.25021 17.010799 -1.852689 -13.350019 16.923702 -1.8520777 -13.448635 16.835243 -1.8513792 -13.55356 16.75473 -1.8516412 -13.656742 16.672022 -1.8517284 -13.743519 16.56951 -1.8496325 -13.867352 16.51157 -1.852689 -13.991635 16.453489 -1.8558329 -13.054977 15.162468 -1.7164549 -13.092127 15.01825 -1.7090318 -13.121408 14.86668 -1.7007356 -13.136713 14.701206 -1.6907799 -13.167192 14.554575 -1.6830076 -13.221263 14.435308 -1.6784666 -13.359032 14.407238 -1.6848415 -13.470362 14.349692 -1.6878108 -13.56296 14.271825 -1.6884221 -13.694476 14.234281 -1.6940112 -13.954623 14.327683 -1.7157563 -14.042973 14.242499 -1.7158436 -14.141358 14.167346 -1.7172408 -14.240767 14.092923 -1.7188128 -14.337656 14.015723 -1.7201227 -14.426969 13.930945 -1.7205594 -14.520825 13.850412 -1.7216073 -14.632363 13.786329 -1.7248385 -14.742202 13.720041 -1.727895 -14.859844 13.66034 -1.7319123 -15.015656 13.634534 -1.7404705 -15.151687 13.589368 -1.746671 -15.269084 13.52653 -1.7506881 -15.478493 13.543449 -1.7654468 -15.612554 13.492515 -1.7713852 -15.814006 13.498003 -1.7850959 -15.954414 13.449514 -1.791733 -16.081808 13.388974 -1.7968855 -16.255993 13.365969 -1.8073651 -16.36554 13.288579 -1.8105088 -16.456873 13.196013 -1.8116442 -16.561743 13.113958 -1.8143514 -16.767458 13.11027 -1.8283241 -16.916185 13.060104 -1.8359218 -17.086317 13.024912 -1.8458774 -17.289282 13.012683 -1.8594135 -17.495934 13.000826 -1.8732989 -17.754492 13.024632 -1.8927734 -17.97204 13.015367 -1.9077067 -18.146378 12.972631 -1.9179243 -18.389235 12.976492 -1.9354775 -0 0 -0 -18.901724 12.993646 -1.9732039 -19.21851 13.038499 -1.9983549 -19.414867 12.998476 -2.0106683 -19.619764 12.962024 -2.0238552 -19.767359 12.886005 -2.0310161 -19.917269 12.810278 -2.0384393 -19.972786 12.673416 -2.0360813 -20.045107 12.547455 -2.0355573 -20.065777 12.389682 -2.0297935 -20.126957 12.257518 -2.0283089 -20.153965 12.105066 -2.0234184 -20.187578 11.957314 -2.0193141 -20.224438 11.812119 -2.0156462 -0 0 -0 -20.216265 11.476974 -2.0003633 -20.296738 11.358552 -2.0014114 -0 0 -0 -20.243801 11.0049 -1.9823736 -20.263527 10.855077 -1.9776578 -20.364109 10.748673 -1.9810636 -20.39963 10.607893 -1.9780945 -20.443941 10.472077 -1.9760858 -0 0 -0 -0 0 -0 -20.409527 9.9845524 -1.9542534 -20.449764 9.8491907 -1.9522449 -20.515213 9.7260885 -1.9527688 -0 0 -0 -20.517143 9.4203949 -1.9415907 -0 0 -0 -0 0 -0 -20.499029 8.9589615 -1.9236007 -20.47765 8.8003654 -1.9163524 -20.495474 8.6594296 -1.9129465 -0 0 -0 -20.51811 8.373764 -1.9051741 -20.490511 8.2161951 -1.8977512 -0 0 -0 -0 0 -0 -20.400797 7.7474499 -1.8754821 -20.419949 7.6116881 -1.8728622 -20.353065 7.4448409 -1.8622954 -20.404928 7.3221722 -1.8629067 -20.424101 7.1879025 -1.8605487 -20.421677 7.0465245 -1.8562696 -20.428669 6.9089584 -1.852951 -20.437582 6.7725124 -1.8498945 -20.447485 6.6368327 -1.8470126 -20.444151 6.497364 -1.8429955 -20.454145 6.3626256 -1.8402883 -20.439432 6.220758 -1.8353978 -20.411337 6.0756159 -1.829372 -20.40519 5.9377337 -1.8254422 -20.368416 5.7917099 -1.8188052 -20.358458 5.6540928 -1.8147007 -20.362001 5.5207267 -1.8119061 -20.399343 5.3967028 -1.8122555 -20.436897 5.2726779 -1.8126922 -20.470797 5.147666 -1.8128668 -20.518446 5.0259919 -1.8143514 -20.541145 4.89815 -1.8136528 -20.587311 4.775847 -1.8151374 -20.624001 4.6511893 -1.815836 -20.657991 4.5258341 -1.81636 -20.691217 4.4002376 -1.8168839 -20.722706 4.2742019 -1.8173206 -20.776871 4.1526318 -1.8198532 -20.781422 4.0210948 -1.8180193 -20.84487 3.9008369 -1.8215125 -20.868412 3.772862 -1.8215125 -20.958883 3.6565595 -1.8275381 -21.04085 3.537967 -1.8328652 -21.060196 3.4084778 -1.8326906 -21.078745 3.2788844 -1.832516 -21.110291 3.1512511 -1.8335639 -21.142048 3.023495 -1.8346992 -21.179941 2.8964126 -1.8364458 -21.215096 2.7687213 -1.8380177 -21.277159 2.6441479 -1.8420348 -21.304855 2.5149455 -1.8430828 -21.361465 2.3888247 -1.8467506 -21.384636 2.2586501 -1.8475367 -21.414946 2.1290698 -1.8490212 -21.454386 2.0001271 -1.8513792 -21.503967 1.871731 -1.8546977 -21.534906 1.7413561 -1.8564442 -21.544191 1.6091135 -1.856357 -21.575523 1.4783891 -1.8582782 -21.604074 1.3472167 -1.8600248 -21.613922 1.2147431 -1.8601995 -21.642859 1.0831957 -1.8621206 -21.669001 0.95125133 -1.8638673 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -17.330353 -0.090483397 -1.4817129 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -17.366207 -0.83722013 -1.4866034 -17.367704 -0.94413978 -1.4872147 -17.376501 -1.0515906 -1.4885246 -17.373697 -1.158456 -1.488874 -17.378183 -1.2659054 -1.4899219 -17.388958 -1.3740026 -1.4915812 -17.388142 -1.4813496 -1.4922798 -0 -0 -0 -0 -0 -0 -19.669609 -2.0409768 -1.6960198 -19.303209 -2.1227612 -1.6648431 -19.503559 -2.2659919 -1.6837063 -19.293505 -2.3616598 -1.666415 -15.746406 -2.0256858 -1.3542117 -15.218339 -2.0527666 -1.3086256 -14.701404 -2.0749769 -1.2640002 -13.869416 -2.044445 -1.1914293 -13.28159 -2.0411544 -1.1404288 -12.739597 -2.0379677 -1.0934454 -12.327879 -2.0497732 -1.0579896 -11.920438 -2.0572832 -1.0228832 -12.261592 -2.1937094 -1.0544091 -11.745407 -2.1758344 -1.009609 -11.875658 -2.2754138 -1.0224465 -11.729548 -2.3221259 -1.010657 -11.688726 -2.388669 -1.0082991 -11.679699 -2.4615772 -1.008823 -11.500828 -2.4976838 -0.99415171 -11.465842 -2.5638573 -0.99240512 -11.355724 -2.6125009 -0.9839341 -11.323001 -2.6782315 -0.98244953 -11.325714 -2.752362 -0.98419613 -11.317312 -2.8239737 -0.98498207 -11.000605 -2.8167701 -0.95790988 -11.105481 -2.9163451 -0.96900076 -11.046014 -2.9732995 -0.9652456 -11.031404 -3.0420799 -0.96559489 -10.861055 -3.0669425 -0.95179683 -7.9240756 -2.2903018 -0.68552881 -7.9270687 -2.3439636 -0.68710077 -7.906816 -2.3908293 -0.68657678 -7.8843832 -2.4369466 -0.68587816 -7.8892307 -2.4915776 -0.68771207 -7.883275 -2.5429959 -0.6885854 -7.9394336 -2.6150002 -0.69522244 -10.721091 -3.6041098 -0.95398009 -10.589469 -3.6323361 -0.9438498 -10.502101 -3.6745453 -0.93782407 -10.607899 -3.7847729 -0.94978821 -10.578859 -3.8477476 -0.94926429 -10.55038 -3.9108548 -0.94882762 -10.064875 -3.8013086 -0.90559947 -7.2074389 -2.7728829 -0.63941878 -7.1624627 -2.8061543 -0.63679892 -7.1284542 -2.8434069 -0.63522696 -10.176234 -4.1314759 -0.92524862 -10.176473 -4.2044883 -0.92769384 -10.131197 -4.2587447 -0.92585993 -10.0719 -4.3067298 -0.92271608 -10.119283 -4.4006252 -0.92978978 -9.0033312 -3.9812412 -0.82543087 -10.26532 -4.6147342 -0.94908959 -10.122645 -4.6254716 -0.93808609 -10.180812 -4.7277718 -0.94646972 -5.5009856 -2.5959055 -0.49567428 -5.4687843 -2.6218593 -0.49410233 -5.3925853 -2.6261473 -0.48825124 -5.3388658 -2.6406393 -0.48458341 -5.3501601 -2.687207 -0.48729062 -5.3380084 -2.7222471 -0.48772728 -15.964769 -8.2645397 -1.5383898 -15.903176 -8.356781 -1.5373418 -15.832263 -8.4438915 -1.5354207 -15.7565 -8.5280752 -1.5330627 -15.676807 -8.6097288 -1.5303555 -15.616722 -8.7018795 -1.5296569 -15.557832 -8.7945967 -1.5291328 -14.027524 -8.0435553 -1.3799739 -13.92107 -8.0964212 -1.3742101 -3.4843967 -2.0555716 -0.31708521 -6.95471 -4.160099 -0.67286605 -3.4691305 -2.1043746 -0.31813318 -3.4510615 -2.1224904 -0.31760919 -13.593461 -8.4743166 -1.3666998 -13.574051 -8.5783195 -1.3701056 -13.561424 -8.6872377 -1.3742975 -13.534602 -8.7876444 -1.377092 -13.432992 -8.8393145 -1.3721142 -13.352809 -8.904438 -1.3694071 -13.28389 -8.9767199 -1.3679224 -4.3381615 -2.9708197 -0.42336535 -4.3018441 -2.9848897 -0.42144409 -4.2736683 -3.0043552 -0.42039615 -14.350636 -10.219354 -1.5068638 -14.290085 -10.308964 -1.5071259 -14.239429 -10.405855 -1.5085231 -14.196131 -10.508441 -1.5107937 -5.4746947 -4.1050935 -0.56230676 -5.4620972 -4.1482477 -0.56370401 -5.5091891 -4.2375569 -0.57173836 -5.4988022 -4.2835236 -0.57348496 -13.778725 -10.869244 -1.5009254 -13.669743 -10.920009 -1.4962096 -13.551363 -10.96233 -1.4904459 -13.424504 -10.996667 -1.4837215 -13.333008 -11.059116 -1.4810143 -13.245829 -11.124701 -1.4788311 -13.167454 -11.197378 -1.4776957 -2.8979399 -2.495574 -0.29769805 -2.871309 -2.5034895 -0.29638809 -2.8558939 -2.5210605 -0.29638809 -2.8344285 -2.5332265 -0.29568946 -2.8099666 -2.5425508 -0.29464149 -3.5260074 -3.2298741 -0.38162181 -3.490052 -3.2365475 -0.37970054 -3.4519691 -3.2408566 -0.37751731 -3.4717355 -3.2997191 -0.38232043 -3.4822931 -3.350657 -0.38607562 -2.5817397 -2.5149779 -0.27839819 -2.5754812 -2.5398641 -0.27953348 -2.554913 -2.5506928 -0.27892217 -2.5574331 -2.5847309 -0.28119275 -2.5645058 -2.6238818 -0.28407463 -2.8175428 -2.9183264 -0.31804585 -2.8827808 -3.0227807 -0.32861272 -10.72105 -11.379106 -1.3329905 -10.625916 -11.417693 -1.3297594 -2.9149728 -3.1714025 -0.3400529 -7.6582613 -8.4342747 -0.96114111 -2.8951247 -3.228441 -0.34258547 -10.133766 -11.439401 -1.3021632 -2.7588573 -3.1535203 -0.329748 -9.9307432 -11.491294 -1.2938669 -9.8348236 -11.522462 -1.2904611 -7.4139013 -8.794981 -0.97083467 -9.7819204 -11.749462 -1.3026872 -9.5913296 -11.665372 -1.2863566 -9.4975939 -11.696937 -1.2833 -9.3801498 -11.698259 -1.276925 -9.3026285 -11.748566 -1.276139 -9.2168655 -11.78816 -1.2742177 -9.1254892 -11.820048 -1.2715105 -9.0370884 -11.855221 -1.2692399 -8.935421 -11.872244 -1.2650481 -8.8142776 -11.862081 -1.2579744 -8.6888838 -11.844455 -1.2502021 -8.6125383 -11.892705 -1.2496781 -8.3789225 -11.72085 -1.2254878 -8.3102932 -11.776925 -1.2260118 -8.2133913 -11.792545 -1.2222567 -8.1352358 -11.834511 -1.2213833 -7.9360676 -11.6979 -1.2016468 -2.8389881 -4.240953 -0.40982926 -2.8332305 -4.2890458 -0.41306046 -7.6633682 -11.756041 -1.1926519 -7.5964794 -11.811219 -1.1935252 -7.4480724 -11.738168 -1.1811243 -7.3806653 -11.791247 -1.1819104 -7.3134103 -11.844788 -1.1827836 -7.2255678 -11.864766 -1.1802511 -7.0382452 -11.718442 -1.1607766 -2.6802871 -4.5257516 -0.42354 -2.6494527 -4.5369511 -0.42301604 -2.6016791 -4.5185919 -0.41952285 -6.5567274 -11.549783 -1.126718 -6.514926 -11.641954 -1.1319578 -6.4760885 -11.741025 -1.1378962 -6.3563452 -11.693019 -1.1291633 -6.2901235 -11.742338 -1.1302112 -6.2244658 -11.793047 -1.1314338 -5.9037995 -11.353756 -1.0842758 -1.2491074 -2.4393272 -0.20268342 -5.9515953 -11.797115 -1.1207796 -5.8728919 -11.820921 -1.119557 -1.2118758 -2.478013 -0.20425536 -5.6742182 -11.781708 -1.1088154 -5.5920043 -11.7956 -1.1068069 -5.5174165 -11.825175 -1.1063702 -1.094995 -2.3856966 -0.19255319 -1.0590096 -2.3451629 -0.18801205 -1.0352954 -2.3306789 -0.18600348 -1.0169855 -2.3278596 -0.18513018 -0.99560273 -2.3175817 -0.18355824 -0.97554773 -2.3098824 -0.18224829 -0.96212041 -2.3176649 -0.18242295 -4.9023042 -12.012485 -1.0998205 -4.8181233 -12.016449 -1.0973753 -4.7077923 -11.9531 -1.0886424 -0.91932797 -2.3777421 -0.18591614 -4.6300774 -12.192502 -1.1057589 -4.4626198 -11.972389 -1.0825293 -4.3989992 -12.026677 -1.0850618 -4.3291602 -12.064694 -1.0861098 -1.1674213 -3.3181908 -0.27080053 -1.1392405 -3.302691 -0.26870462 -4.0824175 -12.071561 -1.07956 -3.9656527 -11.96778 -1.0676832 -3.8764594 -11.943564 -1.0632294 -3.8049126 -11.972821 -1.0637534 -3.7402544 -12.024479 -1.0663732 -0.98615819 -3.2413661 -0.25944766 -0.96482992 -3.2425821 -0.25901103 -0.95465797 -3.2819188 -0.26206756 -0.96175045 -3.3835335 -0.27080053 -3.3384542 -12.021251 -1.0561557 -0.91468215 -3.3748903 -0.26896659 -0.89191866 -3.3727348 -0.26826796 -3.1049192 -12.035328 -1.0520512 -3.0400028 -12.089899 -1.0552824 -2.9671855 -12.11413 -1.0558064 -2.896034 -12.145674 -1.057029 -1.9042574 -8.2097807 -0.70124817 -0.71654361 -3.1787996 -0.24809483 -0.6948933 -3.1734056 -0.24722153 -1.7851481 -8.3954449 -0.71487159 -1.726356 -8.3711176 -0.71172774 -1.6743735 -8.3786221 -0.71146572 -1.6286097 -8.4180794 -0.71408564 -2.2738614 -12.151728 -1.0462002 -2.1948259 -12.140944 -1.0440168 -1.4317757 -8.2081614 -0.69286454 -2.0648363 -12.28092 -1.0541471 -1.3887211 -8.5820808 -0.72456515 -1.9393958 -12.468735 -1.0686438 -1.8606461 -12.465621 -1.0673339 -1.7789048 -12.440315 -1.0641026 -1.6963294 -12.405595 -1.0600855 -1.6146339 -12.373295 -1.0563303 -1.5375766 -12.374071 -1.0555444 -1.4541464 -12.319958 -1.0499552 -1.3785253 -12.328648 -1.0499552 -1.3052591 -12.359659 -1.0519639 -1.2313685 -12.387261 -1.0537105 -0.35753405 -3.8386552 -0.30040526 -1.062417 -12.207916 -1.0366812 -0.99841273 -12.349245 -1.048558 -0.9188354 -12.304475 -1.0441042 -0.84665704 -12.35858 -1.0483834 -0.24203457 -3.8865919 -0.3038111 -0.21840601 -3.8919823 -0.30416045 -0.61858428 -12.363115 -1.0475974 -0.54315102 -12.376631 -1.0484707 -0.46501839 -12.321993 -1.0434055 -0.38776577 -12.27284 -1.0388645 -0.32037282 -12.585694 -1.0661113 -0.24343148 -12.602364 -1.0674212 -0.16645555 -12.630514 -1.0697792 -0.089023501 -12.641259 -1.0706524 -0.011325684 -12.502103 -1.0584263 --0.06550508 -12.524848 -1.0604348 --0.14227584 -12.517238 -1.0598235 --0.2209395 -12.622705 -1.0691679 --0.29645872 -12.539447 -1.0620068 --0.37108311 -12.459724 -1.0551951 --0.4542453 -12.644374 -1.0716131 --0.53177935 -12.640353 -1.0715257 --0.60841811 -12.617948 -1.0698664 --0.68107241 -12.526442 -1.0621815 --0.76104838 -12.573734 -1.0667226 --0.83758873 -12.559881 -1.0659366 --0.92201877 -12.655848 -1.0748442 --1.0045984 -12.712517 -1.080346 --1.0830892 -12.712069 -1.08087 --1.168772 -12.789508 -1.088293 --1.2470315 -12.780112 -1.0881183 --1.3228555 -12.747449 -1.0859351 --1.4007208 -12.736121 -1.0856731 --1.4859685 -12.788637 -1.0910876 --1.5686456 -12.813888 -1.0941441 --1.6449531 -12.786236 -1.0925722 --1.709131 -12.670267 -1.0832279 --1.810923 -12.83019 -1.0983359 --1.8912112 -12.829678 -1.0992966 --1.969897 -12.817832 -1.0992966 --2.0513406 -12.82321 -1.1008685 --2.1406021 -12.874257 -1.1065449 --2.2469976 -13.019911 -1.1206923 --2.3347373 -13.050006 -1.1246221 --2.4261963 -13.097145 -1.1301239 --2.5203829 -13.154412 -1.1365863 --2.5973744 -13.120132 -1.134927 --2.6634707 -13.033675 -1.1286393 --2.7631128 -13.110665 -1.137023 --2.8492136 -13.119749 -1.1393808 --2.9398768 -13.147712 -1.1434853 --3.0343397 -13.189616 -1.1488998 --3.1159003 -13.173658 -1.1491617 --3.1479852 -12.953913 -1.1310846 --3.2826319 -13.155694 -1.151083 --3.3884933 -13.23374 -1.1599907 --3.4554629 -13.158742 -1.1551001 --3.5224168 -13.086308 -1.1504717 --3.5976155 -13.046203 -1.1488124 --3.6773272 -13.022923 -1.1487252 --3.7621431 -13.017342 -1.150297 --3.86115 -13.058973 -1.1562355 --3.9544666 -13.078899 -1.1602526 --4.026113 -13.026788 -1.1577201 --4.0129805 -12.707355 -1.1306479 --4.0982146 -12.705247 -1.1327437 --4.2966828 -13.046039 -1.1665404 --4.3864903 -13.048701 -1.1692475 --4.4700279 -13.031906 -1.1702082 --4.6258955 -13.221441 -1.1903813 --4.7173104 -13.221895 -1.1930885 --4.779964 -13.142147 -1.1883727 --4.8708992 -13.140593 -1.1909926 --4.9194102 -13.025651 -1.1830456 --4.9591851 -12.891088 -1.1732647 --5.0494537 -12.88917 -1.175972 --5.0682931 -12.70712 -1.1617372 --4.9621887 -12.222577 -1.1188583 --5.1051755 -12.356707 -1.1344904 --5.3843207 -12.809123 -1.180513 --5.5360494 -12.94713 -1.1968437 --5.6165786 -12.915659 -1.1971056 --1.5750866 -3.5613592 -0.3038111 --1.5969089 -3.5516276 -0.3038111 --1.6149454 -3.5336075 -0.30302516 --6.0518417 -13.03234 -1.222082 --6.1410446 -13.014781 -1.2240032 --1.6560311 -3.453876 -0.29822201 --1.6719594 -3.4329019 -0.29717407 --1.6775361 -3.391325 -0.29411754 --1.6929487 -3.370285 -0.29306957 --1.7199317 -3.3722584 -0.29429218 --1.7396752 -3.3598723 -0.29411754 --1.7630384 -3.3544257 -0.29464149 --4.5033989 -8.4434566 -0.80132788 --4.7201285 -8.7205477 -0.83171862 --6.8393316 -12.453052 -1.2079346 --1.8390107 -3.2997057 -0.29359356 --1.8606933 -3.2909615 -0.29385555 --1.8778782 -3.2742972 -0.29333156 --7.4263415 -12.768862 -1.2573631 --7.4534359 -12.636392 -1.2485428 --7.59168 -12.692157 -1.2589351 --7.6745806 -12.653854 -1.2598083 --7.7713847 -12.637923 -1.2630396 --7.8740788 -12.630579 -1.2672313 --7.9359975 -12.557605 -1.2646989 --8.0053778 -12.496931 -1.2634763 --8.060751 -12.414989 -1.2600703 --8.1581316 -12.397752 -1.2634763 --8.2456551 -12.364865 -1.2653102 --8.3024063 -12.285975 -1.2623409 --8.5943127 -12.551258 -1.2959628 --8.6160841 -12.418894 -1.2874918 --8.5517759 -12.166118 -1.2660961 --9.2104549 -12.933811 -1.3543863 --9.3496714 -12.960268 -1.3633813 --9.4448872 -12.924372 -1.3657392 --9.8274603 -13.276132 -1.4104519 --10.048568 -13.40209 -1.4308871 --10.272792 -13.527414 -1.4514968 --10.407223 -13.531247 -1.4589199 --10.517599 -13.502501 -1.4628497 --10.571254 -13.400951 -1.4587452 --10.290184 -12.881286 -1.4077448 --10.301992 -12.735031 -1.3984004 --10.455688 -12.764058 -1.40888 --10.766573 -12.980298 -1.4408426 --10.862674 -12.933825 -1.4431132 --10.912789 -12.832779 -1.4391834 --10.975725 -12.747459 -1.4370874 --11.081228 -12.711412 -1.4407554 --11.143195 -12.625255 -1.4386594 --11.196557 -12.529902 -1.4355155 --11.271893 -12.459487 -1.4353409 --11.469237 -12.522324 -1.4510602 --11.148951 -12.023646 -1.3998851 --11.189109 -11.919421 -1.3956059 --11.375262 -11.969692 -1.4100153 --11.826277 -12.292361 -1.4577845 --11.927195 -12.24597 -1.4610158 --11.270533 -11.430554 -1.369669 --11.341161 -11.36189 -1.3697563 --12.375036 -12.246488 -1.4886993 --12.388685 -12.110437 -1.4811889 --12.482108 -12.052877 -1.4835469 --12.486629 -11.910053 -1.4751632 --12.666053 -11.933636 -1.4880006 --12.879777 -11.98668 -1.5048553 --13.008086 -11.95799 -1.511405 --13.095963 -11.891342 -1.5131515 --13.148659 -11.792805 -1.5107937 --13.129055 -11.630651 -1.5000521 --10.053705 -8.7966547 -1.1335298 --13.201451 -11.408735 -1.4920177 --13.270448 -11.326871 -1.4919305 --13.368641 -11.269631 -1.495249 --10.290291 -8.5670347 -1.1362369 --10.315732 -8.4815884 -1.1331804 --10.391553 -8.4376001 -1.1358876 --13.811385 -11.074635 -1.5143741 --13.860334 -10.974839 -1.5122783 --13.84109 -10.822089 -1.502672 --13.891462 -10.724783 -1.5009254 --10.689057 -8.1480875 -1.1406908 --14.023618 -10.554704 -1.5011001 --14.091314 -10.470834 -1.5014493 --14.151281 -10.381228 -1.5010127 --14.210679 -10.291281 -1.5005761 --14.278419 -10.207368 -1.5011001 --14.380664 -10.147709 -1.5053792 --14.478625 -10.084332 -1.5092217 --14.56732 -10.013927 -1.5121036 --14.650747 -9.939455 -1.5144615 --14.738775 -9.8676624 -1.5173434 --14.818993 -9.7902203 -1.5194393 --14.902151 -9.7143412 -1.5218846 --14.993315 -9.643198 -1.525203 --15.053885 -9.5520868 -1.5253778 --15.126566 -9.468524 -1.5268623 --15.206417 -9.3891392 -1.5291328 --15.286714 -9.3096476 -1.5314908 --15.359774 -9.225421 -1.5331501 --15.43409 -9.1416636 -1.534984 --15.506235 -9.0563354 -1.5366433 --15.580504 -8.9719572 -1.5385644 --15.649122 -8.884057 -1.5399617 --15.707685 -8.7903013 -1.5403984 --6.7647128 -3.7310705 -0.6396808 --6.7647233 -3.6771219 -0.63741022 --15.819407 -8.4742823 -1.5356826 --15.827939 -8.3542709 -1.5314034 --15.866529 -8.2505608 -1.5301808 --7.2714119 -3.7243714 -0.67862982 --7.0575495 -3.560323 -0.6554001 --6.936522 -3.4460297 -0.6414274 --6.9530616 -3.4012141 -0.64099073 --6.9711075 -3.3571901 -0.64072877 --6.9861751 -3.3117924 -0.64020479 --6.7563062 -3.1521816 -0.61601448 --16.904072 -7.761384 -1.5930581 --16.951376 -7.6575165 -1.5930581 --16.978926 -7.5448651 -1.5912242 --7.33002 -3.203253 -0.66369641 --7.3248253 -3.1475964 -0.66133857 --17.266335 -7.2950349 -1.6056336 --17.321812 -7.1935382 -1.6066816 --17.386837 -7.0957761 -1.6086901 --17.446692 -6.9956326 -1.610262 --17.561583 -6.9169269 -1.6170738 --17.605553 -6.8097596 -1.6172484 --17.66563 -6.7086792 -1.6189951 --17.723263 -6.6064219 -1.620567 --17.791533 -6.5078168 -1.6231868 --17.867697 -6.4116502 -1.6265928 --17.951805 -6.31777 -1.6307845 --18.031668 -6.2217989 -1.634627 --18.093096 -6.1190209 -1.6368103 --18.158669 -6.0172896 -1.6394302 --18.214199 -5.9119081 -1.6411768 --18.26532 -5.8048644 -1.6425741 --18.313911 -5.6968241 -1.6437967 --12.374086 -3.765897 -1.0963273 --18.421587 -5.4833078 -1.6473771 --13.182655 -3.8358901 -1.1660163 --18.618761 -5.2941637 -1.6593413 --18.702726 -5.1942172 -1.6640571 --18.750589 -5.0837936 -1.6655418 --12.777818 -3.3802514 -1.1211289 --12.795424 -3.301038 -1.1208669 --12.830895 -3.226352 -1.1222643 --18.940338 -4.6394029 -1.6719168 --12.395678 -2.9556539 -1.07956 --18.943443 -4.3944693 -1.667201 --18.928265 -4.2687273 -1.6634458 --13.288736 -2.9112017 -1.1550128 --18.652803 -3.9667034 -1.6341904 --18.688499 -3.8545923 -1.6352384 --18.557455 -3.708998 -1.6214403 --18.543676 -3.5880589 -1.6182091 --18.553593 -3.4720104 -1.6171612 --18.586311 -3.3602293 -1.6182091 --18.654665 -3.2545128 -1.6224883 --18.698843 -3.1441188 -1.6246715 --18.727617 -3.0309174 -1.6255448 --18.839375 -2.9304979 -1.633841 --18.905279 -2.8220541 -1.6381202 --19.17765 -2.7425313 -1.6607386 --19.246428 -2.6319623 -1.6653671 --19.449896 -2.5383165 -1.6819597 --19.602516 -2.4360054 -1.6940985 --19.979181 -2.3584304 -1.7260611 --20.058617 -2.2431042 -1.7318249 --20.14135 -2.1273103 -1.7379379 --20.353273 -2.0234983 -1.7554913 --20.889017 -1.9474088 -1.8016013 --22.314779 -1.9423203 -1.9260459 --22.488125 -1.8184533 -1.9402807 --22.506807 -1.6810282 -1.9409794 --22.517693 -1.5429657 -1.9410666 --22.552586 -1.406383 -1.9433372 --22.572725 -1.2686476 -1.9443852 --22.478601 -1.1250391 -1.9354775 --22.560719 -0.99041355 -1.9421146 --22.536507 -0.85083693 -1.9394947 --22.56719 -0.71335828 -1.9417653 --19.574688 1.4431789 -1.9282776 --19.546619 1.5617529 -1.9263839 --19.527746 1.6808908 -1.9254869 --19.508148 1.7998559 -1.9245899 --19.491787 1.919034 -1.9240916 --19.46777 2.0373538 -1.9228956 --19.450945 2.1563287 -1.9224969 --19.426477 2.2743633 -1.9214005 --19.403269 2.3924227 -1.9205035 --19.378357 2.5101552 -1.9195069 --19.359632 2.6286094 -1.9192078 --19.337227 2.7465086 -1.9186099 --19.316074 2.8645239 -1.9182112 --19.288301 2.9814706 -1.9172145 --19.259821 3.0981843 -1.9162178 --19.211987 3.2115426 -1.9133275 --19.170351 3.3256218 -1.9111348 --19.123144 3.4384305 -1.9084438 --19.069405 3.5496922 -1.9051548 --19.030655 3.6634345 -1.9034605 --0 0 -0 --18.977444 3.8952932 -1.9027628 --18.947344 4.0104265 -1.9021648 --18.936962 4.1297908 -1.9036598 --18.899616 4.2432919 -1.9024638 --18.869347 4.3582821 -1.9020652 --18.828695 4.4707608 -1.9006698 --18.794144 4.5845566 -1.8999721 --18.752146 4.696404 -1.8985767 --18.714304 4.8091469 -1.8976798 --18.673859 4.9210954 -1.8965834 --18.628902 5.0316906 -1.8950884 --18.588089 5.1432467 -1.8940917 --18.541821 5.2531352 -1.8925967 --18.50255 5.3648667 -1.8918991 --18.467375 5.4777288 -1.8916998 --18.462934 5.599894 -1.8947895 --18.450085 5.7198534 -1.8970817 --18.456377 5.8461761 -1.9014671 --18.459919 5.9721785 -1.9056531 --18.455051 6.0959468 -1.9090418 --18.441814 6.2173362 -1.9116331 --18.436249 6.3417063 -1.9151216 --18.433607 6.4675589 -1.9190085 --18.428238 6.5929475 -1.9226962 --18.411743 6.7147622 -1.9252875 --18.422424 6.8470235 -1.9308689 --18.416355 6.9736767 -1.9347559 --18.406639 7.0994387 -1.9383439 --18.393293 7.2242517 -1.941633 --18.372641 7.3465819 -1.9442242 --18.353022 7.4696798 -1.9470149 --18.328905 7.5912905 -1.949407 --18.325993 7.7221603 -1.954191 --18.332222 7.8575921 -1.9600713 --18.306467 7.9798698 -1.962563 --18.291725 8.1073694 -1.9663504 --18.264315 8.2296734 -1.968842 --18.242422 8.354846 -1.9720314 --18.218779 8.47964 -1.9751211 --18.197887 8.6061592 -1.9786094 --18.168953 8.7292929 -1.9813005 --18.149029 8.8571968 -1.9850878 --18.140697 8.9913702 -1.9902705 --18.149178 9.1347227 -1.9974465 --18.120253 9.2599497 -2.0005362 --18.141699 9.4117451 -2.0094066 --18.121466 9.5428209 -2.0136921 --18.086264 9.6664972 -2.0163832 --18.0511 9.790575 -2.0191739 --18.000275 9.9064283 -2.0202703 --17.947838 10.021541 -2.0212669 --17.913713 10.147173 -2.0244563 --17.870094 10.267805 -2.026649 --17.831686 10.391791 -2.0295393 --17.797567 10.518729 -2.0330276 --17.77195 10.651267 -2.0376124 --17.759829 10.792671 -2.0438914 --17.700895 10.906138 -2.0447884 --17.653896 11.027196 -2.0471804 --17.613644 11.152878 -2.0504694 --17.584234 11.286006 -2.0551538 --17.540508 11.41051 -2.0582435 --17.493425 11.533258 -2.0610342 --17.470312 11.672442 -2.0668149 --17.433792 11.803408 -2.0711005 --17.385653 11.927045 -2.0740905 --17.333385 12.048264 -2.0766819 --17.312822 12.192208 -2.0832598 --17.264416 12.31728 -2.0865488 --17.227221 12.45096 -2.0913329 --17.198668 12.5917 -2.0973129 --17.122683 12.698177 -2.0975122 --17.070698 12.822723 -2.1008012 --17.004368 12.936866 -2.102396 --16.900236 13.022131 -2.0993063 --16.760401 13.079058 -2.0917315 --16.607233 13.124271 -2.0824625 --16.326746 13.066131 -2.056848 --16.151186 13.089002 -2.044589 --15.905203 13.052138 -2.0231607 --15.671764 13.022293 -2.0032272 --15.468228 13.014424 -1.9870812 --15.343396 13.071018 -1.9812008 --15.140097 13.058977 -1.9649551 --14.981744 13.083556 -1.9545896 --14.786392 13.07373 -1.9392409 --14.625831 13.092532 -1.9284769 --14.403669 13.053728 -1.9093409 --14.258054 13.081987 -1.9004705 --14.121383 13.11708 -1.892796 --13.961627 13.129176 -1.8819324 --13.820992 13.157648 -1.87366 --13.700597 13.204226 -1.8681782 --13.663473 13.331126 -1.8743577 --13.594159 13.427299 -1.8761517 --13.458747 13.457689 -1.8686767 --13.310889 13.474182 -1.8594075 --13.180711 13.507174 -1.8526303 --13.047868 13.536212 -1.8454542 --12.918597 13.567734 -1.8387765 --12.793524 13.60253 -1.8326968 --12.660383 13.627554 -1.8254211 --12.539529 13.664657 -1.8199394 --12.411347 13.692679 -1.8133614 --12.276658 13.712234 -1.8057867 --12.164609 13.755996 -1.8016007 --12.055102 13.801898 -1.7978133 --11.944842 13.846222 -1.7939264 --11.822879 13.876081 -1.7882453 --11.711889 13.917909 -1.7842586 --11.623091 13.985682 -1.7837603 --11.534533 14.05366 -1.7833616 --11.432422 14.104845 -1.78087 --11.336335 14.163074 -1.779375 --11.228242 14.205824 -1.7759862 --11.142702 14.276805 -1.7762853 --11.061572 14.353577 -1.7773815 --10.964857 14.410092 -1.7759862 --10.886989 14.49142 -1.7777803 --10.817426 14.584323 -1.7810693 --10.728322 14.651226 -1.7811689 --10.575273 14.629683 -1.7704049 --10.467393 14.669187 -1.7673153 --10.361718 14.711171 -1.7646242 --10.909033 15.691994 -1.8765503 --10.820423 15.770122 -1.8779457 --10.711741 15.818915 -1.8758527 --10.616135 15.886826 -1.8761517 --9.1826172 13.925545 -1.6330637 --10.436658 16.040928 -1.8791417 --10.501425 16.359226 -1.9094405 --10.40351 16.427557 -1.9099388 --10.286175 16.464922 -1.9068491 --9.3753958 15.213831 -1.7522655 --10.037877 16.515081 -1.8980784 --8.6744223 14.470853 -1.6521997 --8.576355 14.508388 -1.6504058 --9.7246723 16.684153 -1.8965834 --9.6275702 16.752998 -1.8976798 --8.0224228 14.159917 -1.5923995 --9.4188347 16.865538 -1.8971814 --9.3132534 16.919525 -1.8967828 --9.2035685 16.965857 -1.8955867 --8.0777464 15.110726 -1.6785119 --8.9863329 17.061674 -1.8937927 --8.8869743 17.12709 -1.8949888 --8.7803583 17.17864 -1.8946898 --8.6694193 17.221527 -1.8934938 --8.5613775 17.269939 -1.8929954 --8.4456482 17.302473 -1.8908027 --8.3358765 17.346794 -1.8900054 --8.2258778 17.390419 -1.8892081 --8.1173382 17.436956 -1.8888094 --8.0072937 17.480103 -1.8881117 --7.8978434 17.52437 -1.8876134 --7.7861352 17.563404 -1.8866167 --7.6730523 17.598989 -1.885321 --7.5617867 17.638424 -1.8845237 --7.4499393 17.676237 -1.8836267 --7.3401976 17.718859 -1.8833277 --7.2290878 17.758034 -1.8827296 --7.1155572 17.79097 -1.8815337 --7.0000758 17.81855 -1.8798393 --6.884882 17.846313 -1.8782446 --6.7667923 17.865889 -1.8758527 --6.6514955 17.892151 -1.874258 --6.5378356 17.922344 -1.8731617 --6.4267378 17.959311 -1.8728627 --6.3174086 18.001223 -1.8731617 --6.2048941 18.034002 -1.8725636 --6.0928512 18.067963 -1.872165 --5.975944 18.087057 -1.8702713 --5.8602567 18.109184 -1.8687763 --5.7433214 18.126778 -1.8668827 --5.628159 18.149323 -1.865587 --5.513514 18.17304 -1.8644906 --4.3741531 14.741832 -1.5024998 --4.0247941 13.875813 -1.4094107 --5.1807861 18.281021 -1.8654873 --5.0751524 18.336439 -1.8679789 --4.9677362 18.386446 -1.8699723 --4.8573613 18.426203 -1.8709689 --4.7459421 18.462406 -1.8716667 --3.6271346 14.476886 -1.4571513 --3.5349362 14.485335 -1.4557559 --4.4122024 18.57568 -1.8746567 --4.2959018 18.592707 -1.87366 --3.1589332 14.063495 -1.4060221 --4.0625405 18.621666 -1.8713677 --3.1915553 15.071731 -1.5053902 --3.8259149 18.632103 -1.8674806 --3.7111301 18.653276 -1.8672813 --3.5962298 18.673742 -1.867082 --3.4832211 18.70426 -1.8679789 --3.3652184 18.707653 -1.8661849 --3.2508774 18.73089 -1.8664839 --3.1342449 18.740671 -1.8654873 --3.0220401 18.777233 -1.8672813 --2.9075284 18.800339 -1.8677796 --2.7913871 18.812904 -1.8672813 --2.6770201 18.837559 -1.8680786 --2.5629914 18.865461 -1.8692746 --2.4489765 18.894648 -1.87067 --2.3342128 18.919193 -1.8716667 --2.2187772 18.939089 -1.8722646 --2.1032948 18.95927 -1.8729624 --1.9857841 18.960934 -1.871866 --1.8691121 18.96979 -1.871567 --1.752589 18.97991 -1.8714674 --1.6362681 18.99229 -1.8716667 --1.5197822 19.002964 -1.8717663 --1.403739 19.019871 -1.8725636 --1.2868075 19.025146 -1.8722646 --1.1696813 19.026726 -1.8716667 --1.0524193 19.024603 -1.8707696 --0.93591076 19.035671 -1.871268 --0.81913519 19.042049 -1.8713677 --0.70238972 19.0497 -1.8716667 --0.58539826 19.050669 -1.8713677 --0.46829936 19.045944 -1.8705703 --0.35113412 19.032541 -1.8689756 --0.23443137 19.041302 -1.8696733 --0.11763431 19.049347 -1.870371 --0.00074752688 19.048716 -1.8702713 -0.11612095 19.046371 -1.870072 -0.23303403 19.04928 -1.8704706 -0.35007885 19.056444 -1.8713677 -0.46712261 19.058912 -1.871866 -0.58417928 19.059666 -1.8722646 -0.70166588 19.070637 -1.8737596 -0.81926632 19.079889 -1.875155 -0.93666482 19.081461 -1.8758527 -1.0533442 19.068399 -1.875155 -1.1702038 19.059591 -1.8749557 -1.2869278 19.049074 -1.8746567 -1.4044455 19.049749 -1.8755536 -1.5222578 19.052675 -1.8767496 -1.6407567 19.061811 -1.8786434 -1.759059 19.066248 -1.8801384 -1.8779652 19.0749 -1.8821317 -1.9930023 19.044216 -1.8802381 -2.110147 19.034595 -1.880537 -2.2301426 19.048962 -1.8833277 -2.3453991 19.022079 -1.882032 -2.4618165 19.005358 -1.8818327 -2.5782511 18.988909 -1.8817331 -2.6937363 18.965836 -1.8810353 -2.8094738 18.945013 -1.8806367 -2.924753 18.921518 -1.8800387 -3.0398495 18.897322 -1.8794407 -3.1545954 18.871443 -1.8787431 -3.2684574 18.840948 -1.8776467 -3.3806551 18.801931 -1.875753 -3.4952295 18.776922 -1.8753543 -2.704253 14.049551 -1.3953576 -3.7213109 18.712122 -1.8732613 -3.8358562 18.687962 -1.8731617 -3.0689557 14.500663 -1.4468856 -3.1525705 14.457255 -1.4443939 -3.2499404 14.476473 -1.4483806 -4.3047495 18.63764 -1.8782446 -4.4176474 18.605066 -1.8776467 -4.5442238 18.628843 -1.8829291 -4.6478038 18.558142 -1.8785437 -3.4442694 13.404347 -1.3485141 -3.5241694 13.374303 -1.3476171 -4.985497 18.45792 -1.8773477 -5.104763 18.449038 -1.87964 -5.2197671 18.42407 -1.8803377 -5.3338251 18.395517 -1.8807364 -5.4460316 18.360537 -1.880537 -5.5574317 18.322966 -1.8801384 -4.3008871 13.87401 -1.4171847 -4.5563321 14.385189 -1.473696 -4.4435549 13.735931 -1.4083143 -4.7396965 14.349923 -1.4759883 -4.6588349 13.819912 -1.4230651 -4.7642622 13.851282 -1.4294438 -6.3331318 18.050541 -1.8783443 -6.4430985 18.009468 -1.878145 -6.5545039 17.972399 -1.878444 -6.6663909 17.936506 -1.8789424 -6.7798457 17.90457 -1.879939 -6.893518 17.872843 -1.8810353 -7.0070558 17.840397 -1.8821317 -5.9768877 14.947836 -1.5747584 -6.0726204 14.921019 -1.5758548 -5.8731298 14.181154 -1.4997091 -6.0898743 14.452934 -1.5331973 -6.1102242 14.256167 -1.5158552 -6.2305889 14.294112 -1.5241275 -7.7456603 17.475771 -1.876949 -7.852335 17.427008 -1.8768493 -7.9587026 17.377594 -1.8767496 -8.0626602 17.323021 -1.8761517 -8.1662483 17.267826 -1.8755536 -8.2707548 17.214703 -1.8752546 -8.377099 17.165419 -1.8754539 -8.4800568 17.109238 -1.8749557 -8.5902462 17.067549 -1.8761517 -8.69979 17.024265 -1.877248 -8.8086681 16.979395 -1.8782446 -8.9168587 16.932949 -1.8791417 -9.0257492 16.887571 -1.8802381 -9.1310978 16.835371 -1.8806367 -9.2404633 16.790358 -1.8819324 -9.3423424 16.731607 -1.8817331 -9.4453201 16.674833 -1.8818327 -9.5474577 16.616564 -1.8818327 -9.6522417 16.562828 -1.8824307 -9.7719145 16.534126 -1.8860188 -9.878809 16.483244 -1.887115 -9.9740782 16.412966 -1.8860188 -10.066246 16.337904 -1.8844241 -10.16525 16.274143 -1.8842247 -10.253736 16.19381 -1.8821317 -10.341081 16.112167 -1.879939 -10.431067 16.035069 -1.8783443 -10.523782 15.962456 -1.8773477 -10.616552 15.890137 -1.8764507 -10.726684 15.843645 -1.8787431 -10.842836 15.805426 -1.8821317 -10.970283 15.782716 -1.8875138 -11.086397 15.742765 -1.8909024 -11.198389 15.696313 -1.8935934 -11.320136 15.662787 -1.8979788 -11.447184 15.635583 -1.9032611 -11.527494 15.544271 -1.9006698 -11.572453 15.406422 -1.8922977 -11.526382 15.15062 -1.8690753 -11.604551 15.060696 -1.8666832 -11.641034 14.917827 -1.8576136 -11.679905 14.779763 -1.8491418 -11.720632 14.645672 -1.8411685 -11.774563 14.529418 -1.8354875 -11.80668 14.387674 -1.8265175 -11.854673 14.266747 -1.8202385 -11.8728 14.111515 -1.8094743 -11.923026 13.995985 -1.8038931 -11.991781 13.902974 -1.8013017 -12.080134 13.832879 -1.8018 -12.172035 13.766696 -1.8028964 -12.267559 13.704353 -1.8045907 -12.363445 13.642094 -1.8063847 -12.459701 13.579906 -1.8082784 -12.552949 13.514133 -1.8097734 -12.639724 13.441204 -1.8103714 -12.738427 13.380691 -1.8127635 -12.838934 13.32162 -1.8154544 -12.949618 13.272501 -1.8196404 -13.075566 13.238098 -1.8260192 -13.123479 13.124551 -1.8213347 -13.242697 13.082238 -1.8268164 -13.36545 13.042429 -1.8327965 -13.508271 13.020939 -1.8415672 -13.680877 13.026314 -1.8544242 -13.864925 13.040283 -1.8687763 -14.008832 13.014557 -1.877547 -14.150743 12.985537 -1.8860188 -14.331899 12.990676 -1.8997728 -14.558869 13.034561 -1.9196066 -14.725042 13.021441 -1.9311678 -14.896846 13.011349 -1.943427 -15.042706 12.976891 -1.9521977 -15.233389 12.9792 -1.9668487 -15.399537 12.958515 -1.9782108 -15.606562 12.969981 -1.9948552 -15.827379 12.990121 -2.0131938 -16.033564 12.995505 -2.0295393 -16.297117 13.04423 -2.0531604 -16.428373 12.984707 -2.0597384 -16.625402 12.975482 -2.0746884 -16.676331 12.851363 -2.0711005 -16.712109 12.716263 -2.0657184 -16.748449 12.582404 -2.0605357 -16.799765 12.460434 -2.0573463 -16.825325 12.320086 -2.0510674 -16.872377 12.196217 -2.0475791 -16.918545 12.072233 -2.0440907 -16.93454 11.927518 -2.0370142 -16.975542 11.801236 -2.0331273 -16.999224 11.663643 -2.027247 -17.035042 11.535131 -2.0229614 -17.087297 11.418227 -2.0207686 -17.128794 11.294545 -2.01738 -17.166912 11.169156 -2.0136921 -17.212513 11.0491 -2.0110013 -17.251402 10.925179 -2.0076125 -17.284357 10.798036 -2.0036259 -17.313013 10.668811 -1.9992405 -17.344137 10.541709 -1.9952538 -17.376915 10.416162 -1.9915662 -17.407949 10.290106 -1.9877788 -17.445831 10.16857 -1.9848884 -17.482014 10.04646 -1.9818984 -17.515623 9.9233103 -1.9787091 -17.544037 9.7977009 -1.9750214 -17.58116 9.6773939 -1.9724301 -17.6612 9.5807219 -1.974822 -17.619614 9.418705 -1.9634601 -17.642738 9.2923336 -1.959573 -17.67646 9.1719913 -1.9569817 -17.704939 9.0493212 -1.953892 -17.737022 8.9288836 -1.9513006 -17.763838 8.8061848 -1.948211 -17.782663 8.6800022 -1.9443239 -17.785364 8.5465946 -1.9387426 -17.801489 8.420289 -1.9347559 -17.81403 8.2928476 -1.9304702 -17.82206 8.1639128 -1.9257859 -17.840067 8.0400982 -1.9222975 -17.858135 7.9167728 -1.9189088 -17.880836 7.7959151 -1.9161181 -17.894497 7.6715493 -1.9124305 -17.919224 7.5523329 -1.9100385 -17.933971 7.4292951 -1.9066498 -17.958023 7.3104868 -1.9043574 -17.972977 7.1883383 -1.9011681 -17.989887 7.0673738 -1.8982778 -18.009705 6.9479046 -1.895786 -18.041759 6.8333921 -1.8946898 -18.018995 6.6986418 -1.8878127 -18.006475 6.5685196 -1.8821317 -17.994911 6.4394751 -1.87665 -17.981506 6.3104906 -1.8710686 -17.991661 6.1903291 -1.8680786 -18.006676 6.0721884 -1.8656867 -18.029425 5.9569058 -1.8641917 -18.045755 5.839735 -1.8620986 -18.042356 5.7165785 -1.8580123 -18.04668 5.5963364 -1.8548229 -18.057825 5.4785666 -1.8524309 -18.052944 5.3563442 -1.8484442 -18.075914 5.2427015 -1.8474475 -18.10487 5.1308775 -1.8471485 -18.144644 5.0220795 -1.8480456 -18.18088 4.9122086 -1.8486435 -18.214527 4.8015747 -1.8490422 -18.242682 4.6894741 -1.8489425 -18.272078 4.5776925 -1.8490422 -18.301756 4.4659629 -1.8492416 -18.323006 4.3522019 -1.8486435 -18.357121 4.2414837 -1.8494409 -18.371151 4.1261506 -1.8482449 -18.388344 4.0116534 -1.8474475 -18.438896 3.9043128 -1.8501385 -18.454708 3.7894998 -1.8493413 -18.538118 3.6882267 -1.8555206 -18.580919 3.5783596 -1.8576136 -18.605461 3.4648283 -1.8579125 -18.630287 3.3513064 -1.8583113 -18.647558 3.2364199 -1.8580123 -18.664122 3.1214473 -1.8577132 -18.676046 3.0057614 -1.8570156 -18.692171 2.8908067 -1.8568163 -18.717432 2.7772272 -1.8576136 -18.754807 2.6652656 -1.8597066 -18.786583 2.5522802 -1.8613013 -18.825573 2.440028 -1.8636932 -18.852041 2.3259318 -1.8648893 -18.879793 2.2118342 -1.8662846 -18.909822 2.0978124 -1.8679789 -18.932234 1.9827802 -1.8689756 -18.961868 1.868332 -1.8707696 -18.987837 1.7533205 -1.8722646 -19.012117 1.6379751 -1.87366 -19.034704 1.5223186 -1.8749557 -19.06254 1.4068855 -1.8768493 -19.081734 1.2906314 -1.8779457 -19.096247 1.1739508 -1.8786434 -19.097128 1.056427 -1.8780453 -19.090332 0.93859488 -1.8767496 -19.023161 0.81832385 -1.8694739 -18.914469 0.69741184 -1.858112 -18.886566 0.58036572 -1.8549225 -19.018091 0.46761623 -1.8677796 -18.898235 0.34866452 -1.8555206 -19.006479 0.23400477 -1.8661849 -19.084171 0.11784724 -1.8738593 -19.138268 0.0007455732 -1.8792413 -19.20557 -0.11710127 -1.8860188 -19.237324 -0.2353459 -1.8893077 -19.251436 -0.35367286 -1.8909024 -19.262829 -0.47213295 -1.8922977 -19.280455 -0.59095997 -1.8943907 -19.240669 -0.70793229 -1.8908027 -19.241928 -0.82623398 -1.8914007 -19.236496 -0.94428468 -1.8914007 -19.129004 -1.0566957 -1.8812346 -19.002981 -1.1667247 -1.8692746 -18.960718 -1.2809533 -1.8657863 -0 -0 -0 -18.942579 -1.5134548 -1.8656867 -18.918066 -1.6283748 -1.8641917 -0 -0 -0 -19.087774 -1.8792334 -1.8834274 -19.030361 -1.9915516 -1.8788427 -18.104977 -2.0070338 -1.78685 -17.634754 -2.0644886 -1.7407041 -0 -0 -0 -16.537449 -2.1419892 -1.6325653 -15.568593 -2.1136405 -1.5359879 -14.674628 -2.0839863 -1.4468856 -13.940111 -2.0669551 -1.3738296 -13.330283 -2.0601521 -1.3133316 -12.947033 -2.0823069 -1.2757572 -12.285312 -2.0532303 -1.2098773 -11.820532 -2.050142 -1.1639307 -11.587386 -2.0830004 -1.1415056 -10.982573 -2.0438595 -1.081207 -10.567271 -2.0336914 -1.0401442 -10.576064 -2.1027639 -1.0423368 -10.610723 -2.177424 -1.0472206 -10.691586 -2.262481 -1.0568882 -10.301277 -2.2459695 -1.0183171 -10.261089 -2.3032477 -1.0156261 -10.296207 -2.3775885 -1.020709 -10.183648 -2.4174972 -1.0106428 -10.193756 -2.4860699 -1.013234 -9.7719622 -2.4467766 -0.9712742 -9.9870882 -2.5658927 -0.99509466 -9.7796869 -2.5766542 -0.97526091 -9.79251 -2.6443982 -0.97825092 -9.7933617 -2.7092113 -0.9800449 -9.7325172 -2.7567723 -0.97546023 -7.9465246 -2.3034263 -0.79097646 -7.9408264 -2.3546889 -0.79187346 -7.9186115 -2.4010577 -0.79107612 -7.8695164 -2.4389911 -0.7874881 -7.8999333 -2.5016568 -0.79227215 -7.8929548 -2.5528398 -0.79316914 -7.9328852 -2.6196384 -0.7990495 -9.2951241 -3.1330805 -0.94476277 -9.236208 -3.1764596 -0.94057673 -9.0165606 -3.1628931 -0.91934764 -9.056942 -3.2396131 -0.92572635 -9.1930008 -3.3520672 -0.94237077 -9.1685286 -3.4070246 -0.94197208 -8.968791 -3.3955526 -0.92283601 -9.009058 -3.4741564 -0.92941403 -7.1584754 -2.8108394 -0.73257154 -7.1457133 -2.8565574 -0.7330699 -9.1297455 -3.7151754 -0.94954681 -9.1122932 -3.7734094 -0.95014477 -9.0614605 -3.8176575 -0.94715476 -8.9665327 -3.8426056 -0.93938076 -8.92272 -3.8888025 -0.93718809 -8.992384 -3.9850123 -0.9474538 -9.0748081 -4.0883536 -0.95921451 -8.9807997 -4.1124663 -0.95163977 -8.9066849 -4.1448183 -0.94625777 -8.8792858 -4.1985397 -0.94605845 -5.4515996 -2.6183236 -0.56802118 -5.3942981 -2.6316478 -0.56343651 -5.3459554 -2.6487875 -0.55984849 -5.3429337 -2.6882508 -0.56134349 -8.7161942 -4.4535379 -0.94266975 -8.6330614 -4.478065 -0.93639076 -8.5974989 -4.5267792 -0.93549371 -8.5599079 -4.5742874 -0.9343974 -8.5220585 -4.6215053 -0.93330103 -8.5249224 -4.6909814 -0.93688905 -8.4655733 -4.7262211 -0.93340075 -13.950337 -7.9018335 -1.5681803 -13.823945 -7.9426637 -1.5592103 -13.632246 -7.9441619 -1.5426656 -13.495875 -7.9760141 -1.5324996 -6.9434175 -4.160574 -0.77303636 -3.5038366 -2.1281936 -0.37287304 -3.4898653 -2.1491308 -0.37277338 -3.4783006 -2.1715581 -0.37297273 -13.052356 -8.2643356 -1.5096759 -13.12533 -8.4238176 -1.5244266 -13.089242 -8.5145044 -1.5263202 -13.07164 -8.6176634 -1.5305063 -13.084702 -8.7419329 -1.5384796 -13.050591 -8.8354435 -1.5408716 -12.984645 -8.9074736 -1.5394763 -4.2507362 -2.9535754 -0.48071283 -12.867851 -9.0615606 -1.5386789 -12.796618 -9.129365 -1.5367852 -12.745199 -9.2112093 -1.5373832 -12.68844 -9.2892389 -1.5373832 -12.622413 -9.3603983 -1.536287 -12.544057 -9.4221334 -1.5336956 -5.470118 -4.160656 -0.6506452 -5.4673419 -4.2117553 -0.65353554 -12.306533 -9.6030693 -1.5258219 -12.253623 -9.6833353 -1.5266192 -12.196307 -9.7602053 -1.5269182 -12.134644 -9.8336039 -1.5267189 -12.073309 -9.9072447 -1.5266192 -2.8590169 -2.3744347 -0.33450121 -2.8565755 -2.4021828 -0.3360959 -2.8273916 -2.4074044 -0.33420223 -2.823868 -2.4344568 -0.33569723 -2.8321095 -2.4720287 -0.3387869 -2.8496854 -2.5183618 -0.34317225 -11.565606 -10.352799 -1.5170512 -3.600786 -3.2621355 -0.44891903 -3.5704381 -3.2747498 -0.44752368 -3.4802942 -3.2315819 -0.43795565 -3.4843192 -3.2753716 -0.44124466 -3.4886577 -3.3200173 -0.44463333 -3.4811161 -3.3537905 -0.44642735 -3.474715 -3.3889854 -0.4484207 -3.4743836 -3.4305208 -0.45131105 -3.4764867 -3.4749935 -0.45460007 -2.5558763 -2.5858934 -0.32642817 -10.677741 -10.941894 -1.4936295 -10.593829 -10.99001 -1.4912374 -10.510417 -11.038231 -1.488945 -3.507314 -3.7278686 -0.47493213 -3.4958866 -3.7617123 -0.47662649 -3.0563316 -3.3292642 -0.41493255 -7.6370649 -8.42484 -1.10124 -2.7862825 -3.1107492 -0.3805474 -2.7546201 -3.1136241 -0.37865373 -2.7132099 -3.1049862 -0.37526506 -9.6565304 -11.193316 -1.4429985 -9.5444345 -11.201609 -1.4363208 -9.4498987 -11.229506 -1.4323342 -7.3623905 -8.8582544 -1.1159909 -9.2608862 -11.283092 -1.4243608 -9.1125431 -11.2423 -1.4118028 -8.9967604 -11.239738 -1.4043278 -8.8875227 -11.243986 -1.3978493 -8.8104057 -11.28811 -1.3965536 -8.7306528 -11.328557 -1.3948593 -8.6326618 -11.344696 -1.390175 -8.5353994 -11.360855 -1.3855903 -8.4347086 -11.371454 -1.3804076 -8.3383245 -11.386867 -1.3759226 -8.2420702 -11.401525 -1.3714375 -8.0812254 -11.324714 -1.3557898 -8.0213261 -11.387916 -1.3574842 -7.7729731 -11.180373 -1.3261887 -7.734622 -11.272163 -1.3315707 -7.7328115 -11.419106 -1.3436304 -7.5879736 -11.354648 -1.3301754 -7.4852982 -11.35115 -1.3241954 -7.4274449 -11.415215 -1.326388 -7.340601 -11.434615 -1.3232983 -7.2144084 -11.391171 -1.3128333 -7.1385789 -11.425941 -1.3117369 -7.0725121 -11.476304 -1.3125343 -6.9993777 -11.515233 -1.3120359 -6.900456 -11.511023 -1.3065543 -6.8109636 -11.521453 -1.3028666 -6.7060723 -11.504568 -1.2960893 -6.5649619 -11.422991 -1.2819365 -6.4903345 -11.455266 -1.2810395 -6.3864517 -11.43493 -1.2741625 -6.3238444 -11.487848 -1.2757572 -6.2745857 -11.565793 -1.2802422 -6.1561289 -11.515445 -1.2701758 -6.0612464 -11.50722 -1.2649931 -5.858098 -11.288941 -1.2361894 -5.824944 -11.395555 -1.2441627 -1.2312765 -2.4436722 -0.23632914 -1.200793 -2.4199781 -0.23284079 -1.1313701 -2.3155243 -0.22038241 -1.1102463 -2.3080728 -0.21878773 -1.0905331 -2.3031483 -0.21749206 -1.0969548 -2.3539987 -0.22237575 -1.0837333 -2.363399 -0.22267476 -1.1248051 -2.4933801 -0.23622948 -5.080235 -11.458632 -1.2177509 -5.0448208 -11.569854 -1.2265216 -4.9435496 -11.53017 -1.2188473 -4.8800502 -11.577708 -1.2207409 -4.8020649 -11.590887 -1.2189469 -4.7199759 -11.593407 -1.2160566 -4.6384068 -11.596281 -1.2132659 -4.5700765 -11.631932 -1.2140633 -4.4989762 -11.660684 -1.2141629 -1.2030679 -3.1736758 -0.30220908 -4.3316231 -11.65066 -1.2072859 -4.2303934 -11.595692 -1.1986148 -4.1682138 -11.646727 -1.2013059 -1.1874127 -3.380636 -0.32114583 -1.1498163 -3.3389311 -0.31596315 -1.1172276 -3.3100941 -0.31217578 -1.0928389 -3.3046045 -0.31088012 -3.7823436 -11.686741 -1.1926348 -1.0431895 -3.2893095 -0.30789012 -1.0082543 -3.2481289 -0.30290675 -0.98455054 -3.2418759 -0.3016111 -0.96379131 -3.2449942 -0.30131209 -0.9469105 -3.261359 -0.30240843 -0.94993699 -3.3484814 -0.31088012 -3.2478571 -11.732882 -1.1816714 -0.9113692 -3.3694925 -0.3118768 -0.89346653 -3.3856049 -0.31297314 -3.0365438 -11.810915 -1.1837645 -2.9647415 -11.83222 -1.1840634 -2.8897264 -11.840522 -1.1830667 -2.8149509 -11.849317 -1.1821698 -1.8963628 -8.2045918 -0.80572718 -0.71810889 -3.1929016 -0.2900497 -2.5630784 -11.746493 -1.166522 -1.7779912 -8.3938589 -0.82167393 -1.7214519 -8.3802433 -0.81918222 -1.6678642 -8.3799133 -0.81808591 -1.6250675 -8.4349346 -0.82267058 -2.1951771 -11.78535 -1.1630337 -2.1355016 -11.869108 -1.1702098 -1.4227581 -8.1938152 -0.79526216 -1.981485 -11.84535 -1.1652263 -1.926151 -11.965348 -1.1761898 -1.3321977 -8.6099844 -0.83492965 -1.7742095 -11.954619 -1.172801 -1.7060016 -12.00173 -1.1764888 -1.6271065 -11.973519 -1.1726017 -1.5543748 -11.989199 -1.1731998 -1.4682379 -11.896793 -1.1629341 -1.3924357 -11.88186 -1.160542 -1.3199424 -11.894135 -1.1609406 -1.247558 -11.907948 -1.1615387 -1.1763214 -11.934194 -1.1634324 -1.1051753 -11.963976 -1.1657248 -1.0337932 -11.994324 -1.1681167 -0.95669037 -11.9568 -1.1637313 -0.89047813 -12.059692 -1.1734987 -0.8188796 -12.100669 -1.1770867 -0.74510378 -12.113411 -1.1778841 -0.21856233 -3.9342523 -0.35692632 -0.58766204 -11.943748 -1.1600437 -0.51564658 -11.976952 -1.1630337 -0.44533208 -12.066399 -1.1717048 -0.37156016 -12.077855 -1.1726017 -0.29746923 -12.080902 -1.1727014 -0.22436105 -12.138212 -1.1782827 -0.15042664 -12.184133 -1.1827677 -0.075377449 -12.138062 -1.1780834 -0.00089607463 -12.239787 -1.1882495 --0.073948532 -12.197772 -1.1840634 --0.14799617 -12.132418 -1.1775851 --0.21931924 -11.962156 -1.1606417 --0.29777277 -12.166492 -1.1812727 --0.37214446 -12.155485 -1.1803758 --0.44723514 -12.166894 -1.181771 --0.52342021 -12.199708 -1.1853591 --0.60119712 -12.255897 -1.1913391 --0.67808974 -12.282775 -1.1944288 --0.75087911 -12.236671 -1.1902428 --0.82353109 -12.196095 -1.1866548 --0.90977174 -12.345614 -1.2022028 --0.97360981 -12.191021 -1.1872528 --1.0645332 -12.372183 -1.2060899 --1.1441778 -12.406041 -1.2101762 --1.2209612 -12.405719 -1.2108738 --1.2945713 -12.374243 -1.2084819 --1.3747519 -12.404635 -1.2123688 --1.4570906 -12.449333 -1.2177509 --1.5330853 -12.437196 -1.2174519 --1.614357 -12.466039 -1.221339 --1.6967098 -12.499281 -1.2257243 --1.7768714 -12.513263 -1.2282159 --1.854056 -12.505077 -1.2285149 --1.9345523 -12.518049 -1.2310066 --2.002156 -12.448965 -1.2252259 --2.0862172 -12.482572 -1.2299103 --2.166172 -12.489143 -1.2319037 --2.2452292 -12.489326 -1.233299 --2.327831 -12.507596 -1.236588 --2.4069784 -12.505779 -1.2378837 --2.4782312 -12.463449 -1.235093 --2.548655 -12.418769 -1.232103 --2.6433563 -12.490506 -1.241073 --2.7515452 -12.618903 -1.2559234 --2.8330643 -12.620229 -1.257817 --2.9124629 -12.611333 -1.2587141 --2.9741547 -12.527395 -1.2519367 --3.0556827 -12.528243 -1.2539301 --3.1332223 -12.512154 -1.2542291 --3.2099366 -12.492693 -1.2542291 --3.2964208 -12.510286 -1.2581161 --3.3837607 -12.529208 -1.2622024 --3.4650867 -12.524512 -1.2638968 --3.5388863 -12.492485 -1.2628005 --3.6157494 -12.471491 -1.2629001 --3.7159779 -12.5292 -1.2712722 --3.7927856 -12.506164 -1.2712722 --3.8361499 -12.375263 -1.2600098 --3.9135134 -12.356235 -1.2605081 --3.9852738 -12.319682 -1.2592124 --4.0557966 -12.279881 -1.2576177 --4.1059518 -12.180277 -1.2497441 --4.1666918 -12.114396 -1.2454584 --4.1925125 -11.950585 -1.2308073 --4.3277788 -12.097952 -1.2492458 --4.3647628 -11.969279 -1.238382 --4.4838877 -12.065384 -1.251538 --4.5976586 -12.142793 -1.2628005 --4.66993 -12.108784 -1.2622024 --4.6888409 -11.939131 -1.247053 --4.5203643 -11.305922 -1.1818708 --4.9651766 -12.200484 -1.2816375 --5.0654573 -12.23138 -1.2883152 --5.1377072 -12.19365 -1.2876176 --5.2092929 -12.15458 -1.2868202 --1.5450281 -3.5467663 -0.34975028 --1.5631324 -3.5290325 -0.34885329 --1.5823038 -3.513932 -0.34825528 --1.6021775 -3.5005383 -0.34785661 --1.6202669 -3.4834251 -0.34705928 --1.6309742 -3.4509308 -0.3445676 --1.6486703 -3.4336836 -0.34377027 --1.6592332 -3.4020424 -0.34137824 --1.6721218 -3.3757505 -0.33958423 --1.6941457 -3.3680933 -0.33988324 --1.7075346 -3.3434587 -0.33828858 --1.7298505 -3.3364513 -0.33868724 --1.7539995 -3.3328176 -0.33948457 --1.779107 -3.3307676 -0.34048125 --1.805204 -3.3302839 -0.34167725 --1.8304023 -3.3278618 -0.34267393 --1.8517574 -3.3183055 -0.34287325 --1.8691406 -3.3016863 -0.34227526 --1.8690377 -3.2547839 -0.33818889 --1.9050071 -3.2707636 -0.34137824 --7.0848994 -11.988313 -1.3570855 --7.2565446 -12.108477 -1.3762215 --7.3891015 -12.159806 -1.387484 --7.511075 -12.191325 -1.3965536 --7.6384568 -12.229398 -1.4065204 --7.7239981 -12.199111 -1.4085137 --7.8110676 -12.170747 -1.4108061 --7.9181566 -12.172632 -1.4167861 --7.9932451 -12.124649 -1.4168857 --8.1111631 -12.140734 -1.4247594 --8.1046104 -11.971269 -1.4103078 --8.2088737 -11.96644 -1.4157894 --8.4866085 -12.209967 -1.4516696 --8.5206871 -12.099906 -1.4445932 --7.911068 -11.089201 -1.326687 --8.8719616 -12.275869 -1.479377 --9.0799694 -12.402637 -1.5019017 --8.4991312 -11.461183 -1.3914707 --8.9278822 -11.886143 -1.4512709 --9.5874939 -12.602411 -1.5483466 --9.6452045 -12.518126 -1.5451573 --9.7218332 -12.458708 -1.5451573 --9.8172216 -12.423021 -1.548247 --9.901968 -12.373425 -1.5496423 --9.9946194 -12.333306 -1.5523334 --10.138283 -12.354816 -1.5630974 --10.281947 -12.37426 -1.5737617 --10.403166 -12.364993 -1.5808381 --10.534336 -12.366064 -1.5894095 --10.614564 -12.306468 -1.5901071 --10.723912 -12.280076 -1.5952898 --10.751601 -12.160377 -1.5881138 --10.719823 -11.975563 -1.572167 --10.380803 -11.45468 -1.5106725 --10.489911 -11.433291 -1.5164531 --10.566639 -11.376001 -1.5174499 --10.632152 -11.306602 -1.5168518 --10.709561 -11.2498 -1.5180478 --10.812914 -11.219695 -1.5230312 --10.864181 -11.135333 -1.5205395 --10.909925 -11.045811 -1.5173502 --10.962719 -10.963885 -1.5152571 --10.99085 -10.857955 -1.5097755 --11.007415 -10.74167 -1.5027988 --11.056639 -10.658046 -1.5005064 --11.116062 -10.584515 -1.4997091 --11.191671 -10.526333 -1.5012041 --11.280107 -10.479812 -1.5044931 --11.361059 -10.425874 -1.5067855 --11.441038 -10.370667 -1.5089781 --11.520765 -10.314872 -1.5111709 --10.019201 -8.8605337 -1.3019696 --11.709432 -10.227696 -1.5195428 --11.768953 -10.153057 -1.5191442 --11.83103 -10.080653 -1.5191442 --11.908649 -10.021322 -1.5212371 --10.303118 -8.5630178 -1.3041623 --10.325468 -8.4750204 -1.3002752 --10.396602 -8.4271669 -1.3027669 --12.255098 -9.8093634 -1.5345926 --12.318959 -9.7370672 -1.5350909 --12.391025 -9.6710901 -1.5366856 --12.458014 -9.6009521 -1.5376823 --12.527776 -9.5327654 -1.5390776 --10.739515 -8.0686674 -1.3077503 --12.672585 -9.3996496 -1.5426656 --12.753305 -9.3387613 -1.5455559 --12.826495 -9.2719898 -1.5475492 --12.897725 -9.203516 -1.5493433 --12.969412 -9.1350889 -1.551237 --13.029305 -9.0581779 -1.5517353 --13.10187 -8.9898825 -1.5538284 --13.172439 -8.9199209 -1.555722 --13.242641 -8.849431 -1.5576156 --13.313306 -8.7789631 -1.5596091 --13.39528 -8.7155571 -1.5629977 --13.481163 -8.6541624 -1.5668848 --13.555867 -8.5851202 -1.569476 --13.615885 -8.506526 -1.5703731 --13.678836 -8.4296064 -1.5716687 --13.75071 -8.3579178 -1.5740608 --13.838432 -8.2953835 -1.5783464 --13.917339 -8.2270231 -1.5816355 --14.003664 -8.1625156 -1.5858215 --14.071602 -8.0868473 -1.5879145 --14.135675 -8.0086908 -1.5896088 --6.7323408 -3.760586 -0.73466456 --6.7256503 -3.7028944 -0.73127586 --14.375155 -7.798378 -1.6003728 --14.436776 -7.7175312 -1.6019676 --14.483858 -7.6288037 -1.6019676 --14.562191 -7.5562849 -1.6055555 --7.3588257 -3.7619948 -0.79007947 --6.9773722 -3.5132253 -0.74473095 --6.9479814 -3.4451592 -0.73904991 --6.9600477 -3.3980982 -0.73805326 --6.9861484 -3.3579137 -0.73865122 --7.0345049 -3.3281717 -0.74174094 --6.7381597 -3.1375687 -0.70675778 --15.122584 -6.9275331 -1.6283793 --15.18295 -6.8427877 -1.6303726 --15.254669 -6.762804 -1.6336616 --15.317769 -6.6786184 -1.6360537 --7.3525243 -3.1528463 -0.76356804 --7.3891535 -3.1150141 -0.76546168 --15.476716 -6.4115291 -1.6402397 --15.53604 -6.3246975 -1.6424323 --15.601348 -6.239965 -1.6453227 --15.656013 -6.1506672 -1.6471167 --15.715738 -6.0630817 -1.6495087 --15.777769 -5.9760523 -1.6521997 --15.847717 -5.8916087 -1.6557877 --15.916286 -5.806191 -1.6592761 --15.969414 -5.7147899 -1.6611698 --16.015446 -5.6206489 -1.6623658 --16.0581 -5.5251875 -1.6632627 --16.0917 -5.4265528 -1.6632627 --16.15587 -5.3380132 -1.6665518 --16.233763 -5.2534842 -1.6713358 --16.330194 -5.1742096 -1.6781132 --12.328172 -3.8233936 -1.2551261 --16.390556 -4.9728456 -1.6779138 --13.303297 -3.9474335 -1.3522018 --16.265905 -4.7178512 -1.6586781 --16.502289 -4.6768165 -1.6803058 --16.545059 -4.5794525 -1.6818008 --16.579571 -4.4796643 -1.6824986 --12.766736 -3.3658292 -1.2847272 --12.778475 -3.2852015 -1.2838302 --16.489342 -4.1311817 -1.6649572 --16.498913 -4.026154 -1.6633625 --16.502975 -3.9200153 -1.6612694 --16.515085 -3.8159938 -1.6600734 --16.553722 -3.7180753 -1.6616681 --16.568447 -3.6147373 -1.6608708 --13.316599 -2.8200309 -1.3256904 --16.540403 -3.3965387 -1.6535951 --16.533607 -3.2895501 -1.6508044 --16.653143 -3.2072265 -1.6609704 --16.673487 -3.1051667 -1.6610701 --16.699081 -3.0040343 -1.6617677 --16.74465 -2.9062765 -1.6645584 --16.781796 -2.8067601 -1.6665518 --16.982409 -2.7332907 -1.6851895 --17.083427 -2.6421103 -1.6937609 --17.242033 -2.5584054 -1.7082126 --17.30962 -2.4599788 -1.713495 --17.405237 -2.3647015 -1.7216676 --17.525003 -2.2715392 -1.7323321 --17.637365 -2.1761429 -1.7422987 --17.435932 -2.0427704 -1.7206711 --17.78043 -1.97259 -1.7541592 --18.42753 -1.9299536 -1.8181454 --19.56789 -1.9280066 -1.9317659 --19.710138 -1.8199728 -1.944922 --19.747702 -1.7013037 -1.947613 --19.798435 -1.583352 -1.9516994 --19.800831 -1.461329 -1.9510016 --19.779642 -1.3377932 -1.9480116 --19.789465 -1.2165245 -1.948211 --19.802517 -1.0954051 -1.948809 --19.792965 -0.97309768 -1.9472142 --19.787628 -0.85116225 -1.946118 --19.766624 -0.72877997 -1.9435266 --19.786638 -0.60796851 -1.9451213 --19.750206 -0.48557267 -1.9411346 --19.771717 -0.36472613 -1.9430283 --19.756668 -0.24319507 -1.9413339 --19.808533 -0.12227612 -1.946417 --19.784035 -0.00073148467 -1.9439253 --19.774712 0.12060595 -1.9430283 --19.7736 0.24193902 -1.9430283 --19.739908 0.36267623 -1.9398389 --19.733332 0.48369342 -1.9394403 --19.715075 0.60430759 -1.9379452 --19.699062 0.72482592 -1.9367492 --19.682316 0.8451705 -1.9355532 --19.662846 0.96523917 -1.934158 --19.641651 1.0850458 -1.932663 --19.616747 1.2044456 -1.9308689 --19.594095 1.3237821 -1.9293739 --17.631426 -0.448975 -1.9434843 --17.612984 -0.34037846 -1.9411398 --17.58493 -0.23190701 -1.9377905 --17.517456 -0.12351847 -1.9300872 --17.589434 -0.016098185 -1.9381254 --17.57827 0.091772035 -1.9368974 --17.560484 0.19943708 -1.9349995 --17.547007 0.30697411 -1.9336598 --17.540819 0.41454092 -1.9332131 --17.536951 0.52213198 -1.9331015 --17.530437 0.62961996 -1.9327666 --17.515324 0.73671371 -1.9315386 --17.481688 0.84278482 -1.9283009 --17.474203 0.94992673 -1.9280776 --17.453167 1.0562284 -1.9264029 --17.419586 1.1615146 -1.9233886 --17.382397 1.2662121 -1.9200394 --17.376282 1.3730012 -1.9202627 --17.359608 1.4789195 -1.9193695 --17.344269 1.5848658 -1.9186996 --17.325317 1.6903901 -1.9176949 --17.308687 1.7960492 -1.917025 --17.295366 1.9020023 -1.9168017 --17.275473 2.0071716 -1.9159086 --17.26086 2.1128926 -1.9156853 --17.241657 2.2180028 -1.9150155 --17.229692 2.3240197 -1.9152387 --17.21314 2.4294176 -1.9150155 --17.192993 2.534265 -1.9144572 --17.173191 2.6391079 -1.9140106 --17.149805 2.7433324 -1.9132292 --17.119905 2.8463914 -1.9117779 --17.109953 2.9527354 -1.912671 --17.095427 3.0583644 -1.9131175 --17.063635 3.1608498 -1.9116662 --17.028303 3.2624993 -1.9098799 --16.995293 3.364413 -1.9084285 --16.964592 3.4666417 -1.9073122 --16.896328 3.5608337 -1.9019533 --16.872217 3.6640189 -1.9017301 --16.800928 3.7566347 -1.8961478 --16.852133 3.8768058 -1.9047444 --16.747761 3.9611528 -1.895478 --16.659407 4.0483546 -1.8881097 --16.739351 4.1767192 -1.9002787 --16.690304 4.2734361 -1.8975992 --16.588797 4.3560805 -1.8888911 --16.616453 4.4725065 -1.8952547 --16.565704 4.5680394 -1.8925754 --16.550753 4.6733789 -1.8941383 --16.498854 4.7682233 -1.8914589 --16.483582 4.8735948 -1.8931335 --16.435293 4.9691801 -1.8910123 --16.373161 5.0602493 -1.8873281 --16.376867 5.1716895 -1.8914589 --16.345772 5.2723837 -1.8915706 --16.327271 5.3772426 -1.8932452 --16.302448 5.4801731 -1.89425 --16.285435 5.5859032 -1.8962595 --16.249916 5.6853952 -1.8961478 --16.233444 5.7916741 -1.8983808 --16.231222 5.903399 -1.9023999 --16.232899 6.0170407 -1.9069772 --16.226353 6.1281161 -1.9106615 --16.203285 6.2332721 -1.9124477 --16.183239 6.3398256 -1.9146805 --16.163418 6.4467354 -1.917025 --16.150259 6.5566306 -1.9202627 --16.13636 6.6666069 -1.9235003 --16.113474 6.7731934 -1.9257331 --16.103592 6.8856096 -1.9296407 --16.071974 6.9890451 -1.9309803 --16.060598 7.1015944 -1.9348878 --16.008564 7.1963396 -1.9338831 --15.998454 7.3101244 -1.9381254 --15.962312 7.4123363 -1.9392419 --15.958771 7.5300698 -1.944489 --15.944527 7.6433129 -1.9485081 --15.940214 7.7618842 -1.953867 --15.9395 7.8828926 -1.959784 --15.926353 7.9983859 -1.9642497 --15.907077 8.1113052 -1.9680456 --15.883483 8.2224617 -1.9713949 --15.855604 8.3317842 -1.9742975 --15.819966 8.4373331 -1.9763072 --15.784503 8.543231 -1.9784284 --15.759659 8.6552286 -1.9820008 --15.726221 8.7628899 -1.9845687 --15.706761 8.8787794 -1.9890343 --15.654572 8.97647 -1.9893693 --15.637856 9.0948372 -1.9943932 --15.607435 9.2057638 -1.9977424 --15.567713 9.3115578 -1.9999753 --15.545973 9.4285469 -2.0046642 --15.534387 9.5523863 -2.0108047 --15.500781 9.6632948 -2.014154 --15.461358 9.7709646 -2.0168333 --15.42287 9.8795862 -2.0197361 --15.366127 9.9767389 -2.0202942 --15.307942 10.073021 -2.0207407 --15.258249 10.175029 -2.0224154 --15.192236 10.266234 -2.0219688 --15.148636 10.372733 -2.0246482 --15.100219 10.476251 -2.0267694 --15.040531 10.572135 -2.0274394 --15.007758 10.687281 -2.0319049 --14.970914 10.800095 -2.0359242 --14.921213 10.904063 -2.0382686 --14.897159 11.02734 -2.0442972 --14.843527 11.12927 -2.0463068 --14.789206 11.230955 -2.0483165 --14.760189 11.352386 -2.0540102 --14.707502 11.456174 -2.0564663 --14.656437 11.561587 -2.0592575 --14.589879 11.655022 -2.0599272 --14.559813 11.778073 -2.0659559 --14.517251 11.891747 -2.0703101 --14.476902 12.007879 -2.0751107 --14.428063 12.117572 -2.0787947 --14.367066 12.21746 -2.0808043 --14.31367 12.324188 -2.0840421 --14.267745 12.437902 -2.0885077 --14.221706 12.552175 -2.0930851 --14.154795 12.648471 -2.0946481 --14.104185 12.759751 -2.0987787 --14.042482 12.86149 -2.1013465 --13.9582 12.942681 -2.1005652 --13.865481 13.015841 -2.0985556 --13.724126 13.042486 -2.089066 --13.549309 13.035507 -2.0743291 --13.40215 13.053225 -2.0638347 --13.222028 13.036838 -2.0480931 --13.034878 13.011013 -2.0311236 --12.900274 13.035655 -2.0224154 --12.75683 13.049899 -2.0122559 --12.595062 13.043575 -1.9990822 --12.430425 13.032166 -1.9853501 --12.301842 13.056839 -1.9774235 --12.170041 13.076791 -1.9689387 --12.050566 13.108787 -1.9624635 --11.892411 13.09714 -1.949513 --11.744145 13.094407 -1.9381254 --11.598999 13.093326 -1.9271845 --11.454965 13.091706 -1.9163551 --11.297094 13.072274 -1.9030697 --11.170865 13.087681 -1.8951432 --11.033984 13.089117 -1.8853186 --10.908319 13.102351 -1.8773919 --10.791112 13.124516 -1.8709167 --10.677804 13.150368 -1.8651114 --10.604374 13.224941 -1.866451 --10.547088 13.320144 -1.870805 --10.470667 13.391654 -1.8718098 --10.37919 13.44385 -1.8701352 --10.269997 13.472509 -1.8652229 --10.146501 13.48128 -1.8576313 --10.028027 13.495426 -1.8509327 --9.9191675 13.521448 -1.8460205 --9.8278542 13.570788 -1.8444575 --9.7311077 13.612243 -1.8418897 --9.6210442 13.634346 -1.8367542 --9.5133495 13.658875 -1.8320652 --9.415287 13.696518 -1.8292741 --9.3232584 13.742518 -1.8277111 --9.2183046 13.768913 -1.8235804 --9.1194038 13.803659 -1.8206776 --9.030736 13.853527 -1.8198961 --8.9364233 13.89447 -1.8179983 --8.836092 13.925547 -1.8148723 --8.7314978 13.949179 -1.8108531 --8.629035 13.975434 -1.8072805 --8.5224447 13.994168 -1.8028148 --8.4072514 13.997641 -1.7964512 --8.3100634 14.030152 -1.7939951 --8.2158003 14.067148 -1.7922088 --8.1273479 14.11385 -1.7917622 --8.051878 14.183329 -1.79433 --7.9884801 14.27496 -1.7998005 --7.8964205 14.315876 -1.7987957 --7.7875471 14.325643 -1.7938834 --7.7117009 14.395931 -1.7967862 --7.6501298 14.493951 -1.8032614 --7.5853519 14.587346 -1.8091785 --7.5124664 14.66634 -1.8133093 --7.4268107 14.721031 -1.8144257 --7.3367863 14.767214 -1.8145373 --7.2486587 14.817309 -1.8152071 --7.1606236 14.867775 -1.8159887 --7.0730934 14.919514 -1.8169935 --6.9885592 14.977942 -1.8188914 --6.897769 15.02325 -1.8192263 --6.7837744 15.017293 -1.8133093 --6.6571999 14.981444 -1.8038197 --6.5659461 15.023831 -1.8040429 --6.4752073 15.067489 -1.8044895 --6.3865008 15.11609 -1.8056059 --6.2951546 15.158663 -1.8060524 --6.1648483 15.105917 -1.795 --6.05688 15.105643 -1.7904226 --5.9575238 15.12588 -1.788413 --5.8635254 15.159369 -1.7880781 --5.7739272 15.204352 -1.7891945 --5.6867747 15.256255 -1.7912041 --5.961421 16.297855 -1.9116662 --5.8478808 16.296713 -1.9072005 --5.7444768 16.322914 -1.9060841 --5.6419439 16.35128 -1.9053025 --5.5424633 16.388414 -1.9056375 --5.4436774 16.427773 -1.9063073 --5.3363328 16.441017 -1.9039629 --5.2272248 16.44788 -1.9009485 --5.1173487 16.451176 -1.8975992 --5.0128374 16.470858 -1.8962595 --4.9091282 16.492735 -1.8952547 --4.8053389 16.513958 -1.89425 --4.7009311 16.532618 -1.8930219 --4.5967407 16.551577 -1.8919055 --4.493535 16.573715 -1.8912356 --4.392519 16.603857 -1.8915706 --4.294529 16.645891 -1.8933568 --3.635113 14.456291 -1.636691 --3.5451603 14.473497 -1.6361328 --3.4788768 14.589708 -1.6470737 --3.8847251 16.746271 -1.8933568 --3.7829919 16.774639 -1.8939151 --3.0842521 14.078546 -1.5812048 --3.5768564 16.819799 -1.8939151 --3.4707742 16.827805 -1.8923521 --3.36765 16.849758 -1.8924637 --3.2626882 16.862299 -1.8915706 --3.1602585 16.887863 -1.8922404 --3.0576379 16.912804 -1.8929102 --2.9553425 16.940056 -1.8939151 --2.852828 16.96669 -1.8949199 --2.7542262 17.018211 -1.8988273 --2.6448641 17.003368 -1.8952547 --2.5397499 17.014362 -1.8946966 --2.4334748 17.016836 -1.8932452 --2.3294196 17.034401 -1.8935801 --2.2207389 17.016842 -1.8900076 --2.1202059 17.061705 -1.8935801 --2.0133801 17.056629 -1.8915706 --1.910452 17.084463 -1.8933568 --1.8077801 17.116617 -1.8957013 --1.7005571 17.105631 -1.8932452 --1.5972277 17.133554 -1.8952547 --1.4899995 17.119272 -1.8925754 --1.3842888 17.120169 -1.8916821 --1.2796595 17.134285 -1.8923521 --1.1742296 17.13785 -1.8919055 --1.0681854 17.130846 -1.8903425 --0.96310824 17.138069 -1.8904542 --0.85842985 17.153582 -1.8915706 --0.75289965 17.152569 -1.8909007 --0.64790183 17.163818 -1.8916821 --0.54260588 17.168463 -1.8917938 --0.43737856 17.176437 -1.8923521 --0.33205459 17.182772 -1.8927987 --0.22668245 17.189453 -1.8933568 --0.12121272 17.191515 -1.8934685 --0.015730878 17.197897 -1.8941383 -0.089819558 17.202639 -1.8946966 -0.19537127 17.201763 -1.8946966 -0.300933 17.201235 -1.8948082 -0.40635484 17.194098 -1.89425 -0.51167089 17.18532 -1.8935801 -0.61703712 17.179871 -1.8933568 -0.72264791 17.180725 -1.8939151 -0.82829237 17.180931 -1.8944733 -0.93418229 17.184456 -1.895478 -1.0397265 17.180384 -1.8957013 -1.1455865 17.180622 -1.8964828 -1.2506945 17.169306 -1.8960363 -1.3559415 17.160316 -1.8959246 -1.4612942 17.152664 -1.8960363 -1.566875 17.147333 -1.8964828 -1.6720595 17.137396 -1.8964828 -1.7767711 17.12286 -1.8960363 -1.8818015 17.111637 -1.8960363 -1.9873344 17.104704 -1.8965945 -2.0924909 17.09416 -1.8968178 -2.1970859 17.079027 -1.8965945 -2.3010426 17.059317 -1.8959246 -2.4042845 17.035036 -1.8948082 -2.5076053 17.012098 -1.8939151 -2.6129987 17.003267 -1.8946966 -2.7193198 16.99967 -1.8961478 -2.826184 16.99835 -1.8979342 -2.9326274 16.99342 -1.8993856 -3.0371919 16.97706 -1.8996089 -2.5914898 13.989586 -1.5604392 -3.2460458 16.942415 -1.9000554 -3.3480117 16.912432 -1.898939 -3.4521194 16.893517 -1.8991623 -3.051851 14.480901 -1.6246337 -3.1387489 14.453162 -1.6236289 -3.2379968 14.481152 -1.6290994 -3.4446352 14.973325 -1.6881582 -3.5373597 14.955775 -1.6886047 -3.6734061 15.116297 -1.7097051 -4.1721487 16.721031 -1.8981575 -3.4334719 13.409425 -1.517122 -3.5068529 13.354465 -1.5132146 -4.4748311 16.62509 -1.8962595 -4.581511 16.614563 -1.8982691 -4.6841798 16.589008 -1.898604 -4.782845 16.549452 -1.8973759 -4.8831739 16.515982 -1.8969294 -4.9881606 16.498075 -1.8983808 -4.5382748 14.684098 -1.6887164 -4.6585116 14.751686 -1.6999923 -4.6839652 14.521374 -1.6762124 -4.7450037 14.407411 -1.6661646 -4.8326831 14.376142 -1.6659414 -4.9385343 14.397918 -1.6720817 -5.0349894 14.390795 -1.6748728 -5.413693 15.173924 -1.7720016 -5.5134892 15.1591 -1.7742344 -5.6043277 15.119393 -1.7735646 -5.6752262 15.027081 -1.7666427 -5.7501984 14.947456 -1.7612839 -5.8276701 14.875806 -1.7569299 -5.8776064 14.736387 -1.7444259 -5.9279213 14.601522 -1.7324802 -5.9760451 14.464763 -1.7203112 -6.0211749 14.324301 -1.7076956 -6.0644174 14.18292 -1.6949683 -6.1461763 14.133595 -1.693517 -6.2183161 14.062898 -1.6894978 -6.3224139 14.06436 -1.6944101 -6.4205685 14.051514 -1.6976478 -6.5254993 14.052412 -1.7026716 -6.6306825 14.052551 -1.7076956 -6.7322459 14.043862 -1.7117147 -6.8274264 14.021052 -1.7140592 -6.9243422 14.001165 -1.7168503 -7.0649757 14.067646 -1.7305822 -7.1547713 14.031114 -1.7314754 -7.2558055 14.016072 -1.7351596 -7.3527637 13.9924 -1.737839 -7.446898 13.962804 -1.7398486 -7.5556092 13.959672 -1.745319 -7.6569076 13.941793 -1.7490033 -7.7573028 13.92146 -1.7524642 -8.2391605 14.575201 -1.8430061 -8.7733116 15.300254 -1.9434843 -8.8685255 15.248711 -1.9438192 -8.9679813 15.204279 -1.945159 -9.0667152 15.158347 -1.9463869 -9.1631613 15.108377 -1.9471685 -9.2582951 15.056102 -1.9477267 -9.3526058 15.002383 -1.9481733 -9.4471369 14.948915 -1.9487314 -9.5483322 14.905729 -1.9507411 -9.6482706 14.860197 -1.9525273 -9.7540178 14.823132 -1.9555416 -9.8613262 14.787807 -1.9588909 -9.9607792 14.740194 -1.9606771 -10.058334 14.689458 -1.9621285 -10.1766 14.66829 -1.9677106 -10.281269 14.626709 -1.9706134 -10.384658 14.582777 -1.9732928 -10.490219 14.541349 -1.9764187 -10.59449 14.49757 -1.9793215 -10.695662 14.449064 -1.981666 -10.812732 14.421329 -1.9870248 -10.929863 14.392701 -1.9923836 -11.037961 14.35136 -1.9960679 -11.147796 14.311586 -2.000087 -11.258787 14.272564 -2.0043294 -11.358554 14.218741 -2.0065622 -11.445585 14.148779 -2.0065622 -11.488105 14.02447 -1.9987472 -11.488296 13.850456 -1.9836755 -11.481035 13.670123 -1.967599 -11.485516 13.506303 -1.953867 -11.502038 13.35876 -1.9424795 -11.54461 13.242988 -1.9357809 -11.576989 13.116767 -1.9275194 -11.655268 13.043262 -1.9271845 -11.770413 13.010559 -1.9331015 -11.899691 12.992323 -1.9413631 -12.052834 12.998492 -1.9535321 -12.189494 12.985155 -1.9629101 -12.34561 12.990797 -1.975414 -12.495361 12.987848 -1.9868015 -12.658019 12.996363 -2.0001986 -12.8359 13.018228 -2.0159402 -12.990654 13.014481 -2.0278859 -13.135247 12.998837 -2.038157 -13.282267 12.98399 -2.048763 -13.457476 12.994748 -2.0637231 -13.517542 12.893411 -2.0607088 -13.644135 12.855203 -2.0680771 -13.724939 12.773273 -2.0684121 -13.79574 12.682093 -2.0672956 -13.819591 12.548437 -2.0591457 -13.864516 12.434874 -2.0543451 -13.915263 12.327164 -2.0505493 -13.954742 12.210138 -2.0451906 -14.006091 12.10414 -2.0417295 -14.052887 11.994746 -2.0377104 -14.104187 11.889719 -2.0344727 -14.15702 11.786421 -2.0315702 -14.199138 11.674719 -2.027216 -14.242733 11.564823 -2.0231969 -14.297145 11.464158 -2.0208523 -14.350858 11.363262 -2.018508 -14.399175 11.258466 -2.0154936 -14.454612 11.159577 -2.0135956 -14.503057 11.055614 -2.0108047 -14.544418 10.946696 -2.0071204 -14.586585 10.838873 -2.0036595 -14.631183 10.733295 -2.0006452 -14.658134 10.61534 -1.9952863 -14.722183 10.524621 -1.9951746 -14.762938 10.417474 -1.991937 -14.800487 10.308518 -1.9883645 -14.843806 10.204 -1.9856851 -14.878178 10.093758 -1.9818892 -14.909279 9.9818201 -1.9777585 -14.949517 9.8764563 -1.9749674 -14.99402 9.774231 -1.9728462 -15.049532 9.6793566 -1.972288 -15.096054 9.578846 -1.9706134 -15.141067 9.477602 -1.9688271 -15.181179 9.3735552 -1.9664826 -15.219736 9.268857 -1.9640265 -15.250766 9.1599455 -1.9606771 -15.279323 9.0499897 -1.9571047 -15.313112 8.9435368 -1.9543135 -15.338421 8.8325481 -1.9505178 -15.373316 8.7274733 -1.9480616 -15.4101 8.6237583 -1.9459404 -15.450542 8.5223217 -1.9443774 -15.472859 8.4112215 -1.9405816 -15.510163 8.3086147 -1.9387953 -15.529214 8.1965895 -1.9347762 -15.572162 8.0974817 -1.9338831 -15.612709 7.9972501 -1.9327666 -15.648177 7.894587 -1.9310919 -15.680304 7.7904639 -1.9290824 -15.678714 7.6700854 -1.922942 -15.679821 7.5517459 -1.9172482 -15.686353 7.4366622 -1.912336 -15.696568 7.3238845 -1.907982 -15.713215 7.2145796 -1.9045211 -15.749036 7.114347 -1.9035163 -15.766965 7.006279 -1.9003903 -15.795089 6.9030352 -1.898604 -15.812496 6.7953939 -1.8955897 -15.832841 6.6893468 -1.8930219 -15.842384 6.579113 -1.8892261 -15.869574 6.4765248 -1.8876631 -15.889645 6.3712621 -1.8853186 -15.899776 6.2623549 -1.8818576 -15.900829 6.1503372 -1.8773919 -15.903894 6.0396018 -1.8732612 -15.911787 5.9311428 -1.8698003 -15.917083 5.8221321 -1.866116 -15.938478 5.7193222 -1.8644415 -15.959209 5.6164694 -1.8627669 -15.953917 5.5048251 -1.8580779 -15.996807 5.4100142 -1.8591943 -16.011778 5.3058181 -1.8570731 -16.044033 5.2074718 -1.8570731 -16.080418 5.1104345 -1.8576313 -16.115269 5.0128512 -1.8580779 -16.145723 4.9138756 -1.8580779 -16.177475 4.8152819 -1.8583012 -16.2258 4.7214818 -1.860534 -16.256376 4.6223769 -1.8607572 -16.287306 4.5233402 -1.8610922 -16.311876 4.4225378 -1.8607572 -16.344469 4.3238921 -1.8614271 -16.367805 4.2227778 -1.8610922 -16.387627 4.1208134 -1.8604224 -16.37689 4.0114346 -1.8562915 -16.46306 3.9256256 -1.8634367 -16.478125 3.822515 -1.8624319 -16.507086 3.722647 -1.8631017 -16.563591 3.6287355 -1.8670093 -16.598181 3.5297225 -1.8684605 -16.611742 3.4262054 -1.8675674 -16.626604 3.3230443 -1.8668976 -16.620338 3.2158651 -1.8638833 -16.670038 3.1194913 -1.8673441 -16.695711 3.0183849 -1.8681257 -16.722727 2.9174225 -1.8691305 -16.789312 2.822999 -1.8747126 -16.804358 2.7196109 -1.8744893 -16.857059 2.6221023 -1.87862 -16.880693 2.519794 -1.8795131 -16.906658 2.4177163 -1.8807412 -0 0 -0 -0 0 -0 -16.978867 2.10991 -1.8842021 -17.006296 2.0074377 -1.8858768 -17.035084 1.904929 -1.8877747 -17.051392 1.8008898 -1.888333 -17.064098 1.6964272 -1.8885562 -17.074186 1.591692 -1.8885562 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -17.130133 0.96266204 -1.8895611 -17.147627 0.85813171 -1.8909007 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -0 0 -0 -17.236425 -0.089995176 -1.8984923 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -17.245449 -0.83140129 -1.9017301 -17.240025 -0.93720174 -1.9017301 -17.213118 -1.0417068 -1.8993856 -17.235157 -1.1492215 -1.9026232 -17.203003 -1.2531484 -1.8998321 -17.216785 -1.3604021 -1.9022882 -17.178408 -1.4634868 -1.898939 -0 -0 -0 -0 -0 -0 -17.11001 -1.775438 -1.8945849 -17.100771 -1.8806068 -1.8948082 -17.03363 -1.9790785 -1.8885562 -16.281376 -1.9930176 -1.8048245 -15.707031 -2.0206215 -1.7411883 -15.233436 -2.0548024 -1.6889397 -15.019805 -2.1199079 -1.6661646 -14.106952 -2.0794525 -1.5640118 -13.535043 -2.0800982 -1.5004873 -12.894989 -2.0628209 -1.4291478 -12.304695 -2.0459192 -1.3633904 -11.857111 -2.0463562 -1.3138213 -11.973456 -2.142169 -1.3285581 -11.009339 -2.0395038 -1.2199301 -10.516426 -2.0150275 -1.165002 -10.14025 -2.0075445 -1.1233593 -9.8444147 -2.0118363 -1.0908715 -9.5566969 -2.0142148 -1.0592767 -9.2936096 -2.0184119 -1.0304729 -9.2471066 -2.0678096 -1.0265654 -9.0734806 -2.0875301 -1.0080328 -8.9637938 -2.1202941 -0.99686855 -9.0066233 -2.188864 -1.0033438 -8.928422 -2.2279689 -0.9958638 -8.8520079 -2.2666905 -0.98860705 -9.0253611 -2.3701749 -1.0103773 -8.9876175 -2.4193106 -1.0076978 -8.9429054 -2.4662235 -1.0042369 -8.6014862 -2.4289727 -0.96616691 -7.9286418 -2.2916214 -0.88924533 -7.9363499 -2.3467073 -0.8918131 -7.9132404 -2.3927715 -0.89080828 -7.8898644 -2.4386406 -0.88980353 -7.9012866 -2.4953845 -0.89292949 -7.9028502 -2.5493095 -0.89493906 -7.9002733 -2.6021042 -0.89650208 -8.3617315 -2.8110573 -0.95310473 -8.347146 -2.8632782 -0.95343965 -8.2843962 -2.89869 -0.94808084 -8.3347797 -2.9738426 -0.95623076 -8.2920942 -3.0160971 -0.95332801 -8.1988878 -3.0392904 -0.94439662 -8.2507391 -3.1162224 -0.95288146 -8.3557472 -3.2145972 -0.96784157 -7.1626 -2.8062079 -0.82627898 -7.1387849 -2.8475273 -0.82549751 -8.1515217 -3.3095438 -0.95042533 -8.1025887 -3.3477361 -0.94696444 -8.1102943 -3.4093263 -0.95042533 -8.1020145 -3.4644954 -0.95198834 -8.0596437 -3.505029 -0.94942057 -8.0089025 -3.5415566 -0.94584799 -7.987927 -3.5910392 -0.94595963 -7.9666467 -3.6403975 -0.94607127 -7.9522715 -3.6929781 -0.94707608 -7.9033985 -3.7294056 -0.94383842 -7.7504296 -3.7155457 -0.92765027 -5.3821402 -2.6210613 -0.63458908 -5.3659563 -2.6540363 -0.63458908 -5.3389139 -2.6815596 -0.63324934 -7.7100296 -3.9317162 -0.93434882 -7.6557541 -3.9634178 -0.93055302 -7.7430129 -4.0690222 -0.94473159 -7.6310921 -4.0701609 -0.93367898 -7.6243277 -4.1268406 -0.93602347 -7.5143714 -4.1271448 -0.92519414 -7.5184212 -4.1896195 -0.92899001 -7.5462093 -4.2659912 -0.93591183 -7.4819598 -4.2904644 -0.93099958 -7.2235522 -4.2014041 -0.90085614 -7.3859477 -4.3567142 -0.92541742 -6.9625034 -4.1647601 -0.87350374 -7.4687295 -4.5299883 -0.94339186 -7.4323282 -4.5705252 -0.94227546 -7.2219887 -4.5024915 -0.91816068 -7.4344864 -4.6985474 -0.95009041 -7.3251839 -4.6926193 -0.93937272 -7.2620797 -4.715291 -0.93479538 -7.2371612 -4.7624927 -0.93535364 -7.1358724 -4.7588444 -0.9256407 -7.1402969 -4.8253517 -0.93021804 -11.767116 -8.0574121 -1.5642351 -11.715005 -8.1277628 -1.5639002 -6.8055525 -4.7839584 -0.89661372 -11.597383 -8.2588062 -1.5615557 -11.531178 -8.3187647 -1.5594345 -11.459859 -8.3747044 -1.5566435 -11.385892 -8.4283094 -1.5535175 -11.315675 -8.4843025 -1.5509497 -5.4915347 -4.1706018 -0.73674184 -5.4674168 -4.2054305 -0.73696512 -11.111335 -8.6551208 -1.5443628 -11.053337 -8.7194433 -1.5436929 -10.994192 -8.7827597 -1.5429114 -10.940095 -8.8500538 -1.5429114 -10.904806 -8.9327564 -1.5457025 -10.823784 -8.9779291 -1.5419066 -2.8763311 -2.4161401 -0.38406357 -2.8220851 -2.4002686 -0.37825817 -2.8005266 -2.4117038 -0.37725338 -10.51255 -9.1644535 -1.5288445 -10.50306 -9.2702122 -1.5358779 -10.4445 -9.3331594 -1.5356547 -10.392195 -9.4017363 -1.5364362 -3.606837 -3.3039026 -0.51155913 -3.4822915 -3.2293518 -0.49559429 -3.4747283 -3.2622201 -0.49749222 -3.5209196 -3.3464582 -0.50776333 -3.4953067 -3.3631763 -0.50698179 -3.4767406 -3.3866398 -0.50731677 -3.4898617 -3.4413986 -0.51267558 -9.9000683 -9.8820801 -1.5335335 -8.0420551 -8.126667 -1.246501 -3.5141497 -3.5952992 -0.52685416 -3.4706237 -3.5946336 -0.52339327 -9.6291895 -10.095458 -1.5294027 -3.118222 -3.310034 -0.47293088 -2.8920364 -3.1079633 -0.43899161 -9.4020529 -10.227826 -1.5228158 -7.6315808 -8.4048929 -1.2374579 -7.4843183 -8.3450327 -1.2213814 -7.5390677 -8.5105562 -1.2393558 -2.5728447 -2.9409394 -0.40103319 -2.5885403 -2.9957678 -0.4068386 -2.5643034 -3.004792 -0.40583381 -8.9016943 -10.559798 -1.5136611 -8.8278313 -10.603528 -1.5120981 -7.3538814 -8.9442425 -1.2629124 -8.6939125 -10.707203 -1.5115399 -8.6292944 -10.761897 -1.5117632 -8.5612478 -10.812305 -1.5114282 -8.4867859 -10.854456 -1.5099769 -8.3884439 -10.865423 -1.5041715 -8.3023386 -10.891399 -1.5005989 -8.2126446 -10.911965 -1.4963566 -8.1052303 -10.907913 -1.4887649 -7.9787784 -10.876514 -1.477489 -7.9107256 -10.923656 -1.4772657 -7.794425 -10.903275 -1.4677761 -7.7090421 -10.924914 -1.4642036 -7.6282315 -10.95244 -1.4615241 -7.544559 -10.975291 -1.4582865 -7.49437 -11.04687 -1.4617474 -7.4082017 -11.065396 -1.4580632 -7.3341403 -11.101523 -1.4568352 -7.2116151 -11.063068 -1.445671 -7.1161809 -11.064485 -1.4399772 -7.0220671 -11.066826 -1.4345067 -6.9245024 -11.062534 -1.4282547 -6.8356094 -11.070992 -1.423789 -6.7375698 -11.063499 -1.4173137 -6.6557431 -11.081632 -1.4142994 -6.5926867 -11.130812 -1.4154159 -6.5022125 -11.133298 -1.4105035 -6.4179082 -11.145428 -1.406931 -6.2816935 -11.06534 -1.3915243 -6.1966934 -11.073324 -1.3876169 -6.1166325 -11.089384 -1.3848258 -6.0052824 -11.047256 -1.3746663 -1.3418064 -2.5055413 -0.28135258 -5.8882828 -11.156151 -1.3792437 -5.7784553 -11.112721 -1.3691959 -5.6770859 -11.083403 -1.361046 -1.1384612 -2.2573545 -0.24607359 -1.1303372 -2.275867 -0.24752493 -1.1298896 -2.3104317 -0.25098586 -5.3787961 -11.168355 -1.3546823 -1.0946404 -2.3097563 -0.24919957 -1.0821282 -2.3200314 -0.24964614 -1.0811419 -2.3555267 -0.25321871 -5.0249481 -11.124019 -1.3333586 -4.953773 -11.148285 -1.3325772 -4.8912449 -11.19213 -1.3342518 -4.82758 -11.2338 -1.3357031 -4.7376738 -11.213779 -1.3296745 -4.653151 -11.20501 -1.3250972 -4.5873151 -11.240711 -1.3259903 -4.5245447 -11.284327 -1.3278883 -4.4421091 -11.27859 -1.3238691 -4.3835769 -11.333439 -1.3272183 -4.318893 -11.373129 -1.3287814 -1.1739427 -3.1503222 -0.33974153 -4.170126 -11.401008 -1.3258786 -4.0658545 -11.330976 -1.3144912 -4.0120883 -11.400703 -1.31985 -1.1555973 -3.3500922 -0.36017209 -1.1340646 -3.3542957 -0.35983717 -3.7809269 -11.410364 -1.3124815 -1.0756353 -3.3150287 -0.35358518 -1.0606925 -3.3386135 -0.35559475 -1.0171624 -3.2710452 -0.34688666 -0.99273217 -3.2629645 -0.34521201 -0.97099113 -3.2632797 -0.34454215 -0.95094973 -3.269176 -0.34454215 -0.92924166 -3.2692144 -0.34387231 -0.91155815 -3.2834721 -0.34487709 -0.89607513 -3.3062675 -0.34688666 -3.0395522 -11.490086 -1.2972982 -2.9610484 -11.477729 -1.2937256 -2.8939598 -11.509173 -1.2952887 -2.8171387 -11.501618 -1.2923859 -1.9463761 -8.1634741 -0.90487522 -0.73716605 -3.179219 -0.32868895 -1.9883865 -8.8178225 -0.97755444 -2.5244553 -11.523608 -1.287362 -2.4419167 -11.483477 -1.2809983 -1.7293773 -8.3857641 -0.92396611 -1.6771115 -8.3923197 -0.92351949 -1.6287953 -8.4190388 -0.92541742 -2.1575346 -11.530177 -1.279882 -2.0816185 -11.51484 -1.2766443 -2.0146835 -11.548933 -1.2791005 -1.3760411 -8.1850185 -0.89449251 -1.8742375 -11.581615 -1.2801052 -1.3451548 -8.6490517 -0.94540143 -1.7199399 -11.523149 -1.2709506 -1.6563786 -11.583656 -1.2766443 -1.577865 -11.539449 -1.270504 -1.5038151 -11.524279 -1.267713 -1.4341782 -11.542165 -1.2687178 -1.3625143 -11.543839 -1.2679362 -1.2957439 -11.588523 -1.2720671 -1.2247181 -11.597243 -1.2721786 -1.1556007 -11.625306 -1.2745231 -1.0857236 -11.648009 -1.2763094 -1.0121638 -11.630692 -1.27363 -0.94198185 -11.651541 -1.2753047 -0.86950916 -11.644218 -1.2738533 -0.79906446 -11.664206 -1.275528 -0.72797418 -11.676824 -1.2764211 -0.65648013 -11.684048 -1.276756 -0.58268875 -11.646171 -1.2720671 -0.51130545 -11.651512 -1.2722903 -0.44152886 -11.700109 -1.2774259 -0.36809647 -11.650949 -1.2716204 -0.29799324 -11.707627 -1.2777607 -0.22622786 -11.71321 -1.2782073 -0.15453649 -11.728289 -1.2797704 -0.08264748 -11.739947 -1.2809983 -0.010579268 -11.706446 -1.2772026 --0.06142595 -11.740077 -1.2809983 --0.13339297 -11.733517 -1.2803285 --0.20602828 -11.769241 -1.2844594 --0.27948228 -11.820409 -1.2903764 --0.35268536 -11.841318 -1.2929442 --0.42398113 -11.801193 -1.2887018 --0.49751085 -11.825176 -1.2917161 --0.57182914 -11.858627 -1.2958468 --0.64668435 -11.893595 -1.3002009 --0.71922988 -11.88246 -1.2994194 --0.78928375 -11.835186 -1.2946187 --0.85741341 -11.76867 -1.287697 --0.92976499 -11.765169 -1.2879202 --1.0016842 -11.756272 -1.2875853 --1.0741621 -11.753863 -1.2880319 --1.1451045 -11.735183 -1.2866921 --1.2106284 -11.665664 -1.2796587 --1.2779492 -11.619492 -1.2753047 --1.3598849 -11.703233 -1.2856874 --1.4794741 -12.085279 -1.3298978 --1.5516986 -12.061189 -1.3282231 --1.6340429 -12.113484 -1.3352566 --1.7072282 -12.095359 -1.3343635 --1.7856135 -12.113166 -1.3376011 --1.8650362 -12.135377 -1.3413969 --1.9391485 -12.121742 -1.3411736 --2.0089266 -12.082168 -1.3380476 --2.0803201 -12.053946 -1.3362614 --2.1691158 -12.124103 -1.3457509 --2.24401 -12.113497 -1.3460859 --2.3130596 -12.072171 -1.3429599 --2.376477 -12.004135 -1.3368196 --2.4759495 -12.1159 -1.3513331 --2.5516791 -12.107286 -1.3521146 --2.6273961 -12.0982 -1.3528961 --2.7004957 -12.077002 -1.3523378 --2.7736568 -12.056331 -1.3518913 --2.8484957 -12.042953 -1.3523378 --2.9263251 -12.041664 -1.3542358 --3.0037646 -12.037945 -1.3559104 --3.0829937 -12.040467 -1.3583666 --3.1502531 -11.996333 -1.3554639 --3.2124381 -11.934555 -1.3505516 --3.2850785 -11.912704 -1.3503283 --3.3710725 -11.938228 -1.3556871 --3.4478471 -11.929729 -1.3571385 --3.5170374 -11.895007 -1.3555756 --3.5727029 -11.81613 -1.348877 --3.6433775 -11.788289 -1.3482071 --3.7282083 -11.805511 -1.3528961 --3.8021004 -11.787143 -1.3534544 --3.8895845 -11.809842 -1.3589247 --3.9660912 -11.797998 -1.3603761 --4.0277686 -11.742421 -1.356692 --4.091867 -11.694974 -1.3540125 --4.1655526 -11.675262 -1.3546823 --4.2262435 -11.619598 -1.3511099 --4.2535992 -11.475109 -1.3369312 --4.3091836 -11.409747 -1.3322423 --4.3737597 -11.36918 -1.3305676 --4.4532237 -11.367111 -1.3335819 --4.5273051 -11.35065 -1.3349217 --4.5916328 -11.309766 -1.3333586 --4.7083707 -11.396187 -1.347314 --4.8070869 -11.435791 -1.3556871 --1.5412173 -3.603698 -0.4023729 --1.5561674 -3.5777698 -0.40036336 --5.0420852 -11.40263 -1.3627206 --5.0838432 -11.308937 -1.3550173 --5.1494207 -11.269395 -1.3540125 --1.5459871 -3.3284941 -0.37435067 --1.563413 -3.3126543 -0.37356919 --1.5815619 -3.2985184 -0.37301096 --1.6069919 -3.2994738 -0.37435067 --1.6439462 -3.3234007 -0.37859309 --1.6848217 -3.3541019 -0.38372862 --1.712593 -3.3578658 -0.38551491 --1.7381893 -3.357002 -0.38674298 --1.7656884 -3.3594689 -0.3884176 --1.7914124 -3.358217 -0.38964567 --4.7739029 -8.8199062 -1.0887502 --6.2285471 -11.34086 -1.4156392 --1.8447 -3.3099165 -0.38774776 --1.8581284 -3.2864239 -0.38618475 --1.8743042 -3.268064 -0.38529164 --1.892323 -3.2530658 -0.38484505 --1.9178011 -3.250809 -0.38607311 --6.727447 -11.247198 -1.4343951 --6.8303423 -11.261788 -1.4417634 --6.90452 -11.228131 -1.4428798 --6.9816957 -11.199047 -1.4446661 --7.1033669 -11.240005 -1.4558303 --7.2204413 -11.27152 -1.4658781 --7.3765888 -11.361196 -1.4838526 --7.5111632 -11.414509 -1.497138 --7.5953946 -11.389703 -1.5000408 --7.6551223 -11.328063 -1.4980311 --7.7166262 -11.269399 -1.4964682 --7.7805305 -11.21449 -1.4954634 --7.8743386 -11.202311 -1.5003756 --7.9584899 -11.17564 -1.5033901 --8.0402842 -11.145134 -1.5059578 --8.103241 -11.088368 -1.504953 --8.1498413 -11.009685 -1.5009339 --8.2184343 -10.961061 -1.5011572 --8.3065701 -10.938128 -1.5050646 --8.3468723 -10.852294 -1.5001523 --8.414525 -10.802442 -1.5003756 --8.4781876 -10.747487 -1.4999291 --8.5408716 -10.691381 -1.4993709 --8.6150618 -10.64959 -1.5009339 --8.6827631 -10.599605 -1.5013804 --8.7495413 -10.548423 -1.5017154 --8.8249645 -10.507475 -1.5036134 --8.8950653 -10.459942 -1.504618 --8.9545393 -10.399894 -1.5038366 --9.0168781 -10.343256 -1.5036134 --9.0999002 -10.310087 -1.5069625 --9.1762333 -10.268878 -1.5091954 --9.2544022 -10.22933 -1.5117632 --9.3371296 -10.194339 -1.5151125 --9.4022083 -10.13977 -1.5155591 --9.4669676 -10.084786 -1.5160056 --9.5430441 -10.041636 -1.5183501 --9.6217031 -10.000795 -1.5211412 --9.6849661 -9.9437056 -1.521476 --9.7667274 -9.9053211 -1.5248253 --9.8350439 -9.8529444 -1.5260534 --9.90026 -9.7973051 -1.526835 --9.9708471 -9.7467937 -1.5285095 --10.046906 -9.7013073 -1.5310774 --10.114873 -9.6477089 -1.5324171 --10.177496 -9.588871 -1.5329752 --10.244143 -9.5336905 -1.5342033 --9.8795938 -9.0819187 -1.469674 --9.899085 -8.9883928 -1.4642036 --9.9192801 -8.8962984 -1.4589564 --9.9535971 -8.8174753 -1.455942 --9.9147778 -8.6750898 -1.4420984 --9.9106779 -8.5647058 -1.4336135 --9.9539738 -8.4959917 -1.4322739 --10.002118 -8.4315529 -1.4317156 --9.976531 -8.3058023 -1.4204397 --9.9720402 -8.198988 -1.4124014 --10.05919 -8.1677151 -1.4177604 --10.177341 -8.1605473 -1.4275849 --10.318373 -8.170125 -1.440647 --10.350305 -8.0925808 -1.4380792 --10.409204 -8.0362072 -1.4394189 --10.527073 -8.024601 -1.4491318 --10.676154 -8.0351553 -1.4631988 --10.773113 -8.0050602 -1.4698973 --11.591231 -8.5031128 -1.5770739 --11.644796 -8.4329958 -1.5772973 --11.715723 -8.3752565 -1.5799767 --11.790439 -8.319829 -1.5832143 --11.855128 -8.2569828 -1.5851122 --11.922766 -8.1959076 -1.5874567 --11.999969 -8.1410084 -1.591141 --12.069512 -8.0804939 -1.5938203 --12.138765 -8.0194321 -1.5964998 --12.20689 -7.9572806 -1.5990676 --12.274709 -7.8945951 -1.6016353 --12.319562 -7.8170009 -1.6011888 --12.384141 -7.7518077 -1.6034216 --12.42978 -7.6746297 -1.6031983 --12.486822 -7.6044207 -1.604538 --12.565619 -7.5471039 -1.6087804 --12.615965 -7.472393 -1.6093386 --12.686462 -7.4093766 -1.6125762 --12.794551 -7.3675971 -1.6207261 --6.7132907 -3.8108923 -0.82929337 --12.903945 -7.2211957 -1.6232939 --12.94627 -7.1409225 -1.6230706 --12.994207 -7.0637245 -1.6236289 --13.045189 -6.9880838 -1.6246337 --13.101004 -6.9148669 -1.6263083 --13.164346 -6.8453541 -1.6289877 --7.3757572 -3.7778227 -0.89304113 --6.9418797 -3.5019639 -0.8355453 --6.948998 -3.4522283 -0.83375907 --6.9575524 -3.4034111 -0.83219606 --6.9827809 -3.3628125 -0.83275425 --7.0293236 -3.3322496 -0.83599192 --6.6930261 -3.122654 -0.79178154 --6.7138662 -3.0823567 -0.79200482 --13.679688 -6.1794972 -1.6484134 --13.731876 -6.1019011 -1.6501998 --13.780896 -6.0227027 -1.6516511 --13.833112 -5.9447021 -1.653549 --7.3563228 -3.1077991 -0.85921353 --7.4183874 -3.0805171 -0.86446071 --14.032198 -5.726624 -1.6647133 --14.064304 -5.6393065 -1.6643783 --14.09217 -5.550354 -1.6635969 --14.135229 -5.4673667 -1.6647133 --14.188948 -5.3882937 -1.6671693 --14.255264 -5.3136268 -1.6711885 --14.33333 -5.2427864 -1.676659 --14.357746 -5.1520548 -1.6757659 --14.359093 -5.0533028 -1.6721933 --14.370101 -4.9582949 -1.6698488 --14.378603 -4.8627052 -1.667281 --14.40817 -4.7743883 -1.667281 --14.453261 -4.6911073 -1.669179 --14.665504 -4.6607308 -1.6908376 --14.755504 -4.5898442 -1.6980944 --14.81286 -4.5081902 -1.7015553 --14.882151 -4.4296904 -1.7064675 --14.868021 -4.3263516 -1.7016668 --14.818775 -4.2135687 -1.6928471 --14.770622 -4.1020856 -1.6842507 --14.773455 -4.0053959 -1.6816829 --12.77069 -3.3783658 -1.4461175 --12.781557 -3.2974598 -1.445001 --12.821788 -3.2240613 -1.4473455 --14.65013 -3.5884302 -1.6565634 --14.653506 -3.494091 -1.6544422 --12.299105 -2.8529816 -1.3804717 --14.64875 -3.3035121 -1.6490834 --14.660007 -3.2116528 -1.6480786 --14.681382 -3.1220536 -1.6483018 --13.384418 -2.7604833 -1.4973613 --14.89107 -2.9761324 -1.6680626 --14.942224 -2.8911257 -1.6718583 --14.981172 -2.8034093 -1.6743145 --15.026449 -2.7165616 -1.6775521 --15.078077 -2.6304591 -1.6815712 --15.251712 -2.5644252 -1.6995456 --15.33779 -2.4822268 -1.7075839 --15.521626 -2.4143443 -1.7267864 --15.586273 -2.3265436 -1.7324802 --15.648458 -2.2377586 -1.7379507 --15.681586 -2.1443925 -1.7401835 --15.558465 -2.0303824 -1.7247769 --15.861547 -1.9710375 -1.7577114 --16.361855 -1.9313519 -1.8129743 --17.320498 -1.9368519 -1.9200394 --17.513893 -1.849748 -1.9405816 --17.520958 -1.7418567 -1.940135 --17.565947 -1.6375465 -1.9440424 --17.564774 -1.528785 -1.9428145 --17.564909 -1.4202597 -1.9418097 --17.683292 -1.3206745 -1.9542019 --17.668261 -1.2105842 -1.9516342 --17.700151 -1.1036977 -1.9544252 --17.723457 -0.99601907 -1.9563231 --17.648842 -0.88322616 -1.94728 --17.662865 -0.7753107 -1.9482849 --17.652393 -0.66635615 -1.9466102 --17.652178 -0.5579049 -1.9461637 --15.757541 1.1615255 -1.9354826 --15.742205 1.2575573 -1.934491 --15.732215 1.3539556 -1.9342432 --15.719659 1.4500964 -1.9337474 --15.701577 1.5456475 -1.9326319 --15.678968 1.6406181 -1.9310205 --15.65184 1.7349318 -1.9289134 --15.631044 1.8297826 -1.9276739 --15.580131 1.9207989 -1.922716 --15.567067 2.0162332 -1.922592 --15.595699 2.1173227 -1.9277979 --15.583397 2.2131157 -1.9279218 --15.568542 2.3085463 -1.9277979 --15.552123 2.4037266 -1.92755 --15.531203 2.4981613 -1.9268063 --15.505795 2.5917754 -1.9255668 --15.480802 2.6853414 -1.9244512 --15.452314 2.7781713 -1.9229639 --15.429123 2.8718426 -1.9222202 --15.414135 2.9670229 -1.922592 --15.391747 3.0607719 -1.9220963 --15.363928 3.1533601 -1.9209807 --15.33167 3.2449 -1.9193695 --15.293051 3.3348942 -1.9170144 --15.251 3.4238842 -1.9142876 --15.211335 3.513154 -1.9119326 --15.191423 3.6068816 -1.9121804 --15.229739 3.7148452 -1.9199891 --15.157568 3.7959256 -1.9136678 --15.092667 3.878237 -1.9083381 --15.083939 3.9748175 -1.9103212 --15.023822 4.0577202 -1.9057351 --15.036895 4.1604156 -1.910693 --14.988171 4.246109 -1.9077183 --14.936104 4.3305321 -1.9043717 --14.948255 4.4336681 -1.9094536 --14.940709 4.5313549 -1.9120564 --14.893668 4.6170664 -1.9095775 --14.860329 4.7068667 -1.9089578 --14.818894 4.7939882 -1.9073465 --14.778836 4.8814006 -1.9059831 --14.747666 4.971673 -1.9058591 --14.719698 5.0630379 -1.9062309 --14.693036 5.1549039 -1.9068507 --14.652721 5.2419529 -1.9057351 --14.617485 5.3307414 -1.9053633 --14.591942 5.4230981 -1.9063549 --14.57695 5.5195599 -1.9088339 --14.553918 5.613184 -1.9103212 --14.544139 5.7121754 -1.9136678 --14.505131 5.7998352 -1.913172 --14.501437 5.9018221 -1.9175102 --14.480536 5.9971457 -1.9196173 --14.469984 6.0970597 -1.9232118 --14.466045 6.2001967 -1.9277979 --14.440463 6.294394 -1.9295331 --14.439671 6.3997703 -1.934739 --14.403749 6.4898806 -1.9352348 --14.3817 6.5864029 -1.9377137 --14.35271 6.6799674 -1.939325 --14.322217 6.7729998 -1.9408123 --14.288438 6.8646197 -1.9419279 --14.257641 6.9578209 -1.9435393 --14.260911 7.0680904 -1.9499846 --14.235887 7.1648302 -1.9525875 --14.204909 7.2588191 -1.9544467 --14.171553 7.3517828 -1.956058 --14.139346 7.4455357 -1.9579172 --14.110022 7.5410409 -1.9602722 --14.077441 7.6350465 -1.9622554 --14.048583 7.7313285 -1.9648583 --14.022539 7.8294787 -1.967957 --14.015676 7.9388494 -1.9739065 --13.991651 8.0390368 -1.9775009 --13.970351 8.1412258 -1.9815912 --13.925261 8.2298222 -1.982335 --13.898332 8.3293953 -1.9858055 --13.863921 8.4248247 -1.9882845 --13.832241 8.5222273 -1.9912592 --13.795679 8.6169291 -1.9936142 --13.76099 8.7130947 -1.996341 --13.723134 8.8075514 -1.9986961 --13.697113 8.9099874 -2.0029104 --13.662066 9.0069733 -2.0058851 --13.627995 9.1049662 -2.0091076 --13.585018 9.1973162 -2.0110908 --13.538965 9.2877979 -2.0127022 --13.495572 9.3803253 -2.0148094 --13.447497 9.4698124 -2.0162966 --13.41337 9.569437 -2.020015 --13.372093 9.6643486 -2.022742 --13.330956 9.7596989 -2.0255928 --13.291543 9.8566818 -2.0288153 --13.237954 9.9434156 -2.0299308 --13.198014 10.040678 -2.0332775 --13.157379 10.137824 -2.0366242 --13.107443 10.228133 -2.0386074 --13.054558 10.316365 -2.0402186 --12.98404 10.390692 -2.039103 --12.935457 10.482661 -2.0415821 --12.877796 10.5675 -2.0426974 --12.830266 10.660905 -2.0455484 --12.790424 10.761151 -2.0497625 --12.757389 10.867744 -2.0552163 --12.723525 10.974337 -2.0606699 --12.679864 11.073088 -2.0646362 --12.633983 11.170402 -2.0683548 --12.57999 11.260949 -2.0708337 --12.526097 11.351921 -2.0734365 --12.465712 11.437287 -2.075048 --12.410566 11.527743 -2.0776508 --12.348996 11.612514 -2.0792623 --12.289009 11.699015 -2.0812454 --12.228425 11.785216 -2.0832286 --12.167245 11.871115 -2.0852118 --12.104059 11.955311 -2.086947 --12.044508 12.043388 -2.0894258 --11.987818 12.134715 -2.0925245 --11.929073 12.224378 -2.0953753 --11.862793 12.306631 -2.0969868 --11.813742 12.407216 -2.1018207 --11.746907 12.489591 -2.1035559 --11.676805 12.568704 -2.1047955 --11.606844 12.648157 -2.1061587 --11.570999 12.765458 -2.1139677 --11.531503 12.879836 -2.1212804 --11.418735 12.912437 -2.1149592 --11.337332 12.980017 -2.1145873 --11.273029 13.067369 -2.1175621 --11.143088 13.078132 -2.1080182 --11.001942 13.074127 -2.0962429 --10.849851 13.055147 -2.082237 --10.733031 13.076985 -2.075048 --10.570122 13.040835 -2.0586867 --10.433483 13.034946 -2.0474076 --10.301624 13.033324 -2.0369959 --10.188494 13.054046 -2.0303028 --10.056117 13.048718 -2.0196433 --9.9326038 13.053316 -2.0107191 --9.8159685 13.065619 -2.0031581 --9.6995583 13.076984 -1.9955974 --9.5528975 13.045781 -1.9815912 --9.4436073 13.06394 -1.9753939 --9.3321495 13.078019 -1.9687006 --9.219162 13.088791 -1.9616356 --9.0752449 13.053856 -1.9477534 --8.9584885 13.056109 -1.9396969 --8.8492804 13.068105 -1.9332516 --8.7408152 13.080079 -1.9269302 --8.6227055 13.076303 -1.9183779 --8.5071363 13.0749 -1.9103212 --8.3945913 13.076748 -1.9028844 --8.2956161 13.098667 -1.8985462 --8.1877518 13.105558 -1.8921009 --8.0749102 13.103173 -1.8844161 --7.9639544 13.102443 -1.8771032 --7.8737168 13.134891 -1.8747482 --7.8182192 13.225668 -1.8809456 --7.7963777 13.375412 -1.8956953 --7.7027903 13.403209 -1.8928446 --7.6008415 13.415685 -1.8878866 --7.4970956 13.423949 -1.8824329 --7.3930564 13.430578 -1.8768553 --7.2953696 13.447777 -1.8728889 --7.192605 13.454657 -1.8675592 --7.0955801 13.471319 -1.8637168 --7.0009069 13.491702 -1.8604941 --6.9017358 13.502595 -1.856032 --6.7986798 13.504804 -1.8504544 --6.6998234 13.514259 -1.8459923 --6.6045895 13.530145 -1.8425218 --6.5167189 13.560576 -1.8411583 --6.4312687 13.595822 -1.8405386 --6.3351636 13.608039 -1.8368201 --6.2498941 13.643046 -1.8363243 --6.1444583 13.63319 -1.8297551 --6.0586805 13.6661 -1.8291354 --5.9743166 13.702107 -1.8290114 --5.8854384 13.727563 -1.8275241 --5.8003259 13.761588 -1.8272761 --5.7100816 13.783168 -1.8254169 --5.6119351 13.784858 -1.8209548 --5.5165629 13.792314 -1.8173603 --5.4274778 13.814819 -1.8158729 --5.3401098 13.841381 -1.8150053 --5.2536745 13.870175 -1.8145095 --5.1622467 13.885407 -1.8122785 --5.0725303 13.904702 -1.8106672 --4.9754176 13.902864 -1.806329 --4.885747 13.920959 -1.8047177 --4.7924905 13.928156 -1.8017429 --4.7050366 13.951658 -1.8009992 --4.6159186 13.969901 -1.7996358 --4.5215616 13.971526 -1.7961652 --4.4270587 13.971574 -1.7925707 --4.3200903 13.930234 -1.7836465 --4.2161012 13.895707 -1.7757138 --4.12568 13.904192 -1.7734828 --4.035037 13.911137 -1.7711278 --3.9417593 13.907947 -1.7675333 --3.8531721 13.920395 -1.7660459 --3.7635453 13.928449 -1.7640628 --3.669919 13.920574 -1.7600964 --3.5777662 13.916882 -1.7567499 --3.49086 13.932797 -1.7560061 --3.4060097 13.956846 -1.7563779 --3.3223712 13.986172 -1.7574935 --3.2378314 14.012094 -1.7582372 --3.1591849 14.064616 -1.7624514 --3.081496 14.123486 -1.7675333 --3.0058744 14.19455 -1.7742264 --2.9354825 14.294375 -1.784638 --2.8690107 14.419173 -1.7982724 --2.7891114 14.481328 -1.8039739 --2.7023826 14.509875 -1.8054613 --2.6099639 14.507627 -1.8031063 --2.5169964 14.500882 -1.8002555 --2.4204466 14.471033 -1.7945539 --2.330663 14.479733 -1.7938102 --2.2401054 14.482975 -1.7924469 --2.1491594 14.482705 -1.7907115 --2.0598359 14.492673 -1.7903397 --1.9702042 14.500122 -1.7897199 --1.8813236 14.512922 -1.7898439 --1.7915099 14.518284 -1.7891002 --1.7055094 14.555614 -1.7924469 --1.6187901 14.589474 -1.7954216 --1.5281041 14.588276 -1.7940581 --1.437591 14.587502 -1.7928187 --1.3537098 14.65731 -1.8005034 --1.2686002 14.721693 -1.8075684 --1.1797476 14.747993 -1.8099234 --1.0882118 14.7411 -1.8081882 --0.99667114 14.731659 -1.806205 --0.9057132 14.728583 -1.8050895 --0.81417352 14.713058 -1.8024865 --0.72271258 14.69399 -1.7995118 --0.63300681 14.709052 -1.8008753 --0.54336238 14.729517 -1.8029823 --0.45288226 14.729598 -1.8026105 --0.36220264 14.720196 -1.8011231 --0.27110818 14.680472 -1.7959174 --0.18091601 14.67293 -1.7948018 --0.091008604 14.694601 -1.7974048 --0.00084140874 14.74549 -1.8037261 -0.089916304 14.790862 -1.8094276 -0.18069403 14.792016 -1.8096756 -0.27116016 14.774755 -1.8076924 -0.3613725 14.754957 -1.8054613 -0.451078 14.725683 -1.8021147 -0.54054749 14.698839 -1.79914 -0.63055718 14.69128 -1.7986442 -0.72049451 14.68317 -1.7981484 -0.81161618 14.697298 -1.8005034 -0.90287751 14.709868 -1.8027345 -0.9924491 14.694151 -1.801495 -1.0798904 14.65117 -1.796909 -1.1680279 14.622507 -1.7941821 -1.2559396 14.594304 -1.7915791 -1.3439143 14.569526 -1.7894721 -1.440582 14.635068 -1.7987682 -1.5312841 14.634835 -1.7998837 -1.6305702 14.710967 -1.8106672 -1.725422 14.740108 -1.8156251 -1.8188703 14.753863 -1.8187238 -1.9098742 14.746362 -1.8192196 -1.9999195 14.731416 -1.8188477 -2.0894346 14.712973 -1.818104 -2.1773424 14.68417 -1.8161209 -2.2622461 14.637192 -1.8119066 -2.3405068 14.551518 -1.8028585 -2.4096186 14.416504 -1.7876128 -2.4878514 14.342787 -1.7801759 -2.5601764 14.240333 -1.7691447 -2.6273422 14.116073 -1.7553864 -2.7142825 14.101635 -1.7556343 -2.8011446 14.086661 -1.7558821 -2.887526 14.069208 -1.7558821 -2.9768817 14.065787 -1.7577415 -3.0631318 14.047257 -1.7577415 -3.1503537 14.033038 -1.7583611 -3.2370696 14.016345 -1.758733 -3.3264508 14.0107 -1.7605922 -3.4212945 14.026658 -1.7653022 -3.5138063 14.03139 -1.7686489 -3.4330907 13.360858 -1.684984 -3.5142479 13.336662 -1.6846122 -3.7924464 14.041928 -1.7786885 -3.8711236 13.991616 -1.775218 -3.9547374 13.959963 -1.7742264 -4.0491643 13.965931 -1.7781928 -4.1313944 13.929407 -1.7767054 -4.2153454 13.899047 -1.7760857 -4.3023124 13.878608 -1.7768294 -4.3822942 13.835867 -1.7747222 -4.4649687 13.802108 -1.7738546 -4.5582886 13.800834 -1.7773252 -4.6460538 13.782007 -1.7785647 -4.7366648 13.771068 -1.7809197 -4.8260016 13.75579 -1.7827789 -4.9139924 13.736197 -1.7841423 -4.9992037 13.708582 -1.7845142 -5.0897932 13.695322 -1.7868692 -5.1839223 13.690744 -1.7904637 -5.273901 13.674417 -1.7925707 -5.3704047 13.674126 -1.796909 -5.4648924 13.667634 -1.8005034 -5.5613723 13.665093 -1.8047177 -5.6470141 13.635296 -1.8053374 -5.7348113 13.610448 -1.8067008 -5.8205614 13.580476 -1.8074445 -5.904573 13.546325 -1.8076924 -5.9924064 13.520726 -1.8091798 -6.0874858 13.510843 -1.8128982 -6.1789503 13.492182 -1.8155011 -6.2679019 13.467508 -1.8173603 -6.3631473 13.455706 -1.8210788 -6.459343 13.445029 -1.8250451 -6.5517297 13.425653 -1.8278959 -6.6419172 13.401202 -1.830127 -6.7374053 13.386786 -1.8338454 -6.8261924 13.358447 -1.8357046 -6.9199119 13.339211 -1.8389273 -7.015964 13.323717 -1.8427696 -7.1041336 13.292668 -1.844505 -7.1983371 13.272378 -1.8478515 -7.2853808 13.238392 -1.8493389 -7.3751817 13.209035 -1.8515699 -7.4580483 13.166986 -1.8520657 -7.5065627 13.065054 -1.8440092 -7.6080732 13.055613 -1.8493389 -7.6991458 13.027477 -1.8520657 -7.8080153 13.028504 -1.8591307 -7.9115167 13.019356 -1.8648324 -8.0167608 13.011961 -1.8709058 -8.1316738 13.018911 -1.8792104 -8.2347622 13.005657 -1.8846641 -8.333169 12.984112 -1.8890022 -9.0723286 13.946638 -2.0400946 -9.1615562 13.896507 -2.0409622 -9.2554722 13.853232 -2.0429454 -9.3503141 13.810971 -2.0451765 -9.4438629 13.76643 -2.0471597 -9.5372171 13.72126 -2.0491428 -9.630372 13.675464 -2.051126 -9.7215939 13.626616 -2.0527372 -9.8085098 13.571534 -2.0534811 -9.8974609 13.5191 -2.0547204 -9.9961863 13.479635 -2.0580671 -10.098376 13.444227 -2.0621574 -10.199905 13.407282 -2.0661237 -10.294699 13.36095 -2.0687265 -10.39297 13.318651 -2.0720732 -10.484341 13.267087 -2.0740564 -10.572989 13.211802 -2.0755436 -10.666352 13.162097 -2.0780227 -10.767057 13.120947 -2.081989 -10.874634 13.08745 -2.0873187 -10.982843 13.053885 -2.0927725 -11.087188 13.014953 -2.0974824 -11.184338 12.966965 -2.1008291 -11.290454 12.928737 -2.105911 -11.373514 12.863676 -2.1066546 -11.382733 12.716022 -2.0936401 -11.330596 12.50257 -2.0694702 -11.410452 12.436467 -2.0700901 -11.481143 12.360404 -2.0690985 -11.546571 12.278882 -2.0672393 -11.60938 12.194866 -2.0650082 -11.667459 12.106256 -2.0620334 -11.721426 12.013843 -2.058439 -11.783763 11.930401 -2.0564559 -11.844114 11.845243 -2.0542247 -11.891158 11.747242 -2.0497625 -11.948099 11.659506 -2.0471597 -12.010842 11.577711 -2.0456722 -12.070157 11.492848 -2.043689 -12.129605 11.408374 -2.0418298 -12.184837 11.320227 -2.039351 -12.234326 11.227136 -2.0360043 -12.283133 11.133864 -2.0326579 -12.32608 11.035784 -2.0284436 -12.373491 10.942198 -2.0250969 -12.42545 10.853015 -2.0226181 -12.477533 10.764256 -2.020263 -12.530506 10.676553 -2.0181558 -12.582113 10.587967 -2.0159247 -12.630816 10.497248 -2.0133219 -12.677345 10.40507 -2.0104711 -12.710886 10.302722 -2.0056372 -12.763017 10.215855 -2.003902 -12.816117 10.129967 -2.0024145 -12.871774 10.046254 -2.0014229 -12.917454 9.9549723 -1.9989439 -12.961709 9.8629074 -1.996341 -13.002942 9.7688875 -1.9933662 -13.045103 9.6759148 -1.9906394 -13.073003 9.5728283 -1.9858055 -13.10013 9.4697647 -1.9809715 -13.147488 9.3817129 -1.9793602 -13.160185 9.2694407 -1.972543 -13.192369 9.171526 -1.9688246 -13.254943 9.0948973 -1.9698162 -13.303925 9.0089445 -1.9688246 -13.33915 8.9139137 -1.9658499 -13.36957 8.8160582 -1.9622554 -13.401786 8.7197895 -1.9590328 -13.433326 8.6234579 -1.9558101 -13.470895 8.5313148 -1.9535791 -13.512048 8.4416647 -1.9519677 -13.550919 8.3507891 -1.9501085 -13.592575 8.261817 -1.948745 -13.619181 8.1639748 -1.9452745 -13.643391 8.0651093 -1.9415561 -13.662614 7.9637556 -1.937218 -13.687131 7.8659315 -1.9337474 -13.718734 7.7725081 -1.9313923 -13.754038 7.6814122 -1.9296571 -13.783525 7.5873055 -1.9271781 -13.808886 7.4912343 -1.9242034 -13.837089 7.3970089 -1.9217244 -13.852364 7.2962461 -1.9175102 -13.89511 7.2101984 -1.9172623 -13.925836 7.1180305 -1.9154031 -13.935568 7.0154967 -1.910693 -13.954348 6.9179592 -1.9073465 -13.983156 6.8256783 -1.9054873 -14.007781 6.731586 -1.9031322 -14.036263 6.6395698 -1.901397 -14.065043 6.5478764 -1.8997856 -14.091423 6.4552536 -1.8979264 -14.118101 6.3629618 -1.8961911 -14.141456 6.2693791 -1.8940841 -14.166014 6.1765432 -1.8922248 -14.180844 6.0797324 -1.8891262 -14.178562 5.9760365 -1.8837963 -14.194795 5.8805723 -1.8810695 -14.221419 5.7896233 -1.87983 -14.207844 5.6827264 -1.8732609 -14.236903 5.5932651 -1.8725171 -14.259846 5.5015187 -1.8710297 -14.272918 5.4061871 -1.8683029 -14.289079 5.3122859 -1.8660718 -14.318609 5.2234898 -1.8657 -14.35039 5.1355338 -1.8657 -14.390058 5.0503416 -1.8668156 -14.427343 4.9642105 -1.8676832 -14.480099 4.8832006 -1.8706579 -14.516384 4.7964392 -1.8715255 -14.544598 4.7069726 -1.8714015 -14.566584 4.6155424 -1.8705339 -14.607899 4.5301905 -1.8722693 -14.616429 4.4347124 -1.8697903 -14.65478 4.3483305 -1.8712777 -14.704059 4.2649612 -1.8742524 -14.712766 4.1697893 -1.8720213 -14.666348 4.0595875 -1.8627253 -14.768576 3.9904797 -1.8727651 -14.843637 3.9131889 -1.8793342 -14.865447 3.8215425 -1.8790864 -14.885728 3.7295346 -1.8787146 -14.925684 3.6423604 -1.8809456 -14.960303 3.55369 -1.8825569 -14.975059 3.4602652 -1.8816893 -14.98439 3.365706 -1.8802019 -15.032875 3.2798321 -1.8837963 -15.06825 3.1908183 -1.8857795 -15.088516 3.0985007 -1.8859035 -15.113084 3.0070224 -1.8866472 -15.136122 2.9151716 -1.8872669 -15.166406 2.824604 -1.8888782 -15.194195 2.7334235 -1.8902416 -15.215569 2.6409903 -1.8908614 -15.22953 2.5472522 -1.8906136 -15.25369 2.4551761 -1.891729 -15.282197 2.3636575 -1.8934643 -15.30819 2.27159 -1.8949517 -15.330683 2.178874 -1.8960673 -15.346713 2.0851662 -1.8964391 -15.365123 1.9917263 -1.8971827 -15.380994 1.8978959 -1.8976785 -15.402205 1.8046381 -1.898918 -15.426796 1.7116289 -1.9006532 -15.445889 1.6178694 -1.9017688 -15.459476 1.5234537 -1.9022646 -15.478414 1.4294792 -1.9035041 -15.486894 1.3344786 -1.9035041 -15.510616 1.2406924 -1.9054873 -15.515958 1.1453518 -1.9052393 -15.526653 1.0503937 -1.9057351 -15.532806 0.95510411 -1.9057351 -15.553236 0.86059988 -1.9075943 -15.579037 0.76617283 -1.9101973 -15.599307 0.67124856 -1.9121804 -15.614039 0.57592189 -1.9135438 -15.633149 0.4805918 -1.915527 -15.645723 0.38490286 -1.9167665 -15.649775 0.28893176 -1.9170144 -15.683996 0.19330221 -1.9211047 -15.675957 0.097008787 -1.9199891 -15.67328 0.00082116749 -1.9196173 -15.658106 -0.095256627 -1.9177581 -15.633413 -0.1910384 -1.9147834 -15.64286 -0.28716078 -1.9161468 -15.647747 -0.38330877 -1.9170144 -15.653035 -0.47955802 -1.9180059 -15.655748 -0.57581347 -1.9187497 -15.65886 -0.67216289 -1.9196173 -15.663361 -0.76866961 -1.9207329 -15.667266 -0.86525685 -1.9218484 -15.666615 -0.96167743 -1.9224681 -15.664379 -1.0580556 -1.9229639 -15.675405 -1.1554649 -1.925195 -15.669009 -1.2517047 -1.925319 -15.668942 -1.3485056 -1.9263105 -15.678159 -1.4462651 -1.9285415 -15.686765 -1.5441883 -1.9307727 -15.742129 -1.6472318 -1.9389532 -15.728767 -1.7434646 -1.9385813 -15.627103 -1.8293209 -1.9271781 -15.574222 -1.9200701 -1.9219723 -15.344669 -1.9874116 -1.8945799 -14.7147 -1.997649 -1.8167406 -14.276777 -2.0274544 -1.7630712 -13.816483 -2.048614 -1.706551 -13.637926 -2.1077247 -1.6856037 -13.320055 -2.1423352 -1.647056 -13.243044 -2.213387 -1.6389993 -12.013962 -2.0837097 -1.4849322 -11.552683 -2.0767584 -1.4280401 -11.519238 -2.1437907 -1.4254372 -10.607481 -2.0414343 -1.3111572 -10.356317 -2.0590484 -1.2807901 -10.022724 -2.056695 -1.2398872 -9.5410337 -2.0188811 -1.1800205 -9.3161488 -2.0310698 -1.1528759 -8.7836018 -1.9714329 -1.0863159 -8.6234159 -1.9911156 -1.0673518 -8.4922886 -2.0157866 -1.0521063 -8.5038605 -2.0737369 -1.055205 -8.5102272 -2.1306992 -1.0576839 -8.4499016 -2.1707723 -1.0516105 -8.7309942 -2.300226 -1.0896624 -8.2770195 -2.2349639 -1.0327704 -8.3042727 -2.2970898 -1.0381001 -8.2604256 -2.3396139 -1.0342578 -7.9342775 -2.2998745 -0.99372679 -7.8734026 -2.3346856 -0.98765337 -7.8143001 -2.3694127 -0.9818278 -7.8403683 -2.4299529 -0.98715758 -7.8366623 -2.4816113 -0.98864496 -7.7882447 -2.5189569 -0.98430675 -7.7085724 -2.5455301 -0.9758783 -7.7191358 -2.6016586 -0.97934884 -7.7171021 -2.6538157 -0.98120809 -7.7062907 -2.7030885 -0.98195177 -7.6886258 -2.7499881 -0.9818278 -7.4991488 -2.7342057 -0.95889747 -7.6738324 -2.8513932 -0.98443073 -7.6422725 -2.8931534 -0.98257148 -7.582716 -2.9239197 -0.97699386 -7.1545625 -2.8093021 -0.92196101 -7.1427183 -2.8553596 -0.9227047 -7.1250634 -2.8991327 -0.9227047 -7.4793401 -3.0969763 -0.97302753 -7.3577838 -3.0996487 -0.95914537 -7.2957611 -3.1263611 -0.95331979 -7.2527914 -3.1607578 -0.95009714 -7.200603 -3.1907237 -0.94563502 -7.2143626 -3.2499304 -0.95022112 -7.149178 -3.2734737 -0.94402373 -7.1748371 -3.3386357 -0.95034504 -7.1981702 -3.4033864 -0.95641851 -7.1869903 -3.4522171 -0.95778191 -5.4089541 -2.6388013 -0.71360463 -5.3935499 -2.6723812 -0.71372861 -6.9219184 -3.483088 -0.92976969 -7.0780144 -3.6162651 -0.95468324 -7.0442419 -3.6536856 -0.95307189 -6.9883285 -3.6792684 -0.94836187 -6.9874988 -3.733773 -0.9514606 -6.9984741 -3.7950299 -0.95629454 -6.9715791 -3.8359864 -0.95579875 -6.904593 -3.8545003 -0.94960135 -6.8307371 -3.8684249 -0.94241238 -6.8163362 -3.9157031 -0.94377583 -6.8659096 -4.0004258 -0.95443535 -6.8762569 -4.0631809 -0.95951718 -6.8248119 -4.0894814 -0.95567483 -6.7648249 -4.1101503 -0.95059294 -6.7166691 -4.137526 -0.94724637 -6.6617002 -4.1602602 -0.94290817 -6.6653895 -4.2196383 -0.94724637 -6.7086821 -4.3049469 -0.95753402 -6.6605158 -4.3319602 -0.95431137 -6.5749927 -4.3339643 -0.9455111 -6.5837531 -4.3979321 -0.95084083 -6.5402112 -4.4271193 -0.94836187 -6.5865631 -4.5176907 -0.95951718 -6.6418247 -4.6157928 -0.97215986 -6.4908762 -4.5701799 -0.95344377 -6.4417105 -4.5949359 -0.95022112 -6.4109826 -4.6326313 -0.94984925 -6.3576179 -4.6537085 -0.94600689 -6.3201766 -4.6861281 -0.94464344 -6.3127246 -4.7409115 -0.94799006 -5.4898806 -4.175693 -0.82342243 -5.4594398 -4.2056656 -0.82267874 -10.176337 -7.9405737 -1.5741746 -10.130537 -8.0053263 -1.5746704 -10.085876 -8.0710554 -1.5754141 -10.044641 -8.1396618 -1.5767776 -9.9860716 -8.1942167 -1.5754141 -9.9188156 -8.2413836 -1.5726873 -9.8581896 -8.2937832 -1.5710759 -9.8010721 -8.3489676 -1.5700843 -9.733881 -8.3953381 -1.5674814 -9.6612587 -8.4366283 -1.5640109 -9.5877533 -8.4766874 -1.5604165 -9.5163393 -8.5181484 -1.5571938 -9.4477186 -8.5617189 -1.554467 -9.423521 -8.6456928 -1.5593009 -3.5252962 -3.2733884 -0.56276011 -3.5138187 -3.3031154 -0.56424749 -3.5157633 -3.345825 -0.56808984 -3.5015974 -3.3735321 -0.5692054 -3.4900644 -3.4039631 -0.5708167 -3.5100563 -3.46576 -0.57800567 -3.5483639 -3.546874 -0.58854127 -8.051445 -8.1495628 -1.392839 -8.0033674 -8.200943 -1.3932108 -3.2214954 -3.3408043 -0.541565 -3.1769888 -3.3353546 -0.53722686 -3.1897731 -3.3902056 -0.54330027 -7.7645783 -8.3570805 -1.3867655 -2.6575289 -2.8946235 -0.45269439 -7.6067977 -8.3914433 -1.3766017 -2.6085703 -2.912231 -0.45021543 -2.5913095 -2.9289255 -0.45033938 -2.5772054 -2.9492548 -0.45108306 -2.5707269 -2.9785376 -0.45331413 -2.551759 -2.9934998 -0.45319018 -7.3643284 -8.750782 -1.3904839 -7.2800555 -8.7591715 -1.3845344 -7.2507229 -8.8335915 -1.3893684 -7.2507396 -8.9449835 -1.4001518 -7.8647237 -9.8252392 -1.5338916 -7.8073654 -9.8772039 -1.5345113 -7.7521071 -9.9319639 -1.5356269 -7.6710329 -9.9534044 -1.5315366 -7.6098156 -10.000285 -1.5315366 -7.5423522 -10.038857 -1.530297 -7.4563785 -10.052268 -1.5252153 -7.3863516 -10.086621 -1.5234799 -7.3283911 -10.137383 -1.5243475 -7.2712383 -10.189428 -1.5254631 -7.2074375 -10.232229 -1.5252153 -7.1490488 -10.282779 -1.5262069 -7.0830135 -10.32236 -1.5255871 -7.0056357 -10.345084 -1.5224884 -6.9376173 -10.381275 -1.5214968 -6.8650494 -10.410393 -1.5195136 -6.7929263 -10.439843 -1.5176544 -6.7201653 -10.467966 -1.5156713 -6.6473145 -10.495589 -1.5136881 -6.5817385 -10.534496 -1.5134401 -6.5133324 -10.568769 -1.5125725 -6.4432077 -10.600056 -1.5113331 -6.375495 -10.635135 -1.5107133 -6.3065848 -10.668075 -1.5098457 -6.2290168 -10.685994 -1.506871 -6.1524553 -10.705086 -1.5041441 -6.0812745 -10.733137 -1.5027807 -6.0133677 -10.766784 -1.5022849 -5.9467125 -10.802609 -1.5021609 -5.8538232 -10.790049 -1.4952198 -5.7809582 -10.813512 -1.4934846 -5.6488433 -10.724106 -1.475884 -5.6459966 -10.880116 -1.4929888 -5.5384912 -10.835031 -1.4818335 -5.4241691 -10.773972 -1.4685711 -5.3434167 -10.777712 -1.4644808 -5.2719626 -10.799594 -1.4629934 -5.2030201 -10.826372 -1.4622498 -5.1390381 -10.863476 -1.4629934 -5.0722842 -10.894804 -1.4629934 -4.9983153 -10.910385 -1.4608862 -4.9263844 -10.929993 -1.4593989 -4.8423386 -10.921913 -1.4541931 -4.7764211 -10.954148 -1.4545649 -4.7016902 -10.965921 -1.4522099 -4.6246829 -10.971704 -1.4491112 -4.5458832 -10.972371 -1.4453928 -4.467998 -10.974323 -1.4419223 -4.4016824 -11.004295 -1.4422941 -4.3431478 -11.054187 -1.4453928 -4.2616687 -11.045447 -1.4406828 -4.1864352 -11.051901 -1.4380798 -4.1109376 -11.056917 -1.435353 -1.1622131 -3.1832147 -0.3851428 -3.9856396 -11.13643 -1.4393194 -3.9090192 -11.137267 -1.4362206 -1.1621698 -3.3748426 -0.40770131 -1.1430254 -3.3866115 -0.40832105 -3.6750333 -11.121592 -1.4249414 -3.6094725 -11.152429 -1.426057 -1.0343481 -3.261399 -0.38923308 -1.0090278 -3.2506242 -0.38700202 -0.97351003 -3.2054775 -0.38030884 -0.95495206 -3.2151959 -0.38080463 -0.935206 -3.2209947 -0.38080463 -0.91975272 -3.2419479 -0.38278779 -0.92604208 -3.3422089 -0.39505863 -0.89930695 -3.3248372 -0.39208388 -2.9279709 -11.105327 -1.3964334 -2.8600218 -11.124044 -1.3965573 -2.8006322 -11.176998 -1.4011434 -2.733645 -11.200721 -1.402011 -1.9378986 -8.1558647 -1.0089724 -0.73277074 -3.1671531 -0.36791405 -1.9889715 -8.8528872 -1.0952401 -2.4458897 -11.209172 -1.394946 -2.3692567 -11.187079 -1.390236 -1.7265141 -8.4049034 -1.033638 -1.6735551 -8.4085264 -1.0327704 -1.6211796 -8.4147396 -1.0322746 -1.5767814 -8.4635496 -1.0372325 -2.031127 -11.288673 -1.3945742 -1.9528328 -11.249106 -1.3880049 -1.3616612 -8.137826 -0.99248731 -1.817479 -11.289858 -1.390236 -1.7495358 -11.309624 -1.3913516 -1.2816626 -8.6336374 -1.0521063 -1.6021049 -11.270313 -1.3837907 -1.5317198 -11.271082 -1.3826752 -1.4596007 -11.257635 -1.3798244 -1.388676 -11.251606 -1.3779652 -1.3128027 -11.201768 -1.3706522 -1.2451388 -11.219475 -1.3718917 -1.1801991 -11.264405 -1.3766017 -1.1143661 -11.30501 -1.380816 -1.0470759 -11.334361 -1.3836668 -0.97606295 -11.323766 -1.3815596 -0.90395468 -11.2969 -1.3774694 -0.83484012 -11.305202 -1.3778412 -0.76706266 -11.333873 -1.380816 -0.69531512 -11.302711 -1.3763539 -0.62824935 -11.348377 -1.3815596 -0.5551011 -11.28066 -1.3726354 -0.48681068 -11.305664 -1.3753623 -0.41571569 -11.261832 -1.3695368 -0.34605908 -11.246318 -1.3673056 -0.27728975 -11.258149 -1.3685452 -0.20873487 -11.28841 -1.3721396 -0.14064562 -11.385724 -1.3841625 -0.070623748 -11.360573 -1.38094 -0.00091572758 -11.338963 -1.378213 --0.068664968 -11.339746 -1.378337 --0.13847482 -11.357965 -1.380692 --0.20794393 -11.344995 -1.3792046 --0.27747849 -11.340529 -1.3788328 --0.34681377 -11.330679 -1.3778412 --0.41859677 -11.389818 -1.3855259 --0.48796394 -11.375138 -1.3840386 --0.55336732 -11.282732 -1.3728833 --0.6214906 -11.259309 -1.3704044 --0.69360822 -11.304805 -1.3766017 --0.76577187 -11.341917 -1.3818076 --0.83702958 -11.359765 -1.3846583 --0.91035414 -11.399916 -1.39036 --0.99024898 -11.509785 -1.4048618 --1.0557446 -11.448159 -1.3979207 --1.1257747 -11.43949 -1.3976729 --1.1961516 -11.434341 -1.3979207 --1.2633353 -11.400159 -1.3945742 --1.3348777 -11.40599 -1.3963095 --1.399493 -11.354252 -1.3908558 --1.4700277 -11.35234 -1.3917234 --1.549674 -11.41685 -1.4010195 --1.6318421 -11.492598 -1.4118029 --1.7116483 -11.545187 -1.4197356 --1.7860954 -11.558002 -1.4227103 --1.8561921 -11.541927 -1.4220906 --1.9340146 -11.572405 -1.4274204 --2.0109234 -11.594539 -1.4317585 --2.0872982 -11.61128 -1.435477 --2.1574144 -11.592402 -1.4347333 --2.2328191 -11.601357 -1.437584 --2.312093 -11.628313 -1.4427899 --2.3881893 -11.637236 -1.4457647 --2.4659207 -11.652456 -1.449607 --2.5411792 -11.654557 -1.4518381 --2.6115551 -11.633904 -1.4512184 --2.6846774 -11.625396 -1.4522099 --2.7559588 -11.608705 -1.4522099 --2.8311353 -11.607964 -1.4543171 --2.9112289 -11.625988 -1.4589031 --2.9869564 -11.625205 -1.4611342 --3.0589898 -11.609537 -1.461506 --3.1265438 -11.577138 -1.4597708 --3.1946094 -11.547215 -1.4584073 --3.2737882 -11.556993 -1.4622498 --3.3427043 -11.530016 -1.461382 --3.4212909 -11.535925 -1.4648526 --3.4971948 -11.531807 -1.4670837 --3.5440819 -11.433362 -1.4570439 --3.6090741 -11.39532 -1.4549367 --3.6746495 -11.359743 -1.4532015 --3.7480178 -11.348289 -1.4546889 --3.8156767 -11.319436 -1.4539452 --3.8724697 -11.259216 -1.4491112 --3.9470677 -11.251161 -1.4512184 --4.0143576 -11.222058 -1.4505986 --4.0882397 -11.211199 -1.4524578 --4.1562619 -11.184043 -1.4522099 --4.2304311 -11.173177 -1.4541931 --4.2978373 -11.144232 -1.4538213 --4.3621449 -11.107491 -1.4524578 --4.4261642 -11.070382 -1.4510944 --4.4928851 -11.040258 -1.4507226 --4.5650992 -11.023483 -1.4522099 --1.5188596 -3.6069164 -0.45071122 --1.5448724 -3.6066492 -0.4519507 --4.8045092 -11.02309 -1.463861 --4.913877 -11.087747 -1.4767516 --4.9777408 -11.04834 -1.4755121 --5.027256 -10.977895 -1.4700584 --4.0836201 -8.775218 -1.1708483 --5.1883225 -10.971888 -1.4778671 --1.5642214 -3.2579396 -0.41327897 --1.5907111 -3.2616563 -0.41513819 --1.61422 -3.2589469 -0.41612977 --1.6373093 -3.2551851 -0.4169974 --1.7186687 -3.3652434 -0.43385431 --1.7424841 -3.3608 -0.43472195 --1.766772 -3.3570688 -0.43571353 --5.8537555 -10.953499 -1.5131923 --5.9137578 -10.904291 -1.5113331 --5.9882097 -10.881709 -1.5133163 --6.0500274 -10.836098 -1.5120767 --6.1134682 -10.793591 -1.5113331 --6.1780982 -10.753295 -1.5109612 --6.2804389 -10.777767 -1.5200094 --1.9157344 -3.2432697 -0.43236694 --1.9381495 -3.2357094 -0.43298668 --6.4772429 -10.659492 -1.5198854 --6.5185804 -10.580688 -1.5141839 --6.5807509 -10.536283 -1.5135641 --6.6394367 -10.486485 -1.5122007 --6.7052636 -10.448053 -1.5125725 --6.7762804 -10.417526 -1.5141839 --6.8455358 -10.384036 -1.5154233 --6.9113274 -10.345138 -1.5159191 --6.9724483 -10.299249 -1.5154233 --7.0377579 -10.259546 -1.5159191 --7.1028423 -10.219429 -1.5164149 --7.1642709 -10.174031 -1.516167 --7.2346315 -10.14119 -1.5179023 --7.3176475 -10.125559 -1.5223644 --7.3849149 -10.087673 -1.5234799 --7.4561305 -10.054922 -1.5254631 --7.5266261 -10.020884 -1.5273223 --7.6041946 -9.9958344 -1.530669 --7.6726532 -9.9584188 -1.5321563 --7.7299495 -9.9064598 -1.5314126 --7.7948956 -9.8642931 -1.5322802 --7.8633361 -9.8263493 -1.5338916 --7.9372268 -9.7948751 -1.5366185 --8.0072498 -9.7582617 -1.5386016 --8.0783911 -9.722683 -1.5408326 --8.1468401 -9.6835613 -1.542568 --8.2041731 -9.6311255 -1.542196 --8.2553368 -9.5715885 -1.5407087 --8.315217 -9.5222492 -1.5409566 --8.378089 -9.4762516 -1.5418242 --8.4360771 -9.4246664 -1.5418242 --8.5037422 -9.3837547 -1.5436834 --8.5772619 -9.3489466 -1.5466582 --8.6499977 -9.3128624 -1.549509 --8.7076569 -9.260335 -1.5496329 --8.777998 -9.2211037 -1.5521119 --8.8481855 -9.1813583 -1.5545908 --8.9161358 -9.1389675 -1.556698 --8.9894772 -9.1017351 -1.5597967 --9.0697136 -9.0709629 -1.5641348 --9.1393204 -9.029088 -1.5666138 --9.19526 -8.9735327 -1.5667378 --9.2544346 -8.9210749 -1.5674814 --9.2989378 -8.8545437 -1.5657462 --9.3588762 -8.8027582 -1.5667378 --9.4178019 -8.7498951 -1.5676054 --9.4800863 -8.6999941 -1.5690928 --9.5538769 -8.6603193 -1.5725633 --9.6282768 -8.6207285 -1.5761578 --9.7018051 -8.5798922 -1.5796283 --9.7348356 -8.503231 -1.5764056 --9.7778111 -8.4355612 -1.5749183 --9.7931299 -8.3445196 -1.5689688 --9.7963114 -8.2440252 -1.5611601 --9.7963409 -8.1419048 -1.5529796 --9.7486973 -8.0016985 -1.5372381 --9.8022375 -7.9454794 -1.5379819 --9.8771458 -7.9062653 -1.542196 --10.00566 -7.9088831 -1.5549628 --10.134574 -7.9102187 -1.5677294 --10.254447 -7.9030004 -1.5790086 --10.397511 -7.9120302 -1.5938823 --10.510127 -7.8963571 -1.6039221 --10.620548 -7.8778243 -1.61359 --10.67349 -7.8160267 -1.6143337 --10.738939 -7.763176 -1.6170605 --10.793641 -7.7023239 -1.6181761 --10.83502 -7.6319509 -1.6173085 --10.893867 -7.5738201 -1.6191677 --10.943406 -7.5090795 -1.6196635 --10.997492 -7.4473538 -1.620903 --11.080109 -7.4045415 -1.6264806 --11.13776 -7.3446088 -1.6283399 --11.205906 -7.2912812 -1.6318104 --11.247929 -7.220778 -1.6314385 --11.289508 -7.1500335 -1.6310667 --11.347474 -7.0895643 -1.6331738 --11.400054 -7.0255299 -1.6345372 --11.459907 -6.965755 -1.6370162 --11.508389 -6.8988781 -1.6378838 --11.557338 -6.8321733 -1.6388754 --6.6557264 -3.8802245 -0.92419207 --6.7000585 -3.8511775 -0.92716682 --11.746756 -6.6554527 -1.6482954 --11.794302 -6.587121 -1.649287 --11.846668 -6.5213265 -1.6510223 --11.897799 -6.4546647 -1.6526337 --11.951182 -6.3890233 -1.6546168 --12.005085 -6.3234324 -1.6567239 --7.4106259 -3.845999 -1.0047581 --7.4323177 -3.7995527 -1.0045103 --6.9369788 -3.4928942 -0.93200076 --6.9360538 -3.4392469 -0.92890209 --6.9472165 -3.3918362 -0.92753863 --6.9678979 -3.3491449 -0.92753863 --7.0224037 -3.3224487 -0.93224865 --12.373769 -5.7606707 -1.6667637 --6.6900516 -3.0653718 -0.88105822 --12.479717 -5.6246977 -1.6717216 --12.536674 -5.5580702 -1.6748203 --12.57418 -5.4826283 -1.6753161 --12.579311 -5.3932524 -1.6714737 --12.621311 -5.319819 -1.6727132 --12.744474 -5.2798672 -1.684984 --7.4441514 -3.0311563 -0.96583855 --12.827656 -5.1308126 -1.6875869 --12.846889 -5.0472908 -1.6859756 --12.870211 -4.9655123 -1.684984 --12.878164 -4.8780146 -1.6820092 --12.892041 -4.7930269 -1.6799022 --12.932395 -4.7179127 -1.6813896 --13.117126 -4.6942954 -1.7020888 --13.234633 -4.6449323 -1.7138638 --13.263824 -4.5639615 -1.7139878 --13.283115 -4.4796371 -1.7128723 --13.299988 -4.3946257 -1.7115089 --13.254951 -4.289721 -1.7020888 --13.27913 -4.2077103 -1.7018409 --13.224136 -4.1011748 -1.6913054 --13.192078 -4.0026741 -1.6838685 --13.053715 -3.8733988 -1.6626734 --12.698882 -3.6835182 -1.6134661 --12.731747 -3.6085055 -1.6148295 --13.010906 -3.6015038 -1.6481715 --12.90631 -3.4874461 -1.6318104 --12.759548 -3.363935 -1.6101195 --12.766494 -3.2821226 -1.6083843 --12.94714 -3.2439885 -1.6290835 --13.109475 -3.199291 -1.6474278 --13.136582 -3.1206267 -1.6484194 --13.270535 -3.0665393 -1.6631691 --13.340416 -2.9965768 -1.6697384 --13.393453 -2.9222772 -1.6742005 --13.438313 -2.8457954 -1.6776711 --13.503151 -2.7730629 -1.6837445 --13.514072 -2.6889956 -1.6830008 --13.628732 -2.6249707 -1.6955196 --13.756767 -2.5621817 -1.7097735 --13.839617 -2.4898412 -1.718326 --13.910361 -2.4145446 -1.725391 --14.028658 -2.3464904 -1.7385294 --14.11039 -2.2712433 -1.7470819 --14.156422 -2.1896236 -1.7511722 --14.134254 -2.0974793 -1.7467101 --14.144894 -2.0104346 -1.7464621 --14.489306 -1.9687356 -1.7883565 --14.891788 -1.9304056 -1.8375639 --15.587808 -1.9233994 -1.9237076 --15.728424 -1.8428357 -1.9399447 --15.786776 -1.751542 -1.9458942 --15.84361 -1.6594982 -1.9517198 --15.838681 -1.5607938 -1.9498606 --15.813376 -1.4603888 -1.9455224 --15.85071 -1.3658006 -1.9491169 --15.857803 -1.2684376 -1.948993 --15.853412 -1.1702365 -1.9475056 --15.791982 -1.0683235 -1.9389532 --15.748718 -0.96836424 -1.9327558 --15.869294 -0.87806445 -1.9471338 --15.859517 -0.77994579 -1.9452745 --15.866978 -0.68274665 -1.9456464 --15.796497 -0.58263826 -1.9363502 --15.874162 -0.48798305 -1.9456464 --15.891737 -0.39093679 -1.9475056 --15.882923 -0.29321888 -1.9461422 --15.927089 -0.19628026 -1.9514719 --15.876395 -0.098234303 -1.9450266 --15.869753 -0.00081688107 -1.944159 --15.8129 0.096209824 -1.937094 --15.746526 0.19242904 -1.9289134 --15.781756 0.28972086 -1.9334995 --15.772738 0.38637984 -1.9326319 --15.799825 0.48406607 -1.9363502 --15.790607 0.58078361 -1.9356066 --15.799635 0.67821616 -1.937218 --15.802114 0.77548915 -1.9380856 --15.803002 0.87276322 -1.9388292 --15.782494 0.96879917 -1.93697 --15.762391 1.0646832 -1.9352348 --14.390461 -0.36386102 -1.9309767 --14.444923 -0.2765626 -1.9381605 --14.450312 -0.18797666 -1.9387027 --14.53937 -0.099916063 -1.9507661 --14.276164 -0.010501053 -1.9147117 --14.409712 0.077814609 -1.93301 --14.357446 0.16563658 -1.9259617 --14.425503 0.25495273 -1.9354497 --14.284008 0.34013942 -1.9163382 --14.264816 0.42727423 -1.914034 --14.379751 0.51904309 -1.9301635 --14.400053 0.60826868 -1.9334166 --14.223857 0.68828684 -1.9098321 --14.364793 0.7834776 -1.9297569 --14.319168 0.86914355 -1.9241997 --14.308623 0.95665765 -1.923522 --14.347939 1.0477537 -1.9297569 --14.326424 1.1345984 -1.9277238 --14.333013 1.2236618 -1.9296213 --14.323261 1.3114039 -1.9293503 --14.311987 1.398976 -1.9289436 --14.279483 1.4843086 -1.9256907 --14.264197 1.5712472 -1.9248774 --14.248383 1.6580541 -1.9240642 --14.238925 1.7455698 -1.9241997 --14.212223 1.8308804 -1.922031 --14.203668 1.9184483 -1.9224377 --14.176913 2.003485 -1.9204044 --14.163373 2.0902905 -1.9202689 --14.158114 2.1783612 -1.9213532 --14.140569 2.2645662 -1.9208111 --14.120543 2.3503125 -1.9199978 --14.107809 2.4372478 -1.9202689 --14.089663 2.5232418 -1.9198623 --14.058329 2.6067572 -1.9176936 --14.021635 2.6890502 -1.9148473 --14.012647 2.7765751 -1.9159316 --13.98661 2.8607161 -1.9147117 --14.003694 2.9538431 -1.9195912 --13.971751 3.0367668 -1.9176936 --13.966392 3.1254675 -1.9195912 --13.941157 3.2097712 -1.9187779 --13.892277 3.2884064 -1.9147117 --13.853546 3.369138 -1.9121364 --13.810503 3.4485583 -1.9090189 --13.773727 3.5292988 -1.9068502 --13.747022 3.6124873 -1.9061725 --13.75234 3.7042415 -1.9101032 --13.824862 3.8149068 -1.9236575 --13.766869 3.8899651 -1.9187779 --13.711332 3.9652815 -1.9143051 --13.732347 4.0628285 -1.9208111 --13.67302 4.1366844 -1.9159316 --13.519596 4.1809888 -1.8976333 --13.422832 4.2414775 -1.8874676 --13.493671 4.3551006 -1.9014285 --13.424351 4.423861 -1.8953291 --13.418552 4.5134125 -1.8984466 --13.435588 4.6110983 -1.9049526 --13.398625 4.690505 -1.9037328 --13.363995 4.7706304 -1.9029195 --13.348436 4.8576226 -1.9049526 --13.323024 4.9411578 -1.9056304 --13.297089 5.0245643 -1.9063081 --13.267858 5.106771 -1.9065791 --13.227971 5.1848311 -1.9053593 --13.191308 5.2640629 -1.9046816 --13.157842 5.3445311 -1.904546 --13.107404 5.4179749 -1.9019706 --13.052907 5.4894652 -1.8988532 --13.032642 5.5752978 -1.9008863 --13.008182 5.6595073 -1.9023774 --12.969586 5.7376142 -1.9018351 --12.971185 5.8337469 -1.9073924 --12.969386 5.9288788 -1.9125431 --12.941749 6.0125203 -1.9138985 --12.926116 6.1019664 -1.9171515 --12.911659 6.1923032 -1.9206755 --12.882328 6.2757502 -1.922031 --12.859563 6.3625846 -1.9244708 --12.845955 6.4542685 -1.9284015 --12.74433 6.5014534 -1.9189135 --12.769303 6.6132445 -1.9289436 --12.77058 6.7135997 -1.9354497 --12.727397 6.7908993 -1.9351786 --12.709885 6.8820739 -1.9389738 --12.669155 6.9608846 -1.9392449 --12.638321 7.0452437 -1.9411426 --12.606928 7.1294861 -1.9430401 --12.578415 7.21558 -1.9454799 --12.543324 7.2981043 -1.9469708 --12.502574 7.3774486 -1.9476485 --12.454521 7.452498 -1.9472419 --12.416183 7.5334024 -1.9484618 --12.395041 7.6250181 -1.9525281 --12.358951 7.7077446 -1.9542902 --12.317286 7.7871385 -1.9552389 --12.311818 7.8898315 -1.9621516 --12.273977 7.9722424 -1.9639137 --12.255449 8.0675592 -1.9689287 --12.196651 8.1365576 -1.9674377 --12.173583 8.2295523 -1.9719107 --12.185799 8.3472042 -1.9823475 --12.164469 8.4427195 -1.9873625 --12.138371 8.5354357 -1.9916999 --12.065596 8.5953836 -1.9883113 --12.016645 8.6721544 -1.9889891 --11.972007 8.7521553 -1.9904801 --11.945948 8.8460855 -1.995224 --11.91443 8.9364567 -1.9991548 --11.89172 9.033967 -2.0047121 --11.833709 9.10495 -2.0043054 --11.783871 9.1822605 -2.0053897 --11.757642 9.2783279 -2.0106759 --11.686558 9.3391638 -2.0082362 --11.633655 9.4144354 -2.0090494 --11.594062 9.5007114 -2.0123024 --11.541649 9.5767336 -2.0133867 --11.497083 9.659481 -2.0159621 --11.429296 9.7227821 -2.0144711 --11.400952 9.8198843 -2.0201638 --11.340485 9.8896542 -2.0201638 --11.253593 9.936101 -2.01542 --11.225656 10.034678 -2.0215192 --11.202073 10.137938 -2.0285676 --11.15719 10.222545 -2.0318205 --11.11169 10.306981 -2.0350735 --11.06196 10.387854 -2.0376489 --11.00304 10.460311 -2.0385976 --10.958638 10.546865 -2.042393 --10.908621 10.628426 -2.0452392 --10.835442 10.687507 -2.0437484 --10.785786 10.769892 -2.0468657 --10.709047 10.825304 -2.0448327 --10.661813 10.91065 -2.0486279 --10.615996 10.997963 -2.0528297 --10.550365 11.065045 -2.0532362 --10.493822 11.141833 -2.0555406 --10.427283 11.208189 -2.0559471 --10.38178 11.297491 -2.0606911 --10.324251 11.374185 -2.0631309 --10.267494 11.452073 -2.0658417 --10.204914 11.523758 -2.0674682 --10.145103 11.598835 -2.0697725 --10.085402 11.67436 -2.0722122 --10.024512 11.748837 -2.0745165 --9.964365 11.824519 -2.0770917 --9.9011307 11.89686 -2.0791249 --9.8317213 11.961981 -2.0799382 --9.759388 12.02362 -2.0802093 --9.6872873 12.085595 -2.080616 --9.6154089 12.147915 -2.0811582 --9.544961 12.21215 -2.0821068 --9.4807453 12.284605 -2.0845466 --9.4147978 12.355155 -2.0867152 --9.3513203 12.429317 -2.0895617 --9.3044195 12.526228 -2.0963387 --9.2367601 12.595866 -2.0985076 --9.1598806 12.653108 -2.0986431 --9.0884066 12.71794 -2.1001341 --9.0141973 12.779134 -2.1010828 --8.9254265 12.819567 -2.0986431 --8.876339 12.917369 -2.1058269 --8.8002491 12.976509 -2.1066401 --8.7072353 13.010502 -2.1033871 --8.6048536 13.029787 -2.0978298 --8.4928284 13.033365 -2.0898328 --8.3832264 13.039395 -2.0823779 --8.2531748 13.011943 -2.0696368 --8.1542597 13.032103 -2.0647573 --8.0429192 13.031304 -2.0566249 --7.9205618 13.011015 -2.0455103 --7.8135486 13.01435 -2.0383265 --7.7037644 13.011748 -2.0303295 --7.6008019 13.019414 -2.0240946 --7.5010018 13.03146 -2.0186729 --7.4003625 13.041049 -2.0129802 --7.2950521 13.041249 -2.0059319 --7.1842775 13.030237 -1.9972571 --7.0800643 13.029676 -1.9903445 --6.9831448 13.04143 -1.9854649 --6.8849607 13.049858 -1.9801788 --6.7855663 13.054935 -1.974486 --6.6782417 13.043411 -1.9663534 --6.5735455 13.035488 -1.9588985 --6.4806571 13.049844 -1.9549679 --6.382618 13.052871 -1.9494106 --6.2860751 13.057865 -1.94426 --6.1969252 13.077388 -1.9414136 --6.1031656 13.086432 -1.9370762 --6.0008507 13.07591 -1.9298924 --5.907865 13.084492 -1.9256907 --5.8093705 13.079749 -1.9195912 --5.7056041 13.061582 -1.9115942 --5.6097102 13.059932 -1.9061725 --5.5171356 13.064899 -1.9018351 --5.4224329 13.063733 -1.8966845 --5.3290753 13.064651 -1.8919405 --5.2373853 13.068594 -1.8877387 --5.1429448 13.064529 -1.8824525 --5.0494661 13.061648 -1.8774375 --4.9604363 13.069228 -1.8740489 --4.8704658 13.073423 -1.8702537 --4.7853942 13.090034 -1.8683561 --4.6999679 13.105162 -1.866323 --4.617166 13.127211 -1.8653742 --4.5407314 13.16747 -1.8671362 --4.4785709 13.250461 -1.8751333 --4.4059057 13.304027 -1.8789284 --4.3257194 13.335522 -1.8796061 --4.2486115 13.376922 -1.8817748 --4.1682172 13.408416 -1.882588 --4.0806766 13.416677 -1.8801483 --3.9898012 13.412973 -1.8760821 --3.9043822 13.426737 -1.8745911 --3.8094654 13.406602 -1.8683561 --3.7205079 13.405856 -1.8649676 --3.6412904 13.439908 -1.8665941 --3.5529315 13.439967 -1.8634765 --3.4607513 13.424098 -1.8581904 --3.3746955 13.430667 -1.8561573 --3.2886894 13.436686 -1.8541241 --3.2027366 13.442155 -1.852091 --3.1197493 13.459622 -1.8518199 --3.0351434 13.469813 -1.8506 --2.9484112 13.469793 -1.8480247 --2.8659127 13.4886 -1.8481603 --2.7840941 13.510783 -1.848838 --2.699589 13.519839 -1.8477536 --2.6130087 13.517667 -1.8451784 --2.5283778 13.52468 -1.8439584 --2.4437592 13.531164 -1.8427385 --2.3632395 13.560545 -1.8447716 --2.2809739 13.580653 -1.845585 --2.1958621 13.583634 -1.8440939 --2.112169 13.594894 -1.8438228 --2.0287125 13.607598 -1.8438228 --1.9436384 13.609001 -1.8423319 --1.8563441 13.593184 -1.8385367 --1.7705978 13.586635 -1.836097 --1.685734 13.585444 -1.8344704 --1.6017636 13.590612 -1.8337927 --1.5182331 13.5992 -1.8336571 --1.4336183 13.597421 -1.8321662 --1.3501592 13.605962 -1.8321662 --1.2685772 13.634706 -1.8350126 --1.1848924 13.642234 -1.8350126 --1.1005253 13.641347 -1.8339282 --1.0160664 13.637962 -1.8325728 --0.93250149 13.645917 -1.8328439 --0.84826207 13.643471 -1.8317596 --0.76286811 13.618743 -1.8276933 --0.67914259 13.620198 -1.8272867 --0.59594756 13.633018 -1.8285066 --0.51280683 13.650279 -1.8304042 --0.42925867 13.6601 -1.8313529 --0.34520814 13.653563 -1.8301331 --0.26117805 13.642547 -1.828371 --0.17732199 13.632995 -1.8268801 --0.093777537 13.649678 -1.8290488 --0.010012331 13.636126 -1.8271512 -0.07369481 13.642865 -1.8281 -0.15745008 13.646119 -1.8286421 -0.24110821 13.640934 -1.8281 -0.32489711 13.64316 -1.8286421 -0.4089002 13.650812 -1.8299975 -0.49243805 13.642106 -1.8291843 -0.57626051 13.641797 -1.8295909 -0.65990633 13.637015 -1.8294554 -0.74286795 13.619848 -1.8276933 -0.82792377 13.639757 -1.8310819 -0.91430891 13.674952 -1.8366392 -0.99935371 13.684895 -1.8388078 -1.0821309 13.66369 -1.8367747 -1.1642643 13.637049 -1.8340638 -1.2480081 13.630635 -1.8341993 -1.3332587 13.639484 -1.8365036 -1.4191769 13.652727 -1.8394855 -1.5032471 13.646716 -1.8398921 -1.587068 13.63822 -1.8400277 -1.6713233 13.633142 -1.8407054 -1.7549433 13.622631 -1.8407054 -1.838497 13.611606 -1.8407054 -1.9219817 13.600069 -1.8407054 -2.0066957 13.596842 -1.8419253 -2.0887308 13.575459 -1.8407054 -2.1721456 13.563366 -1.8408409 -2.2527256 13.534145 -1.8386723 -2.3355584 13.519092 -1.8385367 -2.4200377 13.513284 -1.8397566 -2.5052559 13.510844 -1.8415186 -2.5961328 13.537059 -1.847347 -2.6847296 13.549059 -1.8512777 -2.7666235 13.526507 -1.8504645 -2.8538623 13.529635 -1.8533108 -2.9378767 13.51671 -1.8539885 -3.0183787 13.487794 -1.8524976 -3.095747 13.445848 -1.8492446 -3.1672378 13.380321 -1.8427385 -3.2570035 13.392405 -1.8472115 -3.3271163 13.324104 -1.8404343 -3.4033992 13.282324 -1.8374524 -3.4833231 13.255442 -1.8366392 -3.5661373 13.239559 -1.8374524 -3.657584 13.254677 -1.8427385 -3.7493501 13.269169 -1.8480247 -3.8240921 13.223071 -1.8447716 -3.9096525 13.214559 -1.8469404 -4.0058665 13.240582 -1.8541241 -4.0905461 13.227112 -1.8557507 -4.17342 13.207433 -1.8565639 -4.2485995 13.163661 -1.8539885 -4.3258796 13.126993 -1.8524976 -4.4038172 13.09269 -1.8514132 -4.4895363 13.081354 -1.8537174 -4.5772462 13.075068 -1.856835 -4.6613841 13.057935 -1.8584615 -4.7498879 13.052363 -1.86185 -4.8433218 13.059202 -1.8671362 -4.9349165 13.059823 -1.8716091 -5.0252771 13.056112 -1.8755399 -5.1143317 13.048093 -1.8789284 -5.2038441 13.040392 -1.8824525 -5.2964363 13.039427 -1.887061 -5.3831573 13.023165 -1.8895007 -5.4744868 13.017288 -1.8935671 -5.58426 13.053594 -1.9040039 -5.6840124 13.064509 -1.9107809 -5.7744889 13.052945 -1.9143051 -5.8581285 13.0254 -1.915525 -5.9544168 13.025254 -1.9209466 -6.0475836 13.017227 -1.925284 -6.1501799 13.028257 -1.9326034 -6.2467122 13.025116 -1.9378895 -6.3412671 13.016826 -1.942498 -6.4311228 12.998096 -1.9456154 -6.5298824 12.99646 -1.9514438 -6.6284127 12.993217 -1.9571365 -6.7298827 12.994531 -1.9636426 -6.832078 12.995965 -1.9702842 -6.9284811 12.985269 -1.9751637 -7.0297265 12.98259 -1.9813987 -7.1283364 12.973946 -1.9868203 -7.2381997 12.984484 -1.9953595 -7.3513851 12.999333 -2.0047121 -7.455658 12.996953 -2.0114892 -7.557188 12.988642 -2.017453 -7.6508398 12.96592 -2.0212481 -7.7526364 12.956141 -2.0272121 -7.856142 12.948139 -2.0335827 -7.978528 12.969734 -2.0448327 -8.088891 12.970136 -2.0528297 -8.1942635 12.961294 -2.0594711 -8.3062458 12.961658 -2.0677392 -8.4298725 12.978581 -2.0788538 -8.5828896 13.038335 -2.097152 -8.6929693 13.030758 -2.1046069 -8.7833033 12.992769 -2.1071823 -8.8623009 12.937814 -2.1070466 -8.9031057 12.827843 -2.0978298 -8.9457464 12.721913 -2.0892906 -8.9673042 12.587701 -2.0760074 -9.0501699 12.540476 -2.0773628 -9.1351318 12.495907 -2.0792606 -9.2110443 12.438824 -2.0791249 -9.2794657 12.371767 -2.0773628 -9.3342266 12.286983 -2.072619 -9.3852758 12.198069 -2.0671971 -9.4447212 12.120713 -2.0638087 -9.5023441 12.041533 -2.060149 -9.5636806 11.967521 -2.0574381 -9.6363087 11.907844 -2.0573025 -9.6909819 11.826268 -2.0533719 -9.7500782 11.75057 -2.0505254 -9.8086119 11.674594 -2.0476789 -9.8704309 11.602869 -2.045646 -9.9349737 11.53458 -2.0442905 -9.9983988 11.465189 -2.0427995 -10.062658 11.396939 -2.0415797 -10.125135 11.326856 -2.0400887 -10.187133 11.256435 -2.0385976 -10.246639 11.183489 -2.0367 -10.294853 11.098614 -2.0326338 -10.340379 11.011402 -2.0281608 -10.394096 10.933386 -2.02545 -10.446559 10.854412 -2.0226038 -10.501902 10.778754 -2.0204349 -10.555318 10.701416 -2.0179951 -10.612381 10.628035 -2.0163686 -10.668941 10.554357 -2.0147421 -10.727124 10.482462 -2.0135224 -10.780549 10.406122 -2.0114892 -10.833441 10.329523 -2.0094559 -10.88652 10.253345 -2.0075583 -10.944152 10.181629 -2.0066097 -10.999124 10.107582 -2.0052543 -11.052133 10.031911 -2.0036278 -11.095775 9.9480333 -2.0003746 -11.130646 9.8567734 -1.9956306 -11.171527 9.7713318 -1.9921066 -11.214778 9.6883507 -1.9891247 -11.261201 9.6084232 -1.9868203 -11.307066 9.5282907 -1.9845161 -11.350087 9.4460564 -1.9818053 -11.385636 9.3579912 -1.9778745 -11.422072 9.2710953 -1.9742149 -11.458644 9.1847239 -1.9706908 -11.498471 9.1013288 -1.9678444 -11.546293 9.0245028 -1.966489 -11.575566 8.9335098 -1.9620161 -11.646712 8.8749266 -1.9648625 -11.694614 8.7985306 -1.9637781 -11.728498 8.7118378 -1.9603896 -11.776938 8.6361942 -1.9595762 -11.819274 8.5562162 -1.9578142 -11.848981 8.4674034 -1.9540191 -11.869139 8.3722668 -1.9487329 -11.894267 8.2811651 -1.9443955 -11.932608 8.1996107 -1.9423624 -11.977775 8.1229019 -1.9415492 -12.019156 8.0437441 -1.9401937 -12.047618 7.9561944 -1.9368051 -12.079608 7.8713036 -1.9340943 -12.122677 7.7938213 -1.9332811 -12.146845 7.7044315 -1.9294858 -12.193049 7.6292295 -1.9293503 -12.210967 7.5365772 -1.9247419 -12.234978 7.4481149 -1.9212177 -12.253266 7.3565822 -1.9168804 -12.284534 7.2731824 -1.9147117 -12.311818 7.1876783 -1.9120009 -12.349678 7.1085391 -1.911052 -12.392201 7.0321398 -1.9109164 -12.418688 6.9467797 -1.9083412 -12.443726 6.8608813 -1.9056304 -12.456861 6.7687879 -1.9011574 -12.519122 6.7034516 -1.9044105 -12.549502 6.6209617 -1.902784 -12.602199 6.5502319 -1.9046816 -12.601586 6.4520116 -1.8984466 -12.580783 6.3442307 -1.8892297 -12.615924 6.2651544 -1.8886875 -12.628317 6.1750045 -1.8847568 -12.674003 6.1012702 -1.8859767 -12.698667 6.0174489 -1.8840791 -12.721881 5.9331365 -1.8820459 -12.740037 5.8466992 -1.879335 -12.759418 5.7610784 -1.8768953 -12.789095 5.6802664 -1.8760821 -12.810997 5.5961342 -1.8741845 -12.828707 5.5103831 -1.8717446 -12.855887 5.4288659 -1.8707958 -12.883466 5.3476024 -1.8699826 -12.901358 5.2624626 -1.8678139 -12.874546 5.1596122 -1.8591392 -12.945604 5.0961251 -1.8649676 -12.980327 5.0180254 -1.8655097 -13.011799 4.9386368 -1.8656453 -13.01029 4.8469439 -1.8610368 -13.077006 4.7806315 -1.8664585 -13.116352 4.7039819 -1.8679495 -13.192636 4.6401796 -1.8748622 -13.189013 4.548161 -1.8702537 -13.220426 4.4684181 -1.8707958 -13.243833 4.3859692 -1.8702537 -13.26861 4.3040128 -1.8699826 -13.308933 4.227016 -1.8720157 -13.357326 4.1523337 -1.8752688 -13.342741 4.0581865 -1.869576 -13.461405 4.004209 -1.8829947 -13.531386 3.9348166 -1.8895007 -13.535261 3.8460279 -1.8866544 -13.466956 3.7374666 -1.8736422 -13.489635 3.6547644 -1.8736422 -13.51468 3.5726845 -1.8740489 -13.561292 3.4961243 -1.877573 -13.602667 3.4179189 -1.8804194 -13.603173 3.3294432 -1.877573 -13.638767 3.2495875 -1.8797417 -13.669066 3.1683016 -1.8812326 -13.686316 3.0839345 -1.8809615 -13.705949 3.0001106 -1.8810971 -13.740575 2.9194572 -1.8834014 -13.757259 2.8348916 -1.8832659 -13.798684 2.755276 -1.8866544 -13.824085 2.6722496 -1.8878742 -13.851909 2.5895615 -1.8895007 -13.871437 2.5052235 -1.8900429 -13.881667 2.4192121 -1.8893652 -13.887456 2.3325131 -1.8881453 -13.900529 2.2470992 -1.8880098 -13.916013 2.1620691 -1.8882809 -13.955476 2.0805867 -1.8919405 -13.959152 1.9936574 -1.8907206 -13.977012 1.9087726 -1.8915339 -13.988461 1.8229754 -1.8915339 -14.02593 1.7404044 -1.8951936 -14.0452 1.655354 -1.8964134 -14.063955 1.5701327 -1.8976333 -14.10584 1.4872376 -1.9021062 -14.129489 1.4021257 -1.9041394 -14.15065 1.316596 -1.9059014 -14.160437 1.229916 -1.9061725 -14.167717 1.143006 -1.9061725 -14.180391 1.0564948 -1.9069858 -14.202422 0.97054696 -1.9091544 -14.206133 0.8832612 -1.9088833 -14.210296 0.796022 -1.9087478 -14.210954 0.70861679 -1.9082056 -14.206126 0.62101698 -1.9069858 -14.234421 0.5347687 -1.9103743 -14.228522 0.44713756 -1.9091544 -14.194351 0.35889694 -1.9041394 -14.226004 0.27236509 -1.9082056 -14.255146 0.18543245 -1.9120009 -14.256016 0.097961031 -1.9120009 -14.270219 0.010496514 -1.9138985 -14.257135 -0.076994903 -1.9121364 -14.257385 -0.16448499 -1.912272 -14.26007 -0.2520335 -1.9128141 -14.26915 -0.33978602 -1.9143051 -14.24699 -0.4267408 -1.9115942 -14.210439 -0.51293647 -1.9069858 -14.24761 -0.60183364 -1.9125431 -14.257504 -0.68991405 -1.9144406 -14.244098 -0.77689809 -1.9132208 -14.236096 -0.86410356 -1.9128141 -14.238435 -0.95196688 -1.9138985 -14.211575 -1.0377996 -1.911052 -14.228643 -1.1268573 -1.9143051 -14.217512 -1.2138044 -1.9137629 -14.200917 -1.3002058 -1.9125431 -14.222255 -1.3902073 -1.9166093 -14.214442 -1.4775497 -1.9167448 -14.205109 -1.5647399 -1.9167448 -14.177526 -1.6498106 -1.9143051 -14.173036 -1.7374943 -1.9151183 -14.153264 -1.8232867 -1.9138985 -14.138865 -1.9096974 -1.9134918 -14.103336 -1.9930892 -1.9102387 -13.449818 -1.9850014 -1.8215939 -12.98497 -1.9978952 -1.7589732 -12.717128 -2.0366476 -1.7235966 -12.44149 -2.0708885 -1.6871356 -12.292841 -2.1237483 -1.6682951 -12.223989 -2.189182 -1.6605692 -11.225439 -2.0815523 -1.5235356 -10.876756 -2.0860207 -1.4767734 -10.516789 -2.0839803 -1.4283847 -10.274723 -2.1016231 -1.3963966 -9.7555838 -2.0579 -1.3256433 -9.1444426 -1.9876904 -1.2418779 -8.8961601 -1.990975 -1.2088056 -8.7959137 -2.0252969 -1.1964712 -8.5789242 -2.0308533 -1.1677362 -8.2977037 -2.0181401 -1.1299198 -8.1323233 -2.0308552 -1.1083684 -7.8893642 -2.0217006 -1.0758382 -8.039712 -2.1128738 -1.0988804 -7.6831479 -2.0696659 -1.0502206 -7.8107014 -2.1555076 -1.0701454 -7.5170145 -2.1241956 -1.0302958 -7.675159 -2.2198191 -1.0546936 -7.5340843 -2.2292094 -1.0365309 -7.522161 -2.2759695 -1.0368019 -7.4436889 -2.3021786 -1.027585 -7.4464283 -2.3531818 -1.0300248 -7.3290744 -2.3656604 -1.0152507 -7.3802915 -2.432291 -1.0247387 -7.2290611 -2.4317336 -1.005085 -7.2149415 -2.476366 -1.0052205 -7.2042866 -2.5222263 -1.0058982 -7.1588154 -2.5557253 -1.0015608 -6.9586511 -2.5325229 -0.9747234 -7.0470238 -2.6137559 -0.98990417 -6.9604149 -2.6303322 -0.97960293 -6.9589391 -2.6786849 -0.98177159 -6.8934817 -2.7021725 -0.97458786 -7.0092831 -2.7972941 -0.99410599 -6.8423619 -2.7794788 -0.97201252 -6.7848902 -2.8047585 -0.96604866 -6.8113914 -2.8647721 -0.97255468 -6.7463169 -2.8862498 -0.96550649 -6.7121267 -2.9204757 -0.96306676 -6.6786776 -2.9547918 -0.9607625 -6.6721683 -3.0009985 -0.96252453 -6.614882 -3.0241699 -0.95669621 -6.5791292 -3.0567703 -0.95412093 -6.6184874 -3.1245716 -0.96293116 -6.5759635 -3.1539843 -0.95940709 -5.4217191 -2.6415002 -0.78672576 -5.400969 -2.6725209 -0.786048 -6.5628314 -3.2976208 -0.96645528 -6.5142317 -3.3234208 -0.96211791 -6.4910774 -3.3619618 -0.96171129 -6.4536638 -3.3929679 -0.95913601 -6.2849941 -3.3536849 -0.93622929 -6.264298 -3.3921859 -0.93622929 -6.3640666 -3.4968719 -0.95506972 -6.3528752 -3.5416439 -0.95669621 -6.2835908 -3.5537348 -0.9492414 -6.2676835 -3.595674 -0.95019019 -6.232657 -3.6265905 -0.94815701 -6.1565289 -3.6330457 -0.93961787 -6.1188173 -3.6615963 -0.93717808 -6.1114821 -3.7083223 -0.93961787 -6.0421991 -3.717201 -0.932163 -6.0840106 -3.7945743 -0.94259977 -6.0656376 -3.8350103 -0.94341302 -6.0570078 -3.881778 -0.94585282 -6.016458 -3.9080768 -0.94314194 -5.9435382 -3.9127796 -0.93514496 -5.9433203 -3.9651194 -0.93907565 -5.9082079 -3.9942989 -0.93731362 -5.9203715 -4.0556707 -0.94341302 -5.8677006 -4.0727148 -0.93880457 -5.8158545 -4.0898356 -0.93433172 -5.8269639 -4.1513119 -0.94043112 -5.8616385 -4.2304707 -0.95059681 -5.8915601 -4.3072863 -0.9600848 -5.8721862 -4.3486614 -0.96130466 -5.6781516 -4.2591777 -0.93270516 -5.4956985 -4.1752725 -0.90586776 -5.4676204 -4.2071028 -0.90546107 -5.7699485 -4.4963341 -0.96238899 -5.708806 -4.5052624 -0.95656067 -5.6903429 -4.5476279 -0.95818716 -5.6068778 -4.5375848 -0.94842809 -5.6279774 -4.6120915 -0.95710284 -5.613297 -4.6579247 -0.95954263 -5.5777831 -4.6865439 -0.95832276 -5.5315647 -4.7059155 -0.95520526 -5.4838181 -4.7236032 -0.95181668 -5.4046998 -4.7135344 -0.94273531 -5.244957 -4.6311989 -0.91887981 -5.2784915 -4.7187576 -0.93026543 -8.7844353 -7.950078 -1.5824966 -8.7267227 -7.9957972 -1.5808702 -3.5439742 -3.2876914 -0.62299019 -3.5143452 -3.3005581 -0.62122816 -3.4933093 -3.321377 -0.62109262 -3.4828582 -3.3523674 -0.62299019 -3.4239016 -3.3363397 -0.61567092 -3.3822038 -3.3364136 -0.61160463 -3.3532548 -3.3487029 -0.60997814 -3.320102 -3.3565371 -0.60753834 -7.788744 -7.9706812 -1.4862614 -7.7259278 -8.0040655 -1.4835505 -7.6588936 -8.0326767 -1.4800264 -7.5483236 -8.0146093 -1.4678276 -7.4720097 -8.0317593 -1.4624058 -7.3883963 -8.0402508 -1.4554932 -2.5849071 -2.8482277 -0.48785418 -7.1747503 -8.0026941 -1.4320443 -2.5602703 -2.8916016 -0.49002287 -2.5509593 -2.9169512 -0.49178493 -7.1739106 -8.3043394 -1.4629481 -7.1382556 -8.3662901 -1.4662011 -7.1519108 -8.4872093 -1.4800264 -7.0958967 -8.5263634 -1.4792131 -7.0755315 -8.608778 -1.4861258 -7.0494256 -8.6851082 -1.4919542 -7.0245075 -8.7637596 -1.4981891 -7.0136471 -8.8610754 -1.5076771 -7.0396843 -9.0069838 -1.5255687 -7.0242391 -9.1017752 -1.5345145 -6.9778676 -9.1573124 -1.5366832 -6.8965297 -9.1667032 -1.5309905 -6.8549242 -9.2287312 -1.534379 -6.795239 -9.2666235 -1.5337013 -6.7597494 -9.3378372 -1.5387163 -6.6942616 -9.3678532 -1.5368187 -6.6286597 -9.397418 -1.5349212 -6.5425668 -9.3972588 -1.528144 -6.497128 -9.4551907 -1.531126 -6.4412141 -9.4981585 -1.5316682 -6.381711 -9.5358553 -1.5313971 -6.3148899 -9.5624323 -1.5293639 -6.2463603 -9.5860577 -1.5269241 -6.2029629 -9.6483727 -1.5308549 -6.1340923 -9.6711922 -1.5284151 -6.0819931 -9.7204065 -1.5303128 -6.0196333 -9.7533264 -1.5296351 -5.9493704 -9.7731533 -1.5269241 -5.8750114 -9.7856894 -1.523129 -5.8199048 -9.8300791 -1.5244844 -5.7639751 -9.8733053 -1.5257043 -5.7092166 -9.9187908 -1.5273308 -5.6418915 -9.9424324 -1.5255687 -5.5740075 -9.9647579 -1.5236712 -5.5084543 -9.9909639 -1.5224513 -5.4508319 -10.031539 -1.5235356 -5.3891768 -10.064795 -1.5235356 -5.313911 -10.072262 -1.5196048 -5.2428694 -10.087095 -1.516894 -1.375152 -2.6865344 -0.37454054 -5.0950451 -10.103788 -1.5097102 -5.0593958 -10.188103 -1.5178428 -4.9941759 -10.213614 -1.5170295 -4.9296932 -10.240495 -1.5164874 -4.8633718 -10.263388 -1.515403 -4.796536 -10.284954 -1.5141832 -4.729619 -10.306087 -1.5129633 -4.656507 -10.313242 -1.5097102 -4.5939431 -10.343431 -1.5099813 -4.5331669 -10.377779 -1.5109302 -4.4709687 -10.40904 -1.5114723 -4.4043179 -10.429889 -1.5105236 -4.3390989 -10.453972 -1.5101168 -4.2718787 -10.47306 -1.5090325 -4.2016397 -10.48436 -1.5068638 -4.1404963 -10.518241 -1.5080837 -4.0751648 -10.5416 -1.5078126 -4.0037255 -10.548807 -1.5052373 -3.9306221 -10.550893 -1.5019844 -3.8804381 -10.614824 -1.5078126 -1.1653794 -3.2503781 -0.43404377 -3.7462692 -10.651363 -1.5063217 -1.1528616 -3.3440485 -0.4455649 -1.1408875 -3.3764014 -0.44922453 -1.1083115 -3.3475981 -0.44407392 -3.4360497 -10.593076 -1.485177 -1.052151 -3.3137329 -0.43729678 -1.018268 -3.2766056 -0.4310618 -0.98459244 -3.2382412 -0.42469132 -0.96300942 -3.2385237 -0.42387804 -0.94561017 -3.2529337 -0.42509794 -0.95054936 -3.346354 -0.43756786 -0.92204922 -3.323483 -0.43350157 -2.9333808 -10.827331 -1.4962915 -2.871449 -10.862367 -1.4987313 -2.8121655 -10.908563 -1.5027976 -2.7350371 -10.885255 -1.4971048 -1.9982306 -8.1648836 -1.1116215 -0.76579529 -3.21542 -0.41384789 -2.5333169 -10.929893 -1.4965626 -1.9887489 -8.8265944 -1.1994531 -2.3915834 -10.926283 -1.4918187 -2.324702 -10.941721 -1.4919542 -1.7377477 -8.4337683 -1.1396788 -1.677235 -8.4005508 -1.1335794 -1.6258466 -8.4116573 -1.1337149 -1.5789375 -8.4467955 -1.137239 -1.978991 -10.958158 -1.4850415 -1.9122262 -10.973022 -1.4854481 -1.842563 -10.97087 -1.4835505 -1.3106 -8.1084003 -1.0853262 -1.7061214 -10.981885 -1.4820596 -1.294436 -8.6834164 -1.162721 -1.5766926 -11.040247 -1.4873457 -1.5077144 -11.040878 -1.4861258 -1.4355863 -11.016519 -1.4815173 -1.3699157 -11.040852 -1.4836861 -1.3021445 -11.049049 -1.4836861 -1.2350941 -11.063724 -1.4846349 -1.1663537 -11.063211 -1.4835505 -1.0998193 -11.083962 -1.4854481 -1.031146 -11.083596 -1.4844993 -0.96191829 -11.075896 -1.4826018 -0.89505559 -11.095416 -1.4844993 -0.8272531 -11.10465 -1.4850415 -0.75808704 -11.094691 -1.4830084 -0.68845928 -11.074412 -1.4796197 -0.61955249 -11.061611 -1.4773155 -0.55196428 -11.071141 -1.4781288 -0.48376286 -11.068381 -1.4773155 -0.41528109 -11.05629 -1.4752824 -0.34730858 -11.054668 -1.4747403 -0.27804279 -11.000135 -1.4670143 -0.21122576 -11.037296 -1.4718938 -0.14354987 -11.042347 -1.4724361 -0.075717412 -11.032122 -1.470945 -0.0080226455 -11.030397 -1.4706739 --0.059743915 -11.046091 -1.4728427 --0.12754314 -11.047498 -1.4731138 --0.19579887 -11.073254 -1.4767734 --0.2636216 -11.066892 -1.4760957 --0.331018 -11.04823 -1.4737915 --0.39937383 -11.061833 -1.4759601 --0.46611223 -11.032447 -1.4723005 --0.5351373 -11.057089 -1.4760957 --0.60297227 -11.053597 -1.4760957 --0.67366451 -11.097159 -1.4826018 --0.74260157 -11.105668 -1.4843638 --0.81246185 -11.124618 -1.4876168 --0.88054955 -11.117448 -1.4873457 --0.94849557 -11.108874 -1.4869391 --1.015015 -11.085086 -1.4844993 --1.0813745 -11.061886 -1.4821951 --1.1496383 -11.058984 -1.4827373 --1.2240889 -11.111795 -1.4910053 --1.2905291 -11.089314 -1.4889722 --1.3632483 -11.119539 -1.4942584 --1.4349946 -11.138479 -1.4980536 --1.5027816 -11.125538 -1.4975114 --1.567553 -11.091581 -1.4941229 --1.6332662 -11.066072 -1.4919542 --1.6982734 -11.037236 -1.4893788 --1.7622052 -11.003129 -1.4861258 --1.8311497 -11.000905 -1.4873457 --1.9021569 -11.009965 -1.4901921 --1.9684546 -10.991259 -1.4892433 --2.0403738 -11.003328 -1.4926319 --2.1201649 -11.054823 -1.5015777 --2.1925774 -11.06493 -1.5048307 --2.2687664 -11.092037 -1.5105236 --2.3433259 -11.10893 -1.5148609 --2.4110241 -11.092406 -1.5145898 --2.4775262 -11.070636 -1.513641 --2.5474081 -11.063915 -1.5148609 --2.6090858 -11.022044 -1.5112013 --2.6719847 -10.986573 -1.5084903 --2.7424667 -10.982468 -1.5102524 --2.8070974 -10.954876 -1.5087614 --2.8762767 -10.945112 -1.5098457 --2.9459572 -10.936825 -1.5112013 --3.0093195 -10.905171 -1.5093036 --3.0705187 -10.866479 -1.5064572 --3.133008 -10.833158 -1.5044241 --3.1968906 -10.805179 -1.5032042 --3.2616954 -10.780618 -1.5025265 --3.3356853 -10.785958 -1.5061861 --3.404192 -10.772846 -1.5072705 --3.4647515 -10.734783 -1.5048307 --3.5259027 -10.699207 -1.5027976 --3.5936964 -10.683945 -1.5037464 --3.6569328 -10.655133 -1.5027976 --3.7389369 -10.680186 -1.5097102 --3.810394 -10.67384 -1.51215 --3.8778486 -10.655845 -1.5129633 --3.9379911 -10.617915 -1.5109302 --3.9953632 -10.573163 -1.5079482 --4.0583844 -10.543825 -1.5072705 --4.1273422 -10.529795 -1.5088969 --4.191874 -10.504272 -1.5088969 --4.2532654 -10.471009 -1.5078126 --1.497961 -3.6231759 -0.49801987 --1.5259253 -3.6276159 -0.50005305 --4.4569716 -10.418274 -1.511879 --4.5164657 -10.380737 -1.510388 --4.5720592 -10.334707 -1.5076771 --4.6366048 -10.30917 -1.5080837 --4.0337334 -8.8234596 -1.2889112 --4.7615128 -10.2488 -1.5076771 --1.5288742 -3.2379923 -0.45152876 --1.555568 -3.2428441 -0.45369744 --1.6366147 -3.3588288 -0.47280896 --1.6730096 -3.3806927 -0.47768849 --1.6919426 -3.3668222 -0.47714633 --1.7161708 -3.3634379 -0.47823066 --1.7408768 -3.3607626 -0.47945055 --1.7596211 -3.3465097 -0.47890836 --5.3889637 -10.099736 -1.5277374 --5.4201703 -10.009848 -1.5189271 --4.8350563 -8.7997875 -1.3352668 --5.569612 -9.9910431 -1.5265175 --5.6308112 -9.9566803 -1.5265175 --5.7011647 -9.9382725 -1.5290928 --5.7729988 -9.9219437 -1.5320748 --4.8157272 -8.1609478 -1.2580075 --1.9309673 -3.2264311 -0.47606197 --1.9522697 -3.2170634 -0.47646859 --6.0178714 -9.782342 -1.5328881 --6.0856452 -9.757844 -1.5349212 --6.1496391 -9.7270184 -1.5360055 --6.1953092 -9.6674128 -1.5324814 --6.2523518 -9.6258936 -1.5319393 --6.312932 -9.5898314 -1.5323459 --6.371655 -9.5509157 -1.5323459 --6.440681 -9.527236 -1.5349212 --6.5040565 -9.494894 -1.536141 --6.5638885 -9.4572487 -1.5365477 --6.6354704 -9.4362469 -1.5398008 --6.7041674 -9.4106874 -1.542376 --6.7548265 -9.3597326 -1.5407495 --6.8285012 -9.3405056 -1.5445447 --6.8998351 -9.3175411 -1.5477977 --6.9497428 -9.2655172 -1.5461712 --7.0052657 -9.2211227 -1.5459001 --7.0617137 -9.1779652 -1.5459001 --7.1215491 -9.1391516 -1.5467134 --7.1879253 -9.1085052 -1.5490177 --7.2480083 -9.0696478 -1.5499665 --7.3172336 -9.0419483 -1.5529484 --7.3889031 -9.0168056 -1.5564724 --7.447886 -8.975873 -1.5572857 --7.5047326 -8.9322805 -1.5576923 --7.5638924 -8.8913469 -1.5586412 --7.6241255 -8.8515253 -1.5598611 --7.6848054 -8.8120451 -1.5612165 --7.7361073 -8.761755 -1.5606743 --7.8035889 -8.7296343 -1.5635207 --7.8782797 -8.7050962 -1.5678581 --7.949616 -8.6763163 -1.5715177 --8.0242634 -8.6506205 -1.575855 --8.0900774 -8.6149445 -1.5784304 --8.1598511 -8.5830946 -1.5818189 --8.1979351 -8.5178738 -1.5789726 --8.2763186 -8.4943781 -1.5841231 --8.3428936 -8.4582491 -1.5869696 --8.4030361 -8.4153128 -1.5885961 --8.4601479 -8.3691683 -1.5896804 --8.5184269 -8.3240252 -1.5910358 --8.5622129 -8.264719 -1.5896804 --8.6134806 -8.2127104 -1.589816 --8.6680384 -8.1637802 -1.5906292 --8.7339249 -8.125288 -1.5936111 --8.7916412 -8.0789194 -1.5951021 --8.8513174 -8.0341454 -1.5969998 --8.9092999 -7.9876204 -1.5986263 --8.9863281 -7.9577646 -1.6037768 --9.0618334 -7.9259591 -1.6086564 --9.1252899 -7.8831615 -1.6113672 --9.1561537 -7.8122301 -1.6082498 --9.2046738 -7.7565403 -1.6083853 --9.2627554 -7.7087889 -1.6102829 --9.3160048 -7.6568418 -1.6113672 --9.37358 -7.6082773 -1.6132648 --9.4231796 -7.5530977 -1.613807 --9.4910984 -7.5123539 -1.6176022 --9.5479431 -7.4625182 -1.6194998 --9.5998278 -7.4086356 -1.6205841 --9.6529856 -7.355598 -1.6219395 --9.7208967 -7.3135047 -1.6258703 --9.7504768 -7.2424951 -1.6232949 --9.8115101 -7.1948352 -1.6261414 --9.8651028 -7.1414695 -1.6277679 --9.9079304 -7.0802279 -1.6276324 --9.9609022 -7.026154 -1.6292589 --10.037163 -6.9881144 -1.6348162 --10.097816 -6.9387407 -1.6377981 --10.116423 -6.8605242 -1.6338673 --10.181382 -6.8137517 -1.6376625 --10.256068 -6.7729921 -1.6430842 --10.312375 -6.7196712 -1.645524 --10.365079 -6.6637707 -1.6474216 --10.406609 -6.6005769 -1.6475571 --10.458672 -6.5439568 -1.6494547 --10.474178 -6.4645691 -1.645524 --10.528033 -6.4089375 -1.6478282 --10.583299 -6.3539081 -1.6504035 --6.6313596 -3.9259496 -1.0159284 --6.6519012 -3.8831882 -1.0153862 --10.732807 -6.1777992 -1.6558253 --10.791192 -6.1235638 -1.6590782 --10.832886 -6.0596538 -1.6597559 --10.878539 -5.9978542 -1.6611114 --10.924712 -5.9361954 -1.6626023 --10.965298 -5.8713894 -1.66328 --11.003746 -5.8053842 -1.6636868 --7.4814453 -3.8884399 -1.1151456 --11.142946 -5.7051358 -1.6742591 --6.9482746 -3.5036719 -1.0262296 --6.9323726 -3.4424627 -1.0205368 --6.9400139 -3.393333 -1.0185037 --6.9598117 -3.3502562 -1.0183681 --7.0088878 -3.3210659 -1.0227054 --11.400158 -5.3166752 -1.6825272 --6.6502099 -3.0517254 -0.96266007 --6.6543622 -3.0043392 -0.96049142 --11.461681 -5.0906515 -1.6773765 --11.48907 -5.0186415 -1.6768343 --11.506903 -4.9425769 -1.6749368 --11.471297 -4.8441257 -1.6651777 --11.51819 -4.7808652 -1.667753 --11.545474 -4.7093525 -1.6674819 --7.4734058 -2.9948666 -1.0630972 --11.772025 -4.6340985 -1.6924218 --11.805782 -4.5639234 -1.693235 --11.828933 -4.4896402 -1.6925573 --11.844189 -4.412478 -1.6907952 --11.852429 -4.3329163 -1.6880844 --11.768745 -4.2206392 -1.6720903 --11.748625 -4.1322389 -1.6654488 --11.739102 -4.048121 -1.6604337 --11.745887 -3.9699867 -1.6578584 --11.729583 -3.8844459 -1.65203 --11.723981 -3.8029237 -1.6478282 --11.755593 -3.7336147 -1.6490481 --11.78585 -3.6637666 -1.6501324 --11.800526 -3.5890744 -1.6490481 --11.806182 -3.5117974 -1.6467439 --11.824654 -3.4384599 -1.6463373 --11.856965 -3.3690906 -1.6479638 --11.904145 -3.3036935 -1.6517589 --11.949056 -3.2373259 -1.6552831 --11.980189 -3.166986 -1.6569096 --12.032974 -3.1020749 -1.6616535 --12.107514 -3.0421889 -1.669515 --12.16156 -2.9765575 -1.6745301 --12.202725 -2.9073915 -1.6777831 --12.220335 -2.8324623 -1.6777831 --12.237485 -2.7574263 -1.6777831 --12.300631 -2.692457 -1.6842892 --12.445814 -2.6443212 -1.7023164 --12.502561 -2.5763049 -1.7080091 --12.581286 -2.5121541 -1.7168194 --12.690822 -2.4531519 -1.729967 --12.75433 -2.384341 -1.7367442 --12.861344 -2.322768 -1.7496208 --12.938798 -2.2548671 -1.758431 --12.978771 -2.1798654 -1.7620907 --12.679898 -2.0497417 -1.7188525 --12.891956 -2.0029361 -1.7465032 --13.197004 -1.9674863 -1.7870305 --13.605078 -1.9430779 -1.8417897 --14.17138 -1.9353222 -1.9183713 --14.368672 -1.8725356 -1.9439889 --14.407422 -1.7877526 -1.9477841 --14.434848 -1.7012887 -1.9500883 --14.427291 -1.6107069 -1.9476485 --14.421138 -1.5204897 -1.9454799 --14.437098 -1.4326597 -1.9464287 --14.39925 -1.3397331 -1.9400581 --14.445695 -1.2547004 -1.9453443 --14.455097 -1.1661991 -1.9456154 --14.463957 -1.0776296 -1.9458865 --14.459423 -0.9881168 -1.9443955 --14.467192 -0.89949983 -1.9446666 --14.434848 -0.80860716 -1.9395159 --14.466256 -0.72135437 -1.9431757 --14.437745 -0.6311487 -1.9387027 --14.399763 -0.54098505 -1.93301 --14.459257 -0.45439503 -1.9407359 --13.182233 0.97150278 -1.9392607 --13.217429 1.0556799 -1.9454761 --13.170303 1.1332808 -1.9394088 --13.163102 1.2140709 -1.9394088 --13.148516 1.2941366 -1.9383729 --13.141311 1.3748931 -1.9385208 --13.139508 1.4562639 -1.9395567 --13.137201 1.5376644 -1.9405926 --13.144205 1.6203023 -1.9431083 --13.130093 1.7004147 -1.9425163 --13.104712 1.7789506 -1.9402966 --13.080821 1.8575175 -1.9383729 --13.054502 1.9355679 -1.9361532 --13.036516 2.0147254 -1.9352652 --12.991687 2.0894928 -1.9303819 --12.969842 2.167701 -1.92905 --12.953374 2.2467341 -1.928606 --12.950051 2.3280983 -1.9302338 --12.942329 2.4087818 -1.9312698 --12.918565 2.4864659 -1.9299378 --12.896276 2.5643353 -1.928902 --12.872548 2.6418257 -1.9277182 --12.864803 2.722604 -1.92905 --12.851721 2.8023329 -1.929642 --12.836214 2.8815703 -1.9299378 --12.804801 2.9571607 -1.9278661 --12.746964 3.026304 -1.9217988 --12.741606 3.107743 -1.9238707 --12.719419 3.1851447 -1.9234266 --12.709215 3.2655916 -1.9249065 --12.653554 3.3341854 -1.9194312 --12.654818 3.417696 -1.9228348 --12.635515 3.4958079 -1.9231308 --12.606215 3.571115 -1.9219469 --12.600213 3.6530812 -1.9244626 --12.717886 3.7719576 -1.9463639 --12.582828 3.8160434 -1.928902 --12.601684 3.9063592 -1.9355612 --12.519966 3.9653873 -1.9265343 --12.495399 4.0421338 -1.9265343 --12.43186 4.1060081 -1.920467 --12.425176 4.1885309 -1.9234266 --12.360898 4.2515001 -1.9173595 --12.348577 4.3321772 -1.9195791 --12.325487 4.4091978 -1.920171 --12.261966 4.4715252 -1.9143997 --12.255619 4.554605 -1.9178034 --12.229292 4.6304188 -1.9180993 --12.208032 4.7082167 -1.9192832 --12.178913 4.7830353 -1.9192832 --12.14199 4.8547359 -1.9180993 --12.104645 4.9261632 -1.9169154 --12.055916 4.9927731 -1.9139558 --12.005004 5.0582032 -1.9107002 --11.963743 5.1274829 -1.9090724 --11.929337 5.1996088 -1.9086285 --11.883646 5.266696 -1.9064088 --11.874549 5.3500781 -1.9102563 --11.858582 5.4306636 -1.9130679 --11.838486 5.5095849 -1.9152876 --11.839324 5.5986128 -1.921059 --11.790486 5.6642985 -1.9186913 --11.751064 5.7343678 -1.9179513 --11.727178 5.8120732 -1.9198751 --11.715145 5.895927 -1.9238707 --11.704287 5.9807515 -1.9281621 --11.657713 6.0474448 -1.9265343 --11.638762 6.1285391 -1.929642 --11.640189 6.220818 -1.9363011 --11.603539 6.293067 -1.9365971 --11.576836 6.3708229 -1.9386688 --11.556523 6.4523458 -1.9419245 --11.50639 6.5172839 -1.9401486 --11.500484 6.6074734 -1.9460679 --11.463141 6.6799068 -1.9466598 --11.411722 6.7440786 -1.9448841 --11.388788 6.8251586 -1.9481397 --11.34416 6.8933697 -1.9476957 --11.306702 6.9659595 -1.9485836 --11.273811 7.0414929 -1.9503595 --11.235407 7.1137099 -1.9512473 --11.203198 7.1899943 -1.9533191 --11.16799 7.264533 -1.9549469 --11.147149 7.3487101 -1.9592383 --11.115005 7.4257607 -1.961606 --11.090524 7.5082388 -1.9654536 --11.051585 7.581183 -1.9667854 --11.026785 7.6640935 -1.970781 --11.00866 7.75211 -1.9761083 --10.963302 7.8212352 -1.9765522 --10.928731 7.8982067 -1.9790679 --10.880063 7.9651155 -1.9790679 --10.850844 8.0464535 -1.9827675 --10.801268 8.1128817 -1.9827675 --10.778045 8.1993656 -1.9877988 --10.735365 8.2713804 -1.9892787 --10.721834 8.3663025 -1.9963818 --10.657107 8.4215078 -1.9938661 --10.628397 8.5052795 -1.9983056 --10.579851 8.5734482 -1.9990455 --10.528576 8.6394587 -1.9993415 --10.482212 8.7095871 -2.0006733 --10.435385 8.7794714 -2.0020051 --10.409172 8.8670673 -2.0074804 --10.372541 8.9462738 -2.0110321 --10.312984 9.005847 -2.0101442 --10.264939 9.0755081 -2.0116239 --10.216428 9.1449184 -2.0131037 --10.16965 9.2160673 -2.0150275 --10.138413 9.3016968 -2.0202069 --10.093467 9.3751736 -2.0227227 --10.043676 9.4443827 -2.0243504 --9.9798079 9.5003757 -2.0231667 --9.9298706 9.5696678 -2.0249424 --9.8773365 9.6366329 -2.0262742 --9.8194284 9.6984472 -2.0265701 --9.7660284 9.7648096 -2.0279019 --9.7205238 9.839325 -2.0310097 --9.6668749 9.9058628 -2.0324895 --9.6072845 9.9664154 -2.0327854 --9.5609531 10.040935 -2.036041 --9.5133915 10.11454 -2.0391486 --9.4524965 10.174172 -2.0394447 --9.4119558 10.256028 -2.044328 --9.3568192 10.322379 -2.0461037 --9.2959442 10.382545 -2.0466957 --9.2320633 10.439388 -2.0466957 --9.1684847 10.496584 -2.0468438 --9.1103659 10.560131 -2.0483234 --9.0492468 10.62035 -2.0492115 --8.9909153 10.683999 -2.0508392 --8.9264545 10.740487 -2.0511351 --8.8798332 10.818756 -2.0557227 --8.8288507 10.892247 -2.0594223 --8.7698851 10.956253 -2.0613458 --8.7098522 11.019169 -2.0631218 --8.6518106 11.084879 -2.0654895 --8.5763884 11.128356 -2.0637136 --8.528904 11.208318 -2.068893 --8.470068 11.273882 -2.0714087 --8.4001436 11.324847 -2.0712607 --8.3334188 11.380166 -2.0720007 --8.2744417 11.446314 -2.0748122 --8.2235832 11.524242 -2.0798438 --8.1663837 11.593891 -2.0833952 --8.1024294 11.654338 -2.085319 --8.0358019 11.711173 -2.0866508 --7.9710007 11.770905 -2.0885746 --7.9030213 11.826172 -2.0897584 --7.835752 11.882698 -2.0912383 --7.7702441 11.94216 -2.0933101 --7.7037668 12.000432 -2.0952339 --7.6373959 12.059174 -2.0973055 --7.5695457 12.115874 -2.0990813 --7.5018058 12.173038 -2.1010051 --7.4310813 12.2256 -2.1021891 --7.3599939 12.277753 -2.1033728 --7.2890496 12.330344 -2.1047046 --7.2187324 12.384236 -2.1063325 --7.1445789 12.431726 -2.1069243 --7.0710897 12.480494 -2.1078122 --6.9982352 12.530555 -2.1089962 --6.9274163 12.584522 -2.11092 --6.8477111 12.622445 -2.1101799 --6.7682676 12.660735 -2.1095881 --6.7134967 12.745779 -2.1169872 --6.6734214 12.860475 -2.1294177 --6.5948353 12.902061 -2.1295657 --6.5093207 12.929914 -2.1274939 --6.4254699 12.960751 -2.126014 --6.3371477 12.982157 -2.1230545 --6.2440939 12.993162 -2.1184671 --6.1486073 12.998151 -2.1129916 --6.0595551 13.015907 -2.109736 --5.9672217 13.025868 -2.1052966 --5.8697133 13.023465 -2.0989335 --5.7732615 13.022165 -2.0928662 --5.6758614 13.017454 -2.086355 --5.5767884 13.007495 -2.0791037 --5.4761324 12.992254 -2.0711126 --5.3872275 13.003681 -2.0675611 --5.303236 13.026416 -2.0659335 --5.209621 13.024734 -2.0604579 --5.1097183 13.005825 -2.052319 --5.0269723 13.029551 -2.0511351 --4.9357224 13.030554 -2.0463998 --4.8408589 13.020732 -2.0400364 --4.7486749 13.016741 -2.0347092 --4.6597214 13.020492 -2.0307136 --4.5735197 13.031107 -2.0279019 --4.4851122 13.034609 -2.0240545 --4.3946218 13.030957 -2.019171 --4.3074479 13.036077 -2.0157676 --4.2179413 13.033092 -2.0111799 --4.126842 13.023844 -2.0057046 --4.0366011 13.015859 -2.0005252 --3.9509199 13.021453 -1.9975656 --3.8656034 13.027435 -1.994754 --3.780638 13.033812 -1.9920903 --3.6960099 13.040587 -1.9895747 --3.6095946 13.040145 -1.9860231 --3.5199714 13.026721 -1.9805478 --3.4377062 13.039467 -1.9792159 --3.3524635 13.040199 -1.9761083 --3.2680621 13.043256 -1.9734446 --3.1823432 13.040003 -1.969893 --3.0977015 13.040039 -1.9669334 --3.010731 13.028929 -1.962346 --2.9270468 13.030753 -1.9598303 --2.8424001 13.027209 -1.9565747 --2.7628229 13.04634 -1.9568707 --2.681129 13.055296 -1.9556868 --2.5973072 13.053072 -1.9528751 --2.5160444 13.062936 -1.9519873 --2.4333103 13.064516 -1.9499154 --2.346976 13.045133 -1.9447361 --2.2640145 13.042723 -1.9422204 --2.1805186 13.035884 -1.9391128 --2.0981345 13.034371 -1.936893 --2.0173621 13.042113 -1.9361532 --1.9399109 13.071856 -1.9388168 --1.8595279 13.082533 -1.9386688 --1.7765585 13.074097 -1.9357092 --1.6932544 13.061213 -1.9321576 --1.6118701 13.061541 -1.9306778 --1.5336509 13.087884 -1.9331934 --1.4521173 13.086235 -1.9315656 --1.370456 13.082111 -1.929642 --1.2896752 13.085353 -1.928902 --1.2075433 13.073324 -1.9259424 --1.1257771 13.062751 -1.9232787 --1.0437924 13.046739 -1.9198751 --0.96422863 13.059801 -1.920911 --0.88354361 13.057578 -1.9197271 --0.80219471 13.043011 -1.9167675 --0.72149438 13.035838 -1.9149917 --0.64115489 13.033105 -1.9139558 --0.56079119 13.027901 -1.912624 --0.480661 13.026155 -1.9118841 --0.40054309 13.022928 -1.9109962 --0.32070112 13.028107 -1.9114401 --0.24095613 13.040706 -1.9130679 --0.16098379 13.045895 -1.9136598 --0.080926605 13.045648 -1.9135119 --0.00087844487 13.047877 -1.9138079 -0.079212286 13.052582 -1.9145478 -0.15921482 13.044928 -1.9135119 -0.239254 13.043705 -1.9135119 -0.31928417 13.041991 -1.9135119 -0.39921123 13.036821 -1.9130679 -0.47930542 13.037091 -1.9135119 -0.5595029 13.038845 -1.9142518 -0.63983709 13.042081 -1.9152876 -0.72034121 13.046797 -1.9166195 -0.80092728 13.051016 -1.9179513 -0.88132536 13.050789 -1.9186913 -0.9624058 13.058945 -1.920763 -1.0436982 13.067581 -1.9229827 -1.1237749 13.059945 -1.9228348 -1.2053428 13.068562 -1.9252025 -1.2854103 13.059935 -1.9250544 -1.3640784 13.038032 -1.9229827 -1.4460151 13.04711 -1.9256464 -1.5269639 13.04585 -1.9268303 -1.6075884 13.041142 -1.9275702 -1.6868144 13.025148 -1.9266822 -1.7664373 13.012593 -1.9263864 -1.8479174 13.013259 -1.9281621 -1.9296173 13.014394 -1.9300859 -2.0124586 13.021856 -1.9330455 -2.0937355 13.01805 -1.9343773 -2.1779773 13.031296 -1.9383729 -2.2584021 13.02061 -1.9388168 -2.3422794 13.028894 -1.9422204 -2.4256189 13.032751 -1.945032 -2.5074108 13.027333 -1.9465119 -2.5925078 13.037892 -1.9505074 -2.6722591 13.020771 -1.9503595 -2.7543561 13.014772 -1.9519873 -2.838588 13.017919 -1.9550948 -2.9218783 13.015696 -1.9574625 -3.0043576 13.009086 -1.9592383 -3.0870943 13.002915 -1.9611621 -3.1672895 12.98565 -1.9614581 -3.2555602 13.000507 -1.9667854 -3.3394539 12.996571 -1.9693011 -3.4294717 13.015045 -1.9753684 -3.5159726 13.01858 -1.9792159 -3.6037009 13.025357 -1.9836553 -3.6892176 13.022982 -1.986763 -3.7748406 13.020047 -1.9898707 -3.8616915 13.020344 -1.9935702 -3.9492619 13.021956 -1.9975656 -4.0331898 13.010703 -1.9996374 -4.1165304 12.997025 -2.0014131 -4.2007685 12.985636 -2.003633 -4.2906055 12.990605 -2.0085163 -4.3854022 13.009017 -2.0156195 -4.4735069 13.006179 -2.0194671 -4.5623965 13.004615 -2.0236106 -4.6511021 13.001517 -2.027606 -4.7358737 12.98667 -2.0298257 -4.8230505 12.977761 -2.0330813 -4.9137988 12.97752 -2.0378168 -5.0146923 13.002487 -2.0466957 -5.1052279 12.999088 -2.0511351 -5.1948085 12.992312 -2.0551307 -5.285243 12.986757 -2.0594223 -5.3735342 12.975098 -2.0628257 -5.4653378 12.971045 -2.0675611 -5.5685935 12.992715 -2.0765882 -5.6711349 13.010883 -2.085171 -5.7620835 13.001157 -2.0893145 -5.8527203 12.989902 -2.0933101 -5.9446702 12.980721 -2.0977495 -6.0421538 12.982553 -2.1041126 -6.1394596 12.982784 -2.110328 -6.2327123 12.973394 -2.1150634 -6.3269477 12.965125 -2.1200948 -6.4362502 12.986314 -2.1301575 -6.5162559 12.947461 -2.1303055 -6.5789242 12.874651 -2.1248302 -6.6108823 12.743622 -2.1095881 -6.6714387 12.669566 -2.1039648 -6.7248082 12.583038 -2.0962696 -6.8094349 12.555448 -2.0986373 -6.8367486 12.423323 -2.0832472 -6.935029 12.420859 -2.0900545 -6.9764996 12.316978 -2.0795476 -7.0682049 12.302236 -2.0844312 -7.1301107 12.235564 -2.0804355 -7.1990137 12.181368 -2.0786598 -7.2614183 12.116608 -2.0751083 -7.3525786 12.099714 -2.0799916 -7.4220128 12.046794 -2.0786598 -7.502079 12.011091 -2.0804355 -7.5703449 11.956478 -2.0789559 -7.6307445 11.889828 -2.0754042 -7.6927686 11.826202 -2.0724447 -7.7564774 11.765568 -2.0700769 -7.8208308 11.706242 -2.0680051 -7.880867 11.640836 -2.0648975 -7.9443121 11.580844 -2.0628257 -8.0112696 11.526196 -2.06179 -8.067605 11.456609 -2.0580902 -8.133729 11.401256 -2.0570545 -8.1977386 11.343118 -2.0555747 -8.2636786 11.287816 -2.0546868 -8.32866 11.231339 -2.0536509 -8.3902893 11.170534 -2.0518751 -8.4550791 11.11412 -2.0509872 -8.5164747 11.053414 -2.0493593 -8.5707502 10.983798 -2.0461037 -8.6232662 10.91238 -2.0425522 -8.6702852 10.834556 -2.0378168 -8.7278833 10.770395 -2.0357451 -8.7781191 10.697527 -2.0320456 -8.8328466 10.630533 -2.0295298 -8.8947248 10.572352 -2.02879 -8.9555798 10.51306 -2.0279019 -9.0115204 10.448176 -2.0259783 -9.0715561 10.388216 -2.0250902 -9.1331606 10.330136 -2.0246463 -9.1943941 10.271691 -2.0242023 -9.2506046 10.207754 -2.0227227 -9.3077154 10.144972 -2.0215387 -9.3630571 10.080424 -2.0200589 -9.4037285 10.00045 -2.0154715 -9.4410448 9.9174929 -2.0102921 -9.4934835 9.850832 -2.0085163 -9.5496044 9.7881489 -2.0076284 -9.6094837 9.7293692 -2.0076284 -9.6641054 9.665328 -2.0065925 -9.701417 9.5843039 -2.0020051 -9.7465925 9.5114737 -1.9991934 -9.7919531 9.4391365 -1.9965298 -9.8432398 9.3727398 -1.995198 -9.8940802 9.3060684 -1.9938661 -9.9444733 9.2391262 -1.9925343 -9.996604 9.1739225 -1.9916464 -10.04318 9.1037779 -1.9897226 -10.084113 9.0287905 -1.986763 -10.121541 8.9510221 -1.9832114 -10.177018 8.8893995 -1.9833595 -10.226129 8.8222656 -1.9823235 -10.264258 8.7458849 -1.9792159 -10.301081 8.6687317 -1.9759603 -10.343428 8.5965137 -1.9738885 -10.386806 8.5253572 -1.9721128 -10.438921 8.4614639 -1.9721128 -10.48215 8.3904552 -1.970485 -10.5249 8.3192348 -1.9688572 -10.56951 8.2496309 -1.9676733 -10.612096 8.178586 -1.9661934 -10.647124 8.1019402 -1.9633818 -10.680821 8.0245781 -1.9604222 -10.718738 7.9506431 -1.9583504 -10.75136 7.8730397 -1.9553908 -10.781832 7.7941771 -1.9521352 -10.807715 7.7123652 -1.9481397 -10.841897 7.6367941 -1.9457719 -10.87637 7.5616584 -1.9435523 -10.90136 7.4802332 -1.9397047 -10.933949 7.4043317 -1.937337 -10.975063 7.3343554 -1.9365971 -11.000869 7.254355 -1.9331934 -11.03191 7.1780896 -1.9308258 -11.0591 7.0995798 -1.9278661 -11.072373 7.0125413 -1.9225388 -11.112677 6.9428988 -1.9220948 -11.150859 6.8719883 -1.9213549 -11.191969 6.8029246 -1.921207 -11.217383 6.7244639 -1.9183953 -11.243958 6.6469541 -1.9158796 -11.276841 6.5733557 -1.9145478 -11.309245 6.4996042 -1.9132159 -11.341168 6.4257026 -1.9118841 -11.371747 6.3511715 -1.9104042 -11.380177 6.2645864 -1.9052249 -11.409709 6.1899257 -1.9037451 -11.433519 6.1123414 -1.9013773 -11.448057 6.0300903 -1.8975298 -11.46465 5.9492574 -1.8941263 -11.50182 5.8792496 -1.8942742 -11.539444 5.8094544 -1.8945702 -11.544745 5.7236071 -1.8895388 -11.566316 5.6461558 -1.8873191 -11.601633 5.5755081 -1.887467 -11.629367 5.5012569 -1.8864312 -11.648558 5.4231195 -1.8840635 -11.671722 5.3470135 -1.8824357 -11.706115 5.2761092 -1.8827317 -11.732843 5.2017779 -1.8818437 -11.757287 5.1265268 -1.8806598 -11.801248 5.0597439 -1.8827317 -11.833895 4.9880056 -1.8830276 -11.877069 4.9205985 -1.8850993 -11.909786 4.8487482 -1.8855432 -11.96778 4.7869635 -1.8901308 -12.004292 4.7163329 -1.8913146 -12.016396 4.6361804 -1.8886509 -12.050165 4.5644636 -1.8895388 -12.091851 4.4956079 -1.8917586 -12.105271 4.4162459 -1.8895388 -12.134934 4.3428855 -1.8899827 -12.145489 4.2627788 -1.887467 -12.195731 4.1965399 -1.8913146 -12.24468 4.129528 -1.8950142 -12.392808 4.0949559 -1.9143997 -12.324545 3.9886982 -1.8997495 -12.320502 3.9040413 -1.89531 -12.290381 3.8116772 -1.8868752 -12.340984 3.744518 -1.8911666 -12.360883 3.6678808 -1.8907226 -12.391705 3.5944457 -1.8920544 -12.424945 3.5215793 -1.8938303 -12.412958 3.4360435 -1.8886509 -12.465315 3.368325 -1.8935343 -12.502962 3.2963126 -1.896198 -12.543068 3.2247033 -1.8993056 -12.556862 3.1462381 -1.8984177 -12.549027 3.0625684 -1.8942742 -12.573357 2.9868822 -1.8951621 -12.608792 2.9136839 -1.8978258 -12.618713 2.8345296 -1.896642 -12.605913 2.7505162 -1.8920544 -12.643839 2.6776218 -1.89531 -12.672625 2.6025755 -1.8972338 -12.684475 2.5239973 -1.896642 -12.717204 2.4494846 -1.8993056 -12.727133 2.3705022 -1.8985656 -12.755066 2.2948158 -1.9006375 -12.788395 2.2198901 -1.9035971 -12.799825 2.1410542 -1.9033011 -12.809792 2.0620043 -1.9028572 -12.811452 1.981704 -1.9012294 -12.840001 1.9055238 -1.9037451 -12.859284 1.8278158 -1.9049289 -12.880057 1.7502091 -1.9064088 -12.903304 1.6727974 -1.9083325 -12.91627 1.5939559 -1.9087764 -12.930719 1.5152482 -1.9095163 -12.943705 1.4363142 -1.9101083 -12.951291 1.3567631 -1.9099603 -12.958387 1.277173 -1.9098123 -12.974843 1.1984557 -1.9111441 -12.978011 1.1184816 -1.9105523 -12.999417 1.0400108 -1.9127719 -13.019362 0.96124655 -1.9148437 -13.029949 0.88167655 -1.9155836 -13.03314 0.80158848 -1.9152876 -13.0388 0.72165811 -1.9154357 -13.06669 0.64280409 -1.9189873 -13.037782 0.56121564 -1.9141039 -13.061734 0.48197073 -1.9172114 -13.064445 0.40181634 -1.9172114 -13.067655 0.3216711 -1.9173595 -13.074327 0.24157433 -1.9180993 -13.073585 0.161323 -1.9178034 -13.080262 0.081138238 -1.9186913 -13.074579 0.00087786233 -1.9178034 -13.080273 -0.079382807 -1.9186913 -13.06075 -0.15940936 -1.9158796 -13.06447 -0.23963673 -1.9166195 -13.063743 -0.31981862 -1.9167675 -13.079328 -0.40051666 -1.9194312 -13.087496 -0.48116302 -1.921059 -13.097141 -0.56200963 -1.9229827 -13.086533 -0.64202178 -1.9219469 -13.109009 -0.72378159 -1.9259424 -13.107282 -0.80438536 -1.9263864 -13.103086 -0.88486171 -1.9265343 -13.092479 -0.96488017 -1.9257944 -13.099128 -1.0462207 -1.9277182 -13.075711 -1.1251329 -1.9252025 -13.061667 -1.2047063 -1.9241666 -13.063872 -1.2857981 -1.9256464 -13.037048 -1.3639754 -1.9228348 -13.036297 -1.4448158 -1.9240186 -13.017364 -1.5236272 -1.9225388 -13.012677 -1.604077 -1.9232787 -13.006514 -1.6843995 -1.9238707 -12.983193 -1.7624437 -1.9219469 -12.972135 -1.8420739 -1.9219469 -12.933196 -1.9175709 -1.9178034 -12.873295 -1.9894857 -1.9105523 -12.293541 -1.9771446 -1.8245747 -11.941723 -1.9957738 -1.7730769 -11.75483 -2.0387402 -1.7465881 -11.495836 -2.0665338 -1.7091488 -11.303069 -2.1035385 -1.681772 -11.137479 -2.1434929 -1.6585388 -11.005779 -2.1882493 -1.640485 -10.277185 -2.1089416 -1.5312743 -8.9027205 -1.8837343 -1.3230636 -9.0629892 -1.9758447 -1.3494045 -9.0873642 -2.0396519 -1.3550277 -8.9185734 -2.0593071 -1.3310547 -8.4342804 -2.0020094 -1.2585435 -8.3142281 -2.0274668 -1.2419695 -8.292037 -2.0760405 -1.2404896 -7.941021 -2.039969 -1.188252 -7.576427 -1.9958901 -1.1337945 -7.5392141 -2.0356343 -1.1299471 -7.3073549 -2.0211823 -1.0959111 -7.2453365 -2.05196 -1.0882162 -7.1927156 -2.0848081 -1.0820009 -6.7104578 -1.9896605 -1.0087498 -6.7426038 -2.0442917 -1.015705 -6.761106 -2.0952911 -1.0205884 -6.6783547 -2.1146331 -1.0096377 -6.685955 -2.1622696 -1.0128933 -6.6396942 -2.1923945 -1.0077139 -6.5577054 -2.2100251 -0.99691123 -6.5449567 -2.2505426 -0.99705923 -6.5515547 -2.297864 -1.0003148 -6.5326762 -2.3363543 -0.9995749 -6.4866276 -2.3648713 -0.99454349 -6.453455 -2.3977358 -0.99158388 -6.4145741 -2.4281809 -0.98773634 -6.4918256 -2.5030897 -1.0025345 -6.4597754 -2.5363667 -0.99987084 -6.4000139 -2.5583274 -0.99276775 -6.3063354 -2.5658545 -0.98018926 -6.2155495 -2.5734649 -0.96805471 -6.2506785 -2.6330633 -0.97634172 -6.3080325 -2.7029309 -0.98832828 -6.158062 -2.6834843 -0.96657491 -6.119781 -2.7115998 -0.96302336 -6.1210608 -2.757226 -0.96598297 -6.1031284 -2.7943203 -0.96583498 -6.2167726 -2.8926523 -0.98744035 -6.0138426 -2.8432097 -0.95680809 -5.9882612 -2.8762014 -0.95547628 -5.4239063 -2.6460996 -0.86446732 -5.4022517 -2.6766946 -0.86357939 -5.9316549 -2.9846044 -0.95503229 -5.9396491 -3.034447 -0.95947176 -5.9332085 -3.0772116 -0.9615435 -5.9098401 -3.1112547 -0.96080363 -5.9080825 -3.1567829 -0.96376324 -5.8912096 -3.1943893 -0.96420717 -5.8359756 -3.2109244 -0.95813996 -5.8187542 -3.2481194 -0.95858389 -5.8228083 -3.2974112 -0.96272737 -5.8033237 -3.33357 -0.96287537 -5.7989945 -3.3785779 -0.96568704 -5.796885 -3.4251678 -0.96894264 -5.8690696 -3.516603 -0.98522067 -5.7130051 -3.4708774 -0.9616915 -5.7336988 -3.5318081 -0.96909058 -5.7052102 -3.562731 -0.96790677 -5.3264666 -3.3717339 -0.9047184 -5.6910224 -3.6517072 -0.97323412 -5.6179409 -3.6536582 -0.96420717 -5.6251402 -3.7076595 -0.96953458 -5.5619917 -3.7151806 -0.96228343 -5.5046968 -3.7259493 -0.95606816 -5.5004873 -3.7725244 -0.95947176 -5.5292072 -3.8423326 -0.96894264 -5.5378699 -3.8989663 -0.97486192 -5.4856648 -3.9127672 -0.96968251 -5.4014392 -3.9029005 -0.95858389 -5.3470678 -3.9137673 -0.95296055 -5.3674364 -3.9794955 -0.96124756 -5.3642669 -4.0283933 -0.96524304 -5.3378744 -4.0600343 -0.9649471 -5.3825817 -4.1464376 -0.97811753 -5.2673783 -4.1094117 -0.96109957 -5.3134475 -4.1980734 -0.97471392 -5.2821836 -4.2262712 -0.97367805 -5.2699823 -4.2698116 -0.97634172 -5.3094296 -4.3560257 -0.98906815 -5.2787986 -4.3853612 -0.98832828 -5.2003336 -4.3743691 -0.97826546 -5.1613503 -4.3959332 -0.97589779 -5.1125631 -4.4087858 -0.97160631 -5.1271286 -4.4765053 -0.97989327 -5.1758747 -4.5753598 -0.99513543 -5.1852822 -4.6406755 -1.0026826 -5.0445948 -4.570785 -0.98004127 -5.0375862 -4.6210432 -0.98433274 -3.5440502 -3.2908106 -0.68511307 -3.5237916 -3.3124945 -0.68511307 -3.5112789 -3.3415554 -0.68674088 -3.4964058 -3.3685281 -0.68792474 -3.4544361 -3.3691971 -0.68348527 -4.7796545 -4.7199273 -0.96657491 -7.7275505 -7.726243 -1.5965344 -7.6737428 -7.7671804 -1.5952026 -7.6390624 -7.8275685 -1.5980142 -2.6665773 -2.7650459 -0.5362432 -2.6625178 -2.7949653 -0.53905481 -2.641253 -2.8069267 -0.53816694 -2.6226339 -2.8216312 -0.537871 -7.2462535 -7.8957076 -1.5650142 -2.6137125 -2.8821819 -0.54364228 -2.6071925 -2.910692 -0.54615796 -7.0636611 -7.987 -1.5568752 -7.0522523 -8.0733967 -1.5654582 -7.0303588 -8.1487179 -1.5718213 -6.998826 -8.2135344 -1.5761129 -6.9330158 -8.238162 -1.5725613 -6.8728557 -8.2691374 -1.5703416 -6.8257523 -8.3157396 -1.5712295 -6.7689948 -8.3505497 -1.5698977 -6.7058883 -8.3772554 -1.567086 -6.6463885 -8.4081573 -1.5651622 -6.586762 -8.4386444 -1.5632384 -6.5270123 -8.4687176 -1.5613147 -6.4845076 -8.5212002 -1.5636824 -6.4303184 -8.5584555 -1.5632384 -6.3829856 -8.6048994 -1.5645703 -6.3265615 -8.6391153 -1.5636824 -6.2734337 -8.6777716 -1.5636824 -6.2166233 -8.7112703 -1.5627944 -6.153944 -8.7363138 -1.5604268 -6.1041741 -8.7795935 -1.5614626 -6.0300474 -8.7875242 -1.5561353 -5.9760146 -8.824358 -1.5561353 -5.9201083 -8.8583937 -1.5556914 -5.8612881 -8.8879461 -1.5545075 -5.783452 -8.8880959 -1.5481442 -5.7410936 -8.9425583 -1.5515479 -5.6993423 -8.9985056 -1.5552474 -5.6335421 -9.016531 -1.5522878 -5.5843372 -9.0610313 -1.5540636 -5.50809 -9.0613194 -1.5481442 -5.4554377 -9.1000357 -1.5490322 -5.4020143 -9.1375952 -1.549772 -5.3368816 -9.1551886 -1.5471084 -5.2751861 -9.1783304 -1.5454806 -5.2212071 -9.2148285 -1.5462205 -5.1549244 -9.2294216 -1.5432608 -5.0824604 -9.2322855 -1.5383774 -5.024302 -9.2606888 -1.5379335 -4.9701819 -9.2965765 -1.5388213 -4.9268703 -9.3531504 -1.5432608 -4.8771305 -9.3981285 -1.5457766 -4.8162222 -9.4217129 -1.5447407 -4.7569871 -9.4484367 -1.5442967 -1.3538766 -2.7288237 -0.41726562 -1.3388424 -2.7406347 -0.41785756 -4.5775552 -9.5245905 -1.5426689 -4.5093021 -9.5319357 -1.5392654 -4.4494781 -9.556735 -1.5388213 -4.3915792 -9.5856552 -1.5391173 -4.3367429 -9.621438 -1.5405972 -4.2756214 -9.6433458 -1.5398573 -4.2136045 -9.6630526 -1.5388213 -4.1503372 -9.679635 -1.5373416 -4.0885615 -9.6994505 -1.5364537 -4.024807 -9.714304 -1.5348259 -3.9621427 -9.7314882 -1.5336421 -3.9019897 -9.7546988 -1.533494 -3.8431473 -9.7812185 -1.5339381 -3.7809229 -9.7990789 -1.5330501 -3.7165227 -9.8109951 -1.5312743 -3.6531527 -9.8252716 -1.5299425 -3.5958469 -9.8558636 -1.5312743 -1.1435463 -3.192765 -0.46891135 -1.1301557 -3.2174525 -0.47172302 -3.4118934 -9.9147711 -1.5303864 -1.1367183 -3.3679044 -0.49332839 -1.1185135 -3.3823283 -0.49451226 -1.0843434 -3.3477252 -0.48800105 -1.0566139 -3.3316879 -0.48444948 -1.0059856 -3.2408116 -0.46920732 -0.9817754 -3.2327271 -0.46698758 -0.95910877 -3.2292087 -0.46550778 -0.9447853 -3.25403 -0.46846741 -0.94852585 -3.3435009 -0.48148984 -0.93405908 -3.371181 -0.48489341 -0.92315656 -3.41313 -0.49051672 -2.6672239 -10.115949 -1.5268348 -2.6014109 -10.117756 -1.5246152 -2.5414431 -10.142161 -1.525947 -0.79411268 -3.2502816 -0.46210417 -2.1288905 -8.9601717 -1.3394896 -2.3498769 -10.167951 -1.5229874 -1.9880081 -8.8485966 -1.3184762 -1.9427388 -8.9021788 -1.3248394 -2.1596575 -10.196903 -1.5210636 -1.7325222 -8.4341726 -1.2498125 -1.674951 -8.4155445 -1.245373 -1.620852 -8.4130383 -1.2434493 -1.5720961 -8.4383821 -1.2458169 -1.8453281 -10.255432 -1.5206196 -1.7793242 -10.249022 -1.5179559 -1.7162408 -10.258771 -1.517808 -1.3032701 -8.0936117 -1.188104 -1.2529798 -8.0975466 -1.187512 -1.5201551 -10.241666 -1.5107048 -1.2378035 -8.7056847 -1.2771891 -1.3972872 -10.281109 -1.5139604 -1.3357021 -10.301258 -1.5157362 -1.2716223 -10.302389 -1.5147003 -1.207464 -10.302139 -1.5135164 -1.1440104 -10.307388 -1.5132205 -1.080538 -10.312247 -1.5129246 -1.0166615 -10.312778 -1.5120367 -0.95327348 -10.317837 -1.5118886 -0.88858914 -10.307726 -1.509521 -0.82406485 -10.297211 -1.5071533 -0.76188511 -10.315882 -1.509225 -0.70150763 -10.363779 -1.5157362 -0.63753974 -10.361965 -1.5148484 -0.57378423 -10.36272 -1.5144044 -0.51183814 -10.399631 -1.5194358 -0.44827226 -10.408504 -1.5203236 -0.3833434 -10.382397 -1.5160322 -0.31954005 -10.381588 -1.5155882 -0.25585806 -10.384342 -1.5157362 -0.19220884 -10.389672 -1.5163281 -0.1284554 -10.390656 -1.5163281 -0.064672932 -10.387293 -1.5157362 -0.00093652861 -10.385516 -1.5154402 --0.062848717 -10.395216 -1.5169201 --0.12678944 -10.40749 -1.5188438 --0.19050039 -10.398605 -1.51766 --0.25376701 -10.37549 -1.5144044 --0.31660536 -10.347048 -1.5104089 --0.38128966 -10.377524 -1.5152923 --0.44585001 -10.39574 -1.5183998 --0.50958014 -10.39182 -1.5182519 --0.57202291 -10.364799 -1.5147003 --0.63512403 -10.353196 -1.5135164 --0.69863808 -10.349104 -1.5135164 --0.76248974 -10.349554 -1.5142564 --0.82597905 -10.344681 -1.5142564 --0.89113474 -10.359125 -1.517216 --0.95486218 -10.355432 -1.517512 --1.0158631 -10.323788 -1.5136645 --1.0786744 -10.312442 -1.5129246 --1.1428024 -10.313493 -1.5141084 --1.2066386 -10.311198 -1.5148484 --1.2697631 -10.302619 -1.5147003 --1.3320651 -10.287768 -1.5136645 --1.3954308 -10.281361 -1.5139604 --1.4590464 -10.276522 -1.5145524 --1.5230904 -10.274224 -1.5155882 --1.5873122 -10.272504 -1.516772 --1.6539273 -10.285028 -1.5201757 --1.7194507 -10.289319 -1.5223954 --1.7820451 -10.275651 -1.5219514 --1.845587 -10.267444 -1.5223954 --1.9100004 -10.263704 -1.5235792 --1.9714453 -10.244022 -1.5223954 --2.0340714 -10.230762 -1.5222474 --2.0991948 -10.229714 -1.5240232 --2.1637673 -10.225349 -1.525355 --2.2260466 -10.209948 -1.5250591 --2.289952 -10.201887 -1.525947 --2.3525064 -10.187644 -1.525947 --2.415658 -10.175904 -1.5263909 --2.4780507 -10.160891 -1.5263909 --2.5391486 -10.140697 -1.525651 --2.6028001 -10.130673 -1.5265388 --2.6679368 -10.125988 -1.5283147 --2.7336297 -10.122794 -1.5303864 --2.794899 -10.102971 -1.5299425 --2.8579156 -10.089437 -1.5305344 --2.9194939 -10.070762 -1.5303864 --2.9792631 -10.046021 -1.5293505 --3.0408483 -10.027553 -1.5293505 --3.1081769 -10.027597 -1.5323102 --3.1705427 -10.011166 -1.5327542 --3.2319105 -9.9915228 -1.5327542 --3.2999818 -9.9921637 -1.5360098 --3.3552265 -9.9539213 -1.5331981 --3.4207439 -9.9462395 -1.5352699 --3.4876032 -9.9418612 -1.5379335 --3.5468736 -9.9156179 -1.5371935 --3.6069701 -9.8918104 -1.5368977 --3.6682866 -9.8713465 -1.5371935 --3.7298377 -9.8514271 -1.5376376 --3.7866552 -9.819128 -1.5361577 --3.8471944 -9.796629 -1.5363057 --3.9178834 -9.799469 -1.5405972 --1.500919 -3.6902266 -0.55755258 --1.5205055 -3.6736379 -0.55636871 --4.0926027 -9.7138453 -1.5386734 --4.1478419 -9.6785526 -1.5370456 --4.2067552 -9.6520128 -1.5368977 --4.269908 -9.6350603 -1.5383774 --3.9977803 -8.873827 -1.4177721 --4.0356793 -8.8131638 -1.4118528 --4.0909319 -8.790925 -1.4122968 --1.5255554 -3.228054 -0.4956961 --1.5457619 -3.2195241 -0.4958441 --1.6570207 -3.3975093 -0.52706832 --1.6734437 -3.3784173 -0.52558845 --1.6972545 -3.3742692 -0.52662432 --1.7201772 -3.3681948 -0.52736425 --1.7430891 -3.3619659 -0.52810419 --1.76645 -3.3564575 -0.52899206 --4.5703793 -8.552597 -1.4124447 --4.623714 -8.5261307 -1.4127407 --4.690249 -8.523592 -1.4171802 --4.7487292 -8.5058784 -1.419104 --4.813993 -8.499814 -1.4230994 --4.8389544 -8.4229536 -1.4149604 --5.4069853 -9.2791681 -1.5684178 --4.8226833 -8.1611614 -1.3798887 --4.8686008 -8.12463 -1.3787049 --1.949941 -3.2105508 -0.52351671 --1.9794617 -3.2145233 -0.52632838 --5.6896014 -9.1097822 -1.5685657 --5.7406287 -9.0671797 -1.5672339 --5.8089776 -9.0517607 -1.5707855 --5.864409 -9.0159464 -1.5707855 --5.9130864 -8.9698858 -1.5690098 --5.974607 -8.9433022 -1.5707855 --6.0343599 -8.9138451 -1.5721173 --6.1006908 -8.8937759 -1.575225 --6.1528893 -8.8529272 -1.574633 --6.2162056 -8.8279448 -1.5770007 --6.2748513 -8.7960768 -1.5781846 --6.3269668 -8.7550049 -1.5777407 --6.3846574 -8.7216043 -1.5787766 --6.4409976 -8.6862364 -1.5795164 --6.5007086 -8.6552496 -1.5811442 --6.5638742 -8.6285791 -1.58366 --6.622128 -8.595192 -1.5849918 --6.6735253 -8.5528383 -1.5846958 --6.7344642 -8.5225916 -1.5867676 --6.7952833 -8.4919195 -1.5888393 --6.862206 -8.468504 -1.5923909 --6.9240775 -8.4384708 -1.5947586 --6.9788852 -8.3996296 -1.5954986 --7.0156474 -8.3392448 -1.5920949 --7.080153 -8.3118496 -1.5952026 --7.1465244 -8.2862234 -1.5987542 --7.2069921 -8.2533903 -1.6009738 --7.2653599 -8.2179041 -1.6027496 --7.3004746 -8.1562223 -1.599346 --7.3596816 -8.1215334 -1.6014178 --7.4187369 -8.0864239 -1.6034895 --7.474946 -8.0479965 -1.6049694 --7.5499339 -8.029356 -1.6105927 --7.5963311 -7.9800143 -1.6100007 --7.6430936 -7.9311175 -1.6095568 --7.7095723 -7.9024749 -1.6134044 --7.7891922 -7.8866825 -1.6200635 --7.8668098 -7.8681111 -1.6262788 --7.9050889 -7.8099632 -1.624207 --7.9401193 -7.7488794 -1.6215434 --7.9989095 -7.7109947 -1.623911 --8.0510864 -7.666543 -1.624947 --8.1066217 -7.6251283 -1.6267227 --8.1634007 -7.5846667 -1.6287944 --8.2199879 -7.5437951 -1.6308662 --8.2631893 -7.4905596 -1.6302743 --8.3119431 -7.4423552 -1.6308662 --8.3633785 -7.3964548 -1.63205 --8.4197788 -7.3547573 -1.6342698 --8.4707394 -7.3081236 -1.6354537 --8.5274668 -7.2662725 -1.6378213 --8.5749187 -7.2163591 -1.6384133 --8.6205568 -7.1648726 -1.6387093 --8.6612997 -7.1093335 -1.6381173 --8.7162838 -7.0653949 -1.6403371 --8.7749157 -7.0241394 -1.6432967 --8.8217287 -6.9732313 -1.6440367 --8.8705873 -6.9238381 -1.6452205 --8.9340563 -6.8855777 -1.6492159 --8.980072 -6.8336239 -1.6499559 --9.0242062 -6.7801762 -1.6503998 --9.0791426 -6.7346921 -1.6529156 --9.1258812 -6.6829467 -1.6539514 --9.170723 -6.6297221 -1.6546913 --9.2176704 -6.5779219 -1.6558752 --9.2659435 -6.5269341 -1.657355 --9.3318043 -6.4880199 -1.6620904 --9.3910112 -6.4440665 -1.665642 --9.441021 -6.3935313 -1.6675657 --9.4932299 -6.3442726 -1.6699334 --9.521245 -6.2788272 -1.6680098 --9.5662241 -6.2246017 -1.6691935 --9.6075668 -6.1679244 -1.6697855 --9.6477385 -6.1104445 -1.6702294 --9.6858883 -6.0516562 -1.6703774 --9.7405205 -6.0030055 -1.673485 --9.7839317 -5.9472346 -1.6746689 --6.6060452 -3.9606712 -1.113965 --9.8459597 -5.8206844 -1.6728932 --9.9045601 -5.7736068 -1.6768886 --9.9475174 -5.7171593 -1.6782205 --9.9867125 -5.658452 -1.6789603 --10.030743 -5.6023717 -1.6805881 --10.096121 -5.5578856 -1.6859156 --10.144813 -5.5038486 -1.6884313 --10.180137 -5.44243 -1.6887271 --10.222965 -5.3849325 -1.6903549 --7.5414195 -3.9138556 -1.2327945 --10.326145 -5.2784276 -1.6967182 --6.9378152 -3.493315 -1.1237319 --6.9298773 -3.4361856 -1.1188484 --6.9454985 -3.3909974 -1.1179606 --6.9670658 -3.3487451 -1.1181085 --7.0071511 -3.3152351 -1.1213641 --7.0470867 -3.281359 -1.1246197 --6.587832 -3.0185544 -1.0457453 --6.6269679 -2.9874203 -1.0491489 --10.604461 -4.7016292 -1.6971622 --10.669374 -4.6522813 -1.7030815 --10.71408 -4.5937409 -1.7057451 --10.730217 -4.5229216 -1.7038213 --10.723046 -4.442616 -1.6981981 --10.702471 -4.3573494 -1.690503 --10.648195 -4.259284 -1.6774806 --7.5194831 -2.9547758 -1.1703461 --7.5347037 -2.9075136 -1.1699022 --10.671147 -4.0422497 -1.6688976 --10.683698 -3.9722173 -1.6669738 --10.687429 -3.8991337 -1.6637182 --10.704635 -3.8311512 -1.6626823 --10.716742 -3.7614675 -1.6609066 --10.725592 -3.6908143 -1.6586869 --10.735853 -3.6208262 -1.6567631 --10.732513 -3.5465086 -1.6527675 --10.738075 -3.4754128 -1.6502519 --10.77334 -3.4139397 -1.6524715 --10.801642 -3.3501146 -1.6536554 --10.808745 -3.2797549 -1.6515837 --10.85711 -3.2218096 -1.6560231 --10.896622 -3.1609151 -1.6591308 --10.967195 -3.1085534 -1.6671218 --11.010844 -3.0480592 -1.6709694 --11.053208 -2.9868879 -1.6746689 --11.097149 -2.9258156 -1.6786644 --11.143628 -2.8650546 -1.6831039 --11.258853 -2.8211339 -1.6981981 --11.309579 -2.7602015 -1.7033774 --11.355169 -2.6976099 -1.7078168 --11.398489 -2.6341176 -1.7119603 --11.483914 -2.5797281 -1.7226151 --11.547841 -2.5197527 -1.7300142 --11.598885 -2.4564271 -1.7354895 --11.686398 -2.4001267 -1.7465881 --11.750374 -2.3382142 -1.7541353 --11.798491 -2.272615 -1.7593147 --11.836519 -2.2047031 -1.7630142 --11.797262 -2.1225822 -1.7550231 --11.684362 -2.028347 -1.7359334 --11.913138 -1.9928179 -1.7687855 --12.162416 -1.9578551 -1.8047451 --12.511395 -1.9353184 -1.8557988 --13.039572 -1.9351228 -1.9339334 --13.118762 -1.8646742 -1.9441441 --13.127017 -1.7837447 -1.9437002 --13.168118 -1.7071041 -1.9482876 --13.235276 -1.6332943 -1.9568707 --13.245049 -1.5520535 -1.9568707 --13.252357 -1.4705362 -1.9565747 --13.257195 -1.3887818 -1.9559827 --13.24972 -1.3058603 -1.9536151 --13.240741 -1.2229921 -1.9510993 --13.24307 -1.1413013 -1.9503595 --13.251795 -1.0601795 -1.9506553 --13.261995 -0.97913891 -1.9512473 --13.26282 -0.89741302 -1.9505074 --13.266103 -0.81589574 -1.9502114 --13.271847 -0.73453563 -1.9503595 --13.284006 -0.65347534 -1.9515432 --13.279861 -0.57161438 -1.9503595 --13.28213 -0.49008355 -1.9502114 --13.287852 -0.40866765 -1.9506553 --13.277257 -0.32681197 -1.9487317 --13.352185 -0.24668361 -1.9596822 --13.27829 -0.16383077 -1.9484357 --13.305747 -0.082516901 -1.9524312 --13.351497 -0.0008718209 -1.9592383 --13.254332 0.080454633 -1.9447361 --13.287211 0.16219354 -1.9497675 --13.295855 0.24390154 -1.9512473 --13.259503 0.32462853 -1.9460679 --13.154455 0.40282393 -1.9306778 --13.238708 0.48673582 -1.9437002 --13.312543 0.57127184 -1.9552429 --13.287055 0.65187722 -1.9519873 --13.233431 0.73066235 -1.9445881 --13.222775 0.81148338 -1.9437002 --13.246163 0.8945365 -1.9479917 --12.254591 -0.30979642 -1.9401276 --12.269093 -0.23484385 -1.9421993 --12.267341 -0.15951909 -1.9417213 --12.275987 -0.084299594 -1.9429961 --12.24172 -0.0089475885 -1.9374185 --12.31361 0.066553526 -1.949052 --12.257689 0.14147095 -1.9401276 --12.267448 0.21687165 -1.9418806 --12.265886 0.29213923 -1.9418806 --12.252022 0.36704144 -1.9399682 --12.253486 0.44235384 -1.9406058 --12.247581 0.51740658 -1.9401276 --12.207692 0.59078217 -1.9342312 --12.179193 0.66433257 -1.9302471 --12.258647 0.74413192 -1.9437931 --12.160274 0.81308168 -1.9286534 --12.227916 0.89299899 -1.9404464 --12.158237 0.96294695 -1.9300877 --12.174724 1.0394613 -1.933753 --12.172049 1.1145043 -1.9343905 --12.164981 1.1891696 -1.9343905 --12.153528 1.263382 -1.933753 --12.143584 1.3377147 -1.9334344 --12.092982 1.4072956 -1.9265816 --12.063541 1.4789481 -1.9232351 --12.086552 1.5571024 -1.9284941 --12.112968 1.6361229 -1.9343905 --12.079241 1.7071012 -1.9305657 --12.065609 1.7807536 -1.9300877 --12.068115 1.8568546 -1.9323188 --12.045773 1.9291513 -1.9305657 --12.001572 1.9976784 -1.9253068 --12.002708 2.0736334 -1.9275378 --12.005306 2.1500258 -1.9300877 --11.997712 2.2247281 -1.9310439 --11.914997 2.2851031 -1.919729 --11.967571 2.3714073 -1.9307251 --11.963434 2.4469702 -1.9324782 --11.887339 2.5074954 -1.9224381 --11.863048 2.5785007 -1.9210039 --11.855673 2.6531827 -1.9224381 --11.814157 2.7201195 -1.9182947 --11.839514 2.802563 -1.9253068 --11.806746 2.8714237 -1.9227569 --11.811893 2.949554 -1.9265816 --11.76584 3.0148695 -1.9219601 --11.721339 3.0802329 -1.9176573 --11.669807 3.1433666 -1.9122388 --11.662672 3.2183256 -1.9143106 --11.611355 3.2809682 -1.9090515 --11.58816 3.3513298 -1.9085735 --11.615658 3.4366527 -1.9167011 --11.606636 3.5115764 -1.9187728 --11.573553 3.5792277 -1.9168605 --11.522192 3.640954 -1.9119202 --11.490239 3.7085524 -1.9103265 --11.536653 3.8018482 -1.9221195 --11.439186 3.8477025 -1.9095297 --11.466719 3.9354436 -1.9182947 --11.486149 4.0210576 -1.9257848 --11.38223 4.0632505 -1.9122388 --11.385843 4.1434789 -1.9171792 --11.272271 4.1806536 -1.9020395 --11.290734 4.2664886 -1.9096891 --11.252366 4.3310776 -1.9076173 --11.210873 4.3942752 -1.9050674 --11.176364 4.4600544 -1.9037926 --11.192691 4.5463786 -1.911442 --11.13995 4.6047888 -1.9071392 --11.119676 4.6764994 -1.9085735 --11.096218 4.7469702 -1.9095297 --11.055114 4.8098459 -1.9074579 --10.994697 4.8640099 -1.9020395 --10.963745 4.9309754 -1.9018801 --10.949444 5.0055428 -1.9047488 --10.913153 5.0701375 -1.9037926 --10.87291 5.1327896 -1.9021989 --10.857233 5.2070918 -1.9050674 --10.796679 5.259778 -1.8999678 --10.800481 5.3438745 -1.9065018 --10.775427 5.4140334 -1.9079361 --10.74816 5.4831882 -1.9090515 --10.714314 5.5490346 -1.9090515 --10.66783 5.6082411 -1.9068205 --10.64367 5.6791682 -1.9087329 --10.618173 5.7495403 -1.9104859 --10.609516 5.82932 -1.9154261 --10.576998 5.8962317 -1.9160637 --10.536324 5.9585905 -1.9152668 --10.51669 6.0329518 -1.9184541 --10.460702 6.0864458 -1.9149481 --10.421459 6.1495132 -1.9146293 --10.418263 6.2341247 -1.9211633 --10.400916 6.3107347 -1.9251474 --10.360317 6.3734002 -1.9248286 --10.331067 6.4431186 -1.926741 --10.300518 6.5121903 -1.9284941 --10.313563 6.6093588 -1.9386934 --10.277782 6.6757436 -1.9396496 --10.230855 6.7348819 -1.938534 --10.182768 6.7931476 -1.9372591 --10.184242 6.8848023 -1.9457054 --10.152394 6.9544144 -1.9477772 --10.051137 6.9760509 -1.9363029 --10.094553 7.0983505 -1.9533548 --10.0492 7.1590104 -1.9530362 --10.015491 7.2280464 -1.9551079 --9.987689 7.3015985 -1.9584545 --9.9403191 7.3609819 -1.9579765 --9.8799601 7.4105816 -1.9549485 --9.8437366 7.4782305 -1.9568609 --9.7968836 7.5378881 -1.9567015 --9.7473326 7.5954313 -1.9560641 --9.6834946 7.641643 -1.952558 --9.6811552 7.7366605 -1.9618012 --9.6419439 7.8027487 -1.9635541 --9.6259575 7.8880429 -1.9702475 --9.5887718 7.9564137 -1.9726379 --9.5813446 8.0500259 -1.981403 --9.522747 8.1009884 -1.9794906 --9.478097 8.1637764 -1.9806062 --9.4211302 8.2159395 -1.9791719 --9.3801613 8.2820864 -1.9812436 --9.3402081 8.3493547 -1.9836341 --9.3019772 8.4184313 -1.9865026 --9.2829037 8.5053587 -1.993674 --9.2218552 8.5541019 -1.9917617 --9.1432867 8.5861969 -1.9860245 --9.1283522 8.6781874 -1.9944708 --9.0813341 8.7401953 -1.9959052 --9.0225849 8.7909298 -1.9947896 --8.980423 8.8579111 -1.9974988 --8.9189167 8.9058723 -1.9959052 --8.8738241 8.9702549 -1.9981363 --8.8469067 9.053483 -2.0046701 --8.8035297 9.1203814 -2.0075388 --8.7474031 9.1742277 -2.0075388 --8.6814699 9.2176666 -2.0053077 --8.6334896 9.280158 -2.0073793 --8.6271544 9.3882008 -2.019491 --8.5229387 9.3897915 -2.0083356 --8.4724131 9.449996 -2.0100884 --8.4371777 9.5276709 -2.0156662 --8.3954573 9.5985804 -2.0198097 --8.3441486 9.6588774 -2.0217221 --8.2763948 9.7001324 -2.0196505 --8.219265 9.7537518 -2.020288 --8.177577 9.8260059 -2.0249095 --8.1190128 9.8782854 -2.0253875 --8.0756683 9.949378 -2.0298498 --8.0113811 9.9948912 -2.029053 --7.9480648 10.041537 -2.0285747 --7.8832617 10.086227 -2.0277779 --7.8338919 10.150821 -2.0311246 --7.7876163 10.219898 -2.0354276 --7.7271357 10.270645 -2.0360649 --7.6645594 10.318657 -2.0362244 --7.5923438 10.35355 -2.0338337 --7.5402513 10.415935 -2.0370212 --7.4871044 10.477265 -2.0400491 --7.432919 10.537529 -2.0429175 --7.3726349 10.589419 -2.0441926 --7.3097572 10.637712 -2.0448301 --7.2526598 10.694619 -2.0472205 --7.1836076 10.733996 -2.0462642 --7.1214185 10.783639 -2.0473797 --7.0745206 10.856908 -2.053117 --7.0152454 10.911737 -2.0553479 --6.9534483 10.962914 -2.0569417 --6.8918104 11.014578 -2.0586946 --6.8147631 11.041536 -2.0558262 --6.760746 11.105911 -2.0601289 --6.6939983 11.149724 -2.060607 --6.6098671 11.164254 -2.0556667 --6.5636387 11.242966 -2.0628381 --6.4891119 11.273617 -2.0610852 --6.432972 11.336403 -2.065388 --6.3719678 11.39117 -2.0682566 --6.2924194 11.412763 -2.0650692 --6.2142601 11.436411 -2.06236 --6.1542234 11.493472 -2.065866 --6.0817423 11.527525 -2.0652287 --6.0200028 11.582144 -2.0684159 --5.9515224 11.624136 -2.0693722 --5.8907547 11.681591 -2.0731969 --5.8233581 11.726357 -2.0747905 --5.7525983 11.764529 -2.0752685 --5.6897254 11.819174 -2.0787747 --5.6310487 11.883303 -2.0840335 --5.5655394 11.933735 -2.0869021 --5.4864454 11.955098 -2.084671 --5.4109554 11.984038 -2.0838742 --5.340126 12.02333 -2.0849898 --5.2686234 12.061297 -2.0859461 --5.2077656 12.124239 -2.0913644 --5.1317382 12.152327 -2.0907269 --5.0449648 12.154408 -2.0856273 --4.9844613 12.219871 -2.0916831 --4.912693 12.258472 -2.0931175 --4.8417239 12.299408 -2.0950298 --4.764029 12.32336 -2.0940735 --4.6879745 12.351437 -2.0939143 --4.6186476 12.397546 -2.0969422 --4.5496097 12.445123 -2.1002889 --4.4781618 12.486744 -2.1026793 --4.404736 12.523298 -2.1042728 --4.3265243 12.546357 -2.1036353 --4.243453 12.554898 -2.1006074 --4.1682 12.586322 -2.1015637 --4.0930257 12.618234 -2.1026793 --4.0134325 12.636525 -2.1015637 --3.9331832 12.652429 -2.1001294 --3.862083 12.698047 -2.1037948 --3.7686143 12.669462 -2.0950298 --3.675091 12.638314 -2.0859461 --3.6444306 12.825861 -2.1136754 --3.5767534 12.887934 -2.1203687 --3.4996727 12.91726 -2.1216435 --3.4231236 12.94899 -2.1233966 --3.3335001 12.930555 -2.1168625 --3.2553 12.955553 -2.1176596 --3.1729283 12.963777 -2.115747 --3.085315 12.949389 -2.1101694 --3.0100369 12.98635 -2.1131973 --2.9190116 12.954495 -2.1049104 --2.8487587 13.014595 -2.1119223 --2.767823 13.027001 -2.1111255 --2.6856468 13.033103 -2.1093726 --2.6027265 13.034815 -2.106982 --2.5120161 12.995291 -2.0978982 --2.4311426 13.004638 -2.0969422 --2.3458619 12.989193 -2.0920019 --2.2671347 13.009178 -2.092958 --2.1805634 12.982927 -2.0864241 --2.1022789 13.004834 -2.0878584 --2.0203209 13.003831 -2.0856273 --1.9400561 13.013054 -2.085149 --1.8564036 12.998325 -2.0808463 --1.7758107 13.003603 -2.07989 --1.6956059 13.011317 -2.079412 --1.6141573 13.00874 -2.0773404 --1.5339601 13.015458 -2.0768621 --1.4522073 13.007946 -2.0741529 --1.3711222 13.00483 -2.0722406 --1.2873021 12.972721 -2.0657067 --1.2088681 12.993155 -2.0677783 --1.1310008 13.021964 -2.0712845 --1.0505223 13.02177 -2.070169 --0.96928167 13.010251 -2.0673003 --0.88835669 13.000195 -2.0647504 --0.80863357 13.006386 -2.0649099 --0.72881263 13.011103 -2.0649099 --0.64911187 13.018288 -2.065388 --0.56926411 13.023012 -2.0655472 --0.48953113 13.031192 -2.0663443 --0.40919161 13.02211 -2.0644319 --0.32898197 13.012532 -2.0625193 --0.24890527 13.002461 -2.060607 --0.16892594 12.988937 -2.0582166 --0.089183278 12.983806 -2.0572603 --0.0095272791 13.000892 -2.0599697 -0.070361555 13.022424 -2.0634756 -0.15023023 13.018785 -2.0629976 -0.23000467 13.011696 -2.0620413 -0.30974472 13.006092 -2.0614038 -0.38951322 13.00296 -2.0612445 -0.46953964 13.007232 -2.06236 -0.54950821 13.008051 -2.0629976 -0.62945682 13.007392 -2.0634756 -0.70904189 12.999342 -2.0628381 -0.78908992 12.999674 -2.0636349 -0.86818129 12.984737 -2.0620413 -0.94977838 13.00575 -2.0663443 -1.0301076 13.006566 -2.0674598 -1.1098111 12.999018 -2.0673003 -1.1852314 12.944774 -2.0596509 -1.2693415 12.985402 -2.0674598 -1.3498108 12.985225 -2.0687346 -1.4321629 13.00123 -2.0727186 -1.5128226 13.000042 -2.0739937 -1.5911198 12.978757 -2.0720813 -1.6707259 12.968749 -2.0720813 -1.7541006 12.986626 -2.0767028 -1.8365142 12.995169 -2.07989 -1.9186664 13.000258 -2.0825994 -1.9992989 12.994095 -2.0835555 -2.0808647 12.99328 -2.0854678 -2.1633058 12.996823 -2.088177 -2.2470448 13.006652 -2.0920019 -2.3269839 12.993591 -2.0921612 -2.4034281 12.961596 -2.0892925 -2.4940684 13.004779 -2.0988545 -2.5718987 12.979547 -2.097261 -2.6584141 12.997374 -2.1028385 -2.7403555 12.991443 -2.1045916 -2.8168731 12.959913 -2.1022012 -2.8980651 12.950092 -2.103476 -2.98035 12.944573 -2.1055477 -3.0554001 12.907789 -2.1025198 -3.1478393 12.943478 -2.1116037 -3.2114162 12.860703 -2.1010857 -3.2853673 12.82163 -2.0978982 -3.3609669 12.789771 -2.0959859 -3.4293675 12.731731 -2.0897708 -3.5239658 12.770404 -2.0998106 -3.5781002 12.663038 -2.0854678 -3.6784933 12.71956 -2.098695 -3.7497487 12.674029 -2.0948703 -3.8254435 12.644168 -2.0937548 -3.8860393 12.565755 -2.0845118 -3.9514685 12.504961 -2.0782964 -4.0211496 12.458871 -2.0746312 -4.1154394 12.488346 -2.0838742 -4.187583 12.449759 -2.0816431 -4.276392 12.460247 -2.0878584 -4.3498306 12.425386 -2.0864241 -4.4332905 12.418918 -2.0899301 -4.5036693 12.37571 -2.0872209 -4.5788341 12.345992 -2.0869021 -4.6496162 12.304736 -2.084671 -4.7221923 12.268604 -2.0833962 -4.7966619 12.23756 -2.0830774 -4.8617811 12.183141 -2.0787747 -4.8985519 12.059785 -2.0625193 -4.9758511 12.037712 -2.0639536 -5.0637789 12.040626 -2.0698502 -5.118927 11.96576 -2.0622008 -5.2174559 11.992064 -2.0724001 -5.2949333 11.968852 -2.0739937 -5.36058 11.91903 -2.0709658 -5.4327917 11.884119 -2.070647 -5.4993706 11.83713 -2.0682566 -5.5668411 11.792451 -2.0663443 -5.6254334 11.729586 -2.0612445 -5.696002 11.692185 -2.0607665 -5.761508 11.644628 -2.0585353 -5.8186674 11.580828 -2.0534356 -5.8855791 11.536992 -2.0520015 -5.9853129 11.556767 -2.0622008 -6.1199613 11.641288 -2.0843523 -6.1675758 11.559096 -2.0762248 -6.2256937 11.497596 -2.0719218 -6.2842402 11.437548 -2.0679379 -6.3413239 11.375491 -2.0636349 -6.3517179 11.231528 -2.0441926 -6.4632487 11.266845 -2.0580573 -6.482614 11.141644 -2.0421207 -6.5904884 11.168827 -2.0547106 -6.6198649 11.062947 -2.0424395 -6.6860847 11.019588 -2.0419614 -6.7349534 10.948085 -2.0362244 -6.8249879 10.943412 -2.0432363 -6.876709 10.87713 -2.0386147 -6.9369287 10.824756 -2.0367024 -6.9843969 10.75301 -2.0311246 -7.0377607 10.690986 -2.0274594 -7.0900784 10.627892 -2.0236344 -7.1496277 10.576009 -2.0220408 -7.2088075 10.523796 -2.0204473 -7.2625504 10.463956 -2.0174193 -7.3198051 10.409506 -2.015507 -7.3978581 10.384498 -2.019491 -7.4568157 10.332505 -2.0182161 -7.5148306 10.279384 -2.0167818 -7.5853996 10.243395 -2.0188537 -7.6463323 10.194289 -2.0183754 -7.691421 10.124383 -2.0137539 -7.7425628 10.062915 -2.0108855 -7.7974873 10.006652 -2.0091324 -7.8489556 9.9462185 -2.0065825 -7.8956623 9.8801327 -2.0029171 -7.9573789 9.8330345 -2.0032358 -8.0063009 9.7702789 -2.0003674 -8.0629473 9.7171707 -1.9995705 -8.116704 9.6607113 -1.9981363 -8.1745491 9.6092224 -1.9978175 -8.2243366 9.5484114 -1.9955864 -8.2691441 9.4821434 -1.9922397 -8.3173695 9.420125 -1.9898493 -8.369092 9.3622885 -1.988415 -8.4323425 9.3173485 -1.9898493 -8.4840183 9.2596102 -1.9885744 -8.5353041 9.2015886 -1.9872994 -8.5861969 9.1432867 -1.9860245 -8.6468983 9.095439 -1.9871401 -8.6915913 9.0308304 -1.9845903 -8.7303057 8.9603586 -1.9807656 -8.780962 8.9024048 -1.9798093 -8.8172846 8.8301945 -1.9756659 -8.8516493 8.7564859 -1.9712037 -8.8734388 8.6709585 -1.9640323 -8.915822 8.6060648 -1.9616418 -8.9548845 8.5382519 -1.9586139 -9.0142927 8.4899139 -1.9602076 -9.062602 8.4310808 -1.9594107 -9.0988989 8.3612871 -1.9560641 -9.1273708 8.28473 -1.9511237 -9.1655378 8.2173662 -1.9484146 -9.2187424 8.1635904 -1.949052 -9.2619724 8.1010227 -1.9476178 -9.2965641 8.0311317 -1.9444305 -9.3366556 7.966248 -1.9425181 -9.3815851 7.9056287 -1.9417213 -9.4177752 7.837811 -1.9391714 -9.4664526 7.7805037 -1.9393308 -9.4971523 7.7085843 -1.9358248 -9.5419617 7.6483135 -1.9353467 -9.5569744 7.5644994 -1.9288127 -9.5993204 7.5026765 -1.9280159 -9.6334524 7.4345875 -1.9256254 -9.6616144 7.3621736 -1.9221195 -9.6900396 7.290288 -1.9187728 -9.7337971 7.2301049 -1.9186134 -9.7811613 7.1725788 -1.919251 -9.8121929 7.1031651 -1.9167011 -9.8676405 7.051435 -1.9190916 -9.909915 6.9901862 -1.9189322 -9.9437075 6.9230437 -1.9171792 -9.9713535 6.8518357 -1.9143106 -10.022196 6.7966189 -1.9160637 -10.022689 6.707541 -1.9080954 -10.062833 6.6453724 -1.9079361 -10.087704 6.5732622 -1.9049081 -10.13283 6.5144448 -1.9058644 -10.177612 6.4553213 -1.9068205 -10.215356 6.3917036 -1.9065018 -10.23254 6.3154216 -1.9023583 -10.271942 6.2530303 -1.9025177 -10.321119 6.1964912 -1.9045894 -10.337708 6.120471 -1.9006053 -10.358871 6.0474677 -1.8975774 -10.353858 5.9596601 -1.8897685 -10.362756 5.8804255 -1.8846688 -10.40295 5.81914 -1.8854656 -10.416847 5.7432818 -1.8814815 -10.456228 5.6816144 -1.8822784 -10.494374 5.6192131 -1.8829159 -10.522544 5.5514903 -1.8818003 -10.577432 5.4977484 -1.885625 -10.583726 5.4187951 -1.8806847 -10.60708 5.3488626 -1.8789318 -10.617595 5.2726998 -1.8749477 -10.620481 5.1931405 -1.8696886 -10.630798 5.117599 -1.8658639 -10.720879 5.0801764 -1.8763819 -10.755426 5.0159678 -1.8770194 -10.798563 4.9556446 -1.8792505 -10.797276 4.8750725 -1.8736727 -10.825181 4.8079286 -1.873354 -10.82372 4.7279787 -1.8679357 -10.925092 4.6926489 -1.8806847 -10.960046 4.6282139 -1.8818003 -11.008297 4.5692039 -1.8853064 -11.048923 4.5067925 -1.8875374 -11.028718 4.4198146 -1.8792505 -11.108908 4.3730359 -1.8884935 -11.121719 4.2994504 -1.8861032 -11.118356 4.2199173 -1.8810035 -11.155141 4.1557527 -1.8829159 -11.151687 4.0767193 -1.8779756 -11.223884 4.0252151 -1.8861032 -11.299591 3.974288 -1.8948681 -11.326564 3.9058459 -1.8953463 -11.283915 3.8138285 -1.8840314 -11.323973 3.7501068 -1.8868999 -11.312025 3.6692822 -1.8810035 -11.352203 3.6054823 -1.8840314 -11.389195 3.540448 -1.8865812 -11.357814 3.4544098 -1.8776568 -11.445032 3.4043593 -1.8888123 -11.481821 3.3387566 -1.8915216 -11.457458 3.255559 -1.8840314 -11.505756 3.1931169 -1.8888123 -11.492735 3.1136804 -1.8833939 -11.524986 3.0466366 -1.885625 -11.603688 2.9913912 -1.895665 -11.595973 2.9136395 -1.8913622 -11.613633 2.8424332 -1.8913622 -11.683673 2.7837059 -1.9001272 -11.673606 2.7057214 -1.895665 -11.689988 2.6340425 -1.895665 -11.722324 2.5658536 -1.8983742 -11.76199 2.4990087 -1.9023583 -11.757764 2.4228058 -1.899171 -11.771441 2.3504226 -1.8990116 -11.763347 2.2738402 -1.8953463 -11.770285 2.2003489 -1.8942307 -11.795222 2.130192 -1.8961431 -11.864479 2.06761 -1.9053862 -11.829237 1.986758 -1.8975774 -11.809045 1.9089379 -1.8923184 -11.857605 1.8422035 -1.8983742 -11.893095 1.7730519 -1.9023583 -11.884205 1.6972517 -1.899171 -11.911024 1.6265709 -1.9018801 -11.943295 1.5563906 -1.9055456 -11.9536 1.4832002 -1.905705 -11.941887 1.4073992 -1.9023583 -11.971882 1.336509 -1.9058644 -11.972985 1.262301 -1.9047488 -11.955945 1.1863745 -1.9007647 -11.971847 1.1138152 -1.9021989 -11.96862 1.0394819 -1.9006053 -11.960997 0.96491241 -1.8983742 -12.028715 0.89612567 -1.9084141 -12.008379 0.82055128 -1.9042706 -12.066395 0.75016344 -1.9128764 -11.991917 0.67169189 -1.9001272 -12.040182 0.60031193 -1.9072986 -12.021941 0.52547437 -1.9037926 -12.039737 0.45225558 -1.906183 -12.054126 0.37874505 -1.9080954 -12.061157 0.30490011 -1.9088923 -12.052931 0.23069924 -1.9072986 -12.061029 0.15682958 -1.9084141 -12.056828 0.082787491 -1.9076173 -12.041314 0.0087945629 -1.9050674 -12.053975 -0.065158665 -1.9071392 -12.064207 -0.13924421 -1.9088923 -12.033514 -0.21274364 -1.9041113 -12.030994 -0.2865524 -1.9039519 -12.048745 -0.3609584 -1.9071392 -12.046304 -0.43488133 -1.9071392 -12.061163 -0.50953734 -1.9100078 -12.066684 -0.5839628 -1.911442 -12.049073 -0.65723926 -1.9092109 -12.055654 -0.73181629 -1.910964 -12.050936 -0.80577457 -1.910964 -12.030996 -0.8786245 -1.9085735 -12.048998 -0.95429868 -1.9123982 -12.042915 -1.028212 -1.9123982 -12.062923 -1.1045161 -1.9167011 -12.00188 -1.1732312 -1.9079361 -12.025877 -1.2501166 -1.9130358 -11.996391 -1.3215051 -1.9095297 -12.003747 -1.396914 -1.9120796 -12.008668 -1.4722227 -1.9143106 -11.992555 -1.544996 -1.913195 -11.989697 -1.6194767 -1.9143106 -11.987354 -1.6941185 -1.9155855 -11.978687 -1.7679278 -1.9159043 -11.922729 -1.8344898 -1.9085735 -11.883955 -1.9032414 -1.9041113 -11.815571 -1.9667246 -1.8948681 -11.522138 -1.9906247 -1.8488119 -11.04909 -1.9788096 -1.7732732 -10.903757 -2.0219138 -1.7514403 -10.634213 -2.0395133 -1.7092087 -10.467524 -2.0742199 -1.6838698 -10.441059 -2.1356392 -1.6816387 -10.234564 -2.1589189 -1.6497658 -9.7599974 -2.1214635 -1.5735897 -9.5155811 -2.1295741 -1.5353423 -8.7894506 -2.0238092 -1.4172534 -8.5530291 -2.0247245 -1.3801215 -8.3888807 -2.0403113 -1.354942 -8.0476723 -2.0097198 -1.30028 -7.9978929 -2.0495059 -1.2940648 -7.6509829 -2.0107338 -1.2382872 -7.640408 -2.0581551 -1.238606 -7.3392825 -2.0254359 -1.1903186 -7.1253099 -2.0135274 -1.1565334 -7.0559192 -2.0407555 -1.1469715 -6.7990251 -2.0117583 -1.1058555 -6.6514282 -2.0125616 -1.0830665 -6.6097164 -2.0442951 -1.0781261 -6.2901683 -1.9878516 -1.0261734 -6.2412119 -2.0145853 -1.0199581 -6.2240448 -2.0512979 -1.0191613 -6.1879482 -2.0815816 -1.0151772 -6.2647009 -2.1502733 -1.0304762 -5.9923534 -2.0979989 -0.98617291 -6.0054011 -2.1440203 -0.9906351 -6.0088315 -2.1869047 -0.99350369 -6.0258451 -2.2350605 -0.99876267 -5.9917006 -2.2643158 -0.99525666 -6.1287942 -2.3591907 -1.0213925 -6.1151223 -2.3971121 -1.0215518 -5.9939361 -2.3921475 -1.0030656 -5.8831062 -2.389874 -0.9863323 -5.8856664 -2.4330919 -0.98936021 -5.8678961 -2.4680119 -0.98888212 -5.8517346 -2.503582 -0.98872274 -5.7765155 -2.5134478 -0.97820473 -5.7023005 -2.5228853 -0.96784604 -5.7038198 -2.5655196 -0.97087395 -5.6789923 -2.5963652 -0.9692803 -5.7032437 -2.6498785 -0.97645169 -5.6672363 -2.6755519 -0.97294569 -5.6863194 -2.7273502 -0.97932023 -5.4511476 -2.6558356 -0.94011664 -5.4188218 -2.6813533 -0.93724805 -5.6245685 -2.8262365 -0.97740787 -5.5877738 -2.8508258 -0.97390187 -5.5167012 -2.8573651 -0.96418065 -5.591692 -2.9398527 -0.98107326 -5.556128 -2.9648132 -0.97788596 -5.6072826 -3.0364525 -0.9906351 -5.4881783 -3.0156593 -0.97214884 -5.4609485 -3.0444708 -0.97055519 -5.4765387 -3.0973589 -0.97692978 -5.4540052 -3.1289392 -0.97629231 -5.3374262 -3.1057498 -0.95812482 -5.3174191 -3.1379395 -0.95796543 -5.2828159 -3.1613836 -0.9550969 -5.2835755 -3.2060287 -0.95892161 -5.2982798 -3.2595947 -0.96545553 -5.2949328 -3.3024907 -0.96864283 -5.2895899 -3.344413 -0.97151142 -5.2398772 -3.3581643 -0.96593362 -5.2175174 -3.3891768 -0.96561491 -5.2065191 -3.4276407 -0.96752727 -5.2059207 -3.4732189 -0.97151142 -5.1526141 -3.4835343 -0.96529621 -5.1620927 -3.5362842 -0.97135204 -5.1240764 -3.5566342 -0.96816474 -5.136075 -3.6118569 -0.97485805 -5.0712004 -3.6129463 -0.96641177 -5.0257206 -3.6272411 -0.9617902 -5.069519 -3.7063661 -0.97501743 -5.0482688 -3.7385771 -0.97533613 -5.0426092 -3.7825139 -0.97884214 -4.9249706 -3.7417228 -0.95971847 -4.8940945 -3.7658515 -0.95812482 -4.8919215 -3.8121932 -0.96242762 -4.9381881 -3.8971765 -0.9767704 -4.972796 -3.9742408 -0.98888212 -4.9682698 -4.0208249 -0.9930256 -4.9435053 -4.0512338 -0.9930256 -4.8327017 -4.0102577 -0.97501743 -4.868474 -4.0906372 -0.98776656 -4.8914084 -4.1613703 -0.99796587 -4.84409 -4.1726217 -0.99334431 -4.7945862 -4.1815033 -0.98824465 -4.8265638 -4.2618079 -1.0006751 -4.7730894 -4.2669997 -0.99477857 -4.683135 -4.2385764 -0.98091388 -4.6606789 -4.2705665 -0.98171073 -3.5957291 -3.3356955 -0.75302297 -3.5449677 -3.329313 -0.74632967 -3.5244727 -3.351002 -0.74632967 -3.5273187 -3.395155 -0.75158864 -4.5522356 -4.4356341 -0.98728848 -4.5326648 -4.471108 -0.98904145 -4.5435686 -4.5372005 -0.99780649 -4.5343895 -4.5839424 -1.0021093 -4.4606385 -4.5650792 -0.99159127 -4.4250016 -4.5845499 -0.9898383 -4.4131384 -4.6287622 -0.99366301 -4.367732 -4.6377878 -0.98967892 -4.342555 -4.6681142 -0.99047577 -2.5870314 -2.815661 -0.57851905 -2.5756779 -2.8380604 -0.57995331 -2.5496478 -2.8442557 -0.57788157 -2.5301843 -2.8576293 -0.57740349 -4.0731745 -4.6571989 -0.96003717 -6.6177149 -7.6605487 -1.5954226 -4.0291734 -4.7226033 -0.96338379 -6.5015798 -7.7155147 -1.5900042 -6.4427481 -7.7416039 -1.5871357 -6.3813338 -7.7642117 -1.5836297 -6.3254852 -7.7932563 -1.581558 -6.2726078 -7.8257599 -1.580283 -6.2275357 -7.8679709 -1.5810798 -6.1900849 -7.9200349 -1.5839484 -6.1268954 -7.9391108 -1.5801237 -6.0619106 -7.9553547 -1.5758208 -6.0094223 -7.9876666 -1.5748646 -5.9679503 -8.0346918 -1.5769364 -5.9296308 -8.0862846 -1.5799643 -5.8799028 -8.1225166 -1.5799643 -5.8087149 -8.1287241 -1.5740678 -5.7388115 -8.1359777 -1.56849 -5.6859617 -8.1669865 -1.5676932 -5.6592259 -8.2358932 -1.5743866 -5.5770001 -8.2238913 -1.5653028 -5.5341215 -8.2694426 -1.5675339 -5.4941583 -8.3197193 -1.5707211 -5.4440837 -8.354928 -1.5710399 -5.3927164 -8.388175 -1.5710399 -5.3511934 -8.4369459 -1.5740678 -5.2841377 -8.4453516 -1.5694462 -5.2197742 -8.4574537 -1.5656215 -5.1451941 -8.452219 -1.5586095 -5.1272831 -8.5403376 -1.5692869 -5.0561738 -8.5402069 -1.5633904 -5.0086546 -8.5795956 -1.5649841 -4.9283361 -8.562254 -1.5560597 -4.8961711 -8.6283932 -1.562753 -4.8383164 -8.6496572 -1.5611594 -4.7775249 -8.66535 -1.5586095 -4.7200232 -8.6866941 -1.5571752 -4.6582451 -8.6998272 -1.5543066 -4.5997086 -8.7186413 -1.5525537 -4.5392957 -8.7335615 -1.5501631 -4.4869719 -8.7638855 -1.5506413 -4.4353361 -8.7956591 -1.5514381 -4.3755746 -8.8112144 -1.5493664 -4.3222952 -8.8396702 -1.5496851 -4.2581253 -8.8455658 -1.5460197 -1.3356831 -2.8194282 -0.4648923 -1.3204447 -2.8320441 -0.46568909 -1.3092196 -2.8535516 -0.46807957 -4.0499187 -8.9698954 -1.5500038 -3.9803772 -8.9620962 -1.5442667 -3.9197788 -8.9736853 -1.5420356 -3.8607471 -8.9884968 -1.540442 -3.8009131 -9.0011034 -1.5385296 -3.7475042 -9.0288153 -1.5393264 -3.6976273 -9.0653505 -1.5417169 -3.6389956 -9.0805378 -1.540442 -3.5777853 -9.0889158 -1.5380515 -3.5230174 -9.1134605 -1.5385296 -3.4726374 -9.1496725 -1.5410794 -3.4009204 -9.129179 -1.533908 -3.3455188 -9.1517296 -1.5342268 -3.2933013 -9.1832361 -1.5361391 -1.1282215 -3.2085929 -0.51031113 -1.0927414 -3.1697247 -0.50250226 -3.1243424 -9.2441692 -1.5364579 -1.0754888 -3.2484965 -0.51365775 -1.0424371 -3.2146556 -0.50680512 -1.0200028 -3.2125232 -0.5053708 -0.99499643 -3.2017527 -0.50250226 -0.97590673 -3.2096865 -0.50282097 -0.95506811 -3.2118292 -0.50218356 -0.94113207 -3.2375357 -0.50553018 -0.93636149 -3.2964282 -0.5144546 -0.93169516 -3.3582358 -0.52385706 -0.92346495 -3.4096267 -0.53150654 -0.90681624 -3.4314539 -0.53421575 -2.4397771 -9.4642582 -1.5390077 -0.83817208 -3.3370039 -0.51668566 -0.80735284 -3.2998922 -0.50967366 -2.0484478 -8.5981293 -1.3880897 -1.9746956 -8.5201349 -1.3731095 -1.893731 -8.4049664 -1.3520733 -1.836423 -8.3903894 -1.3477706 -1.7754668 -8.3570795 -1.3404398 -1.7209669 -8.3523455 -1.3378899 -1.6776123 -8.4024401 -1.3444239 -1.6260242 -8.4125757 -1.3444239 -1.5745565 -8.4233646 -1.3445833 -1.5542537 -8.6067657 -1.3731095 -1.5180273 -8.7114515 -1.3887272 -1.4548968 -8.6631603 -1.3793247 -1.4009254 -8.6670513 -1.3785279 -1.2555526 -8.0823727 -1.2816343 -1.2673801 -8.501976 -1.348886 -1.2419937 -8.6972332 -1.3794841 -1.1875362 -8.6968651 -1.3782091 -1.1615856 -8.9144602 -1.4124724 -1.1355619 -9.1526299 -1.4500824 -1.1357845 -9.6378746 -1.5278522 -1.075421 -9.6338701 -1.5260992 -1.014114 -9.6196699 -1.5227525 -0.9544847 -9.6198177 -1.5217963 -0.89516622 -9.6225443 -1.5213182 -0.83585018 -9.6249046 -1.5208402 -0.77645946 -9.6259165 -1.5202026 -0.71804172 -9.6393595 -1.521637 -0.6594882 -9.6524487 -1.5230713 -0.60043335 -9.6592693 -1.5235493 -0.54065669 -9.6539001 -1.5221151 -0.48150969 -9.659008 -1.5224338 -0.42266551 -9.6716433 -1.5240275 -0.3630909 -9.6681356 -1.5230713 -0.30357531 -9.6642609 -1.5221151 -0.24444565 -9.6728506 -1.5232307 -0.18505171 -9.6721945 -1.5229119 -0.12571363 -9.6741343 -1.5230713 -0.066447243 -9.6885443 -1.5253024 -0.0069959415 -9.6858082 -1.5248243 --0.052106366 -9.6244621 -1.5149437 --0.11165985 -9.6673956 -1.5219557 --0.17069709 -9.6507359 -1.5194058 --0.22946368 -9.6307554 -1.5163779 --0.28914315 -9.648901 -1.5195652 --0.34848458 -9.6508923 -1.5202026 --0.40798622 -9.6554766 -1.5213182 --0.46641275 -9.6360283 -1.518609 --0.52536833 -9.6300278 -1.518131 --0.58480585 -9.632535 -1.5190872 --0.64475477 -9.641571 -1.5211589 --0.70469278 -9.6482639 -1.5229119 --0.76325685 -9.6358852 -1.521637 --0.82119191 -9.6172495 -1.5194058 --0.88099658 -9.6208773 -1.5208402 --0.94135684 -9.6290464 -1.5230713 --0.99929935 -9.6122875 -1.5213182 --1.0603137 -9.6246195 -1.5243461 --1.1179802 -9.6061649 -1.5224338 --1.1776221 -9.6050043 -1.5233899 --1.2379223 -9.6083679 -1.525143 --1.2996292 -9.6211367 -1.5284896 --1.3578103 -9.6071157 -1.5275334 --1.4137065 -9.5780935 -1.5241868 --1.4719998 -9.5663118 -1.5237087 --1.5336354 -9.5756216 -1.5267366 --1.5981957 -9.6010885 -1.5324738 --1.6595973 -9.6056938 -1.5348642 --1.7172874 -9.5885277 -1.5337486 --1.7737498 -9.5651913 -1.5316769 --1.8337086 -9.560914 -1.5327924 --1.8942574 -9.5591669 -1.5343862 --1.9556448 -9.5609045 -1.5366172 --2.0112166 -9.534236 -1.5342268 --2.0652771 -9.5014572 -1.5308801 --2.1256938 -9.4982395 -1.5324738 --2.1837125 -9.4840555 -1.5323144 --2.2461843 -9.4887314 -1.5353423 --2.3097289 -9.4968338 -1.5390077 --2.3689134 -9.4863138 -1.5396452 --2.3996341 -9.3644905 -1.5217963 --2.4766169 -9.4240656 -1.5342268 --2.5390165 -9.4258509 -1.5370953 --2.6023188 -9.4300785 -1.540442 --2.664963 -9.4310341 -1.5433105 --2.7219579 -9.4116602 -1.5428324 --2.7704139 -9.3635406 -1.5375735 --2.8192396 -9.318018 -1.5327924 --2.8947346 -9.3599625 -1.5428324 --2.9476504 -9.3279047 -1.540442 --2.9951274 -9.2795782 -1.5353423 --3.0714738 -9.320097 -1.5453823 --3.1273441 -9.2973318 -1.5447448 --3.1884985 -9.2901068 -1.5468166 --3.230438 -9.2275057 -1.5394858 --3.2952929 -9.2307549 -1.5434699 --3.369086 -9.2576742 -1.5515975 --3.4076338 -9.1877699 -1.5431511 --3.4642937 -9.1676121 -1.5433105 --3.5403371 -9.1977777 -1.5522349 --3.6024706 -9.190588 -1.5547848 --1.472712 -3.6897178 -0.60258305 --1.4715486 -3.6220739 -0.59238374 --3.7450094 -9.0597677 -1.5437886 --3.7970843 -9.0284281 -1.5423543 --3.8163018 -8.9205475 -1.5275334 --3.8311889 -8.8055315 -1.5114377 --3.8571904 -8.7186594 -1.5002822 --3.883486 -8.6345034 -1.4896047 --3.9257221 -8.5871677 -1.4854612 --1.5002658 -3.2285597 -0.53596878 --1.5213119 -3.2219718 -0.53644687 --1.5939859 -3.3229558 -0.55620801 --1.6567138 -3.4000897 -0.57182574 --1.676232 -3.3872056 -0.57134765 --1.694768 -3.3724461 -0.5705508 --1.7163261 -3.3637424 -0.57086957 --1.7423812 -3.3636677 -0.57278192 --1.7657436 -3.3581564 -0.5737381 --4.3714819 -8.1926613 -1.4602817 --4.3939366 -8.1144638 -1.4508792 --4.4426923 -8.0856199 -1.4505605 --4.4979892 -8.0685558 -1.4524729 --4.5721955 -8.084631 -1.4606005 --4.6467671 -8.1000977 -1.4687281 --4.7217002 -8.1149521 -1.4768556 --4.7964873 -8.1283398 -1.4848238 --4.8477921 -8.1012974 -1.485302 --4.9358153 -8.1347017 -1.4972543 --1.9773482 -3.213763 -0.57039148 --1.98606 -3.1839786 -0.56704479 --5.4001713 -8.5414772 -1.5925541 --5.4274454 -8.4691153 -1.5850639 --5.4744692 -8.4282026 -1.5836297 --5.5201097 -8.3853827 -1.5818766 --5.5763884 -8.3587456 -1.583311 --5.6192784 -8.3121033 -1.5809205 --5.6774273 -8.2880564 -1.5829922 --5.7529411 -8.2887497 -1.5900042 --5.8212943 -8.2783289 -1.5949446 --5.8427682 -8.2014465 -1.586817 --5.9033799 -8.1798515 -1.5896856 --5.9552069 -8.1458654 -1.5901636 --6.0174141 -8.1258335 -1.5935103 --6.0618291 -8.0816498 -1.5920759 --6.1328011 -8.0726042 -1.5978131 --6.1930542 -8.0489054 -1.6006817 --6.2550669 -8.0271072 -1.6040283 --6.3078718 -7.9932261 -1.6049845 --6.360496 -7.9589987 -1.6059407 --6.424737 -7.9390073 -1.6099248 --6.482089 -7.9101272 -1.6121559 --6.539958 -7.8816013 -1.6145464 --6.5888305 -7.8420801 -1.6147057 --6.6317077 -7.7954888 -1.6134309 --6.6871457 -7.7636266 -1.6153432 --6.7411451 -7.7298899 -1.6169368 --6.7956352 -7.6965218 -1.6186898 --6.8486533 -7.661304 -1.6201241 --6.890234 -7.6132812 -1.6188492 --6.9368186 -7.5708604 -1.6188492 --6.9851561 -7.5303259 -1.6193273 --7.033257 -7.4894829 -1.6198053 --7.0872412 -7.4547729 -1.6217178 --7.1444869 -7.4232388 -1.624427 --7.1919675 -7.3813825 -1.624905 --7.2454424 -7.3455486 -1.6268175 --7.3078156 -7.3184185 -1.6308016 --7.3624086 -7.2831612 -1.6330327 --7.40131 -7.2323289 -1.6317577 --7.4498091 -7.1908932 -1.6327139 --7.5095096 -7.1600347 -1.6362199 --7.558332 -7.1185608 -1.6373354 --7.6083732 -7.0781016 -1.6387697 --7.6582026 -7.0372963 -1.6402041 --7.6975837 -6.9868565 -1.6394072 --7.7447195 -6.9434476 -1.6403633 --7.7923512 -6.9003778 -1.6414789 --7.8323154 -6.8504848 -1.6410009 --7.8756957 -6.8035889 -1.6413195 --7.932313 -6.7679524 -1.6445068 --7.9963384 -6.7382383 -1.6492878 --8.0337391 -6.6858892 -1.6484909 --8.0929155 -6.6515141 -1.6523157 --8.125144 -6.5948877 -1.6505626 --8.1731596 -6.5510836 -1.6521564 --8.2070103 -6.4959087 -1.6508814 --8.2607145 -6.4563723 -1.6537499 --8.2954855 -6.4019451 -1.6527938 --8.3573818 -6.3682771 -1.6574154 --8.4065542 -6.3245935 -1.6594871 --8.4103336 -6.2469902 -1.6524751 --8.457263 -6.2016897 -1.6542281 --8.5191469 -6.167048 -1.659009 --8.5592365 -6.1163816 -1.6594871 --8.6208057 -6.0808196 -1.664268 --8.6393204 -6.0148344 -1.6606027 --8.6825733 -5.9661846 -1.6618775 --8.7329073 -5.9222169 -1.6645868 --8.7715416 -5.8701687 -1.6650648 --8.855175 -5.8477921 -1.6743079 --8.9504404 -5.8321548 -1.6857822 --8.9246082 -5.7376175 -1.6739893 --8.9671488 -5.6875081 -1.6754235 --9.0211258 -5.644424 -1.679089 --9.0513897 -5.5863724 -1.678292 --6.5852752 -4.0086093 -1.2057769 --9.065093 -5.4423542 -1.6680927 --9.1790171 -5.434412 -1.6832324 --9.2181568 -5.3814726 -1.6843479 --9.2629814 -5.3317051 -1.686579 --9.2877941 -5.2703824 -1.6851448 --9.338913 -5.2238979 -1.6886507 --9.3543644 -5.1574402 -1.6856228 --9.3684855 -5.0905185 -1.6824355 --9.4247828 -5.046454 -1.6870571 --7.5966592 -4.0077248 -1.3477706 --7.5913248 -3.9455559 -1.3423522 --9.3658123 -4.7951798 -1.6598058 --6.9339957 -3.4964709 -1.2148607 --6.9128785 -3.432781 -1.2072113 --6.9267163 -3.3868303 -1.2059363 --6.9544835 -3.3476908 -1.2072113 --6.9882751 -3.3112974 -1.2096016 --9.6710615 -4.5102119 -1.6838698 --9.7039366 -4.4532571 -1.684826 --6.5864725 -2.9736838 -1.1278478 --9.7199612 -4.317008 -1.6781328 --9.6983194 -4.2363405 -1.6696864 --9.7123394 -4.1716876 -1.6676147 --9.72684 -4.1074061 -1.6657023 --9.7272415 -4.0374269 -1.6613995 --9.7308073 -3.9690893 -1.657734 --9.7393999 -3.9030638 -1.6550249 --9.7695951 -3.845762 -1.6561404 --9.7570972 -3.7718606 -1.6499252 --7.5621738 -2.870049 -1.2669728 --9.7693462 -3.6394336 -1.6441882 --9.8044739 -3.5841675 -1.6464192 --9.8411493 -3.5292735 -1.6489691 --9.8626194 -3.468823 -1.6489691 --9.8818512 -3.407598 -1.6486503 --9.9044447 -3.3475323 -1.6489691 --9.9257355 -3.2870071 -1.6491284 --9.9626198 -3.2315254 -1.651997 --9.9982557 -3.1754158 -1.6547061 --10.017551 -3.1140079 -1.6547061 --10.059138 -3.0593779 -1.658531 --10.128818 -3.0127993 -1.6671365 --10.184083 -2.961345 -1.6733518 --10.247643 -2.9117544 -1.6810013 --10.296708 -2.8575342 -1.6862603 --10.349303 -2.803854 -1.6921568 --10.3959 -2.7481215 -1.6970971 --10.469924 -2.6990702 -1.706659 --10.515969 -2.642236 -1.7115992 --10.561709 -2.584938 -1.7165395 --10.642674 -2.535645 -1.7273763 --10.689769 -2.4776521 -1.7326353 --10.72981 -2.4176571 -1.7367787 --10.771445 -2.3576863 -1.741241 --10.846545 -2.3044772 -1.7512809 --10.901091 -2.2462502 -1.7579743 --10.916605 -2.1797066 -1.7582929 --10.754335 -2.0787647 -1.7294481 --10.851314 -2.0285234 -1.7433127 --11.087 -2.0022643 -1.7799665 --11.278028 -1.9653896 -1.8092896 --11.534243 -1.9372027 -1.84929 --11.950356 -1.9317859 -1.9154261 --12.163916 -1.8898025 -1.9484146 --12.195786 -1.8181882 -1.9517612 --12.242873 -1.7484875 -1.9576577 --12.264132 -1.6748034 -1.9594107 --12.214461 -1.5917367 -1.9496895 --12.21714 -1.5159091 -1.9485739 --12.224251 -1.4406865 -1.9482552 --12.247578 -1.3672961 -1.9506457 --12.242973 -1.2907747 -1.9485739 --12.25754 -1.2163115 -1.9496895 --12.252976 -1.13998 -1.9477772 --12.244987 -1.0634938 -1.9453866 --12.198146 -0.98405153 -1.9367809 --12.257116 -0.91314894 -1.9453866 --12.253625 -0.83731747 -1.9439523 --12.244737 -0.76125681 -1.9417213 --12.273819 -0.6874913 -1.9457054 --12.299499 -0.61324984 -1.9492114 --12.3267 -0.53880543 -1.9530362 --12.282421 -0.46137974 -1.9453866 --12.246538 -0.38479713 -1.9391714 --11.348278 0.83419335 -1.9429172 --11.357677 0.90498459 -1.945491 --11.323445 0.97221011 -1.940515 --11.353564 1.0450158 -1.9468637 --11.394979 1.1193845 -1.9552714 --11.358502 1.186209 -1.9501238 --11.363739 1.2572907 -1.9523544 --11.36266 1.3277948 -1.9535555 --11.290744 1.3896608 -1.9424025 --11.227291 1.4518325 -1.9327937 --11.27284 1.528111 -1.9424025 --11.260325 1.5968357 -1.9418877 --11.252264 1.6661866 -1.9422309 --11.236961 1.7344459 -1.941373 --11.217353 1.8019547 -1.9398288 --11.213859 1.8720478 -1.9412013 --11.20022 1.9404829 -1.9408582 --11.189072 2.0093439 -1.9410298 --11.176532 2.077961 -1.9410298 --11.151962 2.1442664 -1.9389708 --11.13763 2.212461 -1.9387991 --11.074626 2.2706618 -1.9300483 --11.080725 2.3428535 -1.9336517 --11.066141 2.4107995 -1.9336517 --11.049218 2.4782233 -1.9333085 --11.029964 2.5450869 -1.9326221 --10.997845 2.6088502 -1.9297051 --10.98163 2.6762826 -1.9297051 --10.949711 2.7397866 -1.9269598 --10.960365 2.814029 -1.9319358 --10.929555 2.8777142 -1.9295336 --10.922154 2.9475472 -1.931421 --10.876327 3.0068929 -1.926445 --10.864307 3.0754514 -1.9276462 --10.864157 3.1475406 -1.9310778 --10.841806 3.2133024 -1.9305631 --10.80303 3.274049 -1.9271314 --10.796852 3.3446479 -1.9297051 --10.766734 3.4078593 -1.9279894 --10.726874 3.4677958 -1.9245576 --10.713814 3.5363293 -1.9261019 --10.667641 3.5938213 -1.9216406 --10.665884 3.6662567 -1.9254155 --10.623665 3.7247851 -1.9218123 --10.668327 3.8141186 -1.934338 --10.58271 3.8568981 -1.9228418 --10.540376 3.9148974 -1.9194101 --10.507863 3.9763594 -1.9178658 --10.513601 4.0524554 -1.9235281 --10.490372 4.1176095 -1.9238713 --10.456676 4.1786084 -1.922327 --10.381563 4.2226419 -1.9130614 --10.396419 4.3032217 -1.9207827 --10.339858 4.354311 -1.9151205 --10.329246 4.4246573 -1.918209 --10.304611 4.4891338 -1.9187237 --10.268765 4.5486856 -1.9171795 --10.26222 4.6213183 -1.9212976 --10.205903 4.6714859 -1.9159783 --10.199378 4.74441 -1.9202679 --10.156714 4.8005867 -1.9176942 --10.10309 4.8513007 -1.9130614 --10.071362 4.9123368 -1.9127183 --10.022493 4.9648557 -1.909115 --9.9944811 5.0275874 -1.9096297 --9.9853773 5.1000228 -1.9139193 --9.9600182 5.1643705 -1.9151205 --9.8880424 5.2042761 -1.9072275 --9.8593988 5.2667074 -1.9079138 --9.8398886 5.3341479 -1.9104877 --9.8233728 5.4034472 -1.9137478 --9.8080978 5.4737043 -1.917351 --9.8249054 5.5624247 -1.9274746 --9.7931528 5.6240768 -1.9279894 --9.6971703 5.6483526 -1.9156352 --9.6699638 5.7122574 -1.9171795 --9.6507893 5.7811046 -1.9204396 --9.6294489 5.8489075 -1.9233565 --9.5950565 5.908916 -1.9236997 --9.5828524 5.9828119 -1.9286757 --9.5376387 6.0362291 -1.9269598 --9.4954462 6.091445 -1.9259303 --9.4455032 6.1415367 -1.9233565 --9.4224472 6.2091365 -1.926445 --9.4079294 6.2827039 -1.931421 --9.3928614 6.3563261 -1.936397 --9.3764315 6.4294419 -1.9412013 --9.3448944 6.4924755 -1.9429172 --9.2952156 6.5428867 -1.9408582 --9.2524881 6.5980816 -1.9403435 --9.1990519 6.6454978 -1.9375981 --9.178772 6.7169456 -1.9420593 --9.1405506 6.7754865 -1.9427457 --9.1232262 6.8497834 -1.9480648 --9.1116056 6.9288936 -1.9547566 --9.0689192 6.9846706 -1.9547566 --8.9909372 7.0129156 -1.9470353 --8.9724741 7.0874949 -1.952526 --8.9042015 7.1227202 -1.9470353 --8.9162083 7.2224946 -1.959561 --8.8618221 7.2689443 -1.9573303 --8.8147812 7.3212938 -1.9568156 --8.7998486 7.4006095 -1.9636791 --8.7287741 7.4327464 -1.9578451 --8.6837492 7.4868083 -1.9580168 --8.6591682 7.5587401 -1.9629927 --8.6451035 7.6404386 -1.9705424 --8.6156788 7.7091084 -1.9746605 --8.5791655 7.77175 -1.9772342 --8.5342207 7.8269086 -1.9779207 --8.5040827 7.8958859 -1.9822103 --8.4655228 7.957365 -1.9846125 --8.3908482 7.9847074 -1.9784354 --8.3409872 8.0353584 -1.9782637 --8.3070412 8.1015205 -1.9820386 --8.2697926 8.1647997 -1.9851272 --8.2327766 8.2286215 -1.9883873 --8.1890564 8.2859898 -1.9901031 --8.1415005 8.3396063 -1.9909611 --8.0710306 8.3695459 -1.9861567 --8.0460215 8.4467344 -1.9928485 --7.9859414 8.4873343 -1.9907895 --7.9719391 8.5773115 -2.0005698 --7.9151626 8.6217098 -1.9995403 --7.8746843 8.6839819 -2.0028005 --7.8192806 8.7299347 -2.0022857 --7.772747 8.7858658 -2.0041733 --7.7212844 8.8363609 -2.0048594 --7.6649895 8.8813334 -2.0043447 --7.604599 8.9214497 -2.0028005 --7.5535216 8.9724646 -2.00383 --7.4945469 9.0140982 -2.0028005 --7.4722266 9.1002703 -2.0118945 --7.4249334 9.156662 -2.0142968 --7.3636837 9.1958952 -2.012924 --7.3089533 9.2432232 -2.0134387 --7.2690744 9.3096399 -2.0182431 --7.2106118 9.3525066 -2.0179 --7.1578636 9.4028454 -2.0192726 --7.1095033 9.4591904 -2.022018 --7.0583725 9.5121298 -2.0240769 --6.9998746 9.5552597 -2.0240769 --6.941113 9.5980301 -2.0240769 --6.8832345 9.6420431 -2.0244203 --6.8267794 9.6881237 -2.0252781 --6.7773294 9.7443886 -2.0283666 --6.7274456 9.8004112 -2.0314553 --6.6605554 9.8317165 -2.0293963 --6.6121478 9.890419 -2.0331712 --6.554049 9.9349165 -2.034029 --6.4978023 9.9823761 -2.0355732 --6.4481397 10.040296 -2.0393481 --6.3763952 10.063859 -2.036088 --6.3140025 10.101959 -2.0359163 --6.2539673 10.143866 -2.0366027 --6.1992846 10.194675 -2.0391765 --6.131042 10.223228 -2.0372891 --6.0697021 10.263198 -2.0378039 --6.0110798 10.307908 -2.0393481 --5.9545922 10.356554 -2.0417504 --5.8977332 10.404896 -2.0441525 --5.835701 10.444328 -2.0448389 --5.7810092 10.497199 -2.0482705 --5.7113223 10.522947 -2.0463831 --5.663835 10.589938 -2.0527318 --5.605638 10.637566 -2.0553055 --5.5466151 10.684003 -2.0577078 --5.4809551 10.717834 -2.0577078 --5.4124298 10.745984 -2.0566783 --5.3472672 10.780757 -2.0570214 --5.2753978 10.801856 -2.0547907 --5.2137146 10.843788 -2.0566783 --5.1517153 10.885371 -2.0585656 --5.0810838 10.908738 -2.0570214 --5.0230818 10.959414 -2.0607963 --4.9606004 11.000806 -2.0628552 --4.8981991 11.042745 -2.0650859 --4.8299561 11.071688 -2.0649142 --4.7603774 11.097494 -2.0642281 --4.6941085 11.131033 -2.0650859 --4.626853 11.162356 -2.0656006 --4.5612473 11.197836 -2.0669734 --4.5019674 11.249393 -2.0714345 --4.429975 11.26947 -2.0700619 --4.3642902 11.305631 -2.0717778 --4.2930932 11.327591 -2.0709198 --4.2197299 11.343562 -2.0690324 --4.156127 11.385899 -2.0721209 --4.0901704 11.422317 -2.0741799 --4.0183759 11.442551 -2.0733221 --3.9448836 11.457676 -2.0716062 --3.8779705 11.491934 -2.0734935 --3.8141859 11.536091 -2.0772684 --3.7463644 11.56865 -2.0789843 --3.6770959 11.597054 -2.0800138 --3.6090794 11.629748 -2.0819013 --3.5410862 11.662987 -2.0839603 --3.4728208 11.695828 -2.0860193 --3.4004421 11.715025 -2.0856762 --3.3319895 11.747991 -2.0879068 --3.2606311 11.771063 -2.0884216 --3.1916857 11.803211 -2.0906522 --3.1229711 11.836862 -2.093226 --3.0475833 11.845305 -2.0913384 --2.9702938 11.845626 -2.0880783 --2.9043303 11.891383 -2.0930543 --2.8333616 11.917606 -2.0945985 --2.7610707 11.938606 -2.0952849 --2.6927328 11.97743 -2.0992315 --2.6200304 11.997578 -2.0999177 --2.5445275 12.004754 -2.0983734 --2.4622943 11.978645 -2.0909953 --2.3889408 11.994494 -2.091167 --2.3197727 12.032144 -2.0952849 --2.2525787 12.081985 -2.1016335 --2.1777046 12.091702 -2.1009471 --2.1044817 12.11066 -2.1019766 --2.0301325 12.123344 -2.1019766 --1.9497541 12.098613 -2.0954566 --1.8809062 12.145397 -2.1016335 --1.8060586 12.154761 -2.1012905 --1.7333865 12.179269 -2.1036925 --1.6596853 12.197485 -2.1050653 --1.5822768 12.1879 -2.1016335 --1.5079464 12.201289 -2.10232 --1.4341998 12.220098 -2.1040359 --1.353646 12.17873 -2.0952849 --1.2859814 12.254414 -2.1071243 --1.2112491 12.266975 -2.1079822 --1.1363204 12.2781 -2.1086686 --1.0628248 12.306435 -2.1124434 --0.98721534 12.311743 -2.1122718 --0.90961981 12.290059 -2.1074674 --0.83332664 12.282631 -2.1052368 --0.75697714 12.27178 -2.1024914 --0.68171918 12.277177 -2.102663 --0.60487181 12.250626 -2.0973439 --0.52956462 12.251154 -2.0968292 --0.45401889 12.244328 -2.0951133 --0.37909317 12.253776 -2.0963144 --0.30416587 12.266705 -2.0982018 --0.22887477 12.267355 -2.0980303 --0.15362386 12.270498 -2.0983734 --0.078274854 12.262344 -2.0968292 --0.0030336541 12.266534 -2.0975156 -0.072197072 12.260411 -2.0964861 -0.14741224 12.258752 -2.0963144 -0.22262776 12.257617 -2.0963144 -0.2981953 12.270793 -2.0988882 -0.37390283 12.282518 -2.1012905 -0.44940436 12.283931 -2.1019766 -0.52451575 12.275037 -2.1009471 -0.59939039 12.262732 -2.0994029 -0.6742422 12.251937 -2.0982018 -0.74934572 12.246586 -2.0980303 -0.82460785 12.243723 -2.0983734 -0.89979076 12.239416 -2.0985451 -0.97471672 12.2317 -2.0982018 -1.0485694 12.211747 -2.0957997 -1.122666 12.196255 -2.0942554 -1.1968048 12.182273 -2.0930543 -1.2732725 12.191358 -2.0959713 -1.3478365 12.181357 -2.095628 -1.4223256 12.1709 -2.0952849 -1.4975803 12.166833 -2.0961428 -1.569804 12.138852 -2.0928826 -1.64333 12.122158 -2.0916817 -1.7192019 12.122576 -2.093569 -1.7941298 12.115697 -2.0942554 -1.8687373 12.106407 -2.0945985 -1.9390769 12.070395 -2.0903089 -2.0139146 12.063129 -2.091167 -2.0818365 12.0156 -2.0849898 -2.1529102 11.988055 -2.0824161 -2.2217424 11.949437 -2.0779548 -2.3108408 12.017812 -2.0925395 -2.4047024 12.104864 -2.1105559 -2.4785354 12.087952 -2.1102128 -2.529619 11.963602 -2.0908237 -2.6132591 11.995021 -2.0992315 -2.6730049 11.91724 -2.0882499 -2.7276845 11.820941 -2.0740082 -2.811312 11.85095 -2.0824161 -2.883975 11.833477 -2.0824161 -2.9565296 11.815558 -2.0824161 -3.0238259 11.777157 -2.0788128 -3.1063209 11.797441 -2.0858476 -3.1683788 11.740114 -2.0789843 -3.2356284 11.703362 -2.0758958 -3.3041565 11.671913 -2.0738368 -3.3696785 11.630602 -2.0700619 -3.4378986 11.599318 -2.0681744 -3.5098636 11.580832 -2.0686891 -3.5858135 11.575076 -2.0716062 -3.6549852 11.547221 -2.0705767 -3.7288001 11.533951 -2.0722926 -3.7923965 11.489338 -2.068346 -3.8609347 11.46025 -2.0673165 -3.9366267 11.452182 -2.0702336 -4.0006266 11.410149 -2.0669734 -4.0825057 11.418781 -2.0731504 -4.1376462 11.352791 -2.0656006 -4.2058549 11.323495 -2.0649142 -4.2738605 11.29379 -2.0642281 -4.3381157 11.254484 -2.0618258 -4.4052901 11.223069 -2.0609679 -4.469317 11.183935 -2.0587373 -4.523376 11.120712 -2.0520453 -4.6005712 11.114594 -2.0561635 -4.6660056 11.079801 -2.0549624 -4.7276936 11.036473 -2.052217 -4.786665 10.987388 -2.0484421 -4.8547902 10.959612 -2.0487852 -4.9223504 10.930515 -2.0489569 -4.9885058 10.898315 -2.0486138 -5.0598545 10.877327 -2.0505011 -5.1265016 10.846075 -2.0505011 -5.1874104 10.802871 -2.0482705 -5.2419343 10.746932 -2.0436378 -5.3042784 10.707504 -2.0422652 -5.3729782 10.680916 -2.0434661 -5.4397583 10.650379 -2.0439808 -5.5072737 10.621174 -2.0448389 -5.5682096 10.579336 -2.0432947 -5.6269832 10.533675 -2.041064 -5.6797705 10.477299 -2.0367744 -5.7463255 10.446568 -2.0376322 -5.8021531 10.396488 -2.0347154 -5.8658357 10.360691 -2.0347154 -5.9238992 10.315107 -2.0328279 -5.9831128 10.271754 -2.0314553 -6.042017 10.228065 -2.0300825 -6.0950408 10.174742 -2.0268223 -6.14815 10.121997 -2.0237339 -6.2127247 10.088276 -2.0245917 -6.2703338 10.043281 -2.0232191 -6.3286786 9.9996223 -2.0221896 -6.386724 9.9556274 -2.0211601 -6.4433932 9.9096451 -2.0197873 -6.4970284 9.8592291 -2.0175569 -6.5584955 9.820817 -2.0179 -6.6186314 9.7803898 -2.0179 -6.6712742 9.7290325 -2.0156693 -6.7173524 9.668499 -2.0115514 -6.7595363 9.6029339 -2.0064037 -6.8171873 9.5596733 -2.0060606 -6.8734083 9.5144701 -2.0053742 -6.9258399 9.4641666 -2.0036583 -6.9814334 9.4183264 -2.0029721 -7.0432329 9.380826 -2.0041733 -7.1018529 9.3390017 -2.0045164 -7.1572185 9.2929087 -2.0040016 -7.1995602 9.230176 -1.9998835 -7.2383485 9.1634092 -1.9949075 -7.2827439 9.104207 -1.9916475 -7.3266854 9.0448055 -1.9883873 -7.3720474 8.9874935 -1.985642 -7.4182415 8.9314814 -1.9832398 -7.475441 8.8888111 -1.9839261 -7.5285635 8.8412752 -1.983583 -7.5826712 8.7949142 -1.983583 -7.6313095 8.7422857 -1.9822103 -7.6717577 8.6805334 -1.9787786 -7.7235622 8.6318293 -1.9784354 -7.7843184 8.5930367 -1.9804944 -7.8195829 8.5262356 -1.9760332 -7.8502989 8.4549942 -1.9705424 -7.8986559 8.4030771 -1.9696845 -7.947351 8.3515997 -1.9689982 -7.995028 8.2991314 -1.9681402 -8.0120926 8.2153625 -1.9597325 -8.0630417 8.166748 -1.9599042 -8.1088219 8.1129398 -1.9588747 -8.1556454 8.0602627 -1.9581883 -8.1950788 8.0004349 -1.9557861 -8.2489786 7.9547868 -1.9569873 -8.3040543 7.9101372 -1.9585315 -8.3474102 7.85431 -1.9573303 -8.3687439 7.7781305 -1.9509817 -8.4076023 7.7186403 -1.9489228 -8.4562645 7.6682305 -1.9492658 -8.503891 7.6168566 -1.9494375 -8.5423498 7.5573549 -1.9475501 -8.5566578 7.4769263 -1.9401718 -8.5889482 7.4126983 -1.9370834 -8.6245222 7.3515511 -1.9348527 -8.6574087 7.288343 -1.9321073 -8.7034817 7.2363443 -1.9324505 -8.7347746 7.1721778 -1.9295336 -8.7832088 7.12217 -1.9305631 -8.8221302 7.0644488 -1.9295336 -8.8421259 6.9918547 -1.924386 -8.8732128 6.9283757 -1.9218123 -8.9249201 6.8810177 -1.9238713 -8.9685411 6.8273191 -1.9242145 -9.0039635 6.767426 -1.9228418 -9.0326586 6.7026596 -1.9200964 -9.0680523 6.6430349 -1.9188954 -9.1086416 6.5872698 -1.9188954 -9.1416721 6.5261049 -1.917351 -9.1589937 6.4540029 -1.9125466 -9.1879072 6.3903713 -1.910316 -9.2301941 6.3361049 -1.9110024 -9.2640038 6.2760353 -1.9099729 -9.2925091 6.2125049 -1.9079138 -9.3353882 6.1586246 -1.9089434 -9.3407984 6.0802708 -1.9022515 -9.3630085 6.0132613 -1.899163 -9.4097157 5.9620237 -1.901222 -9.4285765 5.8932114 -1.8976188 -9.4645586 5.8352475 -1.8976188 -9.4833488 5.7668285 -1.894187 -9.511796 5.7044783 -1.8928144 -9.5305061 5.6364808 -1.8895543 -9.5640602 5.5774007 -1.8893826 -9.5801659 5.5083013 -1.8857794 -9.6206408 5.4533005 -1.8871521 -9.6547813 5.3946471 -1.8873236 -9.6540432 5.3167734 -1.8806318 -9.6648369 5.2456908 -1.8763422 -9.6673031 5.1704955 -1.8705083 -9.7206373 5.1225605 -1.8747979 -9.7711229 5.072804 -1.8785728 -9.8353977 5.0297956 -1.885093 -9.8352776 4.9538445 -1.8790876 -9.8637238 4.8925281 -1.8787444 -9.9431334 4.8561192 -1.8883531 -9.9869499 4.8018465 -1.8910985 -10.013554 4.7392135 -1.8905838 -10.026369 4.6701961 -1.8874952 -10.091557 4.6254139 -1.8945302 -10.073943 4.5427566 -1.8857794 -10.125043 4.4912424 -1.8902406 -10.123513 4.416429 -1.8847499 -10.118731 4.3406391 -1.8787444 -10.1715 4.2895689 -1.8837203 -10.173056 4.2168941 -1.8790876 -10.264433 4.1811461 -1.8914417 -10.299042 4.1217456 -1.8931575 -10.339725 4.0645995 -1.8960744 -10.393882 4.0124302 -1.9015652 -10.372243 3.9311264 -1.8929859 -10.417407 3.8753076 -1.8969324 -10.409523 3.7998321 -1.8910985 -10.415019 3.7295802 -1.8878384 -10.479537 3.6802897 -1.8955597 -10.506579 3.6175225 -1.8964176 -10.546314 3.5589705 -1.8996778 -10.525861 3.4802797 -1.8919564 -10.594818 3.4311035 -1.9007072 -10.612854 3.3651373 -1.9001925 -10.634243 3.3002467 -1.900364 -10.644866 3.2320728 -1.8986483 -10.65222 3.1630518 -1.8964176 -10.694135 3.1042204 -1.9005357 -10.693076 3.0329008 -1.8969324 -10.706738 2.9659178 -1.8960744 -10.750413 2.9071076 -1.9007072 -10.762332 2.8395822 -1.8996778 -10.772874 2.7717745 -1.8984767 -10.783945 2.7041841 -1.8974471 -10.801291 2.6381979 -1.8976188 -10.809608 2.5700505 -1.8962461 -10.831893 2.5052288 -1.8974471 -10.873975 2.4447663 -1.9022515 -10.888771 2.3779988 -1.9022515 -10.900266 2.3105292 -1.9017367 -10.921958 2.2451892 -1.9031094 -10.965481 2.1840937 -1.9084285 -10.961263 2.1134143 -1.9053401 -10.947875 2.0412447 -1.9007072 -10.973768 1.9764748 -1.9031094 -10.983747 1.9087666 -1.9027663 -11.038006 1.8484908 -1.910316 -11.034551 1.7783782 -1.9077423 -11.03844 1.7095833 -1.9065411 -11.067237 1.6445699 -1.9098012 -11.111257 1.5814869 -1.9158068 -11.119775 1.513147 -1.9156352 -11.154252 1.4481841 -1.9200964 -11.125773 1.3751274 -1.9135761 -11.136937 1.3071793 -1.9140909 -11.135936 1.2378411 -1.9125466 -11.155079 1.1707217 -1.9146056 -11.151268 1.1011895 -1.9127183 -11.157815 1.032746 -1.9127183 -11.140385 0.96223122 -1.9086002 -11.181432 0.8966884 -1.9147773 -11.177881 0.82740992 -1.913233 -11.164072 0.75754291 -1.9099729 -11.172443 0.68926942 -1.9106592 -11.195152 0.62173963 -1.9139193 -11.19974 0.55308425 -1.9140909 -11.207845 0.48456576 -1.9149488 -11.183041 0.41476709 -1.9101444 -11.221809 0.34726512 -1.9164931 -11.218804 0.27828124 -1.9156352 -11.240986 0.20982267 -1.9192384 -11.259793 0.14106564 -1.922327 -11.260447 0.071974203 -1.922327 -11.245899 0.0028777863 -1.9197532 -11.263437 -0.066231906 -1.9228418 -11.27464 -0.13548508 -1.9249008 -11.270641 -0.20460847 -1.924386 -11.251447 -0.2733275 -1.9212976 -11.23971 -0.34205922 -1.9195817 -11.232477 -0.4108378 -1.9187237 -11.226792 -0.47962481 -1.918209 -11.196086 -0.54715276 -1.9134046 -11.199404 -0.61621994 -1.9146056 -11.234745 -0.68733704 -1.9214691 -11.225402 -0.75592774 -1.9206111 -11.27459 -0.82876909 -1.9300483 -11.272239 -0.89816809 -1.9305631 -11.281239 -0.96858197 -1.9331368 -11.270178 -1.0373322 -1.932279 -11.181244 -1.0983664 -1.9178658 -11.25366 -1.1752491 -1.9317642 -11.228612 -1.2423263 -1.9286757 -11.202187 -1.309026 -1.9254155 -11.14701 -1.3719553 -1.9171795 -11.144244 -1.4410849 -1.918209 -11.132263 -1.5090402 -1.9176942 -11.142303 -1.5800866 -1.9211259 -11.205487 -1.659255 -1.9339948 -11.17757 -1.7252725 -1.9309063 -11.127866 -1.7875702 -1.9240428 -11.090452 -1.8514333 -1.9194101 -11.075972 -1.9189433 -1.9188954 -10.984478 -1.9725811 -1.9048253 -10.733904 -1.9956198 -1.8626153 -10.35867 -1.9916505 -1.7982709 -10.082463 -2.002743 -1.7514281 -9.9406652 -2.0380416 -1.7284358 -9.7727947 -2.0661712 -1.7008104 -9.6915913 -2.111201 -1.688628 -9.5515671 -2.1421547 -1.6659787 -9.4316921 -2.1761243 -1.6469327 -9.2964268 -2.2050645 -1.6251414 -8.5486021 -2.083076 -1.4935355 -8.4706736 -2.1192224 -1.4818678 -7.9708705 -2.0461617 -1.3943592 -8.4545088 -2.2257712 -1.4837552 -7.5200119 -2.0290411 -1.3176607 -7.4903293 -2.0704179 -1.3145721 -7.4518909 -2.109091 -1.3099394 -7.1341243 -2.0664685 -1.2546889 -6.8955679 -2.043273 -1.21368 -6.7575097 -2.0475287 -1.1908592 -6.4672179 -2.0029271 -1.1402416 -6.3035932 -1.9946927 -1.1126163 -6.1618781 -1.9914998 -1.0889376 -6.1037035 -2.0141354 -1.0805299 -5.9605289 -2.0075023 -1.0565079 -5.8586621 -2.0132847 -1.0400358 -5.8452687 -2.0488687 -1.0398642 -5.8168173 -2.0790563 -1.0369473 -5.7484164 -2.0944622 -1.0266521 -5.7493091 -2.134841 -1.0292259 -5.8982625 -2.2314615 -1.0594249 -5.7925386 -2.2321689 -1.0422664 -5.9318752 -2.3277977 -1.0709212 -5.7610512 -2.3016214 -1.0415801 -5.7824087 -2.3514071 -1.0482719 -5.7314625 -2.3717682 -1.0414085 -5.7149858 -2.4061263 -1.0410653 -5.6032214 -2.3996303 -1.0227057 -5.5034966 -2.3969712 -1.0065767 -5.4562597 -2.4163277 -1.0003996 -5.4494152 -2.4534025 -1.0019438 -5.4459033 -2.492125 -1.0041745 -5.3706641 -2.497648 -0.99267828 -5.3089242 -2.5086586 -0.98375583 -5.3769078 -2.5812807 -0.99988484 -5.3813329 -2.6241596 -1.0038313 -5.3774881 -2.6632531 -1.0062335 -5.3548851 -2.6930988 -1.0050324 -5.2829895 -2.6976686 -0.99422252 -5.2943225 -2.7445478 -0.99971324 -5.3139963 -2.7962568 -1.0069199 -5.2524242 -2.8051324 -0.998169 -5.2073998 -2.8222806 -0.99267828 -5.1994791 -2.8594036 -0.99456573 -5.1766748 -2.8883719 -0.99353617 -5.1597118 -2.9205666 -0.99370778 -5.2040558 -2.9879925 -1.0062335 -5.1439133 -2.9955668 -0.99782586 -5.0847235 -3.0030174 -0.98958975 -4.9766226 -2.9804871 -0.97140169 -5.0786414 -3.084115 -0.99593842 -5.0193596 -3.0904183 -0.98770231 -4.9743981 -3.1049819 -0.98238319 -4.9044762 -3.1033027 -0.97191644 -4.8762217 -3.1274853 -0.97002906 -4.9519157 -3.2191141 -0.98976135 -4.9041033 -3.2310042 -0.98392743 -4.8596091 -3.2446182 -0.97877985 -4.8738747 -3.2975683 -0.98598647 -4.8909221 -3.3530438 -0.99387938 -4.8354683 -3.3588166 -0.98650122 -4.7680464 -3.3555288 -0.97654927 -4.7842617 -3.4110374 -0.98444217 -4.7560554 -3.4351361 -0.98289794 -4.7817912 -3.4985847 -0.99302143 -4.7776451 -3.5407677 -0.99679631 -4.7566171 -3.5706077 -0.99696791 -4.7220726 -3.590184 -0.99422252 -4.7381968 -3.6485498 -1.0026302 -4.6939716 -3.6605866 -0.99782586 -4.6312256 -3.6575606 -0.9889034 -4.6210041 -3.695756 -0.99164879 -4.5737457 -3.7041945 -0.98615801 -4.6095777 -3.7803037 -0.9993701 -4.5953889 -3.8160708 -1.0014291 -4.5914888 -3.8606839 -1.0058904 -4.4867129 -3.8197956 -0.98735911 -4.4169335 -3.8073647 -0.97672087 -4.5196486 -3.9445443 -1.0058904 -4.3684025 -3.8599756 -0.97637767 -4.4672322 -3.9964252 -1.0050324 -4.4710989 -4.0495586 -1.0117242 -4.4962606 -4.1228671 -1.0235636 -3.6009998 -3.3425498 -0.8168034 -3.561043 -3.3463624 -0.81217062 -3.5325933 -3.3606782 -0.81028318 -3.5076497 -3.3781891 -0.80925369 -4.2682405 -4.1618538 -0.9993701 -4.2215939 -4.1671977 -0.99422252 -4.1910677 -4.1881471 -0.99302143 -4.1784472 -4.2270989 -0.99628156 -4.1331639 -4.2329173 -0.99147719 -4.0852323 -4.2355032 -0.98598647 -4.0231576 -4.2226796 -0.97689241 -4.0788507 -4.3341103 -0.99765426 -2.5754807 -2.7699034 -0.61982358 -2.5484438 -2.7747674 -0.61724979 -2.5280616 -2.7867029 -0.6163919 -2.4944847 -2.7838144 -0.61210227 -2.5080338 -2.8337505 -0.62016678 -3.966469 -4.5384326 -1.0108663 -3.980381 -4.611167 -1.0220194 -3.9085598 -4.584516 -1.0103515 -3.8625929 -4.5873079 -1.0055472 -3.8362622 -4.6131945 -1.0060619 -3.807884 -4.6366467 -1.0060619 -3.7923913 -4.6759949 -1.0096653 -3.7396157 -4.6691833 -1.0029734 -3.6876786 -4.6626735 -0.99645317 -3.6432376 -4.6650224 -0.99199194 -3.6157479 -4.6888494 -0.99233508 -3.5767665 -4.6976199 -0.98941815 -5.7370515 -7.6327705 -1.6241119 -5.6865878 -7.6630816 -1.6230824 -5.6173401 -7.6676273 -1.6165621 -5.5678778 -7.6987572 -1.6158758 -5.5399933 -7.7600398 -1.6217097 -5.4650397 -7.7552285 -1.6134737 -5.3847299 -7.7417026 -1.6035217 -5.3159428 -7.7437305 -1.5970014 -5.2898746 -7.8080144 -1.6036932 -5.2057338 -7.7862678 -1.5923686 -5.1312814 -7.7777658 -1.583961 -5.0651913 -7.7810297 -1.578127 -5.0684519 -7.8915462 -1.5945992 -5.0114999 -7.9091811 -1.5918539 -4.9675741 -7.9473014 -1.5933981 -4.925437 -7.9885349 -1.5956287 -4.8870749 -8.0362844 -1.5992321 -4.8326073 -8.0576706 -1.5975162 -4.7895937 -8.0981951 -1.5997468 -4.7408066 -8.1291332 -1.6000899 -4.6545062 -8.0948648 -1.5873927 -4.6042638 -8.1224146 -1.587221 -4.5447297 -8.1333122 -1.5837893 -4.4947391 -8.1610451 -1.5837893 -4.4511571 -8.200593 -1.5861915 -4.3882132 -8.2042933 -1.5815587 -4.3309021 -8.2179909 -1.578985 -4.2763109 -8.2365398 -1.5774407 -4.2283831 -8.2678871 -1.5784702 -4.1735849 -8.2857571 -1.576926 -4.1209149 -8.3076792 -1.5762396 -4.0594888 -8.3115616 -1.5721216 -4.0114012 -8.3425293 -1.5733227 -3.9672997 -8.3821239 -1.5762396 -3.9120505 -8.3982716 -1.5746953 -3.860446 -8.4221172 -1.5746953 -3.8010032 -8.4285822 -1.5714352 -3.7464194 -8.4454412 -1.5702342 -3.6945286 -8.4682703 -1.5702342 -3.6774445 -8.5722685 -1.5856768 -1.2572447 -2.979089 -0.52425063 -1.2491246 -3.0113206 -0.5288834 -1.2328534 -3.0244029 -0.52991295 -1.2186642 -3.0428867 -0.53197193 -3.3605134 -8.5480871 -1.560797 -3.3072908 -8.5667076 -1.5604538 -1.1774573 -3.1044171 -0.53935009 -1.1662848 -3.1328211 -0.54329658 -1.1490666 -3.1454713 -0.54432607 -3.1053541 -8.6712637 -1.5652581 -3.0478473 -8.6780701 -1.5630275 -1.0993104 -3.1903088 -0.5487873 -1.0781398 -3.1923265 -0.54792941 -1.0647153 -3.2175899 -0.55136108 -1.0476832 -3.2324977 -0.55290538 -1.0436058 -3.2886388 -0.56199938 -2.6863759 -8.6554651 -1.5395204 -0.99201179 -3.2644322 -0.55530757 -0.96102989 -3.2336245 -0.54861569 -0.93650359 -3.2233758 -0.54569876 -0.92315704 -3.2518089 -0.54981685 -0.92842555 -3.3485587 -0.56628901 -2.2204692 -8.2101908 -1.4424032 -2.1617601 -8.1922255 -1.4367409 -0.87472981 -3.3965666 -0.57195133 -0.84213585 -3.3550451 -0.56354362 -0.82176745 -3.3611062 -0.56371522 -1.9281728 -8.1086235 -1.4127189 -1.8763859 -8.1116629 -1.4111747 -1.8270104 -8.1249456 -1.4115179 -1.7720799 -8.1129036 -1.4073998 -1.718183 -8.1043482 -1.4039681 -1.6664406 -8.1050882 -1.4022522 -1.6141769 -8.1026001 -1.4000216 -1.5616337 -8.0978413 -1.3974478 -1.5088488 -8.090806 -1.3945309 -1.4567327 -8.086338 -1.3921287 -1.4054028 -8.0854177 -1.3904128 -1.34861 -8.051136 -1.382863 -1.3027867 -8.0816298 -1.3868096 -1.2543797 -8.0972605 -1.3881822 -1.2014887 -8.0833654 -1.3844073 -1.1714272 -8.2281113 -1.4086008 -1.128617 -8.2917624 -1.4185528 -1.0832951 -8.3415184 -1.4261025 -1.0665044 -8.6266651 -1.4750043 -1.0273212 -8.7504625 -1.4955946 -0.99927199 -8.9876804 -1.5360887 -0.94677669 -9.0191174 -1.5405499 -0.89209557 -9.03162 -1.541751 -0.83566415 -9.0261326 -1.5398636 -0.78221262 -9.0536652 -1.54381 -0.72648835 -9.0563307 -1.5434668 -0.67126924 -9.0655298 -1.5443248 -0.61656386 -9.0832396 -1.5467269 -0.56063682 -9.0839014 -1.5462122 -0.50450683 -9.0802851 -1.5450112 -0.44878176 -9.08321 -1.5450112 -0.39295486 -9.0838242 -1.544668 -0.3381933 -9.1126451 -1.5493008 -0.28196907 -9.104702 -1.5475849 -0.22675522 -9.1328516 -1.5522177 -0.17042027 -9.1183119 -1.5494723 -0.11389288 -9.0728865 -1.5414078 -0.058282513 -9.0832653 -1.5431237 -0.002543333 -9.0558672 -1.5383192 --0.053087313 -9.0665493 -1.5402067 --0.10884894 -9.076889 -1.5420941 --0.16463156 -9.0809755 -1.5429521 --0.22020411 -9.073885 -1.5419226 --0.2762371 -9.0841799 -1.5439816 --0.33215195 -9.0872364 -1.5448395 --0.38794607 -9.0860109 -1.5450112 --0.44479784 -9.1060915 -1.5489576 --0.50093454 -9.1081095 -1.5498155 --0.55614853 -9.0940475 -1.5479281 --0.61187178 -9.0894814 -1.5477564 --0.66567957 -9.0590277 -1.5431237 --0.72062534 -9.046916 -1.541751 --0.77671325 -9.0491953 -1.5429521 --0.83231384 -9.0452394 -1.5431237 --0.88799155 -9.0419235 -1.5434668 --0.9437623 -9.0392447 -1.5439816 --0.99942517 -9.0352411 -1.5443248 --1.0551889 -9.0318747 -1.5448395 --1.11396 -9.0526075 -1.5496439 --1.1640478 -9.0035906 -1.5422658 --1.2207277 -9.0070171 -1.5441532 --1.2798465 -9.0266685 -1.5489576 --1.3350646 -9.0176706 -1.5487859 --1.3872129 -8.988863 -1.5451827 --1.4456248 -9.0006084 -1.5487859 --1.5034214 -9.0071163 -1.5515313 --1.5615205 -9.0142231 -1.5544482 --1.615059 -8.9947758 -1.5527325 --1.6691384 -8.9788857 -1.551703 --1.7297839 -8.9974976 -1.5568504 --1.7863033 -8.9934788 -1.5580516 --1.8365033 -8.9582224 -1.553762 --1.888377 -8.9323273 -1.5511882 --1.9439883 -8.9244223 -1.5518745 --1.9984952 -8.9113655 -1.551703 --2.0571256 -8.916213 -1.5547915 --2.1072459 -8.8842525 -1.5513598 --2.1719871 -8.913269 -1.5589095 --2.2307038 -8.9160204 -1.5618265 --2.2902713 -8.9212494 -1.5652581 --2.3464737 -8.9127445 -1.5662876 --2.399833 -8.893424 -1.5654298 --2.4438524 -8.8405504 -1.5585663 --2.5066409 -8.8557215 -1.5640571 --2.5617542 -8.8430128 -1.5645719 --2.6224067 -8.8488522 -1.5685183 --2.6715078 -8.8156242 -1.5654298 --2.7240911 -8.7943611 -1.5645719 --2.7797852 -8.7831163 -1.5656013 --2.833322 -8.7649574 -1.5654298 --2.8916826 -8.7614393 -1.5680035 --2.9570284 -8.7780743 -1.5743521 --3.0057085 -8.7448587 -1.5716069 --3.0544186 -8.712307 -1.569033 --3.1021791 -8.6776314 -1.5661161 --3.1685257 -8.6945305 -1.5728079 --3.2146094 -8.6555319 -1.5692046 --3.2645192 -8.6273527 -1.5676603 --3.3237736 -8.6237049 -1.5707489 --1.4539547 -3.7062724 -0.6544838 --1.4788626 -3.70277 -0.65551335 --3.4941969 -8.5911779 -1.5764112 --3.543077 -8.5604734 -1.5746953 --3.5901821 -8.5258617 -1.5722932 --3.6412642 -8.5009556 -1.5717784 --3.703589 -8.501935 -1.5762396 --3.7656636 -8.5015688 -1.5805292 --3.8064282 -8.4531517 -1.5757248 --3.8438699 -8.3982859 -1.5697194 --1.4777526 -3.1787179 -0.57160813 --1.502703 -3.181169 -0.57383877 --1.637785 -3.4125493 -0.62033832 --1.6586932 -3.4024358 -0.62033832 --1.6769145 -3.3868978 -0.61930883 --1.6936792 -3.3686242 -0.61776459 --1.7187989 -3.3669417 -0.61948043 --1.7462293 -3.3694501 -0.62205422 --1.7714603 -3.3673894 -0.62377006 --4.2448425 -7.9469223 -1.5302547 --4.3155951 -7.961431 -1.5383192 --4.3672137 -7.93998 -1.5393488 --4.4240136 -7.9276576 -1.5422658 --4.4788842 -7.9115076 -1.5444963 --4.5577679 -7.936841 -1.5551347 --4.6177883 -7.9283037 -1.5590811 --4.6788774 -7.9210248 -1.5633707 --4.7441015 -7.9200544 -1.569033 --4.8028393 -7.9076352 -1.5724647 --4.8600526 -7.8922768 -1.5753816 --1.99977 -3.2045512 -0.61896569 --2.019922 -3.193053 -0.61913723 --2.050117 -3.1971819 -0.62256896 --5.1602345 -7.9366288 -1.6098703 --5.2093778 -7.9056392 -1.6100419 --5.2714677 -7.8940067 -1.6143315 --5.3551474 -7.9137278 -1.625313 --5.35847 -7.8149118 -1.6114146 --5.4265594 -7.8110104 -1.6175916 --5.4868617 -7.7952886 -1.6213665 --5.5305848 -7.7558608 -1.6201655 --5.582109 -7.7273693 -1.6213665 --5.6299996 -7.6937675 -1.6215382 --5.6847296 -7.6693659 -1.6237687 --5.7281313 -7.6296139 -1.6227392 --5.774838 -7.5943232 -1.6227392 --5.814714 -7.5501614 -1.6208518 --5.8494177 -7.4995828 -1.6175916 --5.9014316 -7.4712806 -1.6193075 --5.9502406 -7.4387755 -1.6201655 --6.0069351 -7.4159036 -1.6232539 --6.0585742 -7.3865228 -1.6249698 --6.0993762 -7.3439045 -1.6237687 --6.1633477 -7.3289585 -1.6289163 --6.2235322 -7.3090034 -1.6330343 --6.2624717 -7.2639642 -1.6314901 --6.3082209 -7.2268858 -1.6318332 --6.3615799 -7.1983771 -1.6342354 --6.4207397 -7.1760921 -1.6381819 --6.4692807 -7.1416707 -1.639383 --6.5069857 -7.0953074 -1.6378387 --6.5510697 -7.0559697 -1.6380103 --6.6030135 -7.024971 -1.6402409 --6.6480312 -6.9864645 -1.6407557 --6.6955595 -6.9505072 -1.6419568 --6.7483993 -6.9198718 -1.6445305 --6.7941933 -6.8818388 -1.6453885 --6.841167 -6.8448982 -1.6465895 --6.8858409 -6.8055625 -1.6472759 --6.9373393 -6.7728171 -1.6496781 --6.9915318 -6.7424312 -1.6527666 --7.037765 -6.7041612 -1.6539677 --7.0837913 -6.6655769 -1.6551688 --7.1195054 -6.6172919 -1.6539677 --7.1599746 -6.573483 -1.6539677 --7.2074723 -6.5360436 -1.6556835 --7.2555141 -6.4989257 -1.657571 --7.3033714 -6.4614639 -1.6594584 --7.3510418 -6.4236598 -1.6613458 --7.3903184 -6.3784337 -1.6613458 --7.4225678 -6.3272161 -1.6598016 --7.459744 -6.2802844 -1.6594584 --7.5185938 -6.2513976 -1.6640912 --7.5583329 -6.2063971 -1.6644344 --7.6016293 -6.1642461 -1.6656355 --7.6531525 -6.1285701 -1.6687241 --7.6998868 -6.0888276 -1.670783 --7.7316661 -6.0372238 -1.669582 --7.7552996 -5.9794445 -1.6666651 --7.8020344 -5.9395032 -1.6688956 --7.8462071 -5.8974371 -1.6706115 --7.8798718 -5.8474216 -1.6700968 --7.9012966 -5.7884836 -1.6670082 --7.9478421 -5.7479744 -1.6694103 --8.0102253 -5.7185578 -1.6752443 --8.0548277 -5.6761093 -1.6773033 --8.1089153 -5.6400776 -1.6814214 --8.1547422 -5.5980206 -1.6838236 --8.1767015 -5.5395913 -1.6812497 --8.2007093 -5.4827461 -1.6791908 --8.2415981 -5.4372063 -1.680735 --8.3103104 -5.4096413 -1.6881132 --8.3458347 -5.3601451 -1.688628 --8.3902178 -5.3162155 -1.6910301 --6.5562568 -4.0983214 -1.3077087 --6.5636683 -4.0471601 -1.3041054 --8.4403515 -5.1327305 -1.6815929 --8.4556322 -5.0712194 -1.6783328 --8.5264463 -5.0428076 -1.6863973 --8.5504198 -4.9864259 -1.6850246 --8.5962286 -4.9427047 -1.6881132 --8.5981102 -4.8738375 -1.6824509 --8.5900106 -4.799849 -1.6749011 --8.6184368 -4.7465763 -1.6747296 --8.6984873 -4.7213268 -1.6848531 --8.7698631 -4.6906276 -1.6932608 --7.6270423 -4.0195651 -1.4626502 --8.8739824 -4.607162 -1.7025263 --8.896821 -4.5499349 -1.7014968 --6.9192576 -3.4854853 -1.3104541 --6.9060922 -3.4258947 -1.3037623 --6.9207859 -3.3804295 -1.3025612 --6.9413977 -3.3379009 -1.3025612 --6.9813395 -3.3045161 -1.306336 --7.0354214 -3.2774205 -1.3128563 --8.8905277 -4.0750804 -1.6644344 --8.9126701 -4.0192375 -1.6639197 --6.5632076 -2.9117386 -1.211621 --8.9559031 -3.9071996 -1.6628902 --8.9597893 -3.8436315 -1.6591153 --8.972311 -3.7839901 -1.6570562 --9.0172033 -3.7379174 -1.6611743 --9.0189838 -3.6739728 -1.6572279 --9.0340395 -3.6156366 -1.6558552 --9.0542202 -3.5594161 -1.655512 --9.0777283 -3.5045028 -1.6558552 --9.1128798 -3.4539726 -1.6584289 --7.5844612 -2.8217795 -1.3705089 --9.1693869 -3.3472869 -1.6611743 --9.182332 -3.2883055 -1.6598016 --9.1995478 -3.2309227 -1.6592869 --9.2331724 -3.179224 -1.6618606 --9.2646408 -3.1266043 -1.6640912 --9.2976818 -3.0743363 -1.6666651 --9.3201199 -3.0184426 -1.6673514 --9.3872995 -2.9766774 -1.6762738 --9.4195013 -2.9234006 -1.6788476 --9.5013657 -2.885005 -1.6905154 --9.5132217 -2.8249693 -1.6894859 --9.5511923 -2.772584 -1.6932608 --9.5879288 -2.7195699 -1.696864 --9.6310196 -2.6680496 -1.7016684 --9.6862011 -2.6194444 -1.7087034 --9.7821102 -2.5810652 -1.7231165 --9.8282948 -2.5288467 -1.7286073 --9.8789835 -2.4773562 -1.7349559 --9.9179249 -2.4225347 -1.7392455 --9.9556065 -2.3671005 -1.7433636 --9.9900999 -2.3106291 -1.746967 --10.026197 -2.2542555 -1.7509134 --10.044653 -2.1937442 -1.7517713 --10.029975 -2.1261485 -1.7467953 --9.9289608 -2.0411699 -1.7265483 --10.052412 -2.0023282 -1.7462806 --10.316993 -1.9892637 -1.7910643 --10.472342 -1.9526323 -1.8164589 --10.772094 -1.9401731 -1.8674197 --11.132256 -1.9345585 -1.9290189 --11.29938 -1.8922344 -1.9564725 --11.335094 -1.8267834 -1.9607621 --11.385034 -1.7632253 -1.9676255 --11.35471 -1.6872574 -1.9604189 --11.344366 -1.6146413 -1.9568156 --11.351131 -1.5446049 -1.9563009 --11.367234 -1.4758139 -1.957502 --11.34381 -1.4020535 -1.9518397 --11.342415 -1.3312753 -1.9501238 --11.364078 -1.2631768 -1.952526 --11.356917 -1.1918834 -1.9499522 --11.359115 -1.1216928 -1.9490943 --11.385404 -1.0537874 -1.952526 --11.398525 -0.98450065 -1.9537271 --11.366053 -0.9114747 -1.9470353 --11.403853 -0.84411335 -1.9526976 --11.420613 -0.77492386 -1.9547566 --11.42712 -0.7049548 -1.9550998 --11.38008 -0.63199067 -1.9461774 --11.433927 -0.56462491 -1.9549282 --11.468672 -0.49581549 -1.9604189 --11.465591 -0.42521724 -1.9593894 --11.45026 -0.35431102 -1.9563009 --11.457143 -0.28416851 -1.9571588 --11.4567 -0.21382689 -1.9568156 --11.429229 -0.14317092 -1.9518397 --11.420041 -0.072977841 -1.9501238 --11.466577 -0.0029114876 -1.9581883 --11.450616 0.067351848 -1.9554429 --11.392852 0.13691777 -1.945491 --11.379977 0.20660461 -1.943432 --11.38736 0.27664319 -1.9449762 --11.349998 0.34542701 -1.9387991 --11.402797 0.41708499 -1.948408 --11.428567 0.48826578 -1.9533839 --11.399772 0.55712801 -1.9489228 --11.433518 0.62912583 -1.9554429 --11.41371 0.69830453 -1.9526976 --11.491777 0.7738933 -1.9671108 --10.59524 -0.26964146 -1.9367043 --10.644856 -0.20555705 -1.9456842 --10.616427 -0.13984799 -1.9401863 --10.634781 -0.074829362 -1.943485 --10.638971 -0.0095778545 -1.944218 --10.659474 0.055809133 -1.9480667 --10.71398 0.12183732 -1.9583296 --10.671747 0.1868535 -1.9506323 --10.682194 0.25260904 -1.9528315 --10.665703 0.31771049 -1.9500825 --10.63408 0.38209018 -1.9445846 --10.629571 0.44724989 -1.944218 --10.610916 0.51170623 -1.9412858 --10.62819 0.57792407 -1.9451344 --10.59795 0.64152378 -1.9401863 --10.61147 0.70771641 -1.943485 --10.556924 0.76917249 -1.9341385 --10.601007 0.83780473 -1.9433018 --10.612318 0.90425378 -1.9464172 --10.555662 0.96470213 -1.9368875 --10.550523 1.0295477 -1.9370707 --10.550852 1.0949752 -1.9383537 --10.534163 1.158619 -1.9365209 --10.550291 1.225956 -1.9409193 --10.465484 1.2812339 -1.9264414 --10.524702 1.3540779 -1.9390867 --10.530809 1.4206016 -1.9418356 --10.47225 1.4781852 -1.9324892 --10.474653 1.5441339 -1.9346883 --10.413484 1.6004633 -1.9249753 --10.436472 1.6696079 -1.9312062 --10.462882 1.7397394 -1.9381703 --10.442323 1.8022341 -1.9363377 --10.420423 1.8643689 -1.9343218 --10.404921 1.9275563 -1.9335887 --10.356208 1.9843348 -1.9266247 --10.33998 2.0470784 -1.9258916 --10.344562 2.1140273 -1.9291904 --10.334282 2.1780684 -1.9297402 --10.309195 2.2389343 -1.927541 --10.2684 2.2961423 -1.9224095 --10.29723 2.3690217 -1.9306564 --10.297807 2.4357796 -1.9335887 --10.261651 2.4938135 -1.9295568 --10.238525 2.554827 -1.9280908 --10.196943 2.6110184 -1.9231426 --10.241584 2.6895144 -1.9348716 --10.201157 2.7459178 -1.93029 --10.1699 2.8045397 -1.927541 --10.161962 2.8695593 -1.9293736 --10.147941 2.9329498 -1.9301066 --10.085445 2.9820619 -1.9214932 --10.049079 3.0384836 -1.9180112 --10.025549 3.0986352 -1.9170948 --10.056032 3.175781 -1.9268079 --10.00174 3.2262588 -1.9200271 --9.9789534 3.2866452 -1.9194773 --9.9828272 3.3559566 -1.9242421 --9.9676266 3.4190605 -1.9253418 --9.9362526 3.4765854 -1.9233259 --9.9462147 3.5487185 -1.9295568 --9.9261007 3.6103525 -1.9299234 --9.8733425 3.6599152 -1.9238757 --9.7881622 3.6968114 -1.9114137 --9.8386965 3.7850361 -1.9260749 --9.8436623 3.8564494 -1.931756 --9.7741575 3.8985677 -1.9225928 --9.7518749 3.9592071 -1.9229593 --9.7074089 4.0107112 -1.9189276 --9.7034607 4.0789604 -1.9231426 --9.685482 4.1415148 -1.9246087 --9.6256294 4.1859694 -1.9176446 --9.5709925 4.2322311 -1.9117801 --9.571743 4.3029695 -1.9172782 --9.4476976 4.3170886 -1.8973023 --9.5458593 4.43294 -1.9229593 --9.4980307 4.4817805 -1.9187442 --9.4526224 4.5314765 -1.915079 --9.4113817 4.5829358 -1.9123299 --9.3927774 4.6453905 -1.9143459 --9.3825464 4.7122006 -1.9181944 --9.3613377 4.7737012 -1.9198438 --9.3056803 4.8174939 -1.9143459 --9.2550592 4.8635273 -1.9099475 --9.2068272 4.9105091 -1.906099 --9.1817112 4.9697161 -1.9071985 --9.1303644 5.0146036 -1.9028002 --9.1054344 5.0738811 -1.904083 --9.0689955 5.1267533 -1.9029834 --9.0416317 5.1847482 -1.9038998 --8.9858541 5.2262907 -1.8987683 --8.9951086 5.3058 -1.9077483 --8.9615393 5.3603883 -1.9075651 --8.9310017 5.4168038 -1.9081149 --8.8984337 5.4720163 -1.9082981 --8.8713646 5.5306735 -1.9097643 --8.8339386 5.5829024 -1.9090312 --8.8111048 5.6444249 -1.9115969 --8.7688847 5.6935649 -1.9099475 --8.736248 5.7488837 -1.9104973 --8.68118 5.7892904 -1.906099 --8.669116 5.8584099 -1.9114137 --8.7084427 5.9631433 -1.9284573 --8.6256495 5.9845247 -1.9180112 --8.649087 6.0797358 -1.931756 --8.6052132 6.1281295 -1.93029 --8.5586796 6.1744881 -1.928274 --8.5230131 6.2286272 -1.9288238 --8.5146608 6.303031 -1.9357879 --8.4703197 6.3510294 -1.934505 --8.443718 6.412395 -1.9374373 --8.4065514 6.4658823 -1.9379871 --8.365943 6.5167379 -1.9378039 --8.3173094 6.5612507 -1.9357879 --8.3314285 6.6557236 -1.9487997 --8.2613888 6.6832252 -1.9418356 --8.2270708 6.7393966 -1.943485 --8.2128038 6.8123436 -1.9500825 --8.1557932 6.8499637 -1.9464172 --8.096384 6.8852305 -1.9422022 --8.0808039 6.9578705 -1.9487997 --8.0379591 7.0073223 -1.9487997 --7.9933376 7.0552092 -1.9484332 --7.9528298 7.1067429 -1.9491663 --7.9061575 7.1527686 -1.9484332 --7.8526959 7.1925139 -1.9460508 --7.805532 7.2378879 -1.9453176 --7.8175983 7.3387976 -1.9597956 --7.7617316 7.3764691 -1.9570466 --7.680902 7.3898778 -1.9478834 --7.6720352 7.4725342 -1.9574132 --7.6162395 7.5098052 -1.9548475 --7.6089811 7.5952873 -1.9651103 --7.5560102 7.6355433 -1.9634609 --7.5207 7.6937127 -1.9665765 --7.4856424 7.7524433 -1.9698752 --7.4379334 7.7982283 -1.9698752 --7.4000564 7.8544521 -1.9726242 --7.365118 7.9141026 -1.9762895 --7.3217421 7.9649348 -1.9777555 --7.2568717 7.9922433 -1.9733572 --7.2168851 8.0468655 -1.9759229 --7.1712856 8.0954113 -1.9770225 --7.1195359 8.137042 -1.9764727 --7.0913296 8.205862 -1.9827038 --7.0516958 8.2619295 -1.9858192 --7.0065718 8.3118076 -1.9874686 --6.9529233 8.3516207 -1.9867356 --6.9002991 8.3926067 -1.986369 --6.8542504 8.4416571 -1.9880184 --6.8023243 8.4835548 -1.9880184 --6.7568555 8.5336113 -1.9900343 --6.6928616 8.560195 -1.9865524 --6.6450176 8.6073256 -1.9880184 --6.5908866 8.6463737 -1.9876519 --6.5489421 8.7015753 -1.9911339 --6.5083265 8.758954 -1.9951658 --6.4631824 8.8106127 -1.9979148 --6.3951612 8.8309956 -1.9935164 --6.3597217 8.8964605 -1.9995642 --6.2931113 8.9184475 -1.9957156 --6.2556882 8.9819002 -2.0013969 --6.216609 9.0436087 -2.0067115 --6.1709361 9.0962257 -2.0100102 --6.1111784 9.1282005 -2.0087273 --6.0425897 9.1466608 -2.0045123 --5.982058 9.1769772 -2.0030463 --5.9309549 9.2217779 -2.0048788 --5.8842669 9.2737665 -2.0083609 --5.8178644 9.2946987 -2.0050621 --5.787581 9.3737173 -2.0145919 --5.730979 9.4107313 -2.0149584 --5.6761651 9.4507751 -2.016058 --5.6240811 9.4955759 -2.0182571 --5.5617452 9.5231152 -2.0167911 --5.5017362 9.5545063 -2.0162413 --5.4653335 9.627409 -2.0246716 --5.4037571 9.6564732 -2.0237551 --5.3543758 9.7075253 -2.0276036 --5.2759295 9.7056484 -2.0202732 --5.2376318 9.7776995 -2.0287032 --5.1711135 9.7974815 -2.0261376 --5.1145287 9.8360043 -2.0276036 --5.0648365 9.8881998 -2.032002 --4.9828129 9.8769627 -2.0232053 --4.9295516 9.9223166 -2.0263209 --4.8741927 9.9638567 -2.0287032 --4.8163767 10.000663 -2.0301695 --4.7641883 10.049569 -2.0342011 --4.700357 10.074158 -2.0332849 --4.6462488 10.119783 -2.036767 --4.5739493 10.125705 -2.0321853 --4.518919 10.16975 -2.0354841 --4.4615517 10.208996 -2.0378666 --4.3980503 10.234373 -2.0374999 --4.338614 10.269317 -2.0391495 --4.2709966 10.28485 -2.0369501 --4.2100382 10.316323 -2.0380497 --4.1539769 10.36021 -2.0417151 --4.0964541 10.401053 -2.0448306 --4.0389414 10.442496 -2.0481293 --3.9702542 10.455134 -2.045747 --3.9029374 10.471008 -2.0440977 --3.8274701 10.464293 -2.0380497 --3.7694993 10.505161 -2.0415318 --3.707581 10.535511 -2.0429981 --3.6463938 10.568284 -2.0450139 --3.5843141 10.598841 -2.0466633 --3.521378 10.627166 -2.0479462 --3.4603539 10.661663 -2.0505118 --3.3933811 10.67801 -2.0495956 --3.3222499 10.680796 -2.0461135 --3.2638075 10.724491 -2.0506952 --3.2046733 10.766929 -2.0550935 --3.1366255 10.779782 -2.0538106 --3.0685408 10.792206 -2.0525277 --3.0035787 10.815567 -2.0534441 --2.9351008 10.826202 -2.0519779 --2.8688688 10.844958 -2.0521612 --2.8025169 10.86331 -2.0523446 --2.7465973 10.923203 -2.0605915 --2.6818612 10.949398 -2.0624242 --2.6143985 10.964691 -2.0622408 --2.5504036 10.994891 -2.0649898 --2.4785664 10.991154 -2.0613246 --2.4037154 10.972545 -2.0549102 --2.3383889 10.996703 -2.0567429 --2.2760339 11.035877 -2.0615077 --2.2036517 11.026499 -2.0571094 --2.1314704 11.016648 -2.052711 --2.0687163 11.05561 -2.0576591 --2.0036399 11.083572 -2.0605915 --1.9416778 11.130522 -2.067189 --1.8715523 11.131562 -2.0651731 --1.8025868 11.138954 -2.06444 --1.7296718 11.120664 -2.0589421 --1.6634364 11.14468 -2.0615077 --1.600451 11.19263 -2.068655 --1.534142 11.219771 -2.0719538 --1.4657789 11.232873 -2.0726869 --1.3991315 11.26019 -2.076169 --1.3212538 11.194366 -2.0622408 --1.2592072 11.261858 -2.07342 --1.1880165 11.24982 -2.0697546 --1.1186748 11.253963 -2.0692048 --1.0483229 11.246911 -2.0666392 --0.978185 11.2404 -2.0642567 --0.90848351 11.237371 -2.0626073 --0.84061378 11.25744 -2.0653563 --0.77219582 11.272193 -2.067189 --0.70313877 11.278682 -2.0675554 --0.63463825 11.295544 -2.0699379 --0.56300771 11.253078 -2.0613246 --0.49558854 11.293642 -2.0682886 --0.42672801 11.308258 -2.0704877 --0.35742703 11.313611 -2.0710375 --0.28785101 11.309695 -2.0699379 --0.21858373 11.318129 -2.0712209 --0.14905496 11.313359 -2.0701213 --0.079613827 11.311111 -2.0695715 --0.010212346 11.315319 -2.0703044 -0.059145804 11.301406 -2.0677388 -0.12815458 11.27134 -2.0622408 -0.19734615 11.272307 -2.0626073 -0.26699528 11.291523 -2.0664558 -0.3359814 11.279846 -2.0646234 -0.40518692 11.277573 -2.0646234 -0.47404686 11.267016 -2.0631571 -0.54194087 11.238365 -2.0583923 -0.61328822 11.279001 -2.0666392 -0.68129611 11.255401 -2.062974 -0.74799138 11.215696 -2.0563762 -0.81565315 11.195209 -2.0534441 -0.88433027 11.189993 -2.0534441 -0.95505977 11.208844 -2.0580256 -1.0243546 11.208647 -2.0591252 -1.0944464 11.215848 -2.061691 -1.1583759 11.161986 -2.0528944 -1.2338262 11.218185 -2.0648065 -1.2929946 11.127401 -2.0492289 -1.3659042 11.157313 -2.0563762 -1.4330845 11.138972 -2.0545437 -1.5021932 11.135815 -2.0556433 -1.5630754 11.073823 -2.045747 -1.6456137 11.163224 -2.06444 -1.7042253 11.088787 -2.0523446 -1.7737854 11.08783 -2.054177 -1.8435589 11.087404 -2.0561931 -1.9095494 11.064259 -2.0539939 -1.969613 11.008787 -2.045747 -2.0346181 10.982962 -2.0431812 -2.0940166 10.928754 -2.0353007 -2.1789777 11.006349 -2.0525277 -2.2340722 10.932092 -2.040982 -2.3007028 10.916254 -2.0406156 -2.3665974 10.897129 -2.0396993 -2.4372771 10.899672 -2.0429981 -2.5005844 10.869183 -2.0400658 -2.560442 10.824934 -2.0345678 -2.644455 10.88162 -2.048496 -2.6876144 10.770761 -2.0303526 -2.7712069 10.822636 -2.0435479 -2.8572841 10.880545 -2.0580256 -2.9176049 10.839075 -2.0534441 -2.9762182 10.792539 -2.0479462 -3.0576096 10.828 -2.0583923 -3.1136205 10.773147 -2.0514281 -3.1651719 10.704818 -2.0418985 -3.239615 10.714366 -2.0475795 -3.3009422 10.680198 -2.0448306 -3.3625646 10.647555 -2.0424483 -3.4245141 10.616431 -2.0404322 -3.4788284 10.562538 -2.034018 -3.5382488 10.525152 -2.0309024 -3.5992551 10.493015 -2.0288866 -3.6700637 10.489291 -2.0325518 -3.7406318 10.484167 -2.0360339 -3.7958193 10.436073 -2.0310857 -3.8707154 10.442083 -2.0369501 -3.933672 10.415378 -2.0364003 -3.9982114 10.39288 -2.036767 -4.064774 10.375475 -2.038233 -4.1127009 10.311074 -2.0303526 -4.1755214 10.284734 -2.0301695 -4.2310414 10.240748 -2.026504 -4.2903695 10.206438 -2.0248547 -4.3471174 10.166362 -2.0221057 -4.4145112 10.151217 -2.0244882 -4.4810877 10.133829 -2.026504 -4.5435867 10.107039 -2.0266874 -4.6014314 10.070028 -2.0248547 -4.6552668 10.024664 -2.0213728 -4.7204647 10.003913 -2.0230222 -4.7770844 9.9650087 -2.0210061 -4.8407207 9.9408131 -2.0221057 -4.9055471 9.9188547 -2.0237551 -4.9544044 9.8648481 -2.0188069 -5.0268974 9.8579092 -2.0237551 -5.070569 9.7945766 -2.0169742 -5.1214266 9.7458754 -2.013309 -5.1811295 9.7142677 -2.013309 -5.2326832 9.6675959 -2.0101936 -5.2672973 9.5904999 -2.0006638 -5.3447051 9.5914917 -2.0078111 -5.4029732 9.5576601 -2.0076277 -5.4536924 9.5106831 -2.0046957 -5.5154057 9.4829893 -2.0059783 -5.5610027 9.4278002 -2.0013969 -5.6182413 9.3926573 -2.0012136 -5.6742387 9.3554859 -2.0006638 -5.7191777 9.300396 -1.9962654 -5.7574148 9.235095 -1.9896678 -5.8328772 9.2295122 -1.9962654 -5.8920498 9.1976871 -1.9971817 -5.9376688 9.1448708 -1.9935164 -5.992588 9.1066236 -1.9931499 -6.0309 9.0435095 -1.9872854 -6.0884781 9.0095921 -1.9880184 -6.1486435 8.9793644 -1.9896678 -6.1946583 8.928545 -1.9867356 -6.2561102 8.9000187 -1.9889348 -6.3043294 8.8526554 -1.9869188 -6.3453016 8.7954693 -1.9827038 -6.3846498 8.7365265 -1.9781221 -6.4381361 8.6971865 -1.9781221 -6.4807649 8.6433611 -1.9748234 -6.5515132 8.6269207 -1.9803213 -6.5983305 8.5787659 -1.9784887 -6.6478243 8.5342398 -1.9775723 -6.693367 8.4847994 -1.9755564 -6.7410078 8.4381933 -1.9742736 -6.7784367 8.3790932 -1.9700584 -6.8290997 8.3365831 -1.9698752 -6.8631783 8.2740936 -1.9649271 -6.9157147 8.2340841 -1.9654769 -6.9680185 8.1937418 -1.9660267 -6.9739056 8.0994291 -1.9533813 -7.0215335 8.0542622 -1.9528315 -7.0896859 8.032402 -1.9581462 -7.1525941 8.0041437 -1.9619948 -7.1765108 7.9324026 -1.9550307 -7.2057929 7.8671951 -1.9497161 -7.261282 7.8307629 -1.9517319 -7.3051572 7.7817602 -1.9506323 -7.3297429 7.7125611 -1.9444014 -7.3755651 7.6660247 -1.9440348 -7.3888555 7.5861163 -1.9350548 -7.4504485 7.5560369 -1.9390867 -7.4966712 7.51018 -1.9390867 -7.5593815 7.4806356 -1.943485 -7.594595 7.4238033 -1.9407361 -7.596159 7.3347254 -1.9293736 -7.6623616 7.3083344 -1.9348716 -7.6762938 7.2321925 -1.9269912 -7.7226844 7.186965 -1.927541 -7.7557817 7.1294641 -1.9247919 -7.8008366 7.0830631 -1.9251585 -7.8419552 7.0330958 -1.9246087 -7.880547 6.9809346 -1.9235091 -7.9269319 6.9356861 -1.9244255 -7.9447942 6.8657041 -1.9183778 -7.984529 6.8149118 -1.917828 -8.0119133 6.7537522 -1.9143459 -8.0396042 6.6931429 -1.9110471 -8.0706501 6.63557 -1.9086647 -8.1249495 6.5970788 -1.9119635 -8.1606741 6.5434108 -1.9108639 -8.2006702 6.4932146 -1.9108639 -8.2372599 6.440352 -1.9101307 -8.2711744 6.3854823 -1.9088479 -8.3023815 6.3286514 -1.9070153 -8.3229923 6.2639928 -1.9028002 -8.3636379 6.2145648 -1.90335 -8.4095383 6.1689444 -1.9051826 -8.3843327 6.0716753 -1.8907046 -8.4558182 6.0446997 -1.8985851 -8.4911423 5.9915686 -1.8982185 -8.4987059 5.9191279 -1.891621 -8.5486364 5.8763366 -1.8947365 -8.5707026 5.8143897 -1.891621 -8.6070347 5.7622385 -1.8918042 -8.6405888 5.7082343 -1.8914378 -8.6812153 5.6588674 -1.8927206 -8.6810484 5.5831585 -1.8850235 -8.7134829 5.5287337 -1.8846569 -8.7164116 5.4558654 -1.8778762 -8.7764902 5.4188075 -1.8837407 -8.8095741 5.3648539 -1.8837407 -8.8490686 5.3147478 -1.8852067 -8.7783232 5.1992283 -1.8628484 -8.8711786 5.1809654 -1.8760434 -8.8789482 5.112699 -1.8709121 -8.9366531 5.0731683 -1.8765932 -9.0353842 5.0561666 -1.8910712 -9.0722637 5.0039549 -1.892354 -9.0777502 4.9345779 -1.8870394 -9.0913925 4.8699646 -1.8835573 -9.1480541 4.8283153 -1.8892386 -9.1862297 4.7766285 -1.8910712 -9.2311144 4.7282405 -1.89437 -9.2459097 4.6644254 -1.8914378 -9.2444229 4.5927329 -1.8852067 -9.2521191 4.5259876 -1.8809916 -9.2859163 4.4721184 -1.8822745 -9.3273945 4.4217954 -1.8852067 -9.3641491 4.3690529 -1.8872226 -9.4247293 4.3271017 -1.8941867 -9.4663334 4.2760715 -1.8973023 -9.4986811 4.2207012 -1.8985851 -9.3676634 4.0938349 -1.866697 -9.4603453 4.0653915 -1.8804418 -9.5086555 4.0172153 -1.8852067 -9.5331259 3.9587955 -1.8852067 -9.6127577 3.9228871 -1.8963859 -9.5946751 3.8469996 -1.8879557 -9.6089525 3.7844527 -1.8861231 -9.7236786 3.7608881 -1.9044496 -9.688674 3.6791651 -1.8929039 -9.7258043 3.6251414 -1.8958361 -9.7284775 3.5583045 -1.8919876 -9.7630816 3.5031934 -1.8945533 -9.7593555 3.4344103 -1.889605 -9.8081236 3.3840837 -1.8951031 -9.8398781 3.3276181 -1.8973023 -9.8498459 3.2637773 -1.8952863 -9.8659468 3.2020643 -1.8945533 -9.9219475 3.1530807 -1.9017006 -9.9007435 3.0795848 -1.8938202 -9.9514284 3.0285096 -1.9000512 -9.9783039 2.9699159 -1.9017006 -9.9736853 2.9020419 -1.8973023 -9.9903584 2.8405209 -1.8971189 -10.028439 2.7849555 -1.9011508 -10.056724 2.7264571 -1.90335 -10.081817 2.6669619 -1.9049994 -10.072289 2.5984194 -1.9000512 -10.058489 2.5291355 -1.89437 -10.109147 2.4760246 -1.9011508 -10.128931 2.4150896 -1.9020671 -10.141644 2.3524499 -1.9017006 -10.147256 2.2882311 -1.9000512 -10.14094 2.2215073 -1.8962027 -10.174572 2.1635363 -1.9000512 -10.214614 2.1066265 -1.9051826 -10.243735 2.0471869 -1.9082981 -10.26093 1.9852278 -1.9092145 -10.271952 1.9220498 -1.9090312 -10.282584 1.8588111 -1.9088479 -10.287986 1.7946695 -1.9077483 -10.282323 1.7287383 -1.9046328 -10.312145 1.6687562 -1.9082981 -10.325105 1.6059041 -1.9088479 -10.338654 1.5431008 -1.9095809 -10.332356 1.4774079 -1.9066488 -10.371421 1.4181117 -1.9123299 -10.383826 1.354956 -1.913063 -10.33146 1.2836989 -1.9017006 -10.392838 1.2266216 -1.9117801 -10.410915 1.1640313 -1.9137961 -10.439369 1.1024013 -1.917828 -10.384308 1.0321975 -1.9062822 -10.457984 0.97475874 -1.9189276 -10.389338 0.90409142 -1.9049994 -10.479938 0.84722161 -1.9209434 -10.420237 0.77806824 -1.9088479 -10.436584 0.71492285 -1.9110471 -10.43783 0.65068811 -1.9104973 -10.432793 0.5861339 -1.9088479 -10.494121 0.5250088 -1.9196606 -10.512858 0.46129832 -1.9225928 -10.496826 0.39607891 -1.9191108 -10.497094 0.33160201 -1.9187442 -10.461587 0.26623499 -1.9117801 -10.544602 0.2036173 -1.9269912 -10.490606 0.1381858 -1.9167284 -10.529595 0.074085265 -1.9238757 -10.490529 0.0094385985 -1.916545 -10.505136 -0.055006903 -1.919294 -10.518362 -0.11962015 -1.9218597 -10.524311 -0.18427756 -1.9231426 -10.523965 -0.24887325 -1.9233259 -10.485882 -0.31236076 -1.916545 -10.510294 -0.37764713 -1.9214932 -10.484206 -0.44113901 -1.9170948 -10.499958 -0.50635958 -1.9205769 -10.510396 -0.57152337 -1.9231426 -10.533186 -0.63760591 -1.9280908 -10.534961 -0.70261663 -1.9291904 -10.504959 -0.76538831 -1.9244255 -10.512805 -0.83083755 -1.9268079 -10.513387 -0.89582777 -1.9279075 -10.517482 -0.96121418 -1.9297402 -10.531933 -1.0277344 -1.9335887 -10.510761 -1.0908161 -1.9308398 -10.432536 -1.1474454 -1.9174614 -10.462406 -1.2157471 -1.9244255 -10.465484 -1.2812339 -1.9264414 -10.451574 -1.3446724 -1.9253418 -10.472354 -1.4127183 -1.9308398 -10.436234 -1.4731028 -1.9257083 -10.4163 -1.5355339 -1.9236923 -10.40571 -1.5992689 -1.9235091 -10.442296 -1.6705394 -1.9323058 -10.403727 -1.7299056 -1.9269912 -10.380322 -1.791536 -1.9246087 -10.351716 -1.8520789 -1.9213099 -10.295692 -1.9073255 -1.9128797 -10.289588 -1.9715725 -1.9139793 -9.9793119 -1.9756887 -1.8573505 -9.6703472 -1.9762706 -1.8009048 -9.4733467 -1.9966508 -1.7657179 -9.3369894 -2.0278313 -1.7420768 -9.1843014 -2.0537682 -1.71532 -9.0450649 -2.0809941 -1.691129 -8.968029 -2.1212957 -1.6788503 -8.8851099 -2.1593382 -1.6654719 -8.6732969 -2.1643178 -1.6273527 -8.6712818 -2.2204213 -1.6295519 -7.8026948 -2.0491436 -1.4647967 -7.6010671 -2.0461397 -1.4283268 -7.4774885 -2.0621674 -1.4068849 -7.4467192 -2.1029344 -1.4034028 -7.0294633 -2.0317788 -1.3249654 -6.9273052 -2.0483954 -1.3075552 -6.6755919 -2.0186026 -1.2610059 -6.5851235 -2.0354342 -1.2457949 -6.9774837 -2.2036784 -1.3249654 -6.2078624 -2.0026295 -1.1768872 -6.1188917 -2.0154681 -1.1618594 -5.9852715 -2.0122566 -1.1380349 -5.8844724 -2.0186455 -1.1206248 -5.7903185 -2.0261467 -1.1044974 -5.7000012 -2.0338907 -1.0891032 -5.5331287 -2.0127165 -1.0584979 -5.503161 -2.040138 -1.0550159 -5.3801789 -2.0321901 -1.0330241 -5.3419175 -2.0552816 -1.0278927 -5.2367568 -2.0518055 -1.0093828 -5.191196 -2.0707889 -1.0027853 -5.2057185 -2.1136954 -1.0082833 -5.2389889 -2.1647401 -1.0176299 -5.3307343 -2.2410316 -1.0388886 -5.1523714 -2.2033606 -1.0055343 -5.0576181 -2.1996524 -0.98904043 -5.0557141 -2.2358119 -0.99142289 -5.141428 -2.3115292 -1.0117654 -5.145925 -2.3516121 -1.0156139 -5.1313992 -2.3831425 -1.0156139 -5.0988984 -2.4061937 -1.0119486 -5.1008811 -2.4455082 -1.0154306 -5.0504255 -2.4595463 -1.0081 -4.9312572 -2.4390676 -0.98647475 -5.0593958 -2.5411904 -1.0163469 -4.957881 -2.528424 -0.99838698 -4.8619547 -2.517221 -0.98152661 -4.8359752 -2.5415187 -0.97932738 -4.916573 -2.6224923 -0.99966985 -4.9021182 -2.6535463 -1.0000364 -4.8624787 -2.6707985 -0.99508822 -4.9215703 -2.7426908 -1.0112156 -4.8396077 -2.7360725 -0.99728739 -4.8491654 -2.780875 -1.0029685 -4.7555289 -2.7660973 -0.98647475 -4.7452412 -2.7992201 -0.98794085 -4.7726908 -2.8550277 -0.9976539 -4.7710533 -2.8939443 -1.0011359 -4.6954246 -2.887635 -0.98849064 -4.7276731 -2.9475939 -0.99948657 -4.6804113 -2.9581664 -0.99307227 -4.6572056 -2.9836478 -0.99197268 -4.6734409 -3.034651 -0.99966985 -4.7056489 -3.0967722 -1.0110322 -4.5695992 -3.0475957 -0.98482537 -4.5214901 -3.0557625 -0.97822779 -4.5213118 -3.0962224 -0.98244292 -4.5385761 -3.1491222 -0.99068981 -4.5111251 -3.1712582 -0.98885721 -4.4443355 -3.1652348 -0.97804457 -4.4750586 -3.2286785 -0.98959023 -4.4861188 -3.2786963 -0.9967376 -4.4493232 -3.2938788 -0.99288905 -4.4274554 -3.3199379 -0.99252248 -4.4414496 -3.3732007 -1.0005862 -4.4604106 -3.4309545 -1.0099326 -4.4392748 -3.4582584 -1.0099326 -4.3955884 -3.4677761 -1.0046179 -4.327374 -3.4572546 -0.99343884 -4.3450594 -3.5152731 -1.0027853 -4.3370972 -3.5530806 -1.0060841 -4.3106742 -3.57586 -1.0049845 -4.3165054 -3.6256347 -1.0117654 -4.3503461 -3.6998141 -1.0255102 -4.2821183 -3.6873116 -1.014331 -4.2482972 -3.7038271 -1.011582 -4.2218056 -3.726572 -1.0106658 -4.2193861 -3.7707467 -1.0157971 -4.1859632 -3.7873325 -1.0132314 -4.1901946 -3.8381763 -1.0201955 -3.5963542 -3.3351116 -0.87523282 -3.5564704 -3.3389499 -0.87028468 -3.5295024 -3.3546145 -0.8686353 -3.5109777 -3.3782525 -0.86918509 -3.5183532 -3.4271674 -0.87651569 -4.0131812 -3.9573658 -1.011582 -4.0055223 -3.9985831 -1.0159804 -3.9816036 -4.0237842 -1.0161637 -4.0131903 -4.105782 -1.0311915 -3.9797275 -4.1218433 -1.0289923 -3.9224706 -4.1127515 -1.0203788 -3.9153633 -4.1560602 -1.025327 -3.9205971 -4.2131085 -1.0337571 -3.8494303 -4.1878734 -1.0212951 -2.4695427 -2.7201879 -0.64578491 -2.455431 -2.7382169 -0.64651799 -2.4281533 -2.7414582 -0.64358574 -2.400281 -2.7437284 -0.64047027 -2.4142554 -2.794106 -0.64926696 -3.7884128 -4.438879 -1.0487849 -3.6704955 -4.3545599 -1.022578 -3.621063 -4.349802 -1.0159804 -3.6411321 -4.4288888 -1.0297253 -3.6213248 -4.4603047 -1.0319245 -3.5877385 -4.4747715 -1.0300919 -3.5687582 -4.5074906 -1.0326575 -3.585238 -4.5858364 -1.0460359 -3.5480206 -4.596077 -1.0432869 -3.4845896 -4.5716343 -1.0324743 -3.4458315 -4.5787916 -1.0291755 -3.403013 -4.580122 -1.0245938 -3.3818238 -4.6104283 -1.026793 -3.329253 -4.597652 -1.0190959 -3.2901168 -4.6027985 -1.0156139 -3.2595453 -4.6196871 -1.0148808 -5.122395 -7.3548489 -1.6317511 -3.136337 -4.5629368 -0.99307227 -3.0994494 -4.5690789 -0.99014002 -3.0866697 -4.6108832 -0.99527144 -3.0745769 -4.6543422 -1.0007694 -4.8084779 -7.3767519 -1.6024287 -4.7572751 -7.3970227 -1.6004127 -4.709691 -7.4227533 -1.5996797 -4.6635356 -7.4506783 -1.5994965 -4.6259952 -7.4925365 -1.6024287 -4.6535692 -7.6416831 -1.6288189 -2.8172238 -4.691052 -0.98097676 -4.4968176 -7.5924869 -1.6059108 -4.4521294 -7.6233315 -1.6066438 -4.4106665 -7.6598768 -1.6086597 -4.3611565 -7.6825213 -1.6077434 -4.3134551 -7.7082782 -1.6075602 -4.2618036 -7.7268529 -1.6059108 -4.2049212 -7.7355838 -1.6022455 -4.1485572 -7.7447748 -1.5987633 -4.115643 -7.797904 -1.6046278 -4.0327945 -7.7558527 -1.5905164 -3.9891634 -7.7883258 -1.5921658 -3.9426286 -7.8152895 -1.5927156 -3.8959129 -7.8419747 -1.5932654 -3.8593864 -7.8895745 -1.5982136 -3.8104777 -7.912221 -1.5980303 -3.7563827 -7.9239049 -1.5956479 -3.6935585 -7.9165154 -1.5894169 -3.6424527 -7.9336696 -1.5883173 -3.6034174 -7.9773712 -1.5927156 -3.5544014 -7.999331 -1.5927156 -3.5131257 -8.0390053 -1.5963809 -3.4575224 -8.0459595 -1.5934488 -3.3981402 -8.043479 -1.5886838 -3.3434436 -8.0514679 -1.5861181 -3.2898915 -8.0618191 -1.5841022 -3.2410948 -8.0836782 -1.5844687 -3.1925142 -8.1061573 -1.5850185 -3.1423609 -8.1246767 -1.5848353 -3.0907047 -8.1392097 -1.5839189 -3.0228493 -8.1101217 -1.5743891 -2.9875517 -8.1682158 -1.5822695 -2.961616 -8.2539387 -1.5956479 -1.1178461 -3.1773336 -0.58878952 -1.0983293 -3.1841328 -0.58878952 -1.0841255 -3.2066431 -0.591905 -1.0767994 -3.2505612 -0.59923559 -1.0777764 -3.3216245 -0.6118809 -1.071668 -3.3731456 -0.62067765 -2.5927944 -8.3359461 -1.5883173 -2.5358722 -8.3328886 -1.5846519 -0.96452188 -3.2415473 -0.5913552 -0.91302484 -3.1388552 -0.57027972 -0.89563024 -3.1510174 -0.57156259 -0.89022255 -3.2066555 -0.58127564 -2.1635561 -7.980742 -1.5023659 -2.1110263 -7.9805622 -1.4998002 -2.0617731 -7.992413 -1.499617 -0.84458572 -3.3600564 -0.60674948 -0.85436058 -3.4893034 -0.63057393 -1.9047318 -7.9888468 -1.4919199 -1.8545665 -7.9955955 -1.4910035 -1.8069855 -8.0135374 -1.4922863 -1.7588334 -8.0292749 -1.4932027 -1.7074885 -8.0303011 -1.4913701 -1.6510336 -8.0059662 -1.4847726 -1.6030351 -8.0217295 -1.4858721 -1.5466871 -7.9947386 -1.4789081 -1.4914545 -7.9712248 -1.472677 -1.444265 -7.9898996 -1.4745097 -1.3962265 -8.0044222 -1.4756093 -1.3480642 -8.0186548 -1.4767089 -1.3011935 -8.0413322 -1.4794579 -1.247748 -8.0229378 -1.4745097 -1.1980612 -8.0275259 -1.4739599 -1.1561598 -8.0863028 -1.483673 -1.1117167 -8.1312313 -1.4908203 -1.0721097 -8.2168579 -1.5056647 -1.0316145 -8.303277 -1.5206925 -0.9996658 -8.4705372 -1.5509312 -0.95269924 -8.521452 -1.5593615 -0.89967173 -8.5202942 -1.5580785 -0.8457216 -8.5090237 -1.554963 -0.79258257 -8.5042648 -1.5531304 -0.74192125 -8.5265961 -1.5564291 -0.69149107 -8.5545044 -1.5608275 -0.64030689 -8.5762329 -1.5641263 -0.58679819 -8.5672503 -1.5617439 -0.53464794 -8.5775576 -1.5630267 -0.48189658 -8.5787134 -1.5626602 -0.42880711 -8.5726728 -1.5610108 -0.37723327 -8.5987129 -1.5654092 -0.3239831 -8.5880947 -1.5630267 -0.27128142 -8.589921 -1.5630267 -0.21859461 -8.5924072 -1.56321 -0.16567831 -8.5837574 -1.5613773 -0.11300623 -8.5846128 -1.5613773 -0.060281236 -8.5782633 -1.5600945 -0.007638413 -8.5715904 -1.5588117 --0.045073543 -8.5940857 -1.5630267 --0.097771592 -8.5906982 -1.5624769 --0.15079039 -8.6076288 -1.5657756 --0.20253561 -8.5613337 -1.5573455 --0.25643712 -8.6061134 -1.565959 --0.30867422 -8.5886593 -1.5630267 --0.3599636 -8.5532084 -1.5567957 --0.41177589 -8.5370922 -1.55423 --0.4636707 -8.5255699 -1.5525806 --0.51716113 -8.5421896 -1.5562459 --0.57178825 -8.5722065 -1.5624769 --0.62587494 -8.5891256 -1.5663254 --0.67995846 -8.6027641 -1.5696243 --0.72705829 -8.5318232 -1.5571622 --0.78189909 -8.5546131 -1.5622936 --0.8354243 -8.5604172 -1.5643096 --0.8884415 -8.5600185 -1.5652258 --0.94470841 -8.5886078 -1.5716401 --0.99444008 -8.5572605 -1.5668752 --1.041912 -8.5100145 -1.5591781 --1.0958645 -8.5171118 -1.5617439 --1.1478412 -8.5082788 -1.5613773 --1.2009869 -8.5078897 -1.5626602 --1.2530245 -8.4993877 -1.5624769 --1.311124 -8.530406 -1.5698075 --1.362354 -8.5154047 -1.5685247 --1.4121598 -8.4923391 -1.5657756 --1.4700918 -8.5174208 -1.5721899 --1.5150559 -8.4675961 -1.5644928 --1.5705643 -8.4774733 -1.5681581 --1.6231064 -8.4705734 -1.5687079 --1.6792496 -8.4816704 -1.5727397 --1.7273247 -8.4519434 -1.5690745 --1.7791523 -8.441186 -1.5690745 --1.8357108 -8.4522057 -1.5732895 --1.8941872 -8.4705238 -1.5789708 --1.9417182 -8.4395809 -1.5753055 --1.9986696 -8.4495115 -1.5795206 --2.0497808 -8.4342232 -1.5789708 --2.1012557 -8.4205332 -1.5787874 --2.1543465 -8.4131956 -1.5798872 --2.213418 -8.4283438 -1.5853851 --2.2643254 -8.4117556 -1.5848353 --2.3161576 -8.3986511 -1.5850185 --2.3684485 -8.3871202 -1.5855683 --2.4185016 -8.3677073 -1.5846519 --2.4678485 -8.3461113 -1.5833691 --2.5215733 -8.3392811 -1.5850185 --2.5770483 -8.3377399 -1.5877675 --2.6246071 -8.3105211 -1.5855683 --2.6725326 -8.2849045 -1.5837357 --2.7199352 -8.2580795 -1.5817198 --2.7749395 -8.2542801 -1.5842855 --2.8386106 -8.2752237 -1.5917994 --2.8734262 -8.212183 -1.5828193 --2.9207883 -8.1860638 -1.58117 --2.9800339 -8.1929321 -1.5861181 --3.0415232 -8.2049122 -1.5921658 --3.08799 -8.1759787 -1.59015 --1.438697 -3.7390056 -0.70772856 --1.4712932 -3.7548215 -0.7126767 --3.2463357 -8.1387558 -1.594365 --3.2984319 -8.1241484 -1.5954646 --3.3459663 -8.0983047 -1.594365 --3.4024503 -8.093935 -1.5976638 --3.4369771 -8.037653 -1.5905164 --3.4925029 -8.0308371 -1.5934488 --3.542906 -8.0119534 -1.5939986 --3.5940149 -7.9945474 -1.5949148 --1.4748893 -3.2270715 -0.62232703 --1.4996307 -3.2286606 -0.6245262 --1.5508741 -3.2860787 -0.63827109 --1.6338972 -3.4077003 -0.66539431 --1.6534846 -3.3949592 -0.66484451 --1.6703626 -3.3768189 -0.66319513 --1.688404 -3.3612351 -0.66209555 --1.7148014 -3.3621972 -0.664478 --1.7394665 -3.3594694 -0.66612738 --1.7682779 -3.3643973 -0.66942614 --4.1444445 -7.7703815 -1.602612 --4.1929803 -7.7465343 -1.6029785 --4.2579422 -7.752543 -1.6097593 --4.2925115 -7.7030845 -1.6048112 --4.356627 -7.7065544 -1.6112254 --4.4155674 -7.7001452 -1.6156238 --4.4800286 -7.7026501 -1.622038 --4.5297041 -7.6792498 -1.6229544 --4.571692 -7.6428747 -1.6211218 --4.6047378 -7.5919843 -1.6161736 --4.655869 -7.5711241 -1.617823 --4.7079573 -7.5515904 -1.6198388 --2.0039556 -3.1704159 -0.6600796 --2.0233712 -3.1580601 -0.6600796 --2.0512757 -3.158778 -0.66301185 --4.8799767 -7.4157095 -1.6158071 --4.928659 -7.3905344 -1.6169066 --4.9827204 -7.3731861 -1.6198388 --5.0356426 -7.3538303 -1.6224046 --5.0840325 -7.3276401 -1.6235042 --5.1503797 -7.326869 -1.6304682 --5.1940989 -7.2935276 -1.6301017 --5.2261009 -7.2439799 -1.6260699 --5.2646503 -7.2038393 -1.6242373 --5.3099232 -7.1729808 -1.6246037 --5.3732963 -7.1662207 -1.6306515 --5.418355 -7.1346817 -1.631018 --5.4686232 -7.1098728 -1.633034 --5.5145617 -7.0792866 -1.633767 --5.5621576 -7.0507193 -1.6350499 --5.5924306 -7.0003281 -1.6312013 --5.648262 -6.9819322 -1.6350499 --5.7028317 -6.9615932 -1.6385319 --5.7523432 -6.9347939 -1.6405479 --5.7815094 -6.8835588 -1.6366993 --5.843379 -6.8711705 -1.6423805 --5.8770914 -6.8255019 -1.6399981 --5.9363027 -6.8093204 -1.6449462 --5.9636607 -6.7565522 -1.6409143 --6.0187612 -6.7352271 -1.644763 --6.0481038 -6.6850476 -1.6414641 --6.0876803 -6.6463614 -1.6410977 --6.1363678 -6.6175332 -1.6432968 --6.2051148 -6.6098604 -1.6509939 --6.2516503 -6.5780759 -1.6526433 --6.2755375 -6.5225897 -1.648245 --6.3257294 -6.494525 -1.6509939 --6.3840952 -6.4744892 -1.6559421 --6.4320354 -6.4435449 -1.6581413 --6.4700541 -6.4025745 -1.6577748 --6.5148416 -6.3682518 -1.6592408 --6.5431862 -6.3179145 -1.6564919 --6.5839629 -6.2796831 -1.6570417 --6.6388268 -6.2546721 -1.6612568 --6.6526127 -6.1910477 -1.6550258 --6.7121863 -6.1700711 -1.6605238 --6.7622914 -6.1400042 -1.6636392 --6.80862 -6.1062727 -1.6658385 --6.8437519 -6.0624251 -1.6652886 --6.8993168 -6.0365028 -1.6698703 --6.9406891 -5.9979124 -1.6709698 --6.9878287 -5.9641476 -1.6735356 --7.0182796 -5.9160895 -1.6720694 --7.0514259 -5.870399 -1.6713364 --7.0880728 -5.8276463 -1.6715196 --7.1191182 -5.7803268 -1.6704201 --7.176693 -5.7543707 -1.6757348 --7.2118659 -5.710227 -1.6757348 --7.2351508 -5.656785 -1.6729858 --7.2588305 -5.6038737 -1.6704201 --7.3087144 -5.5711489 -1.6740854 --7.3576841 -5.5374308 -1.6775674 --7.4191399 -5.5127029 -1.6839817 --7.4092302 -5.4350939 -1.673902 --7.4734912 -5.4120178 -1.6810495 --7.5049586 -5.3649158 -1.6806829 --7.5425553 -5.3221664 -1.6817825 --7.5992694 -5.2926421 -1.6872804 --7.6316013 -5.245914 -1.6872804 --7.5953116 -5.1526265 -1.6718862 --7.6357703 -5.1119418 -1.673902 --7.7014418 -5.0877533 -1.6815993 --7.7366323 -5.043087 -1.6825155 --7.7839665 -5.0061569 -1.6861808 --6.526298 -4.1408386 -1.4017534 --6.5099196 -4.074635 -1.3925902 --7.8296266 -4.8341408 -1.6762846 --7.8297548 -4.7681108 -1.6698703 --7.8605494 -4.7209911 -1.6702368 --7.9392719 -4.70223 -1.6810495 --8.0095701 -4.6777215 -1.6900294 --8.0270462 -4.6221104 -1.687647 --8.0706444 -4.5815063 -1.6909457 --8.0943146 -4.5294991 -1.6900294 --8.1322842 -4.485446 -1.6922286 --8.1587896 -4.4349933 -1.6920453 --8.1676512 -4.3750997 -1.6881968 --7.671844 -4.0491023 -1.5780544 --8.1683941 -4.2473273 -1.6772009 --8.1908016 -4.195334 -1.6764678 --6.926198 -3.4940519 -1.4070681 --6.8929234 -3.4243672 -1.3957057 --6.9102731 -3.3802805 -1.3949726 --6.9264555 -3.3356833 -1.3940563 --6.9698877 -3.3040705 -1.3988212 --7.0212097 -3.2757909 -1.4052354 --8.2928104 -3.8073592 -1.6619898 --8.3079529 -3.7527611 -1.6603404 --6.5431023 -2.9072642 -1.295643 --8.3209515 -3.636354 -1.6537429 --8.3223333 -3.5763013 -1.6495278 --8.3540821 -3.5293779 -1.6515437 --8.382843 -3.4810681 -1.6530099 --8.3967638 -3.4265947 -1.6515437 --8.4185429 -3.3753746 -1.651727 --8.4573889 -3.3308613 -1.6553923 --8.474 -3.2774866 -1.6546593 --8.4939508 -3.2254293 -1.6546593 --8.5356894 -3.1814919 -1.6590576 --7.6188927 -2.7866063 -1.4732268 --7.6423244 -2.7421296 -1.4745097 --8.633605 -3.0381989 -1.6671213 --8.6604481 -2.9880531 -1.6687707 --8.668376 -2.9313927 -1.6667547 --8.6712694 -2.8732014 -1.6638225 --8.7186565 -2.8296537 -1.669687 --8.7686462 -2.7865257 -1.6761012 --8.8015366 -2.7376342 -1.6792167 --8.8360376 -2.6890163 -1.6826988 --8.8834629 -2.6440043 -1.6887466 --8.9221735 -2.5960393 -1.6931449 --9.008852 -2.5614119 -1.7068897 --9.0679703 -2.5181882 -1.71532 --9.1117153 -2.4702187 -1.7208179 --9.1362047 -2.4167781 -1.7226506 --9.1879854 -2.3702526 -1.729798 --9.2633724 -2.3291762 -1.741527 --9.3070889 -2.2795444 -1.7472081 --9.3467197 -2.2285514 -1.7521563 --9.365963 -2.172492 -1.7532558 --9.3915844 -2.1177945 -1.7556384 --9.2517166 -2.026675 -1.7264992 --9.425519 -2.0042264 -1.7572877 --9.6215334 -1.9842877 -1.7922913 --9.7038994 -1.9392802 -1.8056697 --10.126773 -1.9592665 -1.8837407 --10.328962 -1.9327197 -1.9198438 --10.544744 -1.9062128 -1.9585128 --10.502977 -1.8321819 -1.9484332 --10.527595 -1.7699848 -1.9509989 --10.551843 -1.7075546 -1.9535646 --10.575721 -1.6448932 -1.9561303 --10.539917 -1.5731484 -1.9475169 --10.571754 -1.5116484 -1.9517319 --10.574986 -1.4459536 -1.9506323 --10.558314 -1.3777313 -1.9458674 --10.621201 -1.319711 -1.9561303 --10.592976 -1.2502509 -1.9493495 --10.605332 -1.1857765 -1.9502659 --10.626096 -1.1221268 -1.9528315 --10.632781 -1.0569053 -1.9528315 --10.639066 -0.99164385 -1.9528315 --10.649847 -0.9267714 -1.9537479 --10.702366 -0.86521184 -1.9625446 --10.642772 -0.79469335 -1.9504491 --10.682755 -0.73179555 -1.9570466 --10.671346 -0.66525435 -1.9541144 --10.695838 -0.60092247 -1.957963 --10.685578 -0.53459454 -1.9553972 --10.674908 -0.46841514 -1.9528315 --10.712946 -0.40424213 -1.9594291 --10.703434 -0.33812818 -1.9572299 --9.9108477 0.72838283 -1.9373915 --9.9668083 0.79401702 -1.9494871 --9.9656572 0.85549325 -1.9502676 --9.9270144 0.91356552 -1.9436344 --9.9212217 0.97445935 -1.9436344 --9.9082279 1.0346026 -1.9422688 --9.9143658 1.0967823 -1.944805 --9.8782253 1.1541771 -1.9389523 --9.8475952 1.2118891 -1.9342701 --9.8672085 1.2758147 -1.9397327 --9.8553066 1.3358073 -1.9389523 --9.8362436 1.3947374 -1.9368063 --9.8459339 1.4577966 -1.940513 --9.8561897 1.5211769 -1.9444149 --9.8205252 1.577422 -1.9391474 --9.8184004 1.6389427 -1.940708 --9.8081589 1.6991564 -1.940708 --9.8004446 1.7598265 -1.9412934 --9.7952471 1.821004 -1.9424639 --9.7838898 1.8810723 -1.9424639 --9.7721634 1.9410697 -1.9424639 --9.73701 1.9962637 -1.9377817 --9.7121038 2.0533326 -1.9352455 --9.6974058 2.1124685 -1.9348553 --9.6785192 2.1706424 -1.9336848 --9.6822195 2.233959 -1.9371965 --9.6587877 2.2910612 -1.9352455 --9.6483593 2.3512125 -1.9360259 --9.6242371 2.4079878 -1.934075 --9.5912313 2.4623597 -1.9303683 --9.5579224 2.5164173 -1.9266616 --9.5555582 2.5785952 -1.9293928 --9.5433369 2.6382241 -1.9301732 --9.5458431 2.7020762 -1.934075 --9.4932871 2.7502227 -1.9266616 --9.4988012 2.8151116 -1.9313438 --9.481349 2.8733423 -1.9313438 --9.4391823 2.9239163 -1.9262714 --9.4378948 2.9871082 -1.929783 --9.4352531 3.0500922 -1.9330995 --9.3995962 3.1023932 -1.929588 --9.3339119 3.1443486 -1.9198334 --9.3441229 3.2117665 -1.9260763 --9.3075809 3.2631977 -1.9225646 --9.3150883 3.3301549 -1.9284174 --9.3110657 3.3932953 -1.931929 --9.302021 3.4548037 -1.9344652 --9.2806482 3.5118146 -1.9344652 --9.2790575 3.5764561 -1.9387572 --9.2231598 3.6200614 -1.9315388 --9.1643448 3.6620238 -1.9237353 --9.2171059 3.7488649 -1.9399277 --9.1649313 3.7933433 -1.9336848 --9.1685991 3.8609293 -1.9395375 --9.1357212 3.9132512 -1.9375867 --9.0782709 3.9547365 -1.9303683 --9.045764 4.0067892 -1.9286125 --9.0201139 4.0618148 -1.9284174 --8.946866 4.095037 -1.9178826 --8.9028969 4.1411681 -1.9137856 --8.918107 4.2150006 -1.9227598 --8.8461037 4.2475605 -1.9126151 --8.835741 4.3095002 -1.9161267 --8.8390121 4.3784394 -1.9227598 --8.8216171 4.4374418 -1.9249058 --8.7330847 4.4602523 -1.9112494 --8.7725935 4.5485234 -1.9262714 --8.6915789 4.5743947 -1.9143709 --8.6841087 4.6387324 -1.9190531 --8.6744509 4.7022147 -1.9233451 --8.6694956 4.7685895 -1.9288076 --8.5604286 4.777236 -1.9106642 --8.5514374 4.8412714 -1.9153464 --8.4943562 4.8780179 -1.9091034 --8.4761295 4.9369588 -1.9118347 --8.4304781 4.9798937 -1.908323 --8.4132252 5.0395942 -1.9114445 --8.3989086 5.1013064 -1.9153464 --8.3599339 5.1481161 -1.9135906 --8.3190374 5.1936002 -1.9114445 --8.2803831 5.2403502 -1.9098839 --8.2406445 5.2862921 -1.908128 --8.2170973 5.342638 -1.910274 --8.1751528 5.3870196 -1.908128 --8.1313419 5.4299979 -1.9055918 --8.0865002 5.4720917 -1.9028605 --8.146596 5.5859561 -1.9254911 --8.0364599 5.5832267 -1.9071525 --8.012476 5.6397724 -1.9096887 --7.9976821 5.7030683 -1.9145659 --7.9720778 5.7589269 -1.9169071 --7.9334259 5.8054171 -1.9161267 --7.9205031 5.8709264 -1.9217843 --7.890605 5.9241266 -1.9233451 --7.893919 6.0027127 -1.9332947 --7.8142047 6.0181165 -1.9225646 --7.8080626 6.0900817 -1.9303683 --7.7705474 6.1378765 -1.9303683 --7.722784 6.1774745 -1.9278321 --7.7030239 6.2395625 -1.9325143 --7.6532197 6.2773786 -1.929588 --7.6364369 6.3423948 -1.9352455 --7.6048822 6.3954453 -1.9371965 --7.525177 6.4076467 -1.9266616 --7.5280561 6.4902086 -1.9377817 --7.4947405 6.5420833 -1.9395375 --7.4243293 6.5613146 -1.9315388 --7.3846612 6.6073999 -1.931734 --7.4035788 6.7065878 -1.9477314 --7.3319325 6.7240434 -1.9395375 --7.3005981 6.7782483 -1.9422688 --7.2624431 6.8262753 -1.9432442 --7.210475 6.8612418 -1.940513 --7.1710644 6.9080772 -1.9412934 --7.1222234 6.9457846 -1.9395375 --7.0857515 6.9955573 -1.9412934 --7.0572605 7.0534644 -1.9453902 --7.0179844 7.1008201 -1.9465607 --6.9831886 7.1528726 -1.9490969 --6.9446139 7.2012343 -1.9506577 --6.9104433 7.2543635 -1.9535841 --6.8826017 7.3144879 -1.9584613 --6.8369236 7.3558626 -1.9582663 --6.7896705 7.3955069 -1.9576809 --6.7533875 7.4472008 -1.9604121 --6.6944795 7.473886 -1.9565104 --6.6484947 7.514822 -1.9565104 --6.6112933 7.5658154 -1.9592416 --6.5826864 7.6270308 -1.9647042 --6.5433979 7.6762357 -1.9670453 --6.4980688 7.7184916 -1.9676305 --6.446825 7.7536926 -1.96646 --6.4041066 7.7991681 -1.9680207 --6.3592196 7.8421254 -1.9689962 --6.318337 7.8901849 -1.9713373 --6.2910938 7.9557333 -1.9781654 --6.2512131 8.0057821 -1.9810917 --6.187602 8.0253448 -1.9764096 --6.1400251 8.0655012 -1.9769949 --6.0939555 8.107729 -1.9781654 --6.0546117 8.1591463 -1.9816771 --6.0108089 8.2048464 -1.9838231 --5.9609265 8.2423687 -1.9840181 --5.9176469 8.2891674 -1.9865543 --5.8711934 8.3317356 -1.9881151 --5.813241 8.3579407 -1.9857739 --5.7707276 8.4063911 -1.9888954 --5.7267389 8.4530106 -1.9916266 --5.6605935 8.4667892 -1.9865543 --5.6339164 8.5398426 -1.9957236 --5.5814104 8.5742512 -1.9957236 --5.5255156 8.603385 -1.994553 --5.4852185 8.657012 -1.9992352 --5.4325166 8.6913376 -1.9994303 --5.3883486 8.7395353 -2.0029418 --5.3274894 8.7607002 -2.0002105 --5.2781734 8.8007946 -2.0019665 --5.2085986 8.8068438 -1.9959186 --5.1717529 8.8682928 -2.0027468 --5.1275048 8.917716 -2.0068438 --5.072207 8.9481564 -2.0066485 --5.0224681 8.9885292 -2.0087945 --4.9525561 8.9925432 -2.0027468 --4.9057059 9.0382786 -2.0062585 --4.872354 9.109725 -2.0156229 --4.8177376 9.1420527 -2.0162079 --4.7597451 9.1679602 -2.0154276 --4.7092061 9.2083454 -2.0179639 --4.6565862 9.2449512 -2.0197196 --4.6089225 9.2918015 -2.0238166 --4.5436463 9.3031607 -2.0201099 --4.4915767 9.3414726 -2.0224509 --4.4211702 9.3413734 -2.0164032 --4.3679094 9.3772163 -2.0183539 --4.3258152 9.4377232 -2.0257676 --4.2770958 9.4846525 -2.0302546 --4.2200117 9.5134077 -2.0308399 --4.1576381 9.5301323 -2.0288889 --4.0928988 9.5410414 -2.0257676 --4.0430427 9.5867615 -2.0302546 --3.9743812 9.5878305 -2.0251822 --3.9162164 9.6138535 -2.0255723 --3.8604321 9.6458979 -2.0273283 --3.8033257 9.67488 -2.0284986 --3.7481275 9.7090149 -2.0308399 --3.6919584 9.7410021 -2.0327907 --3.6266496 9.7487631 -2.0296693 --3.5613844 9.7560911 -2.0265479 --3.509058 9.7989979 -2.0310349 --3.4407444 9.7972088 -2.0261576 --3.3786497 9.8125725 -2.024987 --3.3343661 9.8805141 -2.0349367 --3.2773712 9.9119625 -2.0372777 --3.216491 9.9318857 -2.0372777 --3.1581566 9.9598494 -2.0390337 --3.1022155 9.9959011 -2.0425453 --3.0388293 10.008178 -2.0411797 --2.9734559 10.013473 -2.0384483 --2.9179714 10.052251 -2.0427403 --2.8551669 10.066192 -2.04196 --2.7946568 10.088247 -2.0429354 --2.7337275 10.108993 -2.0437157 --2.6761506 10.142647 -2.0472274 --2.6111789 10.148427 -2.0450814 --2.5436141 10.143329 -2.0407894 --2.4766755 10.139688 -2.0368876 --2.4166806 10.164237 -2.0388386 --2.3578031 10.194163 -2.04196 --2.2960687 10.212266 -2.0427403 --2.2381749 10.248201 -2.0472274 --2.1770804 10.270377 -2.0489831 --2.1080999 10.254721 -2.0431304 --2.0516491 10.300167 -2.0497637 --1.9774605 10.255741 -2.0382533 --1.9153936 10.272503 -2.0392287 --1.8535428 10.290819 -2.0405943 --1.793889 10.322291 -2.0446913 --1.7316521 10.339875 -2.0460567 --1.6700467 10.361925 -2.048398 --1.6059856 10.36907 -2.0478127 --1.5463656 10.405892 -2.0532751 --1.4884256 10.456939 -2.0616641 --1.4167029 10.41048 -2.050544 --1.3476254 10.379099 -2.0425453 --1.2906467 10.441682 -2.0534704 --1.2297519 10.47668 -2.0589328 --1.1668524 10.4967 -2.0614691 --1.0980263 10.461719 -2.0530801 --1.0382427 10.513157 -2.0620542 --0.97317392 10.51347 -2.0608838 --0.90653867 10.494815 -2.0560064 --0.84353608 10.517777 -2.0595181 --0.77601999 10.482653 -2.0515194 --0.71188396 10.490152 -2.0521047 --0.64696157 10.485513 -2.0503488 --0.57935441 10.430528 -2.0386434 --0.51611537 10.44956 -2.041765 --0.45241103 10.462329 -2.0437157 --0.38885936 10.48255 -2.0472274 --0.32465327 10.48866 -2.0480077 --0.26053214 10.500259 -2.0499587 --0.19575299 10.483028 -2.046252 --0.13170692 10.506588 -2.050739 --0.067237236 10.507198 -2.050739 --0.0027644085 10.50349 -2.0499587 -0.061578222 10.485656 -2.046447 -0.1261179 10.501753 -2.0497637 -0.19085743 10.517451 -2.0530801 -0.25455049 10.481766 -2.046252 -0.31829184 10.46138 -2.0425453 -0.38402152 10.501375 -2.0509341 -0.45000216 10.535077 -2.0581524 -0.51089364 10.455709 -2.0429354 -0.57568687 10.464128 -2.0452764 -0.63958275 10.455504 -2.044301 -0.70478046 10.46704 -2.0474224 -0.76726371 10.439043 -2.0427403 -0.83247203 10.448804 -2.0456667 -0.89278907 10.399526 -2.0368876 -0.95577258 10.385062 -2.0351317 -1.0234115 10.419022 -2.0431304 -1.0853847 10.394011 -2.0394237 -1.1524874 10.417376 -2.0454717 -1.2187781 10.430566 -2.0495684 -1.2809572 10.408289 -2.0466421 -1.3461819 10.410933 -2.0487881 -1.4044993 10.361658 -2.0405943 -1.4617116 10.308176 -2.0316203 -1.5246464 10.297073 -2.03123 -1.5897456 10.300125 -2.0337663 -1.6521378 10.285335 -2.0327907 -1.7126307 10.259526 -2.0296693 -1.790795 10.336764 -2.0474224 -1.844126 10.269592 -2.0361073 -1.9036962 10.239763 -2.0324006 -1.9789047 10.292418 -2.0454717 -2.0469916 10.305094 -2.050544 -2.1007235 10.246222 -2.0411797 -2.1617267 10.224504 -2.0394237 -2.2258844 10.217755 -2.0407894 -2.2732906 10.135959 -2.026938 -2.3356614 10.122775 -2.027133 -2.4054298 10.140698 -2.0337663 -2.475738 10.159099 -2.0405943 -2.5451715 10.17226 -2.046447 -2.5999753 10.127003 -2.0403993 -2.6538203 10.079561 -2.0339613 -2.7347903 10.134104 -2.048593 -2.7692075 10.016932 -2.0279136 -2.8370318 10.022399 -2.0325956 -2.880455 9.9426298 -2.0197196 -2.9402926 9.9210072 -2.0189393 -3.0050952 9.9159193 -2.0216706 -3.0684943 9.9057255 -2.0234263 -3.1369147 9.9110222 -2.0284986 -3.1919343 9.8738565 -2.024792 -3.2552269 9.8624678 -2.0265479 -3.3106689 9.8274374 -2.0234263 -3.3833444 9.8431101 -2.0310349 -3.4264729 9.7731133 -2.0206952 -3.4903386 9.7629871 -2.0230362 -3.5538726 9.751523 -2.0251822 -3.611932 9.7249365 -2.0242066 -3.6680629 9.6934185 -2.0222559 -3.7271187 9.6698141 -2.0220606 -3.7892489 9.6540661 -2.0236216 -3.8425891 9.6160622 -2.0204999 -3.9066947 9.6050224 -2.0232313 -3.9614294 9.5709019 -2.0210853 -4.012085 9.5274343 -2.0169883 -4.074718 9.5125532 -2.0191343 -4.1251731 9.4693899 -2.0152326 -4.1847878 9.4474869 -2.0160129 -4.2551646 9.4493532 -2.0220606 -4.2967334 9.3873959 -2.0142572 -4.3335643 9.3163929 -2.0045025 -4.3914857 9.2914009 -2.0048928 -4.4403458 9.2474823 -2.0011861 -4.4888325 9.2033148 -1.9974793 -4.546525 9.1782351 -1.9980646 -4.6031966 9.151042 -1.9982598 -4.6534591 9.11127 -1.9957236 -4.7124381 9.0886402 -1.9970891 -4.7726855 9.0682325 -1.9990401 -4.8273125 9.0370474 -1.99865 -4.8906198 9.0219145 -2.0019665 -4.9260278 8.9556456 -1.9937726 -4.9923592 8.9458046 -1.9984548 -5.0403895 8.9030561 -1.9957236 -5.0880833 8.860055 -1.9929923 -5.1423521 8.8286676 -1.9929923 -5.1994205 8.8020153 -1.9941628 -5.2432489 8.7531204 -1.9902611 -5.2856545 8.702343 -1.9859691 -5.3204341 8.6396837 -1.9789457 -5.3790603 8.6160269 -1.9810917 -5.4208097 8.5654564 -1.9769949 -5.4684973 8.5246048 -1.975239 -5.5244431 8.496645 -1.9766047 -5.586729 8.4781475 -1.9803114 -5.6413689 8.4477863 -1.9812869 -5.6958461 8.4170732 -1.9822624 -5.7318525 8.3593187 -1.9767998 -5.7819171 8.3223801 -1.9764096 -5.82271 8.2723112 -1.972898 -5.8648152 8.2244511 -1.9699717 -5.9134459 8.1859255 -1.9693863 -5.9635625 8.1494865 -1.9693863 -6.0076132 8.1048632 -1.9674355 -6.0531082 8.0623589 -1.9660698 -6.1006827 8.0227242 -1.9654845 -6.1372252 7.968823 -1.9613876 -6.1775589 7.9201899 -1.9586564 -6.2284722 7.8852143 -1.9594368 -6.2687721 7.8368926 -1.9569006 -6.3229146 7.8059015 -1.9588515 -6.3221688 7.7078142 -1.9436344 -6.400054 7.7058434 -1.9531939 -6.4314318 7.6476645 -1.9483166 -6.4725127 7.6013379 -1.9465607 -6.5203128 7.5629659 -1.9469509 -6.5459538 7.4991732 -1.940708 -6.5957422 7.4632759 -1.9418787 -6.6459904 7.4277806 -1.9432442 -6.6749773 7.3686914 -1.938367 -6.6928825 7.2979627 -1.9303683 -6.7669024 7.2883806 -1.9389523 -6.8114953 7.2467222 -1.9389523 -6.8565087 7.205502 -1.9391474 -6.8937864 7.1562328 -1.9371965 -6.9272938 7.1032672 -1.9342701 -6.9624782 7.0522542 -1.931929 -7.0014586 7.0052385 -1.9307585 -7.0394263 6.9573212 -1.9293928 -7.0833869 6.9153671 -1.929783 -7.1136823 6.8602014 -1.9264665 -7.152091 6.8130417 -1.9254911 -7.1873312 6.7629805 -1.9237353 -7.2301297 6.720088 -1.9241254 -7.2647243 6.6696291 -1.9223696 -7.3105979 6.6295395 -1.9237353 -7.3445625 6.5786691 -1.9219794 -7.370832 6.5211339 -1.9182727 -7.4136605 6.4783654 -1.9190531 -7.4755483 6.4519763 -1.9249058 -7.5015597 6.3945346 -1.9213941 -7.5263972 6.3363857 -1.9176874 -7.5394912 6.2687688 -1.9110544 -7.5808458 6.2248783 -1.9118347 -7.5899477 6.1547751 -1.9044213 -7.6344604 6.113605 -1.906177 -7.6787534 6.0721202 -1.9079329 -7.7135477 6.0230794 -1.9073477 -7.7309394 5.9606671 -1.9024704 -7.7595634 5.9071789 -1.9005195 -7.7690039 5.8394232 -1.8938864 -7.8212295 5.8039155 -1.8979833 -7.8416605 5.7448049 -1.8942766 -7.8775568 5.697156 -1.8944716 -7.9059792 5.6441545 -1.892911 -7.9661198 5.6136141 -1.8991538 -7.9601521 5.5366325 -1.8893993 -8.0424938 5.5209846 -1.9011047 -8.0413008 5.4478822 -1.8927158 -8.0574532 5.3869939 -1.8886189 -8.0788927 5.3298926 -1.8858877 -8.1007586 5.2732668 -1.8833516 -8.1346121 5.2245216 -1.8837417 -8.1731443 5.178709 -1.8853024 -8.1698332 5.1066327 -1.8771087 -8.2394199 5.080081 -1.8860828 -8.2628927 5.0248437 -1.8843269 -8.271699 4.9609356 -1.8792546 -8.3121138 4.9160781 -1.8815957 -8.3395796 4.8635015 -1.8810104 -8.3828697 4.8200598 -1.8841319 -8.4063139 4.7651477 -1.8827662 -8.4405317 4.7163477 -1.8839368 -8.5028191 4.6829181 -1.8915453 -8.5003595 4.6138177 -1.8845221 -8.5259142 4.5601864 -1.8839368 -8.575428 4.5192151 -1.8888141 -8.5899382 4.4597349 -1.8858877 -8.6215067 4.4091763 -1.8868631 -8.6510267 4.3575163 -1.8874484 -8.6960535 4.3135028 -1.8915453 -8.7038488 4.2510266 -1.8874484 -8.747448 4.206039 -1.8913503 -8.7996883 4.1648707 -1.897203 -8.8126297 4.1050019 -1.8944716 -8.8483515 4.0557542 -1.8968128 -8.856082 3.993727 -1.893106 -8.8741446 3.9365287 -1.8917404 -8.8810501 3.8745542 -1.8880337 -8.9037552 3.8196015 -1.8878386 -8.93787 3.7694695 -1.8901796 -8.9807644 3.7228172 -1.8944716 -9.0088882 3.6698616 -1.8956422 -9.0667496 3.6287236 -1.9032507 -9.0532446 3.5590324 -1.8956422 -9.0804014 3.5055344 -1.8968128 -9.1329241 3.4615672 -1.9034458 -9.128252 3.3958912 -1.8979833 -9.1645803 3.3455329 -1.9012998 -9.1969395 3.2935345 -1.903836 -9.1892128 3.2272944 -1.8979833 -9.2477922 3.1842563 -1.906177 -9.2141848 3.1095831 -1.895057 -9.2479916 3.0579121 -1.8981783 -9.3384295 3.02437 -1.9132004 -9.317543 2.954567 -1.9050065 -9.3570414 2.9040239 -1.9094937 -9.3962698 2.853107 -1.9139807 -9.3600054 2.7794909 -1.9028605 -9.4070263 2.7307527 -1.9091034 -9.3726501 2.6585345 -1.8985686 -9.385951 2.6001897 -1.8979833 -9.4074097 2.5440853 -1.8991538 -9.43612 2.4898162 -1.9018852 -9.474966 2.4379776 -1.9067624 -9.4669142 2.3740714 -1.9020802 -9.5060759 2.3219867 -1.9071525 -9.5449543 2.2695107 -1.9122249 -9.5481882 2.2084713 -1.9100789 -9.5338087 2.1436071 -1.9044213 -9.5592394 2.0877874 -1.9069575 -9.5737886 2.0295002 -1.9073477 -9.5774145 1.968942 -1.9055918 -9.5864296 1.9095646 -1.9050065 -9.610486 1.85312 -1.9075427 -9.6409597 1.7977096 -1.9114445 -9.6431208 1.7369562 -1.9096887 -9.7115765 1.6878239 -1.9213941 -9.7478676 1.6325741 -1.9266616 -9.7315578 1.5685209 -1.9213941 -9.7458448 1.5095297 -1.9223696 -9.715148 1.4437954 -1.9143709 -9.7238235 1.3841572 -1.9143709 -9.7933598 1.3327919 -1.9266616 -9.7750921 1.2692691 -1.9213941 -9.8479137 1.2173203 -1.9344652 -9.8094139 1.1515027 -1.9252959 -9.831892 1.0930238 -1.9284174 -9.8315849 1.0319599 -1.9270518 -9.7967377 0.96757114 -1.9188579 -9.774169 0.90482277 -1.9132004 -9.7658558 0.84365243 -1.9104691 -9.8197317 0.78762937 -1.9202236 -9.816555 0.72678339 -1.9186629 -9.8609495 0.66925466 -1.9266616 -9.8090715 0.60529977 -1.9155414 -9.8693991 0.54824954 -1.9268566 -9.8138018 0.48478529 -1.9151512 -9.8332491 0.42527828 -1.9184678 -9.8552761 0.36565956 -1.9223696 -9.8789015 0.30584702 -1.9266616 -9.9198112 0.24619424 -1.9344652 -9.8809299 0.18457647 -1.9264665 -9.8995295 0.12416409 -1.9299781 -9.8422394 0.063055485 -1.9184678 -9.873826 0.0026682485 -1.9247106 -9.8658104 -0.057869516 -1.9231499 -9.9005756 -0.1188318 -1.9301732 -9.8957376 -0.17950673 -1.9293928 -9.9120989 -0.24065302 -1.9329045 -9.8996515 -0.3011387 -1.9307585 -9.891737 -0.36166045 -1.929588 -9.8863916 -0.42222229 -1.9290026 -9.8826351 -0.48282814 -1.9288076 -9.8892803 -0.54399759 -1.9307585 -9.8563871 -0.60286707 -1.9249058 -9.8945808 -0.66617131 -1.9332947 -9.8482466 -0.72377467 -1.9249058 -9.8856611 -0.78754288 -1.9332947 -9.9128895 -0.85095727 -1.9397327 -9.8840418 -0.9096058 -1.9350505 -9.9075565 -0.97311556 -1.9409032 -9.8945713 -1.033175 -1.9395375 -9.8588009 -1.0906289 -1.9336848 -9.8402338 -1.1497335 -1.9313438 -9.8213129 -1.2086515 -1.9290026 -9.838028 -1.2720382 -1.93388 -9.8465595 -1.3346207 -1.9371965 -9.8090534 -1.3908787 -1.9313438 -9.7916031 -1.4497459 -1.929588 -9.7767076 -1.5089005 -1.9284174 -9.7846956 -1.5716627 -1.931929 -9.7980852 -1.6355492 -1.9366112 -9.7376137 -1.6869267 -1.9264665 -9.7251492 -1.746297 -1.9260763 -9.7026796 -1.803784 -1.9237353 -9.6798716 -1.8610611 -1.9213941 -9.6653843 -1.919847 -1.9208089 -9.593854 -1.9668968 -1.9087132 -9.3321218 -1.9729503 -1.8579898 -9.0649366 -1.9746149 -1.8060957 -8.9311123 -2.0029266 -1.7813193 -8.7581053 -2.0206261 -1.7485441 -8.6644278 -2.0550766 -1.7319615 -8.5115833 -2.0740502 -1.7032832 -8.4777651 -2.1209977 -1.6989912 -8.4037943 -2.1573603 -1.6865054 -8.377121 -2.2053869 -1.6837741 -7.7384882 -2.0880251 -1.5550145 -7.53269 -2.0821338 -1.5152161 -7.381052 -2.08903 -1.4865378 -7.0515771 -2.0425439 -1.4209875 -7.0163436 -2.079082 -1.4163053 -6.7049809 -2.0316031 -1.3542665 -6.507833 -2.0155134 -1.3158338 -6.4635525 -2.0453408 -1.3092008 -6.3099675 -2.0393913 -1.2797421 -6.0617089 -2.0002694 -1.2303842 -6.0074973 -2.0233307 -1.2216052 -5.7983422 -1.9925435 -1.180246 -5.7860069 -2.0280838 -1.180246 -5.7743773 -2.0638783 -1.1804411 -5.5671773 -2.0283878 -1.139277 -5.3863797 -1.9999994 -1.1035755 -5.3116322 -2.0094011 -1.0903094 -5.3019481 -2.0430133 -1.0908946 -5.0975962 -2.0002329 -1.0499257 -5.0287623 -2.0089028 -1.0378301 -5.0272427 -2.0441563 -1.0401711 -4.9874196 -2.0637088 -1.0343184 -4.9493551 -2.0836112 -1.0288559 -4.9914694 -2.1375041 -1.0407565 -4.965672 -2.1626055 -1.0380251 -4.9541025 -2.1938283 -1.0384153 -4.9503851 -2.2286158 -1.0405613 -4.8759775 -2.231185 -1.0272952 -4.894208 -2.2759566 -1.0343184 -4.8633037 -2.2979791 -1.0306118 -4.8747511 -2.340091 -1.0362693 -4.7739162 -2.3278127 -1.0171505 -4.7120872 -2.3335464 -1.0066156 -4.6713963 -2.3491902 -1.0007629 -4.7136655 -2.4068124 -1.0134438 -4.6631122 -2.417176 -1.0054451 -4.6308355 -2.436605 -1.0015433 -4.6261778 -2.4705198 -1.0038843 -4.5945506 -2.4899764 -1.0001776 -4.5766077 -2.5167027 -0.99959236 -4.5884838 -2.5600345 -1.0058353 -4.5931721 -2.5997398 -1.0105175 -4.6017971 -2.6420414 -1.016175 -4.5439744 -2.6460347 -1.0066156 -4.6213818 -2.7292469 -1.0282706 -4.5650063 -2.7338593 -1.0191014 -4.529705 -2.7506146 -1.0148094 -4.5528259 -2.8030469 -1.0241737 -4.5030966 -2.8106694 -1.0165652 -4.4459882 -2.8130667 -1.0072008 -4.4707427 -2.8673067 -1.0171505 -4.4292212 -2.8791778 -1.0114928 -4.4253931 -2.9154766 -1.0148094 -4.3307567 -2.891367 -0.99647093 -4.350296 -2.9431748 -1.0054451 -4.3305373 -2.9687028 -1.005055 -4.3235159 -3.0030544 -1.0077862 -4.3555317 -3.0650976 -1.0200769 -4.2935247 -3.0610101 -1.009542 -4.2221937 -3.0493853 -0.99666601 -4.3039155 -3.1488044 -1.0214425 -4.1994247 -3.112067 -1.0003728 -4.1747603 -3.1336529 -0.99900711 -4.1905828 -3.1859288 -1.0077862 -4.2284517 -3.2558734 -1.0222229 -4.1534905 -3.2389238 -1.0083715 -4.1774044 -3.2990055 -1.0194916 -4.1907802 -3.351536 -1.0280756 -4.1838536 -3.3883007 -1.0315871 -3.9658389 -3.2521656 -0.98086369 -3.955617 -3.2845857 -0.98339987 -4.0922561 -3.4407465 -1.0241737 -3.8597584 -3.2858205 -0.96896321 -4.0920615 -3.5272148 -1.0352939 -4.0503941 -3.5348403 -1.0300264 -3.9742503 -3.5115578 -1.0155897 -4.017674 -3.5940897 -1.0329528 -3.9584777 -3.5850883 -1.0230032 -3.877862 -3.5556073 -1.0072008 -3.5986853 -3.3404005 -0.93735856 -3.5588279 -3.3442798 -0.93209112 -3.5339782 -3.3619962 -0.9309206 -3.5111639 -3.3815753 -0.93033528 -3.7220361 -3.6290562 -0.99471509 -3.7318006 -3.6835268 -1.0036893 -3.6966434 -3.6938736 -1.0001776 -3.7600784 -3.8036935 -1.0245639 -3.7537951 -3.8442402 -1.0294412 -3.7301366 -3.8672006 -1.0294412 -3.640727 -3.8211234 -1.0105175 -3.6588783 -3.8876812 -1.022613 -3.7164063 -3.9977124 -1.046414 -3.6957862 -4.024776 -1.0475845 -3.6835375 -4.0611825 -1.0512913 -3.6467719 -4.0705566 -1.0477797 -3.6308241 -4.1031408 -1.0505109 -3.6088057 -4.129035 -1.0514864 -3.4994662 -4.0538249 -1.0259296 -3.480252 -4.0819392 -1.0276854 -3.4172456 -4.0581951 -1.01598 -3.4242556 -4.1175523 -1.0259296 -3.4617805 -4.2150497 -1.0456337 -3.3963223 -4.1874518 -1.0331479 -3.4116337 -4.2595105 -1.046219 -3.3769178 -4.2695923 -1.0434877 -3.339793 -4.2763166 -1.0399761 -3.2643919 -4.2330313 -1.0239787 -3.3351784 -4.3801956 -1.0557784 -3.3318069 -4.431941 -1.0635819 -3.3191597 -4.471993 -1.0684593 -3.2441361 -4.427392 -1.0524619 -3.2013931 -4.4257545 -1.0471944 -3.1718979 -4.4421215 -1.046414 -3.1468413 -4.4647074 -1.0471944 -3.1081884 -4.4678273 -1.0432926 -3.1106851 -4.5304823 -1.0538275 -3.0520272 -4.5040092 -1.0429025 -3.0172484 -4.5120506 -1.0403663 -2.9862661 -4.5255671 -1.0391957 -2.9466722 -4.5257201 -1.0349038 -2.8785737 -4.4809923 -1.0200769 -2.8405278 -4.4819999 -1.016175 -2.8218091 -4.5134845 -1.0194916 -2.8043544 -4.5474119 -1.0233934 -2.7631521 -4.5427442 -1.018321 -2.7639744 -4.6075597 -1.0294412 -2.719178 -4.5965719 -1.0230032 -2.6849949 -4.6030025 -1.0206621 -2.6361718 -4.5836778 -1.0124683 -4.0905848 -7.2159681 -1.6106153 -2.5998137 -4.6516447 -1.0206621 -2.5584505 -4.6443119 -1.0153947 -2.5359864 -4.6711297 -1.0179309 -2.4818411 -4.6390324 -1.0072008 -3.8855977 -7.3727593 -1.6184188 -3.8276353 -7.3720875 -1.6129563 -3.7769711 -7.3849554 -1.6106153 -3.7245293 -7.3939757 -1.6074938 -2.3187644 -4.6734385 -0.99842185 -3.6365256 -7.4452939 -1.6088594 -3.5776014 -7.4400644 -1.6028117 -3.5352385 -7.4689684 -1.6043724 -2.1897111 -4.6995955 -0.99198383 -2.1779935 -4.7503915 -1.0001776 -3.442709 -7.6338115 -1.6264175 -3.3799005 -7.6189284 -1.618614 -3.3170125 -7.6026645 -1.6106153 -3.2818978 -7.6499162 -1.616468 -3.2322297 -7.6635833 -1.6151023 -3.1765103 -7.6624317 -1.6106153 -3.1423812 -7.7135711 -1.6174434 -3.099 -7.7427235 -1.6195894 -3.0446174 -7.7442493 -1.6158826 -2.992805 -7.7518048 -1.6135416 -2.9420569 -7.7617679 -1.6117858 -2.8957436 -7.7833509 -1.6125661 -2.8489401 -7.8037367 -1.6131514 -2.8218286 -7.8792448 -1.6254421 -1.1044925 -3.1425643 -0.62326312 -1.0976381 -3.1854506 -0.63087165 -1.0718019 -3.1735389 -0.62696987 -1.0618509 -3.2089238 -0.63301766 -2.5422552 -7.8491898 -1.6018362 -1.0686225 -3.367564 -0.66345173 -1.0447427 -3.3637533 -0.66130573 -2.4204195 -7.970674 -1.6176385 -0.98105872 -3.3011014 -0.64569855 -0.94247317 -3.2439494 -0.63262749 -0.89660084 -3.1581426 -0.61370373 -0.87720597 -3.1635847 -0.61370373 -2.1371603 -7.9019885 -1.5889602 -2.0891345 -7.9168501 -1.5893505 -0.8466751 -3.2874808 -0.63594401 -1.9746565 -7.8733931 -1.5753039 -1.9267743 -7.8872666 -1.5756941 -0.84225738 -3.5391526 -0.68432641 -1.8282939 -7.9036283 -1.5743284 -1.7765383 -7.9003439 -1.5714021 -1.7271925 -7.9072628 -1.5706217 -1.675796 -7.9042792 -1.5678905 -1.6250936 -7.9038448 -1.5657445 -1.5754169 -7.907896 -1.5645739 -1.5224113 -7.8943 -1.5598918 -1.4732255 -7.8996363 -1.5591114 -1.4245528 -7.9075618 -1.5589163 -1.3729852 -7.8987598 -1.5554047 -1.3241696 -7.9051008 -1.5550145 -1.2761078 -7.9159822 -1.5555998 -1.2267622 -7.918817 -1.5546243 -1.1762774 -7.9135833 -1.5520881 -1.1265936 -7.9128838 -1.5505275 -1.0769627 -7.9118724 -1.5489668 -1.0296578 -7.9280581 -1.5509176 -0.99794203 -8.071475 -1.5784254 -0.95091075 -8.098877 -1.5827173 -0.90065783 -8.0996847 -1.5817419 -0.85022622 -8.0982304 -1.5803763 -0.80003899 -8.0984144 -1.5794008 -0.75105536 -8.1109838 -1.5809616 -0.70177895 -8.1213026 -1.5821321 -0.6506815 -8.1098137 -1.5790106 -0.59975159 -8.0980034 -1.5758892 -0.55078113 -8.1122952 -1.5780351 -0.50111526 -8.1174793 -1.5784254 -0.45048365 -8.1057129 -1.5754989 -0.40131873 -8.120079 -1.5778401 -0.35199448 -8.1341476 -1.5801811 -0.30211392 -8.1371336 -1.5803763 -0.25251228 -8.1496181 -1.5825223 -0.20281728 -8.1637602 -1.5850585 -0.15284899 -8.1717157 -1.5864241 -0.10291255 -8.1891718 -1.5897406 -0.052527115 -8.1680717 -1.5854486 -0.0024077778 -8.1682405 -1.5854486 --0.047611888 -8.1514282 -1.5821321 --0.097793624 -8.1647129 -1.5848633 --0.14808646 -8.1747465 -1.5870093 --0.19769281 -8.1511326 -1.5825223 --0.24785317 -8.1546669 -1.5834976 --0.29788461 -8.1529932 -1.5834976 --0.34765303 -8.1451321 -1.5823271 --0.39867955 -8.1643972 -1.5866191 --0.44919971 -8.169632 -1.5881798 --0.49871925 -8.1569319 -1.586229 --0.54730791 -8.1321907 -1.581937 --0.59913981 -8.1550884 -1.5872045 --0.65010327 -8.1629915 -1.5895455 --0.70160615 -8.1754608 -1.592862 --0.74860686 -8.1368189 -1.5860338 --0.80111092 -8.1584263 -1.5913013 --0.84993136 -8.1416521 -1.5889602 --0.90051931 -8.1421328 -1.5901308 --0.94635993 -8.1013842 -1.5831075 --1.0015671 -8.1402025 -1.5920817 --1.048978 -8.1144505 -1.5881798 --1.1004616 -8.1204958 -1.590716 --1.1534369 -8.1359253 -1.5952032 --1.1993109 -8.1015291 -1.5897406 --1.2492977 -8.0959568 -1.5901308 --1.2975492 -8.079423 -1.588375 --1.3527551 -8.1051683 -1.5952032 --1.4016243 -8.0918837 -1.5942277 --1.452463 -8.0898876 -1.5955933 --1.496693 -8.0518961 -1.5897406 --1.5558907 -8.0936069 -1.6000804 --1.6018901 -8.06563 -1.5963737 --1.6517439 -8.0575705 -1.5967638 --1.7031829 -8.05688 -1.5987147 --1.7575998 -8.0692768 -1.6033969 --1.8053609 -8.050684 -1.6018362 --1.8545045 -8.0384998 -1.6016411 --1.9049252 -8.0317402 -1.6026165 --1.9555651 -8.0256186 -1.6037871 --2.0045345 -8.012517 -1.603592 --2.0551245 -8.0057659 -1.6047626 --2.1072061 -8.0043859 -1.6071036 --2.1573031 -7.9950938 -1.607884 --2.2068424 -7.9835968 -1.6082742 --2.2549856 -7.9670744 -1.6076889 --2.3079236 -7.9672184 -1.6106153 --2.3523052 -7.9378619 -1.6074938 --2.3986902 -7.9157705 -1.6059331 --2.4506991 -7.9121451 -1.6082742 --2.5006812 -7.9016342 -1.6092496 --2.5491178 -7.8861418 -1.6092496 --2.6026859 -7.8861847 -1.6125661 --2.6607354 -7.8988786 -1.618614 --2.720314 -7.914866 -1.6254421 --2.763634 -7.8832173 -1.6223207 --2.7891634 -7.8023901 -1.6088594 --2.8376575 -7.786972 -1.6092496 --2.8847008 -7.7675753 -1.6088594 --1.4180884 -3.7495263 -0.75807053 --1.4258963 -3.7014043 -0.74968165 --3.0379412 -7.7405496 -1.6147121 --3.0963004 -7.7490849 -1.6205648 --3.1522908 -7.7508354 -1.625052 --3.1915355 -7.711411 -1.62076 --3.2555447 -7.7314534 -1.6293439 --3.2940381 -7.6905971 -1.6248568 --3.3337204 -7.6531572 -1.6211501 --3.3770406 -7.6244874 -1.6193943 --3.4181206 -7.5911036 -1.6166631 --1.4456315 -3.1602294 -0.65194142 --1.4774078 -3.1779768 -0.65779412 --1.6134185 -3.4153497 -0.71202922 --1.6351936 -3.4071541 -0.71241939 --1.6534884 -3.3917677 -0.71124887 --1.672527 -3.3780429 -0.71046853 --1.6919001 -3.3650885 -0.70988321 --1.7138548 -3.357264 -0.71046853 --1.7380347 -3.3536501 -0.71202922 --1.7622347 -3.3498654 -0.71358997 --3.9426486 -7.3813496 -1.625247 --3.9939432 -7.3682275 -1.6277832 --4.0452247 -7.3547535 -1.6303194 --4.0926666 -7.3340759 -1.6312948 --4.1240587 -7.2849293 -1.6258323 --4.1940837 -7.3037114 -1.635977 --4.2279572 -7.2591958 -1.631685 --4.2664323 -7.2229838 -1.6293439 --4.298573 -7.1764779 -1.6246618 --4.3547482 -7.1700845 -1.6293439 --4.3930025 -7.1340432 -1.627198 --4.4460444 -7.1219282 -1.6307095 --4.4891357 -7.0936852 -1.6305145 --2.0193112 -3.1491723 -0.70481092 --2.0428739 -3.1433003 -0.70637161 --2.0642815 -3.1339819 -0.70715195 --4.7196169 -7.0678306 -1.6511941 --4.7365069 -6.999752 -1.6418297 --4.7843599 -6.9778371 -1.6435856 --4.8147721 -6.9306307 -1.6392936 --4.8622885 -6.908175 -1.6410494 --4.9114189 -6.8877921 -1.6433904 --4.9581847 -6.8638864 -1.6449511 --4.9990487 -6.8317513 -1.6445609 --5.0344481 -6.7922826 -1.6424149 --5.0689626 -6.751853 -1.6400739 --5.1150455 -6.7268682 -1.6416346 --5.1723852 -6.7163348 -1.6469021 --5.203846 -6.6720986 -1.6437806 --5.2544155 -6.6523561 -1.6469021 --5.2914581 -6.6153951 -1.6457316 --5.3449159 -6.5988059 -1.6498284 --5.372241 -6.549963 -1.6457316 --5.4254909 -6.5327187 -1.6498284 --5.467998 -6.5023079 -1.6506088 --5.5262346 -6.4902883 -1.6562663 --5.5851698 -6.4785404 -1.6621192 --5.6170754 -6.4352827 -1.659778 --5.6486611 -6.3918777 -1.657437 --5.70151 -6.3724456 -1.6615338 --5.7326007 -6.32862 -1.6591928 --5.7653575 -6.2868214 -1.657437 --5.8044915 -6.2520461 -1.657632 --5.8454313 -6.219171 -1.6584123 --5.8848338 -6.184608 -1.6588025 --5.9226713 -6.1483827 -1.6588025 --5.9856248 -6.1379032 -1.6660209 --6.0231738 -6.1010609 -1.6660209 --6.0383067 -6.0417924 -1.659778 --6.0780554 -6.0073857 -1.6605583 --6.1477895 -6.0021763 -1.6697276 --6.189445 -5.9691067 -1.6710932 --6.2209826 -5.9262815 -1.6697276 --6.2486558 -5.8799343 -1.6673865 --6.2939572 -5.850162 -1.6699227 --6.3333473 -5.8147488 -1.6708982 --6.3718133 -5.7784138 -1.6716785 --6.4173779 -5.7483683 -1.6744097 --6.4613442 -5.7166815 -1.6767509 --6.5073786 -5.6866069 -1.6796772 --6.5503168 -5.6536198 -1.6818233 --6.5863762 -5.6145935 -1.6822134 --6.6282067 -5.5803905 -1.6841643 --6.6638308 -5.5408692 -1.6845545 --6.6999779 -5.5017433 -1.6851398 --6.7282767 -5.4562058 -1.6837741 --6.7677536 -5.419723 -1.6853348 --6.8131914 -5.3878269 -1.6884563 --6.8538532 -5.3519559 -1.6904072 --6.8811255 -5.3056092 -1.6890416 --6.9393058 -5.2828894 -1.6954795 --6.9637494 -5.2343192 -1.6935287 --6.9500499 -5.1575985 -1.6822134 --6.9973903 -5.1264472 -1.6861153 --7.0525579 -5.1006556 -1.691968 --7.0956969 -5.0658321 -1.6948943 --7.1146197 -5.0137258 -1.691968 --7.1355867 -4.9632573 -1.6896268 --7.1537762 -4.911056 -1.6867005 --7.1374884 -4.8357182 -1.6755804 --7.1711025 -4.7945576 -1.6765558 --7.1962929 -4.747766 -1.6755804 --7.2532382 -4.7217102 -1.6822134 --6.4889565 -4.1678648 -1.4947315 --7.3636613 -4.6659365 -1.6946992 --7.4079556 -4.6305413 -1.6984059 --7.4637809 -4.6019826 -1.7048439 --7.4935536 -4.5571179 -1.7052341 --7.5095983 -4.5039921 -1.7025028 --7.5235848 -4.449842 -1.6993814 --7.5414267 -4.3981605 -1.6972353 --7.5733733 -4.3547373 -1.6984059 --7.5999508 -4.3081861 -1.6984059 --7.6236734 -4.2600374 -1.6978207 --7.6574016 -4.2174368 -1.6995765 --7.669342 -4.1628881 -1.696455 --7.6610098 -4.0977149 -1.6888465 --7.668654 -4.0414877 -1.6849446 --7.6793795 -3.9871285 -1.6818233 --7.6670222 -3.9211819 -1.6736294 --6.903419 -3.4775097 -1.4982432 --6.8929944 -3.4193997 -1.49122 --6.9015069 -3.3710163 -1.4884887 --6.9202929 -3.3277562 -1.4880985 --6.9441276 -3.2869093 -1.4888788 --7.005064 -3.2632842 -1.497853 --7.7801714 -3.5662944 -1.6630945 --7.814425 -3.5241323 -1.6658258 --6.4802685 -2.874959 -1.3708493 --6.49509 -2.8339665 -1.3702639 --7.8635464 -3.3735123 -1.6627043 --7.8813868 -3.3240559 -1.6621192 --7.9161315 -3.2816415 -1.6652405 --7.9533772 -3.2400355 -1.6689472 --7.9585381 -3.1853442 -1.6658258 --7.9852357 -3.1393216 -1.6673865 --8.0034332 -3.0899127 -1.6671915 --8.0194902 -3.0397038 -1.6666062 --8.0462637 -2.9935169 -1.668362 --8.0736942 -2.9474518 -1.6703129 --7.9752784 -2.8562067 -1.6457316 --7.7039251 -2.7058532 -1.5848633 --8.1831503 -2.8178134 -1.6822134 --8.2021446 -2.7681763 -1.6826036 --8.2329435 -2.7224138 -1.6855299 --8.2821522 -2.6824188 -1.6923581 --8.3190241 -2.6380696 -1.69665 --8.3500414 -2.5916252 -1.6997715 --8.3958187 -2.5494566 -1.7060144 --8.4338694 -2.504591 -1.7106966 --8.4792204 -2.4615405 -1.7169394 --8.5290775 -2.4193652 -1.7241578 --8.5910234 -2.3800728 -1.7339123 --8.6376562 -2.3360159 -1.7405454 --8.6575174 -2.2844732 -1.7417159 --8.7321644 -2.246943 -1.7542018 --8.7362728 -2.1909366 -1.7522508 --8.7466936 -2.1365929 -1.7516656 --8.628912 -2.0518172 -1.7249382 --8.7254305 -2.0182722 -1.7421061 --8.8792744 -1.9965215 -1.7709795 --9.0207176 -1.9702386 -1.7973167 --9.1640873 -1.9427005 -1.8240441 --9.3583708 -1.9239377 -1.8611113 --9.7249451 -1.9371389 -1.9330995 --9.8599205 -1.9011859 -1.9580711 --9.8627224 -1.8390337 -1.9563153 --9.863203 -1.7765714 -1.9541693 --9.9376955 -1.7270949 -1.9670453 --9.9906683 -1.6732091 -1.9756292 --9.9988098 -1.611564 -1.975239 --9.9280634 -1.5377314 -1.9590466 --9.9179087 -1.4739038 -1.9551448 --9.9646349 -1.418407 -1.9627533 --9.9537134 -1.3545955 -1.9588515 --9.9657288 -1.2939999 -1.9596318 --9.9725075 -1.2327068 -1.9594368 --10.011055 -1.1751488 -1.9656796 --10.02685 -1.1146743 -1.9674355 --10.005213 -1.050164 -1.9617778 --10.001708 -0.98779052 -1.9598269 --9.9851189 -0.92432588 -1.9553399 --9.9974422 -0.86363101 -1.9567055 --10.037748 -0.80509043 -1.9637288 --10.00631 -0.74080968 -1.9565104 --9.9891386 -0.67793965 -1.9522184 --10.002899 -0.61723763 -1.9541693 --10.008457 -0.55595791 -1.9545594 --9.979353 -0.49294364 -1.9481215 --9.9851294 -0.43182901 -1.9487067 --9.9944525 -0.37080702 -1.9500724 --9.9710512 -0.30868912 -1.9450001 --10.021782 -0.24871306 -1.9547546 --9.9731073 -0.18628754 -1.944805 --9.9838705 -0.12521204 -1.9467559 --9.9844503 -0.063949816 -1.9467559 --10.008194 -0.0026887686 -1.9514381 --9.9560413 0.058409389 -1.9410982 --10.2095 0.12257588 -1.9916266 --10.170312 0.18451966 -1.9840181 --10.222915 0.24823564 -1.9947481 --10.080032 0.30664685 -1.9666551 --10.006412 0.36586663 -1.9524136 --10.07747 0.4304052 -1.9670453 --9.9894133 0.48805743 -1.9500724 --9.991127 0.54961205 -1.9510479 --9.9836502 0.61066616 -1.9502676 --9.9904795 0.67263919 -1.9524136 --9.4656487 -0.23920082 -1.9592985 --9.468894 -0.1811537 -1.9597116 --9.4659138 -0.12299924 -1.9588853 --9.4557285 -0.064840905 -1.9566133 --9.4539909 -0.0068189302 -1.9562002 --9.471467 0.051284414 -1.959918 --9.4308605 0.10893762 -1.9514498 --9.4466448 0.16709571 -1.9549609 --9.4112062 0.22424181 -1.9477319 --9.3979177 0.28163245 -1.9452534 --9.4370804 0.3407729 -1.9539282 --9.3839779 0.3965255 -1.9431878 --9.3852777 0.4542861 -1.9440141 --9.3862209 0.51207757 -1.9448402 --9.3877859 0.56995696 -1.9458729 --9.3714209 0.6267004 -1.9431878 --9.4005775 0.68661249 -1.9502105 --9.3669262 0.74196386 -1.9440141 --9.3738956 0.80042273 -1.9464926 --9.3746538 0.85845989 -1.9477319 --9.3721313 0.916251 -1.9483515 --9.3488159 0.97191966 -1.9446337 --9.3426762 1.0292646 -1.9446337 --9.3118877 1.0837442 -1.9394701 --9.3371115 1.1447884 -1.9462861 --9.3337927 1.2025582 -1.9471122 --9.3155727 1.2583663 -1.9448402 --9.2979879 1.314133 -1.9427748 --9.3226595 1.3760158 -1.9497973 --9.2840624 1.428581 -1.9433944 --9.2702913 1.4847466 -1.9423617 --9.2600412 1.5414394 -1.9421551 --9.23209 1.5950648 -1.9382308 --9.2240553 1.6520267 -1.9386438 --9.2195177 1.7096634 -1.9398831 --9.156002 1.7560669 -1.9285231 --9.1968832 1.8224822 -1.9396766 --9.1807346 1.8778987 -1.9386438 --9.1613798 1.93258 -1.9369915 --9.1216221 1.982731 -1.9310017 --9.1541615 2.0487044 -1.9407094 --9.1576281 2.1085663 -1.9442205 --9.1150017 2.1577308 -1.9378177 --9.0949354 2.2120006 -1.9363718 --9.1381493 2.2819853 -1.9487646 --9.0860624 2.3282995 -1.9405028 --9.0621414 2.3815203 -1.9384373 --9.0105124 2.4271562 -1.930382 --9.0180864 2.4886436 -1.9353391 --8.9856987 2.5391424 -1.9316213 --8.9718294 2.5947733 -1.9320344 --8.9810715 2.6572688 -1.9376111 --8.9505501 2.7080758 -1.934513 --8.9328299 2.7626555 -1.9343064 --8.9119787 2.8162351 -1.9334803 --8.8945312 2.8708649 -1.9334803 --8.8878994 2.9290612 -1.9359587 --8.8753242 2.9854126 -1.937198 --8.8170443 3.0261581 -1.9283166 --8.823245 3.0889294 -1.9338933 --8.7875385 3.1370893 -1.9301755 --8.7947884 3.2006519 -1.9361653 --8.7502146 3.2453699 -1.9305886 --8.6843729 3.2817078 -1.9202613 --8.7133827 3.35391 -1.9314147 --8.6543789 3.3923156 -1.9227399 --8.6752043 3.4620345 -1.932241 --8.6293221 3.5052583 -1.9266642 --8.6157894 3.5615046 -1.9285231 --8.6000881 3.6169579 -1.929969 --8.5741348 3.6681199 -1.9291427 --8.5362139 3.7140253 -1.9256315 --8.4533119 3.7398126 -1.9117929 --8.5471048 3.8441813 -1.9388504 --8.5002193 3.885977 -1.9334803 --8.4389467 3.9207468 -1.9248053 --8.3908405 3.9611766 -1.9192286 --8.3893147 4.0235872 -1.9245987 --8.3978949 4.09127 -1.9324474 --8.3086138 4.1110487 -1.9173696 --8.3042154 4.1724939 -1.9223268 --8.2557955 4.2118092 -1.9169565 --8.2350101 4.2650862 -1.9181958 --8.2580509 4.3414855 -1.929969 --8.1958628 4.3731904 -1.9215006 --8.1740379 4.4261923 -1.9227399 --8.1861725 4.4979358 -1.932241 --8.1396179 4.5376 -1.9276969 --8.1116219 4.5874586 -1.9276969 --8.0485239 4.6171837 -1.9192286 --8.0284986 4.671402 -1.921294 --7.9356403 4.6827879 -1.9055965 --7.9302673 4.7454581 -1.9113798 --7.9076924 4.7980886 -1.9130322 --7.8631024 4.8372912 -1.9093144 --7.8349338 4.8864827 -1.9097275 --7.7833004 4.9208713 -1.9043573 --7.7529597 4.9685364 -1.9043573 --7.7050958 5.0048223 -1.9000198 --7.6824145 5.057385 -1.9020853 --7.5958896 5.0675063 -1.8880402 --7.5978875 5.1364846 -1.8965086 --7.5751076 5.1890898 -1.8987806 --7.511776 5.2137156 -1.8907253 --7.5156612 5.2850342 -1.9000198 --7.5452509 5.375329 -1.9161304 --7.48277 5.4003396 -1.9084882 --7.4502831 5.4467292 -1.9086947 --7.3577476 5.4486713 -1.8932039 --7.3547034 5.5166106 -1.9012591 --7.3098078 5.5533485 -1.8983674 --7.3027377 5.618978 -1.9055965 --7.2758408 5.6696949 -1.907662 --7.2516685 5.7227173 -1.9105537 --7.1835504 5.7408404 -1.9016721 --7.1649232 5.7983503 -1.9062161 --7.1791601 5.8831334 -1.9198482 --7.1805768 5.9583116 -1.9301755 --7.1131668 5.9764543 -1.9217072 --7.0592208 6.0054059 -1.9169565 --7.0326185 6.0575471 -1.9198482 --6.9886808 6.0947967 -1.9179893 --6.9819584 6.1647615 -1.9266642 --6.9396238 6.2035737 -1.9254249 --6.9057817 6.2499771 -1.9266642 --6.849988 6.2763691 -1.9217072 --6.8185215 6.3249354 -1.9237726 --6.7724514 6.3599563 -1.9217072 --6.7538652 6.4209414 -1.9276969 --6.713635 6.4615831 -1.9274904 --6.6703572 6.4992418 -1.9264576 --6.6428919 6.5524154 -1.9301755 --6.6157174 6.6061869 -1.9340999 --6.5915732 6.6633496 -1.939057 --6.5567183 6.7099671 -1.9409158 --6.4936781 6.7275457 -1.9343064 --6.4779344 6.7941718 -1.9421551 --6.4139857 6.8102875 -1.9353391 --6.3894062 6.8681397 -1.9407094 --6.3199992 6.8776779 -1.932241 --6.2796526 6.9185009 -1.9328606 --6.2566786 6.9787564 -1.939057 --6.2215242 7.025805 -1.9415355 --6.1995554 7.0881505 -1.9483515 --6.1482711 7.1171722 -1.9458729 --6.1159167 7.1681604 -1.9495908 --6.0674052 7.200315 -1.9481449 --6.0293698 7.2449288 -1.9502105 --5.9848022 7.2817879 -1.9502105 --5.9412427 7.3198924 -1.9506235 --5.905396 7.3676605 -1.9537216 --5.8594708 7.4029899 -1.9535152 --5.8175516 7.4434285 -1.9547545 --5.7765527 7.4851809 -1.9564068 --5.7435627 7.5376053 -1.9609509 --5.6824985 7.5531588 -1.9557872 --5.6424642 7.5965238 -1.9580592 --5.6003752 7.6373143 -1.9597116 --5.5585723 7.6786666 -1.9615704 --5.5022497 7.699892 -1.9582657 --5.4498243 7.7263126 -1.9564068 --5.4341822 7.8053761 -1.9681799 --5.3839703 7.8353472 -1.9673537 --5.3495221 7.8884792 -1.9725174 --5.2830596 7.8943214 -1.9657013 --5.2523155 7.9535322 -1.9725174 --5.2034144 7.98561 -1.9725174 --5.1606674 8.0272636 -1.9749959 --5.1097441 8.0562992 -1.9743763 --5.0659242 8.0966234 -1.9766483 --4.9765778 8.0634441 -1.9607443 --4.9702554 8.1648664 -1.9783007 --4.927114 8.206954 -1.9811922 --4.8721781 8.229454 -1.9793334 --4.8289909 8.2718687 -1.9824315 --4.7908363 8.323391 -1.9878018 --4.738709 8.3509283 -1.9873886 --4.6878572 8.3807011 -1.9875952 --4.6495743 8.4332981 -1.9933785 --4.5954051 8.4573698 -1.9923458 --4.5300303 8.4603939 -1.9863559 --4.4926438 8.5157223 -1.9929653 --4.4357953 8.5344467 -1.9908999 --4.3878045 8.5702124 -1.9929653 --4.3377795 8.6022158 -1.9942046 --4.2984076 8.6558361 -2.0006075 --4.2387681 8.6688633 -1.9975094 --4.1787062 8.680603 -1.9942046 --4.1211743 8.697238 -1.9921392 --4.0594597 8.704627 -1.9880083 --4.0243387 8.7693872 -1.9973029 --3.9603882 8.7716217 -1.9921392 --3.9180105 8.8216887 -1.998129 --3.8598909 8.8365974 -1.9960636 --3.8167973 8.8861856 -2.0020535 --3.7580135 8.8995228 -1.9997814 --3.7127144 8.9450064 -2.004945 --3.6529546 8.9558411 -2.00226 --3.6132219 9.0162315 -2.0109348 --3.5635662 9.0527983 -2.0142395 --3.4959559 9.0434647 -2.0072169 --3.4393587 9.0620012 -2.0065975 --3.3908644 9.1021881 -2.0109348 --3.3369663 9.1283369 -2.0121741 --3.2818842 9.1514034 -2.0127938 --3.223073 9.1639843 -2.0111413 --3.1728442 9.2011623 -2.0150657 --3.1207137 9.2334347 -2.0179574 --3.064615 9.2542667 -2.0183706 --2.9969049 9.2393913 -2.0109348 --2.9457846 9.2753239 -2.0148592 --2.8914311 9.3016338 -2.0167181 --2.8394282 9.3360491 -2.020436 --2.7832057 9.3570471 -2.0212622 --2.7298381 9.3880415 -2.0243604 --2.6753924 9.4159088 -2.0268388 --2.6212306 9.4453468 -2.0297306 --2.5619462 9.4565306 -2.0286977 --2.5003726 9.4588289 -2.0258062 --2.4337373 9.4408321 -2.0185771 --2.3755252 9.4546385 -2.0183706 --2.3107214 9.4414759 -2.0123806 --2.2600038 9.4859333 -2.01899 --2.2094901 9.5329828 -2.0262194 --2.1561177 9.5692682 -2.0311763 --2.1011276 9.5995226 -2.0348942 --2.0405595 9.6045771 -2.0332417 --1.971516 9.5680437 -2.0227079 --1.9248424 9.6404085 -2.0357203 --1.8600819 9.6232185 -2.0295241 --1.7952454 9.6036739 -2.0229144 --1.7470678 9.6742058 -2.0357203 --1.6801146 9.6413679 -2.0264258 --1.6207626 9.6505299 -2.0262194 --1.5640162 9.6757479 -2.0295241 --1.5046176 9.6851625 -2.0295241 --1.446028 9.7000179 -2.0307631 --1.3776273 9.646718 -2.0175443 --1.3283416 9.7276964 -2.0330353 --1.2669845 9.7230511 -2.0303502 --1.2087473 9.7422943 -2.0328288 --1.1496342 9.7553577 -2.0340681 --1.0889947 9.7554216 -2.0326221 --1.029424 9.7648392 -2.0332417 --0.96968192 9.7729187 -2.0336549 --0.9115116 9.7981691 -2.0377858 --0.84883326 9.7743349 -2.0315895 --0.79002368 9.7939882 -2.0346875 --0.72984135 9.7976751 -2.034481 --0.66790837 9.7756128 -2.0289044 --0.60609144 9.7502308 -2.0227079 --0.54789627 9.7830734 -2.0289044 --0.48888201 9.8067722 -2.0332417 --0.42818648 9.7978573 -2.0307631 --0.3673982 9.7827005 -2.0270455 --0.30767336 9.7945509 -2.0291109 --0.24794072 9.8109255 -2.0322092 --0.18753101 9.8015013 -2.029937 --0.12700398 9.7731171 -2.0237408 --0.067136131 9.7883892 -2.0268388 --0.0070826625 9.7993793 -2.0291109 -0.052945457 9.7806482 -2.0251865 -0.11317133 9.798728 -2.0291109 -0.17324127 9.7949142 -2.0284913 -0.23303603 9.7809515 -2.0258062 -0.29275376 9.769557 -2.0237408 -0.35096505 9.7196646 -2.0136199 -0.41369215 9.7906456 -2.0291109 -0.47352231 9.7830362 -2.0280781 -0.5279488 9.6773634 -2.0063908 -0.58826607 9.6895676 -2.0096955 -0.64829624 9.694562 -2.0115545 -0.7100482 9.7216291 -2.0181639 -0.76621079 9.6731968 -2.0088694 -0.82663161 9.6809874 -2.0115545 -0.88789034 9.6961946 -2.015892 -0.94080228 9.6233711 -2.0016403 -1.0048891 9.6660776 -2.0119677 -1.0654655 9.6714001 -2.0144463 -1.1321374 9.7278528 -2.0278716 -1.1951379 9.7479162 -2.0336549 -1.2565523 9.7530146 -2.03634 -1.3060279 9.66852 -2.0200229 -1.3697085 9.6913261 -2.0266323 -1.4272909 9.6701565 -2.0239472 -1.4784169 9.6080284 -2.0125873 -1.5455416 9.6499805 -2.0235341 -1.6007082 9.6161871 -2.0183706 -1.6631793 9.6264315 -2.0227079 -1.7113502 9.5553684 -2.0096955 -1.7628143 9.5062065 -2.0014338 -1.8192675 9.4856014 -1.9993683 -1.8819994 9.4972944 -2.0043254 -1.9531766 9.5488358 -2.0179574 -2.007894 9.5184813 -2.0140331 -2.0602348 9.4782543 -2.0080433 -2.1204901 9.4749832 -2.0101087 -2.178807 9.4627466 -2.0103152 -2.2429128 9.4749079 -2.015892 -2.295459 9.4381495 -2.0109348 -2.3519051 9.418191 -2.0096955 -2.4213059 9.4490786 -2.0196097 -2.4628279 9.3715868 -2.0059779 -2.5164678 9.3421268 -2.0028796 -2.5724416 9.3217945 -2.0018468 -2.6269302 9.2964191 -1.9997814 -2.6985996 9.3308821 -2.0109348 -2.752749 9.3038273 -2.0086629 -2.8038347 9.2670946 -2.0043254 -2.8591986 9.2450418 -2.0032926 -2.9123337 9.2161283 -2.0008142 -2.9742372 9.2148466 -2.0045319 -3.0301099 9.1945648 -2.0041189 -3.0867815 9.1767263 -2.0043254 -3.1443012 9.1613159 -2.0051515 -3.1991618 9.1381559 -2.0043254 -3.2485938 9.0999241 -2.0001945 -3.308718 9.091773 -2.0028796 -3.3644419 9.0712996 -2.0028796 -3.4089725 9.0211964 -1.9962702 -3.4614499 8.9928045 -1.9946177 -3.5337012 9.0151224 -2.0045319 -3.579885 8.9705515 -1.9993683 -3.5987775 8.8595781 -1.9791268 -3.6646571 8.8653612 -1.9855298 -3.7186058 8.8418064 -1.9853232 -3.7604742 8.7900362 -1.9787138 -3.8080928 8.7524414 -1.975409 -3.8704331 8.7485962 -1.9799531 -3.923238 8.7228985 -1.9795399 -3.9713988 8.6870928 -1.9768548 -4.0431771 8.7024927 -1.9861494 -4.1002574 8.6854839 -1.9880083 -4.1555886 8.6645727 -1.989041 -4.2116747 8.6450691 -1.9904869 -4.2446823 8.578723 -1.9809858 -4.2972407 8.552516 -1.9809858 -4.3349648 8.4972258 -1.9741697 -4.3928704 8.4817619 -1.9768548 -4.4015808 8.3723717 -1.957233 -4.4648447 8.367651 -1.9626032 -4.5454526 8.3943043 -1.9756155 -4.5700192 8.3173761 -1.9638424 -4.6252551 8.2968702 -1.9657013 -4.7083449 8.3253975 -1.9795399 -4.7637215 8.3039894 -1.9813988 -4.7978549 8.2458487 -1.9743763 -4.8543267 8.226366 -1.9768548 -4.8810997 8.1569643 -1.9671472 -4.9153252 8.1009283 -1.9607443 -4.9623756 8.0664492 -1.9597116 -4.9946914 8.0084515 -1.9528955 -5.0646496 8.0107355 -1.9611573 -5.1031494 7.9630318 -1.9570265 -5.1439195 7.9192615 -1.9539282 -5.2026358 7.9030781 -1.9578526 -5.255374 7.8775182 -1.959505 -5.2811441 7.8118882 -1.9510366 -5.3262134 7.7753005 -1.9500039 -5.3503914 7.7087126 -1.941329 -5.4065948 7.6885443 -1.9446337 -5.4775114 7.6886959 -1.9533086 -5.5165696 7.6438341 -1.9504169 -5.543735 7.5829849 -1.9433944 -5.597146 7.5582623 -1.9458729 -5.6299148 7.5057735 -1.9411224 -5.6681695 7.460959 -1.9384373 -5.7120523 7.4237127 -1.9378177 -5.7761383 7.4124503 -1.9442205 -5.8354521 7.3945355 -1.9489712 -5.8684983 7.3433032 -1.9448402 -5.9035978 7.2949872 -1.9415355 -5.9445267 7.2540851 -1.9402962 -5.9758053 7.2016606 -1.9359587 -6.0104403 7.1536207 -1.9328606 -6.0618286 7.1255503 -1.9353391 -6.1041589 7.0867386 -1.934926 -6.1256638 7.0240779 -1.9279035 -6.1828938 7.0024958 -1.9324474 -6.2048779 6.941083 -1.925838 -6.2637639 6.9210167 -1.9310017 -6.2803349 6.8543167 -1.9229463 -6.3003168 6.7919793 -1.9161304 -6.3412032 6.75248 -1.9159238 -6.4007177 6.7325912 -1.9215006 -6.4405508 6.6917801 -1.9210875 -6.4896827 6.6605458 -1.923566 -6.489892 6.5794997 -1.9113798 -6.5329061 6.5423245 -1.9122061 -6.572926 6.5021162 -1.9122061 -6.6168971 6.465766 -1.9134452 -6.6451826 6.4141712 -1.9101405 -6.7176952 6.4050112 -1.9198482 -6.7404876 6.3482423 -1.9150976 -6.7556734 6.28477 -1.9082817 -6.7566466 6.2087722 -1.8975413 -6.8170748 6.1875839 -1.9039441 -6.8505416 6.1417198 -1.902705 -6.9144669 6.1229229 -1.9101405 -6.9276037 6.059123 -1.9033245 -6.9120831 5.971087 -1.8886598 -6.9493356 5.9291978 -1.8888663 -6.9998012 5.8984256 -1.8927907 -7.0456376 5.8635015 -1.8954757 -7.0799713 5.8189173 -1.8950627 -7.1185808 5.7778325 -1.8958889 -7.1485548 5.7297611 -1.894443 -7.186646 5.6882195 -1.8952693 -7.2252674 5.6470289 -1.896302 -7.187746 5.5469928 -1.8770932 -7.226316 5.5063434 -1.8783325 -7.2552748 5.4583702 -1.8770932 -7.2831321 5.4096661 -1.8756474 -7.3422256 5.3839703 -1.8824635 -7.3648195 5.3313589 -1.8797783 -7.4164987 5.2997222 -1.8847355 -7.3905125 5.2129436 -1.8696576 -7.4520693 5.1881843 -1.8772998 -7.4902139 5.1467948 -1.8789521 -7.5435171 5.1155667 -1.8845289 -7.5918388 5.0806127 -1.8888663 -7.6261358 5.0360913 -1.8896925 -7.6470566 4.9827933 -1.8872139 -7.6857162 4.9410696 -1.8892795 -7.7043223 4.8864803 -1.8863878 -7.7499194 4.8489771 -1.8903122 -7.7637067 4.7915688 -1.8863878 -7.7820964 4.737227 -1.8837026 -7.8361826 4.7044973 -1.889899 -7.8430114 4.6433659 -1.8845289 -7.9034634 4.6139011 -1.8923776 -7.8968577 4.5453062 -1.8839092 -7.9773579 4.5267072 -1.896715 -8.0118141 4.4814954 -1.8983674 -7.9320593 4.3731966 -1.8725492 -8.0679255 4.3837752 -1.8987806 -8.1283112 4.3522024 -1.9068358 -8.0804415 4.2629795 -1.8890729 -8.0856104 4.2024879 -1.8841158 -8.0973101 4.1456614 -1.8808111 -8.1531715 4.1113195 -1.8880402 -8.1826267 4.0633917 -1.8890729 -8.2408056 4.0294409 -1.8969216 -8.2909403 3.9911089 -1.9029114 -8.310853 3.9380665 -1.9018787 -8.3002777 3.8708682 -1.8938234 -8.3585529 3.835783 -1.9018787 -8.3418036 3.7663038 -1.8925842 -8.3710155 3.7178288 -1.89403 -8.4062223 3.6718788 -1.8969216 -8.3854427 3.6016934 -1.8870075 -8.416398 3.5539801 -1.8890729 -8.468771 3.5150251 -1.8960954 -8.4104548 3.4304736 -1.8779194 -8.5321569 3.4192078 -1.900846 -8.5802889 3.3775439 -1.9070424 -8.5853367 3.3188345 -1.9035311 -8.5982218 3.2633154 -1.9018787 -8.6043301 3.2053723 -1.8987806 -8.5788078 3.136054 -1.8886598 -8.6273603 3.0939269 -1.8952693 -8.6729488 3.0503478 -1.9012591 -8.7303505 3.0104723 -1.909934 -8.7069473 2.9427476 -1.9006394 -8.6960459 2.8797309 -1.8942366 -8.7191362 2.8281305 -1.8954757 -8.7307301 2.7728002 -1.8942366 -8.7737408 2.7273107 -1.9000198 -8.8052874 2.6779807 -1.9033245 -8.8009214 2.6177642 -1.8987806 -8.8656721 2.5779214 -1.9095209 -8.9048529 2.5301607 -1.9146845 -8.8589287 2.4584646 -1.9012591 -8.8540144 2.3986874 -1.8969216 -8.8997812 2.3525679 -1.9037377 -8.9263659 2.3010914 -1.9064227 -8.9763765 2.2553384 -1.9142715 -8.9444284 2.1890514 -1.9043573 -9.0090876 2.1463757 -1.9155108 -8.9572735 2.0760312 -1.9014657 -8.9832058 2.0240428 -1.9043573 -9.0155277 1.973279 -1.9086947 -9.0178957 1.9158899 -1.9066293 -9.0649385 1.8678285 -1.9142715 -9.0867825 1.8142798 -1.9165435 -9.0631609 1.751804 -1.9091078 -9.1064386 1.7022747 -1.9161304 -9.1051588 1.6442795 -1.9136518 -9.125679 1.5902284 -1.9159238 -9.1449137 1.5358254 -1.9179893 -9.12712 1.4753115 -1.9122061 -9.1824093 1.4264923 -1.9221202 -9.1513119 1.3642068 -1.9136518 -9.2060032 1.3146713 -1.923566 -9.1848135 1.254187 -1.9173696 -9.20786 1.1998298 -1.9206743 -9.2344675 1.1457192 -1.9248053 -9.2209187 1.0866303 -1.9204679 -9.1807375 1.0248193 -1.9105537 -9.2170172 0.97164917 -1.9169565 -9.2529888 0.9180724 -1.9233595 -9.2360401 0.8591944 -1.9186089 -9.2411385 0.80250692 -1.9186089 -9.2761221 0.74822927 -1.9250119 -9.2766352 0.69100708 -1.9241856 -9.2914381 0.63480777 -1.9264576 -9.2287531 0.57365406 -1.9124125 -9.2672682 0.51898772 -1.9198482 -9.284936 0.4628464 -1.9229463 -9.2739162 0.40526775 -1.9200548 -9.2654734 0.34795207 -1.9177828 -9.2527647 0.29063225 -1.9146845 -9.2758923 0.23439759 -1.9192286 -9.3016119 0.17794628 -1.9243922 -9.2271957 0.11988726 -1.9084882 -9.3050528 0.063801296 -1.9248053 -9.2808075 0.0066866907 -1.9196416 -9.2885017 -0.050301451 -1.921294 -9.2704077 -0.107091 -1.9175762 -9.3096857 -0.16467892 -1.9260446 -9.2439413 -0.22026347 -1.9124125 -9.3235893 -0.27940822 -1.9295559 -9.3578777 -0.33791628 -1.937198 -9.2559166 -0.39111966 -1.9161304 -9.2621384 -0.44833091 -1.9179893 -9.236742 -0.5039289 -1.9132388 -9.2559395 -0.56195784 -1.9179893 -9.2366972 -0.6176967 -1.9146845 -9.2015057 -0.67208093 -1.9080751 -9.2313471 -0.73123038 -1.9153042 -9.2325363 -0.78835827 -1.9165435 -9.2518845 -0.84722281 -1.9217072 -9.2728043 -0.90654469 -1.9272839 -9.2991829 -0.96676189 -1.9340999 -9.255146 -1.0196253 -1.9260446 -9.2458 -1.0760555 -1.9254249 -9.2584467 -1.135147 -1.9295559 -9.2600412 -1.1930592 -1.9314147 -9.226366 -1.24632 -1.925838 -9.2137012 -1.302224 -1.9248053 -9.2268324 -1.3618759 -1.9293493 -9.2057304 -1.4165311 -1.9266642 -9.2132893 -1.4756196 -1.9301755 -9.1760721 -1.5274655 -1.9241856 -9.1771326 -1.585572 -1.9264576 -9.2288704 -1.6528889 -1.9396766 -9.177187 -1.7018156 -1.9307951 -9.131979 -1.7514604 -1.9233595 -9.1201 -1.8072702 -1.9231529 -9.1213017 -1.8657445 -1.925838 -9.0704288 -1.9133981 -1.9173696 -9.0183611 -1.9602902 -1.9086947 -8.8228369 -1.9745686 -1.869038 -8.66467 -1.9950835 -1.8374364 -8.4094706 -1.9907473 -1.7847673 -8.2050495 -1.9956098 -1.7430451 -8.1679688 -2.0397549 -1.7376748 -8.0121784 -2.0531659 -1.7064865 -7.932241 -2.0846353 -1.6918217 -7.9797659 -2.1495521 -1.7050406 -7.9937787 -2.2060215 -1.7110305 -7.4914131 -2.1169624 -1.6038332 -7.1765656 -2.0756423 -1.5375321 -7.0820675 -2.0954902 -1.5195626 -6.7618971 -2.04598 -1.4518156 -6.5875015 -2.0374258 -1.4160831 -6.4853106 -2.0495086 -1.3962548 -6.3105927 -2.0369759 -1.3603158 -6.2477937 -2.0591235 -1.3491623 -6.0300884 -2.0284896 -1.3035157 -5.9823608 -2.0533829 -1.2956669 -5.7544746 -2.0147314 -1.2475418 -5.6682849 -2.0236883 -1.2310182 -5.5720901 -2.0279844 -1.2122225 -5.5182595 -2.0468266 -1.2029279 -5.4726462 -2.0681977 -1.1954923 -5.3283606 -2.0511312 -1.1657497 -5.0651579 -1.9856026 -1.1089497 -5.0083499 -1.9988763 -1.0988289 -4.9796734 -2.0229421 -1.095111 -4.8261051 -1.995155 -1.0628899 -4.7948318 -2.0167649 -1.0585525 -4.7553792 -2.0346031 -1.0523561 -4.6387291 -2.018466 -1.0283968 -4.6253619 -2.046495 -1.0281903 -4.6448426 -2.0892839 -1.0356259 -4.7146935 -2.1555746 -1.0548346 -4.6046562 -2.1395304 -1.0323212 -4.6179862 -2.1802735 -1.0385176 -4.5886412 -2.2009525 -1.0347997 -4.5266705 -2.2054996 -1.0234396 -4.5183144 -2.2358365 -1.0246789 -4.5080075 -2.2652752 -1.0255052 -4.5759525 -2.334686 -1.0449204 -4.4989843 -2.3303237 -1.0300492 -4.5131812 -2.3729088 -1.0368651 -4.4605532 -2.3802915 -1.0277772 -4.4363995 -2.4024916 -1.0255052 -4.4275775 -2.4329655 -1.026951 -4.4587159 -2.4858115 -1.0381044 -4.4289002 -2.5049353 -1.0345932 -4.3480954 -2.4945769 -1.0186892 -4.3623071 -2.5384307 -1.0259182 -4.3887839 -2.5900104 -1.0362456 -4.300602 -2.5736864 -1.0184826 -4.3424492 -2.6350446 -1.0327343 -4.3553677 -2.6795821 -1.0399634 -4.3139372 -2.6907234 -1.033767 -4.2576485 -2.6920466 -1.0238528 -4.2871838 -2.7476826 -1.0354193 -4.2554736 -2.7643437 -1.0317016 -4.254777 -2.801162 -1.0358324 -4.2904162 -2.862509 -1.0492579 -4.1106501 -2.7791901 -1.0079488 -4.1605201 -2.8502524 -1.0250921 -4.2530766 -2.9521539 -1.0533888 -4.0940146 -2.8791451 -1.0170368 -4.0483794 -2.8843424 -1.0098077 -4.0131502 -2.8965323 -1.0052637 -3.9984612 -2.9234116 -1.0060898 -4.0968256 -3.0340643 -1.0366586 -4.0577803 -3.0438812 -1.0312884 -4.0608425 -3.085294 -1.0370717 -4.038733 -3.1077662 -1.0362456 -4.0381117 -3.1469219 -1.0412027 -4.0002918 -3.1570938 -1.0362456 -3.9281037 -3.1394341 -1.0219939 -3.9285424 -3.1794801 -1.027364 -3.8499279 -3.1551547 -1.0112535 -3.7664909 -3.1256127 -0.99369711 -3.7839501 -3.1795039 -1.0038178 -3.9149148 -3.3307223 -1.0455401 -3.847698 -3.3144541 -1.0325277 -3.7550197 -3.274981 -1.0122862 -3.8558779 -3.404809 -1.0463663 -3.8130291 -3.4088423 -1.04017 -3.7194934 -3.3665221 -1.0195153 -3.6598094 -3.3535891 -1.0083618 -3.5997081 -3.3393862 -0.99700183 -3.5527594 -3.3366294 -0.98935968 -3.5336375 -3.3597143 -0.98977274 -3.5129564 -3.3813331 -0.98977274 -3.7121999 -3.617218 -1.0546281 -3.6801825 -3.6303086 -1.0517365 -3.612833 -3.6078849 -1.038311 -3.5899391 -3.6292894 -1.0381044 -3.6264141 -3.7114291 -1.0558674 -3.5138729 -3.6406882 -1.0286033 -3.5022712 -3.6735101 -1.031908 -3.5118661 -3.7291183 -1.0418223 -3.4762557 -3.7369859 -1.0378979 -3.4459777 -3.7503207 -1.0356259 -3.4367115 -3.7866082 -1.0399634 -3.4225571 -3.8178232 -1.042855 -3.3893366 -3.8277643 -1.0397568 -3.3496816 -3.8300774 -1.0345932 -3.3158832 -3.8387125 -1.0312884 -3.2751191 -3.8388898 -1.0257117 -3.3177071 -3.9374728 -1.047399 -3.2803404 -3.941963 -1.0430615 -3.2560914 -3.9620166 -1.0430615 -3.2693346 -4.0282607 -1.0556608 -3.2439442 -4.0474815 -1.0554543 -3.1898992 -4.0304852 -1.0455401 -3.2410302 -4.1471143 -1.0715649 -3.1515572 -4.0840435 -1.0494645 -3.058238 -4.0138087 -1.0257117 -3.0953197 -4.1145921 -1.047399 -3.0886853 -4.1586413 -1.0540085 -3.0411224 -4.1475325 -1.0461597 -2.9863541 -4.1256948 -1.0356259 -2.9899969 -4.1845393 -1.0461597 -2.9676487 -4.2076044 -1.047399 -2.918853 -4.1928124 -1.0389307 -2.9135749 -4.2404795 -1.0465728 -2.8567464 -4.2129297 -1.0350063 -2.8591416 -4.2726617 -1.0457467 -2.8296359 -4.2852259 -1.0445074 -2.817178 -4.3238211 -1.0498775 -2.7509081 -4.2793002 -1.0343866 -2.6968222 -4.2523084 -1.0234396 -2.6846929 -4.2911701 -1.0290164 -2.6300471 -4.2617693 -1.0176564 -2.655745 -4.3630724 -1.0387241 -2.6062591 -4.3415375 -1.0294296 -2.5975168 -4.3877568 -1.0368651 -2.5601854 -4.3858681 -1.0325277 -2.5185821 -4.3760548 -1.0263313 -2.4738157 -4.359941 -1.0186892 -2.4494054 -4.3793073 -1.0197219 -2.4442205 -4.4336677 -1.029223 -2.4188387 -4.4520206 -1.0300492 -2.3780813 -4.4417644 -1.0240593 -2.3407376 -4.4372344 -1.0195153 -2.3261027 -4.475822 -1.0252986 -2.3191087 -4.5300717 -1.0347997 -2.300962 -4.5634365 -1.0393437 -2.2576854 -4.5467978 -1.0321146 -2.2314637 -4.5640812 -1.0329407 -2.2360978 -4.6455693 -1.0488448 -2.1354811 -4.5071239 -1.013319 -2.1019957 -4.5077281 -1.0104274 -2.067359 -4.5054235 -1.006916 -2.0316222 -4.5001888 -1.0027851 -2.0039713 -4.5125699 -1.0027851 -1.9797701 -4.5328507 -1.004644 -1.9658223 -4.5772772 -1.0120797 -1.9335124 -4.5793381 -1.0098077 -1.9027519 -4.5847898 -1.0083618 -1.8841932 -4.6199336 -1.0137321 -1.8274181 -4.5605679 -0.99762148 -2.8793337 -7.3148003 -1.6199437 -1.792838 -4.6383185 -1.0102208 -1.750455 -4.6126418 -1.001959 -2.7442043 -7.36656 -1.6199437 -1.14373 -3.1294615 -0.66384357 -1.1225245 -3.1308944 -0.66260427 -1.1403052 -3.2429452 -0.68615049 -1.1749347 -3.4080515 -0.72146982 -1.5763571 -4.6646762 -0.99989349 -1.0708835 -3.2345917 -0.67974758 -1.0676221 -3.2922895 -0.69110763 -1.066358 -3.3584597 -0.70432651 -1.0492165 -3.3761516 -0.70680511 -1.0199389 -3.3544431 -0.70060873 -0.98678261 -3.3184364 -0.69131416 -0.96530956 -3.3206706 -0.69048798 -0.90452945 -3.1844144 -0.65929955 -0.88785172 -3.2002752 -0.66157156 -0.87178099 -3.2188842 -0.66446322 -0.85501498 -3.2355239 -0.66694176 -1.944926 -7.5449815 -1.6052791 -1.8962096 -7.5472841 -1.6032135 -1.8533542 -7.5730329 -1.6063118 -1.8068521 -7.5842619 -1.6063118 -0.83137321 -3.5881162 -0.73799348 -0.8102017 -3.5969679 -0.73881966 -1.677616 -7.6649814 -1.6168456 -1.6216044 -7.6330194 -1.6077576 -1.5751336 -7.6447425 -1.6081706 -1.5274302 -7.6504254 -1.6073445 -1.4832451 -7.6740632 -1.6104426 -1.4357704 -7.6810966 -1.6100296 -1.386526 -7.6782074 -1.6075511 -1.3365312 -7.6701837 -1.6040398 -1.2917119 -7.6917491 -1.6069314 -1.2413685 -7.6802125 -1.6028005 -1.195272 -7.6944523 -1.6042463 -1.1494802 -7.711319 -1.6063118 -1.0970232 -7.6823888 -1.5986695 -1.0464215 -7.6637697 -1.5932994 -1.0000101 -7.6748977 -1.5943321 -0.95229644 -7.676034 -1.5932994 -0.90357554 -7.668129 -1.5904077 -0.86215436 -7.724093 -1.6011481 -0.81351256 -7.7175612 -1.5986695 -0.76353371 -7.6961188 -1.5930928 -0.71638751 -7.7016335 -1.5932994 -0.67013395 -7.7175813 -1.595778 -0.62253106 -7.7186217 -1.5951583 -0.57414061 -7.7086363 -1.5922667 -0.52716422 -7.7168946 -1.5932994 -0.47889313 -7.7053356 -1.5902013 -0.43176931 -7.71106 -1.5908208 -0.38415447 -7.7077007 -1.5895816 -0.3380937 -7.7382603 -1.5955714 -0.29034892 -7.733345 -1.5941256 -0.24313864 -7.7428045 -1.595778 -0.19555083 -7.7412162 -1.5951583 -0.14765404 -7.7217269 -1.5908208 -0.10042468 -7.7342277 -1.5932994 -0.053128477 -7.7581806 -1.5982565 -0.0054950402 -7.7202015 -1.5902013 --0.042127639 -7.7670541 -1.6001154 --0.089604437 -7.7509952 -1.5968107 --0.13752449 -7.7708435 -1.6011481 --0.18457474 -7.743443 -1.5955714 --0.232289 -7.749011 -1.5970172 --0.28004327 -7.7533064 -1.5982565 --0.32761139 -7.7514424 -1.5982565 --0.37474179 -7.7404904 -1.5963975 --0.42159039 -7.7263217 -1.593919 --0.47112337 -7.7587485 -1.6013547 --0.52067864 -7.7849994 -1.6075511 --0.56793803 -7.774827 -1.6061052 --0.61679107 -7.7858267 -1.6092035 --0.66139072 -7.7448497 -1.6013547 --0.70889974 -7.7406454 -1.6013547 --0.7573337 -7.7458882 -1.6034201 --0.80838698 -7.7751575 -1.6106492 --0.85640055 -7.7729683 -1.6112689 --0.89966881 -7.7296638 -1.6032135 --0.9455328 -7.7113729 -1.6005285 --0.9910813 -7.6918402 -1.5976368 --1.0364257 -7.6720395 -1.5947452 --1.0827966 -7.6606913 -1.5937124 --1.1312096 -7.6635828 -1.595778 --1.1783599 -7.6574645 -1.5959845 --1.228881 -7.6723113 -1.6007351 --1.2759343 -7.6646266 -1.6007351 --1.3284353 -7.6884708 -1.6075511 --1.3716195 -7.6580229 -1.6028005 --1.4264302 -7.6917925 -1.6118885 --1.4794955 -7.713645 -1.618498 --1.5252765 -7.696744 -1.6168456 --1.5685534 -7.6680679 -1.6127146 --1.6159781 -7.6602139 -1.6131278 --1.6712613 -7.6883988 -1.6213896 --1.7239598 -7.7028251 -1.6267598 --1.773386 -7.7016373 -1.6288253 --1.8181301 -7.6801372 -1.6265533 --1.8642956 -7.6650338 -1.6257271 --1.9112923 -7.6534505 -1.6257271 --1.9587027 -7.6434746 -1.6261401 --2.0063112 -7.6341515 -1.6267598 --2.0571868 -7.6368136 -1.6300645 --2.0948985 -7.5910354 -1.6228354 --2.1345201 -7.5535574 -1.6174653 --2.1868072 -7.5609965 -1.6220093 --2.2303839 -7.5380535 -1.6199437 --2.2825439 -7.5438933 -1.6242813 --2.314626 -7.4839425 -1.6141605 --2.3631558 -7.4779959 -1.6160194 --2.4065917 -7.4559059 -1.614367 --2.4575005 -7.4567971 -1.6178783 --2.5053916 -7.4480696 -1.6193242 --2.553268 -7.4390345 -1.62077 --2.5982184 -7.421381 -1.6203569 --2.6450219 -7.4089851 -1.621183 --2.6971242 -7.411005 -1.625314 --1.3936325 -3.7568762 -0.80636013 --2.7615826 -7.3077879 -1.6096165 --2.8288624 -7.3491464 -1.6228354 --2.8749738 -7.3343835 -1.623455 --2.9199226 -7.3166051 -1.623455 --2.9761753 -7.326653 -1.629858 --3.0173373 -7.299211 -1.6277925 --3.0563784 -7.2670307 -1.6246943 --3.1066825 -7.2616343 -1.6277925 --3.1527419 -7.2460241 -1.6286187 --3.2034764 -7.2408595 -1.6319234 --1.4179043 -3.1519349 -0.69007486 --1.4359971 -3.1405058 -0.68945527 --1.4733777 -3.1706796 -0.69854325 --1.615597 -3.4217153 -0.75926769 --1.6302156 -3.3985043 -0.7561695 --1.6488953 -3.3840392 -0.75513679 --1.6678928 -3.3703501 -0.75431061 --1.6885415 -3.3600528 -0.75431061 --1.7104604 -3.3522437 -0.75493026 --1.732347 -3.3442917 -0.75554991 --1.7582978 -3.3439922 -0.75802845 --3.7670765 -7.0598178 -1.6496863 --3.786099 -6.9918289 -1.6389459 --3.8223331 -6.956461 -1.6360544 --3.8744729 -6.9499693 -1.6401852 --3.9151175 -6.9226584 -1.6393591 --3.9643362 -6.9103875 -1.6422508 --3.9973142 -6.869864 -1.6383264 --4.0379 -6.8426795 -1.6377068 --4.0813169 -6.8202934 -1.6383264 --4.1378069 -6.8193817 -1.6443162 --4.1693192 -6.7771964 -1.6401852 --4.2320523 -6.7855258 -1.6486536 --4.2558317 -6.7313113 -1.6416311 --4.2859683 -6.6877713 -1.6372936 --2.0342162 -3.13131 -0.74873388 --2.0496256 -3.1130486 -0.74728805 --2.074661 -3.1093671 -0.74956006 --4.4625025 -6.6008391 -1.6424572 --4.5200605 -6.5983577 -1.6488602 --4.5504208 -6.5560303 -1.6451423 --4.6040692 -6.547195 -1.6500995 --4.6549411 -6.5339632 -1.6540239 --4.6760507 -6.4790955 -1.6472079 --4.7214918 -6.4581804 -1.6492733 --4.7808261 -6.4558239 -1.6562959 --4.7968655 -6.3950577 -1.648034 --4.8496275 -6.3834243 -1.6527846 --4.9071994 -6.3775873 -1.6591874 --4.9528546 -6.3558474 -1.6614594 --4.9875174 -6.3199606 -1.6600137 --5.0365858 -6.3022332 -1.663525 --5.0640821 -6.2575197 -1.6598071 --5.0955606 -6.2180042 -1.6575351 --5.1461129 -6.2016816 -1.661666 --5.1891041 -6.175982 -1.6633184 --5.2218294 -6.1380639 -1.661666 --5.2581167 -6.104425 -1.661253 --5.2903295 -6.0661473 -1.6596006 --5.3365169 -6.0438409 -1.6624922 --5.3839335 -6.0226545 -1.665797 --5.4332604 -6.0032902 -1.6697214 --5.4719768 -5.9720035 -1.6703409 --5.5178328 -5.948359 -1.6732326 --5.5662827 -5.9272289 -1.6769505 --5.566144 -5.8546696 -1.665797 --5.616889 -5.835916 -1.6703409 --5.6539574 -5.802743 -1.6707541 --5.6942654 -5.7728181 -1.6721998 --5.7427149 -5.7509255 -1.6761242 --5.7771983 -5.7148924 -1.6759176 --5.8408461 -5.7073746 -1.684386 --5.8419662 -5.6388102 -1.6744719 --5.8743305 -5.6008329 -1.6738522 --5.9320903 -5.5868216 -1.6806682 --5.9676914 -5.5516505 -1.6810813 --6.0189333 -5.5308185 -1.6860384 --6.0505834 -5.4918098 -1.6854188 --6.0593977 -5.432373 -1.6783962 --6.1116605 -5.4119568 -1.6837664 --6.1337061 -5.3646917 -1.6806682 --6.1687288 -5.3288741 -1.6812879 --6.2422466 -5.3258538 -1.6926479 --6.2673264 -5.2811465 -1.6905824 --6.288332 -5.2332029 -1.6874843 --6.3354416 -5.2069454 -1.6916151 --6.3194122 -5.1291256 -1.6786028 --6.334733 -5.0774026 -1.6742653 --6.364234 -5.0372233 -1.6738522 --6.4435878 -5.0360389 -1.6868646 --6.4914074 -5.0095592 -1.6914086 --6.5220232 -4.9696341 -1.6914086 --6.5023556 -4.8918734 -1.6781896 --6.5063295 -4.8326297 -1.6713737 --6.5169234 -4.7787294 -1.6664165 --6.5746536 -4.7593083 -1.6738522 --6.5973644 -4.7143264 -1.6721998 --6.6829329 -4.7138009 -1.6868646 --6.7591057 -4.7056928 -1.6990508 --6.7862391 -4.6630225 -1.6986377 --6.8260598 -4.628984 -1.7015294 --6.8600264 -4.5908227 -1.7029752 --6.4700441 -4.2725673 -1.5972238 --6.5158119 -4.2456079 -1.6021808 --6.903039 -4.4378457 -1.6928544 --6.9350963 -4.3985505 -1.6940937 --6.9602962 -4.3548765 -1.6936806 --6.9852209 -4.311059 -1.6932676 --7.0015125 -4.262012 -1.690789 --6.999011 -4.2018471 -1.6837664 --6.999404 -4.1438675 -1.6775701 --7.0238533 -4.1003489 -1.6773635 --6.9589949 -4.0054321 -1.6554697 --6.9477005 -3.9423745 -1.6467947 --6.9469962 -3.8858171 -1.6408049 --6.9707084 -3.843118 -1.6408049 --7.0285463 -3.8189609 -1.6490667 --7.0846238 -3.7933147 -1.6569154 --7.0073829 -3.6968083 -1.6329561 --6.8762708 -3.5738673 -1.5963975 --6.8797808 -3.5222435 -1.5920601 --6.8951483 -3.4768794 -1.5906143 --6.8856812 -3.4192736 -1.5833852 --6.8915892 -3.3696525 -1.5798739 --6.9033194 -3.3230588 -1.5778085 --6.9421468 -3.2894375 -1.5821459 --6.9737272 -3.2521558 -1.584831 --7.0735836 -3.2460363 -1.6034201 --7.3011432 -3.2963934 -1.6515453 --7.3060308 -3.2447803 -1.648034 --6.4516044 -2.8179905 -1.4466519 --7.325521 -3.1463835 -1.64349 --7.3582091 -3.1070857 -1.6465882 --7.3798466 -3.0630035 -1.6472079 --7.437458 -3.0335555 -1.6560893 --7.5276799 -3.0166192 -1.6724064 --7.5688086 -2.9793341 -1.6775701 --7.5896845 -2.9338951 -1.6781896 --7.6084585 -2.8876178 -1.6783962 --7.6773777 -2.8600087 -1.6899627 --7.7048903 -2.8165431 -1.6922348 --7.734921 -2.7738383 -1.6951264 --7.7564106 -2.7279489 -1.6961591 --7.7591281 -2.6755202 -1.693061 --7.8319407 -2.6469731 -1.7056602 --7.866611 -2.60502 -1.7097912 --7.8991995 -2.5621369 -1.713509 --7.9380851 -2.5210252 -1.7186726 --7.9720907 -2.4780803 -1.7228036 --8.0358229 -2.4439242 -1.733544 --8.0759878 -2.4021041 -1.7391207 --8.1337929 -2.3650742 -1.7486218 --8.1406221 -2.3129818 -1.7469695 --8.1999149 -2.2755492 -1.7568836 --8.2420549 -2.2328694 -1.76308 --8.2697887 -2.1860065 -1.7661781 --8.2839937 -2.1354671 -1.7663847 --8.1536522 -2.048589 -1.7351964 --8.2649078 -2.0227149 -1.756677 --8.3894739 -1.9987271 -1.7810495 --8.4816456 -1.9657731 -1.7983993 --8.5966339 -1.9369251 -1.8207062 --8.9103899 -1.9502621 -1.8859746 --9.1107311 -1.9356173 -1.9266642 --9.189517 -1.8935035 -1.9411224 --9.2681265 -1.8504952 -1.9555806 --9.2629757 -1.790435 -1.9520693 --9.2785959 -1.7344638 -1.9531021 --9.3728323 -1.6926301 -1.9710715 --9.3232794 -1.6246709 -1.9582657 --9.3263178 -1.566299 -1.9568199 --9.3193331 -1.5063894 -1.9533086 --9.3458033 -1.4518831 -1.9570265 --9.356472 -1.3947996 -1.9574395 --9.2951145 -1.3274008 -1.9425682 --9.338953 -1.2752416 -1.9502105 --9.3815308 -1.2224677 -1.957646 --9.400507 -1.1663269 -1.9601246 --9.3899956 -1.1065625 -1.9564068 --9.3868847 -1.0478399 -1.9543413 --9.403841 -0.99135208 -1.9566133 --9.3961153 -0.93227953 -1.9537216 --9.3997107 -0.87442714 -1.9533086 --9.3961258 -0.81597292 -1.9514498 --9.4263124 -0.76035041 -1.9568199 --9.3937225 -0.69973385 -1.9489712 --9.3890543 -0.64148128 -1.9471122 --9.3918371 -0.58379829 -1.9469057 --9.4216185 -0.52763838 -1.9524825 --9.4002485 -0.46859956 -1.9473188 --9.4332495 -0.41223744 -1.9537216 --9.4228907 -0.35387045 -1.9510366 --9.4180384 -0.29583073 -1.9495908 --8.8513432 0.64729095 -1.9457129 --8.8656883 0.70305771 -1.9498609 --8.8563461 0.75702715 -1.9487693 --8.8748579 0.81349534 -1.9540088 --8.8813534 0.86907709 -1.9566286 --8.8525591 0.92112875 -1.9513891 --8.8428602 0.97500134 -1.9505159 --8.8367109 1.0292418 -1.9505159 --8.8118267 1.081183 -1.9463679 --8.8166409 1.13673 -1.9489876 --8.8027306 1.1898905 -1.9474595 --8.7865677 1.2426496 -1.9454947 --8.7932577 1.2986802 -1.9487693 --8.7851238 1.3526101 -1.9487693 --8.7458248 1.4015439 -1.9417833 --8.7351351 1.4548599 -1.9413466 --8.7500839 1.5125892 -1.9468045 --8.7175846 1.5621161 -1.9415649 --8.7279854 1.6193179 -1.9461496 --8.7140512 1.6721052 -1.9452763 --8.6557665 1.7160469 -1.9343606 --8.6450739 1.7691253 -1.9343606 --8.6245079 1.8201209 -1.9321774 --8.6579952 1.8827577 -1.9424382 --8.6319952 1.9326466 -1.9391636 --8.6237783 1.9864519 -1.9400368 --8.6370659 2.0454042 -1.9459312 --8.6736584 2.1103649 -1.9572835 --8.6037416 2.1493471 -1.9441848 --8.6102419 2.2071896 -1.9487693 --8.5757742 2.2545183 -1.9439664 --8.5570679 2.3058255 -1.9428748 --8.5418177 2.3580275 -1.9426565 --8.5140419 2.4066768 -1.9396001 --8.4850531 2.4548025 -1.9363254 --8.4838667 2.5109758 -1.9396001 --8.4626961 2.5612879 -1.9382902 --8.4412279 2.6114345 -1.9369804 --8.4017839 2.6558232 -1.9315225 --8.4252615 2.7202239 -1.94091 --8.3982172 2.768507 -1.9385086 --8.3634987 2.81407 -1.9343606 --8.3516121 2.8672366 -1.9356705 --8.3182058 2.9129419 -1.9319592 --8.3194742 2.9708209 -1.9365437 --8.3295155 3.0321643 -1.9433115 --8.273242 3.0692945 -1.9343606 --8.2652073 3.1241424 -1.9369804 --8.2513466 3.1769025 -1.9382902 --8.1999006 3.2150002 -1.9306493 --8.2126455 3.2782819 -1.9385086 --8.1779108 3.3227327 -1.9350156 --8.1483517 3.3691187 -1.9328324 --8.1419172 3.4251091 -1.9363254 --8.1010113 3.4665537 -1.9315225 --8.0751143 3.5142477 -1.930431 --8.0480452 3.5613594 -1.9291211 --7.9993439 3.5986595 -1.9225717 --7.9513764 3.6359026 -1.9162406 --7.9112186 3.6763954 -1.9118743 --7.8796878 3.7207005 -1.9096912 --8.0168371 3.8458207 -1.9494243 --7.9825621 3.8898075 -1.9468045 --7.8824568 3.901046 -1.9278113 --7.8845286 3.9624882 -1.9343606 --7.8235607 3.9921579 -1.9251914 --7.7902536 4.0355973 -1.9230083 --7.7558446 4.0783243 -1.9206069 --7.7401443 4.1308918 -1.9230083 --7.6897683 4.1648254 -1.9166772 --7.6435447 4.2006478 -1.9114376 --7.6696148 4.2764659 -1.9247549 --7.6423812 4.3229647 -1.9245365 --7.60217 4.3620033 -1.9210435 --7.5533342 4.395802 -1.9153674 --7.5094128 4.4321432 -1.9110011 --7.5155683 4.4981875 -1.9197336 --7.4586291 4.5264935 -1.9120927 --7.4465051 4.5818925 -1.9162406 --7.4314981 4.6357627 -1.9197336 --7.3592024 4.653625 -1.908163 --7.3329744 4.700273 -1.9088179 --7.2917218 4.7372026 -1.9055432 --7.2739277 4.7893691 -1.9085996 --7.2541437 4.8404121 -1.9112194 --7.2129903 4.8771772 -1.908163 --7.14429 4.8948631 -1.897684 --7.1253433 4.9463997 -1.9007403 --7.1004453 4.9939575 -1.9022685 --7.0895367 5.0515914 -1.9077264 --7.0433745 5.0841427 -1.9035784 --7.0057449 5.1226554 -1.9018319 --6.9781013 5.1684499 -1.9029235 --6.9376712 5.2047267 -1.900522 --6.9320207 5.2672749 -1.9079447 --6.8841047 5.2978044 -1.9035784 --6.8422332 5.3327446 -1.9009587 --6.8262339 5.3879309 -1.9057615 --6.7922831 5.4291053 -1.9055432 --6.7474661 5.4614687 -1.9022685 --6.7228842 5.5101919 -1.9048883 --6.7047162 5.5644293 -1.9094728 --6.6906166 5.6224179 -1.9153674 --6.6500468 5.6583047 -1.9136208 --6.6078105 5.6926317 -1.9114376 --6.5529027 5.7157469 -1.9055432 --6.5155139 5.7539091 -1.9048883 --6.5200934 5.8295593 -1.9168955 --6.5399036 5.9198909 -1.9337057 --6.4667687 5.9262767 -1.9225717 --6.4717722 6.0043464 -1.9352338 --6.3999581 6.0112014 -1.9245365 --6.3502259 6.0382519 -1.9206069 --6.2968879 6.0615344 -1.9155856 --6.2449012 6.0857525 -1.9110011 --6.2421732 6.1582284 -1.9219167 --6.2180772 6.2102079 -1.926283 --6.2045565 6.2732258 -1.9341424 --6.1707211 6.3160648 -1.9356705 --6.1054249 6.3264194 -1.9271562 --6.0759172 6.3736525 -1.9302126 --6.0373635 6.4115243 -1.930431 --6.0012326 6.4520216 -1.9315225 --5.9714327 6.4995036 -1.9347973 --5.9288173 6.5331302 -1.933924 --5.8951321 6.5766535 -1.9361072 --5.8313823 6.5863948 -1.9282478 --5.794713 6.6264596 -1.9295577 --5.7718029 6.6825719 -1.9356705 --5.7382898 6.7267718 -1.9382902 --5.7157674 6.7842464 -1.9448397 --5.6796489 6.825942 -1.9468045 --5.6128802 6.8305011 -1.938072 --5.5880785 6.8860321 -1.9441848 --5.5383997 6.9110508 -1.9415649 --5.5176873 6.9724555 -1.9494243 --5.469995 7.0000281 -1.9476777 --5.4388614 7.0489135 -1.952044 --5.3990555 7.0868111 -1.9533539 --5.346086 7.1073265 -1.9498609 --5.3064475 7.1454806 -1.9513891 --5.2700038 7.188138 -1.9542271 --5.2338076 7.2314076 -1.9572835 --5.1853676 7.2578263 -1.9557554 --5.1334267 7.2791381 -1.9529172 --5.0970273 7.3225145 -1.956192 --5.0531063 7.3552604 -1.9566286 --5.0106177 7.3901663 -1.9577202 --4.9722319 7.4313164 -1.9605583 --4.9217024 7.4543552 -1.9585934 --4.879066 7.4893208 -1.9599034 --4.8346033 7.5215797 -1.9605583 --4.8087382 7.5832472 -1.9690725 --4.7512517 7.5952349 -1.9644879 --4.70046 7.6176004 -1.9627414 --4.656167 7.6504669 -1.963833 --4.6000986 7.6638308 -1.9599034 --4.5455332 7.6793141 -1.9566286 --4.5229187 7.7492046 -1.9675443 --4.4791784 7.7835779 -1.9692907 --4.431335 7.8109155 -1.9692907 --4.3914204 7.8524389 -1.9730021 --4.3304396 7.8561592 -1.9671077 --4.3017144 7.9186006 -1.9762769 --4.2571898 7.9525905 -1.9782417 --4.2201481 8.0010061 -1.9839178 --4.1655769 8.0163574 -1.9812981 --4.1296473 8.0678291 -1.9878474 --4.0660119 8.0651293 -1.9808614 --4.0194855 8.0960445 -1.9823896 --3.957736 8.0960054 -1.9762769 --3.9287167 8.163228 -1.9869742 --3.8844018 8.1995277 -1.9900305 --3.8241229 8.2019796 -1.984791 --3.7826748 8.2448044 -1.989594 --3.7416475 8.2892075 -1.9948335 --3.6903195 8.3111181 -1.9946152 --3.6556523 8.3711681 -2.0037844 --3.5988297 8.380887 -2.0007279 --3.5609972 8.4351788 -2.0085871 --3.5043123 8.4451513 -2.0057492 --3.4439552 8.4457092 -2.0007279 --3.4018645 8.4911423 -2.0066223 --3.3471992 8.5054989 -2.0050943 --3.2896724 8.5122223 -2.0018196 --3.2456863 8.5541458 -2.0070591 --3.1781571 8.533659 -1.9974532 --3.1294191 8.5630827 -1.9998547 --3.0827441 8.5986595 -2.0037844 --3.0328379 8.625699 -2.0057492 --2.9817622 8.6496811 -2.0070591 --2.9264467 8.6613426 -2.0055308 --2.8772321 8.6911793 -2.008369 --2.8175313 8.6891756 -2.0037844 --2.7703614 8.7258329 -2.008369 --2.7185054 8.7482595 -2.0096788 --2.6613708 8.7535706 -2.0070591 --2.6073318 8.7687998 -2.0068407 --2.5529339 8.7827587 -2.0064042 --2.4981964 8.7954416 -2.0057492 --2.4460068 8.8171873 -2.0072773 --2.3918593 8.8320303 -2.0072773 --2.3498325 8.8927727 -2.0179746 --2.2991176 8.9221449 -2.0214677 --2.2393396 8.9162064 -2.0168831 --2.1753173 8.891861 -2.0081506 --2.1209428 8.9059906 -2.008369 --2.0669172 8.921689 -2.0090239 --2.0078499 8.9151621 -2.0046575 --1.9524844 8.9244547 -2.0040026 --1.8999168 8.9467669 -2.0064042 --1.8489194 8.9773731 -2.0107703 --1.7876928 8.9579239 -2.0037844 --1.7360241 8.9859715 -2.007714 --1.6803172 8.993577 -2.0070591 --1.6266609 9.0123615 -2.0090239 --1.5718335 9.0250568 -2.0096788 --1.5154587 9.0287571 -2.008369 --1.463141 9.0571537 -2.0127351 --1.4114293 9.0910339 -2.0184114 --1.3528913 9.0811834 -2.0142634 --1.3025169 9.1269922 -2.0227776 --1.2488631 9.1522169 -2.0267072 --1.1914238 9.1500301 -2.0245242 --1.1299802 9.1145554 -2.0149183 --1.0738051 9.119379 -2.0144818 --1.0154524 9.1044588 -2.0096788 --0.96314275 9.1444864 -2.0173197 --0.9068228 9.1482821 -2.0168831 --0.85103363 9.1575603 -2.0177565 --0.79819649 9.201499 -2.026489 --0.73968768 9.180933 -2.0208127 --0.68312377 9.1823788 -2.0201578 --0.62656999 9.1834764 -2.0195029 --0.56984746 9.181304 -2.018193 --0.51219684 9.1612434 -2.0129535 --0.45491067 9.1427708 -2.0081506 --0.39846396 9.1375904 -2.0064042 --0.34337232 9.166194 -2.0122986 --0.28648424 9.147644 -2.007714 --0.23091204 9.1716681 -2.0127351 --0.17487128 9.1855965 -2.0155733 --0.11854362 9.1894236 -2.0162282 --0.061968293 9.1616783 -2.009897 --0.0057579996 9.1735964 -2.012517 -0.050453264 9.1597977 -2.0094604 -0.10650646 9.1466303 -2.0066223 -0.16295911 9.1643429 -2.0107703 -0.21921085 9.1641464 -2.0109887 -0.27511296 9.1518984 -2.0085871 -0.33172336 9.1627169 -2.0114253 -0.38764861 9.1536837 -2.009897 -0.44418642 9.1589308 -2.0116436 -0.50149709 9.1764956 -2.0162282 -0.55684388 9.1576605 -2.0127351 -0.61295843 9.1530972 -2.012517 -0.66839623 9.139431 -2.0103338 -0.72631669 9.1585054 -2.0155733 -0.77925217 9.1159563 -2.0070591 -0.83668846 9.1275234 -2.0107703 -0.89210713 9.1163902 -2.0094604 -0.9459039 9.0903616 -2.0048759 -1.0059465 9.1231861 -2.0136085 -1.0587417 9.0897017 -2.0074956 -1.114971 9.0869083 -2.008369 -1.1704564 9.07796 -2.0079322 -1.2249581 9.061904 -2.0059674 -1.2795804 9.0474539 -2.0044394 -1.3349277 9.0384665 -2.004221 -1.3905102 9.0310698 -2.0044394 -1.4460522 9.0233316 -2.0046575 -1.5034769 9.026803 -2.0074956 -1.5580043 9.0125999 -2.0064042 -1.6244717 9.0653067 -2.0205944 -1.6706231 9.0043154 -2.0090239 -1.7258412 8.9938955 -2.0090239 -1.7741575 8.9486761 -2.0011647 -1.8341223 8.9624786 -2.0068407 -1.8880724 8.9462824 -2.0057492 -1.9485325 8.9602747 -2.0116436 -1.9855546 8.8681593 -1.9933053 -2.0504518 8.9014549 -2.0037844 -2.0915308 8.8317308 -1.9906855 -2.1629944 8.8898449 -2.0070591 -2.2075615 8.8366423 -1.9978899 -2.2704687 8.8569613 -2.0057492 -2.3183169 8.8183241 -2.000073 -2.3695872 8.7935686 -1.9976716 -2.4198618 8.7656946 -1.9946152 -2.4738669 8.7516212 -1.9948335 -2.5315893 8.7503376 -1.9981081 -2.5821848 8.7243462 -1.9957067 -2.6421726 8.7298203 -2.0007279 -2.6769331 8.6528482 -1.9865376 -2.7396858 8.6669645 -1.9937419 -2.7958133 8.6592779 -1.9959251 -2.8504212 8.646594 -1.9970165 -2.8968842 8.6095181 -1.992432 -2.9521925 8.5989647 -1.9941785 -2.9887664 8.5346394 -1.9832629 -3.0798175 8.6245813 -2.0090239 -3.1093035 8.5413342 -1.9937419 -3.1487505 8.4873285 -1.985446 -3.2090523 8.4897556 -1.9906855 -3.2354789 8.4034271 -1.9747486 -3.3097861 8.4415598 -1.9887207 -3.3437867 8.3766842 -1.9780233 -3.3899777 8.3433533 -1.9749669 -3.4601307 8.3683863 -1.9861009 -3.5015714 8.3236113 -1.9804248 -3.5452814 8.2849236 -1.9762769 -3.5968292 8.2648039 -1.9767134 -3.6439183 8.2345476 -1.9747486 -3.7003832 8.2253828 -1.9780233 -3.7467241 8.1936483 -1.9758402 -3.7808852 8.1359921 -1.9673259 -3.8465738 8.1461706 -1.9756218 -3.899863 8.1294537 -1.9773684 -3.9424019 8.0904589 -1.973657 -4.0084229 8.09935 -1.981953 -4.0519071 8.062396 -1.9788966 -4.090209 8.0156527 -1.9734387 -4.1280904 7.9687433 -1.9679809 -4.1814508 7.9519005 -1.9701641 -4.2025886 7.8744411 -1.9570652 -4.261518 7.8682413 -1.9620864 -4.3031349 7.8299727 -1.95903 -4.3615556 7.8221717 -1.963833 -4.4056249 7.7884679 -1.9620864 -4.4470158 7.7502856 -1.9592483 -4.4827037 7.7026124 -1.9540088 -4.5278969 7.6716008 -1.9531356 -4.5829043 7.6570702 -1.9566286 -4.623724 7.6187954 -1.9540088 -4.6765232 7.6002545 -1.9566286 -4.7225528 7.5705886 -1.9564103 -4.7631779 7.5323973 -1.9540088 -4.7971911 7.4841342 -1.9489876 -4.8446178 7.4570131 -1.9496425 -4.8833041 7.4165516 -1.9468045 -4.918426 7.3710265 -1.9426565 -4.9652014 7.3431339 -1.9433115 -5.0178881 7.3237996 -1.9463679 -5.0638447 7.2944756 -1.9468045 -5.1202993 7.2800283 -1.9513891 -5.1444817 7.2198648 -1.9435297 -5.1915417 7.1921191 -1.9446213 -5.2517052 7.1821837 -1.9507341 -5.2765045 7.1239486 -1.9435297 -5.3072305 7.0742664 -1.9387269 -5.3422704 7.0306916 -1.9356705 -5.3817377 6.9931402 -1.9343606 -5.4275455 6.9638348 -1.9354522 -5.4592876 6.9166141 -1.9315225 -5.5004058 6.8814621 -1.9310859 -5.5609479 6.8703361 -1.9376353 -5.5794878 6.8074079 -1.9293394 -5.6230221 6.7752972 -1.9299943 -5.6205339 6.6883755 -1.9147124 -5.6760149 6.6708555 -1.9197336 -5.7002764 6.6166816 -1.9140575 -5.7465425 6.5881991 -1.9160223 -5.8043027 6.5725622 -1.9219167 -5.8464732 6.5390062 -1.9225717 -5.884521 6.5008397 -1.9219167 -5.9368277 6.4782786 -1.9260647 -5.9558873 6.4195542 -1.919297 -5.9831371 6.3700867 -1.9153674 -6.0120225 6.322648 -1.9120927 -6.0486736 6.2835312 -1.9114376 -6.0768971 6.235817 -1.908163 -6.1088758 6.1921606 -1.9061981 -6.1495137 6.1573224 -1.9070715 -6.1920362 6.1242771 -1.9085996 -6.2155352 6.0725303 -1.9042333 -6.2695336 6.0505404 -1.9094728 -6.2938251 5.9998384 -1.9055432 -6.3362055 5.9664588 -1.9072897 -6.3712664 5.9261389 -1.9068531 -6.4125395 5.8915553 -1.9083813 -6.4557962 5.858655 -1.9105644 -6.4821749 5.8104658 -1.9077264 -6.4767833 5.7343616 -1.8955008 -6.5111122 5.6938705 -1.8952825 -6.5459266 5.6538119 -1.8952825 -6.5782671 5.6116409 -1.8946276 -6.615561 5.5736866 -1.8955008 -6.6631403 5.5442228 -1.8994304 -6.6955256 5.5019951 -1.8989938 -6.7041502 5.4405193 -1.8917894 -6.7351217 5.3974504 -1.8911345 -6.7642865 5.3529954 -1.8900429 -6.7885451 5.3047814 -1.8876415 -6.815558 5.2588553 -1.8861133 -6.8562369 5.2234411 -1.8885148 -6.9123373 5.1994557 -1.8952825 -6.9386253 5.1528726 -1.8937542 -6.9669638 5.1078935 -1.892881 -6.9831524 5.0541797 -1.888733 -7.0370622 5.0276852 -1.8950641 -7.0821357 4.994534 -1.8989938 -7.0950255 4.9387217 -1.8941909 -7.0841699 4.8669171 -1.8830569 -7.1607518 4.8551154 -1.8957192 -7.1928411 4.8127146 -1.8963741 -7.2222357 4.7684894 -1.8963741 -7.2309151 4.7107701 -1.8909162 -7.2654309 4.6700063 -1.8924444 -7.3013663 4.6300411 -1.8944092 -7.3428769 4.5934329 -1.8979023 -7.3700929 4.5477786 -1.897684 -7.3878546 4.4963841 -1.8950641 -7.4211621 4.4544835 -1.8965924 -7.4651518 4.4188037 -1.9009587 -7.5157251 4.3866858 -1.9070715 -7.5399623 4.3390279 -1.9064165 -7.5503159 4.2835345 -1.9022685 -7.5662355 4.2314115 -1.8996488 -7.558723 4.1665382 -1.8911345 -7.6561828 4.1592011 -1.9094728 -7.6290736 4.0840578 -1.8961557 -7.6462202 4.0330729 -1.8941909 -7.6864109 3.9941785 -1.8981205 -7.7498674 3.9669447 -1.9079447 -7.6790733 3.8714447 -1.8841485 -7.7035575 3.8246877 -1.8843668 -7.7435393 3.7854886 -1.8885148 -7.7771735 3.742981 -1.8911345 -7.8238068 3.7064681 -1.897029 -7.8959355 3.6814792 -1.9092546 -7.9361167 3.641098 -1.9136208 -7.9387393 3.583504 -1.9088179 -7.9338188 3.5228479 -1.9022685 -7.9678063 3.4795666 -1.9053249 -7.9916968 3.4317665 -1.9059799 -7.9919243 3.3739388 -1.9009587 -7.9908423 3.3158641 -1.8957192 -8.0444736 3.2804003 -1.9037967 -8.0590153 3.2288017 -1.9024868 -8.105011 3.189652 -1.9088179 -8.1408148 3.1461906 -1.9127476 -8.1490173 3.0920274 -1.9101278 -8.159605 3.0389035 -1.908163 -8.1808481 2.9897845 -1.9088179 -8.1595364 2.9253747 -1.8994304 -8.1865387 2.8784895 -1.9016136 -8.2049694 2.8285215 -1.9018319 -8.2582283 2.7903018 -1.9103462 -8.2538853 2.7325263 -1.9053249 -8.2909203 2.6884496 -1.9101278 -8.3156309 2.6401834 -1.9120927 -8.3288784 2.5882416 -1.9114376 -8.3474045 2.5379391 -1.9120927 -8.3590775 2.4855607 -1.9112194 -8.3779202 2.4353125 -1.9120927 -8.3823786 2.380929 -1.9096912 -8.3742599 2.3231928 -1.9044516 -8.3930674 2.2730405 -1.9055432 -8.398365 2.2192562 -1.9035784 -8.4165487 2.1689 -1.90467 -8.4391642 2.1195922 -1.9068531 -8.4776058 2.0740285 -1.9127476 -8.4844761 2.0206161 -1.9114376 -8.5043201 1.9702793 -1.9131842 -8.5010166 1.9146321 -1.9096912 -8.5230913 1.8647277 -1.9120927 -8.5544195 1.8166504 -1.9166772 -8.5558472 1.7621599 -1.914494 -8.5330019 1.7029488 -1.9068531 -8.5749102 1.6566639 -1.9140575 -8.5647688 1.6002568 -1.9094728 -8.6205254 1.5559886 -1.9199519 -8.6164503 1.5007223 -1.9168955 -8.6341581 1.4492773 -1.9188603 -8.6014614 1.3895849 -1.9094728 -8.6580429 1.3442609 -1.9203886 -8.6757812 1.2925476 -1.9225717 -8.6661587 1.2368102 -1.918642 -8.6726179 1.1834805 -1.9184238 -8.6622972 1.1279781 -1.914494 -8.6738977 1.0754057 -1.9155856 -8.6948709 1.0238734 -1.9188603 -8.7514229 0.97612208 -1.9302126 -8.7426901 0.92087454 -1.9269379 -8.7161283 0.86404043 -1.9197336 -8.7329264 0.81162518 -1.9223534 -8.7377415 0.75802565 -1.9223534 -8.7334738 0.70369339 -1.9203886 -8.7561178 0.65146583 -1.9245365 -8.7648182 0.59805858 -1.9256281 -8.7537127 0.54336244 -1.9223534 -8.7900105 0.49148843 -1.9297761 -8.7606964 0.43594837 -1.9225717 -8.718358 0.38023552 -1.9125292 -8.753684 0.32797143 -1.9199519 -8.7691879 0.2746796 -1.9230083 -8.7804632 0.22111209 -1.9251914 -8.7582378 0.16678916 -1.9199519 -8.7522659 0.11295922 -1.9184238 -8.7635288 0.059325453 -1.9208251 -8.7812939 0.0055611487 -1.9247549 -8.7801867 -0.048314463 -1.9245365 -8.8470554 -0.10298029 -1.9396001 -8.7935686 -0.15631932 -1.9278113 -8.8343945 -0.21128146 -1.9371986 -8.8241529 -0.2652193 -1.9352338 -8.8135824 -0.31903943 -1.933269 -8.8056087 -0.37286407 -1.9319592 -8.8236246 -0.42788252 -1.9365437 -8.8130379 -0.48158821 -1.9347973 -8.8050461 -0.53535819 -1.9337057 -8.738306 -0.58512849 -1.9195153 -8.7549896 -0.64023203 -1.9240999 -8.7645159 -0.69502139 -1.9271562 -8.781477 -0.75061768 -1.9319592 -8.7980862 -0.80644816 -1.9367621 -8.8055983 -0.86165416 -1.9396001 -8.8302345 -0.91880292 -1.9463679 -8.8079405 -0.97114658 -1.9426565 -8.8066626 -1.025738 -1.9437481 -8.7914858 -1.0786846 -1.9417833 -8.7876053 -1.1329825 -1.9424382 -8.7766199 -1.1863575 -1.9415649 -8.7807703 -1.2418289 -1.9441848 -8.7449884 -1.2915448 -1.9378536 -8.7205029 -1.3426521 -1.9341424 -8.7043915 -1.3948984 -1.9323958 -8.7418737 -1.455983 -1.9428748 -8.697196 -1.5034397 -1.9347973 -8.6887684 -1.5569485 -1.9350156 -8.673295 -1.6091636 -1.9337057 -8.6622992 -1.6621677 -1.9334874 -8.6500225 -1.7149075 -1.9330508 -8.6680183 -1.773824 -1.9396001 -8.6541071 -1.8263717 -1.9389452 -8.6045952 -1.8711382 -1.9302126 -8.5520048 -1.9147263 -1.9208251 -8.4887438 -1.9553287 -1.9090363 -8.3227539 -1.9709265 -1.8736694 -8.1436224 -1.9813306 -1.8352462 -7.8823166 -1.9690243 -1.7778298 -7.8020263 -1.9998959 -1.7621112 -7.7329817 -2.032836 -1.7490124 -7.5677209 -2.0390935 -1.7136456 -7.4986272 -2.0699012 -1.7005467 -7.3702826 -2.0832074 -1.6736943 -7.3189278 -2.1172667 -1.6647433 -7.2505918 -2.1457875 -1.6518629 -6.9832411 -2.1133103 -1.5924816 -6.9589553 -2.1526566 -1.5898618 -6.6729918 -2.1090989 -1.525896 -6.2875419 -2.0297208 -1.4383522 -6.2731156 -2.0676508 -1.4379156 -6.0614605 -2.0391667 -1.3909781 -5.9897652 -2.0560329 -1.3770061 -5.8250728 -2.0395081 -1.3409843 -5.6580572 -2.020057 -1.3043077 -5.6693969 -2.0634184 -1.3099838 -5.6429057 -2.0930729 -1.3067091 -5.4044952 -2.0424025 -1.2527857 -5.366363 -2.0657043 -1.2466729 -5.3072538 -2.0804195 -1.2355388 -5.1348815 -2.0492496 -1.1971157 -5.0652556 -2.0575681 -1.1833619 -4.8893127 -2.0210962 -1.1438472 -4.7769775 -2.009042 -1.1196144 -4.693687 -2.0079761 -1.1023676 -4.5604849 -1.9841509 -1.0728953 -4.5821338 -2.027107 -1.0811912 -4.6247845 -2.0800145 -1.0947267 -4.510766 -2.0620751 -1.0698389 -4.4228091 -2.0547469 -1.0512823 -4.4224715 -2.0876813 -1.0543386 -4.3638282 -2.092823 -1.0429863 -4.3684487 -2.1281116 -1.0473526 -4.277472 -2.1163414 -1.0279226 -4.3446202 -2.182874 -1.0480075 -4.3424444 -2.2152586 -1.0508456 -4.3019099 -2.2279427 -1.0440779 -4.2259736 -2.2215869 -1.0283593 -4.25875 -2.2722933 -1.0401483 -4.2198439 -2.2849007 -1.0338172 -4.2279792 -2.3229733 -1.0394933 -4.2562599 -2.3726401 -1.050409 -4.2229357 -2.3881385 -1.0456061 -4.203125 -2.4110904 -1.0442961 -4.1604199 -2.4206328 -1.0370919 -4.0875049 -2.4118817 -1.0220282 -4.0918865 -2.4484463 -1.0270494 -4.115159 -2.4968023 -1.0370919 -4.0474038 -2.4897799 -1.0233381 -4.0419855 -2.5207667 -1.0259578 -4.053659 -2.5627358 -1.0331622 -4.0501804 -2.5954614 -1.0364369 -4.0374522 -2.622391 -1.0373101 -4.0652952 -2.6761005 -1.0490991 -4.0114608 -2.6760733 -1.0390567 -4.0232573 -2.7197723 -1.0466976 -3.9871738 -2.7311671 -1.0414581 -4.0024037 -2.7778449 -1.0501907 -3.9685228 -2.7905591 -1.0456061 -3.9266903 -2.7972984 -1.0388384 -3.9387267 -2.8424764 -1.046916 -3.8747387 -2.8325996 -1.0340354 -3.9325612 -2.9120913 -1.0549935 -3.8435893 -2.8828642 -1.035127 -3.7931967 -2.881592 -1.0259578 -3.8960786 -2.9976747 -1.0600147 -3.8791511 -3.0227242 -1.0604514 -3.8053837 -3.0029297 -1.0447328 -3.7678313 -3.0109875 -1.0392749 -3.8516769 -3.1169493 -1.0687473 -3.7653131 -3.0854588 -1.0493174 -3.8349123 -3.1820571 -1.0750784 -3.7338896 -3.1370838 -1.0512823 -3.7376084 -3.179543 -1.0580499 -3.690676 -3.1788459 -1.0499723 -3.6321282 -3.1674285 -1.0384017 -3.6828384 -3.251678 -1.0593598 -3.6882768 -3.2969832 -1.0670009 -3.6838923 -3.333962 -1.0718037 -3.6238005 -3.3202348 -1.0597965 -3.565448 -3.3072248 -1.0482259 -3.5450881 -3.3290398 -1.0482259 -3.4736826 -3.3023055 -1.0325073 -3.4449189 -3.3154349 -1.0298876 -3.434993 -3.3467278 -1.0331622 -3.5019147 -3.454109 -1.0606697 -3.3418851 -3.3369007 -1.0167887 -3.4311316 -3.4683716 -1.0517188 -3.3681908 -3.4467738 -1.0384017 -3.3686612 -3.4898491 -1.0453877 -3.2455218 -3.4037809 -1.0124224 -3.2178862 -3.4165254 -1.0102392 -3.2327476 -3.4747965 -1.0220282 -3.2377715 -3.5233154 -1.0307608 -3.2311738 -3.5597389 -1.035782 -3.2587676 -3.6347318 -1.0523738 -3.1995361 -3.6130066 -1.03993 -3.1573954 -3.6097949 -1.0331622 -3.1645248 -3.6630771 -1.0432047 -3.1584535 -3.7017307 -1.0488808 -3.1312799 -3.7158163 -1.0473526 -3.1202788 -3.7492139 -1.0515006 -3.0272152 -3.6830812 -1.0268312 -2.9725881 -3.6621788 -1.0154788 -3.0074172 -3.7519395 -1.0360003 -3.0236957 -3.8200684 -1.0501907 -2.9971955 -3.8347044 -1.0490991 -2.9873188 -3.8707948 -1.0541203 -2.9753377 -3.9045787 -1.0584866 -2.921411 -3.8829837 -1.0473526 -2.8893864 -3.8898664 -1.0442961 -2.8620028 -3.9027996 -1.0429863 -2.8277047 -3.9060557 -1.0390567 -2.8127596 -3.9360385 -1.0425497 -2.7812455 -3.9428546 -1.0397116 -2.7547705 -3.9566417 -1.0388384 -2.7508833 -4.0032339 -1.046916 -2.7295532 -4.0248842 -1.0482259 -2.6885285 -4.0172224 -1.0416764 -2.6428626 -4.0018797 -1.0331622 -2.6187904 -4.0188384 -1.0333805 -2.580893 -4.0143065 -1.0279226 -2.5687535 -4.0498481 -1.0331622 -2.5485125 -4.0729804 -1.035127 -2.5198867 -4.082727 -1.0335988 -2.535368 -4.1648068 -1.0510639 -2.4957061 -4.1568551 -1.0449511 -2.4592195 -4.1536136 -1.0401483 -2.4828687 -4.2529135 -1.0619797 -2.427042 -4.2164688 -1.0486624 -2.3621283 -4.1625242 -1.030979 -2.3270187 -4.1599035 -1.0266128 -2.3278251 -4.2219667 -1.0388384 -2.3037388 -4.2396011 -1.0397116 -2.3002441 -4.2958174 -1.050409 -2.2260494 -4.2192116 -1.0274861 -2.2163138 -4.263967 -1.0353453 -2.1741054 -4.2462111 -1.0274861 -2.1330774 -4.2298412 -1.0200634 -2.1370189 -4.3031654 -1.035127 -2.0998631 -4.2942777 -1.0296692 -2.0459735 -4.2499204 -1.0154788 -2.0298824 -4.2835617 -1.0207183 -2.008508 -4.3065505 -1.0233381 -1.9747227 -4.3028269 -1.0194085 -1.9486853 -4.315752 -1.0196267 -1.9285023 -4.3418989 -1.0231198 -1.9092429 -4.3706436 -1.0272677 -1.8939373 -4.4091787 -1.0338172 -1.8520497 -4.3856516 -1.0253029 -1.8262267 -4.3996372 -1.0259578 -1.817615 -4.4559441 -1.0368736 -1.6886514 -4.2133536 -0.97574574 -1.6852736 -4.280848 -0.98949951 -1.6325998 -4.2228346 -0.97312599 -1.6779505 -4.4207377 -1.0180986 -1.155405 -3.1002679 -0.70045233 -1.1383696 -3.1127987 -0.7017622 -1.2934083 -3.6057003 -0.81725007 -1.264788 -3.5951552 -0.81288379 -1.5510933 -4.4978075 -1.024648 -1.5375178 -4.5488458 -1.0344721 -1.4951684 -4.5146503 -1.0242114 -1.0507066 -3.2379963 -0.72184706 -1.0302285 -3.2425222 -0.72141045 -1.0407082 -3.346638 -0.74433339 -1.0207216 -3.3548281 -0.74476999 -0.99122095 -3.3310938 -0.73778397 -0.96885717 -3.3305533 -0.73625576 -0.94627094 -3.3289251 -0.73450923 -0.87054795 -3.1353045 -0.68822676 -0.85180366 -3.1424708 -0.68866342 -1.2170081 -4.6034999 -1.0255213 -1.2089407 -4.6893191 -1.0436412 -1.1639884 -4.6322856 -1.028796 -1.1304442 -4.6184855 -1.023993 -1.1066036 -4.6443224 -1.0283593 -1.070381 -4.6177492 -1.0207183 -0 -0 -0 -0.79413766 -3.6266525 -0.79083413 -1.5490229 -7.2933698 -1.6282851 -1.5125053 -7.3428826 -1.6374542 -0.93032837 -4.6589375 -1.0231198 -0.90560889 -4.68468 -1.0277044 -0.87684721 -4.6901484 -1.0277044 -0.84718639 -4.6906385 -1.0266128 -1.2696526 -7.2887187 -1.6154045 -1.2394336 -7.3829913 -1.6350527 -1.1959753 -7.4020181 -1.6376724 -0.72463661 -4.6637282 -1.0161338 -1.1001661 -7.3833189 -1.6302499 -0.66197872 -4.6345911 -1.0076195 -0.63998806 -4.6859455 -1.0183169 -0.60908359 -4.6733332 -1.0146055 -0.57643896 -4.6450224 -1.0074012 -0.86986053 -7.3854852 -1.6239188 -0.81836879 -7.3354001 -1.6114749 -0.7779386 -7.3839574 -1.6212989 -0.73732775 -7.4361768 -1.6319963 -0.68564427 -7.3754568 -1.6173693 -0.64416611 -7.4232759 -1.6271935 -0.59860563 -7.4270887 -1.6271935 -0.55063742 -7.3985062 -1.619989 -0.50761765 -7.4367962 -1.6278484 -0.45944291 -7.3988624 -1.6186792 -0.41430748 -7.406414 -1.6197708 -0.36919338 -7.4156394 -1.6212989 -0.32669476 -7.4869871 -1.6367992 -0.27696279 -7.3874302 -1.6140946 -0.23153789 -7.3860641 -1.6134397 -0.18782645 -7.4517336 -1.6278484 -0.14136185 -7.4137177 -1.6191158 -0.060281403 -4.6285391 -0.9958306 -0.050373483 -7.4148941 -1.6191158 -0.0034819739 -4.6377134 -0.9977954 --0.040677451 -7.4247127 -1.6212989 --0.086233862 -7.4243231 -1.6212989 --0.083036982 -4.7013893 -1.0122041 --0.11183568 -4.6988401 -1.0117675 --0.14090069 -4.7058692 -1.013514 --0.26840991 -7.419971 -1.6212989 --0.31293902 -7.3947845 -1.6160594 --0.35844886 -7.395649 -1.6167144 --0.40387434 -7.3942847 -1.6169326 --0.44935593 -7.3936157 -1.6173693 --0.49451783 -7.3877983 -1.6167144 --0.34625503 -4.7421956 -1.023993 --0.5886175 -7.4249501 -1.6265385 --0.63141817 -7.389112 -1.6193341 --0.67701262 -7.3880138 -1.619989 --0.72280771 -7.388577 -1.6210806 --0.76853406 -7.3878856 -1.6219538 --0.81449324 -7.3888507 -1.6232638 --0.85913688 -7.3778982 -1.6219538 --0.90415269 -7.3705502 -1.6215173 --0.94898582 -7.3619604 -1.6208624 --0.99453264 -7.3589001 -1.6215173 --1.0392569 -7.3497605 -1.6208624 --1.0854763 -7.3509684 -1.6226088 --1.1341276 -7.3673177 -1.6278484 --1.1805476 -7.3679285 -1.6295949 --1.2255737 -7.3595834 -1.6293765 --1.2707082 -7.3519249 -1.6293765 --1.3164839 -7.3478317 -1.6302499 --1.3629696 -7.3472915 -1.6319963 --1.4089463 -7.3435822 -1.6330879 --1.4554983 -7.3424563 -1.6348344 --1.5030684 -7.3458161 -1.6376724 --1.5481132 -7.3364553 -1.6376724 --1.5789903 -7.2619758 -1.6228272 --1.6230925 -7.2502456 -1.6223905 --1.6682062 -7.2430029 -1.6230454 --1.712167 -7.2307315 -1.6226088 --1.7528085 -7.2049189 -1.6191158 --1.8014803 -7.2120166 -1.6232638 --1.8469107 -7.2055535 -1.6243553 --1.8928261 -7.2006917 -1.6258836 --1.9357029 -7.1842308 -1.624792 --1.9802676 -7.1740999 -1.6252286 --2.0277023 -7.1740217 -1.6280667 --2.0667992 -7.1445718 -1.624137 --2.1144776 -7.1448555 -1.6271935 --2.1650653 -7.1541629 -1.6324329 --2.2034395 -7.1230307 -1.6282851 --2.2535777 -7.1298466 -1.6330879 --2.2954834 -7.1103129 -1.631778 --2.3445699 -7.1127763 -1.6357076 --2.396575 -7.1232285 -1.6416022 --2.4342141 -7.0908532 -1.6374542 --2.4815488 -7.0868354 -1.6400739 --1.3509763 -3.78514 -0.8593846 --1.37451 -3.7776964 -0.85960293 --2.6159883 -7.0518513 -1.642912 --2.6633501 -7.0466208 -1.6455318 --2.6928577 -6.9946303 -1.6370175 --2.7467718 -7.0061388 -1.6437852 --2.7770422 -6.9574327 -1.6361443 --2.820415 -6.9420705 -1.6365809 --2.8603466 -6.9183216 -1.6350527 --2.9133415 -6.9258256 -1.6411655 --2.9515584 -6.8979511 -1.638764 --2.996944 -6.886869 -1.6405106 --3.0727212 -6.9442005 -1.6590672 --1.4087988 -3.1332858 -0.72883308 --1.4292156 -3.1272449 -0.72948802 --3.1699901 -6.8218651 -1.6431303 --1.6154478 -3.4227204 -0.80698937 --1.6296635 -3.3986666 -0.80349636 --1.6436452 -3.3745677 -0.80000329 --1.6617223 -3.3591716 -0.79869342 --1.6849325 -3.3541436 -0.80000329 --1.7116928 -3.3559105 -0.8030597 --1.737191 -3.3548758 -0.80546117 --1.7704639 -3.3683364 -0.81157392 --3.5573184 -6.6657672 -1.650553 --3.6004763 -6.6481047 -1.6516446 --3.6426108 -6.6284528 -1.6522995 --3.6713297 -6.5846705 -1.6468416 --3.7188721 -6.57476 -1.6501163 --3.7499142 -6.5357366 -1.6459684 --3.7884731 -6.5100741 -1.6453135 --3.8288429 -6.4875464 -1.6455318 --3.8730893 -6.4714665 -1.6474966 --3.9339938 -6.4826164 -1.6566658 --3.965512 -6.4450583 -1.6531727 --3.9993007 -6.4114981 -1.6507713 --4.0583897 -6.4181781 -1.6590672 --4.0824189 -6.3693314 -1.6527361 --4.1187649 -6.3400707 -1.6516446 --4.1973104 -6.374989 -1.6677997 --2.0741758 -3.1096783 -0.79651028 --2.0954044 -3.1001263 -0.79738355 --4.3117352 -6.2934303 -1.6669265 --4.3241091 -6.2291813 -1.6566658 --4.3712335 -6.215302 -1.6601588 --4.3990927 -6.1740594 -1.6562291 --4.449461 -6.1643572 -1.6610321 --4.4860487 -6.1353645 -1.6605954 --4.5189629 -6.10145 -1.6588489 --4.5516295 -6.0673628 -1.6571023 --4.6118026 -6.0696211 -1.6656166 --4.665626 -6.0628614 -1.6717294 --4.675139 -5.9987168 -1.661687 --4.720324 -5.9806409 -1.6647433 --4.7599788 -5.9553761 -1.6658349 --4.8093262 -5.9419847 -1.6704195 --4.8327022 -5.8965154 -1.6658349 --4.8669214 -5.8644986 -1.66518 --4.9379778 -5.876359 -1.6774056 --4.9688816 -5.840004 -1.6756591 --5.0129032 -5.819016 -1.6784971 --5.0369654 -5.7749119 -1.6745675 --5.0800576 -5.7526736 -1.6771872 --5.1113563 -5.71703 -1.6758773 --5.135859 -5.6739855 -1.6723844 --5.2035484 -5.6783342 -1.6833 --5.2409477 -5.6491604 -1.6841732 --5.2781844 -5.619741 -1.6850466 --5.2997885 -5.5738134 -1.6808985 --5.3616409 -5.5700116 -1.6898494 --5.3998041 -5.5412016 -1.6911592 --5.42205 -5.4961562 -1.687448 --5.4370494 -5.4441428 -1.6815535 --5.4877 -5.4278331 -1.6870114 --5.5257883 -5.3988323 -1.6885395 --5.5665359 -5.3722782 -1.690941 --5.6029272 -5.3413877 -1.6920326 --5.6341748 -5.3055706 -1.6915959 --5.6902065 -5.29283 -1.6988003 --5.7024517 -5.2393317 -1.6926875 --5.7409968 -5.210145 -1.6946523 --5.7459674 -5.1507239 -1.6865747 --5.792809 -5.128953 -1.6911592 --5.8197627 -5.0894585 -1.6898494 --5.8523588 -5.0549288 -1.690286 --5.8788099 -5.0151248 -1.6889762 --5.8885722 -4.9613562 -1.6828634 --5.9234052 -4.9288754 -1.6841732 --5.9082932 -4.855269 -1.6710745 --5.9523726 -4.8306069 -1.6752224 --5.949152 -4.7677555 -1.6658349 --5.9737024 -4.7275295 -1.664525 --6.0525842 -4.7298374 -1.6787155 --6.1000371 -4.7069154 -1.683955 --6.1878052 -4.7143359 -1.7005467 --6.2212954 -4.6797986 -1.7018566 --6.2498927 -4.6415377 -1.7018566 --6.2640872 -4.5927172 -1.697927 --6.3032184 -4.5622039 -1.7009834 --6.3437986 -4.5325174 -1.7044765 --6.3826566 -4.50138 -1.7075328 --6.4149623 -4.4654765 -1.7088428 --6.4333925 -4.4199533 -1.7064413 --6.4337344 -4.3623266 -1.6992369 --6.4449687 -4.312459 -1.695089 --6.4941125 -4.2878847 -1.7012017 --6.5366554 -4.2586088 -1.705568 --6.534749 -4.2004833 -1.6981454 --6.5496845 -4.1535153 -1.6953073 --6.57091 -4.110662 -1.6942157 --6.5827198 -4.0620685 -1.6907227 --6.5883455 -4.0099344 -1.6857015 --6.6178465 -3.9724464 -1.6870114 --6.611022 -3.913377 -1.6789337 --6.5902367 -3.8466728 -1.6673632 --6.5807257 -3.7871847 -1.6588489 --6.5622454 -3.7231445 -1.6481515 --6.5713377 -3.6751897 -1.6446586 --6.5510297 -3.6112504 -1.6337428 --6.5361886 -3.5509598 -1.6243553 --6.5793643 -3.5222991 -1.6298132 --6.5930839 -3.477766 -1.6278484 --6.6298871 -3.4453437 -1.631778 --6.6248403 -3.3912625 -1.6252286 --6.6795106 -3.3676782 -1.6337428 --6.6056418 -3.2797747 -1.610165 --6.633533 -3.2430377 -1.6121298 --6.6453924 -3.1984663 -1.610165 --6.68606 -3.167655 -1.6154045 --6.7151003 -3.1311054 -1.617806 --6.7723284 -3.1073372 -1.6271935 --6.7983832 -3.0689354 -1.62894 --6.8153019 -3.0263717 -1.6285033 --6.4813609 -2.8306661 -1.5424877 --6.8366823 -2.9359658 -1.624792 --6.9543681 -2.9360778 -1.6490247 --6.9902806 -2.9008296 -1.653391 --7.0296364 -2.8667243 -1.6586306 --7.0661187 -2.8311563 -1.6632152 --7.182344 -2.8266864 -1.6870114 --7.2122974 -2.7874866 -1.6900678 --7.256639 -2.7535625 -1.6966171 --7.2770562 -2.7103467 -1.6974903 --7.3329649 -2.6800432 -1.7068778 --7.3713193 -2.6429 -1.7121174 --7.3800316 -2.595032 -1.7103709 --7.4004288 -2.5512898 -1.7114625 --7.4797392 -2.5273795 -1.7265261 --7.5821943 -2.5102556 -1.7470475 --7.5974541 -2.4636848 -1.7470475 --7.6356821 -2.424401 -1.7525054 --7.6578698 -2.3798196 -1.754252 --7.6863337 -2.3370433 -1.7575266 --7.7154961 -2.2942851 -1.7610196 --7.7603536 -2.2558854 -1.768224 --7.7928247 -2.2135568 -1.7725903 --7.801558 -2.1643953 -1.7714987 --7.6432514 -2.0700796 -1.7317656 --7.6869459 -2.0313659 -1.7389699 --7.8344054 -2.0189672 -1.7701888 --7.919528 -1.9891529 -1.786999 --8.0140562 -1.9606872 -1.8059922 --8.1484032 -1.9406259 -1.8341547 --8.4073458 -1.9478259 -1.8909162 --8.5714684 -1.9304898 -1.9258463 --8.6603746 -1.8947443 -1.9435297 --8.7377062 -1.8555485 -1.9585934 --8.7718668 -1.8066217 -1.963833 --8.8019276 -1.7565818 -1.9681993 --8.79146 -1.6984713 -1.9633963 --8.8516006 -1.6538095 -1.9747486 --8.8452549 -1.5965213 -1.9710373 --8.8164272 -1.535525 -1.9623047 --8.8179836 -1.4801081 -1.9605583 --8.8355703 -1.4273738 -1.9625231 --8.8152313 -1.368645 -1.9559736 --8.8495245 -1.3184092 -1.9618682 --8.836194 -1.2610542 -1.9570652 --8.8157234 -1.2029898 -1.9507341 --8.810359 -1.1472384 -1.947896 --8.8520975 -1.0974754 -1.9557554 --8.8480034 -1.0418854 -1.9533539 --8.8910856 -0.99168134 -1.9616498 --8.9086494 -0.93833315 -1.9642695 --8.8841343 -0.88067269 -1.9575019 --8.9029741 -0.82740659 -1.9605583 --8.9244118 -0.77419508 -1.9642695 --8.9017572 -0.71723038 -1.9581568 --8.8884726 -0.66129571 -1.9542271 --8.920598 -0.60866749 -1.9605583 --8.8871527 -0.5516277 -1.9522623 --8.8893957 -0.4970324 -1.952044 --8.8601141 -0.44088244 -1.9448397 --8.9094505 -0.38854432 -1.9553187 --8.9272699 -0.33445218 -1.9588118 --8.9135475 -0.2791824 -1.9553187 --8.9180193 -0.22455795 -1.9559736 --8.9719172 -0.17083022 -1.9677626 --8.9152241 -0.11504091 -1.9548821 --8.9264965 -0.060407203 -1.9572835 --8.9179163 -0.0056297039 -1.9553187 --8.9168072 0.049084213 -1.9551004 --8.916338 0.10379579 -1.9551004 --8.9067526 0.15834621 -1.9531356 --8.9085398 0.2130644 -1.9537905 --8.9099913 0.26781049 -1.9544455 --8.8847742 0.32162583 -1.949206 --8.8611832 0.37522462 -1.9444031 --8.8460426 0.42897263 -1.9415649 --8.8705282 0.48473734 -1.9476777 --8.8732309 0.53951287 -1.9489876 --8.856122 0.59303325 -1.9459312 --8.4116583 -0.21105523 -1.9414054 --8.4020901 -0.1592349 -1.9388843 --8.3902559 -0.10751491 -1.9359046 --8.3868647 -0.056005061 -1.9349878 --8.3821831 -0.0045403079 -1.9338418 --8.3986006 0.046983674 -1.9377382 --8.5266314 0.10001668 -1.9679927 --8.5063925 0.15198635 -1.9634087 --8.4897308 0.2038047 -1.9597415 --8.478591 0.25560001 -1.9574494 --8.457408 0.30691376 -1.9528655 --8.4505033 0.35859558 -1.9517194 --8.4374495 0.40992105 -1.9491982 --8.4279718 0.46131247 -1.9475938 --8.4172096 0.51254392 -1.9457603 --8.4119644 0.56405115 -1.9453019 --8.4112568 0.61586845 -1.9459895 --8.3937349 0.66638952 -1.9427806 --8.3982172 0.71862644 -1.9448434 --8.3936491 0.77014339 -1.9448434 --8.3306408 0.81594115 -1.9310914 --8.3535538 0.86996424 -1.9377382 --8.3712788 0.92376554 -1.9432391 --8.3635197 0.97488809 -1.9427806 --8.3467531 1.0248829 -1.9402595 --8.3557529 1.0780704 -1.9439267 --8.3374062 1.1277549 -1.9411763 --8.3216553 1.1776639 -1.9391134 --8.3335314 1.2315476 -1.9436975 --8.3142729 1.2808801 -1.9409471 --8.3129845 1.3329499 -1.9425515 --8.2950478 1.3823327 -1.9402595 --8.290247 1.4338675 -1.9411763 --8.2726698 1.483163 -1.9391134 --8.2576714 1.5328295 -1.9377382 --8.2414188 1.5821846 -1.9361339 --8.251606 1.6366992 -1.9409471 --8.1918211 1.6771494 -1.9290286 --8.201376 1.7316036 -1.9338418 --8.1867924 1.7810663 -1.932925 --8.1909075 1.8346692 -1.9365922 --8.1415548 1.8761519 -1.9274242 --8.1298895 1.9260722 -1.9274242 --8.1207552 1.9766104 -1.9281118 --8.1793003 2.0440979 -1.9453019 --8.1496325 2.0898952 -1.9411763 --8.1253586 2.1368909 -1.9384258 --8.117733 2.1882267 -1.939801 --8.0760059 2.2302232 -1.932925 --8.0631056 2.2799995 -1.9331542 --8.0321341 2.3245609 -1.9290286 --8.0139856 2.3726962 -1.9281118 --7.9946184 2.4204144 -1.9269658 --8.0019341 2.4763281 -1.9324666 --7.953177 2.5148172 -1.9242154 --7.9329653 2.5620742 -1.9230694 --7.9466772 2.620455 -1.9304038 --7.9461317 2.6744432 -1.9343002 --7.9406195 2.7269428 -1.9370506 --7.90169 2.7678921 -1.9315498 --7.8368907 2.7993 -1.9196314 --7.8451772 2.8566575 -1.926049 --7.8320646 2.9064338 -1.9271951 --7.8341141 2.9620082 -1.9322374 --7.8157921 3.0100217 -1.9322374 --7.7881141 3.0543683 -1.9299455 --7.7764583 3.104985 -1.931779 --7.704957 3.1313884 -1.9184854 --7.7197795 3.1927409 -1.9271951 --7.6973524 3.2389162 -1.9265074 --7.682703 3.288383 -1.9278827 --7.6454234 3.3280807 -1.9235278 --7.6391006 3.3812323 -1.9271951 --7.6288619 3.4328339 -1.9299455 --7.6041141 3.4779596 -1.9290286 --7.5790997 3.5229113 -1.9281118 --7.5203738 3.5518918 -1.9184854 --7.5247664 3.6106007 -1.9253614 --7.5190954 3.6648059 -1.9297162 --7.4798923 3.7026691 -1.9253614 --7.4509444 3.7454355 -1.923757 --7.4226203 3.7884283 -1.9223818 --7.3957782 3.8321102 -1.921465 --7.3514495 3.8665442 -1.9159642 --7.3112707 3.9028704 -1.9116094 --7.3051591 3.9573939 -1.9164226 --7.262826 3.9922972 -1.9116094 --7.2602963 4.0491118 -1.9175686 --7.223454 4.086874 -1.9143598 --7.1568732 4.1073804 -1.903129 --7.1163931 4.1424031 -1.8990034 --7.0891657 4.1850009 -1.8985449 --7.0408034 4.2149229 -1.8923565 --7.0048232 4.2519846 -1.8896061 --7.0266833 4.3244729 -1.9028997 --6.9785442 4.3541112 -1.8969406 --6.9648595 4.4051728 -1.9006078 --6.9647408 4.4651608 -1.9081714 --6.8800764 4.4706888 -1.8921274 --6.8801556 4.5310211 -1.8999202 --6.9040422 4.6077309 -1.914589 --6.853869 4.6352844 -1.9084005 --6.8148599 4.6700993 -1.905421 --6.7844772 4.7107162 -1.9049625 --6.7355413 4.738256 -1.8992325 --6.6999998 4.7749763 -1.8973989 --6.6950407 4.8336587 -1.9045042 --6.6283274 4.8476429 -1.8937317 --6.5804682 4.8748965 -1.8884602 --6.571455 4.9309545 -1.8946486 --6.5627751 4.9876733 -1.9010662 --6.525877 5.0230985 -1.8992325 --6.4903269 5.0594554 -1.8978573 --6.45152 5.0931535 -1.8955654 --6.4133048 5.1271729 -1.8935026 --6.3915596 5.1743894 -1.8964821 --6.3280725 5.1875935 -1.8868557 --6.2983699 5.228189 -1.8875433 --6.2549944 5.2573428 -1.8841053 --6.2737684 5.33915 -1.8999202 --6.228354 5.3667436 -1.8960238 --6.1901722 5.4003801 -1.8944193 --6.1591082 5.4401937 -1.8951069 --6.1510081 5.5005913 -1.903129 --6.1236358 5.5441089 -1.9051918 --6.0643868 5.5585599 -1.8971697 --6.0208902 5.587059 -1.8941902 --5.9886236 5.6258965 -1.8948778 --5.9638662 5.671927 -1.8980865 --5.9464822 5.7252908 -1.9038166 --5.9244852 5.7745781 -1.9081714 --5.8868628 5.8087707 -1.9074838 --5.8717709 5.8654184 -1.9143598 --5.856204 5.9220996 -1.9212358 --5.7728233 5.9098778 -1.905421 --5.7364521 5.945188 -1.905421 --5.7441907 6.0267758 -1.9205482 --5.7137756 6.068995 -1.9228402 --5.6777554 6.1053653 -1.9232986 --5.6480889 6.1486902 -1.926049 --5.5827823 6.1529551 -1.9164226 --5.5351782 6.1762218 -1.9129846 --5.5300832 6.2472386 -1.9246738 --5.4986949 6.289113 -1.9271951 --5.4231014 6.2800069 -1.9139014 --5.3970995 6.3279757 -1.9184854 --5.3794928 6.3862829 -1.9262782 --5.329 6.4057021 -1.9221526 --5.3143129 6.4683623 -1.9313207 --5.2788172 6.5061393 -1.932925 --5.2083631 6.5004272 -1.921465 --5.1913314 6.5612688 -1.9301746 --5.1539712 6.5968337 -1.9313207 --5.1246939 6.6429768 -1.9356754 --5.0767584 6.6650043 -1.932925 --5.0515647 6.7170329 -1.9391134 --4.9928455 6.7244577 -1.9322374 --4.9497647 6.7526116 -1.9315498 --4.9225049 6.8025694 -1.9372798 --4.8902912 6.8461099 -1.9411763 --4.8263154 6.8449631 -1.9322374 --4.7747717 6.8608661 -1.928341 --4.7513232 6.9173131 -1.9361339 --4.7289996 6.9761467 -1.9446143 --4.663373 6.9710536 -1.9349878 --4.6253381 7.0068469 -1.9370506 --4.5870395 7.0424361 -1.9391134 --4.5516357 7.0827317 -1.9425515 --4.5206008 7.1302557 -1.9480523 --4.4679904 7.1438303 -1.9441558 --4.4210057 7.1661406 -1.9427806 --4.3946624 7.2222357 -1.9508027 --4.344254 7.2390494 -1.9480523 --4.3071909 7.2781339 -1.9514903 --4.2403741 7.2665944 -1.9411763 --4.2170672 7.3295979 -1.951261 --4.1801791 7.3697286 -1.9551575 --4.1334553 7.3926902 -1.9544699 --4.0875468 7.4170609 -1.9542407 --4.0428891 7.4437127 -1.954699 --3.9833586 7.4426341 -1.947823 --3.9476063 7.485877 -1.9528655 --3.9011507 7.5090942 -1.9526362 --3.8700805 7.5623503 -1.9604291 --3.8306165 7.5998611 -1.9640963 --3.7886734 7.632813 -1.9666175 --3.737066 7.6462965 -1.9640963 --3.7027414 7.6953959 -1.9709723 --3.6517034 7.7100534 -1.9689095 --3.5878751 7.6970263 -1.9597415 --3.5446382 7.7277431 -1.9620335 --3.5091679 7.7759633 -1.9689095 --3.4681039 7.8124728 -1.9728059 --3.4239974 7.842526 -1.9750979 --3.3819566 7.8776984 -1.9787651 --3.3161438 7.8570504 -1.9682219 --3.279808 7.9060202 -1.9755563 --3.2224159 7.9043636 -1.9700555 --3.1691494 7.912241 -1.9670758 --3.1208975 7.9324431 -1.9673051 --3.0721662 7.9514432 -1.9673051 --3.022974 7.969234 -1.9670758 --2.988625 8.0268564 -1.9769315 --2.9443281 8.0587568 -1.9803694 --2.8921974 8.0693417 -1.9785359 --2.8461816 8.0970364 -1.981057 --2.7881985 8.0904217 -1.9750979 --2.7469156 8.1322765 -1.9812863 --2.6997182 8.1572943 -1.9833491 --2.6514163 8.1792612 -1.9847243 --2.5970562 8.1823883 -1.9815155 --2.5450683 8.1925917 -1.9801403 --2.5069251 8.2480993 -1.989996 --2.4562685 8.2633266 -1.989996 --2.4030745 8.2698298 -1.9879332 --2.3488297 8.2722473 -1.9849535 --2.2962067 8.2799377 -1.9833491 --2.2524822 8.320178 -1.9897667 --2.1934319 8.3037281 -1.9824324 --2.1540968 8.3622742 -1.993434 --2.091367 8.330019 -1.9824324 --2.0524731 8.392807 -1.9945799 --1.9849291 8.3380117 -1.9783067 --1.9302162 8.3348618 -1.9746395 --1.8839562 8.3683891 -1.9799111 --1.8388132 8.4083185 -1.9867871 --1.7853667 8.4108734 -1.9847243 --1.7411848 8.4578981 -1.993434 --1.6823988 8.4340582 -1.9851828 --1.6324626 8.4537802 -1.9874747 --1.583599 8.4799032 -1.9913712 --1.5272161 8.4655132 -1.9856411 --1.4804201 8.5044518 -1.9927464 --1.4270823 8.5066557 -1.9911419 --1.3747044 8.5142908 -1.9909127 --1.3164639 8.4840918 -1.9817446 --1.2695439 8.5266685 -1.989996 --1.215139 8.5198441 -1.986558 --1.1640235 8.5358191 -1.9886208 --1.1138884 8.5601749 -1.9927464 --1.0613432 8.5668488 -1.9927464 --1.0100098 8.5838337 -1.9952675 --0.95872343 8.6024456 -1.9982471 --0.90439302 8.5936451 -1.9948092 --0.8522222 8.604845 -1.9961843 --0.79751712 8.5895586 -1.9913712 --0.7443772 8.5894413 -1.9902251 --0.69439399 8.6278057 -1.9982471 --0.63970941 8.6086073 -1.9927464 --0.58707464 8.615284 -1.993434 --0.53281516 8.5963793 -1.9881623 --0.48157912 8.6266985 -1.9945799 --0.42868596 8.6304636 -1.9948092 --0.37508684 8.6183443 -1.9913712 --0.32314503 8.6457739 -1.9973303 --0.26975474 8.6368923 -1.9948092 --0.21660791 8.6325464 -1.993434 --0.16304384 8.6025705 -1.9860995 --0.11051928 8.623848 -1.9909127 --0.057693902 8.637991 -1.9941216 --0.004695117 8.6449957 -1.995726 -0.048171494 8.6127405 -1.9881623 -0.10117657 8.6259098 -1.9913712 -0.154241 8.6329117 -1.9932047 -0.20709208 8.6269379 -1.9920588 -0.26054922 8.6430178 -1.9961843 -0.31209618 8.6004009 -1.986558 -0.36613926 8.6284714 -1.9936631 -0.41850939 8.6143961 -1.9909127 -0.47215578 8.6262445 -1.9943507 -0.52596325 8.6377592 -1.9977888 -0.57556969 8.5838671 -1.9858704 -0.62851262 8.5840569 -1.9867871 -0.67878485 8.5499582 -1.9796818 -0.73546368 8.5950937 -1.9913712 -0.7856105 8.5623093 -1.9847243 -0.83832276 8.5592651 -1.9851828 -0.89213574 8.5665464 -1.9881623 -0.94105387 8.5280161 -1.9803694 -0.99448961 8.5317497 -1.9826615 -1.0499039 8.5506058 -1.9886208 -1.1024742 8.5449686 -1.9888499 -1.1524062 8.5197153 -1.9844952 -1.2054785 8.5182667 -1.9858704 -1.2615639 8.5367088 -1.9920588 -1.3105127 8.5066805 -1.9867871 -1.3611434 8.4888678 -1.9844952 -1.4141642 8.4861174 -1.9858704 -1.4642173 8.4657707 -1.98312 -1.5123566 8.4355488 -1.9780775 -1.5706592 8.4615202 -1.986558 -1.6196129 8.436429 -1.9828907 -1.6743767 8.4416094 -1.986558 -1.7243853 8.4225941 -1.9844952 -1.777038 8.4166164 -1.9856411 -1.8180972 8.3570461 -1.9739519 -1.8797636 8.3922758 -1.9851828 -1.9196401 8.3303118 -1.9730351 -1.9767752 8.3439503 -1.9792235 -2.0274751 8.329772 -1.9787651 -2.0750082 8.30301 -1.9753271 -2.1280911 8.2986078 -1.9773899 -2.1740198 8.2665663 -1.9728059 -2.2262213 8.2587099 -1.9741811 -2.2745223 8.2364502 -1.9721183 -2.330049 8.2401352 -1.9764731 -2.380295 8.2247486 -1.9762439 -2.4174545 8.1651878 -1.9652423 -2.4754059 8.1762867 -1.9716599 -2.5332966 8.1860504 -1.9778483 -2.5773158 8.1508627 -1.9730351 -2.6281772 8.1376734 -1.9737227 -2.667697 8.0899639 -1.9659299 -2.725668 8.0983515 -1.9721183 -2.7579212 8.0308409 -1.9595122 -2.8171198 8.0422459 -1.9666175 -2.8687048 8.0312252 -1.9682219 -2.9255886 8.0345087 -1.9734935 -2.9683988 7.9990678 -1.9691387 -3.0260293 8.0034657 -1.9748687 -3.0544436 7.9311543 -1.9613459 -3.0998526 7.9041076 -1.9592831 -3.1522629 7.8948822 -1.9618043 -3.1951489 7.861865 -1.9583663 -3.2277057 7.8043327 -1.9487399 -3.2811937 7.7978392 -1.9521779 -3.3339572 7.7891927 -1.9551575 -3.3708112 7.7435994 -1.9487399 -3.4198372 7.7263308 -1.9496566 -3.4400227 7.6448402 -1.9340711 -3.5479941 7.7572546 -1.9686803 -3.5778842 7.697382 -1.9588246 -3.6150715 7.6541595 -1.9533238 -3.6623895 7.6327114 -1.9535531 -3.704037 7.5995955 -1.9508027 -3.7406664 7.5566607 -1.945531 -3.7970166 7.5535693 -1.9508027 -3.8468328 7.537065 -1.9526362 -3.9015145 7.5297408 -1.9569911 -3.9567039 7.5228901 -1.961575 -3.9468713 7.3937073 -1.9336126 -3.9907732 7.3667831 -1.932925 -4.0443392 7.357512 -1.9370506 -4.0751858 7.3070536 -1.9301746 -4.1338429 7.3064804 -1.9368215 -4.1689076 7.2640929 -1.9322374 -4.2295589 7.2661381 -1.939801 -4.2557564 7.209034 -1.9313207 -4.3189073 7.2145228 -1.9400302 -4.3630934 7.1878867 -1.9400302 -4.3729362 7.1054373 -1.9246738 -4.4473648 7.1280227 -1.9384258 -4.487896 7.095664 -1.9370506 -4.5302992 7.0663543 -1.9365922 -4.5550108 7.0098557 -1.9285703 -4.6065021 6.9947824 -1.9322374 -4.6304235 6.9380479 -1.9242154 -4.680541 6.920794 -1.9274242 -4.7179666 6.8847179 -1.9253614 -4.7257042 6.8060656 -1.9111509 -4.7718568 6.7833104 -1.9129846 -4.8099995 6.7491469 -1.9116094 -4.843914 6.7092466 -1.9086298 -4.8947577 6.6927557 -1.9125261 -4.9484777 6.6798034 -1.9175686 -4.9794402 6.6360784 -1.9136722 -5.0147643 6.5984254 -1.9116094 -5.0498142 6.5605888 -1.9095466 -5.1091228 6.5540471 -1.916881 -5.128736 6.4965978 -1.9090881 -5.1946363 6.4976993 -1.9189438 -5.2276711 6.4573812 -1.9164226 -5.2770672 6.4372277 -1.9200898 -5.284761 6.3665285 -1.9084005 -5.3387561 6.3518658 -1.9139014 -5.3549204 6.2923012 -1.9056501 -5.3985114 6.2652249 -1.9074838 -5.4253349 6.2187791 -1.9033582 -5.4517922 6.1722407 -1.8992325 -5.4778829 6.1256118 -1.8951069 -5.5120993 6.0882769 -1.893961 -5.5598755 6.0658221 -1.8976282 -5.6108932 6.0465775 -1.9024414 -5.6512208 6.015583 -1.9035873 -5.6786346 5.9709196 -1.9003786 -5.7050385 5.9254456 -1.8969406 -5.7460446 5.8952079 -1.8985449 -5.8080869 5.8861699 -1.9072546 -5.8103886 5.8166757 -1.8960238 -5.8169017 5.7521672 -1.8863974 -5.8660126 5.7299709 -1.8909813 -5.8961573 5.6891384 -1.889377 -5.9126353 5.6353917 -1.8834177 -5.9548974 5.6063461 -1.885939 -5.9792066 5.5604215 -1.8827301 -6.0031772 5.51441 -1.8795214 -6.0484333 5.487937 -1.8831885 -6.084167 5.4526701 -1.8838761 -6.1247978 5.4216881 -1.8861681 -6.1542854 5.3808012 -1.8850222 -6.1923423 5.3473916 -1.8866266 -6.1702347 5.2625504 -1.8696657 -6.2001758 5.2227101 -1.8689781 -6.2343497 5.1864357 -1.8696657 -6.290122 5.1678596 -1.8770001 -6.3338065 5.1389799 -1.8806673 -6.3781328 5.1103668 -1.8845637 -6.394866 5.059659 -1.880209 -6.4342284 5.0269184 -1.8827301 -6.4695759 4.9909115 -1.8841053 -6.4946575 4.9469919 -1.8825009 -6.5326686 4.912899 -1.8847929 -6.5962944 4.897676 -1.8946486 -6.6089511 4.8444486 -1.8896061 -6.6393404 4.8043766 -1.8898354 -6.6750307 4.7680745 -1.8916689 -6.6922288 4.7186131 -1.8882309 -6.7242517 4.6796861 -1.8891478 -6.7528391 4.6383386 -1.8891478 -6.8005085 4.6099257 -1.8946486 -6.8092499 4.5551214 -1.8891478 -6.8460073 4.5191541 -1.8916689 -6.8662667 4.472281 -1.8896061 -6.8960357 4.4316454 -1.8902937 -6.9329624 4.3955035 -1.8930441 -6.9771323 4.3637204 -1.8978573 -6.9930072 4.3141832 -1.8948778 -7.017684 4.2701817 -1.8944193 -6.9911733 4.1954842 -1.8799797 -7.0327001 4.1619282 -1.8843346 -7.0690336 4.1250758 -1.8873142 -7.1110854 4.0913329 -1.8918982 -7.1284356 4.0433006 -1.8898354 -7.1607566 4.0037608 -1.8918982 -7.182631 3.9583383 -1.8912106 -7.2341547 3.9290595 -1.8985449 -7.2512612 3.8809228 -1.8967113 -7.2689109 3.8331783 -1.8951069 -7.2845201 3.7844658 -1.8930441 -7.2894082 3.7303846 -1.8882309 -7.3199825 3.6895308 -1.8902937 -7.3607926 3.6536357 -1.8951069 -7.3804488 3.6071198 -1.8944193 -7.4077053 3.5642986 -1.8957945 -7.443511 3.5254459 -1.8994617 -7.4632382 3.4788845 -1.8990034 -7.479135 3.4305902 -1.8976282 -7.5089164 3.3886387 -1.8999202 -7.5144434 3.3357866 -1.8960238 -7.5320935 3.2884474 -1.8953362 -7.5574961 3.2444737 -1.8967113 -7.5826421 3.2003119 -1.8980865 -7.6021361 3.1537254 -1.8980865 -7.6078238 3.1015077 -1.8946486 -7.6420717 3.0609219 -1.8985449 -7.6679554 3.0168247 -1.9003786 -7.6845059 2.9690166 -1.8999202 -7.702579 2.9218094 -1.8999202 -7.7240105 2.8758509 -1.9008369 -7.7460823 2.8300736 -1.901983 -7.7706318 2.7851191 -1.9038166 -7.7793102 2.7344813 -1.9017538 -7.7913408 2.685111 -1.9006078 -7.7864599 2.6300883 -1.8953362 -7.8006029 2.5816503 -1.8948778 -7.8283339 2.5376406 -1.8978573 -7.8419018 2.48897 -1.8973989 -7.8588853 2.4413838 -1.8978573 -7.910038 2.4041576 -1.9067962 -7.9591627 2.3658407 -1.9152766 -7.9445534 2.3085382 -1.9081714 -7.9801049 2.2658641 -1.913443 -7.9807262 2.2132142 -1.9102342 -7.9622116 2.1555538 -1.9024414 -7.9846988 2.1091444 -1.9047334 -8.002203 2.0613258 -1.9058794 -8.0411339 2.0188243 -1.912297 -8.0316238 1.9641275 -1.9070253 -8.0605679 1.9188678 -1.9111509 -8.0541735 1.8651997 -1.9067962 -8.07971 1.8189524 -1.9102342 -8.0707502 1.7649741 -1.905421 -8.0728588 1.7136003 -1.9033582 -8.1118221 1.6699233 -1.9102342 -8.1448259 1.6246897 -1.915735 -8.1775789 1.5791137 -1.9212358 -8.1622362 1.5242603 -1.9152766 -8.1580248 1.471729 -1.9120678 -8.1784086 1.4236484 -1.9148182 -8.1889105 1.373762 -1.9152766 -8.2039118 1.3245763 -1.916881 -8.1695623 1.267644 -1.9067962 -8.1868143 1.2189267 -1.9090881 -8.2124481 1.1712825 -1.913443 -8.2638454 1.1269218 -1.9239862 -8.278326 1.0771998 -1.9258198 -8.2828484 1.0261452 -1.9253614 -8.2367868 0.96915853 -1.9129846 -8.2832079 0.92313033 -1.922611 -8.2848444 0.87188047 -1.9216942 -8.2755089 0.81958956 -1.9182562 -8.2261057 0.76375473 -1.905421 -8.2674875 0.71646112 -1.9141306 -8.297925 0.66782886 -1.920319 -8.2921591 0.61617941 -1.918027 -8.3210335 0.56700981 -1.9239862 -8.3117256 0.51515883 -1.9210066 -8.30404 0.46355206 -1.9184854 -8.282423 0.41138235 -1.9127554 -8.3207722 0.36212221 -1.9212358 -8.2926846 0.3099317 -1.9141306 -8.3537769 0.26089922 -1.9281118 -8.3211632 0.20878035 -1.9200898 -8.3602428 0.15843983 -1.9290286 -8.3493776 0.10698915 -1.9262782 -8.3557167 0.055795591 -1.9276534 -8.2760849 0.0044778106 -1.908859 -8.3450651 -0.04668672 -1.9251322 -8.3037424 -0.097412594 -1.9155058 -8.3068819 -0.14843094 -1.9164226 -8.3359804 -0.20012097 -1.9235278 -8.3092995 -0.2505044 -1.9175686 -8.3562431 -0.30324733 -1.9290286 -8.3444996 -0.35410234 -1.9267366 -8.353837 -0.40586281 -1.929487 -8.3191156 -0.45535928 -1.9219234 -8.3249092 -0.50692791 -1.9239862 -8.3129015 -0.55741334 -1.9219234 -8.3442726 -0.6109671 -1.9301746 -8.3034945 -0.65922952 -1.921465 -8.3177204 -0.71174228 -1.9258198 -8.3093195 -0.76240987 -1.924903 -8.2918911 -0.81214768 -1.9219234 -8.3032103 -0.86472368 -1.9258198 -8.2958126 -0.91544151 -1.9253614 -8.3229122 -0.97015667 -1.9331542 -8.2820225 -1.0169379 -1.924903 -8.3055534 -1.071596 -1.9320083 -8.2939987 -1.1218855 -1.9308622 -8.2869587 -1.1727555 -1.9308622 -8.2468672 -1.2187445 -1.9230694 -8.2373104 -1.269027 -1.922611 -8.2332125 -1.3201625 -1.9235278 -8.207675 -1.3677765 -1.9194022 -8.226943 -1.4229217 -1.926049 -8.2496748 -1.4790415 -1.9336126 -8.2088623 -1.5237718 -1.926049 -8.199358 -1.5741117 -1.926049 -8.2325106 -1.6329125 -1.936363 -8.2080317 -1.6804676 -1.932925 -8.1804237 -1.7271808 -1.9287994 -8.1972542 -1.7833419 -1.9354463 -8.1187181 -1.8185034 -1.919173 -8.077054 -1.8612916 -1.9118385 -8.084425 -1.9153035 -1.9164226 -8.068738 -1.9639518 -1.9155058 -7.8837194 -1.9702438 -1.8735621 -7.7705936 -1.9927136 -1.8490376 -7.5040474 -1.9735234 -1.7871536 -7.3931131 -1.9929339 -1.7630875 -7.3084989 -2.018312 -1.7454391 -7.2219806 -2.0421979 -1.7273322 -7.0877609 -2.0513008 -1.6975362 -6.977973 -2.0660179 -1.6736994 -7.0033617 -2.1203575 -1.6830966 -6.8935118 -2.1333666 -1.6592598 -6.6129985 -2.0911193 -1.59325 -6.550024 -2.1155047 -1.5808733 -6.4777565 -2.1361487 -1.5662044 -6.2615681 -2.1075554 -1.5157803 -5.9382691 -2.0394077 -1.4385397 -5.8760362 -2.0584311 -1.426163 -5.8403783 -2.0862627 -1.4204329 -6.3524742 -2.3132014 -1.551994 -5.7258158 -2.1249311 -1.3982005 -5.3949084 -2.0398986 -1.3182095 -5.2705617 -2.0299399 -1.290018 -5.189136 -2.0352349 -1.2725987 -5.1349664 -2.0504351 -1.2620555 -5.0230937 -2.0415957 -1.2368435 -4.8692498 -2.0139797 -1.200859 -4.7939963 -2.0173955 -1.1848149 -4.8343253 -2.0693684 -1.1983378 -4.552 -1.9816774 -1.1291193 -4.5023708 -1.9930257 -1.1194929 -4.4367967 -1.9966511 -1.1057408 -4.3837423 -2.0052154 -1.0951976 -4.3263383 -2.0111532 -1.0835084 -4.2883916 -2.0256073 -1.0768616 -4.2372675 -2.0333562 -1.0667768 -4.1617112 -2.0286145 -1.0502744 -4.1326103 -2.0459082 -1.0459195 -4.1399827 -2.0812809 -1.0511911 -4.1141291 -2.1000073 -1.0477531 -4.0899305 -2.1193907 -1.0447735 -4.0802951 -2.1462584 -1.0456903 -4.07306 -2.1744626 -1.0472947 -4.0682001 -2.2040496 -1.0495868 -4.0435104 -2.2228751 -1.0466071 -4.0365963 -2.2514362 -1.0484407 -3.9803452 -2.252198 -1.0369807 -4.064384 -2.3327768 -1.063568 -4.0575652 -2.3620782 -1.0656308 -3.9826422 -2.3513055 -1.0491283 -3.9798324 -2.3826973 -1.0523372 -3.944335 -2.3944461 -1.0466071 -3.9312265 -2.4196234 -1.0470655 -3.9518175 -2.4658537 -1.0569211 -3.951421 -2.4994199 -1.0610467 -3.9319131 -2.5209918 -1.0599008 -3.9024947 -2.5360546 -1.0560043 -3.9023066 -2.5701232 -1.0603591 -3.9204686 -2.6167119 -1.0699855 -3.9067578 -2.6423538 -1.0706731 -3.894486 -2.6690264 -1.0718192 -3.8676412 -2.6856558 -1.0688396 -3.9052279 -2.7474174 -1.0844252 -3.8550031 -2.7476025 -1.0747987 -3.778091 -2.7279046 -1.0573795 -3.7966387 -2.7768908 -1.0676936 -3.8217654 -2.8314209 -1.0800704 -3.7404754 -2.8069155 -1.061276 -3.6084824 -2.7426515 -1.0273542 -3.6656373 -2.8217342 -1.0493575 -3.6229198 -2.8244257 -1.0417939 -3.6169817 -2.855649 -1.0452319 -3.5841854 -2.865633 -1.0406479 -3.6119289 -2.9243171 -1.0544 -3.611232 -2.9606168 -1.0596715 -3.586257 -2.9771242 -1.0576087 -3.5790997 -3.008467 -1.0610467 -3.5679858 -3.0366793 -1.0633388 -3.6104922 -3.111249 -1.0823624 -3.5972021 -3.1384628 -1.084196 -3.5705814 -3.1540322 -1.0819039 -3.5272164 -3.1544707 -1.0743403 -3.5222268 -3.1891191 -1.0789244 -3.5198145 -3.226455 -1.0844252 -3.5898573 -3.3314114 -1.1133044 -3.4168136 -3.2100935 -1.0640264 -3.3737755 -3.2088628 -1.0564628 -3.2299047 -3.1100137 -1.0158943 -3.2790747 -3.196352 -1.0383559 -3.17556 -3.1336915 -1.0106226 -3.1604044 -3.1572449 -1.0119978 -3.1259146 -3.1613512 -1.0069554 -3.1567924 -3.2319965 -1.0239162 -3.165966 -3.2814243 -1.0337719 -3.1498015 -3.3050158 -1.0351471 -3.1194541 -3.3136504 -1.0317091 -3.072547 -3.3042181 -1.022541 -3.0528734 -3.3237255 -1.0227703 -3.0337303 -3.3438368 -1.0232286 -3.0488875 -3.4022546 -1.0358347 -2.9711757 -3.3567626 -1.0156651 -3.0312548 -3.4672577 -1.0445443 -3.0309181 -3.5101023 -1.0521079 -3.0200622 -3.5412233 -1.0560043 -2.9926326 -3.5529876 -1.0539415 -2.9601922 -3.5585625 -1.0500451 -2.9438632 -3.5834277 -1.0521079 -2.9224336 -3.6021793 -1.0523372 -2.9002759 -3.620043 -1.0523372 -2.8743851 -3.6331909 -1.050962 -2.8616271 -3.6630313 -1.0546291 -2.8272057 -3.6651077 -1.0500451 -2.8005347 -3.676966 -1.0484407 -2.7551022 -3.6637421 -1.0395019 -2.7105186 -3.6508818 -1.0307922 -2.6897926 -3.6697996 -1.0314798 -2.6826327 -3.7075255 -1.0376683 -2.6575699 -3.7207479 -1.0367515 -2.6386163 -3.7425528 -1.0383559 -2.676769 -3.8465533 -1.063568 -2.6244571 -3.8211851 -1.0516496 -2.6151628 -3.8581641 -1.0576087 -2.6185033 -3.9145887 -1.0690688 -2.5703018 -3.8940272 -1.0587547 -2.5293589 -3.883626 -1.0514203 -2.4607484 -3.8294711 -1.0319383 -2.426259 -3.8272347 -1.0271251 -2.3758881 -3.7991376 -1.0152067 -2.3857546 -3.8674896 -1.0301046 -2.4414244 -4.0126028 -1.0660892 -2.3386159 -3.8973098 -1.0303339 -2.3508503 -3.9727349 -1.0470655 -2.2817824 -3.9105825 -1.0262083 -2.2679393 -3.9422269 -1.0310215 -2.2446682 -3.9577618 -1.0314798 -2.2193913 -3.9697611 -1.0310215 -2.1926425 -3.9790421 -1.0298755 -2.1830537 -4.0197916 -1.0372099 -2.1661565 -4.0476999 -1.0411063 -2.1321981 -4.0436954 -1.0365223 -2.1136293 -4.0687947 -1.0397311 -2.0881803 -4.0808206 -1.0395019 -2.0595963 -4.0866032 -1.0376683 -2.0357811 -4.1017795 -1.0383559 -2.0028806 -4.0984526 -1.0342302 -1.9532145 -4.0597925 -1.0209366 -1.9132664 -4.0400324 -1.0126854 -1.9151748 -4.1090403 -1.0275835 -1.8968259 -4.1357546 -1.0314798 -1.8590003 -4.119812 -1.0243747 -1.8048533 -4.0661974 -1.0076431 -1.7970082 -4.1164451 -1.0177279 -1.7882296 -4.165854 -1.0275835 -1.7425723 -4.12922 -1.0154358 -1.7283939 -4.1668062 -1.0223119 -1.7351345 -4.2566509 -1.0424815 -1.672425 -4.1759562 -1.0193323 -1.6603141 -4.2205586 -1.0280418 -1.1863515 -3.0712156 -0.73535299 -1.1671393 -3.077527 -0.73512375 -0 -0 -0 -1.4920936 -4.084497 -0.98403543 -1.3175535 -3.6766655 -0.87974924 -1.2846384 -3.6552954 -0.87241483 -1.4918331 -4.3293686 -1.0383559 -1.4677328 -4.345818 -1.0401895 -1.447769 -4.3750715 -1.0452319 -1.4235986 -4.3922062 -1.0472947 -1.0361381 -3.2652864 -0.76675344 -1.0345672 -3.3310733 -0.78142226 -1.0220356 -3.363435 -0.78783989 -0.99333453 -3.3425853 -0.78119308 -0.96791631 -3.3317926 -0.77706742 -0.94506139 -3.3292418 -0.77500463 -0.86217606 -3.1098659 -0.71999657 -0.84053403 -3.1057022 -0.71770453 -0.81798106 -3.0976257 -0.71449572 -1.1438149 -4.4410734 -1.0399603 -1.1198623 -4.461225 -1.0431691 -1.0843732 -4.4349198 -1.0351471 -1.0562388 -4.4377022 -1.0342302 -1.025036 -4.427031 -1.0301046 -1.0017018 -4.4503298 -1.0342302 -0.97125632 -4.4421291 -1.0307922 -0.76870996 -3.6224866 -0.83207554 -0.74529046 -3.6214149 -0.83070034 -0.91389596 -4.5823927 -1.0603591 -0.87616259 -4.5382171 -1.0484407 -0.85223222 -4.5645576 -1.0534831 -0.82576424 -4.5783224 -1.0555459 -0.79364926 -4.560288 -1.0500451 -0.76500857 -4.5612321 -1.0491283 -0.73064393 -4.5264421 -1.0397311 -0.69628745 -4.4885182 -1.0296463 -0.67762357 -4.5523973 -1.0438567 -0.64816552 -4.5458694 -1.0413355 -0.61841846 -4.5362587 -1.0381267 -0.59094983 -4.5428634 -1.0388143 -0.56713474 -4.5792475 -1.0466071 -0.53914011 -4.5836082 -1.0468363 -0.51165259 -4.5926342 -1.0482115 -0.48193431 -4.5811667 -1.0447735 -0.4512243 -4.5578842 -1.0385851 -0.42414948 -4.5702591 -1.0408771 -0.39685568 -4.5815034 -1.0429399 -0.36561131 -4.5450425 -1.0337719 -0.33670607 -4.5336108 -1.0305631 -0.30914691 -4.5394759 -1.0314798 -0.28176948 -4.5490594 -1.0333135 -0.25341728 -4.5429277 -1.0314798 -0.22481261 -4.5298147 -1.0280418 -0.19714107 -4.5340261 -1.0287294 -0.16957191 -4.5419593 -1.0303339 -0.14103028 -4.5215101 -1.0252914 -0.11345539 -4.5291018 -1.0268959 -0.085478306 -4.5199809 -1.0246038 -0.058143198 -4.5515656 -1.0319383 -0.030004753 -4.5206895 -1.0246038 -0.0022628913 -4.5159216 -1.0234579 --0.025505716 -4.5265574 -1.025979 --0.05335927 -4.5331287 -1.0275835 --0.081415832 -4.5463414 -1.0307922 --0.10956658 -4.5564604 -1.0333135 --0.13725887 -4.546946 -1.0312507 --0.16557887 -4.5576911 -1.0340011 --0.19448934 -4.5789566 -1.0392727 --0.22248726 -4.5757327 -1.0388143 --0.25289798 -4.6170464 -1.0488992 --0.28453338 -4.669816 -1.0617343 --0.31324655 -4.6689534 -1.0619636 --0.3418178 -4.6659727 -1.0617343 --0.37036422 -4.6628175 -1.0615051 --0.39647952 -4.631362 -1.0546291 --0.42497844 -4.6298113 -1.0548583 --0.45119718 -4.6048355 -1.0495868 --0.47873795 -4.5952029 -1.0479823 --0.50212228 -4.5486412 -1.0376683 --0.5346415 -4.585115 -1.0470655 --0.87001359 -7.0849881 -1.6409237 --0.90848953 -7.0409012 -1.6317557 --0.94332707 -6.9734597 -1.6170869 --0.99196053 -7.0089831 -1.6269425 --1.0353749 -7.0056534 -1.6276301 --1.0767115 -6.9885864 -1.625109 --1.1226537 -7.0010705 -1.6296929 --1.1647905 -6.9892492 -1.628547 --1.2114683 -7.0040312 -1.6338185 --1.257169 -7.0117955 -1.6374857 --1.2962617 -6.9828949 -1.6324433 --1.3359644 -6.958559 -1.628547 --1.3765535 -6.9397278 -1.6260257 --1.4228176 -6.9492693 -1.6303805 --1.4634204 -6.9308844 -1.6280885 --1.5057131 -6.9208236 -1.6278594 --1.5496391 -6.9181032 -1.6294637 --1.5857211 -6.8809571 -1.6228169 --1.6339694 -6.8966718 -1.6290053 --1.6730337 -6.8732748 -1.6257966 --1.7177713 -6.8732677 -1.6283177 --1.7475835 -6.8145113 -1.6166285 --1.8017401 -6.8507295 -1.6280885 --1.8498205 -6.8621011 -1.6335893 --1.8981082 -6.8731403 -1.6390902 --1.942099 -6.8679209 -1.6406945 --1.9777099 -6.8334346 -1.6351937 --2.0223646 -6.8305044 -1.6374857 --2.0662119 -6.8244882 -1.6390902 --2.114377 -6.8321395 -1.6441325 --2.1542046 -6.8125405 -1.6425282 --2.1917775 -6.7862263 -1.6393193 --2.2345948 -6.7763476 -1.6402361 --2.2727165 -6.7523608 -1.6377149 --2.3201115 -6.7557807 -1.6420697 --1.3319176 -3.8016927 -0.90862846 --1.3555467 -3.7943654 -0.9088577 --2.4280863 -6.6680274 -1.6310681 --2.486901 -6.7013702 -1.6432158 --2.5241868 -6.6759696 -1.6406945 --2.5686002 -6.6694393 -1.6429865 --2.6052105 -6.6426787 -1.6402361 --2.6502509 -6.6374164 -1.6429865 --2.6942255 -6.6291456 -1.6450493 --2.727783 -6.5953989 -1.6406945 --2.7693326 -6.5812292 -1.6413821 --2.8131092 -6.5721669 -1.6434449 --2.8689206 -6.5904822 -1.6526129 --1.3781021 -3.1129167 -0.761711 --1.3987741 -3.1079528 -0.76262784 --2.9832666 -6.5223951 -1.6489457 --3.0207696 -6.4986711 -1.6475705 --1.6207594 -3.4311068 -0.85362041 --1.6337819 -3.404423 -0.84926558 --1.6444061 -3.3733342 -0.84376478 --1.6607556 -3.3544569 -0.84147274 --1.6839297 -3.349422 -0.84284794 --1.7088742 -3.3476965 -0.84513998 --1.7360997 -3.3501122 -0.84857798 --1.7656842 -3.3566267 -0.85316199 --3.3954859 -6.3606744 -1.6578846 --3.4117339 -6.2977819 -1.6466538 --3.4690659 -6.3108501 -1.6558218 --3.5048788 -6.2843451 -1.6544466 --3.5433729 -6.2627211 -1.6544466 --3.5783422 -6.234952 -1.6528422 --3.621428 -6.2212906 -1.6551342 --3.6441946 -6.1729674 -1.648029 --3.7064989 -6.1914153 -1.6592598 --3.7368433 -6.1560745 -1.6558218 --3.7776067 -6.1380038 -1.657197 --3.8167434 -6.1171865 -1.6578846 --3.8630505 -6.1076379 -1.661781 --3.90308 -6.0879169 -1.6629269 --3.9371793 -6.0589561 -1.6615517 --3.9673231 -6.0241156 -1.6585722 --3.9928653 -5.9826565 -1.653759 --2.0965471 -3.0996282 -0.84124357 --2.1177273 -3.0899177 -0.84216034 --2.1410878 -3.083262 -0.84399396 --4.1827254 -5.9457607 -1.6718658 --4.2050071 -5.9001665 -1.6661358 --4.2360029 -5.8671508 -1.664073 --4.2552609 -5.8182635 -1.6574261 --4.3285408 -5.842885 -1.6723242 --4.3526268 -5.8006434 -1.6677402 --4.3881373 -5.7738271 -1.6677402 --4.4234819 -5.7467933 -1.6677402 --4.4706283 -5.7348976 -1.6723242 --4.5039239 -5.7050662 -1.6716366 --4.5388446 -5.6773233 -1.6716366 --4.5791063 -5.6561756 -1.6736994 --4.6174283 -5.6324892 -1.6750746 --4.6574965 -5.6107922 -1.6771374 --4.7143812 -5.6089344 -1.6853886 --4.7436619 -5.5739717 -1.683555 --4.7752323 -5.5418105 -1.6826382 --4.8181043 -5.522675 -1.685847 --4.8332138 -5.4718499 -1.6792002 --4.8628049 -5.4377375 -1.677825 --4.9058776 -5.4186215 -1.681263 --4.944952 -5.394876 -1.6833258 --4.9859061 -5.3729954 -1.6860762 --5.0247784 -5.3486862 -1.688139 --5.0608563 -5.321281 -1.689285 --5.0913868 -5.2880244 -1.6885974 --5.1210198 -5.2538962 -1.6876806 --5.1627316 -5.2320757 -1.6908894 --5.1844196 -5.1899691 -1.6874514 --5.189868 -5.132051 -1.6787418 --5.2108159 -5.0899072 -1.6753038 --5.2538562 -5.0693288 -1.6792002 --5.2524519 -5.006103 -1.6686569 --5.366694 -5.0525174 -1.6957027 --5.3797755 -5.0029202 -1.6899726 --5.3745308 -4.9368906 -1.6785126 --5.3967929 -4.896625 -1.6759914 --5.4028163 -4.8419795 -1.6684278 --5.4331532 -4.8093824 -1.6686569 --5.4889402 -4.7990208 -1.6769081 --5.4910259 -4.7417111 -1.6684278 --5.5096493 -4.6990857 -1.6652189 --5.5741115 -4.6952929 -1.6762205 --5.636488 -4.6890173 -1.6865346 --5.6734257 -4.6611419 -1.6890558 --5.7170362 -4.6385088 -1.6936399 --5.7089295 -4.5741262 -1.6826382 --5.7689476 -4.5643787 -1.6922646 --5.8022146 -4.5330906 -1.693869 --5.819901 -4.4896736 -1.6908894 --5.8419194 -4.4497499 -1.689285 --5.8667789 -4.4120655 -1.6885974 --5.8718591 -4.3597364 -1.6821798 --5.9283304 -4.3454938 -1.6908894 --5.9525166 -4.3073244 -1.6902018 --5.9550729 -4.2537451 -1.6833258 --5.9739017 -4.2120767 -1.681263 --6.0020308 -4.1770105 -1.6819506 --5.9962573 -4.1186094 -1.6730118 --6.0141644 -4.0768237 -1.670949 --6.031785 -4.0349731 -1.6688862 --6.0564299 -3.9978871 -1.6688862 --6.083293 -3.962244 -1.6695738 --6.1173167 -3.9311585 -1.6723242 --6.1503649 -3.8992829 -1.6748453 --6.1485925 -3.84547 -1.6677402 --6.161303 -3.8010259 -1.6647606 --6.1720371 -3.755559 -1.6613226 --6.1866183 -3.7126083 -1.6590306 --6.1866655 -3.6611919 -1.6528422 --6.170342 -3.6005936 -1.6422989 --6.1720705 -3.5510142 -1.6367981 --6.2149091 -3.5250831 -1.6425282 --6.2610593 -3.5006599 -1.6491749 --6.262814 -3.4513702 -1.6439034 --6.3052568 -3.4244926 -1.6496333 --6.3407393 -3.393549 -1.6535298 --6.3726349 -3.360482 -1.6565094 --6.4302759 -3.3406148 -1.666365 --6.4185925 -3.2846878 -1.6578846 --6.4351492 -3.2434895 -1.6569678 --6.4313898 -3.1922572 -1.6507794 --6.4561028 -3.1552997 -1.6521546 --6.4630623 -3.1097171 -1.6489457 --6.4925776 -3.0750024 -1.6516961 --6.517499 -3.0379858 -1.6533005 --6.5298238 -2.9950969 -1.6516961 --6.5436425 -2.9529722 -1.6505501 --6.5660868 -2.9147403 -1.6516961 --6.5651145 -2.8662169 -1.6468829 --6.4582534 -2.7725 -1.6150241 --6.6921592 -2.8244262 -1.6704906 --6.7336388 -2.7933824 -1.676679 --6.7776918 -2.7630382 -1.683555 --6.8098788 -2.7275524 -1.6874514 --6.8346386 -2.6889241 -1.6895142 --6.8891425 -2.6616726 -1.6991407 --6.9608598 -2.640413 -1.7131219 --6.9696326 -2.5949349 -1.7112882 --7.0037088 -2.5588028 -1.7158723 --7.0431008 -2.5243206 -1.7218314 --7.0850873 -2.4904196 -1.7284783 --7.1039157 -2.4481683 -1.729395 --7.1603017 -2.4185526 -1.7397091 --7.163918 -2.3709018 -1.7369587 --7.203331 -2.3350055 -1.7431471 --7.2564883 -2.3031323 -1.7527735 --7.2844267 -2.2628963 -1.7562115 --7.3289075 -2.2274997 -1.7637751 --7.3321738 -2.1794372 -1.761254 --7.3080206 -2.1235406 -1.7520859 --7.2647314 -2.0627046 -1.7383339 --7.3447847 -2.0368221 -1.7548363 --7.4022427 -2.0039284 -1.7658379 --7.5273294 -1.9883076 -1.793342 --7.6430736 -1.9687976 -1.818554 --7.7579136 -1.9477038 -1.8435369 --7.9644923 -1.9477073 -1.8907522 --8.127799 -1.9348758 -1.9274242 --8.2248621 -1.9047368 -1.9480523 --8.2496891 -1.8572277 -1.951261 --8.2866039 -1.8121895 -1.9574494 --8.3023281 -1.7623205 -1.9585955 --8.3244257 -1.713701 -1.9613459 --8.3596029 -1.6675429 -1.9673051 --8.375411 -1.6173255 -1.9686803 --8.3220263 -1.5541084 -1.9535531 --8.3017111 -1.4976575 -1.9464478 --8.3203335 -1.4483608 -1.9487399 --8.3549824 -1.4016303 -1.9549283 --8.3663082 -1.3508043 -1.9556159 --8.3802109 -1.3003399 -1.9569911 --8.3851433 -1.2484653 -1.9563035 --8.3830099 -1.1956167 -1.9540114 --8.3892231 -1.1440254 -1.9537822 --8.3960848 -1.0925286 -1.9537822 --8.3968344 -1.0402722 -1.952407 --8.3982258 -0.98816174 -1.951261 --8.4031639 -0.93650472 -1.9510318 --8.4223042 -0.88635314 -1.9542407 --8.4624557 -0.83811337 -1.9624919 --8.4247932 -0.78221148 -1.952407 --8.4313736 -0.73067141 -1.9528655 --8.4492817 -0.68001753 -1.9560742 --8.4329109 -0.62664521 -1.951261 --8.4657307 -0.57687664 -1.958137 --8.4555101 -0.52407742 -1.9549283 --8.4556503 -0.47202259 -1.9542407 --8.4476938 -0.41959915 -1.9517194 --8.4491367 -0.36771479 -1.9514903 --8.4376163 -0.31535533 -1.9482814 --8.4559317 -0.2640945 -1.9521779 --8.0873137 0.59273446 -1.9741917 --8.0806217 0.64211506 -1.9734684 --8.0707283 0.69118702 -1.9720221 --8.0344429 0.73776197 -1.9640665 --8.0432863 0.78837383 -1.9674416 --8.0189924 0.835697 -1.9626201 --7.9760938 0.88072526 -1.9532182 --7.9821067 0.93099993 -1.9561111 --7.9675746 0.97889334 -1.9539413 --7.9489059 1.0261459 -1.9508075 --7.9414983 1.0747699 -1.9505663 --7.9193797 1.1212987 -1.9467092 --7.8989096 1.1678807 -1.9433341 --7.9155741 1.2200249 -1.949361 --7.9002733 1.2673402 -1.9474324 --7.9114938 1.3189862 -1.9522538 --7.8745632 1.3625371 -1.9450216 --7.866055 1.4108289 -1.9450216 --7.8582044 1.4592448 -1.9452627 --7.8443375 1.5065186 -1.9440573 --7.8511286 1.5578356 -1.9481556 --7.8414221 1.6059799 -1.9481556 --7.7991362 1.6472402 -1.939959 --7.778451 1.6927921 -1.9373072 --7.7641296 1.7396386 -1.936343 --7.7372332 1.7835374 -1.9322447 --7.7431417 1.8350093 -1.936584 --7.726079 1.8811074 -1.9351375 --7.7285137 1.932011 -1.9387537 --7.7108731 1.9779482 -1.9373072 --7.675128 2.019048 -1.9312804 --7.7197523 2.0815241 -1.9459859 --7.7030931 2.1278183 -1.9450216 --7.6656127 2.1681724 -1.9387537 --7.6456394 2.2132769 -1.9370662 --7.6412201 2.2629051 -1.9394768 --7.6206899 2.3077784 -1.9377893 --7.6036048 2.3536332 -1.9370662 --7.5621867 2.3917527 -1.9300749 --7.5492158 2.4387052 -1.9305571 --7.5295019 2.4834597 -1.9293517 --7.5196404 2.531472 -1.9307982 --7.5177336 2.5822952 -1.9344143 --7.4989996 2.6274114 -1.9336911 --7.490962 2.6763148 -1.9358608 --7.4743991 2.7222281 -1.9358608 --7.4520965 2.7660117 -1.9344143 --7.4540462 2.8188968 -1.9394768 --7.411253 2.8548093 -1.9327267 --7.388176 2.898103 -1.9312804 --7.3594398 2.9390604 -1.9283874 --7.3385706 2.9830651 -1.9276642 --7.319232 3.0276666 -1.9274231 --7.2915721 3.0687535 -1.9250124 --7.2913399 3.1214597 -1.9300749 --7.3076406 3.1816416 -1.939718 --7.2480488 3.2087355 -1.9288696 --7.2326488 3.2551405 -1.9300749 --7.2169518 3.3014772 -1.9312804 --7.1895185 3.3424234 -1.9293517 --7.1583452 3.3814986 -1.9264588 --7.1383367 3.4257777 -1.9266999 --7.1136928 3.4678116 -1.9257356 --7.0801053 3.5053649 -1.9223605 --7.0706019 3.5548465 -1.9257356 --7.0512495 3.599488 -1.9264588 --6.9859505 3.6203523 -1.9144051 --6.9773464 3.6703804 -1.9182622 --6.911891 3.6902628 -1.9062085 --6.9514046 3.7663634 -1.923807 --6.9961944 3.8463602 -1.9430931 --6.9538169 3.8788121 -1.9377893 --6.9155283 3.9132793 -1.9336911 --6.8821287 3.9503226 -1.9310392 --6.8493738 3.9875922 -1.9286286 --6.8114071 4.0216475 -1.9247713 --6.7766113 4.0573816 -1.9218785 --6.7441225 4.0943518 -1.9197087 --6.7073035 4.1285319 -1.9163337 --6.6703191 4.162415 -1.9129586 --6.6413732 4.201189 -1.9119943 --6.6122026 4.2397647 -1.9110301 --6.5925727 4.2844882 -1.9129586 --6.5629177 4.3227234 -1.9119943 --6.5403061 4.3656058 -1.9131997 --6.518219 4.4089174 -1.9146461 --6.4926443 4.4499269 -1.9151284 --6.4492769 4.4786077 -1.9103068 --6.4296117 4.5236807 -1.9127176 --6.4072652 4.5669909 -1.9144051 --6.3980041 4.6198578 -1.9201909 --6.3648372 4.6555896 -1.9187444 --6.3166585 4.680109 -1.9127176 --6.2854943 4.7170315 -1.9119943 --6.2363467 4.7402372 -1.9057264 --6.2202158 4.7884798 -1.9098246 --6.1539831 4.7979078 -1.8982531 --6.1244278 4.8355775 -1.8982531 --6.1090422 4.884583 -1.9028335 --6.082727 4.9250293 -1.9040389 --6.0546441 4.9641061 -1.904762 --6.0285506 5.0048833 -1.9062085 --5.9999561 5.0436535 -1.9069318 --5.9666791 5.078486 -1.9062085 --5.9155583 5.0978923 -1.8996994 --5.8731995 5.1245208 -1.8960834 --5.8205552 5.1418252 -1.8890922 --5.7823863 5.1716189 -1.8869225 --5.7411938 5.1985316 -1.8837886 --5.7027507 5.2277579 -1.8816189 --5.6819463 5.2732158 -1.8854761 --5.7060595 5.3611517 -1.904762 --5.6843061 5.4067664 -1.9086193 --5.6636057 5.4536619 -1.9129586 --5.603632 5.4625635 -1.9037977 --5.5644836 5.4913893 -1.9018692 --5.5739322 5.5686488 -1.9170569 --5.5246491 5.5875597 -1.9117533 --5.4950066 5.626214 -1.9134408 --5.451623 5.650744 -1.9103068 --5.4208646 5.6883039 -1.9117533 --5.3845291 5.7200451 -1.9112711 --5.3433838 5.7465787 -1.9091015 --5.3145866 5.7864056 -1.9115121 --5.2959332 5.8375974 -1.9177802 --5.2794418 5.8916688 -1.9250124 --5.227757 5.9065084 -1.9192266 --5.2035513 5.9523582 -1.923807 --5.1770768 5.9959297 -1.9276642 --5.1200409 6.0039492 -1.9199498 --5.08248 6.0345097 -1.9197087 --5.0484595 6.0693126 -1.9209141 --5.0185151 6.1091752 -1.923807 --4.9833808 6.1428685 -1.9247713 --4.9644022 6.1968131 -1.9322447 --4.9118371 6.2088881 -1.9264588 --4.8861918 6.2549725 -1.9315214 --4.8566093 6.2963643 -1.9351375 --4.8008351 6.3036523 -1.9281464 --4.7620664 6.3329911 -1.9281464 --4.7433615 6.3893676 -1.936584 --4.7086563 6.4246154 -1.9385126 --4.6782475 6.4659677 -1.9423698 --4.6266422 6.4779649 -1.9373072 --4.5795393 6.4959183 -1.9341732 --4.5384865 6.5223022 -1.9336911 --4.5000286 6.5524273 -1.9344143 --4.4749818 6.6024122 -1.9411644 --4.4354649 6.6313596 -1.9416466 --4.3946919 6.6584501 -1.9416466 --4.3569312 6.6901703 -1.9430931 --4.3299603 6.7388248 -1.949602 --4.2677507 6.7324758 -1.939959 --4.234592 6.7717023 -1.9438162 --4.2087531 6.8231664 -1.9512895 --4.1718507 6.8571539 -1.9537003 --4.1217098 6.8693066 -1.9498432 --4.0908475 6.9136801 -1.9553878 --4.0434594 6.9302673 -1.9529771 --3.9897323 6.9355969 -1.9474324 --3.9466224 6.9591026 -1.9471912 --3.9014807 6.9789519 -1.9459859 --3.869823 7.0231614 -1.9517717 --3.8312869 7.0553031 -1.9541825 --3.7696133 7.0444484 -1.9445394 --3.7493966 7.1112318 -1.9568343 --3.7271597 7.175447 -1.9684058 --3.6649423 7.1627555 -1.9585218 --3.6060779 7.1556392 -1.9503253 --3.5621037 7.1776309 -1.9503253 --3.524385 7.2124329 -1.9539413 --3.4994121 7.2741556 -1.9650308 --3.4422557 7.2691746 -1.9577986 --3.4020963 7.2998362 -1.9604504 --3.363308 7.333807 -1.9640665 --3.3158512 7.3489976 -1.9626201 --3.2714832 7.3709793 -1.9631022 --3.2157147 7.3668971 -1.9565933 --3.1876717 7.4266243 -1.9674416 --3.1477005 7.4594564 -1.9710578 --3.097039 7.4669757 -1.9679238 --3.0526288 7.4894333 -1.968888 --3.0026498 7.4981117 -1.9662362 --2.9501934 7.5001369 -1.9618969 --2.9177516 7.5534067 -1.9712988 --2.8655014 7.5557404 -1.9672005 --2.8238244 7.5859146 -1.9705756 --2.7732308 7.5921588 -1.9676827 --2.7285576 7.6145139 -1.9691291 --2.684679 7.6393538 -1.9712988 --2.6387024 7.6584358 -1.9720221 --2.5975587 7.6919537 -1.9766024 --2.5436087 7.6874757 -1.9712988 --2.502373 7.7214036 -1.9761204 --2.447613 7.7134852 -1.9700934 --2.3996625 7.7265048 -1.9696113 --2.3609512 7.7698708 -1.9770846 --2.3124027 7.7814198 -1.9763614 --2.2678607 7.8066463 -1.9792542 --2.2246852 7.8372207 -1.9835936 --2.1718903 7.8338885 -1.9792542 --2.1235282 7.8461308 -1.9790132 --2.0743546 7.8552594 -1.9780489 --2.0309546 7.8866367 -1.9828705 --1.9752051 7.8697686 -1.9753971 --1.9284922 7.8883395 -1.9770846 --1.8784821 7.8934145 -1.9753971 --1.8343887 7.9237027 -1.9802185 --1.7842447 7.9281812 -1.978531 --1.7374289 7.9475131 -1.9807007 --1.6874233 7.9523277 -1.9792542 --1.638597 7.962532 -1.9792542 --1.5868642 7.9581594 -1.9756382 --1.5376364 7.9658408 -1.9751559 --1.4970938 8.0199661 -1.9864866 --1.444242 8.0089436 -1.981424 --1.3977326 8.0329533 -1.9852811 --1.3549919 8.0806217 -1.9951652 --1.2951884 8.025547 -1.9792542 --1.2506756 8.0640326 -1.9869686 --1.2070235 8.1109133 -1.9968528 --1.1514865 8.0778131 -1.9867276 --1.1045189 8.1039591 -1.9915491 --1.0555233 8.1163578 -1.9929955 --1.0035583 8.1053448 -1.9886562 --0.9534663 8.1084585 -1.9879329 --0.90294474 8.1074038 -1.9862455 --0.85145843 8.0963831 -1.9821472 --0.80567706 8.1410532 -1.9920312 --0.75356102 8.1226511 -1.9862455 --0.70303851 8.1193867 -1.9843168 --0.65289503 8.1196775 -1.9833525 --0.60420877 8.1390162 -1.9872098 --0.55504656 8.1541901 -1.9901026 --0.50500298 8.1574421 -1.9901026 --0.45445535 8.1516657 -1.9879329 --0.40371007 8.139761 -1.9843168 --0.3549335 8.1692343 -1.9910669 --0.30361205 8.1392536 -1.9831115 --0.25282237 8.113802 -1.9763614 --0.20440796 8.1705027 -1.9901026 --0.15399814 8.1570473 -1.9864866 --0.10401789 8.163662 -1.9879329 --0.053962283 8.1699696 -1.9893794 --0.0038246077 8.149766 -1.9843168 -0.046034917 8.124403 -1.9780489 -0.096232213 8.1530809 -1.9852811 -0.14625676 8.1523371 -1.9852811 -0.19674581 8.1706905 -1.9901026 -0.2461991 8.1470184 -1.984558 -0.29703334 8.1686306 -1.9903437 -0.34719089 8.1676235 -1.9905849 -0.39791489 8.1779413 -1.9937187 -0.44542378 8.126894 -1.981665 -0.49255809 8.0794477 -1.9705756 -0.54596651 8.1334038 -1.984799 -0.59458244 8.1124783 -1.9804597 -0.64380938 8.1019058 -1.9787722 -0.69268012 8.0881329 -1.9763614 -0.74113947 8.071167 -1.9732274 -0.79282993 8.0886822 -1.9787722 -0.84113663 8.0711174 -1.9756382 -0.89256406 8.0831671 -1.9799775 -0.94349551 8.0891056 -1.9828705 -0.98813522 8.0427084 -1.9727453 -1.0360974 8.0259056 -1.9700934 -1.0833695 8.0049715 -1.9664773 -1.1353267 8.0183525 -1.9715399 -1.1911832 8.0563574 -1.9828705 -1.2423694 8.0604067 -1.9857633 -1.2918037 8.0526323 -1.9857633 -1.3365571 8.0167933 -1.9787722 -1.383238 7.9940977 -1.9751559 -1.4272902 7.9577579 -1.9681648 -1.4872628 8.0089626 -1.9833525 -1.5372928 8.0044518 -1.984558 -1.584488 7.9853492 -1.9821472 -1.6348195 7.982132 -1.9838347 -1.6735308 7.9235244 -1.9715399 -1.7231498 7.9178481 -1.9727453 -1.7770085 7.9308009 -1.9787722 -1.8129857 7.8648992 -1.9647897 -1.863673 7.8640141 -1.9674416 -1.9203904 7.8873191 -1.9763614 -1.9609782 7.8443179 -1.9684058 -2.0119684 7.8434181 -1.9712988 -2.0489399 7.788691 -1.9604504 -2.1068037 7.8134527 -1.9700934 -2.1580675 7.8125391 -1.9732274 -2.1998854 7.7776723 -1.9676827 -2.2470269 7.7621632 -1.9672005 -2.2904766 7.734272 -1.9635844 -2.3511169 7.7637262 -1.9749149 -2.3832059 7.6990924 -1.9618969 -2.4374287 7.7065315 -1.9676827 -2.4676566 7.6387925 -1.9539413 -2.519043 7.637332 -1.9575576 -2.5807266 7.6658788 -1.9691291 -2.6198297 7.6269541 -1.9631022 -2.6659362 7.6089039 -1.9626201 -2.7145333 7.5978861 -1.9640665 -2.7534602 7.5601139 -1.9585218 -2.7923636 7.5230613 -1.9532182 -2.8446534 7.5221248 -1.9575576 -2.8931975 7.5108681 -1.9592451 -2.9342654 7.4803262 -1.95587 -2.9743476 7.4477611 -1.9520128 -3.0240116 7.43926 -1.9546646 -3.0629213 7.4044232 -1.9503253 -3.116205 7.404274 -1.9553878 -3.1432381 7.3421917 -1.9438162 -3.1944306 7.3370032 -1.9476734 -3.2401755 7.3190389 -1.9481556 -3.2937889 7.3184886 -1.9534593 -3.3394399 7.2999058 -1.9539413 -3.368207 7.2449579 -1.9445394 -3.4080367 7.2145028 -1.9418876 -3.4556003 7.2004547 -1.9438162 -3.5201352 7.2209868 -1.9553878 -3.5484388 7.1670737 -1.9464681 -3.5914762 7.1434317 -1.9459859 -3.636564 7.1238537 -1.9467092 -3.6685932 7.0790038 -1.9404413 -3.7151237 7.0623727 -1.9421287 -3.7597592 7.0420122 -1.9428519 -3.8047473 7.0222235 -1.9438162 -3.8463602 6.9961944 -1.9430931 -3.8764474 6.9495792 -1.936584 -3.9151917 6.9189067 -1.9346554 -3.9483898 6.8787622 -1.9300749 -3.9963837 6.8644695 -1.9329679 -4.0438571 6.8490109 -1.9356197 -4.1017628 6.8507123 -1.9433341 -4.1386833 6.8171206 -1.9409233 -4.1773815 6.7866392 -1.9394768 -4.2096944 6.7460604 -1.9351375 -4.2499704 6.7184629 -1.9346554 -4.2827306 6.6791887 -1.9307982 -4.3257484 6.6560392 -1.9317625 -4.3611679 6.6212678 -1.9293517 -4.3963242 6.5863123 -1.926941 -4.4317594 6.5519786 -1.9247713 -4.4866953 6.5462747 -1.9312804 -4.5090604 6.4931154 -1.923566 -4.5722761 6.4986596 -1.9336911 -4.5878377 6.4365034 -1.9233248 -4.6278133 6.4090185 -1.923566 -4.6796589 6.3977332 -1.9288696 -4.6939778 6.3353715 -1.9185034 -4.7613125 6.3444815 -1.9303161 -4.7713695 6.2772923 -1.9185034 -4.8003221 6.2355943 -1.9146461 -4.8367023 6.2037268 -1.9139229 -4.8668566 6.1640315 -1.910789 -4.9209538 6.1545167 -1.917298 -4.9512949 6.1151562 -1.9144051 -4.9757991 6.068902 -1.9093425 -5.0067434 6.0307903 -1.9069318 -5.0517731 6.0096126 -1.9100658 -5.1269302 6.0235791 -1.9247713 -5.1625261 5.9905372 -1.9242891 -5.1723833 5.9280381 -1.9141641 -5.1887379 5.8736444 -1.9066907 -5.2207975 5.8373566 -1.9052442 -5.2330623 5.7793174 -1.8965656 -5.2526827 5.7299318 -1.8907797 -5.3095317 5.721066 -1.8987352 -5.3345661 5.6777716 -1.8951191 -5.3672967 5.6428227 -1.8943958 -5.425384 5.6342483 -1.9028335 -5.438849 5.5793123 -1.8953601 -5.4770713 5.5499792 -1.8968066 -5.5096502 5.5148954 -1.8963245 -5.5378637 5.4755268 -1.8943958 -5.572051 5.442122 -1.894637 -5.5941615 5.3970504 -1.8907797 -5.6229558 5.3586073 -1.8893332 -5.6408877 5.3100371 -1.8842707 -5.6705203 5.2726822 -1.8833064 -5.6934724 5.2292562 -1.8801724 -5.7297649 5.1981354 -1.8816189 -5.7478175 5.1505766 -1.8770385 -5.7916689 5.1261444 -1.8811368 -5.8215518 5.0892339 -1.8806546 -5.8938107 5.0889301 -1.8941548 -5.9131079 5.0425963 -1.8902975 -5.9320593 4.9962177 -1.8864404 -5.9931984 4.9851665 -1.8963245 -6.0094237 4.9365969 -1.891744 -6.0245256 4.8874044 -1.8869225 -6.0581884 4.8533797 -1.8881279 -6.09166 4.8191261 -1.8893332 -6.0943437 4.7607512 -1.8808956 -6.1618681 4.7528987 -1.8929495 -6.1716108 4.7003031 -1.8869225 -6.1855955 4.6512666 -1.8823421 -6.2522058 4.6415658 -1.8941548 -6.2876143 4.6082778 -1.8963245 -6.2890353 4.5502725 -1.8881279 -6.3405318 4.5285163 -1.8953601 -6.3681989 4.4895263 -1.8953601 -6.402 4.4548011 -1.8972888 -6.4420152 4.4242239 -1.9011459 -6.4561853 4.3759031 -1.8972888 -6.4821072 4.3356671 -1.8970476 -6.5191188 4.3027601 -1.9001817 -6.5616641 4.2732687 -1.9050032 -6.5518322 4.2098484 -1.8943958 -6.5726213 4.166451 -1.8929495 -6.6038227 4.1296449 -1.894637 -6.6257334 4.0870094 -1.8936726 -6.6490278 4.045269 -1.8931905 -6.6795497 4.0078897 -1.894878 -6.7157102 3.9737465 -1.8982531 -6.7592478 3.943711 -1.9037977 -6.7690163 3.8939381 -1.8996994 -6.7514129 3.8288777 -1.8878869 -6.7612243 3.7798045 -1.8840296 -6.7766385 3.7340331 -1.8818599 -6.8326869 3.7104397 -1.8912619 -6.8835654 3.6835518 -1.8992174 -6.8965936 3.6362681 -1.8965656 -6.9110236 3.5898578 -1.8943958 -6.9588418 3.5606434 -1.9016281 -6.9987597 3.5270469 -1.9066907 -7.0289636 3.4883502 -1.9091015 -7.0170984 3.4289689 -1.8999406 -7.0327582 3.3833246 -1.8984941 -7.051631 3.3392782 -1.8980119 -7.091342 3.3049638 -1.9033157 -7.1026649 3.2573457 -1.9009049 -7.1127863 3.2093141 -1.8982531 -7.1376672 3.1679718 -1.8996994 -7.1889935 3.1380889 -1.9083782 -7.2428966 3.1088428 -1.9177802 -7.2484226 3.0586851 -1.9141641 -7.2258143 2.9970543 -1.9030745 -7.2611446 2.9596186 -1.907655 -7.3052969 2.9254684 -1.9146461 -7.3240132 2.880944 -1.9148872 -7.330688 2.8317556 -1.9119943 -7.3560925 2.789818 -1.9141641 -7.3921733 2.7517366 -1.9192266 -7.4061837 2.7053289 -1.9185034 -7.397975 2.6509986 -1.9119943 -7.4250898 2.6094153 -1.9148872 -7.4281144 2.5593824 -1.9115121 -7.4455175 2.5143769 -1.9119943 -7.4838409 2.476263 -1.9180212 -7.4988942 2.4302964 -1.9180212 -7.4840622 2.3748496 -1.9103068 -7.5216651 2.3360765 -1.9163337 -7.5302854 2.2881882 -1.9148872 -7.5274377 2.2369664 -1.9105479 -7.5410218 2.1907368 -1.9105479 -7.5879335 2.1539607 -1.9192266 -7.5757551 2.1003642 -1.9127176 -7.6081738 2.0591624 -1.9177802 -7.6281724 2.0144219 -1.9197087 -7.6187716 1.9620149 -1.9141641 -7.6278429 1.9145217 -1.9134408 -7.6573596 1.8720586 -1.9180212 -7.6696463 1.8252633 -1.9182622 -7.7015033 1.7829814 -1.923566 -7.6782112 1.7280262 -1.9148872 -7.6905661 1.6812953 -1.9153694 -7.7320676 1.6407186 -1.9233248 -7.7629027 1.5975453 -1.9286286 -7.718307 1.539073 -1.9148872 -7.7685814 1.499589 -1.9252535 -7.7671423 1.449936 -1.9226016 -7.7892642 1.4046599 -1.9259766 -7.7872186 1.3550109 -1.9233248 -7.8193154 1.3112129 -1.9293517 -7.7936792 1.2578027 -1.9209141 -7.8089228 1.2111468 -1.9228427 -7.8315663 1.1654929 -1.9266999 -7.8491392 1.1189224 -1.9293517 -7.8414326 1.068776 -1.9257356 -7.8391809 1.0195166 -1.923566 -7.8520312 0.97223085 -1.9252535 -7.8636322 0.9247126 -1.9266999 -7.8527608 0.87462097 -1.9226016 -7.881144 0.82885373 -1.9283874 -7.8870473 0.78057575 -1.9286286 -7.88589 0.73162997 -1.9271821 -7.886363 0.68289495 -1.9262178 -7.9087853 0.63596761 -1.9307982 -7.8951173 0.58613741 -1.9264588 -7.8898506 0.5370909 -1.9242891 -7.8813739 0.48795164 -1.9213963 -7.927825 0.44200805 -1.9322447 -7.91294 0.39249262 -1.9279053 -7.9248953 0.34435225 -1.9303161 -7.9161911 0.2953231 -1.9276642 -7.9197941 0.24680488 -1.9281464 -7.9328017 0.1984949 -1.9310392 -7.918345 0.14952551 -1.9271821 -7.913291 0.10086328 -1.9257356 -7.9157019 0.052318886 -1.9262178 -7.8935523 0.0037407619 -1.920673 -7.9312754 -0.044913091 -1.9300749 -7.913383 -0.093368977 -1.9257356 -7.9340086 -0.14230885 -1.9310392 -7.9145517 -0.19054183 -1.9264588 -7.9287548 -0.23957226 -1.9303161 -7.9465327 -0.28892577 -1.9351375 -7.94558 -0.33772069 -1.9353787 -7.9443274 -0.38651478 -1.9356197 -7.9253325 -0.43434775 -1.9315214 -7.9186435 -0.4827317 -1.9305571 -7.9116592 -0.53104997 -1.9295928 -7.9179306 -0.58029574 -1.9320036 -7.9287329 -0.6300236 -1.9356197 -7.9343872 -0.67949104 -1.9380305 -7.9223371 -0.72745162 -1.9361018 -7.9109635 -0.77538484 -1.9344143 -7.9060569 -0.82391101 -1.9344143 -7.9240036 -0.87496585 -1.9402001 -7.9011345 -0.9215439 -1.9358608 -7.8779931 -0.96787423 -1.9315214 -7.8699808 -1.0159457 -1.9310392 -7.8828335 -1.0668218 -1.9358608 -7.8819046 -1.1159871 -1.9373072 -7.8998699 -1.1680228 -1.9435751 -7.8704934 -1.21307 -1.9380305 -7.8705678 -1.2625705 -1.939959 -7.8387413 -1.3068463 -1.9339322 -7.841094 -1.356741 -1.936584 -7.8383527 -1.4058563 -1.9380305 -7.8209915 -1.452329 -1.9358608 -7.7919188 -1.4964436 -1.9307982 -7.7778306 -1.5432806 -1.9295928 -7.7596579 -1.5892217 -1.9274231 -7.7981868 -1.6470394 -1.939718 -7.778451 -1.6927921 -1.9373072 -7.7821226 -1.7436728 -1.9409233 -7.7504725 -1.7865912 -1.9356197 -7.7185893 -1.829187 -1.9303161 -7.6893048 -1.8721483 -1.9257356 -7.6635499 -1.9157611 -1.9221195 -7.6394305 -1.9596111 -1.9189855 -7.4846048 -1.9688985 -1.8823421 -7.3074703 -1.9702941 -1.8399129 -7.1698952 -1.9804504 -1.8076088 -7.0212688 -1.9858226 -1.7724118 -6.96141 -2.0150969 -1.7601171 -6.8549323 -2.0299261 -1.7357684 -6.7764025 -2.0519683 -1.7186521 -6.6793213 -2.0673816 -1.6967143 -6.6276484 -2.0960288 -1.6865891 -6.4706011 -2.0900948 -1.6489815 -6.2963705 -2.0765357 -1.6067933 -6.281671 -2.114511 -1.6063112 -6.2153449 -2.1347206 -1.5923288 -5.8879867 -2.0627 -1.5096401 -5.7034097 -2.0373781 -1.4643179 -5.6670928 -2.0636966 -1.45805 -5.6534138 -2.0980926 -1.457809 -5.4398289 -2.0568457 -1.4045314 -5.347414 -2.0594745 -1.3833168 -5.2443333 -2.0567935 -1.3592092 -5.131577 -2.0489655 -1.3324499 -5.0254107 -2.0423918 -1.3073781 -4.9311795 -2.0394185 -1.2854402 -4.8801117 -2.0534434 -1.275074 -4.7969418 -2.0531642 -1.2560291 -4.8296318 -2.102324 -1.2683239 -4.7421017 -2.0989065 -1.2480736 -4.4919677 -2.021183 -1.1834655 -4.3700533 -1.9986287 -1.1535722 -4.3277879 -2.0114901 -1.1453756 -4.2767558 -2.0197623 -1.1347684 -4.2135382 -2.0216038 -1.120786 -4.1399927 -2.017642 -1.1039107 -4.0753541 -2.0171621 -1.0894462 -4.0394907 -2.0303564 -1.0829372 -4.0330067 -2.0581937 -1.0846248 -4.0297794 -2.0878143 -1.0872766 -3.9765272 -2.0912595 -1.075946 -3.8977041 -2.0804143 -1.0573833 -3.9915204 -2.1620982 -1.0875176 -3.8863373 -2.136039 -1.0614815 -3.88587 -2.1669383 -1.0650977 -3.8665888 -2.1873941 -1.0634102 -3.853936 -2.2115612 -1.0636512 -3.8352616 -2.2322364 -1.0622047 -3.8148077 -2.2517788 -1.0602762 -3.7992539 -2.2741463 -1.0597939 -3.7910352 -2.3009415 -1.0614815 -3.7793248 -2.3256862 -1.0622047 -3.7542808 -2.3421512 -1.0590708 -3.7365587 -2.3630669 -1.0581064 -3.7219887 -2.3859496 -1.0581064 -3.7658634 -2.4468286 -1.0754639 -3.7645562 -2.4789667 -1.0795622 -3.7500818 -2.5025578 -1.0798032 -3.6639214 -2.4776609 -1.0585886 -3.6526518 -2.5028396 -1.0597939 -3.6188934 -2.51247 -1.0542493 -3.6938858 -2.5983043 -1.0817318 -3.6660202 -2.6124692 -1.0781157 -3.5728207 -2.5792246 -1.0544903 -3.50915 -2.5661407 -1.0397848 -3.5471382 -2.6274974 -1.0564189 -3.5907128 -2.6940765 -1.0749817 -3.5169454 -2.6725905 -1.0571421 -3.4689541 -2.6698425 -1.0472581 -3.4532721 -2.6916742 -1.0474992 -3.4397378 -2.7152185 -1.0484635 -3.4230127 -2.7362733 -1.0484635 -3.4544261 -2.7963176 -1.0638922 -3.4882314 -2.8593106 -1.0802854 -3.4579287 -2.8701196 -1.0761871 -3.4350533 -2.8869107 -1.0744996 -3.4202306 -2.9104502 -1.0754639 -3.3493822 -2.8857574 -1.0581064 -3.4756551 -3.0319734 -1.1055982 -3.2649913 -2.8835852 -1.0419544 -3.4526525 -3.0873384 -1.1104198 -3.1984291 -2.8954194 -1.0315882 -3.1770263 -2.9117105 -1.0303829 -3.1932411 -2.9628437 -1.0419544 -3.2124829 -3.0176075 -1.0547314 -3.1601577 -3.0051515 -1.0431598 -3.1584346 -3.0406437 -1.0489457 -3.1015017 -3.022701 -1.0356865 -3.0822058 -3.0409927 -1.0354455 -3.0710397 -3.0673938 -1.0380973 -3.0610301 -3.0951526 -1.0412313 -3.0948653 -3.1680396 -1.0600351 -3.0342708 -3.1443584 -1.0453295 -3.0336645 -3.1825919 -1.0520796 -3.0014422 -3.1877177 -1.0474992 -2.9930592 -3.2181582 -1.0515975 -2.9660363 -3.2285991 -1.0489457 -2.9083548 -3.2050424 -1.0349633 -2.8912246 -3.2257187 -1.0359275 -2.87395 -3.2463057 -1.0368918 -2.8399267 -3.247802 -1.0315882 -2.8174086 -3.2622275 -1.0306239 -2.7828574 -3.2624669 -1.0250791 -2.764662 -3.281708 -1.0258024 -2.8195567 -3.3889022 -1.0549725 -2.8313539 -3.4458892 -1.0677495 -2.7997646 -3.4503832 -1.0636512 -2.800988 -3.4955251 -1.0725709 -2.7560084 -3.4829583 -1.063169 -2.7321961 -3.4967437 -1.0622047 -2.699429 -3.4988399 -1.0576243 -2.7037776 -3.5493131 -1.0682316 -2.6370454 -3.5061023 -1.0496688 -2.6467156 -3.5643005 -1.0626869 -2.5909536 -3.5342846 -1.0484635 -2.5692189 -3.5501158 -1.0484635 -2.5141149 -3.5192127 -1.03424 -2.4678743 -3.4996681 -1.0236328 -2.4663057 -3.543426 -1.0323114 -2.4285872 -3.5352898 -1.0253203 -2.4073939 -3.5509281 -1.0255613 -2.3828633 -3.561599 -1.024356 -2.3582923 -3.5721025 -1.0231506 -2.3405659 -3.5930121 -1.0250791 -2.320049 -3.6097558 -1.0258024 -2.2921422 -3.6149058 -1.0231506 -2.259115 -3.6116204 -1.018088 -2.2292709 -3.613023 -1.0144719 -2.2211807 -3.6498508 -1.021222 -2.2142193 -3.6892114 -1.0286953 -2.2019172 -3.7202697 -1.0337579 -2.2206104 -3.8049686 -1.0542493 -2.1870615 -3.8008547 -1.0491867 -2.1823657 -3.8471291 -1.0585886 -2.1639271 -3.8697665 -1.0612404 -2.14061 -3.8838212 -1.0614815 -2.0898843 -3.8474126 -1.0474992 -2.0488422 -3.8276446 -1.0383383 -2.0497534 -3.8865058 -1.0513563 -2.0339179 -3.9145133 -1.0556958 -1.9930668 -3.8940859 -1.0465349 -1.9442474 -3.8568377 -1.0327936 -1.9114882 -3.8504374 -1.0277311 -1.9001794 -3.8873825 -1.0347222 -1.8737675 -3.8937209 -1.0332757 -1.8369685 -3.8779519 -1.0258024 -1.8045326 -3.870676 -1.0207398 -1.7872196 -3.8957913 -1.024597 -1.7908139 -3.9677274 -1.0412313 -1.769977 -3.986625 -1.0434009 -1.7384958 -3.9813991 -1.0390615 -1.711355 -3.9857481 -1.037374 -1.6819633 -3.984549 -1.03424 -1.6571113 -3.9938979 -1.033999 -1.6340387 -4.0075855 -1.0349633 -1.6155491 -4.0328536 -1.0390615 -1.2051073 -3.061816 -0.77725405 -1.191891 -3.0836387 -0.78111124 -1.5523962 -4.0918541 -1.047017 -1.4802166 -3.9748707 -1.0135076 -1.3662621 -3.7386465 -0.94865841 -1.3521322 -3.7716284 -0.95516741 -1.4084097 -4.0060215 -1.0147129 -1.4138242 -4.1017613 -1.0376151 -1.4128393 -4.1820831 -1.0564189 -1.3731343 -4.1482878 -1.0453295 -1.3533374 -4.1741772 -1.0499099 -1.0419266 -3.2813613 -0.81510282 -1.0214852 -3.2867658 -0.81486171 -1.0072213 -3.3124728 -0.81992429 -0.98770636 -3.3213816 -0.82064754 -0.96379024 -3.3152633 -0.81751359 -0.94051629 -3.3108444 -0.81486171 -0.91914701 -3.3128119 -0.81389743 -0.82835495 -3.0579481 -0.74687856 -0.8056137 -3.0479593 -0.74302137 -1.1120013 -4.316041 -1.0670263 -1.0821919 -4.3096042 -1.0636512 -1.0573407 -4.3227625 -1.0653387 -1.0177729 -4.2744069 -1.0513563 -0.98758882 -4.2635517 -1.047017 -0.95864123 -4.2572222 -1.0438831 -0.92628735 -4.2345796 -1.0366508 -0.89968306 -4.2373357 -1.0359275 -0.84160686 -4.0868754 -0.99639124 -0.75203413 -3.7683516 -0.91442573 -0.73110348 -3.7843304 -0.91731864 -0.79613447 -4.2619548 -1.0368918 -0.77134538 -4.2744007 -1.0388205 -0.74443871 -4.2752285 -1.0378562 -0.72524834 -4.3218307 -1.0484635 -0.70242411 -4.349195 -1.0542493 -0.68256056 -4.3975396 -1.0653387 -0.64899993 -4.3574872 -1.0542493 -0.62485033 -4.379643 -1.0588297 -0.6029408 -4.4199367 -1.0679905 -0.56093144 -4.3090248 -1.0393026 -0.5461545 -4.406776 -1.062928 -0.5094825 -4.3281145 -1.0424366 -0.4793756 -4.2993288 -1.0344812 -0.45045224 -4.278059 -1.0284542 -0.43316567 -4.3715277 -1.0511153 -0.40624478 -4.373137 -1.0508742 -0.38007274 -4.3832827 -1.0528028 -0.34983137 -4.3439341 -1.0424366 -0.31743398 -4.2685704 -1.0231506 -0.29294661 -4.2956133 -1.0294186 -0.26754099 -4.3128285 -1.0332757 -0.24295889 -4.3483043 -1.0417134 -0.21699268 -4.364253 -1.0453295 -0.19050397 -4.3722892 -1.047017 -0.16313194 -4.3588285 -1.0434009 -0.13728622 -4.3888483 -1.0506332 -0.10963012 -4.3605022 -1.0434009 -0.082890704 -4.3620629 -1.0436419 -0.056013979 -4.3537555 -1.0414723 -0.029148243 -4.3307257 -1.0356865 -0.0025745439 -4.3298526 -1.0354455 --0.024043716 -4.338521 -1.0376151 --0.050466865 -4.3217945 -1.0335168 --0.07744015 -4.3466325 -1.0397848 --0.10349813 -4.3208499 -1.0335168 --0.13260025 -4.4054985 -1.0547314 --0.15987721 -4.4113913 -1.0564189 --0.1879345 -4.433598 -1.0622047 --0.21541883 -4.4381776 -1.0636512 --0.24152867 -4.4164224 -1.0585886 --0.27022105 -4.4410119 -1.0650977 --0.2966187 -4.4266825 -1.0619637 --0.32135808 -4.3918705 -1.0537671 --0.34799197 -4.3859463 -1.0528028 --0.37439939 -4.3779263 -1.0513563 --0.40258801 -4.3900433 -1.0549725 --0.4272418 -4.3643098 -1.0491867 --0.45683321 -4.3886333 -1.0559368 --0.48140636 -4.3645258 -1.0506332 --0.50862783 -4.365346 -1.0515975 --0.54286808 -4.4228272 -1.0667852 --0.57621545 -4.4675379 -1.0788389 --0.91163838 -6.7374249 -1.6487404 --0.9517355 -6.7230558 -1.6465707 --0.99353784 -6.7209301 -1.647535 --1.0301707 -6.6849732 -1.6400616 --1.0724005 -6.686192 -1.6419903 --1.1126072 -6.6746998 -1.6407849 --1.1585097 -6.6964355 -1.6480172 --1.2021486 -6.7035298 -1.6516333 --1.2390021 -6.6731272 -1.6458474 --1.2802906 -6.6673055 -1.6463296 --1.325146 -6.6793146 -1.6513922 --1.3686377 -6.6834173 -1.6545261 --1.405406 -6.6549535 -1.6494635 --1.4441484 -6.6367221 -1.6470529 --1.4837818 -6.6230011 -1.6458474 --1.5182841 -6.5872931 -1.6390973 --1.5609137 -6.5872965 -1.6415081 --1.6026815 -6.5832524 -1.6429546 --1.6517591 -6.60813 -1.6518743 --1.6862428 -6.5743699 -1.6458474 --1.722598 -6.548883 -1.6419903 --1.7675519 -6.5559931 -1.6465707 --1.8033502 -6.5291214 -1.6424724 --1.8436425 -6.5188675 -1.6427135 --1.8830668 -6.505568 -1.6422313 --1.9301174 -6.5180845 -1.6484993 --1.9785178 -6.5339832 -1.6557316 --2.01283 -6.5031791 -1.65091 --2.0570869 -6.5045853 -1.6545261 --2.0996459 -6.5001521 -1.6566958 --2.1376657 -6.481617 -1.6552494 --2.182972 -6.4849339 -1.6595887 --1.3212644 -3.8482838 -0.97059619 --1.3419627 -3.8318615 -0.96842653 --2.2921689 -6.4162374 -1.6523565 --2.3374755 -6.4184651 -1.6566958 --2.3761389 -6.4021826 -1.6562136 --2.4105692 -6.3747745 -1.6528386 --2.4440551 -6.3453736 -1.6489815 --2.4964159 -6.3645883 -1.6581423 --2.5278597 -6.330225 -1.6530797 --2.5659225 -6.3127971 -1.6525975 --2.6068354 -6.3023143 -1.654044 --2.6450799 -6.285306 -1.653803 --2.6965868 -6.2992902 -1.6619995 --2.7685168 -6.3591461 -1.682732 --1.3793254 -3.1173177 -0.80666518 --1.3988254 -3.1096807 -0.80690628 --2.8515785 -6.2338629 -1.6627227 --2.8844547 -6.2048087 -1.6595887 --1.6071776 -3.4036801 -0.89489865 --1.6246717 -3.3867552 -0.89297003 --1.6394663 -3.3645103 -0.88959503 --1.6570646 -3.3482997 -0.88790751 --1.6784502 -3.3398032 -0.88838965 --1.7037665 -3.3389492 -0.89104146 --1.7353886 -3.3499722 -0.89706832 --1.7852879 -3.3950863 -0.9127382 --2.0891013 -3.9139693 -1.0619637 --3.2715337 -6.0384393 -1.6658567 --3.3066525 -6.0148506 -1.6648924 --3.3316743 -5.9732604 -1.6588656 --3.3883426 -5.9881778 -1.6689907 --3.446768 -6.0051479 -1.679839 --3.4742703 -5.9679513 -1.6752586 --3.5019395 -5.9314799 -1.6709193 --3.5462472 -5.9232025 -1.6747764 --3.5845397 -5.9046497 -1.6757407 --3.6023839 -5.8527932 -1.667062 --3.6449089 -5.8412819 -1.6701961 --3.6822386 -5.8212676 -1.6709193 --3.7409427 -5.8345079 -1.6815265 --3.7793171 -5.8155127 -1.682732 --3.7978425 -5.7662802 -1.6750176 --3.834769 -5.7452898 -1.6757407 --3.8514581 -5.6943231 -1.6675442 --2.1066172 -3.0747278 -0.88573778 --2.1304269 -3.0689175 -0.88790751 --2.1525688 -3.0605497 -0.88935393 --4.0559645 -5.6905432 -1.69575 --4.0731883 -5.64116 -1.6882766 --4.1037135 -5.6105785 -1.6865891 --4.1392179 -5.5868526 -1.6870713 --4.1769161 -5.5660067 -1.6885178 --4.2162766 -5.5472255 -1.6906874 --4.2502346 -5.5212507 -1.6906874 --4.2744827 -5.4828229 -1.6868303 --4.2797728 -5.4206963 -1.6754997 --4.3184085 -5.401155 -1.6776694 --4.366128 -5.3926563 -1.6834552 --4.4003654 -5.3672657 -1.6839373 --4.4350758 -5.3424044 -1.6846606 --4.477766 -5.3269758 -1.6885178 --4.5229502 -5.3141794 -1.6933392 --4.5453339 -5.2745657 -1.6894821 --4.5520859 -5.2173295 -1.679839 --4.5975084 -5.2045727 -1.6849016 --4.625474 -5.1719251 -1.6834552 --4.6532121 -5.1391306 -1.6820087 --4.6885929 -5.1147738 -1.6834552 --4.7377167 -5.105113 -1.6899642 --4.7556586 -5.0618029 -1.6851428 --4.8066969 -5.0536208 -1.6923749 --4.8450212 -5.0317211 -1.6950268 --4.8595428 -4.9852214 -1.6892409 --4.9057212 -4.9711957 -1.6947857 --4.9080048 -4.9128556 -1.6849016 --4.9339156 -4.8785548 -1.6834552 --4.9540353 -4.838697 -1.6800802 --4.9920144 -4.8162932 -1.682973 --5.018662 -4.7828941 -1.6820087 --5.0373135 -4.7420335 -1.6783926 --5.0663152 -4.7110362 -1.6783926 --5.1315846 -4.7133365 -1.6906874 --5.1834126 -4.7026248 -1.6984018 --5.2280731 -4.684978 -1.7037054 --5.2632627 -4.6585989 -1.7058752 --5.282979 -4.6185527 -1.7029823 --5.3126879 -4.5873184 -1.7034644 --5.3459048 -4.559041 -1.7051519 --5.3715506 -4.5242782 -1.7044287 --5.3798084 -4.4751005 -1.6981608 --5.3906655 -4.4284558 -1.6928571 --5.4222593 -4.3989639 -1.6943035 --5.4446034 -4.3619704 -1.6928571 --5.4682207 -4.3260732 -1.6918929 --5.5091953 -4.3037887 -1.6964732 --5.5247393 -4.2616072 -1.6930982 --5.5662274 -4.2393856 -1.6979197 --5.5696378 -4.1882405 -1.6909285 --5.5765276 -4.1401057 -1.6851428 --5.6026087 -4.1063848 -1.6853838 --5.587595 -4.0429225 -1.6730889 --5.6225648 -4.015893 -1.6762229 --5.658999 -3.9897041 -1.679839 --5.6961203 -3.9637735 -1.6836963 --5.717134 -3.9265509 -1.682732 --5.7379055 -3.8892198 -1.6817677 --5.751173 -3.8469265 -1.6786337 --5.7754793 -3.8121002 -1.6788747 --5.8239746 -3.7930055 -1.6863481 --5.7989612 -3.7262528 -1.6721246 --5.8184366 -3.6885231 -1.6711603 --5.821209 -3.6404057 -1.6653745 --5.8153496 -3.5872996 -1.657178 --5.8380809 -3.5520539 -1.6574191 --5.8397913 -3.5041842 -1.6516333 --5.8611827 -3.468286 -1.6516333 --5.9100184 -3.4483929 -1.6595887 --5.9293833 -3.4110973 -1.6591066 --5.9392262 -3.3684287 -1.6559726 --5.9851985 -3.3461263 -1.6632049 --5.9869156 -3.2990375 -1.6579012 --6.0121632 -3.2650185 -1.6593477 --6.0457759 -3.2353914 -1.6632049 --6.0449085 -3.1873741 -1.6574191 --6.0540166 -3.1448565 -1.6545261 --6.093936 -3.118257 -1.6603119 --6.0921531 -3.0703275 -1.6545261 --6.1213102 -3.0380645 -1.6574191 --6.1503005 -3.0055594 -1.6603119 --6.183495 -2.9749155 -1.6644102 --6.2077727 -2.9398251 -1.6660978 --6.243289 -2.9098763 -1.6709193 --6.2874928 -2.8836465 -1.6781515 --6.3360319 -2.8589785 -1.6865891 --6.3605518 -2.8231962 -1.6885178 --6.3777552 -2.7841153 -1.6885178 --6.3866911 -2.7414858 -1.6863481 --6.4159112 -2.7075267 -1.6897231 --6.4557128 -2.6777723 -1.695991 --6.4953899 -2.6476312 -1.7022591 --6.5502563 -2.6232347 -1.7126253 --6.5978408 -2.5954232 -1.7210629 --6.6118312 -2.5541916 -1.7205807 --6.6428061 -2.5194223 -1.724679 --6.6999807 -2.4941838 -1.7357684 --6.7379498 -2.4613478 -1.7417953 --6.753839 -2.4202855 -1.7420365 --6.8015265 -2.390378 -1.7507151 --6.8252416 -2.3517599 -1.7531259 --6.835865 -2.3085952 -1.7521616 --6.8545089 -2.2681313 -1.7533669 --6.8969183 -2.2353013 -1.7608403 --6.9299312 -2.1991019 -1.7659029 --7.0100288 -2.1772552 -1.7832602 --6.8728194 -2.0885131 -1.7442061 --6.8836441 -2.0457504 -1.743724 --6.9957929 -2.0324299 -1.769519 --7.0557485 -2.0029755 -1.7818139 --7.1595616 -1.9850414 -1.8054391 --7.228754 -1.9565318 -1.8201448 --7.4799089 -1.9752923 -1.8816189 --7.5698981 -1.9494364 -1.9016281 --7.6899714 -1.9301058 -1.9293517 --7.7912335 -1.904767 -1.9522538 --7.8462062 -1.8672545 -1.9633434 --7.8433328 -1.8157946 -1.9597272 --7.8713698 -1.7714678 -1.9640665 --7.8868322 -1.7241722 -1.9652719 --7.9361882 -1.684001 -1.9751559 --7.9340138 -1.6327324 -1.9720221 --7.9448342 -1.5842092 -1.9722631 --7.9277229 -1.5302842 -1.965513 --7.9112039 -1.4768071 -1.9590039 --7.8991036 -1.4244509 -1.9537003 --7.9402051 -1.381608 -1.9618969 --7.9695907 -1.3363898 -1.9672005 --7.9565616 -1.2840655 -1.9618969 --7.9863491 -1.2386386 -1.9674416 --7.9899588 -1.1890411 -1.9664773 --7.9788489 -1.1373936 -1.9618969 --7.9818311 -1.0878912 -1.9609326 --7.9777694 -1.0375199 -1.9582808 --8.0042114 -0.99105114 -1.9633434 --8.0159254 -0.94259876 -1.9647897 --8.0389204 -0.89532739 -1.9691291 --8.045228 -0.84608603 -1.9693702 --8.0183964 -0.79355592 -1.9614147 --8.0134506 -0.74344587 -1.9590039 --8.0110931 -0.69367719 -1.9573164 --8.0055246 -0.64373249 -1.9549057 --8.0519094 -0.59775472 -1.965513 --8.0622034 -0.54879826 -1.9672005 --8.0731688 -0.49979782 -1.9691291 --8.0557346 -0.44912079 -1.9640665 --8.0118113 -0.39738229 -1.952495 --8.0305815 -0.34892908 -1.9565933 --8.0509987 -0.30033252 -1.9611737 --8.0478392 -0.25077644 -1.9599683 --8.032733 -0.2009808 -1.95587 --8.0027647 -0.15110728 -1.9481556 --8.0297422 -0.10233054 -1.9546646 --8.0535107 -0.05320958 -1.9604504 --8.0303936 -0.0037855431 -1.9546646 --8.0302658 0.045488097 -1.9546646 --8.0589485 0.095107786 -1.9618969 --8.0378361 0.1441863 -1.9568343 --8.0358295 0.19347931 -1.9565933 --7.9947186 0.24157505 -1.9467092 --8.0018148 0.2909438 -1.9488788 --7.9824257 0.33929217 -1.9445394 --7.9549904 0.38703513 -1.9382715 --7.9447136 0.43541273 -1.936343 --7.9748278 0.48616502 -1.9445394 --8.0646534 0.54134172 -1.9676827 --7.6650147 -0.19095019 -1.9540584 --7.6641068 -0.14387852 -1.953555 --7.6648455 -0.09684974 -1.953555 --7.6652951 -0.049817309 -1.953555 --7.6596498 -0.0027805967 -1.9520446 --7.6517806 0.044173885 -1.9500308 --7.6542687 0.091157921 -1.950786 --7.6651769 0.13833088 -1.9538068 --7.6661186 0.18540761 -1.9543102 --7.62711 0.23130038 -1.9444927 --7.6487589 0.27894041 -1.9505342 --7.6353002 0.3253732 -1.9475135 --7.6476598 0.37292269 -1.9512894 --7.6432953 0.41973481 -1.950786 --7.6454058 0.46692002 -1.9520446 --7.6201878 0.51233047 -1.9462547 --7.6159353 0.55900663 -1.9460031 --7.6152563 0.60595679 -1.9467583 --7.6027164 0.65192801 -1.9444927 --7.6053195 0.69918495 -1.9462547 --7.5893278 0.74470359 -1.943234 --7.5923162 0.79205978 -1.9452479 --7.5776939 0.83756775 -1.9427305 --7.5762572 0.88449651 -1.9437375 --7.57549 0.93155724 -1.9449961 --7.5456362 0.97492301 -1.9387028 --7.5519795 1.0228919 -1.9419754 --7.5714335 1.0728754 -1.9487721 --7.5407734 1.1157725 -1.9424788 --7.5529151 1.1649704 -1.9475135 --7.5236464 1.2077652 -1.9417236 --7.5180035 1.2542251 -1.9422271 --7.512073 1.3006613 -1.9427305 --7.497283 1.3455336 -1.9409684 --7.5079165 1.3950458 -1.9460031 --7.4849586 1.4383484 -1.9422271 --7.4664998 1.4823641 -1.9397098 --7.4525228 1.5271785 -1.9384511 --7.4458528 1.5734777 -1.9392062 --7.4388947 1.6197526 -1.9399614 --7.4165392 1.6626148 -1.936689 --7.3929954 1.7050463 -1.9331647 --7.3786273 1.7494839 -1.9321579 --7.3837395 1.7986184 -1.9364372 --7.3519087 1.8387254 -1.9308991 --7.377985 1.8934222 -1.9409684 --7.3381505 1.9312689 -1.9334165 --7.2971954 1.9684464 -1.9256128 --7.315764 2.0216894 -1.9339199 --7.2845964 2.061271 -1.9288853 --7.2178941 2.090318 -1.9142848 --7.2671041 2.1529827 -1.9311509 --7.2222648 2.1879935 -1.922592 --7.2087035 2.2322671 -1.922592 --7.2114801 2.2817111 -1.9271232 --7.1605072 2.3140149 -1.9170539 --7.1645555 2.3639712 -1.9220885 --7.1957755 2.4233294 -1.9346751 --7.1670413 2.4627194 -1.9308991 --7.1326156 2.4999278 -1.9256128 --7.114408 2.5426686 -1.9248576 --7.1014004 2.5872676 -1.9256128 --7.0844841 2.6304555 -1.925361 --7.033813 2.6608651 -1.9157952 --7.0218692 2.7057133 -1.9170539 --7.0384698 2.761826 -1.926368 --7.0213909 2.8049612 -1.926368 --6.9771519 2.8370559 -1.9188161 --6.9953837 2.894613 -1.9288853 --6.9346757 2.9194589 -1.9168022 --6.9397631 2.9718587 -1.9233472 --6.9347072 3.0201802 -1.9271232 --6.8974614 3.0544455 -1.9218369 --6.8882976 3.1010797 -1.9246058 --6.8506589 3.1348314 -1.9193195 --6.8391929 3.1804798 -1.9215851 --6.8037982 3.2149427 -1.9170539 --6.7821989 3.2557919 -1.9165505 --6.733387 3.2833493 -1.9082433 --6.7599478 3.3477936 -1.9218369 --6.7012343 3.3700788 -1.9107606 --6.7071505 3.4247754 -1.9185643 --6.6997581 3.472991 -1.922592 --6.6757526 3.5126827 -1.9218369 --6.6412678 3.5467403 -1.9180609 --6.6108718 3.5828125 -1.9155436 --6.5904593 3.6242414 -1.916047 --6.5520391 3.655653 -1.9112641 --6.5193782 3.6900666 -1.9082433 --6.4907384 3.7266264 -1.9064811 --6.4869862 3.7775831 -1.912271 --6.4811854 3.8276494 -1.9175574 --6.4509349 3.8633676 -1.9155436 --6.4254537 3.9018724 -1.91504 --6.4055123 3.9437616 -1.9162987 --6.3902245 3.9886272 -1.9190677 --6.350091 4.0179305 -1.9142848 --6.3016925 4.0416679 -1.9069847 --6.2832661 4.0844774 -1.9089985 --6.2435384 4.1133709 -1.9044673 --6.2423291 4.1677237 -1.9120193 --6.2022099 4.1961865 -1.9074881 --6.1308451 4.2029738 -1.8931395 --6.1287875 4.2570753 -1.9006914 --6.1096745 4.299613 -1.902957 --6.0808134 4.3353348 -1.9022018 --6.0454674 4.3663316 -1.8994327 --6.0013781 4.3907728 -1.8938947 --5.9968734 4.4442234 -1.9011948 --5.9834237 4.4913931 -1.905726 --5.9611459 4.5321221 -1.9074881 --5.9278569 4.5644808 -1.905726 --5.8951592 4.5971971 -1.9042156 --5.8698783 4.6356816 -1.9052225 --5.8345213 4.6661711 -1.902957 --5.8012676 4.6982293 -1.9014466 --5.7738276 4.7349639 -1.90195 --5.7722154 4.7931771 -1.9112641 --5.7182503 4.8079524 -1.902957 --5.6982222 4.8511033 -1.9062295 --5.6639504 4.882185 -1.9047191 --5.6287832 4.9123921 -1.902957 --5.587656 4.9372253 -1.899181 --5.5673552 4.9804506 -1.9027052 --5.5158877 4.9956779 -1.8954051 --5.4865575 5.0307369 -1.8959085 --5.4527488 5.0616736 -1.8949015 --5.4441576 5.1162434 -1.902957 --5.4105587 5.1475506 -1.9022018 --5.3558679 5.1584978 -1.8938947 --5.3012471 5.1689692 -1.8855875 --5.2721868 5.2041192 -1.8865944 --5.2292013 5.2254257 -1.8825667 --5.2018032 5.2622309 -1.8843288 --5.2126923 5.3383632 -1.9004396 --5.1825261 5.3730335 -1.9014466 --5.1434517 5.3984256 -1.899181 --5.1002808 5.419313 -1.8954051 --5.0629787 5.4462528 -1.8938947 --5.0851083 5.5378056 -1.9152918 --5.0230732 5.5380797 -1.9044673 --4.9747896 5.5529389 -1.8989292 --4.9406238 5.5833592 -1.8989292 --4.9190106 5.6281424 -1.9039639 --4.8913412 5.6662769 -1.9067329 --4.8432946 5.6807184 -1.9014466 --4.8108411 5.7132902 -1.9024535 --4.7794075 5.7471657 -1.9039639 --4.7624817 5.7988195 -1.9115158 --4.7383952 5.8422132 -1.9162987 --4.7351313 5.9119658 -1.9298922 --4.6759515 5.9120655 -1.9203265 --4.6431623 5.9452214 -1.9218369 --4.5971389 5.9613376 -1.9178091 --4.5510931 5.9771137 -1.9137814 --4.52073 6.0134349 -1.9165505 --4.4722104 6.0255184 -1.9115158 --4.4174204 6.0286465 -1.9037122 --4.4109783 6.0979805 -1.9173057 --4.3852901 6.1414704 -1.922592 --4.3263354 6.1382036 -1.9130262 --4.3046198 6.1876721 -1.9203265 --4.2484932 6.1876407 -1.9120193 --4.2283635 6.2400308 -1.9203265 --4.194838 6.273098 -1.922592 --4.1530695 6.2938724 -1.9210817 --4.1138449 6.3184257 -1.9208299 --4.0880761 6.363905 -1.9271232 --4.0396252 6.3741555 -1.922592 --4.018909 6.4283633 -1.9316543 --3.9722769 6.44137 -1.9281301 --3.9432411 6.4829855 -1.9334165 --3.8939281 6.4912906 -1.9286336 --3.835299 6.4834094 -1.9190677 --3.8154397 6.5410938 -1.9293888 --3.7771628 6.5677376 -1.9303957 --3.7425213 6.6008925 -1.9334165 --3.7071426 6.6330247 -1.9361855 --3.6738455 6.669209 -1.9402132 --3.6365492 6.6984301 -1.9422271 --3.5935538 6.7172041 -1.9412202 --3.5306065 6.6980338 -1.929137 --3.5112987 6.7616553 -1.9414719 --3.4547572 6.7537789 -1.9329131 --3.4280584 6.8042355 -1.9414719 --3.3862438 6.8251414 -1.9414719 --3.3430274 6.8431821 -1.9407167 --3.3143997 6.8914742 -1.9487721 --3.2662539 6.8994355 -1.9452479 --3.2234495 6.9184699 -1.9449961 --3.1591551 6.8906131 -1.9314026 --3.1347246 6.9495659 -1.9427305 --3.0986974 6.9837074 -1.9470099 --3.0503681 6.9901714 -1.9434857 --3.0181067 7.0336585 -1.9505342 --2.980159 7.0645285 -1.9540584 --2.9271169 7.0594382 -1.9475135 --2.8932421 7.1005678 -1.9540584 --2.8575335 7.1379528 -1.9595965 --2.8094316 7.1445441 -1.9565758 --2.7624023 7.1535225 -1.9543102 --2.7174277 7.167623 -1.953555 --2.676435 7.1923251 -1.9558206 --2.6325855 7.2095208 -1.9560723 --2.5847085 7.2155166 -1.9533032 --2.5394237 7.2285008 -1.952548 --2.494077 7.2412014 -1.9517928 --2.4561005 7.2756243 -1.9570793 --2.4074602 7.2786131 -1.9538068 --2.3657374 7.3024545 -1.9563241 --2.3217638 7.3196006 -1.9570793 --2.277956 7.3374057 -1.9580861 --2.2222013 7.3160567 -1.9485204 --2.1844356 7.3536749 -1.9550654 --2.1462915 7.3911037 -1.9616104 --2.1040709 7.4153066 -1.9646312 --2.0523274 7.405694 -1.9585897 --2.0131679 7.4415026 -1.964883 --1.9482002 7.3807278 -1.9452479 --1.9154239 7.4412789 -1.9583379 --1.8711423 7.4585238 -1.9598483 --1.8104067 7.4087563 -1.9434857 --1.7763377 7.4677424 -1.9563241 --1.7267731 7.4624724 -1.9520446 --1.6869 7.4993649 -1.9590931 --1.6462257 7.5341568 -1.9656382 --1.5985601 7.5374889 -1.963876 --1.5511107 7.5414681 -1.9623656 --1.5061324 7.557487 -1.9641278 --1.4593654 7.5646858 -1.9636242 --1.4129219 7.5734978 -1.9636242 --1.3679705 7.5905972 -1.9658898 --1.3217014 7.6007547 -1.9663934 --1.2753592 7.6106305 -1.9668968 --1.2292538 7.6221342 -1.9679037 --1.1824621 7.6295333 -1.9679037 --1.1369075 7.6452608 -1.9701693 --1.0925697 7.6702971 -1.9749522 --1.047706 7.6931581 -1.9792316 --0.99561638 7.6620131 -1.9694141 --0.94751459 7.6593337 -1.9671485 --0.89733678 7.6380901 -1.9601001 --0.85109586 7.6492233 -1.9616104 --0.80546027 7.6668139 -1.964883 --0.75668776 7.6542764 -1.9603517 --0.70997578 7.6616659 -1.9611069 --0.6637857 7.6755199 -1.9636242 --0.61706465 7.6842718 -1.964883 --0.57119197 7.705286 -1.9694141 --0.52337706 7.7009215 -1.9674002 --0.47623476 7.7059197 -1.9679037 --0.42818969 7.6951685 -1.9643794 --0.38039032 7.6860518 -1.9613587 --0.3333483 7.6911416 -1.9621139 --0.28575382 7.682404 -1.9593449 --0.23854992 7.6820779 -1.9588413 --0.19152984 7.6882343 -1.9601001 --0.14480749 7.7134557 -1.9663934 --0.09800382 7.7558107 -1.9772178 --0.050121602 7.7117486 -1.9656382 --0.0028034633 7.7148142 -1.9663934 -0.044544876 7.7166219 -1.9668968 -0.091720209 7.7016873 -1.9631208 -0.13874878 7.6884003 -1.9598483 -0.18603805 7.6922417 -1.9611069 -0.23247182 7.6658044 -1.9545619 -0.27936307 7.6603646 -1.953555 -0.32693708 7.6720433 -1.9570793 -0.37475908 7.6853595 -1.9611069 -0.42121929 7.6703529 -1.9578345 -0.46851152 7.6714878 -1.9588413 -0.51499021 7.6597781 -1.9565758 -0.56346679 7.676743 -1.9618621 -0.61017621 7.6683178 -1.9606035 -0.65647292 7.6557508 -1.9583379 -0.70308113 7.6477237 -1.9573309 -0.75131589 7.6567502 -1.9608552 -0.7976805 7.6462207 -1.9593449 -0.84468806 7.6421442 -1.9595965 -0.8919 7.6397014 -1.9603517 -0.93840533 7.6312032 -1.9595965 -0.98657542 7.6358595 -1.9623656 -1.0261381 7.5759559 -1.9482687 -1.0738255 7.5781407 -1.9505342 -1.1224281 7.5857701 -1.9543102 -1.1671826 7.5672622 -1.9512894 -1.2135924 7.559958 -1.9512894 -1.261867 7.5638247 -1.9543102 -1.3070986 7.5492644 -1.952548 -1.3501482 7.5230031 -1.9477651 -1.3994646 7.5317044 -1.9522964 -1.4432783 7.5106201 -1.9490238 -1.4927269 7.5187101 -1.953555 -1.5409693 7.5198383 -1.9563241 -1.5850806 7.5007725 -1.9538068 -1.6318982 7.494688 -1.9548136 -1.6820871 7.5034213 -1.9598483 -1.7091779 7.4109135 -1.9379476 -1.768235 7.4577303 -1.9533032 -1.8130455 7.4429789 -1.9522964 -1.8640802 7.4533086 -1.9580861 -1.9032837 7.41642 -1.9512894 -1.9551572 7.4289365 -1.9578345 -1.9946553 7.3943739 -1.9517928 -2.0410197 7.3857274 -1.9527998 -2.0881433 7.3795834 -1.9545619 -2.1309619 7.3582654 -1.9522964 -2.1757963 7.3441238 -1.9520446 -2.2194154 7.326004 -1.950786 -2.2643251 7.3122478 -1.950786 -2.3088577 7.2972937 -1.9505342 -2.3541846 7.2848315 -1.9510376 -2.3988392 7.2702494 -1.9510376 -2.4344473 7.2287946 -1.9437375 -2.4796999 7.2164669 -1.9444927 -2.5239327 7.2011161 -1.9444927 -2.5680704 7.1854939 -1.9444927 -2.6150925 7.1777854 -1.9467583 -2.6540332 7.147995 -1.9429823 -2.6992121 7.1351962 -1.9439892 -2.7467692 7.1284337 -1.9467583 -2.7876289 7.1042385 -1.9447443 -2.8125 7.0402646 -1.9316543 -2.868767 7.0551505 -1.9407167 -2.903863 7.0177407 -1.9351786 -2.9427381 6.9899793 -1.9324095 -2.9996669 7.0047092 -1.9417236 -3.0263624 6.9489045 -1.9311509 -3.0791304 6.9532123 -1.9376959 -3.111011 6.9103603 -1.9308991 -3.16342 6.9131432 -1.9371924 -3.207819 6.8979902 -1.9384511 -3.2422287 6.8615518 -1.9336683 -3.2909698 6.8554883 -1.9376959 -3.3270347 6.8229876 -1.9341717 -3.3671193 6.7989759 -1.9331647 -3.3887739 6.7384143 -1.9215851 -3.4370975 6.7312856 -1.9256128 -3.4698734 6.6937437 -1.9208299 -3.5275528 6.7040172 -1.930144 -3.5617838 6.6694403 -1.926368 -3.5966454 6.6363983 -1.9230955 -3.6363652 6.6125088 -1.922592 -3.6778133 6.5917625 -1.9230955 -3.6986468 6.5345387 -1.9127744 -3.7357812 6.5066853 -1.9112641 -3.7736874 6.4802952 -1.9102572 -3.8232205 6.4736853 -1.9152918 -3.8817642 6.4816566 -1.9248576 -3.9068954 6.4337263 -1.9175574 -3.9305704 6.3840842 -1.9097537 -3.9896522 6.3918662 -1.9195713 -4.0189657 6.3517265 -1.9147884 -4.0599532 6.3302059 -1.9157952 -4.0786757 6.2743402 -1.9062295 -4.1325374 6.2726336 -1.9135296 -4.1387067 6.1988635 -1.8984258 -4.1940174 6.1990037 -1.9064811 -4.2418242 6.1875215 -1.9110124 -4.2625957 6.1367364 -1.9032087 -4.299613 6.1096745 -1.902957 -4.3325262 6.0768733 -1.9009432 -4.3793635 6.0635128 -1.9052225 -4.4062009 6.0224676 -1.9006914 -4.4447999 5.9976511 -1.9014466 -4.4733834 5.9594288 -1.8979223 -4.5151372 5.9388027 -1.9001878 -4.5544438 5.9148207 -1.9014466 -4.5971971 5.8951592 -1.9042156 -4.6410794 5.8767142 -1.9074881 -4.6963925 5.8723135 -1.9155436 -4.7067556 5.8117976 -1.9049708 -4.692008 5.7214413 -1.8843288 -4.7418637 5.7104144 -1.8903704 -4.7836633 5.6893597 -1.8931395 -4.8172278 5.6584268 -1.8926359 -4.8455381 5.6214314 -1.8901186 -4.8678493 5.5777392 -1.8853358 -4.9045453 5.5506668 -1.8863426 -4.9307685 5.5118127 -1.8833219 -4.9800868 5.4986711 -1.8893634 -5.0032678 5.4565964 -1.8853358 -5.0340214 5.4229569 -1.8843288 -5.074491 5.3997245 -1.8870978 -5.1215358 5.3832116 -1.8923842 -5.15447 5.3516855 -1.8923842 -5.1162724 5.2471962 -1.8659524 -5.1626487 5.2301693 -1.8712388 -5.2028522 5.2066092 -1.8742596 -5.2291951 5.1691437 -1.8722457 -5.2580447 5.1342559 -1.8712388 -5.3089519 5.1207099 -1.8782873 -5.3563867 5.103394 -1.8840771 -5.3854856 5.0684419 -1.8833219 -5.412231 5.0313478 -1.8818115 -5.438724 4.9941168 -1.8803011 -5.4706984 4.9619517 -1.8808045 -5.4794178 4.908916 -1.8732526 -5.5239301 4.8880301 -1.8782873 -5.5749497 4.8725147 -1.8855875 -5.5659161 4.8046966 -1.8722457 -5.6416874 4.8100142 -1.8881048 -5.6629519 4.7684493 -1.8853358 -5.6906157 4.7323747 -1.8848323 -5.7195458 4.6973686 -1.8848323 -5.7700577 4.6798663 -1.8921325 -5.7948875 4.6413484 -1.8908738 -5.8065581 4.5924954 -1.8853358 -5.8147974 4.5412917 -1.8787907 -5.8954315 4.546309 -1.8961602 -5.9224458 4.5094638 -1.8959085 -5.9020438 4.4369802 -1.8803011 -5.9563565 4.4208717 -1.8891118 -5.975564 4.3785205 -1.8865944 -5.9678159 4.3168135 -1.8755182 -6.0414467 4.3138604 -1.8906221 -6.0195498 4.2426963 -1.8752664 -6.0812182 4.2305541 -1.8865944 -6.1254115 4.2057614 -1.8923842 -6.1366816 4.1583242 -1.887853 -6.1846066 4.1356564 -1.8949015 -6.2235975 4.1066928 -1.899181 -6.2413797 4.0636754 -1.8969154 -6.2710819 4.028441 -1.8984258 -6.2940469 3.9888504 -1.8979223 -6.305274 3.9419465 -1.8938947 -6.3342853 3.9062321 -1.8954051 -6.3523464 3.8637712 -1.8936429 -6.3726149 3.8227296 -1.8926359 -6.400948 3.7865129 -1.8941463 -6.4056706 3.7364373 -1.8886082 -6.4402213 3.7038181 -1.8921325 -6.4661937 3.6661413 -1.8931395 -6.5054626 3.6358404 -1.898174 -6.5259538 3.5949214 -1.8976706 -6.5453377 3.5534256 -1.8969154 -6.5661645 3.5127409 -1.8966637 -6.6021485 3.480058 -1.9009432 -6.6139297 3.4345758 -1.898174 -6.625402 3.38908 -1.8954051 -6.6547151 3.3527186 -1.8979223 -6.6768956 3.3126831 -1.8984258 -6.6997046 3.2729268 -1.899181 -6.7170444 3.2304981 -1.8984258 -6.7446122 3.1929495 -1.9006914 -6.7614455 3.1502788 -1.8999362 -6.783287 3.1099422 -1.9006914 -6.7969484 3.0658743 -1.899181 -6.8218246 3.0268593 -1.9009432 -6.8411555 2.9853315 -1.9011948 -6.8584552 2.9429171 -1.9009432 -6.8674664 2.897017 -1.8984258 -6.882431 2.8537123 -1.8976706 -6.905189 2.8136201 -1.899181 -6.9286122 2.773716 -1.9009432 -6.9418983 2.7297337 -1.8999362 -6.9774761 2.6944098 -1.9052225 -6.9911623 2.6505167 -1.9044673 -6.994596 2.6028438 -1.9009432 -7.0049806 2.5578847 -1.8994327 -7.0223656 2.5155077 -1.8999362 -7.0340161 2.4710886 -1.8989292 -7.0655165 2.4335561 -1.9034604 -7.0812325 2.3904667 -1.9037122 -7.1040363 2.3497076 -1.9059777 -7.1358128 2.3117418 -1.9107606 -7.1258783 2.2603047 -1.9042156 -7.1137338 2.2085025 -1.8971671 -7.1549311 2.1732516 -1.9047191 -7.1839027 2.1339946 -1.9089985 -7.1884966 2.0874455 -1.9067329 -7.213273 2.0467334 -1.9100055 -7.2154369 1.9995914 -1.9072363 -7.2322416 1.9565445 -1.9084951 -7.2506604 1.9138608 -1.9102572 -7.2528949 1.8669226 -1.9077399 -7.2754779 1.825211 -1.9107606 -7.2856002 1.7803054 -1.9105089 -7.3076849 1.7382563 -1.9135296 -7.2984128 1.6888018 -1.9082433 -7.3143029 1.6452624 -1.9097537 -7.3138599 1.5980787 -1.9069847 -7.3225813 1.5529708 -1.9067329 -7.3442955 1.5105463 -1.9100055 -7.3695607 1.4686705 -1.9142848 -7.3993397 1.4274583 -1.9198229 -7.3965425 1.3798995 -1.9168022 -7.3886786 1.3315703 -1.9125228 -7.3805008 1.2833897 -1.9082433 -7.4178257 1.2430396 -1.916047 -7.4320011 1.1985801 -1.9178091 -7.4210443 1.1501385 -1.9130262 -7.4327483 1.1052942 -1.9142848 -7.4690919 1.0638993 -1.9220885 -7.4668489 1.016874 -1.9198229 -7.4758267 0.97141331 -1.9205781 -7.4701209 0.92409784 -1.9175574 -7.4554658 0.87587225 -1.912271 -7.478013 0.83203715 -1.9168022 -7.4550653 0.78320342 -1.909502 -7.5040331 0.74182719 -1.9210817 -7.5055523 0.69550133 -1.9203265 -7.5067863 0.6491847 -1.9195713 -7.526063 0.604352 -1.9235989 -7.5141873 0.55701602 -1.9195713 -7.4856 0.50873214 -1.9112641 -7.5223889 0.46488294 -1.9200747 -7.5328302 0.41914821 -1.9220885 -7.5400934 0.3731592 -1.9233472 -7.5538435 0.32739049 -1.926368 -7.5470061 0.28071061 -1.9241024 -7.55826 0.23469865 -1.9266198 -7.5585899 0.18829347 -1.926368 -7.5402508 0.14154699 -1.9213333 -7.5254936 0.095081776 -1.9173057 -7.5520654 0.049075592 -1.9241024 -7.5377073 0.0027300497 -1.9203265 -7.5617766 -0.043658935 -1.9266198 -7.4994321 -0.089321889 -1.9105089 -7.5461569 -0.13618909 -1.9228437 -7.5355043 -0.18225537 -1.9203265 -7.5342441 -0.22848892 -1.9203265 -7.5452733 -0.27517176 -1.9235989 -7.5386081 -0.32125771 -1.9223403 -7.5577612 -0.36854362 -1.9278784 -7.5292664 -0.41347876 -1.9210817 -7.5546017 -0.46137911 -1.9283818 -7.5439034 -0.50720561 -1.926368 -7.5589881 -0.55482972 -1.9311509 -7.5564065 -0.60127705 -1.9314026 -7.5467892 -0.6471352 -1.9298922 -7.5378575 -0.69298649 -1.9286336 -7.5190163 -0.73780793 -1.9248576 -7.5355239 -0.786138 -1.9303957 -7.5161295 -0.8307662 -1.9266198 -7.4897423 -0.87440079 -1.9210817 -7.4871178 -0.92069477 -1.9218369 -7.5062833 -0.96984053 -1.9283818 -7.4896417 -1.0144516 -1.9256128 -7.4765682 -1.059438 -1.9238507 -7.4996057 -1.1096833 -1.9316543 -7.5117855 -1.1586287 -1.936689 -7.5226908 -1.2076119 -1.9414719 -7.4893651 -1.249449 -1.9346751 -7.4872794 -1.2963697 -1.9361855 -7.4229813 -1.3322027 -1.9213333 -7.4127641 -1.3773707 -1.9208299 -7.3813634 -1.4184465 -1.9147884 -7.4019485 -1.4695519 -1.922592 -7.4022732 -1.5168841 -1.9251094 -7.380517 -1.5596744 -1.9218369 -7.3708081 -1.604931 -1.9218369 -7.4146504 -1.6621915 -1.9361855 -7.4080844 -1.7085254 -1.9371924 -7.3484931 -1.7423407 -1.9241024 -7.3404846 -1.7880844 -1.9248576 -7.3162308 -1.8298043 -1.9213333 -7.2870541 -1.8700916 -1.9165505 -7.2716985 -1.9137838 -1.9155436 -7.2523437 -1.95635 -1.9135296 -7.1478515 -1.9752967 -1.8886082 -6.9735599 -1.9732765 -1.8448069 -6.7893419 -1.9662328 -1.7982366 -6.7001305 -1.9850407 -1.7773429 -6.6359549 -2.0104036 -1.7632459 -6.5606279 -2.0316195 -1.7461282 -6.4677615 -2.0464413 -1.7242275 -6.3933816 -2.0661521 -1.7073616 -6.3594446 -2.0983686 -1.7015717 -6.3455324 -2.1370411 -1.7013199 -6.2993498 -2.1646161 -1.6922576 -6.2128825 -2.1776221 -1.6721191 -6.1064453 -2.1824851 -1.6464425 -6.0847545 -2.2169311 -1.644177 -5.5720258 -2.0689723 -1.5057245 -5.4496956 -2.0616944 -1.475265 -5.3764353 -2.0717828 -1.4583991 -5.3753343 -2.109328 -1.4616716 -5.3326316 -2.1304243 -1.4533644 -5.0137405 -2.0388117 -1.3675239 -4.9278054 -2.0391979 -1.346882 -4.8732767 -2.051749 -1.3350506 -4.7698488 -2.0427568 -1.309374 -4.6826901 -2.0395291 -1.2882285 -4.585134 -2.0306079 -1.2640623 -4.4746294 -2.0146091 -1.2361201 -4.4384222 -2.0311553 -1.2293234 -4.3653235 -2.0301955 -1.2119539 -4.3370333 -2.0495007 -1.2074227 -4.2432342 -2.0371268 -1.1840117 -4.1375742 -2.0177424 -1.1570764 -4.0930257 -2.0272019 -1.1477623 -4.0614882 -2.0427132 -1.1422242 -3.9618201 -2.0231483 -1.1167994 -3.9192584 -2.0318322 -1.1079887 -3.9032917 -2.0540395 -1.1069818 -3.8726869 -2.068378 -1.1016954 -3.8224831 -2.0718133 -1.0906192 -3.8190274 -2.100358 -1.0933883 -3.7916999 -2.115736 -1.0891088 -3.7727509 -2.1356249 -1.0873468 -3.75454 -2.1558428 -1.0858363 -3.702769 -2.1564388 -1.0742567 -3.6628006 -2.1633708 -1.0662013 -3.6494575 -2.1858046 -1.0662013 -3.6467309 -2.2146859 -1.0694737 -3.6569736 -2.2517333 -1.076774 -3.6619718 -2.2859149 -1.0825639 -3.6576912 -2.3145506 -1.0855846 -3.5269225 -2.2622414 -1.049587 -5.2778792 -3.4309947 -1.5971031 -3.5223336 -2.3207915 -1.0568873 -3.4822698 -2.3251653 -1.0488318 -3.4615245 -2.34215 -1.0468179 -3.4734309 -2.3814025 -1.0551251 -3.5318832 -2.4534607 -1.0782844 -3.5064733 -2.4678457 -1.0750118 -3.4258564 -2.4426866 -1.0541182 -3.3966811 -2.4534621 -1.049587 -3.3792198 -2.4725435 -1.0488318 -3.3243282 -2.4638455 -1.0359935 -3.2913451 -2.4708347 -1.0302037 -3.3169563 -2.5220253 -1.0435455 -3.296818 -2.5387878 -1.0420351 -3.336129 -2.6018164 -1.0601597 -3.3406093 -2.6384315 -1.0669565 -3.3175547 -2.6534395 -1.0646909 -3.2598443 -2.6402481 -1.0508456 -3.3027041 -2.708679 -1.0707325 -3.2845325 -2.7276566 -1.0702289 -3.2951431 -2.770802 -1.0795431 -3.2567084 -2.7727759 -1.0722429 -3.2345018 -2.7882838 -1.0704807 -3.2012901 -2.7940786 -1.0649426 -3.1811845 -2.8111057 -1.0639358 -3.1530561 -2.8208938 -1.0601597 -3.109863 -2.8168006 -1.0510974 -3.1096418 -2.851526 -1.0571389 -3.0197344 -2.8033969 -1.0314623 -3.0469091 -2.8636248 -1.0473214 -3.0587311 -2.9102824 -1.0578941 -3.03036 -2.9189255 -1.0541182 -2.9971476 -2.9226015 -1.0485801 -2.9646935 -2.9266598 -1.0432937 -2.92888 -2.9270105 -1.0367486 -2.9244733 -2.9586914 -1.0417833 -2.925873 -2.9966598 -1.0490836 -2.9188533 -3.0263972 -1.053363 -2.9028993 -3.0470526 -1.0543699 -2.8596056 -3.0387321 -1.0450559 -2.8389297 -3.0540946 -1.0443007 -2.7991889 -3.0486465 -1.0362452 -2.75247 -3.0349412 -1.0254208 -2.6944013 -3.0078042 -1.0100652 -2.7156608 -3.0692143 -1.0256726 -2.7076051 -3.098207 -1.0299519 -2.6910737 -3.1176925 -1.0309589 -2.6863358 -3.1510837 -1.0367486 -2.6644568 -3.1645465 -1.0357418 -2.634469 -3.1681862 -1.0314623 -2.6149797 -3.1842914 -1.0314623 -2.5539343 -3.1491668 -1.0143446 -2.6011188 -3.2478659 -1.0420351 -2.5577254 -3.2341623 -1.0322175 -2.5568964 -3.2742021 -1.040273 -2.5544896 -3.31282 -1.0478249 -2.4924848 -3.2737641 -1.0299519 -2.4781663 -3.2967315 -1.0324693 -2.4578915 -3.3118751 -1.0324693 -2.4043443 -3.2816179 -1.0178689 -2.3824618 -3.2939565 -1.0171137 -2.3655803 -3.3132384 -1.0186241 -2.3474364 -3.3308551 -1.0196309 -2.3324819 -3.3531404 -1.0221483 -2.3189852 -3.3777606 -1.0254208 -2.3041885 -3.4007387 -1.0281898 -2.3096411 -3.454232 -1.0405247 -2.2692125 -3.4392595 -1.0314623 -2.2274711 -3.4214888 -1.0216448 -2.2017272 -3.4277637 -1.0193793 -2.2039683 -3.4779932 -1.0307071 -2.1579583 -3.4520624 -1.0186241 -2.1418166 -3.4734757 -1.0211413 -2.1179485 -3.4824181 -1.0198827 -2.0925577 -3.488709 -1.0178689 -2.0814607 -3.5189745 -1.0231552 -2.0622678 -3.5358598 -1.0244138 -2.0525966 -3.5694201 -1.0307071 -2.0363848 -3.5920498 -1.0337279 -2.0204449 -3.6154594 -1.0370004 -1.9982227 -3.6277885 -1.0370004 -1.9463704 -3.5855484 -1.0208896 -1.9316384 -3.6110768 -1.0249174 -1.9103475 -3.6245735 -1.0254208 -1.8925322 -3.6448154 -1.0279381 -1.874981 -3.6658368 -1.0307071 -1.856372 -3.685051 -1.0329727 -1.84319 -3.7154446 -1.0385108 -1.8156843 -3.7171192 -1.0357418 -1.7848717 -3.7116191 -1.0309589 -1.7695187 -3.7382457 -1.03549 -1.7547234 -3.7665775 -1.0405247 -1.7473111 -3.8115826 -1.0503422 -1.7246867 -3.8239965 -1.0508456 -1.6823479 -3.7920458 -1.0387626 -1.6640812 -3.8138282 -1.0420351 -1.6280535 -3.7946184 -1.0337279 -1.6250548 -3.8526871 -1.0473214 -1.6058333 -3.8733137 -1.0503422 -1.2496701 -3.0675225 -0.82126647 -1.2265078 -3.0643511 -0.81824571 -1.2299976 -3.1285598 -0.83410478 -1.4485775 -3.75176 -1.0057857 -1.4217554 -3.7506235 -1.0030167 -1.3993903 -3.7610905 -1.0035201 -1.3865786 -3.7977874 -1.0113238 -1.3789177 -3.849956 -1.023407 -1.3616854 -3.876606 -1.0284415 -1.3514274 -3.9242342 -1.039266 -1.334444 -3.9535422 -1.0450559 -1.3071208 -3.9524674 -1.0425385 -1.284336 -3.9650168 -1.0437971 -1.2585195 -3.9682102 -1.0425385 -1.0140206 -3.2669473 -0.84946042 -0.9964878 -3.2814417 -0.851726 -0.98102021 -3.3032656 -0.85600543 -0.96100324 -3.3101521 -0.8562572 -0.93908906 -3.3104002 -0.85474676 -0.89781982 -3.2405567 -0.83435655 -0.82407647 -3.04702 -0.7807377 -0.81030571 -3.0707335 -0.78577232 -0 -0 -0 -1.0304835 -4.1083179 -1.0614184 -1.0031879 -4.1061025 -1.0591528 -0.97215021 -4.0877013 -1.0526078 -0.96188962 -4.1577048 -1.0697255 -0.93721008 -4.167305 -1.0707325 -0.91554844 -4.1909413 -1.0755154 -0.88479525 -4.172812 -1.0692221 -0.85780954 -4.1715269 -1.0674599 -0.83068377 -4.1691189 -1.0654461 -0.72880334 -3.7788267 -0.96072578 -0.69903415 -3.7480266 -0.95141172 -0.74092579 -4.1122694 -1.0465662 -0.71717209 -4.1253195 -1.0488318 -0.69712603 -4.16114 -1.0571389 -0.67974997 -4.2159777 -1.0704807 -0.64526856 -4.1645999 -1.0558803 -0.62126935 -4.1790104 -1.0586493 -0.59438699 -4.1741209 -1.0563837 -0.56366879 -4.1402907 -1.0465662 -0.54074895 -4.1628656 -1.0516008 -0.51448274 -4.1603427 -1.0500904 -0.48668623 -4.1441975 -1.0450559 -0.45782247 -4.1163263 -1.0370004 -0.43235421 -4.1171331 -1.036497 -0.40603596 -4.1091142 -1.0337279 -0.38001111 -4.1028552 -1.0314623 -0.35507962 -4.1080027 -1.0322175 -0.3318046 -4.1342211 -1.0385108 -0.30757681 -4.1516213 -1.0425385 -0.28190011 -4.1505337 -1.0417833 -0.25606912 -4.14639 -1.040273 -0.23062254 -4.1478829 -1.040273 -0.20478417 -4.1414871 -1.038259 -0.1785295 -4.1233277 -1.0332245 -0.15311781 -4.1214442 -1.0324693 -0.12839788 -4.1406856 -1.0372522 -0.10279549 -4.1336555 -1.0352383 -0.077083834 -4.1158233 -1.0304554 -0.051803607 -4.1142836 -1.0299519 -0.026710013 -4.1377506 -1.0359935 -0.0013291743 -4.1581602 -1.0412799 --0.024445087 -4.2035756 -1.0531112 --0.050030731 -4.1859274 -1.0485801 --0.075348489 -4.1652212 -1.0432937 --0.10148814 -4.1888685 -1.049587 --0.12689577 -4.1784935 -1.0470697 --0.15394098 -4.2163224 -1.0571389 --0.18054974 -4.2327032 -1.0616701 --0.20807157 -4.2634149 -1.0699773 --0.23364429 -4.2514281 -1.0672082 --0.25901884 -4.2383227 -1.0641874 --0.2857334 -4.2472754 -1.0669565 --0.31143484 -4.2406163 -1.0656978 --0.33629814 -4.224154 -1.0619218 --0.35907063 -4.185369 -1.052356 --0.38412496 -4.1763411 -1.050594 --0.41937834 -4.2721491 -1.0762706 --0.44267315 -4.241581 -1.0689703 --0.46465224 -4.2022309 -1.0594045 --0.49760708 -4.2608223 -1.0755154 --0.51831037 -4.2135029 -1.0639358 --0.5470053 -4.2323189 -1.0697255 --0.86603391 -6.3934512 -1.6378837 --0.90551853 -6.3899336 -1.6383871 --0.94513422 -6.3871293 -1.6391423 --0.99123865 -6.4261651 -1.6509737 --1.0277367 -6.4018059 -1.6461908 --1.070819 -6.4182901 -1.6522323 --1.1086951 -6.4030161 -1.6499667 --1.1486461 -6.3999033 -1.6509737 --1.1878935 -6.392735 -1.6509737 --1.2238097 -6.3682184 -1.6464425 --1.2675717 -6.3843212 -1.6527358 --1.3022538 -6.3546166 -1.646946 --1.343021 -6.3550286 -1.6492115 --1.3801367 -6.3381577 -1.646946 --1.4228108 -6.3465686 -1.6514771 --1.4623781 -6.340548 -1.6522323 --1.493889 -6.3003798 -1.6439252 --1.5345802 -6.2995577 -1.6461908 --1.573909 -6.2928395 -1.646946 --1.6146562 -6.2915006 -1.6492115 --1.644364 -6.2477813 -1.6401492 --1.6947651 -6.2824259 -1.6522323 --1.7317351 -6.2663116 -1.6507219 --1.7664634 -6.2425303 -1.6471977 --1.8068869 -6.2390108 -1.6492115 --1.8476086 -6.2361579 -1.6514771 --1.8892047 -6.2358189 -1.6544979 --1.9311525 -6.2361279 -1.6577704 --1.9682127 -6.2204704 -1.6567636 --2.0102119 -6.2202487 -1.660036 --2.0534952 -6.2234211 -1.6643155 --1.3025745 -3.8672614 -1.0211413 --1.3291092 -3.8674338 -1.023407 --2.1558578 -6.1507754 -1.6550014 --2.1896496 -6.1264949 -1.6519806 --2.233825 -6.1311312 -1.6570152 --2.274771 -6.1263824 -1.6595325 --2.3116341 -6.1104989 -1.6590291 --2.3431692 -6.0808473 -1.6547496 --2.3878591 -6.0852752 -1.660036 --2.4258707 -6.0723062 -1.6605395 --2.4645419 -6.0608935 -1.6615463 --2.5046444 -6.0528111 -1.6635603 --2.5451159 -6.0453572 -1.6658258 --2.5810187 -6.026958 -1.6650707 --1.3428726 -3.0828528 -0.83435655 --1.3641143 -3.0798647 -0.83586693 --2.662519 -5.9140053 -1.6466942 --2.7217078 -5.9477201 -1.6610429 --2.7365248 -5.884397 -1.6477011 --1.6054835 -3.3972301 -0.93706298 --1.6212729 -3.3768451 -0.93404222 --1.6394175 -3.3616142 -0.93253183 --1.6570069 -3.3454206 -0.93076974 --1.6796767 -3.3395135 -0.93202835 --1.7049768 -3.3386259 -0.93479741 --1.7258754 -3.3289607 -0.93504918 --1.7971886 -3.4150918 -0.96349484 --2.0857008 -3.9051278 -1.1112612 --3.1277146 -5.7710366 -1.6670845 --3.1649313 -5.7551289 -1.6680914 --3.1883969 -5.7144713 -1.6617981 --3.2353172 -5.715857 -1.6680914 --3.2698464 -5.6950583 -1.6678396 --3.3091118 -5.682415 -1.6701052 --3.342932 -5.660337 -1.6696018 --3.3741198 -5.6339064 -1.6678396 --3.4181688 -5.6288147 -1.6726226 --3.4516275 -5.6060872 -1.6721191 --3.4869857 -5.5864449 -1.6726226 --3.5341334 -5.5853906 -1.6789159 --3.5557997 -5.5440483 -1.6728743 --3.6061008 -5.5472808 -1.680678 --3.6528478 -5.5444465 -1.6867195 --3.686799 -5.5219288 -1.6867195 --3.695667 -5.4623294 -1.6751399 --3.7367742 -5.450726 -1.6786641 --2.1354682 -3.0740268 -0.93328702 --2.1520622 -3.0577002 -0.93228012 --2.1719069 -3.0460138 -0.93278354 --3.8881145 -5.3832707 -1.6869713 --3.9199295 -5.3577499 -1.6864678 --3.9590683 -5.3421507 -1.6892369 --3.9865441 -5.310791 -1.6869713 --3.9997275 -5.2608056 -1.6786641 --4.0396075 -5.2461333 -1.6819366 --4.0794573 -5.2311697 -1.6852092 --4.1138773 -5.2090783 -1.6862161 --4.1572461 -5.1980991 -1.690999 --4.189672 -5.173245 -1.6912507 --4.2293129 -5.1571693 -1.6945232 --4.2478943 -5.1154852 -1.6892369 --4.2723517 -5.0811753 -1.6864678 --4.3272872 -5.0828691 -1.6960336 --4.3407021 -5.0356956 -1.6889851 --4.3689737 -5.0060496 -1.6879783 --4.3989673 -4.9784226 -1.6877265 --4.3913631 -4.9087787 -1.6728743 --4.4207506 -4.8810244 -1.6726226 --4.4506168 -4.853807 -1.6726226 --4.43752 -4.7803006 -1.65626 --4.4999046 -4.7882466 -1.6688466 --4.5352035 -4.7668562 -1.6711122 --4.5636954 -4.7382421 -1.6708604 --4.60079 -4.7184658 -1.6738813 --4.6575289 -4.7183881 -1.6842022 --4.6898131 -4.6931443 -1.6854609 --4.7309093 -4.6765275 -1.6899921 --4.7574377 -4.6453824 -1.6892369 --4.7921209 -4.6221514 -1.6915025 --4.8161874 -4.5886545 -1.6899921 --4.8597565 -4.5736094 -1.6955302 --4.8593764 -4.5173454 -1.6854609 --4.9076748 -4.5064278 -1.6927611 --4.9316492 -4.4729786 -1.6915025 --4.9690933 -4.4516759 -1.6950268 --4.9774714 -4.4044261 -1.6884817 --4.9869146 -4.3585162 -1.6824402 --5.0120988 -4.32657 -1.6819366 --5.040761 -4.2976189 -1.6826918 --5.0655556 -4.2653613 -1.6821884 --5.0521955 -4.2014003 -1.6688466 --5.086854 -4.1776929 -1.6718674 --5.1116405 -4.145792 -1.6716157 --5.105258 -4.0889378 -1.6610429 --5.124938 -4.0533323 -1.6592808 --5.1573396 -4.0277677 -1.6617981 --5.1781244 -3.9930916 -1.6605395 --5.2210073 -3.975316 -1.666581 --5.2429805 -3.9414608 -1.6658258 --5.2717285 -3.9126775 -1.6673362 --5.2769022 -3.8665276 -1.6612947 --5.3240509 -3.8510942 -1.6688466 --5.36412 -3.8301651 -1.6741329 --5.3716998 -3.7860274 -1.6690984 --5.4099236 -3.7634978 -1.6738813 --5.4193516 -3.7209191 -1.6696018 --5.4380751 -3.6848817 -1.6683432 --5.4790854 -3.6638193 -1.6741329 --5.4901543 -3.6226685 -1.6706088 --5.5236335 -3.5963066 -1.6741329 --5.5203547 -3.5461299 -1.6663293 --5.5550885 -3.5204806 -1.670357 --5.54212 -3.4647796 -1.6597843 --5.5624514 -3.4302006 -1.6595325 --5.5850477 -3.3970113 -1.660036 --5.6082759 -3.364172 -1.6607912 --5.6371417 -3.3346248 -1.6633085 --5.6574965 -3.299973 -1.6633085 --5.6700883 -3.2608545 -1.6610429 --5.6925154 -3.2274342 -1.6617981 --5.7020736 -3.1867783 -1.6587774 --5.7461023 -3.1652744 -1.6660776 --5.7654161 -3.1299574 -1.6660776 --5.7990193 -3.1022842 -1.670357 --5.8342113 -3.0752189 -1.6751399 --5.857265 -3.0415933 -1.6763985 --5.8904648 -3.0130899 -1.680678 --5.9287205 -2.9869063 -1.6864678 --5.9564724 -2.955204 -1.6892369 --5.9588408 -2.9109528 -1.6847057 --5.9992661 -2.8852425 -1.6912507 --6.0247288 -2.8521047 -1.6935163 --6.0693097 -2.8277559 -1.7013199 --6.0707111 -2.7832012 -1.6967888 --6.0903211 -2.7470937 -1.697544 --6.1106005 -2.7112427 -1.6985509 --6.1351047 -2.6771817 -1.7008165 --6.1878796 -2.6551356 -1.7111375 --6.1897879 -2.6110983 -1.7071098 --6.2289357 -2.5827081 -1.7136549 --6.2625904 -2.5517442 -1.7186894 --6.2978959 -2.521184 -1.7242275 --6.3402662 -2.4931197 -1.7317795 --6.3608613 -2.4562616 -1.7332898 --6.4102001 -2.4302249 -1.7428557 --6.4222698 -2.3898342 -1.7421005 --6.4631758 -2.3600111 -1.7494007 --6.4893789 -2.3245528 -1.7526733 --6.490737 -2.2801993 -1.749149 --6.5210762 -2.2460039 -1.7536801 --6.5558248 -2.2130697 -1.75947 --6.5959263 -2.181617 -1.7667702 --6.5079141 -2.1082892 -1.7390797 --6.5142703 -2.0662692 -1.7373176 --6.5443873 -2.0317123 -1.7421005 --6.6326632 -2.0145867 -1.7627425 --6.7219 -1.9967291 -1.7836362 --6.7916474 -1.9721829 -1.7992436 --6.9153438 -1.9621803 -1.8294513 --7.0671482 -1.9584882 -1.8672111 --7.2462544 -1.9603363 -1.912271 --7.3535914 -1.9410359 -1.9379476 --7.4103498 -1.9074609 -1.9500308 --7.4435043 -1.8673736 -1.9558206 --7.466104 -1.8244233 -1.9588413 --7.4884558 -1.7812659 -1.9618621 --7.4671869 -1.7278643 -1.9533032 --7.5059743 -1.6883872 -1.9608552 --7.5218654 -1.6435393 -1.9623656 --7.5053 -1.5917318 -1.9553171 --7.5225091 -1.5472103 -1.9573309 --7.5290136 -1.5004563 -1.9565758 --7.5513821 -1.4567982 -1.9601001 --7.5744495 -1.4130994 -1.963876 --7.5582137 -1.3621327 -1.9573309 --7.571197 -1.31656 -1.9585897 --7.5915408 -1.2721592 -1.9618621 --7.6030254 -1.226171 -1.962869 --7.5845838 -1.1754932 -1.9560723 --7.6213288 -1.1333475 -1.963876 --7.6166425 -1.0849242 -1.9608552 --7.6001415 -1.0350335 -1.9548136 --7.6159463 -0.98962802 -1.9573309 --7.6093893 -0.94133353 -1.9540584 --7.583303 -0.89089739 -1.9457513 --7.637681 -0.84981102 -1.9585897 --7.6437144 -0.80303228 -1.9588413 --7.6571655 -0.75697356 -1.9611069 --7.6337199 -0.70738471 -1.9538068 --7.6543078 -0.66195011 -1.9580861 --7.6524372 -0.6145066 -1.9565758 --7.6560636 -0.56754059 -1.9565758 --7.6680923 -0.52114421 -1.9588413 --7.6556902 -0.47312793 -1.9548136 --7.6613479 -0.42630607 -1.9555688 --7.6589866 -0.37904945 -1.9543102 --7.6495657 -0.33154419 -1.9512894 --7.6620941 -0.28499734 -1.9540584 --7.6733718 -0.23827912 -1.9565758 --7.278903 0.53464299 -1.9479595 --7.2889504 0.58036971 -1.9516397 --7.2496843 0.62202555 -1.9419137 --7.2457314 0.66649705 -1.9419137 --7.2616696 0.71292639 -1.9474338 --7.2773104 0.75957632 -1.9529539 --7.2456613 0.80124116 -1.9455938 --7.2597747 0.84792626 -1.9508511 --7.2707143 0.89446074 -1.9553198 --7.2784853 0.94078982 -1.9589999 --7.2544103 0.98296773 -1.9540055 --7.2520633 1.0280037 -1.9550569 --7.2446647 1.0723407 -1.954794 --7.198854 1.1107346 -1.9440167 --7.1709456 1.1515162 -1.9382336 --7.1551805 1.1940639 -1.9358679 --7.1676826 1.2414057 -1.941388 --7.1580315 1.2850212 -1.9408623 --7.1604462 1.3308588 -1.9437538 --7.1246691 1.3694835 -1.9361308 --7.1511459 1.420133 -1.9458567 --7.1422973 1.4639848 -1.9458567 --7.1294045 1.5069829 -1.9448053 --7.1068258 1.5478231 -1.9411252 --7.1075501 1.5937245 -1.9440167 --7.0769553 1.632531 -1.9382336 --7.0724373 1.6772604 -1.9398109 --7.0460773 1.7167392 -1.9353422 --7.0223079 1.7566607 -1.9316621 --7.0160694 1.8009158 -1.9329764 --7.009552 1.8451606 -1.9342908 --6.9897151 1.8858722 -1.9319249 --6.9659233 1.9253814 -1.9285077 --6.9484081 1.9665099 -1.9269305 --6.9158235 2.0031986 -1.9211476 --6.9709291 2.0656171 -1.9403366 --6.941504 2.103312 -1.935605 --6.9422913 2.1501486 -1.939548 --6.9032125 2.1845505 -1.9321878 --6.8905964 2.2271636 -1.9324507 --6.9189453 2.2833171 -1.9445424 --6.9093766 2.3272686 -1.9458567 --6.861208 2.3580117 -1.9361308 --6.8429685 2.3987896 -1.9350793 --6.8281207 2.4407322 -1.9350793 --6.8275199 2.4878705 -1.9392852 --6.7949419 2.5233319 -1.9342908 --6.7730145 2.5625863 -1.9324507 --6.7445602 2.5992372 -1.9287705 --6.7159114 2.6356354 -1.9250906 --6.7148433 2.6828818 -1.9295592 --6.6982551 2.7240329 -1.9295592 --6.6858721 2.7669268 -1.9308735 --6.6732144 2.8097713 -1.9321878 --6.6487536 2.8476243 -1.9300849 --6.6081586 2.8783455 -1.9232504 --6.5930195 2.9200108 -1.9240391 --6.5925727 2.9683349 -1.9292964 --6.5768666 3.0099354 -1.9300849 --6.5486517 3.0457563 -1.9271934 --6.5350738 3.0883551 -1.9287705 --6.527307 3.1338258 -1.9321878 --6.4897456 3.1649334 -1.9266677 --6.4494553 3.1944132 -1.920359 --6.4366283 3.2373955 -1.9224619 --6.3994589 3.26805 -1.9172046 --6.4092631 3.3228023 -1.9264048 --6.3597269 3.3467846 -1.9174675 --6.3399224 3.3861988 -1.9177303 --6.319026 3.4250362 -1.9177303 --6.3097258 3.4702559 -1.9214104 --6.2967386 3.5136089 -1.9240391 --6.2800984 3.5550315 -1.9256163 --6.2364144 3.5810037 -1.9187818 --6.2068214 3.6148307 -1.916416 --6.1936617 3.658246 -1.9193076 --6.16365 3.6917176 -1.9169418 --6.102951 3.706423 -1.9048501 --6.0858445 3.7473423 -1.9066901 --6.1052923 3.8111885 -1.920359 --6.0067916 3.8011005 -1.8961756 --6.0523791 3.8821754 -1.9185189 --6.0171208 3.9118748 -1.9148389 --5.9744763 3.9365089 -1.908793 --5.9582329 3.9784527 -1.9114217 --5.9448957 4.0225081 -1.9151018 --0 0 -0 --5.8887472 4.0907536 -1.9129988 --5.8564358 4.1218104 -1.9106331 --5.8365331 4.1615891 -1.9124731 --5.8171444 4.2018437 -1.9145761 --5.7717886 4.2232113 -1.9080044 --5.7139902 4.2349868 -1.897227 --5.7311015 4.3024125 -1.9119474 --5.6976833 4.3322401 -1.9095817 --5.7214403 4.4059796 -1.9269305 --5.6433301 4.4012399 -1.9093188 --5.6063766 4.4280081 -1.9059016 --5.6084828 4.4858327 -1.9161532 --5.5823522 4.5213761 -1.9166789 --5.5597258 4.5598273 -1.9185189 --5.5160575 4.5809083 -1.9129988 --5.4856305 4.6128044 -1.9122102 --5.4535508 4.643249 -1.9108959 --5.3913469 4.6476398 -1.8988042 --5.3867121 4.7015734 -1.9074787 --5.3476419 4.7255912 -1.9037986 --5.2933822 4.7357945 -1.8945985 --5.2670841 4.7707763 -1.8956499 --5.2654414 4.8284407 -1.9059016 --5.2145057 4.8409615 -1.8980156 --5.2079015 4.8946748 -1.9066901 --5.1735768 4.9225469 -1.905113 --5.1099257 4.9220643 -1.8924955 --5.100348 4.973537 -1.9003814 --5.0663028 5.001349 -1.899067 --5.0191431 5.0159698 -1.8927584 --5.0215006 5.0803013 -1.9056387 --4.9895601 5.1103268 -1.9053758 --4.955431 5.1380672 -1.9043244 --4.9364538 5.1816516 -1.9093188 --4.8939891 5.2005997 -1.905113 --4.8619866 5.2305307 -1.905113 --4.7913079 5.218327 -1.8896041 --4.7591987 5.2476277 -1.8896041 --4.7339907 5.2846375 -1.8924955 --4.7577281 5.377182 -1.9156275 --4.7062359 5.3852024 -1.9080044 --4.6642799 5.4037509 -1.9043244 --4.6285319 5.4293313 -1.9032729 --4.5994802 5.4627967 -1.905113 --4.5819101 5.5102067 -1.9119474 --4.5455651 5.535234 -1.9108959 --4.515162 5.5675178 -1.9124731 --4.4857392 5.6011429 -1.9145761 --4.4530821 5.6308322 -1.9153646 --4.4297285 5.6724997 -1.920359 --4.3889489 5.6919317 -1.9177303 --4.3434234 5.7049351 -1.9129988 --4.3141327 5.7391915 -1.9156275 --4.2719383 5.7562561 -1.9124731 --4.2291265 5.7722411 -1.9090558 --4.2213297 5.8363934 -1.9219362 --4.1815152 5.8566875 -1.9200962 --4.134387 5.8664598 -1.9148389 --4.0966606 5.8893414 -1.9140503 --4.0560799 5.9080029 -1.9119474 --4.0267863 5.9431643 -1.9153646 --3.9982862 5.9797926 -1.9193076 --3.9519577 5.9897151 -1.9145761 --3.9388132 6.0502415 -1.9264048 --3.8995304 6.0710478 -1.9253534 --3.859108 6.0899706 -1.9237761 --3.8068402 6.0898066 -1.9161532 --3.7850966 6.1385117 -1.924302 --3.7498662 6.1657434 -1.9256163 --3.7179172 6.198566 -1.9287705 --3.6734295 6.210465 -1.9253534 --3.6469166 6.252892 -1.9316621 --3.6080003 6.2743149 -1.9313992 --3.5851316 6.3240361 -1.9400737 --3.5406144 6.3358068 -1.9369193 --3.507256 6.3675547 -1.9400737 --3.4561553 6.3669062 -1.9332392 --3.4174786 6.388844 -1.9335021 --3.381361 6.415668 -1.9353422 --3.3463764 6.4448586 -1.9379708 --3.299741 6.4515252 -1.9337649 --3.2635646 6.4785447 -1.9358679 --3.2340388 6.5191927 -1.9421766 --3.1812773 6.5129037 -1.9342908 --3.1454349 6.540997 -1.9369193 --3.1056535 6.5610461 -1.9371822 --3.06493 6.5791035 -1.9369193 --3.0160632 6.5793662 -1.9313992 --2.9859462 6.6206174 -1.9382336 --2.9448755 6.6379323 -1.9379708 --2.9118044 6.6735644 -1.943228 --2.864717 6.6771178 -1.9390223 --2.8296902 6.7087941 -1.943228 --2.7881033 6.7251391 -1.9429651 --2.7424195 6.7313972 -1.9398109 --2.705724 6.7597432 -1.943228 --2.6716068 6.7950754 -1.9487482 --2.634726 6.8239422 -1.9524282 --2.5856266 6.821033 -1.9469081 --2.5528052 6.8611865 -1.9540055 --2.4947817 6.8332152 -1.941388 --2.4508557 6.8429437 -1.9398109 --2.4155338 6.8769708 -1.945331 --2.3798862 6.910821 -1.9508511 --2.3318861 6.9088378 -1.9461195 --2.2840002 6.9065266 -1.941388 --2.2493057 6.9442768 -1.9482224 --2.2084033 6.9634662 -1.9497997 --2.1659205 6.977807 -1.9500625 --2.1157792 6.9669609 -1.943228 --2.0743635 6.984437 -1.9445424 --2.0341575 7.0062995 -1.947171 --1.9916557 7.0205054 -1.9476967 --1.9544631 7.0539804 -1.9537426 --1.9129063 7.07236 -1.9555826 --1.8591411 7.0447807 -1.9445424 --1.8146787 7.0513835 -1.943228 --1.7734892 7.0708084 -1.9455938 --1.7238917 7.0562501 -1.9384965 --1.6957321 7.1305256 -1.9563712 --1.6460806 7.1154151 -1.9492739 --1.6083134 7.1517396 -1.956634 --1.557405 7.1294236 -1.9476967 --1.5204295 7.1709375 -1.956634 --1.4750415 7.1735158 -1.954794 --1.4247816 7.1512051 -1.9461195 --1.3803281 7.1569705 -1.945331 --1.3482299 7.2288551 -1.9629427 --1.3047037 7.2417393 -1.9642571 --1.260905 7.2534108 -1.9653085 --1.2109604 7.2286568 -1.9563712 --1.1698052 7.2559547 -1.9618913 --1.1218673 7.241066 -1.9558455 --1.0730226 7.2182279 -1.9476967 --1.0348258 7.2676606 -1.9595256 --0.98735297 7.252841 -1.9537426 --0.94494194 7.2750282 -1.9582112 --0.90111315 7.2873926 -1.9600513 --0.85447121 7.276494 -1.9555826 --0.80533475 7.2413244 -1.9445424 --0.76461005 7.2816339 -1.9542683 --0.72029531 7.290029 -1.9553198 --0.67404097 7.2779789 -1.9508511 --0.63044947 7.2944741 -1.9542683 --0.58452415 7.2837787 -1.9503254 --0.54088759 7.3016615 -1.9542683 --0.49946666 7.3548994 -1.9679371 --0.45326084 7.3404913 -1.9632056 --0.40709046 7.3229041 -1.9576855 --0.36139047 7.3098454 -1.9534796 --0.31736282 7.3312039 -1.958737 --0.27162457 7.3127656 -1.9532168 --0.22722505 7.3297243 -1.9574226 --0.18210347 7.3251934 -1.9558455 --0.13695653 7.3155618 -1.9529539 --0.092246316 7.3307357 -1.9568969 --0.047136612 7.3109026 -1.9513768 --0.0022773135 7.3139486 -1.9521654 -0.042831186 7.3524175 -1.9626799 -0.087791964 7.3394747 -1.9592627 -0.13215522 7.3021402 -1.9492739 -0.17787552 7.338809 -1.9595256 -0.22296116 7.3395081 -1.9600513 -0.26781452 7.3331809 -1.958737 -0.31189683 7.3101931 -1.9529539 -0.35712302 7.3158507 -1.9550569 -0.40258971 7.3241191 -1.9579483 -0.44893849 7.3446236 -1.9642571 -0.49074954 7.2935982 -1.9511139 -0.53655541 7.3048835 -1.9550569 -0.57967913 7.2802944 -1.9492739 -0.62508297 7.2852521 -1.9516397 -0.66844469 7.2668681 -1.9476967 -0.71368176 7.2693515 -1.9495368 -0.75937569 7.2753911 -1.9524282 -0.79986054 7.2331948 -1.9421766 -0.84927124 7.2712741 -1.9540055 -0.89434278 7.2697568 -1.9550569 -0.94066596 7.2775283 -1.958737 -0.98802608 7.291697 -1.9642571 -1.0270548 7.2453761 -1.9532168 -1.0676737 7.2131691 -1.9461195 -1.1138275 7.2188778 -1.9495368 -1.1579475 7.2109551 -1.9492739 -1.2058276 7.2256021 -1.9553198 -1.2473387 7.2019062 -1.9508511 -1.2935529 7.2055125 -1.9540055 -1.3361526 7.1889029 -1.9516397 -1.3835187 7.1976233 -1.9563712 -1.4282206 7.1918378 -1.9571598 -1.4694138 7.1687617 -1.9532168 -1.5103775 7.1454515 -1.9492739 -1.5539873 7.1351066 -1.9490111 -1.596682 7.1207299 -1.9476967 -1.6355693 7.0901165 -1.9419137 -1.6772604 7.0724373 -1.9398109 -1.7192532 7.0563884 -1.9382336 -1.7615808 7.0419626 -1.9371822 -1.8114772 7.0571876 -1.9445424 -1.854008 7.0431404 -1.9437538 -1.8946741 7.0223169 -1.9411252 -1.9341259 6.9975405 -1.937445 -1.9830722 7.0068927 -1.9434909 -2.0246854 6.9899592 -1.9421766 -2.0721993 6.9931302 -1.9466453 -2.1117101 6.9692035 -1.9434909 -2.1598589 6.9736257 -1.9484853 -2.2034814 6.9630013 -1.9492739 -2.2440858 6.9429235 -1.9474338 -2.2772667 6.9006219 -1.9392852 -2.3229547 6.8965764 -1.9421766 -2.3611491 6.8703318 -1.9387594 -2.403899 6.8575358 -1.9392852 -2.4443061 6.8381143 -1.9379708 -2.4815915 6.810297 -1.9342908 -2.5270281 6.8048906 -1.9371822 -2.5622447 6.7721124 -1.9321878 -2.608609 6.7688665 -1.9358679 -2.6416299 6.7311788 -1.9295592 -2.6853888 6.7211146 -1.9313992 -2.7243965 6.6991487 -1.9298221 -2.763974 6.6787405 -1.9287705 -2.8071494 6.6669903 -1.9303478 -2.8533244 6.662056 -1.9340279 -2.8856688 6.6249642 -1.9282448 -2.9411168 6.6406536 -1.9382336 -2.9687312 6.593452 -1.9295592 -3.0035088 6.5628304 -1.9258791 -3.0473843 6.5521507 -1.9282448 -3.0920665 6.5429239 -1.9311364 -3.1363323 6.5325255 -1.9337649 -3.1678948 6.4958158 -1.9285077 -3.2016954 6.4641523 -1.9248277 -3.2439005 6.4495564 -1.9264048 -3.276829 6.4166427 -1.9224619 -3.3205812 6.4049807 -1.9250906 -3.3607178 6.3861928 -1.9256163 -3.3893816 6.3458796 -1.9195704 -3.4167578 6.3037586 -1.9129988 -3.456768 6.2852111 -1.9137874 -3.4995008 6.2714648 -1.9161532 -3.5369649 6.2481952 -1.9156275 -3.5795617 6.2339048 -1.9179932 -3.6109452 6.2001524 -1.9143132 -3.64254 6.1670804 -1.9108959 -3.6902299 6.1611671 -1.9161532 -3.7249589 6.1334605 -1.9145761 -3.765559 6.1154184 -1.9161532 -3.8244755 6.1265697 -1.9271934 -3.8341284 6.0589662 -1.9129988 -3.867065 6.0288301 -1.9108959 -3.9039843 6.0049887 -1.9108959 -3.9200487 5.9495034 -1.9006443 -3.9763091 5.9550238 -1.9103702 -4.0295391 5.9552827 -1.9185189 -4.0660043 5.9304457 -1.9185189 -4.1072712 5.9125166 -1.9208847 -4.1273646 5.864325 -1.9132617 -4.1475825 5.8168955 -1.9059016 -4.1628532 5.7631836 -1.8964385 -4.1969976 5.7359753 -1.8959128 -4.2401586 5.7209654 -1.8995929 -4.2803965 5.7017841 -1.9019586 -4.3094602 5.6677337 -1.89933 -4.3447447 5.6419487 -1.8995929 -4.3656311 5.5976872 -1.8935469 -4.3933163 5.5624671 -1.8906555 -4.4189253 5.5248585 -1.8869754 -4.4545641 5.4998894 -1.887764 -4.4845552 5.4679775 -1.8861868 -4.5093899 5.4299679 -1.8825067 -4.5680871 5.4324689 -1.8932841 -4.5969548 5.3991957 -1.8914441 -4.622436 5.3621197 -1.8882897 -4.6558852 5.334383 -1.8885525 -4.6904454 5.3078833 -1.8893412 -4.7242126 5.2804413 -1.8898669 -4.7506933 5.2449198 -1.8875011 -4.7716985 5.2035842 -1.8830324 -4.8153553 5.1869335 -1.887764 -4.8497348 5.1601009 -1.8888154 -4.8819704 5.1309452 -1.8890783 -4.9213948 5.109231 -1.8922327 -4.9492836 5.0754843 -1.8909184 -4.9884682 5.0532589 -1.8940727 -5.027566 5.0307431 -1.897227 -5.0343184 4.9760647 -1.8880268 -5.0668278 4.947103 -1.8888154 -5.1123681 4.9306531 -1.8945985 -5.1418271 4.8985257 -1.8943356 -5.1331358 4.8305235 -1.8798782 -5.1796417 4.8146987 -1.8861868 -5.2062435 4.7802167 -1.8851354 -5.2497721 4.7611432 -1.8903927 -5.2817621 4.7314162 -1.8914441 -5.3099718 4.6982794 -1.8911812 -5.3437858 4.670053 -1.8930212 -5.3686881 4.6340246 -1.8917069 -5.3977551 4.6016216 -1.8919698 -5.4295793 4.5715218 -1.8932841 -5.4575272 4.5381203 -1.8932841 -5.4912357 4.5094457 -1.8953871 -5.4985662 4.4592619 -1.8882897 -5.5664964 4.4580011 -1.9024843 -5.5876904 4.4189749 -1.9003814 -5.6017704 4.3745131 -1.8959128 -5.6376762 4.3471274 -1.899067 -5.6680827 4.3153753 -1.9003814 -5.6851983 4.27356 -1.897227 -5.7058892 4.2345715 -1.8953871 -5.7255378 4.1949205 -1.8932841 -5.741787 4.1529264 -1.8901298 -5.771873 4.1209803 -1.8917069 -5.8167686 4.0993791 -1.8982785 -5.8204246 4.0487385 -1.8911812 -5.8539085 4.0189543 -1.8940727 -5.8984289 3.9964867 -1.9006443 -5.9244442 3.9612916 -1.90117 -5.9945478 3.9551451 -1.9161532 -5.961288 3.8809235 -1.8974899 -5.976058 3.8385384 -1.8945985 -5.9693408 3.7826943 -1.8848726 -6.0578961 3.7868998 -1.9059016 -6.0276308 3.7167504 -1.8888154 -6.0569186 3.6837053 -1.8909184 -6.0868545 3.6509368 -1.8932841 -6.1307354 3.6262875 -1.9001186 -6.1437016 3.5832562 -1.897227 -6.1722646 3.5493383 -1.89933 -6.1972842 3.5133021 -1.9003814 -6.2103014 3.4705048 -1.8977528 -6.2272534 3.430007 -1.8964385 -6.2549663 3.3954141 -1.8985413 -6.2858925 3.3624296 -1.9016957 -6.3098202 3.3255959 -1.9027472 -6.3164053 3.2797053 -1.8985413 -6.3389874 3.2422044 -1.89933 -6.3303242 3.1889284 -1.8906555 -6.3843474 3.1671717 -1.90117 -6.398459 3.1253984 -1.8995929 -6.4305592 3.0923493 -1.9035357 -6.4415631 3.0491202 -1.90117 -6.4793935 3.0184984 -1.906953 -6.5021782 2.9806945 -1.9082673 -6.5185857 2.9399486 -1.9077415 -6.5338564 2.8987226 -1.906953 -6.5541725 2.8597343 -1.9077415 -6.5875578 2.8263097 -1.9124731 -6.594996 2.7817128 -1.9095817 -6.6021352 2.7371314 -1.9066901 -6.6125507 2.6940227 -1.9048501 -6.6343312 2.6555486 -1.9064273 -6.637929 2.6098506 -1.9027472 -6.6556177 2.5697665 -1.9032729 -6.6784782 2.5316148 -1.9053758 -6.7065468 2.4952972 -1.9090558 -6.7235441 2.454761 -1.9095817 -6.7348461 2.4121592 -1.9085301 -6.7513409 2.3714287 -1.9090558 -6.7767124 2.3337269 -1.9122102 -6.7744484 2.2865505 -1.9074787 -6.8149176 2.253721 -1.9151018 -6.8231101 2.2100801 -1.9135245 -6.8282647 2.165549 -1.9111588 -6.8423452 2.1238966 -1.9114217 -6.882946 2.0902793 -1.9193076 -6.8817677 2.0438888 -1.9153646 -6.8904729 2.0005491 -1.9143132 -6.9165421 1.96218 -1.918256 -6.942399 1.9235661 -1.922199 -6.9438257 1.8781626 -1.9193076 -6.9356275 1.8303539 -1.9137874 -6.9635477 1.7920889 -1.9185189 -6.988451 1.7528462 -1.9224619 -6.9775167 1.7046698 -1.916416 -6.9728255 1.6582553 -1.9122102 -7.0120106 1.6221763 -1.920359 -7.0274801 1.5803901 -1.9219362 -7.0285611 1.5353887 -1.9195704 -7.0369062 1.4920334 -1.9193076 -7.0402579 1.4476626 -1.9177303 -7.0632024 1.4072628 -1.9216733 -7.0574927 1.3611588 -1.9177303 -7.0723515 1.3190664 -1.9195704 -7.0755644 1.2747918 -1.918256 -7.088006 1.2321784 -1.9195704 -7.085917 1.1870716 -1.9169418 -7.0997353 1.1446447 -1.9187818 -7.1199737 1.103126 -1.9224619 -7.1371064 1.0609767 -1.9253534 -7.1272435 1.0148548 -1.9208847 -7.1295123 0.97058374 -1.9198333 -7.1468153 0.92830908 -1.9229876 -7.1389709 0.88278407 -1.9193076 -7.1442533 0.83896357 -1.9193076 -7.1598148 0.79628289 -1.922199 -7.1597681 0.75183302 -1.9208847 -7.1584854 0.70731908 -1.9193076 -7.1655726 0.66364861 -1.9200962 -7.1647034 0.61925435 -1.9187818 -7.180871 0.57628226 -1.922199 -7.1948562 0.53299278 -1.9250906 -7.2008791 0.48903158 -1.9258791 -7.1873732 0.44383031 -1.9214104 -7.214045 0.40105611 -1.927982 -7.2192607 0.35692647 -1.9287705 -7.2126398 0.31224903 -1.9264048 -7.2086349 0.26777327 -1.9248277 -7.2101421 0.22353686 -1.9248277 -7.2219877 0.17955415 -1.9277191 -7.2268124 0.1353091 -1.9287705 -7.2275066 0.090963669 -1.9287705 -7.2211747 0.046572343 -1.9269305 -7.2058873 0.0022608107 -1.9227247 -7.2395344 -0.042155772 -1.9319249 -7.2401042 -0.086587615 -1.9321878 -7.2259312 -0.13076386 -1.9285077 -7.2307801 -0.17524007 -1.9300849 -7.2218533 -0.21936841 -1.927982 -7.2377267 -0.26431331 -1.9327135 -7.2407885 -0.30892462 -1.9340279 -7.2329745 -0.35306427 -1.9324507 -7.2287455 -0.3973321 -1.9319249 -7.2040215 -0.44032198 -1.9258791 -7.2233253 -0.48601002 -1.9319249 -7.2076979 -0.52940154 -1.9285077 -7.2273965 -0.57545877 -1.9348165 -7.2025814 -0.61797649 -1.9290335 -7.1967325 -0.661982 -1.9285077 -7.1877341 -0.70565575 -1.9271934 -7.1938248 -0.75084901 -1.9300849 -7.191 -0.79518777 -1.9306107 -7.1821523 -0.83884764 -1.9295592 -7.1854882 -0.88396233 -1.9319249 -7.193325 -0.92976868 -1.935605 -7.2113867 -0.97713113 -1.9421766 -7.1651344 -1.0156672 -1.9311364 -7.1587672 -1.0596125 -1.9311364 -7.1378284 -1.1013088 -1.9271934 -7.1442728 -1.1472287 -1.9308735 -7.1171145 -1.1877052 -1.9253534 -7.1163473 -1.2325063 -1.9271934 -7.0887089 -1.2725649 -1.9216733 -7.0902524 -1.317801 -1.924302 -7.0782433 -1.3605521 -1.9232504 -7.0943666 -1.4088479 -1.9300849 -7.0562887 -1.446341 -1.9219362 -7.1152453 -1.5039877 -1.9408623 -7.0983415 -1.5459739 -1.9387594 -7.0868387 -1.5890769 -1.9382336 -7.0666142 -1.6301438 -1.9353422 -7.0536623 -1.6728046 -1.9345536 -7.0620127 -1.7206244 -1.9398109 -7.0363469 -1.7601751 -1.935605 -7.0226107 -1.8025961 -1.9348165 -7.012351 -1.8458978 -1.9350793 -6.9664283 -1.8795853 -1.9253534 -6.9380255 -1.9176656 -1.9206219 -6.8889952 -1.9496847 -1.9101074 -6.8092537 -1.9723116 -1.8909184 -6.6527185 -1.97127 -1.8499118 -6.5435481 -1.9826599 -1.8223112 -6.440022 -1.9944991 -1.7962878 -6.3246422 -2.0013573 -1.7668471 -6.2810302 -2.0300329 -1.7579098 -6.2034068 -2.0470562 -1.7392465 -6.1514144 -2.0718315 -1.7279434 -6.0665064 -2.0847523 -1.7071773 -6.0035253 -2.1043735 -1.6927198 -5.9432588 -2.1242759 -1.6790509 -5.8829761 -2.1435184 -1.665382 -5.8805661 -2.1836078 -1.6685364 -5.4637074 -2.066967 -1.5510367 -5.414012 -2.0862215 -1.5402594 -5.3786573 -2.1105866 -1.5336878 -5.2554088 -2.0995007 -1.5013556 -5.0368781 -2.0480766 -1.4408972 -5.0046048 -2.0708239 -1.4351143 -4.8113036 -2.0254583 -1.3817531 -4.7686324 -2.042022 -1.3728157 -4.70825 -2.0504296 -1.3586211 -4.6541204 -2.0609102 -1.3462666 -4.5454993 -2.046236 -1.3176146 -4.3837247 -2.0058076 -1.2729279 -4.3538394 -2.0245273 -1.2676706 -4.3038278 -2.0334711 -1.2563674 -4.2225623 -2.02684 -1.2356013 -4.1875005 -2.0417116 -1.2287669 -4.1714358 -2.0656536 -1.2277155 -4.0552573 -2.03917 -1.1961719 -3.9859617 -2.0350435 -1.178823 -3.95627 -2.0505784 -1.1735657 -3.9094634 -2.0568366 -1.1630512 -3.8278403 -2.043956 -1.1417593 -3.7745144 -2.0453296 -1.1291419 -3.7001843 -2.0344989 -1.1099529 -3.6648846 -2.044467 -1.1028556 -3.6489129 -2.0650141 -1.1018041 -3.5968518 -2.0647774 -1.0894496 -3.6066239 -2.0999224 -1.0965469 -3.5695817 -2.107779 -1.0889239 -3.5491326 -2.1251788 -1.0865581 -3.5112886 -2.131887 -1.0786722 -3.487462 -2.1468136 -1.075255 -3.4578564 -2.1579509 -1.0699978 -3.4184632 -2.1626134 -1.0615861 -3.4108136 -2.1871953 -1.0634261 -3.4312997 -2.2301755 -1.0744665 -3.3941891 -2.2357893 -1.0668434 -3.3964529 -2.2672918 -1.0721006 -3.3808792 -2.2870076 -1.0715749 -3.3787177 -2.3158948 -1.0755179 -3.3676133 -2.3387852 -1.0765693 -3.328743 -2.3421857 -1.0684205 -3.2946715 -2.3485599 -1.061849 -3.2551737 -2.3506489 -1.0534374 -3.2220037 -2.3569012 -1.0471287 -3.1927555 -2.3657086 -1.0421343 -3.2236986 -2.4194376 -1.0576432 -3.2517972 -2.4718819 -1.0723635 -3.2090526 -2.4705913 -1.0629004 -3.2394755 -2.5258439 -1.0786722 -3.1966622 -2.5241406 -1.0692092 -3.182621 -2.5449128 -1.0697349 -3.1317117 -2.5358462 -1.0573803 -3.1384706 -2.5733733 -1.0652663 -3.1300433 -2.5987477 -1.0678948 -3.0977948 -2.6042407 -1.0621119 -3.0707393 -2.6138153 -1.0581689 -3.0487981 -2.6275671 -1.056066 -3.0449736 -2.6570122 -1.0605347 -3.0249989 -2.6724508 -1.0592204 -2.9517467 -2.6401303 -1.0384542 -2.8818669 -2.6096046 -1.0187395 -2.9937813 -2.7446358 -1.0660548 -2.9196181 -2.7097723 -1.044763 -2.8902833 -2.71574 -1.0400314 -2.8910375 -2.7500529 -1.046603 -2.8692455 -2.7630539 -1.044763 -2.8625977 -2.7907131 -1.0487058 -2.8406146 -2.8034794 -1.0468658 -2.8404179 -2.8379097 -1.0534374 -2.8338017 -2.8662658 -1.0576432 -2.8316615 -2.8994801 -1.063689 -2.8077903 -2.9105492 -1.0613233 -2.8497643 -2.9906034 -1.084981 -2.81285 -2.9883561 -1.0776207 -2.7432325 -2.9504297 -1.0571175 -2.7041998 -2.9444606 -1.0487058 -2.674417 -2.9481313 -1.0439743 -2.653059 -2.960892 -1.04266 -2.6316452 -2.9735017 -1.0413457 -2.6089072 -2.9845071 -1.0395057 -2.5987394 -3.0099552 -1.0429229 -2.5677054 -3.0111573 -1.0376656 -2.5659561 -3.0467861 -1.044763 -2.5324109 -3.0446661 -1.0384542 -2.4861326 -3.0265894 -1.0266254 -2.4620464 -3.0350418 -1.0242596 -2.4500105 -3.0583766 -1.0271511 -2.4246163 -3.0650263 -1.0242596 -2.4289188 -3.1095066 -1.0345113 -2.3797529 -3.0853794 -1.0211053 -2.3455839 -3.0799613 -1.0142708 -2.442564 -3.2485619 -1.0668434 -2.4041893 -3.238692 -1.0584317 -2.3563368 -3.2152421 -1.0455515 -2.3009491 -3.180382 -1.0289911 -2.265697 -3.1724513 -1.021631 -2.2600806 -3.2060125 -1.0282025 -2.2365105 -3.2142746 -1.0263625 -2.2200217 -3.2327101 -1.0279397 -2.1985214 -3.2438745 -1.0271511 -2.1828651 -3.2637205 -1.029254 -2.162267 -3.2762475 -1.0289911 -2.1500177 -3.3015833 -1.0329341 -2.1427515 -3.3350103 -1.0395057 -2.1387699 -3.3741772 -1.0479172 -2.1210938 -3.3921463 -1.0494945 -2.0966961 -3.399348 -1.0476544 -2.0908351 -3.4368818 -1.0555403 -2.0930266 -3.4885383 -1.0678948 -2.0833673 -3.5212476 -1.0742036 -1.9936881 -3.4172726 -1.0374027 -1.9471984 -3.3851078 -1.023471 -1.9263911 -3.3969917 -1.023471 -1.8942184 -3.3885322 -1.0171623 -1.8938669 -3.4372795 -1.0287282 -1.8870054 -3.4751244 -1.036877 -1.865647 -3.4866374 -1.036877 -1.8536624 -3.515945 -1.0423971 -1.8467216 -3.5555124 -1.0510716 -1.7954435 -3.5092192 -1.0334598 -1.7717079 -3.515861 -1.0321455 -1.7389572 -3.5041916 -1.0253111 -1.7275828 -3.535604 -1.0316198 -1.7020943 -3.5383112 -1.029254 -1.6729238 -3.5329902 -1.0245225 -1.650807 -3.5423138 -1.0242596 -1.6290407 -3.5523763 -1.0242596 -1.6143507 -3.5781376 -1.0289911 -1.6005788 -3.6064978 -1.0345113 -1.5896051 -3.6418979 -1.0421343 -1.5676092 -3.6524696 -1.0423971 -1.5624105 -3.7029159 -1.0544889 -1.2630084 -3.0448244 -0.85760462 -1.2479408 -3.0614524 -0.86023325 -1.4645987 -3.6575918 -1.0329341 -1.4403641 -3.6620197 -1.0316198 -1.4202989 -3.6770897 -1.0334598 -1.4004447 -3.6929531 -1.0355628 -1.3784314 -3.7032852 -1.0360885 -1.3589901 -3.7207372 -1.038717 -1.3397114 -3.7389979 -1.0416086 -1.3295282 -3.7835624 -1.0521231 -1.3342346 -3.872844 -1.0755179 -1.314147 -3.8919284 -1.0786722 -1.2866083 -3.8889256 -1.0755179 -1.2511327 -3.8609476 -1.0652663 -1.2268358 -3.8667123 -1.0647405 -1.1945107 -3.8465219 -1.0568546 -0.99070668 -3.2601323 -0.88783383 -0.97480243 -3.2800241 -0.89177674 -0.95788461 -3.2970629 -0.89493114 -0.93737304 -3.30195 -0.89466828 -0.91838235 -3.3122888 -0.89598256 -0.87336826 -3.2265837 -0.87022203 -0.81024992 -3.0676856 -0.82395816 -0.79165202 -3.0735338 -0.82422101 -0.94706994 -3.7736943 -1.0195282 -0.92984676 -3.8038042 -1.0263625 -0.91808951 -3.8582499 -1.0400314 -0.91417384 -3.9493544 -1.063952 -0.86898136 -3.8616948 -1.0379285 -0.85308897 -3.9027743 -1.0479172 -0.83632493 -3.9419153 -1.0573803 -0.8165881 -3.9687097 -1.0634261 -0.78562814 -3.9405262 -1.054226 -0.76216495 -3.9490621 -1.0552775 -0.72961247 -3.9090846 -1.0429229 -0.69911796 -3.877404 -1.0329341 -0.67646915 -3.8882749 -1.0347742 -0.67330205 -4.0160604 -1.0689464 -0.63483977 -3.9343858 -1.0452887 -0.61393338 -3.9591837 -1.0510716 -0.59841514 -4.022047 -1.0673691 -0.5745402 -4.0313745 -1.0689464 -0.53848386 -3.9516487 -1.0460773 -0.52490169 -4.0371647 -1.0686834 -0.50059319 -4.0441394 -1.0697349 -0.46902695 -3.989639 -1.0539631 -0.44496414 -3.9962776 -1.0550146 -0.41872475 -3.9826198 -1.0505459 -0.39551127 -3.9975963 -1.0539631 -0.36937621 -3.9826546 -1.0492316 -0.34227851 -3.9540856 -1.04082 -0.31893456 -3.9676526 -1.0439743 -0.29266316 -3.9435551 -1.036877 -0.26885176 -3.9510524 -1.0384542 -0.24685733 -3.989222 -1.048443 -0.22381711 -4.0166721 -1.0555403 -0.19869216 -4.0083332 -1.0529116 -0.17480053 -4.0258636 -1.0573803 -0.14913219 -4.0008278 -1.0502831 -0.12434281 -3.9939525 -1.0481801 -0.10007229 -4.0042858 -1.0508088 -0.075178258 -3.9874604 -1.0460773 -0.050638318 -3.982058 -1.0445001 -0.026185716 -3.9793994 -1.0437114 -0.001770002 -3.992028 -1.0471287 --0.022724655 -3.9919636 -1.0471287 --0.048317567 -4.0824366 -1.0718378 --0.071886599 -4.0010309 -1.0497574 --0.096058615 -3.9850819 -1.0455515 --0.12121558 -4.0075626 -1.0518602 --0.14654592 -4.0269914 -1.0573803 --0.17211922 -4.0462594 -1.0629004 --0.19708495 -4.048018 -1.063689 --0.22160076 -4.0409522 -1.0621119 --0.24816193 -4.0684071 -1.0699978 --0.27071831 -4.0311899 -1.0602719 --0.29431483 -4.0140576 -1.056066 --0.31901583 -4.0131378 -1.0563289 --0.34603032 -4.0389819 -1.063952 --0.37231156 -4.0531158 -1.0684205 --0.3984015 -4.0632377 -1.0718378 --0.42563277 -4.0827875 -1.0778836 --0.45099488 -4.0829759 -1.0786722 --0.47514239 -4.0724654 -1.0765693 --0.49611101 -4.0369153 -1.067632 --0.5152992 -3.9907367 -1.0558032 --0.53899801 -3.9817634 -1.054226 --0.87427199 -6.1687965 -1.6569704 --0.58258706 -3.9395359 -1.0445001 --0.95241052 -6.1738133 -1.6614391 --0.98659939 -6.1449904 -1.6551304 --1.0263524 -6.1511927 -1.6585476 --1.0653945 -6.1523843 -1.6606505 --1.1026129 -6.1428828 -1.6598619 --1.1390489 -6.1293616 -1.6580219 --1.1777302 -6.1279421 -1.6595991 --1.2119228 -6.1035662 -1.6548675 --1.248963 -6.0941248 -1.6543418 --1.2915241 -6.110889 -1.6611762 --1.3285846 -6.1009641 -1.6606505 --1.3672619 -6.0983458 -1.6622277 --1.4013995 -6.0757399 -1.6582848 --1.4370936 -6.0604553 -1.6564447 --1.4765383 -6.0608974 -1.6590734 --1.5148709 -6.0564032 -1.6603876 --1.5546441 -6.0572734 -1.6632792 --1.5925189 -6.0504193 -1.6640677 --1.6278533 -6.0340137 -1.6622277 --1.6653609 -6.0257716 -1.6627535 --1.7015144 -6.0126548 -1.6619649 --1.7386439 -6.0030279 -1.6622277 --1.7740737 -5.9876218 -1.6609133 --1.8146988 -5.9895501 -1.6645935 --1.8497022 -5.9727731 -1.6630163 --1.8886456 -5.9686694 -1.6651192 --1.9246393 -5.9551325 -1.6645935 --1.2783766 -3.8753872 -1.0713121 --1.3076777 -3.8839278 -1.0760436 --2.0285945 -5.9031863 -1.6601248 --2.067332 -5.897912 -1.6622277 --2.1044567 -5.8878412 -1.6630163 --2.1355872 -5.8612208 -1.6590734 --2.1772232 -5.8633819 -1.663542 --2.2138424 -5.851717 -1.6640677 --2.2517889 -5.8434243 -1.6656449 --2.2844274 -5.8214149 -1.6632792 --2.3315639 -5.8359575 -1.6716907 --2.3618746 -5.808136 -1.6677479 --2.3908246 -5.7774882 -1.6630163 --2.4340951 -5.7813821 -1.6685364 --1.3135597 -3.0685415 -0.86890769 --1.3331339 -3.0621929 -0.8694334 --1.3491621 -3.0477805 -0.86759341 --2.5716779 -5.711988 -1.6661706 --2.606276 -5.6952238 -1.6659077 --2.6448352 -5.6869974 -1.6682736 --1.6058267 -3.3992922 -0.98377877 --1.6224769 -3.3806779 -0.98115015 --1.6393822 -3.3628547 -0.97878438 --1.656987 -3.3466806 -0.97694433 --1.6787915 -3.3390362 -0.9777329 --1.7023206 -3.334687 -0.97957295 --1.7298572 -3.3378828 -0.98377877 --1.7655871 -3.3562334 -0.99271607 --2.1121595 -3.9554868 -1.1811887 --3.0203221 -5.5726357 -1.686411 --3.0428309 -5.5328655 -1.6798395 --3.0786037 -5.5174603 -1.6808909 --3.1043179 -5.4841943 -1.6764222 --3.1220508 -5.4374347 -1.6677479 --3.1752694 -5.4523559 -1.6785252 --3.2096462 -5.4344316 -1.6790509 --3.2414432 -5.4121523 -1.6782624 --3.2755923 -5.3938103 -1.6787881 --3.3141928 -5.3826466 -1.6816795 --3.3446023 -5.3581181 -1.6803652 --3.3799965 -5.3415709 -1.6816795 --3.431987 -5.3507767 -1.6914054 --3.4773786 -5.3490295 -1.6977142 --3.4766827 -5.2768402 -1.6811538 --3.5143545 -5.2634315 -1.6837825 --3.5346861 -5.2241907 -1.6779995 --3.5928688 -5.2405963 -1.6906168 --3.6293616 -5.2247906 -1.6927198 --2.1505597 -3.0565662 -0.9777329 --2.1687136 -3.0425277 -0.97747004 --2.1862111 -3.0275993 -0.97694433 --3.7861242 -5.174633 -1.7063886 --3.802289 -5.1303782 -1.6992913 --3.8203712 -5.0892062 -1.6932455 --3.852694 -5.067205 -1.6937712 --3.890779 -5.0526423 -1.6969256 --3.9270494 -5.0355201 -1.6992913 --3.9578729 -5.0113292 -1.6992913 --3.9746838 -4.9696226 -1.6932455 --3.9801993 -4.9144044 -1.6824682 --4.004159 -4.8824306 -1.6798395 --4.0297256 -4.8525748 -1.6779995 --4.0470033 -4.8129902 -1.6727422 --4.113369 -4.8314052 -1.6882511 --4.1429367 -4.8060751 -1.6882511 --4.1590223 -4.7653012 -1.682731 --4.1664572 -4.7151141 -1.6737937 --4.2152567 -4.7117481 -1.6819425 --4.2447357 -4.6865101 -1.6822053 --4.277977 -4.6653533 -1.6840453 --4.3242497 -4.6581054 -1.6911426 --4.3527498 -4.6314845 -1.6911426 --4.35847 -4.5809274 -1.6822053 --4.3777928 -4.5450659 -1.6787881 --4.4136829 -4.5264068 -1.6819425 --4.4610338 -4.5191483 -1.6895654 --4.4900432 -4.4930558 -1.6900911 --4.5058599 -4.4538922 -1.6856225 --4.5386276 -4.4315524 -1.6877254 --4.5622606 -4.4002724 -1.686411 --4.5821877 -4.3655419 -1.6837825 --4.5976439 -4.3267665 -1.6795766 --4.6241059 -4.2984743 -1.6795766 --4.63831 -4.2589293 -1.675108 --4.6607809 -4.2271485 -1.6737937 --4.6916618 -4.2029767 -1.6756337 --4.7021861 -4.160686 -1.6701136 --4.7210875 -4.1260424 -1.6677479 --4.7499681 -4.1001487 -1.6690621 --4.7713647 -4.0677967 -1.6677479 --4.7925439 -4.0353374 -1.6664335 --4.817956 -4.0064716 -1.6666963 --4.8372283 -3.9725482 -1.6648563 --4.8660092 -3.9464386 -1.6664335 --4.9006772 -3.9249489 -1.6701136 --4.8966637 -3.8726656 -1.6603876 --4.9203334 -3.8425472 -1.6603876 --4.9415259 -3.8105173 -1.6595991 --4.9655814 -3.7807093 -1.6598619 --5.0048842 -3.7623417 -1.665382 --5.041048 -3.7413342 -1.6698507 --5.0670228 -3.7126129 -1.6709021 --5.0990901 -3.6882362 -1.6740565 --5.1310487 -3.6636055 -1.6772109 --5.1258254 -3.6126041 -1.6680107 --5.1779966 -3.6020162 -1.6779995 --5.1888638 -3.5625334 -1.6743194 --5.2130218 -3.5322511 -1.675108 --5.2281799 -3.495909 -1.6730051 --5.2463107 -3.4616387 -1.6719537 --5.2585568 -3.4235938 -1.6690621 --5.2680979 -3.3839653 -1.665382 --5.3238101 -3.3737783 -1.6766851 --5.3378654 -3.3369582 -1.6745822 --5.3598828 -3.3051555 -1.675108 --5.399024 -3.2837336 -1.6811538 --5.4066586 -3.2431018 -1.6772109 --5.4156594 -3.2034822 -1.6737937 --5.427712 -3.1658185 -1.6714278 --5.4328146 -3.1242809 -1.6669593 --5.4904957 -3.1127689 -1.6790509 --5.5052805 -3.0766685 -1.6777366 --5.5156031 -3.0381773 -1.675108 --5.5180283 -2.9955339 -1.6701136 --5.5507689 -2.9693537 -1.6745822 --5.5979071 -2.9505293 -1.6835196 --5.6287513 -2.9227929 -1.6874626 --5.644002 -2.8868828 -1.686674 --5.6667795 -2.8548012 -1.6882511 --5.7179008 -2.8366935 -1.6985028 --5.7603421 -2.813832 -1.7061257 --5.7905431 -2.7847042 -1.7100687 --5.8136253 -2.7520103 -1.7119088 --5.8583908 -2.72932 -1.7203203 --5.860116 -2.6864896 -1.7158517 --5.8773694 -2.6508787 -1.7161145 --5.9243941 -2.6284552 -1.7253147 --5.9589825 -2.6001542 -1.7308348 --5.9774847 -2.5646825 -1.7316235 --5.9904418 -2.5268326 -1.7308348 --6.0174208 -2.4948301 -1.7342521 --6.0478063 -2.464047 -1.7387208 --6.1004353 -2.4419446 -1.749761 --6.1188955 -2.4058785 -1.7508124 --6.1569462 -2.3773203 -1.7576469 --6.1795373 -2.3425736 -1.7600126 --6.2308722 -2.3184011 -1.7707901 --6.239542 -2.2781413 -1.7692128 --6.2452273 -2.2368865 -1.7668471 --6.2843256 -2.2074733 -1.7742072 --6.3086996 -2.1726398 -1.7773616 --6.1792941 -2.0857782 -1.7363551 --6.2167106 -2.0559988 -1.7434523 --6.2677622 -2.0302961 -1.7544925 --6.3352857 -2.0092912 -1.7702643 --6.4092364 -1.9895345 -1.7878761 --6.492413 -1.9717474 -1.8081166 --6.566361 -1.9502683 -1.8257284 --6.712563 -1.9489268 -1.8638434 --6.8636317 -1.947179 -1.9032729 --6.9702945 -1.9312903 -1.9300849 --7.0490746 -1.9066122 -1.9490111 --7.0681043 -1.8652923 -1.9511139 --7.1167932 -1.8315008 -1.9616284 --7.1400638 -1.790848 -1.9650457 --7.1499805 -1.7467748 -1.9647828 --7.1849699 -1.7086705 -1.9716172 --7.1887383 -1.663031 -1.9697772 --7.2025728 -1.6197366 -1.9708287 --7.198236 -1.5724255 -1.9668857 --7.2068048 -1.5280284 -1.9666228 --7.21699 -1.4839736 -1.9668857 --7.244885 -1.4434305 -1.9721429 --7.2194991 -1.3923774 -1.9626799 --7.236443 -1.3496438 -1.9650457 --7.2616806 -1.3082931 -1.9697772 --7.239152 -1.2584286 -1.9613656 --7.2629142 -1.2166938 -1.9658343 --7.2502394 -1.1688846 -1.9603142 --7.2572751 -1.1243761 -1.9603142 --7.2793074 -1.0820925 -1.96452 --7.2676606 -1.0348258 -1.9595256 --7.2633572 -0.98878288 -1.956634 --7.2616329 -0.94320416 -1.9545312 --7.2845197 -0.90075839 -1.9592627 --7.3033252 -0.85761774 -1.9629427 --7.3046145 -0.81236321 -1.9618913 --7.3046637 -0.76702464 -1.960577 --7.314033 -0.72266322 -1.9618913 --7.3068008 -0.67670566 -1.958737 --7.2896676 -0.63003486 -1.9529539 --7.3097463 -0.58660388 -1.9574226 --7.3093591 -0.54145658 -1.9563712 --7.3183193 -0.49698833 -1.9579483 --7.3270092 -0.45243046 -1.9595256 --7.3383174 -0.40794489 -1.9618913 --7.3493557 -0.36333752 -1.9642571 --7.334096 -0.31748754 -1.9595256 --7.3503685 -0.27301529 -1.9634686 --7.3085084 -0.2265707 -1.9516397 --7.3174772 -0.18191287 -1.9537426 --7.3117032 -0.1368849 -1.9519025 --7.3345947 -0.092294268 -1.9579483 --7.3330932 -0.047276165 -1.9574226 --7.3023705 -0.0022755454 -1.9490111 --7.3543472 0.042842731 -1.9632056 --7.3394747 0.087791964 -1.9592627 --7.2915287 0.13196148 -1.9463824 --7.3281989 0.17761669 -1.956634 --7.3192563 0.22234273 -1.9545312 --7.307148 0.26685965 -1.9516397 --7.3169403 0.31218579 -1.954794 --7.3187418 0.35726461 -1.9558455 --7.2855844 0.40046543 -1.9474338 --7.2695074 0.44433513 -1.9437538 --7.3041873 0.49146372 -1.9540055 --7.0090799 -0.17823984 -1.9578735 --7.0100417 -0.13522957 -1.9578735 --7.021317 -0.092353962 -1.9608889 --7.005403 -0.04915458 -1.9562287 --7.0199986 -0.006182842 -1.9603406 --7.0141339 0.036861181 -1.9586959 --7.0214691 0.079985604 -1.9608889 --7.0006533 0.12271423 -1.9551322 --6.9988074 0.16564442 -1.9548581 --7.0043879 0.20878536 -1.956777 --6.9952865 0.25148359 -1.954584 --6.9849639 0.29403758 -1.9521168 --6.9945555 0.33744642 -1.9554063 --6.9894724 0.38020134 -1.954584 --6.9850879 0.42296463 -1.9540358 --6.9574127 0.46415338 -1.9469084 --6.9755349 0.50837117 -1.9529392 --6.9646149 0.55055684 -1.9507462 --6.9764371 0.59458631 -1.9551322 --6.9736152 0.63746923 -1.9554063 --6.9705296 0.68033987 -1.9556805 --6.903091 0.71654791 -1.9375881 --6.9339337 0.76277977 -1.9477308 --6.9329443 0.80575514 -1.9488273 --6.9125962 0.84641045 -1.9444413 --6.922534 0.89077234 -1.9488273 --6.917891 0.93335998 -1.9491014 --6.8996549 0.97404289 -1.9455378 --6.8973536 1.0169209 -1.9466343 --6.8871822 1.0586389 -1.9455378 --6.8805566 1.100878 -1.9455378 --6.8679805 1.1421293 -1.943893 --6.8655815 1.1850666 -1.9452636 --6.8619676 1.2278479 -1.9463601 --6.864706 1.2718557 -1.9493755 --6.8416605 1.3110577 -1.9449896 --6.8127327 1.3489046 -1.9389588 --6.8071547 1.3912588 -1.9397811 --6.8041358 1.4341904 -1.9414259 --6.7801709 1.4726478 -1.9370399 --6.7775769 1.5156912 -1.9389588 --6.7606516 1.5555243 -1.9367657 --6.7463007 1.5958711 -1.9353951 --6.7373161 1.6374626 -1.9356692 --6.7103462 1.6745808 -1.9307349 --6.7101932 1.718347 -1.9337503 --6.6930118 1.7577779 -1.9318314 --6.680243 1.7983125 -1.9312831 --6.6700101 1.8395234 -1.9315573 --6.6604486 1.8809379 -1.9321055 --6.6663361 1.9268429 -1.9373139 --6.6211872 1.9578952 -1.9274454 --6.6044464 1.9970937 -1.9260747 --6.6150384 2.0446787 -1.932928 --6.5941143 2.0826232 -1.9304608 --6.5821271 2.1233399 -1.9307349 --6.5680609 2.1633863 -1.9304608 --6.5391665 2.1984375 -1.9258006 --6.5601215 2.2503755 -1.9362174 --6.5371127 2.2874095 -1.9334762 --6.5003099 2.3193991 -1.926623 --6.493186 2.3618701 -1.928816 --6.4722595 2.3993275 -1.9268972 --6.4682117 2.4430726 -1.9301866 --6.4405336 2.477881 -1.9263489 --6.4234176 2.5166512 -1.9258006 --6.4096413 2.5567296 -1.9263489 --6.386704 2.5931165 -1.9241558 --6.3840051 2.6377635 -1.9282677 --6.3721328 2.6787486 -1.9296384 --6.3555765 2.7177968 -1.9296384 --6.3273158 2.7517574 -1.9260747 --6.3015165 2.7866404 -1.9233335 --6.2930708 2.8291962 -1.9260747 --6.2790918 2.869355 -1.9271712 --6.2596231 2.9070189 -1.926623 --6.2407985 2.944962 -1.9263489 --6.2156734 2.9798739 -1.9241558 --6.1981368 3.0183775 -1.92443 --6.1657071 3.049531 -1.9200439 --6.1657863 3.0968003 -1.9260747 --6.1483822 3.1354482 -1.926623 --6.1213412 3.1691363 -1.9241558 --6.1009293 3.2061889 -1.9238818 --6.0735044 3.2394903 -1.9214146 --6.0501299 3.2748647 -1.9203181 --6.0307646 3.3123889 -1.9205922 --6.0086465 3.3483944 -1.9200439 --5.9712443 3.3757353 -1.9145614 --5.9495845 3.4118321 -1.9142873 --5.9318628 3.4502077 -1.9153838 --5.9246631 3.4948456 -1.9200439 --5.8948545 3.5261965 -1.9173027 --5.8722849 3.5618017 -1.9170285 --5.8593307 3.6033072 -1.9200439 --5.8411918 3.6417353 -1.9214146 --5.8138585 3.6744251 -1.9197699 --5.7968717 3.7136602 -1.9216887 --5.7505846 3.7339725 -1.9137391 --5.7436328 3.7797594 -1.9192215 --5.7419357 3.8293362 -1.926623 --5.7087693 3.8580346 -1.9233335 --5.6714997 3.883754 -1.9186733 --5.6538839 3.9228659 -1.9208664 --5.634428 3.9608018 -1.9225111 --5.6108022 3.9958572 -1.9227853 --5.5799389 4.0257082 -1.9205922 --5.5559092 4.0604377 -1.9208664 --5.5270252 4.0915909 -1.9194957 --5.4971991 4.1219659 -1.917851 --5.4564857 4.1439862 -1.9123684 --5.429431 4.1762161 -1.9118202 --5.3976345 4.2047243 -1.9096271 --5.3694682 4.2359776 -1.9088048 --5.3441267 4.2694445 -1.9090788 --5.3275495 4.3100176 -1.9126425 --5.3069553 4.3475008 -1.9148356 --5.2772188 4.3775263 -1.9137391 --5.2561507 4.414772 -1.9159321 --5.2311611 4.4488091 -1.9167545 --5.1964774 4.4745483 -1.9140131 --5.1602254 4.4987659 -1.9107237 --5.1267557 4.5252528 -1.9085306 --5.1017613 4.5591879 -1.9096271 --5.0694118 4.586535 -1.9079823 --5.0340819 4.6110587 -1.9052411 --5.0078096 4.6438222 -1.9060634 --4.9715085 4.667222 -1.903048 --4.9448686 4.699626 -1.9038705 --4.9020786 4.7165442 -1.8983879 --4.884069 4.7572694 -1.902774 --4.8513632 4.783772 -1.9014033 --4.8205576 4.8120909 -1.9008551 --4.799058 4.849781 -1.9041445 --4.7725716 4.8825746 -1.9055152 --4.7391825 4.9083076 -1.9041445 --4.7036662 4.9317274 -1.9019516 --4.6654034 4.9520965 -1.8986621 --4.6421371 4.9883733 -1.9016775 --4.6166487 5.0224266 -1.9038705 --4.5825119 5.0470996 -1.9024998 --4.5508151 5.0744066 -1.9022257 --4.5170426 5.0993547 -1.9011291 --4.4837689 5.1248035 -1.9003068 --4.4503527 5.1500363 -1.8994844 --4.4167957 5.1750517 -1.8986621 --4.3911576 5.2094083 -1.9014033 --4.3449578 5.219255 -1.8950984 --4.3061328 5.2376461 -1.892083 --4.2630019 5.2505312 -1.8871487 --4.2908678 5.3516164 -1.9145614 --4.2573533 5.37709 -1.9142873 --4.203547 5.3765955 -1.9046929 --4.1769423 5.4106603 -1.9077083 --4.1576571 5.4545426 -1.9142873 --4.1015558 5.4499846 -1.9035963 --4.055419 5.4580669 -1.8975655 --4.0252657 5.4875002 -1.8992103 --3.9920831 5.5128741 -1.8994844 --3.9609783 5.5411773 -1.9008551 --3.9285669 5.5677342 -1.9016775 --3.9031246 5.6043606 -1.9060634 --3.886642 5.6543565 -1.9151096 --3.862133 5.6932187 -1.9203181 --3.8121464 5.6944337 -1.9126425 --3.7739534 5.7129035 -1.9109977 --3.7456563 5.7464252 -1.9145614 --3.709806 5.7684913 -1.9142873 --3.6846466 5.8073859 -1.9197699 --3.6555774 5.8404822 -1.9233335 --3.6338193 5.8857136 -1.9310091 --3.5821297 5.8824377 -1.9225111 --3.5479491 5.9076042 -1.9236076 --3.5033021 5.9151964 -1.9189475 --3.4679112 5.938242 -1.9194957 --3.4275701 5.9527416 -1.9173027 --3.3957283 5.9820237 -1.9200439 --3.3505054 5.9876413 -1.9151096 --3.3197415 6.0190339 -1.9186733 --3.2933114 6.058723 -1.9249783 --3.2569821 6.0805116 -1.9255265 --3.2200603 6.1012321 -1.9258006 --3.1870003 6.1294074 -1.9285419 --3.1423156 6.1351523 -1.9241558 --3.1093769 6.1637626 -1.9271712 --3.0821962 6.2042561 -1.9340245 --3.0347719 6.2040467 -1.9279937 --3.0100017 6.2502766 -1.9367657 --2.9695339 6.2642832 -1.9353951 --2.9310412 6.2823858 -1.9353951 --2.8924379 6.3002524 -1.9353951 --2.8481829 6.3056116 -1.9315573 --2.8141253 6.3335147 -1.9348468 --2.7759809 6.3524251 -1.9353951 --2.7335334 6.3613868 -1.932928 --2.7000637 6.3913274 -1.9370399 --2.6593208 6.404222 -1.9359434 --2.6228826 6.4275417 -1.9381363 --2.5780256 6.4301252 -1.9340245 --2.5490959 6.4726663 -1.9422482 --2.4996178 6.4630713 -1.9345727 --2.4681087 6.4998641 -1.9411517 --2.4295235 6.5184903 -1.9422482 --2.3855164 6.5224371 -1.9389588 --2.3564949 6.5677271 -1.948279 --2.3040195 6.5475912 -1.9378622 --2.2622323 6.5570598 -1.9364916 --2.223805 6.576283 -1.9381363 --2.1949077 6.6244931 -1.9485532 --2.1527345 6.6332626 -1.9471825 --2.1233537 6.6820908 -1.9578735 --2.0723147 6.6628537 -1.948279 --2.0277529 6.6634836 -1.9447154 --1.9851822 6.67027 -1.9430707 --1.9423357 6.6758614 -1.9411517 --1.9047564 6.6996789 -1.9447154 --1.8625827 6.7075338 -1.9436189 --1.8178675 6.7058415 -1.9397811 --1.7813606 6.7345338 -1.9449896 --1.736641 6.7323008 -1.9411517 --1.6948305 6.7409644 -1.9406035 --1.6534369 6.7512369 -1.9406035 --1.6115348 6.7593842 -1.9400553 --1.5689429 6.764461 -1.9386846 --1.5231757 6.755198 -1.933202 --1.4810804 6.7615986 -1.9323797 --1.4459661 6.8006601 -1.9411517 --1.4032394 6.8046951 -1.9397811 --1.3631567 6.8216643 -1.9422482 --1.325111 6.8497276 -1.948005 --1.2821723 6.853003 -1.9466343 --1.2378745 6.8484387 -1.9430707 --1.1954994 6.8540106 -1.9425224 --1.1566112 6.8801847 -1.948005 --1.114527 6.8881011 -1.948279 --1.075346 6.9147658 -1.9540358 --1.0358796 6.9412079 -1.9597924 --0.98877627 6.9160171 -1.9507462 --0.94371539 6.9028974 -1.9452636 --0.9055742 6.9409804 -1.954584 --0.86261225 6.9435434 -1.9537616 --0.81965297 6.9458404 -1.9529392 --0.77659106 6.9469161 -1.9518427 --0.73415303 6.9534631 -1.9523909 --0.689951 6.9425254 -1.948005 --0.64671451 6.9399252 -1.946086 --0.60395294 6.9418468 -1.9455378 --0.56157976 6.9482975 -1.9463601 --0.52051145 6.9727111 -1.9523909 --0.47725758 6.9690576 -1.9504721 --0.43430766 6.9689751 -1.9496497 --0.3917006 6.9743891 -1.9504721 --0.34803358 6.9593725 -1.9455378 --0.3063378 6.9844356 -1.9521168 --0.26318595 6.9784956 -1.9499238 --0.22072656 6.9915137 -1.9532133 --0.17772527 6.9888906 -1.9521168 --0.13491331 6.9936957 -1.9532133 --0.091731489 6.9741983 -1.9474567 --0.048896067 6.9688597 -1.9458119 --0.00613232 6.9661436 -1.9449896 -0.036656238 6.9747052 -1.9474567 -0.079440631 6.9733872 -1.9471825 -0.12232783 6.978538 -1.9488273 -0.16507694 6.9747715 -1.948005 -0.20801322 6.9784336 -1.9493755 -0.25082818 6.977026 -1.9493755 -0.29403758 6.9849639 -1.9521168 -0.33693728 6.9839892 -1.9523909 -0.38009697 6.9875517 -1.9540358 -0.42162898 6.9630094 -1.9477308 -0.46319398 6.9430194 -1.9427965 -0.50711393 6.9582701 -1.948005 -0.54926938 6.9483166 -1.946086 -0.59197474 6.9457741 -1.9463601 -0.63204485 6.9142375 -1.9384105 -0.67520487 6.9178863 -1.9406035 -0.71883029 6.9250917 -1.943893 -0.76193899 6.9262862 -1.9455378 -0.8047564 6.9243464 -1.9463601 -0.84746194 6.9211874 -1.9469084 -0.88745993 6.8967805 -1.9414259 -0.92500544 6.8559418 -1.9312831 -0.96813029 6.8577552 -1.9334762 -1.0117328 6.8621516 -1.9364916 -1.0538192 6.8558145 -1.9364916 -1.0961696 6.8511186 -1.9370399 -1.1394483 6.8518529 -1.9392328 -1.1817961 6.8466277 -1.9397811 -1.2256466 6.8496609 -1.9427965 -1.26485 6.8268819 -1.9384105 -1.3054485 6.8123808 -1.9364916 -1.346477 6.8004689 -1.9353951 -1.3877935 6.7901945 -1.9348468 -1.431216 6.7900205 -1.9373139 -1.4704031 6.7698336 -1.9340245 -1.5152715 6.7757001 -1.9384105 -1.5555243 6.7606516 -1.9367657 -1.5969777 6.7509799 -1.9367657 -1.6429123 6.7597442 -1.9422482 -1.6878502 6.7635326 -1.9463601 -1.7243098 6.7334843 -1.9406035 -1.7655933 6.7227774 -1.9406035 -1.8070601 6.7127457 -1.9408776 -1.8443804 6.6876249 -1.9367657 -1.8895611 6.6909904 -1.9411517 -1.9273769 6.6681838 -1.9378622 -1.9679831 6.6553097 -1.9375881 -2.0065558 6.6357446 -1.9353951 -2.044111 6.6132007 -1.9323797 -2.088994 6.6142898 -1.9364916 -2.1271775 6.5940251 -1.9342985 -2.1724107 6.5954642 -1.9386846 -2.213758 6.5847449 -1.939507 -2.2485037 6.5546637 -1.9345727 -2.2880447 6.538928 -1.9340245 -2.3268313 6.5211425 -1.932928 -2.3654857 6.5031276 -1.9318314 -2.4030039 6.4821787 -1.9299126 -2.4444315 6.4718103 -1.9312831 -2.4865127 6.4629731 -1.933202 -2.5264726 6.4484897 -1.9334762 -2.5674171 6.4364395 -1.9345727 -2.6046917 6.4152184 -1.932928 -2.6418025 6.3937826 -1.9312831 -2.6746497 6.3623805 -1.926623 -2.7136381 6.3458495 -1.926623 -2.7525244 6.3290796 -1.926623 -2.7913072 6.3120713 -1.926623 -2.8252532 6.2842994 -1.9233335 -2.8609622 6.2607226 -1.9214146 -2.9066138 6.2587509 -1.9263489 -2.9457827 6.242538 -1.9268972 -2.9794581 6.2148061 -1.9238818 -3.0179565 6.1972718 -1.9241558 -3.0537939 6.1743274 -1.9227853 -3.0808318 6.1339879 -1.9159321 -3.1210322 6.1201096 -1.9175768 -3.1510103 6.0863252 -1.9129167 -3.1963477 6.0822001 -1.917851 -3.2331548 6.0616245 -1.9175768 -3.2611325 6.0247569 -1.9120942 -3.3022046 6.0122199 -1.9145614 -3.3437135 6.0002456 -1.9173027 -3.3695831 5.9603605 -1.9109977 -3.4065702 5.9404073 -1.9112719 -3.4482739 5.9285378 -1.9142873 -3.4855628 5.9089246 -1.9148356 -3.5252092 5.8932037 -1.9167545 -3.5667884 5.8805075 -1.9197699 -3.5851731 5.8298392 -1.9101753 -3.600527 5.7750869 -1.8992103 -3.6287022 5.7415042 -1.8953725 -3.6809807 5.7458539 -1.9044187 -3.7151201 5.7215466 -1.9038705 -3.741699 5.6857896 -1.8994844 -3.7887871 5.6811266 -1.9057894 -3.8434968 5.6872549 -1.9159321 -3.8201859 5.5786586 -1.8866005 -3.8521514 5.5519528 -1.8855039 -3.9010763 5.5494552 -1.8929054 -3.9333801 5.5230637 -1.892083 -3.9913881 5.5323625 -1.9038705 -3.9997258 5.4728265 -1.8915347 -4.0349474 5.4505005 -1.8923571 -4.0469704 5.3971701 -1.8822144 -4.0794291 5.3714709 -1.8819402 -4.1205192 5.3570113 -1.8857781 -4.1846318 5.3718386 -1.9003068 -4.1907125 5.3120832 -1.887971 -4.2016196 5.2592196 -1.8781025 -4.2428827 5.2445555 -1.8822144 -4.2652326 5.2065191 -1.8778284 -4.3099918 5.1957946 -1.8835851 -4.3541613 5.18398 -1.8890676 -4.4095612 5.1850057 -1.8994844 -4.4199586 5.1330729 -1.8901641 -4.4494758 5.1036811 -1.8893417 -4.487071 5.0834937 -1.892083 -4.5098481 5.0465431 -1.8885193 -4.5568576 5.0366058 -1.8953725 -4.5753345 4.9950757 -1.8901641 -4.6065516 4.9676132 -1.8904382 -4.6349711 4.937151 -1.8896159 -4.6896892 4.934412 -1.8997586 -4.7138772 4.8993063 -1.8972914 -4.7431788 4.8696012 -1.8970172 -4.7709436 4.8383517 -1.8961949 -4.7923884 4.8008184 -1.8929054 -4.8190217 4.7686167 -1.8918089 -4.8626318 4.7530756 -1.8975655 -4.8923965 4.7238178 -1.8978397 -4.9025002 4.6757874 -1.8904382 -4.9289985 4.64364 -1.8896159 -4.9595103 4.6152744 -1.8904382 -4.9856119 4.5828037 -1.8896159 -5.0207572 4.5585914 -1.8923571 -5.0550766 4.5334778 -1.8948243 -5.1087127 4.5253329 -1.9046929 -5.1219087 4.4812355 -1.8992103 -5.150764 4.4509816 -1.8997586 -5.180172 4.4211664 -1.9005809 -5.1910262 4.3756614 -1.8945501 -5.2236896 4.34865 -1.8967432 -5.2473025 4.3140731 -1.8956467 -5.2684488 4.2775512 -1.8937278 -5.3013482 4.2505589 -1.8961949 -5.3303452 4.2203383 -1.8972914 -5.3667469 4.1958461 -1.9011291 -5.3908687 4.1616616 -1.9005809 -5.4201264 4.1314211 -1.9019516 -5.4476795 4.0998206 -1.902774 -5.4704175 4.0645967 -1.9019516 -5.4859495 4.024128 -1.8986621 -5.5097589 3.9898269 -1.8983879 -5.5317893 3.9542665 -1.8975655 -5.5575194 3.9213586 -1.8981137 -5.5783195 3.8849859 -1.8970172 -5.5925422 3.8441472 -1.8937278 -5.6398988 3.8259575 -1.9019516 -5.6440897 3.7784388 -1.8953725 -5.6679697 3.7442665 -1.8956467 -5.7045331 3.7183461 -1.9003068 -5.7361379 3.6889966 -1.9033222 -5.7570415 3.6527002 -1.902774 -5.783421 3.6198583 -1.9041445 -5.7940679 3.57723 -1.9003068 -5.8150868 3.5411108 -1.9000326 -5.830934 3.5018971 -1.8981137 -5.8605862 3.4709544 -1.9008551 -5.8875861 3.4383245 -1.902774 -5.9110723 3.403574 -1.9035963 -5.9318452 3.3672402 -1.9035963 -5.9523945 3.3307796 -1.9035963 -5.9744039 3.2951226 -1.9041445 -5.9784565 3.2496753 -1.8989362 -6.0067606 3.2174723 -1.9016775 -6.0365953 3.1859419 -1.904967 -6.0654159 3.1537228 -1.9079823 -6.0743814 3.1111853 -1.9046929 -6.0847712 3.0695231 -1.9019516 -6.1112418 3.0359812 -1.9044187 -6.130619 2.9988487 -1.9046929 -6.1463051 2.9599235 -1.9038705 -6.1686959 2.9242148 -1.9052411 -6.183908 2.8850894 -1.9044187 -6.2172256 2.8543148 -1.909353 -6.197813 2.7994838 -1.8978397 -6.2491479 2.7766333 -1.9085306 -6.2678294 2.7390072 -1.9090788 -6.276566 2.6970794 -1.9066117 -6.2965403 2.6600134 -1.9077083 -6.3207364 2.6246483 -1.9101753 -6.3287086 2.582545 -1.9077083 -6.3435431 2.5433064 -1.9074341 -6.362608 2.5057449 -1.9085306 -6.369791 2.4635348 -1.9060634 -6.3928785 2.4274771 -1.9085306 -6.4193673 2.3925724 -1.9120942 -6.4303145 2.3518174 -1.9109977 -6.4382877 2.3100436 -1.9090788 -6.4505262 2.2698569 -1.9085306 -6.4616051 2.2292936 -1.9077083 -6.4660521 2.1865227 -1.904967 -6.4884753 2.1498318 -1.9077083 -6.4997149 2.109385 -1.9071599 -6.5143685 2.0700464 -1.9077083 -6.5379672 2.033464 -1.9109977 -6.5356007 1.988829 -1.9066117 -6.5587416 1.9519825 -1.9099013 -6.5825992 1.9151953 -1.9134649 -6.5979266 1.8758215 -1.9145614 -6.6139455 1.8365889 -1.9159321 -6.6297312 1.7972302 -1.9173027 -6.6350555 1.7550412 -1.9156579 -6.6391811 1.7126144 -1.9137391 -6.6486316 1.6716104 -1.9134649 -6.6681042 1.6330719 -1.9162061 -6.6798701 1.5925726 -1.9167545 -6.6923265 1.5522077 -1.9175768 -6.7045388 1.51175 -1.9183992 -6.7042947 1.4685249 -1.9156579 -6.7178826 1.4283608 -1.9170285 -6.7255783 1.3869195 -1.9167545 -6.7283034 1.3444949 -1.9151096 -6.7420917 1.3042818 -1.9167545 -6.7603655 1.2648346 -1.9197699 -6.762321 1.2223034 -1.918125 -6.7706413 1.1809528 -1.9183992 -6.7938824 1.1420979 -1.9230593 -6.7998128 1.1002363 -1.9227853 -6.8054857 1.058345 -1.9225111 -6.8004375 1.0148633 -1.9192215 -6.7941604 0.97134739 -1.9156579 -6.8123794 0.93133503 -1.9192215 -6.8208265 0.88989097 -1.9200439 -6.8442912 0.85027611 -1.9252523 -6.8560648 0.80905366 -1.9271712 -6.8322282 0.76376349 -1.9189475 -6.8597388 0.7242521 -1.9255265 -6.8774509 0.68348014 -1.9293643 -6.8728976 0.64046443 -1.9268972 -6.866159 0.59736359 -1.9238818 -6.8744879 0.55561 -1.9252523 -6.8710546 0.51291698 -1.9233335 -6.8731132 0.47068155 -1.9230593 -6.8797112 0.42873955 -1.9241558 -6.8898935 0.38695022 -1.9263489 -6.8930988 0.34471542 -1.926623 -6.8970056 0.30249807 -1.9271712 -6.9016151 0.26028204 -1.9279937 -6.9059658 0.21802083 -1.928816 -6.8994823 0.1754465 -1.926623 -6.9090829 0.13327619 -1.9290901 -6.9184251 0.090994678 -1.9315573 -6.9150062 0.0485151 -1.9304608 -6.9219055 0.0060908198 -1.9323797 -6.9189277 -0.036366314 -1.9315573 -6.9099197 -0.078721277 -1.9290901 -6.9093065 -0.12111826 -1.9290901 -6.8997803 -0.1633064 -1.926623 -6.9034548 -0.20578258 -1.9279937 -6.8866849 -0.24758556 -1.9236076 -6.9071355 -0.29076582 -1.9299126 -6.8927341 -0.33254001 -1.9263489 -6.9068885 -0.37571383 -1.9310091 -6.9092531 -0.41837698 -1.9323797 -6.912313 -0.46114725 -1.9340245 -6.8920889 -0.50229448 -1.9290901 -6.894629 -0.54502851 -1.9307349 -6.895946 -0.58773094 -1.9321055 -6.8902946 -0.6298576 -1.9315573 -6.8815145 -0.67165697 -1.9301866 -6.8868294 -0.71486086 -1.932928 -6.8670187 -0.75542259 -1.9285419 -6.8737173 -0.79887515 -1.9318314 -6.8734589 -0.84162062 -1.933202 -6.87675 -0.88488364 -1.9356692 -6.8692851 -0.9268049 -1.9351209 -6.8539462 -0.96759278 -1.9323797 -6.845026 -1.0092089 -1.9315573 -6.8453584 -1.0522126 -1.9334762 -6.8482695 -1.095714 -1.9362174 -6.8594422 -1.1407099 -1.9414259 -6.852314 -1.1827772 -1.9414259 -6.8591275 -1.22734 -1.9455378 -6.8249903 -1.2644998 -1.9378622 -6.8180475 -1.3065343 -1.9381363 -6.7976384 -1.3459169 -1.9345727 -6.7760611 -1.3849058 -1.9307349 -6.7552023 -1.423879 -1.9271712 -6.7801709 -1.4726478 -1.9370399 -6.7578683 -1.5112848 -1.933202 -6.7587771 -1.5550932 -1.9362174 -6.7500439 -1.5967563 -1.9364916 -6.7457266 -1.6395062 -1.9381363 -6.7224765 -1.6776072 -1.9342985 -6.7073979 -1.7176313 -1.932928 -6.6883612 -1.7565567 -1.9304608 -6.688601 -1.8005619 -1.9337503 -6.6644478 -1.8379897 -1.9299126 -6.6511936 -1.8783247 -1.9293643 -6.6275325 -1.9156296 -1.9258006 -6.5713863 -1.9431722 -1.9126425 -6.4995041 -1.9653673 -1.8948243 -6.3761454 -1.9708532 -1.8616549 -6.2593875 -1.9769276 -1.8304044 -6.1345615 -1.9789879 -1.7966868 -6.0665836 -1.9982423 -1.779965 -5.988575 -2.0133672 -1.7602279 -5.913341 -2.0285468 -1.7413131 -5.849041 -2.0466905 -1.7256879 -5.7693448 -2.058629 -1.7054025 -5.7303953 -2.0844584 -1.6974528 -5.6814275 -2.1062112 -1.6864877 -5.6171155 -2.1216662 -1.6708624 -5.5465465 -2.1339951 -1.6533183 -5.4840989 -2.1486957 -1.6382413 -5.2215881 -2.0829098 -1.5617598 -5.1757398 -2.1015255 -1.5516171 -5.0187564 -2.0737591 -1.5072086 -4.8924575 -2.0568168 -1.4721203 -4.8240366 -2.0629792 -1.4548503 -4.7081027 -2.047672 -1.4227774 -4.6365194 -2.0504661 -1.404411 -4.5256095 -2.0347168 -1.3737087 -4.5716457 -2.0892243 -1.3920752 -4.3703351 -2.0297523 -1.3328638 -4.3186598 -2.0380638 -1.320528 -4.2514386 -2.0383358 -1.3032581 -4.2103186 -2.0504906 -1.2942119 -4.1830029 -2.0690389 -1.2895517 -4.1624942 -2.0907822 -1.2870846 -4.1187439 -2.1005569 -1.277216 -4.0348911 -2.0890954 -1.2544634 -3.8772719 -2.0377679 -1.2078618 -3.7730505 -2.0126455 -1.1782562 -3.7124214 -2.0096674 -1.1626309 -3.6713603 -2.016669 -1.1533105 -3.6488359 -2.0335412 -1.150021 -3.6195457 -2.046427 -1.1445385 -3.598578 -2.0638142 -1.1417972 -3.5767024 -2.0805376 -1.1387818 -3.5265934 -2.0804594 -1.1264461 -3.4939535 -2.0902116 -1.1198671 -3.4588606 -2.0981462 -1.1124656 -3.4295371 -2.1092553 -1.1069831 -3.3936794 -2.116014 -1.0993075 -3.316407 -2.0962119 -1.0776515 -3.3051021 -2.117559 -1.0781997 -3.3565755 -2.1796932 -1.1001298 -3.309396 -2.1780457 -1.0886165 -3.2743661 -2.1839051 -1.0812151 -3.2441709 -2.1926482 -1.0754584 -3.1703491 -2.1712205 -1.0546248 -3.2130687 -2.229553 -1.0740879 -3.1843789 -2.2387187 -1.0688794 -3.1658821 -2.2548687 -1.0672346 -3.1473074 -2.2708759 -1.0655899 -3.1271026 -2.2856054 -1.0633968 -3.0998788 -2.2950234 -1.0587367 -3.0788133 -2.3088088 -1.0562695 -3.0814385 -2.3404517 -1.0623003 -3.0693069 -2.3610737 -1.0631227 -3.0585554 -2.382817 -1.0644934 -3.0310409 -2.3914139 -1.0598332 -3.0072937 -2.4027646 -1.0565437 -3.0111864 -2.4362922 -1.0633968 -3.0423071 -2.4925048 -1.0803927 -2.9980876 -2.4871814 -1.0697018 -2.9820337 -2.5049119 -1.0694276 -2.956351 -2.5144403 -1.0655899 -2.9474261 -2.5381801 -1.0680571 -2.8991749 -2.5277805 -1.0557213 -2.898752 -2.5588856 -1.061478 -2.8521602 -2.5490706 -1.0496905 -2.845737 -2.5749102 -1.0532541 -2.8270473 -2.5897248 -1.0521576 -2.8287339 -2.6233692 -1.0590109 -2.828711 -2.6558146 -1.0653157 -2.7761114 -2.6386728 -1.0510612 -2.7806599 -2.6756592 -1.0592849 -2.7958815 -2.7235355 -1.0718948 -2.7866504 -2.7480667 -1.0749102 -2.7588458 -2.7542434 -1.0705242 -2.726335 -2.755398 -1.0642192 -2.7241669 -2.7872036 -1.07025 -2.7043417 -2.8010991 -1.0691535 -2.6632073 -2.7925882 -1.0592849 -2.6512983 -2.8144763 -1.061478 -2.613668 -2.8088682 -1.0529801 -2.5944314 -2.8227284 -1.0521576 -2.5835276 -2.8457141 -1.054899 -2.5602388 -2.8550694 -1.0524318 -2.5535135 -2.8829625 -1.057092 -2.5307097 -2.8927863 -1.054899 -2.5047374 -2.8988011 -1.0513352 -2.4819086 -2.9082634 -1.0491422 -2.4621575 -2.9212317 -1.0483198 -2.4349568 -2.9251983 -1.0442079 -2.4108543 -2.9326556 -1.0414667 -2.3831151 -2.9354479 -1.0370806 -2.3494163 -2.9305084 -1.0299534 -2.3385551 -2.9539163 -1.0332428 -2.3120928 -2.9576035 -1.0294051 -2.2915509 -2.9686897 -1.0283086 -2.2756245 -2.9857538 -1.0294051 -2.2659364 -3.0111861 -1.033517 -2.250859 -3.0296643 -1.0351617 -2.240191 -3.0542738 -1.0389996 -2.2287412 -3.0780876 -1.0425632 -2.2193205 -3.1050043 -1.0472233 -2.1941276 -3.1099203 -1.0442079 -2.1865468 -3.1398964 -1.0499647 -2.1677845 -3.1540463 -1.0502387 -2.1559498 -3.1784296 -1.0540766 -2.1299863 -3.182009 -1.050787 -2.0923975 -3.1677372 -1.0414667 -2.0466616 -3.1402352 -1.0277604 -2.0330777 -3.1616313 -1.0307758 -2.0342507 -3.206527 -1.0417408 -2.0048423 -3.2034605 -1.0365324 -1.9967694 -3.2345219 -1.0428374 -2.0184045 -3.3148854 -1.0655899 -1.9772291 -3.2925825 -1.0540766 -1.9408151 -3.2773473 -1.0450304 -1.9221243 -3.2916856 -1.0458528 -1.8846134 -3.2734158 -1.0359842 -1.861169 -3.2790637 -1.0340652 -1.8386657 -3.2862258 -1.0326946 -1.8128932 -3.2873409 -1.0294051 -1.8064681 -3.32375 -1.0376289 -1.7942144 -3.3500307 -1.0425632 -1.7754209 -3.3643785 -1.0436597 -1.7582936 -3.3820348 -1.0458528 -1.7283012 -3.3747852 -1.040096 -1.6984643 -3.3672957 -1.0343394 -1.683334 -3.3888502 -1.0379031 -1.6646218 -3.4034343 -1.0392736 -1.6395342 -3.4049199 -1.0365324 -1.6087233 -3.3940604 -1.0299534 -1.5964072 -3.4221687 -1.03571 -1.5866154 -3.4563706 -1.0433856 -1.5697329 -3.4756813 -1.046401 -1.5452526 -3.4782171 -1.0442079 -1.527733 -3.4964452 -1.0469493 -1.4849857 -3.4562745 -1.0315981 -1.2829634 -3.0374491 -0.89919472 -1.3535653 -3.2601948 -0.96553349 -1.4629065 -3.5854175 -1.0631227 -1.4501854 -3.6175339 -1.07025 -1.4254942 -3.6201005 -1.0683311 -1.4129695 -3.653893 -1.0760067 -1.3826699 -3.6418161 -1.0697018 -1.3693678 -3.6745617 -1.0771033 -1.3517511 -3.6964421 -1.0812151 -1.3313186 -3.7110031 -1.0831341 -1.3136317 -3.7336164 -1.08752 -1.310461 -3.7988789 -1.1047901 -1.2772671 -3.7776964 -1.096018 -1.2440803 -3.7553377 -1.0869718 -1.1978552 -3.6915531 -1.0655899 -1.1472173 -3.6108479 -1.0392736 -1.1198978 -3.6012902 -1.0343394 -1.0188117 -3.3486481 -0.95703554 -0.98946559 -3.3253412 -0.94826347 -0.96259385 -3.3091884 -0.94168442 -0.93964046 -3.3057823 -0.93894315 -0.92191249 -3.3207519 -0.94168442 -0.90655291 -3.3449097 -0.94716698 -0.80680794 -3.0510442 -0.85889804 -0.78759134 -3.054075 -0.8583498 -0.94685864 -3.7667336 -1.0664122 -0.90107536 -3.6799991 -1.0392736 -0.88026303 -3.6929426 -1.0414667 -0.85693496 -3.6954637 -1.0406443 -0.83805245 -3.7175386 -1.0455786 -0.81666708 -3.7291865 -1.0474975 -0.79897141 -3.7585845 -1.0546248 -0.77511704 -3.7596486 -1.0535283 -0.75863123 -3.7973402 -1.0631227 -0.73714399 -3.8113654 -1.065864 -0.71781307 -3.837558 -1.0721689 -0.67269272 -3.7226503 -1.0376289 -0.64289558 -3.6869178 -1.0261155 -0.62153691 -3.6983802 -1.0283086 -0.61066443 -3.7752233 -1.0494164 -0.59177583 -3.8064568 -1.057366 -0.56400663 -3.7805305 -1.0488682 -0.54488403 -3.8124802 -1.057092 -0.53138512 -3.8881662 -1.0779256 -0.50166768 -3.8465343 -1.0650417 -0.4758026 -3.8314073 -1.0598332 -0.44856352 -3.8027377 -1.050787 -0.43056676 -3.8532052 -1.0644934 -0.40418801 -3.8299525 -1.057092 -0.37963349 -3.8218336 -1.0540766 -0.35751531 -3.8384542 -1.0581884 -0.33445671 -3.846324 -1.0598332 -0.30852395 -3.8195469 -1.0516094 -0.28680134 -3.8443847 -1.0581884 -0.26373333 -3.8537476 -1.0603814 -0.24139941 -3.8764095 -1.0664122 -0.2180955 -3.8864594 -1.0688794 -0.19443688 -3.8915663 -1.0699759 -0.17004868 -3.8811569 -1.0666864 -0.14652154 -3.8898153 -1.0688794 -0.12231691 -3.8800678 -1.065864 -0.0980414 -3.862479 -1.0606556 -0.074284017 -3.8601234 -1.0598332 -0.050622754 -3.8624296 -1.0603814 -0.026895167 -3.8588209 -1.0592849 -0.0031975335 -3.8377559 -1.0532541 --0.020400541 -3.8473201 -1.0559955 --0.043995973 -3.8461609 -1.0557213 --0.067829937 -3.8592803 -1.0595591 --0.091463357 -3.8568685 -1.0590109 --0.11558451 -3.8716149 -1.0633968 --0.13913114 -3.8650665 -1.0617521 --0.16304608 -3.8689442 -1.0631227 --0.18622696 -3.856344 -1.0598332 --0.209729 -3.852248 -1.0590109 --0.23243287 -3.8355296 -1.0546248 --0.25896898 -3.8791306 -1.0675088 --0.28374386 -3.8908968 -1.0713465 --0.30943015 -3.9120915 -1.0779256 --0.33293879 -3.9043698 -1.0762808 --0.36056387 -3.9424772 -1.0877942 --0.38381404 -3.930619 -1.0850528 --0.40752769 -3.9243639 -1.0839564 --0.43265048 -3.9313488 -1.0866977 --0.4542124 -3.9066489 -1.0803927 --0.47572124 -3.8837423 -1.0746361 --0.50027859 -3.8864732 -1.0762808 --0.52501583 -3.8900018 -1.0781997 --0.8348285 -5.9131145 -1.6615422 --0.87516123 -5.9354715 -1.6694918 --0.90995759 -5.9195342 -1.6664764 --0.94413567 -5.9005446 -1.6626387 --0.97984982 -5.8917942 -1.6618162 --1.016964 -5.8913574 -1.663461 --1.0515695 -5.8764863 -1.6609938 --1.0877823 -5.8708692 -1.661268 --1.1252322 -5.8716402 -1.663461 --1.1603051 -5.8599086 -1.6620904 --1.1989342 -5.86587 -1.6659281 --1.2301449 -5.8358183 -1.6593491 --1.2724597 -5.8582339 -1.6681212 --1.3117385 -5.8653321 -1.6725072 --1.3420976 -5.8328056 -1.6653799 --1.3749845 -5.8122945 -1.6618162 --1.4094869 -5.7990756 -1.6604456 --1.4510955 -5.8145785 -1.667573 --1.4826909 -5.7897272 -1.6629127 --1.5213631 -5.7926126 -1.6664764 --1.5536282 -5.7710962 -1.6629127 --1.5895209 -5.763309 -1.663461 --1.6277285 -5.763628 -1.6664764 --1.6622618 -5.7507601 -1.6656541 --1.6969712 -5.7386079 -1.6651058 --1.7254715 -5.7059946 -1.6585268 --1.7664131 -5.7145948 -1.6642834 --1.8040502 -5.7119026 -1.6667506 --1.2666739 -3.9260244 -1.1352181 --1.2856259 -3.9026499 -1.130558 --1.9116397 -5.6859322 -1.6692177 --1.9455559 -5.6713667 -1.6683953 --1.9749194 -5.6438904 -1.6637352 --2.0159752 -5.6497822 -1.6692177 --2.052247 -5.6418247 -1.6705884 --2.0881629 -5.6327333 -1.6716849 --2.1220059 -5.6180153 -1.6711366 --2.1567829 -5.6057863 -1.6714107 --2.1928926 -5.5969243 -1.6727813 --2.231112 -5.5931897 -1.6757967 --2.2664745 -5.582068 -1.6766192 --2.3043547 -5.5769444 -1.6793604 --2.3359222 -5.5564942 -1.6774415 --1.3004117 -3.0404825 -0.90193599 --1.3190433 -3.0324461 -0.90193599 --2.4424701 -5.5231109 -1.6807311 --2.4798617 -5.5159144 -1.6831982 --2.5064664 -5.4848495 -1.6782639 --2.5445287 -5.4789615 -1.6812793 --1.6039016 -3.3984685 -1.0305016 --1.618073 -3.3746879 -1.0261155 --1.6353812 -3.3577788 -1.0239226 --1.6529692 -3.3416469 -1.0220037 --1.6747369 -3.3340197 -1.0228261 --1.696473 -3.3262513 -1.0236484 --1.7252504 -3.3320062 -1.0288569 --1.7586353 -3.346046 -1.0368066 --2.1198983 -3.97416 -1.2432243 --2.8940239 -5.3464494 -1.6922444 --2.9239969 -5.3235335 -1.6905996 --2.9308619 -5.2592869 -1.6755226 --2.9626038 -5.2403674 -1.6752485 --2.9884837 -5.2112451 -1.6716849 --3.0189526 -5.1903157 -1.6708624 --3.0531857 -5.1758361 -1.6722331 --3.0972276 -5.1776381 -1.6790862 --3.1294372 -5.1593585 -1.6793604 --3.1575096 -5.134325 -1.6774415 --3.2016723 -5.1352568 -1.6842947 --3.2146266 -5.0862479 -1.6744261 --3.2545929 -5.0801945 -1.6790862 --3.2919874 -5.0698085 -1.6823758 --3.3246191 -5.0519238 -1.6831982 --3.3582222 -5.03543 -1.6845688 --3.3659029 -4.9804654 -1.6727813 --3.4300847 -5.0089169 -1.6897773 --3.4278638 -4.9403663 -1.6733296 --3.466408 -4.9310417 -1.6774415 --3.4397004 -4.8297753 -1.6494806 --2.201673 -3.0513749 -1.0318723 --2.2197869 -3.0370317 -1.0315981 --3.5400333 -4.7818756 -1.6552372 --3.6148818 -4.8208513 -1.6768932 --3.6193852 -4.7656465 -1.6651058 --3.680218 -4.7845135 -1.6799086 --3.7142334 -4.7679114 -1.6821016 --3.7517574 -4.7556028 -1.6859394 --3.7616596 -4.7084479 -1.6771674 --3.7965274 -4.6927552 -1.6799086 --3.8252501 -4.6693721 -1.6799086 --3.8581264 -4.6509943 -1.6818275 --3.9045277 -4.6485906 -1.6897773 --3.9392073 -4.6318717 -1.6925185 --3.9669263 -4.606885 -1.6922444 --3.9951189 -4.5824575 -1.6922444 --4.0212522 -4.5556946 -1.691422 --4.0561781 -4.5388231 -1.6944374 --4.0684676 -4.4967337 -1.6878583 --4.0972815 -4.4731035 -1.6884066 --4.1200738 -4.4429426 -1.6864877 --4.1492319 -4.419682 -1.6873101 --4.1610355 -4.3781056 -1.6810051 --4.1871543 -4.3517985 -1.6807311 --4.2157903 -4.3280916 -1.6815534 --4.2483444 -4.3083057 -1.6840205 --4.2604327 -4.2678638 -1.6782639 --4.2865396 -4.241642 -1.6782639 --4.3124852 -4.21526 -1.6782639 --4.3251243 -4.1760273 -1.6730554 --4.3388362 -4.1381259 -1.6683953 --4.3746448 -4.1213179 -1.6725072 --4.4061861 -4.1002946 -1.6749743 --4.4213505 -4.0640697 -1.6711366 --4.447628 -4.0381575 -1.6716849 --4.4465489 -3.9876747 -1.6618162 --4.4666142 -3.9564898 -1.6601715 --4.5016627 -3.938508 -1.6642834 --4.5388412 -3.9221313 -1.6692177 --4.5233226 -3.8604922 -1.6544148 --4.5616307 -3.8450623 -1.6598973 --4.5747905 -3.8083854 -1.6560596 --4.5936155 -3.7765787 -1.6544148 --4.6301398 -3.7592337 -1.6593491 --4.665123 -3.7403789 -1.6637352 --4.6894937 -3.7128778 -1.6642834 --4.7083993 -3.681072 -1.6629127 --4.7461214 -3.6638668 -1.6683953 --4.7654538 -3.632344 -1.6672988 --4.7907252 -3.6053486 -1.6683953 --4.80581 -3.5707231 -1.6659281 --4.8369341 -3.5479941 -1.6692177 --4.8648438 -3.5227611 -1.6714107 --4.8777623 -3.4866924 -1.6683953 --4.9108505 -3.4650147 -1.6725072 --4.9391212 -3.439764 -1.6749743 --4.9696441 -3.415931 -1.6782639 --4.9857354 -3.382134 -1.6766192 --4.9944072 -3.3434529 -1.6725072 --5.024457 -3.3191063 -1.6757967 --5.0423107 -3.2866387 -1.6749743 --5.0769415 -3.2650023 -1.6799086 --5.060339 -3.2106023 -1.667573 --5.0750527 -3.1764305 -1.6659281 --5.1189957 -3.1603887 -1.674152 --5.1440406 -3.1324213 -1.6760708 --5.1598663 -3.0988183 -1.6749743 --5.180438 -3.0680797 -1.6755226 --5.1966743 -3.0347805 -1.6747003 --5.235199 -3.0143552 -1.6812793 --5.2519236 -2.9812262 -1.6807311 --5.2877407 -2.9588079 -1.6864877 --5.3209534 -2.9346683 -1.691422 --5.33886 -2.9019642 -1.691422 --5.3811493 -2.8823209 -1.6993717 --5.3953314 -2.8474529 -1.6982752 --5.4220872 -2.8191748 -1.7012906 --5.4521222 -2.7924292 -1.7054025 --5.4837499 -2.7662873 -1.7100626 --5.4937301 -2.7291644 -1.7078696 --5.5103726 -2.6954041 -1.7078696 --5.5424032 -2.669054 -1.7128038 --5.5838761 -2.646944 -1.7207536 --5.613956 -2.6191385 -1.7251396 --5.6640058 -2.6002934 -1.7358305 --5.6605735 -2.5567803 -1.7297997 --5.6875796 -2.5270765 -1.7333634 --5.7338204 -2.5056107 -1.7429578 --5.7517371 -2.4715207 -1.7437803 --5.772995 -2.4388022 -1.7456992 --5.7878504 -2.4033339 -1.7456992 --5.8265285 -2.3775868 -1.7531005 --5.8383298 -2.3407173 -1.7522782 --5.853477 -2.3052025 -1.7525523 --5.8872437 -2.2768757 -1.7585831 --5.8867188 -2.2352464 -1.7541971 --5.9030266 -2.2000918 -1.7550194 --5.9426069 -2.1734111 -1.7629691 --5.9341063 -2.1291111 -1.7563901 --5.8908157 -2.072865 -1.7393942 --5.9470601 -2.0517383 -1.7525523 --5.9886889 -2.025069 -1.7613244 --6.0621643 -2.008554 -1.7796909 --6.1283426 -1.9888374 -1.7958643 --6.2018371 -1.9707141 -1.8142309 --6.3102322 -1.9626184 -1.8430142 --6.4472785 -1.9619464 -1.8802955 --6.6039057 -1.9654269 -1.9233335 --6.70541 -1.9509346 -1.9499238 --6.7459297 -1.9179088 -1.9584217 --6.7557178 -1.8759657 -1.9578735 --6.7745266 -1.8364915 -1.9600666 --6.7949648 -1.797349 -1.9628078 --6.8095899 -1.7565831 -1.9639043 --6.8277011 -1.7166435 -1.9660974 --6.8446445 -1.676319 -1.9680161 --6.8594785 -1.6354048 -1.9693868 --6.8778152 -1.5952412 -1.971854 --6.8649588 -1.5479316 -1.9652749 --6.8348727 -1.497135 -1.9537616 --6.8862596 -1.4641715 -1.9660974 --6.9252534 -1.4281079 -1.9748694 --6.886734 -1.3761632 -1.961163 --6.8997693 -1.3347948 -1.9625336 --6.9116106 -1.2931411 -1.9636302 --6.9260392 -1.2519057 -1.965549 --6.9222221 -1.2074012 -1.9622595 --6.9437261 -1.1672966 -1.9663714 --6.9526563 -1.1249762 -1.9669197 --6.9594278 -1.0822942 -1.9669197 --6.9764004 -1.0411336 -1.9699351 --6.9759936 -0.99735457 -1.9680161 --6.9953213 -0.95635635 -1.971854 --7.002965 -0.91366482 -1.9724022 --6.9779 -0.8668825 -1.9636302 --7.0060091 -0.82675678 -1.9702092 --7.0071273 -0.78332555 -1.9691128 --6.9974561 -0.73880047 -1.9650007 --7.0075994 -0.69642192 -1.9666456 --6.99259 -0.65162528 -1.961163 --7.000289 -0.60904092 -1.9622595 --6.9981427 -0.5656113 -1.9606148 --6.9947686 -0.52215934 -1.9586959 --6.9911246 -0.47877008 -1.956777 --6.9977698 -0.43610382 -1.9578735 --6.9859114 -0.39234838 -1.9537616 --7.0035553 -0.35024568 -1.9581476 --7.010376 -0.30747706 -1.9595182 --7.0207801 -0.26478308 -1.9619853 --7.0107379 -0.22133459 -1.9586959 --6.6750374 0.49019194 -1.9493195 --6.6833696 0.53205472 -1.9527397 --6.6790242 0.57297099 -1.9524547 --6.6839733 0.61473352 -1.9550198 --6.6943841 0.65714109 -1.9592952 --6.687366 0.69790572 -1.9584401 --6.6772418 0.73829246 -1.95673 --6.6697297 0.77891535 -1.9558749 --6.6724358 0.82076287 -1.958155 --6.6777306 0.86304194 -1.9612902 --6.6485639 0.90077817 -1.9541649 --6.6277275 0.93940115 -1.9496045 --6.6360612 0.98215795 -1.9538798 --6.6223311 1.021687 -1.9515996 --6.6178303 1.0626059 -1.9521697 --6.5970044 1.1008232 -1.9478943 --6.4900155 1.1239259 -1.9176823 --6.4999785 1.1667781 -1.9228127 --0 0 -0 --6.5341167 1.2558713 -1.9376336 --6.534749 1.297622 -1.9401989 --6.528542 1.3380792 -1.940769 --6.5258355 1.3793026 -1.942479 --6.5256782 1.4211556 -1.9450442 --6.5187058 1.4615895 -1.9456142 --6.5040112 1.5002663 -1.9439042 --6.4946833 1.5401459 -1.9439042 --6.4683485 1.5758806 -1.9387738 --6.4529781 1.6141435 -1.9370637 --6.4262414 1.6494155 -1.9319333 --6.4289765 1.6922333 -1.9359236 --6.422174 1.7326483 -1.9370637 --6.3947926 1.7674222 -1.9319333 --6.3912053 1.8087159 -1.9342134 --6.3809075 1.8481644 -1.9344984 --6.4135585 1.9003608 -1.9481794 --6.3742585 1.9313347 -1.9396288 --6.3503857 1.9667217 -1.9359236 --6.3071294 1.9958123 -1.9262329 --6.3257728 2.0445025 -1.9359236 --6.3249416 2.0871851 -1.9396288 --6.2847657 2.1167717 -1.9310782 --6.267127 2.1537361 -1.9296532 --6.250176 2.190881 -1.9285131 --6.2492509 2.2337089 -1.9325033 --6.2759519 2.2867856 -1.9453292 --6.2366443 2.3159037 -1.9373487 --6.1945267 2.3436081 -1.9285131 --6.1862903 2.3839867 -1.9305083 --6.191175 2.4296069 -1.9367787 --6.1832709 2.4703958 -1.9390588 --6.17066 2.5093729 -1.9399139 --6.1516042 2.5457213 -1.9387738 --6.140285 2.5852795 -1.9401989 --6.1199012 2.6210194 -1.9387738 --6.1001887 2.6569893 -1.9376336 --6.0793891 2.6924279 -1.9362086 --6.0277963 2.713933 -1.9248078 --6.0197453 2.754858 -1.927658 --6.0122881 2.7961905 -1.9307932 --5.9872189 2.8293414 -1.928228 --5.980114 2.8710051 -1.9316483 --5.9684157 2.9105864 -1.9336435 --5.9470086 2.9454508 -1.9325033 --5.9219742 2.9784389 -1.9302232 --5.895905 3.0107946 -1.927658 --5.8679605 3.0420601 -1.9245228 --5.8568177 3.0820267 -1.927088 --5.833569 3.1156468 -1.9256629 --5.8202405 3.1545806 -1.927658 --5.8007751 3.1902335 -1.927658 --5.7861123 3.2285695 -1.9293681 --5.7545166 3.2573991 -1.9253778 --5.7302651 3.2902596 -1.9239528 --5.7165947 3.3292181 -1.9262329 --5.6869817 3.3588684 -1.9230977 --5.6687317 3.3951776 -1.9239528 --5.6535268 3.4333801 -1.9259479 --5.6315374 3.4675024 -1.9256629 --5.6142201 3.50453 -1.927088 --5.5950408 3.5404503 -1.927943 --5.5651445 3.5695376 -1.9250928 --5.5431376 3.6036177 -1.9250928 --5.5129185 3.6322868 -1.9222426 --5.4801655 3.6591239 -1.9185374 --5.4425287 3.6824722 -1.9131221 --5.409555 3.7087498 -1.9094168 --5.3866968 3.7418723 -1.9094168 --5.3628516 3.7743022 -1.9091318 --5.365344 3.8255048 -1.9185374 --5.3223467 3.8443193 -1.9114119 --5.2986584 3.8769045 -1.9114119 --5.2747703 3.9093435 -1.9114119 --5.2644801 3.9519956 -1.9165423 --5.2256365 3.9731982 -1.9111269 --5.2133088 4.0145464 -1.9156872 --5.205204 4.0594306 -1.9219576 --5.1832061 4.0936694 -1.9230977 --5.1594872 4.1265936 -1.9236678 --5.1340699 4.158174 -1.9236678 --5.1092 4.1902056 -1.9239528 --5.0738087 4.2135139 -1.9202476 --5.0478592 4.2445669 -1.9202476 --5.0012879 4.2580576 -1.912267 --4.9663558 4.2811532 -1.9088467 --4.929163 4.3020897 -1.9045714 --4.9285269 4.3551073 -1.9148321 --4.8859982 4.3712029 -1.9085617 --4.8882079 4.4274883 -1.9202476 --4.8517671 4.4489751 -1.9165423 --4.7822351 4.4395256 -1.8994411 --4.7912192 4.5029263 -1.9142621 --4.7475305 4.5170407 -1.9077066 --4.7390518 4.5647082 -1.9156872 --4.6951723 4.5783067 -1.9091318 --4.6717663 4.6117439 -1.9111269 --4.6298237 4.6267691 -1.9054265 --4.6101055 4.6639538 -1.9091318 --4.5747061 4.6852937 -1.9062816 --4.5571814 4.7250056 -1.9111269 --4.5307479 4.7556558 -1.912267 --4.4922876 4.773592 -1.9082767 --4.4570403 4.7947469 -1.9057115 --4.4430923 4.8389525 -1.912552 --4.397222 4.8483706 -1.9054265 --4.3673902 4.8752604 -1.9054265 --4.3431096 4.9084277 -1.9079916 --4.301559 4.9219909 -1.9028614 --4.2900629 4.9700632 -1.9114119 --4.2464299 4.9809728 -1.9054265 --4.2065287 4.995935 -1.9011512 --4.178246 5.0246 -1.9022913 --4.1734891 5.0819993 -1.9145471 --4.1132536 5.0717721 -1.9008662 --4.0988297 5.1178665 -1.9088467 --4.0649724 5.1399126 -1.9077066 --4.0251002 5.15418 -1.9037164 --3.9852066 5.1681523 -1.8997262 --3.9603865 5.2016606 -1.9031464 --3.9266677 5.2235641 -1.9022913 --3.9059649 5.2629557 -1.9079916 --3.888324 5.3069286 -1.9154022 --3.8714135 5.3524365 -1.9233828 --3.8329303 5.3682885 -1.9205326 --3.7894301 5.3768177 -1.9151171 --3.7476115 5.3873763 -1.9105569 --3.7096033 5.4031572 -1.9079916 --3.6758428 5.4250236 -1.9077066 --3.6478126 5.4554448 -1.9105569 --3.583133 5.4305158 -1.8937408 --3.5638609 5.4740906 -1.9014362 --3.5447063 5.5184388 -1.9094168 --3.5292444 5.5692353 -1.9196775 --3.5011013 5.6005397 -1.9230977 --3.4656653 5.6202846 -1.9225277 --3.4296207 5.6389866 -1.9216726 --3.390027 5.6517034 -1.9188224 --3.3513823 5.6657972 -1.9165423 --3.3160715 5.6854262 -1.9162573 --3.2792132 5.702342 -1.9151171 --3.2474706 5.7281933 -1.9171124 --3.2141318 5.7513585 -1.9182523 --3.1801686 5.7734909 -1.9191074 --3.1391976 5.7827859 -1.9156872 --3.1081755 5.8103914 -1.9185374 --3.0961444 5.874299 -1.9336435 --3.0679903 5.9084992 -1.9387738 --3.0290606 5.9220924 -1.9370637 --2.9930975 5.9414229 -1.9373487 --2.9553077 5.9571004 -1.9364936 --2.9132328 5.9639239 -1.9327884 --2.8662026 5.9600897 -1.9256629 --2.8361373 5.9914269 -1.9302232 --2.7798991 5.9670076 -1.9165423 --2.7663927 6.0344934 -1.9330734 --2.7230108 6.0373731 -1.9285131 --2.6793091 6.0390716 -1.9236678 --2.6452692 6.0624266 -1.9259479 --2.608021 6.0785437 -1.9259479 --2.5740261 6.1023808 -1.9285131 --2.5416713 6.1304569 -1.9325033 --2.5101533 6.1610284 -1.9373487 --2.4662497 6.1611853 -1.9325033 --2.4343591 6.1913676 -1.9373487 --2.3890765 6.1874094 -1.9313632 --2.3592169 6.223464 -1.9382037 --2.3149722 6.2216516 -1.9330734 --2.285625 6.2600508 -1.940769 --2.2468481 6.2730546 -1.9404839 --2.2051399 6.277679 -1.9376336 --2.1659553 6.2892785 -1.9370637 --2.1282434 6.3051748 -1.9379187 --2.0952308 6.3354068 -1.9433341 --2.0551374 6.3444958 -1.942194 --2.017328 6.3606415 -1.9433341 --1.9782618 6.3728995 -1.9433341 --1.9352238 6.3720775 -1.9393438 --1.8999076 6.3966961 -1.9433341 --1.8595541 6.404551 -1.942194 --1.8207443 6.417685 -1.942764 --1.7731465 6.3991756 -1.9336435 --1.738851 6.428441 -1.9393438 --1.7093959 6.4769897 -1.9510295 --1.663653 6.4641485 -1.9439042 --1.6123062 6.4277468 -1.9296532 --1.576928 6.4542799 -1.9347835 --1.5410631 6.4796877 -1.9396288 --1.4999801 6.483418 -1.9379187 --1.4584892 6.4850183 -1.9356385 --1.4203057 6.5013371 -1.9379187 --1.3819768 6.5174313 -1.9401989 --1.3444684 6.5379939 -1.9439042 --1.3018938 6.5338993 -1.9401989 --1.2625035 6.5455294 -1.9413389 --1.221966 6.5512681 -1.940769 --1.1820848 6.5605292 -1.9413389 --1.1416439 6.5667148 -1.9410539 --1.1022791 6.5792685 -1.942764 --1.0621935 6.5878005 -1.9433341 --1.0227778 6.6008248 -1.9453292 --0.9828198 6.6107688 -1.9464693 --0.94439787 6.6318583 -1.9510295 --0.90239632 6.6280303 -1.9481794 --0.86084729 6.6267886 -1.9461843 --0.82146215 6.6424103 -1.9493195 --0.78102458 6.6501813 -1.9501746 --0.73925292 6.6462746 -1.9476093 --0.69466025 6.61446 -1.9367787 --0.65829593 6.6615233 -1.9496045 --0.61652678 6.6558924 -1.9467543 --0.57658166 6.6700549 -1.9498895 --0.53556758 6.6725116 -1.9496045 --0.49405044 6.668025 -1.9473244 --0.45273817 6.6651926 -1.9456142 --0.41195065 6.6697588 -1.9461843 --0.37059361 6.6645045 -1.9439042 --0.32945809 6.6618662 -1.942479 --0.28799722 6.6503553 -1.9384887 --0.24750482 6.6606183 -1.9410539 --0.20704505 6.6754241 -1.9450442 --0.16612886 6.6784854 -1.9456142 --0.12473815 6.6573367 -1.9390588 --0.083791882 6.6503096 -1.9367787 --0.043008883 6.6545324 -1.9379187 --0.0021770701 6.6575465 -1.9387738 -0.03871879 6.6651025 -1.9410539 -0.079730518 6.674324 -1.9439042 -0.12052443 6.6650839 -1.9413389 -0.16141835 6.6642189 -1.9413389 -0.20251098 6.6698098 -1.9433341 -0.2427648 6.6502419 -1.9379187 -0.28438556 6.6677799 -1.9436191 -0.32519916 6.6639948 -1.9430491 -0.36529115 6.6475177 -1.9387738 -0.40695214 6.659502 -1.9430491 -0.44554892 6.6234074 -1.9330734 -0.48674393 6.6281967 -1.9353535 -0.52702343 6.6203079 -1.9339285 -0.56903058 6.6331844 -1.9387738 -0.6109516 6.6429305 -1.942764 -0.6473853 6.5951767 -1.9296532 -0.69043142 6.6158667 -1.9370637 -0.73175114 6.6181746 -1.9390588 -0.77034146 6.5964236 -1.9339285 -0.80798936 6.5687404 -1.927088 -0.85320008 6.6016831 -1.9384887 -0.89459318 6.6029725 -1.9404839 -0.93468738 6.594512 -1.9396288 -0.97358745 6.5782228 -1.9364936 -1.0143713 6.5749669 -1.9373487 -1.0546955 6.5686193 -1.9373487 -1.0964012 6.5705328 -1.9399139 -1.1355505 6.5570707 -1.9379187 -1.175932 6.5509229 -1.9382037 -1.2154045 6.5398149 -1.9370637 -1.2538794 6.5237627 -1.9344984 -1.2981825 6.5375695 -1.9410539 -1.336153 6.5191522 -1.9379187 -1.3791043 6.5248976 -1.942194 -1.4203391 6.5219316 -1.9439042 -1.4630585 6.5252523 -1.9476093 -1.4953073 6.4825301 -1.9373487 -1.5341699 6.4695024 -1.9362086 -1.5738372 6.4599671 -1.9362086 -1.6099538 6.4362411 -1.9319333 -1.6484617 6.4225283 -1.9307932 -1.6897918 6.4197078 -1.9330734 -1.7274017 6.4027405 -1.9310782 -1.7712548 6.4086499 -1.9362086 -1.8087159 6.3912053 -1.9342134 -1.8481644 6.3809075 -1.9344984 -1.8864648 6.3666906 -1.9336435 -1.924104 6.350409 -1.9322183 -1.9627495 6.3375678 -1.9319333 -2.0033352 6.3308883 -1.9336435 -2.0421431 6.3184767 -1.9336435 -2.0826771 6.3112888 -1.9353535 -2.1201389 6.2947574 -1.9342134 -2.1543593 6.26894 -1.9302232 -2.190881 6.250176 -1.9285131 -2.2324178 6.2456408 -1.9313632 -2.2621622 6.2084112 -1.9239528 -2.301883 6.1989064 -1.9253778 -2.3371606 6.177494 -1.9230977 -2.369159 6.1478333 -1.9182523 -2.4145436 6.1528096 -1.9245228 -2.4536743 6.1414385 -1.9256629 -2.4938397 6.1324825 -1.927658 -2.5288544 6.1108656 -1.9256629 -2.565186 6.0925841 -1.9248078 -2.6062963 6.0855403 -1.927658 -2.6343975 6.0483446 -1.9208175 -2.6668003 6.0215502 -1.9173973 -2.706847 6.0120649 -1.9196775 -2.738498 5.9840131 -1.9159722 -2.7703114 5.9566689 -1.912552 -2.8076279 5.9412913 -1.9131221 -2.8481801 5.9325929 -1.9159722 -2.8828471 5.9115591 -1.9148321 -2.9267256 5.9092188 -1.9199625 -2.9668064 5.8988557 -1.9225277 -3.0116668 5.8976121 -1.928228 -3.0495622 5.8824253 -1.9293681 -3.0677381 5.8296762 -1.9179673 -3.0849302 5.7760816 -1.9062816 -3.1175721 5.7519879 -1.9045714 -3.161124 5.7478671 -1.9097018 -3.1832511 5.7049279 -1.9017212 -3.2092218 5.6694412 -1.8963059 -3.2563617 5.6712532 -1.9037164 -3.2954414 5.6586199 -1.9062816 -3.3315628 5.6407685 -1.9071367 -3.3276842 5.5560865 -1.8849051 -3.3706715 5.5503092 -1.8900355 -3.415221 5.5466609 -1.8960209 -3.4527442 5.5312924 -1.898016 -3.4963596 5.5253906 -1.9034314 -3.527091 5.4989929 -1.9017212 -3.5571077 5.4716225 -1.8997262 -3.5827014 5.4376888 -1.8954508 -3.6090777 5.405242 -1.8917456 -3.6453996 5.3877578 -1.8934557 -3.680016 5.36766 -1.8943107 -3.7281976 5.3670182 -1.9022913 -3.7770612 5.3667707 -1.9105569 -3.7854295 5.3091583 -1.898016 -3.7780764 5.2306695 -1.8777796 -3.8372748 5.2445159 -1.8914605 -3.8836541 5.2401214 -1.898586 -3.9019196 5.1977978 -1.8917456 -3.9447646 5.1882539 -1.897161 -4.0005078 5.1950846 -1.9088467 -4.0099044 5.1417222 -1.898016 -4.0336528 5.1072435 -1.8943107 -4.0673099 5.085391 -1.8954508 -4.0960226 5.0573597 -1.8943107 -4.1251531 5.0299087 -1.8934557 -4.1577759 5.0067143 -1.8943107 -4.1865673 4.9789081 -1.8934557 -4.2133093 4.9487476 -1.8917456 -4.2511067 4.9315128 -1.8951658 -4.2831774 4.9075017 -1.8960209 -4.3132086 4.8811283 -1.8960209 -4.3219829 4.8310008 -1.8866153 -4.3599105 4.8136249 -1.8903205 -4.384829 4.7818379 -1.8883253 -4.4219141 4.7632713 -1.8917456 -4.4569669 4.7423344 -1.8943107 -4.4866424 4.7155924 -1.8945957 -4.538105 4.711442 -1.9042864 -4.5675979 4.6841941 -1.9045714 -4.594233 4.6540337 -1.9037164 -4.6172814 4.6203332 -1.9014362 -4.6332717 4.5797887 -1.8963059 -4.657856 4.5479255 -1.8948808 -4.7029247 4.535892 -1.9020063 -4.7285857 4.5049667 -1.9011512 -4.749157 4.4693003 -1.898301 -4.794045 4.456388 -1.9054265 -4.8057632 4.4126287 -1.8991561 -4.8355885 4.3856335 -1.9002962 -4.8688335 4.3616352 -1.9028614 -4.8904786 4.3272333 -1.9008662 -4.9068322 4.2883153 -1.896876 -4.9374065 4.2618842 -1.898586 -4.9634643 4.2315087 -1.898586 -4.9937348 4.2046771 -1.9002962 -5.0083838 4.1647658 -1.8960209 -5.0301394 4.1309156 -1.8945957 -5.0501795 4.0957484 -1.8926007 -5.0707259 4.0610895 -1.8908905 -5.0978045 4.031683 -1.8917456 -5.1247134 4.0020971 -1.8926007 -5.1499324 3.9711623 -1.8928857 -5.1963215 3.9563229 -1.9011512 -5.1975107 3.9070897 -1.8926007 -5.2375522 3.8871181 -1.898586 -5.247385 3.8447132 -1.8934557 -5.2584491 3.8034577 -1.8888954 -5.3011923 3.7850418 -1.8960209 -5.3219662 3.750787 -1.8951658 -5.3661284 3.7328365 -1.9028614 -5.3604808 3.6803143 -1.8926007 -5.394866 3.6554167 -1.896876 -5.4315381 3.6318333 -1.9020063 -5.4905272 3.622714 -1.9151171 -5.4861412 3.5717032 -1.9057115 -5.4837561 3.5224371 -1.897161 -5.5028372 3.4871843 -1.8963059 -5.5233178 3.4528458 -1.8960209 -5.5550075 3.4254289 -1.8997262 -5.5824733 3.395263 -1.9020063 -5.6204648 3.3712966 -1.9079916 -5.6237178 3.3265018 -1.9020063 -5.653132 3.2972431 -1.9051415 -5.6840601 3.2687042 -1.9088467 -5.6764898 3.2181706 -1.8994411 -5.6961293 3.1832798 -1.8994411 -5.7281494 3.1552038 -1.9037164 -5.7625661 3.1282258 -1.9088467 -5.787569 3.0959723 -1.9108418 -5.8123927 3.0635297 -1.912837 -5.8098121 3.0167687 -1.9057115 -5.8367476 2.9854269 -1.9085617 -5.841258 2.9426596 -1.9040014 -5.8583455 2.906337 -1.9037164 -5.8855429 2.8749623 -1.9068516 -5.8996167 2.8371341 -1.9057115 -5.9047837 2.7951422 -1.9017212 -5.9270372 2.7612863 -1.9034314 -5.9569392 2.7308559 -1.9077066 -5.9762049 2.6954353 -1.9085617 -5.9891262 2.657161 -1.9074216 -6.0176182 2.6257269 -1.9114119 -6.05652 2.5985763 -1.9188224 -6.0697012 2.5602481 -1.9179673 -6.0888381 2.5244248 -1.9191074 -6.0997744 2.4852095 -1.9176823 -6.1122389 2.446667 -1.9168273 -6.1101861 2.4024558 -1.9114119 -6.1149755 2.3611231 -1.9082767 -6.136519 2.3262746 -1.9105569 -6.1273184 2.2798913 -1.9031464 -6.1546988 2.2471805 -1.9074216 -6.1855178 2.2155118 -1.912837 -6.1818118 2.1714838 -1.9074216 -6.2158651 2.140687 -1.9139771 -6.2415986 2.1067963 -1.9179673 -6.2407565 2.0639467 -1.9136921 -6.2414484 2.0217774 -1.9099869 -6.2546496 1.9837322 -1.9102719 -6.2731123 1.9473051 -1.912267 -6.2858601 1.9090557 -1.912552 -6.3002119 1.8712687 -1.9134071 -6.3069725 1.8312405 -1.9119819 -6.3328447 1.7966906 -1.9165423 -6.32897 1.7537065 -1.9119819 -6.3414617 1.7153398 -1.912552 -6.3546481 1.6771303 -1.9134071 -6.3685322 1.6390624 -1.9145471 -6.4063625 1.6069462 -1.9230977 -6.4142394 1.5671526 -1.9225277 -6.4237347 1.5277661 -1.9225277 -6.4217811 1.4857314 -1.9191074 -6.4307766 1.4463001 -1.9191074 -6.4488945 1.4088585 -1.9219576 -6.4452276 1.3666797 -1.9182523 -6.4675756 1.3300004 -1.9225277 -6.5028768 1.2957182 -1.9307932 -6.4871745 1.2512586 -1.9236678 -6.4984994 1.2121328 -1.9248078 -6.5095878 1.1729152 -1.9259479 -6.5147734 1.1326231 -1.9253778 -6.5064745 1.0900964 -1.9208175 -6.5357528 1.0538108 -1.927658 -6.5402012 1.0133951 -1.927088 -6.522593 0.96972638 -1.9199625 -6.542655 0.93171078 -1.9242377 -6.5397005 0.89038599 -1.9216726 -6.5507441 0.85098225 -1.9233828 -6.5701118 0.8125338 -1.927658 -6.5806856 0.77287489 -1.9293681 -6.5881619 0.73279941 -1.9302232 -6.5896745 0.69206154 -1.9293681 -6.5880733 0.65105045 -1.927658 -6.5862174 0.61008507 -1.9259479 -6.5812421 0.5689199 -1.9233828 -6.5941639 0.52929264 -1.9262329 -6.6068463 0.48952827 -1.9290831 -6.6202455 0.4496929 -1.9322183 -6.6276636 0.40935799 -1.9336435 -6.6290936 0.36863068 -1.9333584 -6.6408043 0.32842016 -1.9362086 -6.6388636 0.28750157 -1.9350685 -6.6443343 0.24690256 -1.9362086 -6.6438079 0.20606993 -1.9356385 -6.6459055 0.16532409 -1.9359236 -6.6429615 0.12447131 -1.9347835 -6.6483927 0.083768062 -1.9362086 -6.6363206 0.042894356 -1.9325033 -6.6613808 0.0021776557 -1.9399139 -6.6459327 -0.038604088 -1.9353535 -6.6350274 -0.079254262 -1.9322183 -6.6324997 -0.11992954 -1.9316483 -6.6345139 -0.16069366 -1.9325033 -6.6372352 -0.20151627 -1.9336435 -6.6435366 -0.24251886 -1.9359236 -6.640008 -0.28319624 -1.9353535 -6.6362309 -0.32383946 -1.9347835 -6.6168914 -0.36360285 -1.9296532 -6.6164494 -0.40431374 -1.9302232 -6.6100187 -0.44464591 -1.9290831 -6.6129017 -0.48561805 -1.9307932 -6.6021533 -0.52557504 -1.9285131 -6.6226792 -0.56812751 -1.9356385 -6.607615 -0.60769743 -1.9322183 -6.6047158 -0.64832336 -1.9325033 -6.6120534 -0.69003284 -1.9359236 -6.6153164 -0.73143464 -1.9382037 -6.6097517 -0.77190036 -1.9379187 -6.5963292 -0.81138784 -1.9353535 -6.5988312 -0.85283107 -1.9376336 -6.5887251 -0.89266038 -1.9362086 -6.5688887 -0.93105108 -1.9319333 -6.5763264 -0.97330648 -1.9359236 -6.5787563 -1.0149566 -1.9384887 -6.5506382 -1.051805 -1.9319333 -6.5639148 -1.0952957 -1.9379187 -6.5627375 -1.1365329 -1.9396288 -6.5556402 -1.1767797 -1.9396288 -6.5454688 -1.2164563 -1.9387738 -6.5322342 -1.2555091 -1.9370637 -6.5497913 -1.3006116 -1.9447591 -6.5276031 -1.3378866 -1.9404839 -6.5155196 -1.3771205 -1.9393438 -6.4947724 -1.4144194 -1.9356385 -6.4990649 -1.4571822 -1.9396288 -6.4881339 -1.496601 -1.9390588 -6.4611087 -1.5321779 -1.9336435 -6.4404111 -1.5690691 -1.9302232 -6.4697151 -1.6183331 -1.942194 -6.4624486 -1.6587155 -1.9430491 -6.4679065 -1.7024877 -1.9478943 -6.4119945 -1.7299 -1.9339285 -6.4234314 -1.7753429 -1.940769 -6.4004278 -1.8113277 -1.9370637 -6.3910346 -1.8510996 -1.9376336 -6.3676095 -1.8867372 -1.9339285 -6.350409 -1.924104 -1.9322183 -6.2991142 -1.950833 -1.9199625 -6.213007 -1.9660103 -1.896876 -6.1360736 -1.9831548 -1.8766396 -5.9836206 -1.9744858 -1.8327466 -5.8687515 -1.9765729 -1.8005394 -5.7957821 -1.9916632 -1.7814431 -5.7364182 -2.0106916 -1.7666222 -5.6743331 -2.0280991 -1.750946 -5.6257606 -2.0497456 -1.7395453 -5.5654564 -2.0665331 -1.7244393 -5.4881277 -2.076211 -1.7039179 -5.4511375 -2.1005359 -1.6962224 -5.4131641 -2.1241353 -1.6882418 -5.3217049 -2.1260011 -1.6631601 -5.2819242 -2.1477773 -1.6546096 -5.1827416 -2.1445787 -1.6269627 -4.9645486 -2.0900114 -1.5608382 -4.8846712 -2.0917428 -1.5391767 -4.786509 -2.0845325 -1.5115299 -4.6351657 -2.0525115 -1.4664968 -4.6294761 -2.0840631 -1.4687769 -4.5059185 -2.0617537 -1.4325795 -4.414968 -2.0529699 -1.4069278 -4.3225651 -2.0423298 -1.3807061 -4.2520623 -2.0410092 -1.3616097 -4.208446 -2.0519304 -1.3513491 -4.160563 -2.060266 -1.3396633 -4.0605063 -2.0418112 -1.3105913 -3.9949799 -2.0396507 -1.2929201 -3.9679244 -2.0566227 -1.2880747 -3.9611676 -2.0840564 -1.2900699 -3.8916631 -2.0780575 -1.2709737 -3.9344521 -2.1320522 -1.2897849 -3.7373793 -2.0549634 -1.2273657 -3.7447867 -2.0890696 -1.2342062 -3.6343119 -2.0567458 -1.200859 -3.5808969 -2.0556123 -1.186893 -3.5317752 -2.0563145 -1.174352 -3.4943342 -2.0633183 -1.1658015 -3.4618747 -2.0728967 -1.1589611 -3.4253342 -2.0796664 -1.1506954 -3.3798642 -2.0805364 -1.1392947 -3.3418312 -2.0854969 -1.1304592 -3.2803786 -2.0752017 -1.113358 -3.1183388 -1.9995267 -1.0606294 -3.1285105 -2.0332551 -1.06861 -3.1031706 -2.043973 -1.0640496 -3.1120913 -2.0773501 -1.0717452 -3.2183535 -2.1769993 -1.114498 -3.1322119 -2.1468284 -1.0882763 -3.0819852 -2.1402984 -1.0748804 -3.0437143 -2.1415112 -1.0657598 -3.012569 -2.1473448 -1.0592043 -2.981467 -2.1528773 -1.0526489 -2.9712949 -2.1733954 -1.0537889 -2.9586732 -2.1921568 -1.0540739 -2.9712265 -2.2298396 -1.0637646 -2.9727468 -2.2596343 -1.069465 -3.0150173 -2.3211184 -1.0905564 -3.0143216 -2.3501873 -1.0956868 -3.0021007 -2.3704212 -1.0965419 -2.9695368 -2.3744254 -1.0897014 -2.9243767 -2.3678617 -1.0780156 -2.8890436 -2.3687377 -1.0700351 -2.8700311 -2.3827448 -1.0683249 -2.8450875 -2.3916719 -1.0643346 -2.8442237 -2.4208927 -1.0697501 -2.8140719 -2.4251535 -1.0637646 -2.8171897 -2.4581351 -1.0708901 -2.7848179 -2.4601388 -1.0640496 -2.7660992 -2.4739838 -1.0626246 -2.73524 -2.4767504 -1.0563542 -2.7242296 -2.4973745 -1.0580642 -2.7453775 -2.5479608 -1.0728853 -2.7164233 -2.5522835 -1.0674698 -2.7111263 -2.5788157 -1.0717452 -2.7380469 -2.6366372 -1.0894164 -2.6772177 -2.6098833 -1.0708901 -2.6420567 -2.6074033 -1.0629096 -2.6307533 -2.6283092 -1.0649047 -2.6165979 -2.6464472 -1.0657598 -2.5942848 -2.6562791 -1.0631946 -2.5679579 -2.6617968 -1.0589193 -2.5456276 -2.6712563 -1.0563542 -2.5370705 -2.6952035 -1.0597744 -2.5452795 -2.7374022 -1.070605 -2.5076942 -2.7303712 -1.0614845 -2.4915376 -2.7464168 -1.0617695 -2.4778361 -2.7652233 -1.0631946 -2.4620924 -2.7818108 -1.0637646 -2.4405627 -2.7918127 -1.0617695 -2.4183772 -2.8009295 -1.0594894 -2.3930631 -2.8062317 -1.0557841 -2.3696268 -2.813529 -1.0529339 -2.3480296 -2.8228562 -1.0509387 -2.32884 -2.8349876 -1.0500838 -2.3126085 -2.850713 -1.0506537 -2.2998657 -2.8708353 -1.0529339 -2.2822073 -2.8848929 -1.0529339 -2.2650528 -2.8995974 -1.053219 -2.2407815 -2.9050903 -1.0500838 -2.2234945 -2.9195476 -1.0503687 -2.2032354 -2.9300704 -1.0492287 -2.1874998 -2.9466133 -1.0503687 -2.1756086 -2.9684863 -1.053504 -2.1629696 -2.9895473 -1.0563542 -2.1301074 -2.9824779 -1.0489436 -2.1156316 -3.000977 -1.0509387 -2.0895169 -3.0028844 -1.0469484 -2.0650859 -3.0069554 -1.0438132 -2.0498219 -3.0243318 -1.0455234 -2.034955 -3.0424306 -1.0475185 -2.0326087 -3.0796642 -1.0563542 -2.0058317 -3.0800276 -1.0520788 -1.9894847 -3.0963099 -1.053504 -1.9694227 -3.1068394 -1.0529339 -1.95591 -3.1278067 -1.0560691 -1.9452314 -3.1536205 -1.0609144 -1.9293302 -3.1712301 -1.0629096 -1.9201865 -3.2002721 -1.068895 -1.9019774 -3.2144692 -1.0697501 -1.9029776 -3.2616856 -1.0820059 -1.8265611 -3.1752415 -1.0483736 -1.7772712 -3.133852 -1.0304173 -1.7598786 -3.1480453 -1.0315574 -1.7400671 -3.1579449 -1.0312724 -1.7288862 -3.183727 -1.0364028 -1.7025392 -3.1815963 -1.0321275 -1.7039838 -3.2318404 -1.0455234 -1.6841215 -3.2422349 -1.0455234 -1.6589597 -3.2422659 -1.0421032 -1.6407588 -3.2558086 -1.0432433 -1.6181957 -3.2606623 -1.0415331 -1.5943731 -3.262778 -1.038968 -1.5813825 -3.2871859 -1.0438132 -1.5501142 -3.2734334 -1.0361178 -1.5461848 -3.3176403 -1.0475185 -1.5261983 -3.3279366 -1.0478035 -1.4986589 -3.3215096 -1.0426732 -1.4638734 -3.2982221 -1.0321275 -1.3761681 -3.1525087 -0.98196411 -1.331865 -3.102752 -0.96315283 -1.3604654 -3.2239196 -0.99963528 -1.396067 -3.3659174 -1.0426732 -1.3934631 -3.4188073 -1.0569242 -1.3521645 -3.3765664 -1.040678 -1.332122 -3.3865838 -1.0412481 -1.3099369 -3.3911169 -1.0401081 -1.2826521 -3.3820601 -1.0346926 -1.290609 -3.4671297 -1.0592043 -1.2854115 -3.5191052 -1.0731703 -1.2608869 -3.5188041 -1.070605 -1.2453049 -3.5436583 -1.0760205 -1.2207304 -3.5430756 -1.0734553 -1.200193 -3.554132 -1.0745953 -1.1690376 -3.5332165 -1.0657598 -1.1461554 -3.5366752 -1.0646197 -1.122985 -3.5390728 -1.0631946 -1.0981245 -3.5358264 -1.0600594 -1.0441158 -3.4361019 -1.0269971 -0.99000973 -3.3312573 -0.99250978 -0.96287322 -3.3142555 -0.98538435 -0.94251919 -3.320101 -0.98538435 -0.92366445 -3.3313644 -0.98709446 -0.9122104 -3.3702805 -0.99735516 -0.92109036 -3.4879608 -1.0318425 -0.77815044 -3.0210354 -0.88676769 -0.78080606 -3.1103613 -0.91270441 -0.8724184 -3.5685749 -1.0515088 -0.85693252 -3.6009047 -1.0597744 -0.83503753 -3.607029 -1.0600594 -0.81288952 -3.6120849 -1.0600594 -0.79929626 -3.6563363 -1.0720302 -0.777641 -3.6649227 -1.0731703 -0.75205231 -3.6546028 -1.06861 -0.72998822 -3.6610286 -1.06918 -0.70479029 -3.6513207 -1.0649047 -0.68114376 -3.6489804 -1.0629096 -0.65874124 -3.6530912 -1.0629096 -0.63467377 -3.6476204 -1.0600594 -0.6211406 -3.7043869 -1.0760205 -0.59702748 -3.6996117 -1.0734553 -0.57299644 -3.69468 -1.0708901 -0.54778129 -3.6810601 -1.0657598 -0.52666909 -3.6947906 -1.068895 -0.50011402 -3.6694591 -1.0603443 -0.47845244 -3.6791127 -1.0623395 -0.45586884 -3.6819789 -1.0623395 -0.43349132 -3.6866109 -1.0629096 -0.41424802 -3.7196867 -1.0720302 -0.40271083 -3.829881 -1.1042373 -0.38240284 -3.864712 -1.113928 -0.35647616 -3.8431244 -1.1068026 -0.3243205 -3.7459221 -1.0771605 -0.29689148 -3.6924248 -1.0606294 -0.27097929 -3.6502049 -1.0475185 -0.2490305 -3.658493 -1.0495137 -0.22952388 -3.7077878 -1.0637646 -0.20857278 -3.7416661 -1.0734553 -0.18674271 -3.765852 -1.0802958 -0.16412801 -3.7784185 -1.083716 -0.14094096 -3.7793546 -1.083716 -0.11739405 -3.7686512 -1.0802958 -0.094149485 -3.7645097 -1.0788707 -0.071227007 -3.7746 -1.0817208 -0.04804134 -3.7730491 -1.0811508 -0.024895471 -3.7742312 -1.0814358 -0.0017338258 -3.7551427 -1.0757354 --0.021244243 -3.744539 -1.0726002 --0.044115357 -3.7357121 -1.0700351 --0.067193896 -3.7439964 -1.0726002 --0.090399131 -3.7530959 -1.0754504 --0.11409888 -3.7745063 -1.0820059 --0.13627291 -3.7469146 -1.0740253 --0.159302 -3.7469656 -1.0743103 --0.18200862 -3.7401733 -1.0726002 --0.20516551 -3.7428143 -1.0737402 --0.22818576 -3.7424419 -1.0740253 --0.25275716 -3.7648799 -1.0811508 --0.27817538 -3.7948041 -1.0905564 --0.29924393 -3.7653167 -1.0822909 --0.32734951 -3.8216646 -1.0996771 --0.35000107 -3.8109939 -1.0971119 --0.3699075 -3.7734795 -1.0865662 --0.39474833 -3.7873452 -1.0914115 --0.41513097 -3.759129 -1.083716 --0.43974763 -3.7698395 -1.0877062 --0.46580034 -3.7908535 -1.0948317 --0.48757553 -3.7765169 -1.0914115 --0.51048094 -3.7715545 -1.0908414 --0.54196322 -3.8271902 -1.1085126 --0.84713787 -5.7248707 -1.6799762 --0.88254166 -5.7214599 -1.6805463 --0.91595793 -5.7055268 -1.6774111 --0.95000154 -5.6941266 -1.675701 --0.98426729 -5.6844125 -1.6745609 --1.0196362 -5.6810966 -1.675416 --1.0523719 -5.663425 -1.6719958 --1.0880077 -5.6615672 -1.6734208 --1.1240338 -5.661366 -1.675416 --1.1585575 -5.6534233 -1.675131 --1.1920342 -5.6405816 -1.6734208 --1.2251929 -5.6266055 -1.6714257 --1.2609532 -5.6245933 -1.6731358 --1.2995379 -5.6344957 -1.6785512 --1.3320941 -5.6180224 -1.6759861 --1.3758495 -5.6479239 -1.6876718 --1.4074528 -5.6272879 -1.6839665 --1.4402854 -5.6120472 -1.6819714 --1.4771347 -5.6123729 -1.6848216 --1.5070467 -5.5865469 -1.6796912 --1.5402747 -5.5734992 -1.6785512 --1.5739218 -5.562099 -1.6779811 --1.6133571 -5.5707493 -1.6836815 --1.6496879 -5.5680971 -1.6859617 --1.686047 -5.5652084 -1.6882418 --1.2233562 -3.9516003 -1.1891731 --1.2472904 -3.9431059 -1.1888881 --1.7787604 -5.5040464 -1.6791213 --1.8239193 -5.5276155 -1.6899519 --1.8274969 -5.4263959 -1.6617351 --1.8626282 -5.4205189 -1.6634451 --1.9072733 -5.4415503 -1.6737058 --1.9409488 -5.4306474 -1.6739908 --1.971936 -5.4123321 -1.6719958 --2.0111172 -5.4163036 -1.677126 --2.0453312 -5.4065509 -1.6779811 --2.0784667 -5.3938994 -1.6779811 --2.1146767 -5.3890743 -1.6805463 --2.1477036 -5.3759975 -1.6805463 --2.1806498 -5.3627186 -1.6805463 --2.2175472 -5.3589787 -1.6836815 --1.2844099 -3.0520997 -0.94377154 --1.3031131 -3.0441613 -0.94377154 --1.3210013 -3.0343509 -0.94320148 --2.3437357 -5.2924275 -1.6802613 --2.3651426 -5.2534761 -1.6722808 --2.4013228 -5.2475805 -1.675131 --1.6114048 -3.4659615 -1.0956868 --1.6056018 -3.3988161 -1.0768756 --1.6189563 -3.373348 -1.0717452 --1.6358416 -3.3555975 -1.06918 --1.6529958 -3.3386261 -1.0668999 --1.6730193 -3.3275645 -1.0666149 --1.6934054 -3.3172364 -1.0666149 --1.7375582 -3.3527315 -1.0820059 --1.7670279 -3.3589702 -1.0877062 --2.1571076 -4.0396099 -1.320852 --2.1909916 -4.0431504 -1.3265524 --2.8081136 -5.1062579 -1.6919471 --2.8277123 -5.0680079 -1.6848216 --2.857811 -5.0488935 -1.6842515 --2.8882592 -5.0304322 -1.6839665 --2.919071 -5.0126157 -1.6839665 --2.9497728 -4.9946103 -1.6839665 --2.9838123 -4.982172 -1.6859617 --2.9929256 -4.928545 -1.6737058 --3.0231102 -4.9100881 -1.6737058 --3.0536888 -4.8922591 -1.6739908 --3.0903144 -4.8839583 -1.6776961 --3.1238472 -4.8705516 -1.6796912 --3.1521058 -4.8488817 -1.6788362 --3.1833811 -4.8318505 -1.6796912 --3.2108393 -4.8090386 -1.6785512 --3.2343764 -4.7805152 -1.675416 --3.259311 -4.7542558 -1.6731358 --3.2922502 -4.7396774 -1.675131 --3.3251328 -4.7248735 -1.677126 --3.3601842 -4.712966 -1.6802613 --3.3721976 -4.6689515 -1.6717107 --2.2067976 -3.0169294 -1.070605 --2.2246966 -3.002562 -1.0703201 --3.5116718 -4.6781368 -1.6985025 --3.531606 -4.6450577 -1.6942272 --3.5612109 -4.6248198 -1.6947973 --3.5960069 -4.6111946 -1.6979325 --3.629581 -4.5958118 -1.7004976 --3.6660955 -4.5839329 -1.7044879 --3.6826882 -4.5472016 -1.6990726 --3.6965368 -4.5074754 -1.6925172 --3.7314746 -4.4935565 -1.6959374 --3.7602103 -4.472043 -1.6965073 --3.784472 -4.4452381 -1.6950823 --3.8179357 -4.4291925 -1.6979325 --3.8500843 -4.411459 -1.7002126 --3.8580351 -4.3662071 -1.6916621 --3.8758039 -4.3324533 -1.6876718 --3.9209785 -4.3291893 -1.6959374 --3.9209025 -4.2760887 -1.6842515 --3.9398913 -4.2442241 -1.6811163 --3.9599502 -4.2136841 -1.6785512 --3.9943213 -4.1983333 -1.6822565 --4.0180111 -4.1716747 -1.6814014 --4.0234537 -4.1263576 -1.6728508 --4.0385942 -4.091362 -1.6685755 --4.0744648 -4.0773506 -1.6731358 --4.1103153 -4.0630531 -1.6776961 --4.1193919 -4.0223575 -1.6711407 --4.1446853 -3.9976707 -1.6714257 --4.1705246 -3.9734862 -1.6719958 --4.1801658 -3.9340293 -1.6660104 --4.2168651 -3.9200509 -1.6711407 --4.2316585 -3.8856769 -1.6674354 --4.2497396 -3.8544881 -1.6651553 --4.26617 -3.8219454 -1.6623051 --4.2873869 -3.7937915 -1.66145 --4.3033657 -3.761107 -1.6585999 --4.3256369 -3.734005 -1.6583148 --4.3440895 -3.7036626 -1.6566046 --4.3755331 -3.684345 -1.6600249 --4.3928976 -3.6531386 -1.6580298 --4.4226389 -3.6321976 -1.66088 --4.4575 -3.6152542 -1.6657254 --4.4878297 -3.594425 -1.6688606 --4.5113039 -3.5680096 -1.6694306 --4.5678678 -3.5673935 -1.6825415 --4.5820794 -3.5334468 -1.6796912 --4.6135893 -3.5128117 -1.6833965 --4.6342907 -3.4838614 -1.6831114 --4.6409535 -3.4445093 -1.6776961 --4.6666412 -3.4193664 -1.6794063 --4.6805434 -3.3856134 -1.676841 --4.723074 -3.372422 -1.6848216 --4.7397599 -3.3406179 -1.6833965 --4.7593813 -3.3109252 -1.6831114 --4.784349 -3.2849143 -1.6848216 --4.7964787 -3.2501209 -1.6819714 --4.8227062 -3.2248902 -1.6842515 --4.8328009 -3.188905 -1.6808313 --4.8490634 -3.1571002 -1.6796912 --4.8973799 -3.1459315 -1.6899519 --4.9117327 -3.1127448 -1.6882418 --4.9144821 -3.0723894 -1.6825415 --4.9707761 -3.0653129 -1.6956524 --4.9575486 -3.0153353 -1.6845366 --4.9882879 -2.9922533 -1.6888119 --5.0065541 -2.9615893 -1.6888119 --5.0130391 -2.9240551 -1.6848216 --5.0391965 -2.8980174 -1.6876718 --5.0768976 -2.8783851 -1.6945122 --5.1011581 -2.8509192 -1.6967924 --5.1387067 -2.8306608 -1.7036328 --5.1829381 -2.8137059 -1.7127535 --5.1882715 -2.7755234 -1.7087632 --5.2331891 -2.7583802 -1.7181689 --5.2432094 -2.7226856 -1.7158887 --5.267498 -2.6943896 -1.7184539 --5.2899241 -2.6650357 -1.720449 --5.3233514 -2.6410439 -1.7261494 --5.3463469 -2.6116951 -1.7284296 --5.3752298 -2.5850704 -1.7327049 --5.4074526 -2.559829 -1.7381202 --5.4221888 -2.5261967 -1.7378352 --5.4637289 -2.5048578 -1.7463858 --5.4746265 -2.4693162 -1.7449607 --5.504571 -2.4422836 -1.749806 --5.5431747 -2.4188082 -1.7575015 --5.5649595 -2.3877726 -1.7597817 --5.5848055 -2.3558159 -1.7614918 --5.6053538 -2.3240726 -1.7634869 --5.6079679 -2.2849355 -1.7597817 --5.625442 -2.2519069 -1.7609217 --5.6159587 -2.2082322 -1.7535112 --5.6472874 -2.1806338 -1.7592117 --5.6928296 -2.1581676 -1.7694724 --5.6296 -2.0947976 -1.7452457 --5.6450486 -2.0612013 -1.7461008 --5.682858 -2.0355706 -1.7540812 --5.7476969 -2.0190785 -1.7706124 --5.7953243 -1.9959396 -1.7817281 --5.8537822 -1.9759684 -1.7962642 --5.9249525 -1.9595658 -1.8147904 --6.0162024 -1.9488581 -1.8395871 --6.1651053 -1.9553496 -1.88234 --6.2731123 -1.9473051 -1.912267 --6.3757463 -1.9363374 -1.9404839 --6.48491 -1.9260917 -1.970696 --6.5177794 -1.8924083 -1.9772514 --6.539412 -1.8552563 -1.9803866 --6.5349684 -1.8107479 -1.9755412 --6.5376282 -1.7683649 -1.9729761 --6.5594778 -1.7311507 -1.9763963 --6.5170627 -1.6772615 -1.9601502 --6.5523348 -1.6435342 -1.9678457 --6.5706763 -1.6053449 -1.9704109 --6.5897284 -1.5672139 -1.9732611 --6.6001549 -1.5269665 -1.9735461 --6.605659 -1.4855993 -1.972406 --6.6240149 -1.447084 -1.9752562 --6.5755692 -1.394294 -1.95787 --6.619679 -1.3612512 -1.9687008 --6.6175661 -1.3185495 -1.9655656 --6.6377678 -1.2802778 -1.9692708 --6.6662288 -1.2433882 -1.9755412 --6.6558089 -1.1992352 -1.9701259 --6.6639862 -1.1585374 -1.9704109 --6.6596251 -1.1157275 -1.9669907 --6.6635065 -1.0743866 -1.9661356 --6.6661844 -1.0328934 -1.9649955 --6.6572266 -0.98971844 -1.9604353 --6.6736131 -0.95033652 -1.9635705 --6.6907158 -0.91091979 -1.9669907 --6.6847725 -0.86836946 -1.9635705 --6.7099519 -0.82980317 -1.9695559 --6.7139654 -0.78850442 -1.9692708 --6.7110558 -0.74644709 -1.9669907 --6.7298088 -0.70675397 -1.9712659 --6.7244802 -0.66450638 -1.9684157 --6.7465653 -0.62490982 -1.9738312 --6.7321281 -0.5819366 -1.9684157 --6.7307949 -0.54023546 -1.9669907 --6.7454538 -0.49977386 -1.9704109 --6.7388301 -0.45772719 -1.9675608 --6.7338581 -0.4158985 -1.9652805 --6.7334123 -0.37441334 -1.9644254 --6.7279239 -0.33271343 -1.9621453 --6.7260084 -0.29126018 -1.9610052 --6.7247953 -0.24987841 -1.9601502 --6.7003341 -0.20781332 -1.9524547 --6.7033997 -0.16674426 -1.9530247 --0 -0 -0 --6.734653 -0.084839866 -1.9618603 --6.741756 -0.043557409 -1.9638555 --6.7380624 -0.0021893661 -1.9627154 --6.7293224 0.039103035 -1.9601502 --6.7270389 0.080369413 -1.9595802 --6.7225857 0.12157425 -1.9584401 --6.7293792 0.16300799 -1.9607203 --6.714839 0.20388602 -1.95673 --6.724956 0.24550527 -1.9601502 --6.7089586 0.28614905 -1.9558749 --6.7003751 0.32698086 -1.9538798 --6.6963282 0.36798191 -1.9533098 --6.7111654 0.41011822 -1.9584401 --6.6731377 0.44890293 -1.9478943 --0 -0 -0 --0 -0 -0 --0 -0 -0 --6.4821138 -0.044324111 -1.9655252 --6.4832191 -0.0045505031 -1.9658209 --6.4745278 0.035183679 -1.9631594 --6.4713244 0.074876994 -1.9622724 --6.4678779 0.11453232 -1.9613853 --6.4641881 0.15414818 -1.9604981 --6.4631205 0.19380878 -1.9604981 --6.460855 0.23342766 -1.9602025 --6.4583468 0.27302605 -1.9599067 --6.4575043 0.31269473 -1.9602025 --6.4382944 0.35137537 -1.9548796 --6.4140859 0.38954282 -1.9480784 --6.4268255 0.42991078 -1.9528097 --6.4221611 0.46919784 -1.9522183 --6.4305887 0.50949937 -1.9557668 --6.4568481 0.55146533 -1.9649338 --6.4685636 0.59246659 -1.9696651 --6.4828706 0.63391107 -1.9752835 --6.5130649 0.67723191 -1.985929 --6.4973927 0.71592778 -1.9823805 --0 0 -0 --0 0 -0 --0 0 -0 --6.4153848 0.86672872 -1.9628638 --6.4023786 0.9050073 -1.9604981 --6.3711886 0.94050944 -1.9525141 --6.3634095 0.97929418 -1.9519225 --6.3346429 1.0146961 -1.9448256 --6.3179317 1.0518206 -1.9415728 --6.3151245 1.0912173 -1.9427556 --6.3327584 1.1343232 -1.9504441 --6.3341327 1.1747262 -1.9531054 --6.3277435 1.2137495 -1.9534011 --6.3164287 1.2518103 -1.9522183 --6.3142443 1.291692 -1.9539925 --6.3108735 1.3313968 -1.955471 --6.2689795 1.3627914 -1.9448256 --6.2903309 1.4079064 -1.9542882 --6.2787809 1.4458337 -1.9534011 --6.2595658 1.4819123 -1.9501483 --6.2466421 1.5193894 -1.9489655 --6.2381287 1.5579209 -1.9492612 --6.2136459 1.5923746 -1.9445299 --6.2203884 1.6348405 -1.9498526 --6.2120852 1.6734742 -1.9504441 --6.2109089 1.7141001 -1.9534011 --6.1965971 1.7511384 -1.9522183 --0 0 -0 --6.1709771 1.8259643 -1.9510355 --0 0 -0 --6.1344156 1.8973211 -1.9465998 --6.0953317 1.9262913 -1.9377286 --6.0688515 1.9589611 -1.9329972 --6.0485516 1.9934714 -1.9303359 --6.0579367 2.0378556 -1.9374329 --6.0453186 2.0749881 -1.9374329 --6.0135384 2.1054146 -1.931223 --6.0059047 2.1442001 -1.9329972 --5.9872489 2.1790514 -1.931223 --5.9710789 2.214751 -1.9303359 --5.9600577 2.2523601 -1.931223 --5.9541492 2.291976 -1.9338844 --5.9426422 2.3295126 -1.9347715 --5.9353347 2.3687644 -1.9371371 --5.9100676 2.4008245 -1.9335887 --5.8978739 2.4381375 -1.9344758 --5.8836832 2.4746506 -1.9347715 --5.8683882 2.5107057 -1.9347715 --5.8502445 2.5455229 -1.9338844 --5.8275266 2.5782797 -1.9315187 --5.8176951 2.6167309 -1.9335887 --5.7989235 2.6511869 -1.9327016 --5.7747498 2.6830964 -1.9300402 --5.7495389 2.7144012 -1.9270831 --5.7293301 2.7479765 -1.9259002 --5.6977611 2.7759674 -1.9208733 --5.7037392 2.8223133 -1.9288573 --5.6829 2.8555422 -1.9276745 --5.6703773 2.8929627 -1.9294487 --5.6550646 2.9290187 -1.9303359 --5.62853 2.9592175 -1.9273788 --5.5832963 2.9793084 -1.9179162 --5.5875921 3.0257914 -1.9259002 --5.5513387 3.0503595 -1.9196904 --5.5358553 3.086225 -1.9208733 --5.5126567 3.1177831 -1.9193947 --5.490108 3.1496482 -1.9182118 --5.480587 3.1890402 -1.9217603 --5.4304752 3.2046471 -1.9108192 --5.4246454 3.2462456 -1.9158462 --5.3956404 3.274019 -1.9125934 --5.4014874 3.3230805 -1.9220561 --5.3769426 3.3536334 -1.9205775 --5.3562641 3.3865626 -1.9205775 --5.3434267 3.4245183 -1.9235346 --5.3046885 3.4457934 -1.917029 --5.2930207 3.4845803 -1.9205775 --5.2755136 3.5196426 -1.9220561 --5.2451129 3.5460615 -1.9188033 --5.2398062 3.5895145 -1.9250132 --5.2066956 3.6139727 -1.9208733 --5.1797342 3.6425555 -1.919099 --5.164289 3.6792574 -1.9217603 --5.1431656 3.7119937 -1.9223518 --5.1233768 3.7457366 -1.9235346 --5.1018324 3.7782395 -1.924126 --5.073204 3.8054605 -1.9220561 --5.0528016 3.8388288 -1.9232389 --5.0230947 3.8650999 -1.9208733 --4.9940095 3.8917382 -1.9188033 --4.9850349 3.9341428 -1.9247174 --4.9570704 3.9616747 -1.9232389 --4.9267278 3.9872086 -1.9208733 --4.9043865 4.0191798 -1.9217603 --0 0 -0 --4.8649354 4.0876641 -1.9259002 --4.8281202 4.1075349 -1.9211689 --4.8049974 4.1389523 -1.9220561 --4.7759113 4.1652184 -1.9205775 --4.7402382 4.1855927 -1.9164376 --4.7116179 4.2120533 -1.9152548 --4.6835594 4.2389607 -1.9143677 --4.6595745 4.2695546 -1.9152548 --4.6297874 4.294817 -1.9137763 --4.6068296 4.3264136 -1.9152548 --4.5698113 4.3447261 -1.9108192 --4.53756 4.3673849 -1.9084535 --4.5407829 4.4244761 -1.9214647 --4.5135493 4.4522548 -1.9214647 --4.4705982 4.4643412 -1.9146633 --4.4484959 4.4971209 -1.917029 --4.4128065 4.5161333 -1.9134805 --4.3850131 4.5431247 -1.9134805 --4.3537579 4.5664883 -1.912002 --4.3132119 4.5799041 -1.9063835 --4.2908854 4.6125779 -1.9090449 --4.2612095 4.6374125 -1.9084535 --4.2320328 4.6627645 -1.9081578 --4.205256 4.6907778 -1.9090449 --4.1744947 4.7143469 -1.9081578 --4.1511497 4.7463436 -1.9108192 --4.1200752 4.7695565 -1.909932 --4.0907321 4.7947469 -1.909932 --4.0630822 4.8219485 -1.9108192 --4.0346408 4.8482566 -1.9114106 --3.9987507 4.8655419 -1.9084535 --3.9790556 4.9025946 -1.9134805 --3.9441192 4.9209547 -1.9111149 --3.90555 4.9345765 -1.9069749 --3.8628442 4.9426422 -1.9007651 --3.8371134 4.972301 -1.9031308 --3.8123219 5.0033493 -1.9060879 --3.7781041 5.0220671 -1.9043136 --3.74437 5.0413203 -1.902835 --3.7077172 5.0564971 -1.899878 --3.6956677 5.1054606 -1.909932 --3.6603837 5.1226001 -1.9078621 --3.6294336 5.1457443 -1.9081578 --3.5917873 5.1592937 -1.904905 --3.5562756 5.175724 -1.902835 --3.5276682 5.2021914 -1.9046093 --3.4908998 5.2165937 -1.901948 --3.455667 5.2331324 -1.9001737 --3.4141042 5.2398314 -1.894851 --3.3777559 5.2542529 -1.8924853 --3.3495462 5.281333 -1.894851 --3.3500149 5.3544235 -1.9140719 --3.316596 5.3740649 -1.9137763 --3.2850492 5.3967619 -1.9146633 --3.2425303 5.4012561 -1.9090449 --3.2078679 5.4185843 -1.9081578 --3.1634817 5.4191914 -1.9013565 --3.1430383 5.4608536 -1.9093406 --3.1391757 5.5323772 -1.9279703 --3.0921118 5.5281916 -1.9196904 --3.0535207 5.5386949 -1.9167334 --3.0035143 5.5279493 -1.9063835 --2.9668331 5.5412216 -1.9046093 --2.9403553 5.5736847 -1.9096364 --2.8906798 5.561955 -1.8992865 --2.8556271 5.5778866 -1.8986951 --2.8290908 5.6106563 -1.9040179 --2.8171318 5.6732554 -1.9196904 --2.7810094 5.6878595 -1.9188033 --2.7381837 5.6884627 -1.9131849 --2.7044556 5.7077465 -1.9140719 --2.6718054 5.7294278 -1.9158462 --2.6250443 5.7205358 -1.9072707 --2.5957913 5.7495947 -1.9117063 --2.5647295 5.7750173 -1.9149591 --2.5315409 5.795898 -1.9167334 --2.5162904 5.8587189 -1.9327016 --2.4717467 5.8538079 -1.9259002 --2.4471354 5.8962145 -1.9350672 --2.3899832 5.8598175 -1.9179162 --2.3568261 5.8814654 -1.9202818 --2.3266428 5.9109268 -1.9253088 --2.2830961 5.9063802 -1.919099 --2.2566435 5.946178 -1.9276745 --2.2214501 5.9634933 -1.9288573 --2.1851449 5.9779086 -1.9291531 --2.1584218 6.0190787 -1.93832 --2.1128902 6.0078783 -1.9303359 --2.0738065 6.0144081 -1.9282659 --2.0402288 6.036974 -1.9315187 --1.9980423 6.0339627 -1.9264917 --1.9527273 6.0206666 -1.9182118 --1.9250026 6.0616693 -1.9276745 --1.8903251 6.0815768 -1.9303359 --1.8424096 6.0583315 -1.919099 --1.8131009 6.0960755 -1.9276745 --1.7767291 6.110755 -1.9288573 --1.7394619 6.1224604 -1.9291531 --1.7028844 6.1367002 -1.9303359 --1.6482095 6.0843353 -1.9102278 --1.625496 6.1497469 -1.9279703 --1.5839152 6.1448045 -1.9232389 --1.5438534 6.145143 -1.9202818 --1.5072541 6.1591396 -1.9217603 --1.4692125 6.1673427 -1.9214647 --1.4380304 6.20509 -1.9306316 --1.3997196 6.2128649 -1.9303359 --1.3548301 6.1905417 -1.9205775 --1.3245641 6.2351804 -1.9321102 --1.2855096 6.2394476 -1.9309273 --1.2515037 6.268764 -1.9377286 --1.2113838 6.2678838 -1.9350672 --1.1716729 6.2686257 -1.9329972 --1.1347156 6.2841578 -1.9356587 --1.0958073 6.2891197 -1.9350672 --1.0567225 6.2928987 -1.9341801 --1.0191575 6.3058653 -1.9362501 --0.97971284 6.3072805 -1.9347715 --0.94183898 6.3188419 -1.9365457 --0.90291446 6.3235564 -1.9362501 --0.86422616 6.3299241 -1.9365457 --0.82549369 6.3360548 -1.9368415 --0.78671849 6.341949 -1.9371371 --0.7464481 6.3352723 -1.9335887 --0.70830369 6.3463788 -1.9356587 --0.66804725 6.3382554 -1.9318144 --0.62848336 6.3355808 -1.9297445 --0.59057087 6.3497806 -1.9329972 --0.55093676 6.3456712 -1.9306316 --0.51306593 6.3622627 -1.9347715 --0.47423115 6.3681488 -1.9356587 --0.43534347 6.3737979 -1.9365457 --0.3964043 6.3792095 -1.9374329 --0.35693401 6.3757992 -1.9356587 --0.31756812 6.3730989 -1.9341801 --0.27891675 6.3854256 -1.9374329 --0.23991072 6.3917894 -1.9389114 --0.2002064 6.3778644 -1.9341801 --0.16118966 6.3837476 -1.9356587 --0.12219981 6.3941674 -1.9386157 --0.082851574 6.3862004 -1.9359543 --0.043665022 6.3865886 -1.9359543 --0.0044761011 6.3857808 -1.9356587 -0.034711529 6.3866434 -1.9359543 -0.07373368 6.3719821 -1.9315187 -0.11286375 6.3733196 -1.9321102 -0.15210387 6.3782372 -1.9338844 -0.1914943 6.3857775 -1.9365457 -0.2304665 6.3787546 -1.9347715 -0.26911798 6.365767 -1.931223 -0.3076188 6.3525462 -1.9276745 -0.34690347 6.3562622 -1.9294487 -0.38520405 6.3425717 -1.9259002 -0.42455998 6.3467607 -1.9279703 -0.46279952 6.3345089 -1.9250132 -0.50241256 6.341073 -1.9279703 -0.54074252 6.3312082 -1.9259002 -0.57766432 6.3068423 -1.9193947 -0.62062526 6.3469133 -1.9329972 -0.65353441 6.2850261 -1.9149591 -0.69679183 6.323627 -1.9282659 -0.73690444 6.3306189 -1.9318144 -0.77375895 6.3098593 -1.9267874 -0.81002039 6.2860436 -1.9208733 -0.85304993 6.3140893 -1.931223 -0.88896984 6.2888727 -1.9250132 -0.92712259 6.2804642 -1.924126 -0.96476984 6.2689924 -1.9223518 -1.0056341 6.2780471 -1.9270831 -1.0413138 6.2547965 -1.9217603 -1.0796728 6.2482896 -1.9217603 -1.1173178 6.2377858 -1.9205775 -1.1597505 6.253355 -1.9276745 -1.1961195 6.2358012 -1.9244218 -1.237144 6.2424006 -1.9288573 -1.2744664 6.2300124 -1.9273788 -1.3152318 6.2342267 -1.931223 -1.3518366 6.2185712 -1.9288573 -1.3922621 6.2204142 -1.9321102 -1.427189 6.1977901 -1.9276745 -1.4656311 6.1907754 -1.9282659 -1.5002036 6.1677427 -1.9238303 -1.5444994 6.1843724 -1.9321102 -1.5781493 6.1581225 -1.9267874 -1.6156623 6.1473989 -1.9264917 -1.6483831 6.1189218 -1.9205775 -1.688946 6.1197429 -1.924126 -1.7241267 6.1009908 -1.9214647 -1.7615293 6.0902967 -1.9214647 -1.7975105 6.0747933 -1.9199861 -1.8339211 6.0609069 -1.919099 -1.8716401 6.0513649 -1.9196904 -1.909023 6.040678 -1.9199861 -1.9457587 6.0279417 -1.9196904 -1.9830078 6.0167966 -1.9199861 -2.0186708 6.0008941 -1.9188033 -2.0548334 5.9865875 -1.9182118 -2.091212 5.9729648 -1.9179162 -2.1307123 5.9681182 -1.9205775 -2.1604323 5.9360805 -1.9143677 -2.1954861 5.9191298 -1.9131849 -2.229738 5.9001856 -1.9114106 -2.266242 5.8872843 -1.9117063 -2.3047631 5.8794942 -1.9137763 -2.3468142 5.8803248 -1.9188033 -2.3839295 5.8684697 -1.9196904 -2.422812 5.8607945 -1.9220561 -2.4720585 5.8775191 -1.9327016 -2.4975562 5.8376479 -1.9244218 -2.50932 5.7670269 -1.9057921 -2.5407941 5.742785 -1.902835 -2.5622702 5.6965938 -1.8924853 -2.6142526 5.7181239 -1.9052007 -2.6508992 5.705441 -1.9063835 -2.689527 5.6968427 -1.9090449 -2.7318668 5.6957374 -1.9143677 -2.7667637 5.6788673 -1.9143677 -2.7846124 5.6275353 -1.9025394 -2.8135147 5.5992465 -1.8986951 -2.8443453 5.5750699 -1.8963295 -2.8754249 5.5515747 -1.8942596 -2.9054341 5.5262165 -1.8915981 -2.9329922 5.4964857 -1.8874582 -2.9816723 5.5061073 -1.8972166 -3.0154011 5.4877086 -1.8972166 -3.0485511 5.4682684 -1.8969209 -3.0829868 5.4511232 -1.8975123 -3.1178021 5.4345894 -1.8983995 -3.1443641 5.4037971 -1.8942596 -3.1847436 5.3967428 -1.8986951 -3.2207403 5.3820186 -1.9004694 -3.2487481 5.3539877 -1.8975123 -3.2845416 5.3388352 -1.8992865 -3.2965131 5.2853475 -1.8871626 -3.3156095 5.2440271 -1.8794742 -3.3678243 5.2549524 -1.8910067 -3.37659 5.1981378 -1.8776999 -3.4289057 5.2084408 -1.8892325 -3.4528477 5.1753826 -1.8847969 -3.4898882 5.1620135 -1.887754 -3.5301332 5.1531124 -1.8924853 -3.5600517 5.1290007 -1.8915981 -3.5947526 5.1117487 -1.8933724 -3.6288211 5.0934858 -1.894851 -3.6577699 5.0680251 -1.8936681 -3.6876702 5.0439439 -1.8930767 -3.7253716 5.0304346 -1.8966252 -3.7527285 5.0028958 -1.894851 -3.7879779 4.9858608 -1.8972166 -3.8184993 4.9625244 -1.8972166 -3.8529868 4.9442759 -1.8992865 -3.8779261 4.9137921 -1.8966252 -3.9133706 4.8966217 -1.8992865 -3.9391358 4.8673191 -1.8972166 -3.9701378 4.8445354 -1.897808 -4.0010085 4.8215542 -1.8983995 -4.0268307 4.7925253 -1.8966252 -4.0567803 4.7684546 -1.8969209 -4.0803518 4.7369585 -1.8942596 -4.1212697 4.7255125 -1.899878 -4.1451292 4.694407 -1.8975123 -4.1700358 4.6646109 -1.895738 -4.1966558 4.6368113 -1.894851 -4.203732 4.5877304 -1.8850926 -4.2376494 4.5681539 -1.887754 -4.2897944 4.567832 -1.8986951 -4.3144503 4.5379629 -1.8972166 -4.3547993 4.5244823 -1.902835 -4.3764796 4.4915185 -1.9001737 -4.4113355 4.4720616 -1.9034264 -4.4427423 4.448966 -1.9052007 -4.4523001 4.4041543 -1.8975123 -4.4819727 4.3794231 -1.8986951 -4.4874535 4.3312726 -1.8895282 -4.5429821 4.3313441 -1.901948 -4.5444393 4.2798085 -1.8913025 -4.5657187 4.2472887 -1.8892325 -4.5923967 4.2198405 -1.8895282 -4.6252761 4.1980033 -1.8924853 -4.6473913 4.1663556 -1.8910067 -4.6692924 4.1345944 -1.8895282 -4.6952929 4.1064954 -1.8898239 -4.7131729 4.071363 -1.8868668 -4.7402453 4.0442271 -1.887754 -4.7649713 4.0150657 -1.887754 -4.8012652 3.9955301 -1.8924853 -4.8234773 3.9641752 -1.8915981 -4.8536434 3.9393208 -1.8939638 -4.873251 3.9058802 -1.8921895 -4.9195962 3.893692 -1.9010608 -4.9561896 3.8734336 -1.9060879 -4.9685197 3.8341951 -1.9016522 -4.9744768 3.7903194 -1.894851 -4.9961133 3.7585766 -1.8942596 -5.0229158 3.7306983 -1.895738 -5.0534158 3.7054574 -1.8986951 -5.0791521 3.6766212 -1.899878 -5.1039472 3.6470532 -1.9007651 -5.1246681 3.6145661 -1.9001737 -5.1585097 3.5912416 -1.9046093 -5.1733623 3.5546525 -1.901948 -5.1974473 3.524451 -1.902835 -5.2189751 3.4924939 -1.902835 -5.2426982 3.4619844 -1.9037222 -5.2662425 3.4313152 -1.9046093 -5.2871976 3.3989377 -1.9046093 -5.3127937 3.3695021 -1.9063835 -5.3398471 3.3408937 -1.9087492 -5.3537426 3.3040524 -1.9063835 -5.3714671 3.2696497 -1.9054965 -5.4061704 3.2454808 -1.9108192 -5.4226942 3.2103014 -1.9096364 -5.4464149 3.1793761 -1.9111149 -5.4633369 3.1444678 -1.9102278 -5.4792051 3.1090004 -1.9090449 -5.4906754 3.0711246 -1.9063835 -5.5069065 3.0359929 -1.9054965 -5.5212345 2.9998653 -1.9040179 -5.5361686 2.9641275 -1.902835 -5.5601664 2.9332228 -1.904905 -5.5772119 2.8986106 -1.9046093 -5.5940423 2.8638995 -1.9043136 -5.6166272 2.8321021 -1.9060879 -5.6347547 2.7980106 -1.9063835 -5.6415186 2.758348 -1.902835 -5.6505909 2.7199509 -1.9001737 -5.6723533 2.6876829 -1.901948 -5.6930666 2.6548462 -1.9034264 -5.7153268 2.6226535 -1.9054965 -5.7374058 2.5902874 -1.9075664 -5.7496996 2.5534835 -1.9063835 -5.7652588 2.5181561 -1.9063835 -5.7779684 2.4816024 -1.9054965 -5.7842865 2.4423864 -1.9025394 -5.8026929 2.4083138 -1.9037222 -5.820014 2.3737462 -1.9046093 -5.8362432 2.3387012 -1.9052007 -5.8540387 2.3042464 -1.9063835 -5.8787594 2.2724173 -1.909932 -5.892592 2.2363031 -1.909932 -5.9169445 2.2041068 -1.9134805 -5.9303575 2.1677597 -1.9134805 -5.949841 2.1335886 -1.9155505 -5.9619193 2.0967238 -1.9152548 -5.969254 2.058234 -1.9134805 -5.9826756 2.0218744 -1.9137763 -5.9995031 1.9866291 -1.9152548 -6.0061278 1.9480108 -1.9134805 -6.0179677 1.9111212 -1.9134805 -6.0314054 1.8747269 -1.9140719 -6.0363975 1.8357376 -1.912002 -6.0466318 1.7983921 -1.9117063 -6.0291171 1.752987 -1.9025394 -6.0765157 1.7264054 -1.9143677 -6.0952787 1.6913874 -1.917029 -6.1000099 1.6524566 -1.9152548 -6.1100345 1.6149966 -1.9152548 -6.1392541 1.5824842 -1.9214647 -6.1303191 1.5401282 -1.9155505 -6.1582117 1.507027 -1.9214647 -6.161767 1.4678839 -1.9196904 -6.1753106 1.4311271 -1.9211689 -6.18118 1.3925791 -1.9202818 -6.1830764 1.3531958 -1.9182118 -6.1968694 1.3164231 -1.9199861 -6.2113795 1.2797248 -1.9220561 -6.2181778 1.2414013 -1.9217603 -6.22474 1.2030426 -1.9214647 -6.2263703 1.1637722 -1.9196904 -6.2277536 1.1245272 -1.9179162 -6.242065 1.0876056 -1.9202818 -6.2570996 1.0507088 -1.9229432 -6.2643719 1.0124487 -1.9232389 -6.278018 0.97516561 -1.9256046 -6.2848282 0.93676692 -1.9259002 -6.2847838 0.89737576 -1.924126 -6.2977433 0.85983044 -1.9264917 -6.3029008 0.82117206 -1.9264917 -6.3125606 0.78307104 -1.9279703 -6.3020673 0.74253368 -1.9232389 -6.312201 0.70448703 -1.9250132 -6.302155 0.66424 -1.9205775 -6.3004084 0.62499201 -1.9188033 -6.2946129 0.58543646 -1.9158462 -6.2581153 0.54332954 -1.9034264 -6.3165579 0.5093773 -1.9205775 -6.3424277 0.47231409 -1.9276745 -6.3290048 0.43228117 -1.9226475 -6.3458395 0.39432856 -1.9270831 -6.3557696 0.35581145 -1.9294487 -6.3425679 0.31604487 -1.9247174 -6.3462963 0.27720514 -1.9253088 -6.3555145 0.23854689 -1.9276745 -6.3625875 0.1997259 -1.9294487 -6.3780179 0.16104463 -1.9338844 -6.358829 0.12152224 -1.9276745 -6.3489475 0.082365938 -1.9244218 -6.3426466 0.043361843 -1.9223518 -6.3427935 0.0044432767 -1.9223518 -6.3455667 -0.03449085 -1.9232389 -6.3481016 -0.07345885 -1.924126 -6.3542171 -0.11252666 -1.926196 -6.3667774 -0.1518313 -1.9303359 -6.3628612 -0.19080852 -1.9294487 -6.3692079 -0.23012218 -1.9318144 -6.3686304 -0.26923886 -1.9321102 -6.3764 -0.30877241 -1.9350672 -6.3677087 -0.34752747 -1.9329972 -6.3692703 -0.38682386 -1.9341801 -6.3543859 -0.42506957 -1.9303359 -6.3564219 -0.4643991 -1.9318144 -6.3515482 -0.50324184 -1.931223 -6.3454852 -0.54196101 -1.9303359 -6.3448944 -0.58114719 -1.931223 -6.3516674 -0.62108982 -1.9344758 -6.3420358 -0.65945876 -1.9327016 -6.3416681 -0.69877863 -1.9338844 -6.3258748 -0.7363525 -1.9303359 -6.3278747 -0.77596694 -1.9324058 -6.3391008 -0.81685394 -1.9374329 -6.3178759 -0.85356128 -1.9324058 -6.2803597 -0.88776702 -1.9223518 -6.3031454 -0.93046927 -1.931223 -6.3039269 -0.97014385 -1.933293 -6.2808766 -1.0060872 -1.9279703 -6.2821236 -1.0458615 -1.9303359 -6.2718229 -1.0837379 -1.9291531 -6.2631745 -1.1218638 -1.9285617 -6.2758975 -1.1639297 -1.9347715 -6.2564411 -1.2000773 -1.9309273 -6.2536454 -1.2393718 -1.9324058 -6.2665129 -1.2819308 -1.9389114 -6.2510514 -1.3187802 -1.9365457 -6.2475095 -1.3581254 -1.9380243 -6.245584 -1.397894 -1.9400942 -6.2322345 -1.4351183 -1.9386157 -6.2205229 -1.4726715 -1.9377286 -6.1890922 -1.5053951 -1.9306316 -6.1760311 -1.5424167 -1.9294487 -6.1942124 -1.5873957 -1.93832 -6.1584864 -1.6185755 -1.9300402 -6.1641197 -1.6605561 -1.9350672 -6.1556563 -1.6988553 -1.9356587 -6.1460361 -1.7368534 -1.9359543 -6.1380162 -1.7753282 -1.9368415 -6.120595 -1.81106 -1.9347715 -6.1011381 -1.8460917 -1.9321102 -6.0760064 -1.8792597 -1.9276745 -6.0598068 -1.915067 -1.926196 -6.0043049 -1.9381306 -1.912002 -5.9532862 -1.9620805 -1.8992865 -5.865078 -1.9729924 -1.8744471 -5.7064853 -1.958711 -1.8265424 -5.6213269 -1.968124 -1.80259 -5.5614619 -1.9855585 -1.7869174 -5.4890285 -1.9977601 -1.7671051 -5.4256139 -2.0124698 -1.7502497 -5.3756313 -2.0315418 -1.7378299 -5.3309698 -2.0521355 -1.7271844 -5.2746968 -2.0677266 -1.7126948 -5.2388415 -2.0908477 -1.7050064 -5.157764 -2.095274 -1.6822368 -5.1006684 -2.1086371 -1.6674515 -5.0673804 -2.1313777 -1.6606501 -5.0199537 -2.147778 -1.6491176 -4.9751453 -2.1648204 -1.6384721 -4.925077 -2.1790757 -1.6260523 -4.7600188 -2.1410804 -1.5745991 -4.4913611 -2.0534871 -1.487661 -4.7195244 -2.1928923 -1.5698677 -4.5375252 -2.1422935 -1.5122048 -4.3304901 -2.0771546 -1.4456704 -4.300487 -2.0953202 -1.4397563 -4.2233329 -2.0898974 -1.4175781 -4.1472635 -2.0840368 -1.3956957 -4.1029124 -2.0933838 -1.3847545 -4.0382457 -2.0917225 -1.3667164 -4.0414004 -2.1249065 -1.3723348 -3.9558036 -2.1109924 -1.3469039 -4.4031229 -2.3844745 -1.5089519 -3.9572296 -2.1745565 -1.3566623 -3.9154425 -2.1829829 -1.3466082 -4.5455818 -2.5709171 -1.5754862 -3.5892222 -2.059279 -1.2398576 -3.5583539 -2.0706947 -1.2333521 -3.5118489 -2.0725861 -1.221228 -3.5171001 -2.1048861 -1.2277336 -3.4306138 -2.0818315 -1.2011199 -3.3779058 -2.0783172 -1.1866301 -3.3302352 -2.0772684 -1.1739147 -3.2657492 -2.0649941 -1.1549894 -3.2264748 -2.0679853 -1.145231 -3.1584468 -2.051841 -1.1248271 -3.1043053 -2.0438704 -1.1094503 -3.0766068 -2.0528073 -1.1038319 -3.0465417 -2.0598767 -1.0973263 -3.014142 -2.0650353 -1.0899336 -2.9778705 -2.0671513 -1.0810624 -2.9541905 -2.0776918 -1.0769224 -2.9094863 -2.0730553 -1.0647985 -2.9036832 -2.0958996 -1.0674598 -2.8977091 -2.1187506 -1.0701212 -2.9023116 -2.1495655 -1.0769224 -2.8959455 -2.1724918 -1.0795839 -2.8939712 -2.1988878 -1.0840194 -2.8910244 -2.2247586 -1.0881593 -2.8908827 -2.2530243 -1.0934821 -2.8522565 -2.2511921 -1.0837238 -2.8145089 -2.2495677 -1.0742611 -2.7828305 -2.2523732 -1.0671641 -2.7504852 -2.2542694 -1.0597714 -2.7564511 -2.2875731 -1.0677555 -2.7182262 -2.2841654 -1.0579971 -2.7034321 -2.3001821 -1.0577015 -2.6979532 -2.3242078 -1.06125 -2.6829214 -2.3400905 -1.0609542 -2.7014539 -2.3855917 -1.0745568 -2.6689596 -2.3862071 -1.0671641 -2.6769338 -2.4230502 -1.0766268 -2.613415 -2.3949027 -1.0562229 -2.620383 -2.4310319 -1.0653899 -2.6242194 -2.46472 -1.0733739 -2.5951996 -2.467612 -1.0674598 -2.5910227 -2.4940882 -1.0721911 -2.5681441 -2.5026066 -1.0689384 -2.5282552 -2.4941683 -1.0582929 -2.5074959 -2.5042346 -1.0559272 -2.4934266 -2.5209312 -1.0565186 -2.4939356 -2.5525804 -1.0636156 -2.472255 -2.5616491 -1.0609542 -2.4584682 -2.5788445 -1.0618414 -2.450458 -2.6022253 -1.0653899 -2.4363971 -2.6193104 -1.066277 -2.4280362 -2.6426508 -1.0698255 -2.4111335 -2.6567919 -1.0695298 -2.3941486 -2.6708252 -1.069234 -2.3827825 -2.6911864 -1.0715997 -2.3693695 -2.7093513 -1.0730783 -2.3414593 -2.7108269 -1.0677555 -2.3210614 -2.7207825 -1.0659813 -2.3030922 -2.7335122 -1.0653899 -2.2826097 -2.7431867 -1.0636156 -2.2566361 -2.7460713 -1.05918 -2.2373359 -2.7568994 -1.0579971 -2.2102203 -2.7579043 -1.0529702 -2.186142 -2.7624259 -1.0494217 -2.1632679 -2.7682612 -1.0464646 -2.1450741 -2.7799702 -1.0458732 -2.1245019 -2.7885211 -1.0440989 -2.114244 -2.8106644 -1.0476474 -2.1055031 -2.8350871 -1.052083 -2.0897624 -2.8502638 -1.0529702 -2.0800769 -2.8738656 -1.0571101 -2.0651813 -2.8904607 -1.0585886 -2.0468562 -2.9022973 -1.0582929 -2.0339222 -2.9218576 -1.0609542 -2.0202839 -2.9405811 -1.0633199 -1.9914789 -2.9371097 -1.0574057 -1.973951 -2.9500678 -1.0577015 -1.9689739 -2.9820523 -1.0650941 -1.9402083 -2.9780707 -1.05918 -1.8976171 -2.9521539 -1.0452816 -1.9081218 -3.0089161 -1.0618414 -1.8941841 -3.0278556 -1.0645027 -1.8795838 -3.0459244 -1.0668684 -1.8037325 -2.9635644 -1.0328619 -1.7835475 -2.9713001 -1.0316792 -1.7652824 -2.9821877 -1.0316792 -1.7464691 -2.9921381 -1.0313834 -1.7442806 -3.0309467 -1.0414375 -1.732251 -3.0532238 -1.0455774 -1.7139505 -3.0646291 -1.0458732 -1.6978816 -3.0801072 -1.0476474 -1.6798627 -3.0921459 -1.0482388 -1.6626619 -3.1057637 -1.0494217 -1.6453571 -3.1192868 -1.0506045 -1.6266271 -3.1301713 -1.0509001 -1.6030363 -3.1315901 -1.0479431 -1.5794895 -3.1328378 -1.044986 -1.5602371 -3.1424704 -1.044986 -1.534631 -3.1391122 -1.0405504 -1.5290155 -3.1768732 -1.0503087 -1.4988574 -3.1637509 -1.0426203 -1.4705334 -3.1538417 -1.0361148 -1.4352154 -3.1280773 -1.0242864 -1.3762882 -3.0488908 -0.99441993 -1.3311852 -2.9979122 -0.97431177 -1.3548317 -3.1023169 -1.0068396 -1.3776224 -3.2079985 -1.0396632 -1.3541961 -3.2075911 -1.0367062 -1.3513364 -3.2564249 -1.0503087 -1.3360206 -3.2761538 -1.054153 -1.3244226 -3.3055708 -1.06125 -1.3016655 -3.3074131 -1.05918 -1.2772133 -3.3046455 -1.0556315 -1.2558954 -3.3097408 -1.0547444 -1.2415669 -3.3334975 -1.0600671 -1.2374907 -3.3859127 -1.0748525 -1.2218519 -3.407829 -1.0795839 -1.1952131 -3.3990414 -1.0742611 -1.1780719 -3.4171481 -1.0778096 -1.1549412 -3.4179773 -1.0757396 -1.1636814 -3.5147762 -1.1050147 -1.1535895 -3.5572882 -1.1165473 -1.1375245 -3.5825083 -1.1224616 -1.0494417 -3.3768759 -1.0535616 -1.0167478 -3.3439524 -1.0408461 -0.98940086 -3.3272376 -1.0334533 -0.96416497 -3.316735 -1.0281307 -0.93987876 -3.308805 -1.023695 -0.92058057 -3.3181918 -1.0248779 -0.89845437 -3.3173237 -1.0228078 -0.88052446 -3.3320093 -1.0257649 -0.79113609 -3.0700169 -0.94030535 -0.74993306 -2.985872 -0.91191739 -0.79769343 -3.2604315 -0.99796844 -0.82860273 -3.4789944 -1.0659813 -0.81651676 -3.524029 -1.0786967 -0.79571837 -3.5327003 -1.0798795 -0.78097314 -3.5692441 -1.0899336 -0.76124215 -3.5842476 -1.0931864 -0.73962092 -3.5907223 -1.0937778 -0.71757472 -3.5951929 -1.0937778 -0.69550157 -3.5995281 -1.0937778 -0.67147088 -3.5933988 -1.090525 -0.64771152 -3.5880506 -1.0875679 -0.6151852 -3.5317276 -1.0686426 -0.60030842 -3.5759451 -1.0813581 -0.58094758 -3.5955927 -1.0863851 -0.56034136 -3.6085293 -1.0893422 -0.53903461 -3.6175685 -1.0911164 -0.51588184 -3.6141882 -1.0890465 -0.49046379 -3.5936232 -1.0816538 -0.46507069 -3.5709889 -1.0736697 -0.44703352 -3.6050594 -1.083428 -0.42367464 -3.5972986 -1.0801753 -0.39968574 -3.5827417 -1.0748525 -0.37749454 -3.5832267 -1.0742611 -0.35540679 -3.5845251 -1.0739654 -0.33331737 -3.5856872 -1.0736697 -0.31172314 -3.5924232 -1.0751482 -0.29028937 -3.6018858 -1.0775139 -0.26903516 -3.6150308 -1.0810624 -0.24789117 -3.6318624 -1.0857937 -0.22637281 -3.6457098 -1.0896379 -0.20464034 -3.6584754 -1.0931864 -0.18304534 -3.6768358 -1.0985092 -0.16018903 -3.6712093 -1.0964392 -0.13755223 -3.6692593 -1.0955521 -0.11512559 -3.6728985 -1.0964392 -0.092175998 -3.6573012 -1.0914122 -0.069843359 -3.6635287 -1.0931864 -0.047512483 -3.6753507 -1.0967349 -0.024900744 -3.6669757 -1.0940735 -0.0024008646 -3.6680148 -1.0943693 --0.020157017 -3.6775131 -1.0973263 --0.042622492 -3.6687231 -1.0946649 --0.065031424 -3.6626618 -1.0928907 --0.087367587 -3.6564639 -1.0911164 --0.11051593 -3.6797302 -1.0985092 --0.13326441 -3.6837561 -1.0999877 --0.15606645 -3.6876411 -1.1014662 --0.17813671 -3.6751642 -1.0979178 --0.20005976 -3.6625557 -1.0943693 --0.22212406 -3.6545844 -1.0922993 --0.24467139 -3.6550591 -1.0928907 --0.26778927 -3.6630163 -1.0958477 --0.29071242 -3.6670182 -1.097622 --0.31353229 -3.6689725 -1.0988048 --0.33647415 -3.6717362 -1.1002834 --0.36020496 -3.6819623 -1.1041276 --0.38111171 -3.6635301 -1.0991006 --0.40389723 -3.6639712 -1.0999877 --0.42725447 -3.6690149 -1.1023533 --0.45034015 -3.6710653 -1.1038319 --0.4737111 -3.674865 -1.1059018 --0.73467082 -5.437458 -1.6573974 --0.51917261 -3.6716127 -1.106789 --0.80845326 -5.4762306 -1.6724784 --0.84596115 -5.4966593 -1.6804626 --0.88163555 -5.5036278 -1.6843069 --0.90754765 -5.4509988 -1.6695215 --0.93805051 -5.4283834 -1.6641986 --0.97033054 -5.4168835 -1.6624244 --1.0030272 -5.4080095 -1.6615373 --1.0369109 -5.4055061 -1.6627201 --1.0709871 -5.4037275 -1.6641986 --1.1046978 -5.3998618 -1.6650858 --1.1368243 -5.3883085 -1.6636072 --1.1745309 -5.4027019 -1.6704085 --1.2076591 -5.3953934 -1.6704085 --1.2394561 -5.3822961 -1.6686343 --1.2722379 -5.3736601 -1.6683385 --1.3081204 -5.3778195 -1.6721828 --1.3466471 -5.3919358 -1.6792798 --1.3825512 -5.3946762 -1.6828283 --1.4090717 -5.3611455 -1.6748441 --1.4382141 -5.3385625 -1.6704085 --1.4833939 -5.3747597 -1.6848983 --1.5184226 -5.372911 -1.6872638 --1.5463197 -5.3460569 -1.6816454 --1.5801774 -5.3401327 -1.6828283 --1.1971774 -3.9560595 -1.2383791 --1.223122 -3.9541152 -1.2401533 --1.6678431 -5.2773499 -1.6721828 --1.7019532 -5.2724714 -1.673957 --1.7318808 -5.2546711 -1.6715914 --1.761654 -5.236702 -1.6692257 --1.7937527 -5.2257938 -1.6692257 --1.8257838 -5.2146893 -1.6692257 --1.8615998 -5.2141848 -1.6727742 --1.894865 -5.2062545 -1.673957 --1.9347459 -5.2160263 -1.681054 --1.9673898 -5.2058439 -1.6816454 --2.0030694 -5.2034807 -1.6848983 --2.0339141 -5.1884241 -1.6840111 --2.0653572 -5.1749592 -1.6837153 --2.0967119 -5.161304 -1.6834197 --1.256242 -3.0383518 -0.97667742 --1.2744911 -3.0297058 -0.97638172 --1.2934327 -3.022707 -0.97667742 --2.2189343 -5.099534 -1.6804626 --2.252115 -5.0901909 -1.6819412 --2.2864397 -5.0832462 -1.6843069 --2.3163955 -5.066515 -1.6834197 --1.5871806 -3.4156544 -1.1248271 --1.6019921 -3.3928933 -1.1203916 --1.6141059 -3.3649113 -1.1141816 --1.6305388 -3.3463559 -1.1112247 --1.648923 -3.3320072 -1.1097461 --1.6701945 -3.323534 -1.1103375 --1.6922922 -3.3166273 -1.1115203 --1.7253503 -3.330781 -1.1200958 --1.7582009 -3.3438077 -1.1283756 --2.1712484 -4.0687418 -1.3865288 --2.1979921 -4.0587029 -1.3877116 --2.638217 -4.8011699 -1.654736 --2.6611152 -4.77321 -1.6505961 --2.7006979 -4.7750854 -1.6571016 --2.7318475 -4.7617388 -1.6582845 --2.7744646 -4.7680068 -1.6665643 --2.809979 -4.7615886 -1.6704085 --2.8450286 -4.7540941 -1.673957 --2.8786051 -4.7438984 -1.6766183 --2.9161675 -4.7399788 -1.6816454 --2.9426692 -4.7179432 -1.6801668 --2.9736044 -4.7030287 -1.6813498 --3.0106521 -4.6975632 -1.6860811 --3.048785 -4.6934223 -1.6914037 --3.0896063 -4.6929793 -1.6982051 --3.1141026 -4.6675758 -1.6958394 --3.1400089 -4.644423 -1.6943609 --3.1571109 -4.6085186 -1.688151 --3.1864181 -4.5906296 -1.6887424 --3.2084818 -4.562396 -1.6854897 --3.2430665 -4.5519595 -1.6890382 --3.2536066 -4.5079613 -1.6798712 --3.2823331 -4.4894547 -1.6804626 --2.2246039 -3.0036509 -1.1159559 --2.2464311 -2.9945297 -1.1177301 --3.3707695 -4.436645 -1.6837153 --3.4305494 -4.4582777 -1.7002751 --3.4384644 -4.4122777 -1.6905167 --3.4625142 -4.3873467 -1.6890382 --3.4673045 -4.3384066 -1.6780969 --3.5166938 -4.3452687 -1.6893338 --3.5463171 -4.3273034 -1.6908123 --3.5569427 -4.2863479 -1.6831239 --3.5592115 -4.2359166 -1.6715914 --3.5987527 -4.2300062 -1.6780969 --3.591599 -4.1694822 -1.6624244 --3.6152313 -4.1452065 -1.6615373 --3.6361721 -4.1179328 -1.6594673 --3.6651905 -4.0998173 -1.6612415 --3.6973283 -4.0850425 -1.6644944 --3.7145803 -4.0538268 -1.6609459 --3.7517271 -4.0442657 -1.6665643 --3.7627394 -4.0065451 -1.6603545 --3.7931759 -3.9896133 -1.6630158 --3.8195715 -3.9683287 -1.663903 --3.8305163 -3.9311328 -1.6579888 --3.8404784 -3.8932726 -1.6517789 --3.8649697 -3.8703105 -1.6520746 --3.890003 -3.8478663 -1.6526661 --3.9101236 -3.8205869 -1.6511875 --3.9286816 -3.7918789 -1.6491176 --3.9663928 -3.7815454 -1.6553274 --3.9811766 -3.7492771 -1.6517789 --4.0013094 -3.7221756 -1.6505961 --4.0170388 -3.6910901 -1.647639 --4.0544653 -3.6798561 -1.6538489 --4.0719895 -3.650445 -1.6517789 --4.1014628 -3.6317244 -1.654736 --4.1351738 -3.6165528 -1.6594673 --4.1493354 -3.5842421 -1.6562146 --4.151629 -3.5419731 -1.6482304 --4.1776671 -3.5201261 -1.6500046 --4.2035928 -3.4980927 -1.6517789 --4.2013621 -3.4528234 -1.6423162 --4.2528787 -3.4516633 -1.6544403 --4.2456536 -3.4027987 -1.6432034 --4.2716961 -3.3808341 -1.6452733 --4.3111758 -3.369267 -1.6526661 --4.3476491 -3.3550076 -1.6588759 --4.3772712 -3.335216 -1.6624244 --4.4029965 -3.3123152 -1.6644944 --4.4408751 -3.2983384 -1.6712956 --4.4764366 -3.2823262 -1.6772099 --4.50423 -3.2603993 -1.6801668 --4.5233736 -3.2321451 -1.6798712 --4.5384369 -3.2010255 -1.6780969 --4.5540724 -3.1703887 -1.6766183 --4.5939097 -3.1564524 -1.6843069 --4.6187253 -3.1319587 -1.6863768 --4.6283288 -3.0971839 -1.6828283 --4.6448545 -3.0671473 -1.6819412 --4.6675882 -3.0411971 -1.6834197 --4.6829467 -3.0104334 -1.6822368 --4.699717 -2.9806194 -1.6816454 --4.7179174 -2.9517264 -1.6816454 --4.7465076 -2.929245 -1.6854897 --4.7619438 -2.8985755 -1.6846025 --4.7780018 -2.8683188 -1.6840111 --4.8020873 -2.8428411 -1.6863768 --4.8153152 -2.8109143 -1.6848983 --4.8515139 -2.7922764 -1.6916995 --4.8560934 -2.7553833 -1.6872638 --4.9170947 -2.7502532 -1.7029364 --4.9263482 -2.7158794 -1.7002751 --4.9563498 -2.6928988 -1.7050064 --5.0030966 -2.6786709 -1.7156519 --5.0287323 -2.6528256 -1.7189046 --5.0423722 -2.6205981 -1.7180176 --5.0813146 -2.6013646 -1.7260016 --5.1057105 -2.574439 -1.7289587 --5.1496444 -2.5570846 -1.7387171 --5.1746774 -2.530055 -1.7419698 --5.1918254 -2.4990849 -1.7425613 --5.2234635 -2.4749541 -1.7481798 --5.2498059 -2.4481063 -1.7520239 --5.2768836 -2.4214265 -1.7561638 --5.3029599 -2.3941135 -1.7600081 --5.3236613 -2.3642445 -1.762078 --5.338943 -2.331917 -1.7623737 --5.3461294 -2.2960978 -1.7600081 --5.3574772 -2.2621362 -1.7591209 --5.3791971 -2.232517 -1.7617823 --5.4034085 -2.2037988 -1.7653308 --5.3769269 -2.1546102 -1.7520239 --5.3464913 -2.1044302 -1.7375343 --5.3842511 -2.0812306 -1.7458141 --5.4103169 -2.0532393 -1.7502497 --5.4630957 -2.035012 -1.7635566 --5.5176477 -2.0168698 -1.7774549 --5.5514998 -1.9907165 -1.7845519 --5.6266909 -1.9788047 -1.8052514 --5.7037482 -1.9666673 -1.8265424 --5.7989659 -1.9597759 -1.8537475 --5.8915896 -1.950888 -1.8800656 --5.995224 -1.9444735 -1.909932 --6.0507441 -1.9215323 -1.924126 --6.1417828 -1.909043 -1.9498526 --6.1698313 -1.8763257 -1.9551754 --6.1931314 -1.841974 -1.9590195 --6.2281661 -1.8108749 -1.9667079 --6.2520247 -1.7762814 -1.9708478 --6.2388735 -1.7312435 -1.9631594 --6.2558331 -1.6946788 -1.9652294 --6.2661138 -1.6562618 -1.9652294 --6.2752333 -1.6175439 -1.9649338 --6.2822609 -1.578311 -1.9640466 --6.3011055 -1.5420053 -1.9670037 --6.2937217 -1.4993277 -1.961681 --6.3130398 -1.4630549 -1.9649338 --6.3312173 -1.4263914 -1.9678909 --6.3323846 -1.3858826 -1.9655252 --6.3360972 -1.3460089 -1.9640466 --6.3423653 -1.3067204 -1.9634552 --6.3540111 -1.2685281 -1.964638 --6.3607373 -1.2293354 -1.9643424 --6.3700385 -1.1906346 -1.9649338 --6.3800445 -1.1520358 -1.9658209 --6.3926396 -1.1138511 -1.9675951 --6.3965273 -1.0741309 -1.9667079 --6.4029975 -1.0348623 -1.9667079 --6.4205542 -0.99731499 -1.9702564 --6.4189944 -0.95677328 -1.9678909 --6.4313636 -0.9183147 -1.9699608 --6.4491816 -0.88051605 -1.973805 --6.4487796 -0.84018719 -1.9720308 --6.4595013 -0.80130833 -1.973805 --6.4766297 -0.76311243 -1.9776492 --6.483089 -0.72357023 -1.9782406 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --6.2061787 0.49072126 -1.9647394 --6.2087407 0.52927852 -1.9665796 --6.1731501 0.56441218 -1.9561521 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --6.1670794 0.98684627 -1.97118 --6.0735917 1.0101295 -1.9426576 --6.0841618 1.0502949 -1.9481781 --6.0738554 1.0869354 -1.9469513 --6.0680075 1.124357 -1.947258 --6.0441685 1.1583406 -1.9417375 --6.0565538 1.1992913 -1.9481781 --6.0854483 1.2438716 -1.960139 --6.0749078 1.2805983 -1.959219 --6.0557747 1.3154225 -1.9555386 --6.0578065 1.3548424 -1.9589123 --6.055872 1.3934822 -1.9610591 --6.0296097 1.4264474 -1.955232 --6.0050216 1.4595929 -1.9500182 --5.9968762 1.4966422 -1.9503249 --5.9811258 1.531756 -1.9481781 --5.9697738 1.5679429 -1.9475647 --5.9434977 1.6000862 -1.9420443 --5.9363203 1.6372845 -1.9429643 --5.9334898 1.6757492 -1.9454179 --5.9194388 1.7110668 -1.9441911 --5.8905749 1.741954 -1.9380572 --5.8934407 1.7822002 -1.9426576 --5.8905778 1.8208596 -1.9454179 --5.878387 1.8566823 -1.9451112 --5.8831878 1.8979797 -1.9506316 --5.8397923 1.9236141 -1.9398974 --5.8125434 1.9542508 -1.9346836 --5.7725353 1.9802994 -1.9251761 --5.7764459 2.0213435 -1.9306966 --5.7791729 2.0621898 -1.9359103 --5.7619386 2.0959837 -1.934377 --5.7454 2.1299746 -1.9331502 --5.7331128 2.1655242 -1.9334568 --5.7170525 2.1996353 -1.9325367 --5.7016759 2.2339783 -1.9319234 --5.6940494 2.2713909 -1.9340702 --5.6844139 2.3080773 -1.9356037 --5.65871 2.3381853 -1.9316167 --5.6591721 2.3791361 -1.9368304 --5.6470923 2.4149387 -1.9377506 --5.6286774 2.448024 -1.9365238 --5.6239953 2.4871364 -1.940204 --5.6103649 2.5223787 -1.9408175 --5.5965137 2.5575473 -1.9414308 --5.578989 2.5910366 -1.9408175 --5.5595431 2.6235943 -1.9395907 --5.5364747 2.6543646 -1.9371371 --5.5200834 2.6882856 -1.9371371 --5.4301205 2.6858015 -1.9107616 --5.4722204 2.7485578 -1.9319234 --5.4620352 2.7855437 -1.934377 --5.4499116 2.8216324 -1.9362171 --5.4375505 2.857677 -1.9380572 --5.4098372 2.8856101 -1.934377 --5.4020729 2.9241889 -1.9380572 --5.3840289 2.9572804 -1.9380572 --5.3607941 2.9874794 -1.9362171 --5.3373914 3.0175049 -1.934377 --5.3146482 3.0478294 -1.9328434 --5.2835069 3.0732014 -1.928243 --5.2596326 3.1026599 -1.9264029 --5.2470298 3.1387844 -1.9288565 --5.23174 3.1733892 -1.9303899 --5.2073064 3.2024384 -1.9285498 --5.1915965 3.2368481 -1.9300833 --5.172442 3.269151 -1.9303899 --5.1482787 3.2982588 -1.9288565 --5.1255498 3.3282306 -1.9279364 --5.1058264 3.360141 -1.928243 --5.0724449 3.3829544 -1.923336 --5.04213 3.4076173 -1.9196557 --5.0384011 3.4503257 -1.9264029 --5.0147896 3.4795475 -1.9254829 --4.9949021 3.5113473 -1.9260962 --4.9794645 3.5463479 -1.9285498 --4.9545236 3.5746062 -1.927323 --4.9378753 3.6088717 -1.9294698 --4.9064603 3.6323044 -1.9257895 --4.887126 3.6646261 -1.9270163 --4.8668218 3.6962714 -1.9279364 --4.8395243 3.7225814 -1.9260962 --4.8098354 3.7469404 -1.923336 --4.7867541 3.7763824 -1.923336 --4.764236 3.8062766 -1.9236426 --4.74893 3.8420243 -1.9270163 --4.725266 3.8710909 -1.9270163 --4.7702751 3.9571476 -1.9558454 --4.7203999 3.9649122 -1.9451112 --4.6793094 3.9796157 -1.9380572 --4.6483126 4.0026617 -1.935297 --4.6150575 4.0236001 -1.9316167 --4.5867147 4.0486917 -1.9300833 --0 0 -0 --4.5416255 4.1091442 -1.9322301 --4.5008883 4.122787 -1.9254829 --4.4741111 4.1490316 -1.9248694 --4.4575882 4.1848769 -1.9288565 --4.4235492 4.2042789 -1.9251761 --4.4196129 4.2524643 -1.9349903 --4.3736682 4.2602391 -1.9260962 --4.3488007 4.288332 -1.9267097 --4.3190384 4.3115721 -1.9251761 --4.290494 4.3359623 -1.9242561 --4.2551608 4.3533564 -1.9202691 --4.2131662 4.3636317 -1.9132152 --4.2060156 4.410068 -1.922416 --4.1736565 4.4302492 -1.9199624 --4.1509323 4.4606533 -1.9221092 --4.121552 4.4839363 -1.9211892 --4.1041961 4.5204182 -1.9260962 --4.0789237 4.5483508 -1.927323 --4.0559864 4.5789943 -1.9297765 --4.018415 4.5930481 -1.9251761 --3.9777133 4.6032119 -1.9190423 --3.9438338 4.6210151 -1.9162821 --3.9074328 4.6356649 -1.9122951 --3.8843946 4.6661377 -1.9150553 --3.858108 4.6928253 -1.9162821 --3.8286409 4.7156711 -1.9159753 --3.7978482 4.736846 -1.9150553 --3.768712 4.7600603 -1.9150553 --3.7476392 4.7935944 -1.919349 --3.7059445 4.8006749 -1.9129084 --3.6868017 4.8369513 -1.9184289 --3.6541924 4.855679 -1.9168955 --3.6192222 4.8711324 -1.9141352 --3.596019 4.9024587 -1.9178156 --3.5374079 4.8851089 -1.9021742 --3.5140069 4.9160156 -1.9058546 --3.4722564 4.9211502 -1.8994139 --3.4615724 4.9704852 -1.9104549 --3.4067538 4.9563293 -1.8966538 --3.3880301 4.9944706 -1.903401 --3.3488514 5.0025086 -1.8984939 --3.3369746 5.0515566 -1.9095348 --3.3111117 5.0799112 -1.9126017 --3.2582631 5.066505 -1.8997207 --3.2281337 5.0880094 -1.9003341 --3.2205801 5.1456456 -1.9147487 --3.1769497 5.1458702 -1.907388 --3.1562028 5.1831536 -1.9141352 --3.1204212 5.1958938 -1.9116817 --3.0870264 5.2124853 -1.9107616 --3.0631421 5.2453032 -1.9159753 --3.0123837 5.2318268 -1.9040143 --2.991498 5.2700801 -1.911375 --2.9539943 5.2791986 -1.9080014 --2.9174104 5.2897224 -1.9052411 --2.8898966 5.3167238 -1.9086148 --2.8572195 5.3343558 -1.9086148 --2.8342047 5.3703079 -1.915362 --2.7941771 5.374084 -1.9104549 --2.7650533 5.3987527 -1.9132152 --2.7220192 5.3960695 -1.9061612 --2.687165 5.4092603 -1.9049344 --2.6472349 5.4119649 -1.9000274 --2.636682 5.475276 -1.9168955 --2.6026292 5.4904914 -1.9165888 --2.5910149 5.553802 -1.9334568 --2.5485528 5.5514293 -1.9270163 --2.5160084 5.5704322 -1.928243 --2.4694197 5.5579286 -1.9184289 --2.422318 5.5433197 -1.9080014 --2.3807473 5.5405874 -1.9018675 --2.348187 5.5585985 -1.9030943 --2.3144007 5.573781 -1.903401 --2.2873456 5.6055036 -1.9095348 --2.2603424 5.6379871 -1.9159753 --2.2323291 5.6685777 -1.9218025 --2.1909854 5.6653004 -1.9159753 --2.156858 5.6804171 -1.9165888 --2.1206341 5.6899767 -1.915362 --2.0879683 5.7091393 -1.9175088 --2.0535409 5.7236352 -1.9181222 --2.0155408 5.7280464 -1.915362 --1.9791154 5.7367063 -1.9141352 --1.9447925 5.7514472 -1.9150553 --1.9103632 5.7659826 -1.9159753 --1.8749478 5.777596 -1.9159753 --1.8460873 5.8098564 -1.9230293 --1.8262236 5.871974 -1.940204 --1.7904364 5.8839798 -1.9405107 --1.7545706 5.8957672 -1.9408175 --1.707999 5.8707771 -1.9288565 --1.6880708 5.9379129 -1.9478713 --1.6414254 5.9114723 -1.9356037 --1.6133344 5.9517503 -1.9457245 --1.5558691 5.8823991 -1.919349 --1.5171329 5.8816962 -1.9159753 --1.4837977 5.9019723 -1.9196557 --1.4459723 5.9044938 -1.9175088 --1.4108186 5.9178843 -1.9190423 --1.3731914 5.920866 -1.9172021 --1.3374633 5.9319658 -1.9181222 --1.3032784 5.9502888 -1.9214958 --1.2710943 5.9786563 -1.928243 --1.2353463 5.9910045 -1.9297765 --1.197445 5.9928713 -1.9279364 --1.1622761 6.0085163 -1.9306966 --1.1259114 6.0183415 -1.9316167 --1.0882858 6.02139 -1.9303899 --1.0490317 6.0148268 -1.9260962 --1.0097418 6.0070701 -1.9214958 --0.97498977 6.0263076 -1.9257895 --0.9398936 6.0444036 -1.9297765 --0.90292847 6.0509982 -1.9300833 --0.86659032 6.062078 -1.9319234 --0.83040768 6.0748258 -1.934377 --0.79287171 6.077919 -1.9337635 --0.75521195 6.0798359 -1.9328434 --0.7191174 6.0947533 -1.9362171 --0.68149608 6.0971589 -1.9356037 --0.64606667 6.1201572 -1.9417375 --0.6065293 6.104116 -1.935297 --0.56879938 6.1048794 -1.934377 --0.53363436 6.1348052 -1.9429643 --0.49322841 6.1038098 -1.9319234 --0.45626149 6.1133657 -1.9340702 --0.41880682 6.1169996 -1.934377 --0.38097072 6.1147041 -1.9328434 --0.3437103 6.1216784 -1.934377 --0.3065207 6.1312771 -1.9368304 --0.26843747 6.1225824 -1.9334568 --0.23125741 6.1345773 -1.9368304 --0.1932539 6.1244645 -1.9331502 --0.15547925 6.1179228 -1.9306966 --0.11797378 6.1206651 -1.9313099 --0.080551431 6.1317425 -1.9346836 --0.042919762 6.1311698 -1.934377 --0.0053007351 6.1341729 -1.935297 -0.032337941 6.1340899 -1.935297 -0.069853999 6.1233072 -1.9319234 -0.10739084 6.1208596 -1.9313099 -0.14537729 6.138165 -1.9371371 -0.18303762 6.1371574 -1.9371371 -0.22051913 6.1311626 -1.9356037 -0.25841665 6.1363511 -1.9377506 -0.2959716 6.1327486 -1.9371371 -0.33219478 6.1051564 -1.9288565 -0.36878321 6.0887523 -1.9242561 -0.40308568 6.0407901 -1.9095348 -0.44368193 6.086616 -1.9251761 -0.48214838 6.0980115 -1.9297765 -0.52012312 6.1015768 -1.9319234 -0.55798614 6.1030097 -1.9334568 -0.5944038 6.0890508 -1.9300833 -0.62880039 6.0568881 -1.9208825 -0.6672042 6.0642686 -1.9245628 -0.70264012 6.0449338 -1.9196557 -0.74122423 6.0527902 -1.9236426 -0.77871448 6.0509605 -1.9245628 -0.8168475 6.0536141 -1.9270163 -0.85504234 6.0560279 -1.9294698 -0.8931585 6.0572586 -1.9316167 -0.92987394 6.048842 -1.9306966 -0.96576691 6.0355039 -1.928243 -1.0026255 6.0285254 -1.9279364 -1.039597 6.0222602 -1.9279364 -1.0748509 6.0063987 -1.9248694 -1.111338 5.9978189 -1.9242561 -1.1477604 5.9890175 -1.9236426 -1.1861522 5.9902649 -1.9264029 -1.2221223 5.9791441 -1.9251761 -1.2574112 5.9650135 -1.9230293 -1.2915616 5.9460254 -1.919349 -1.3263581 5.9305577 -1.9168955 -1.3648585 5.9315829 -1.9199624 -1.4021055 5.9268017 -1.9211892 -1.4388952 5.9199367 -1.9218025 -1.4735776 5.904532 -1.9196557 -1.5175776 5.9258056 -1.9297765 -1.5558448 5.9237466 -1.9322301 -1.5926582 5.9159265 -1.9328434 -1.6263952 5.8968678 -1.9297765 -1.6672066 5.9032645 -1.935297 -1.7041904 5.8956661 -1.9362171 -1.7438445 5.8969636 -1.940204 -1.7827517 5.8952627 -1.943271 -1.819172 5.8851223 -1.9435776 -1.8242697 5.7758327 -1.9104549 -1.8628916 5.7744942 -1.9138285 -1.8851782 5.7231803 -1.9003341 -1.9257224 5.7277436 -1.9058546 -1.9657753 5.7302237 -1.9107616 -1.9939783 5.6982908 -1.9040143 -2.0337055 5.6993942 -1.9086148 -2.0731957 5.6993303 -1.9129084 -2.1107752 5.6936412 -1.915362 -2.1473536 5.6850343 -1.9168955 -2.1794603 5.6646452 -1.9144419 -2.2166085 5.6573687 -1.9165888 -2.2519855 5.6454291 -1.9172021 -2.2869411 5.6323867 -1.9175088 -2.3196394 5.6138506 -1.9159753 -2.346292 5.5810871 -1.9095348 -2.3759997 5.5560846 -1.9058546 -2.4111857 5.5440197 -1.9067746 -2.4501646 5.5404358 -1.9107616 -2.5001225 5.5608869 -1.923336 -2.5195527 5.5134139 -1.9119884 -2.5549393 5.5013032 -1.9132152 -2.5902719 5.4889655 -1.9144419 -2.6173167 5.4592376 -1.9095348 -2.6553504 5.4524875 -1.9129084 -2.684535 5.4275608 -1.9098415 -2.71736 5.4101362 -1.9095348 -2.7474768 5.3874264 -1.907388 -2.7822328 5.3738475 -1.9086148 -2.8045228 5.3364558 -1.9012542 -2.8399026 5.3241854 -1.9030943 -2.8738775 5.3091707 -1.9040143 -2.898149 5.276422 -1.8984939 -2.922127 5.243576 -1.8929734 -2.9533088 5.2238908 -1.8923601 -2.9914641 5.2164035 -1.896347 -3.0258086 5.2020636 -1.8978806 -3.0600896 5.1874981 -1.8994139 -3.0962608 5.1759748 -1.9021742 -3.1264803 5.1544375 -1.9012542 -3.1640337 5.1448851 -1.9049344 -3.1925204 5.1205282 -1.9030943 -3.2223532 5.0984297 -1.9021742 -3.2520351 5.0761576 -1.9012542 -3.2784541 5.0489244 -1.8984939 -3.3093719 5.0287132 -1.8984939 -3.3401651 5.0083127 -1.8984939 -3.3697665 4.9861465 -1.8978806 -3.3997595 4.964591 -1.8975738 -3.4323287 4.9467645 -1.8988006 -3.4604268 4.9224968 -1.8975738 -3.4905655 4.9011712 -1.8975738 -3.5205729 4.8796611 -1.8975738 -3.5521328 4.8602724 -1.8984939 -3.5926511 4.8529186 -1.9043211 -3.6183624 4.8254533 -1.9021742 -3.6473267 4.8024025 -1.9018675 -3.6744032 4.7769156 -1.9006407 -3.7077403 4.7595348 -1.9027876 -3.7356951 4.7352009 -1.9021742 -3.7664621 4.7144203 -1.9030943 -3.8150785 4.7156363 -1.9132152 -3.8439415 4.6921387 -1.9132152 -3.859895 4.6530828 -1.9067746 -3.8859239 4.6263967 -1.9055479 -3.9167049 4.6053658 -1.9067746 -3.935571 4.5704293 -1.9021742 -3.9654174 4.548347 -1.9030943 -3.9913609 4.52179 -1.9021742 -4.0095153 4.4865704 -1.8975738 -4.0439949 4.4696465 -1.9009475 -4.0681286 4.4412403 -1.8994139 -4.0953031 4.4161949 -1.8994139 -4.1203685 4.3889022 -1.8984939 -4.1518116 4.3683658 -1.9006407 -4.1897583 4.3544664 -1.9058546 -4.2157335 4.3279948 -1.9055479 -4.244884 4.3047566 -1.9067746 -4.2779436 4.2853642 -1.9098415 -4.3007741 4.2556877 -1.908308 -4.3234015 4.225893 -1.9067746 -4.3396616 4.1900315 -1.902481 -4.3804455 4.177774 -1.9092282 -4.3859024 4.1318941 -1.9003341 -4.4035068 4.0977736 -1.8969605 -4.4299693 4.0719652 -1.8975738 -4.4534612 4.0434275 -1.8969605 -4.4781876 4.0160255 -1.8969605 -4.5013199 3.98721 -1.896347 -4.5278497 3.9613953 -1.8972671 -4.5571132 3.9378936 -1.8994139 -4.5819139 3.9104753 -1.8997207 -4.6094613 3.885354 -1.9012542 -4.6397991 3.8624773 -1.9040143 -4.6442924 3.818223 -1.8960404 -4.6883264 3.8064485 -1.9046278 -4.7019386 3.7698715 -1.9006407 -4.7190108 3.7362247 -1.8981873 -4.7560964 3.7183347 -1.9040143 -4.7765617 3.6873374 -1.9030943 -4.7990966 3.6579595 -1.9030943 -4.8153663 3.6238666 -1.9006407 -4.8252854 3.5851717 -1.8957337 -4.8640795 3.5678785 -1.902481 -4.8928194 3.5429888 -1.9052411 -4.8858128 3.4924264 -1.8938936 -4.9001493 3.4574447 -1.8911333 -4.9353328 3.4371011 -1.8966538 -4.9728036 3.4180729 -1.9030943 -4.9976215 3.3901668 -1.9046278 -5.0199113 3.3604968 -1.9052411 -5.0340824 3.3254364 -1.9027876 -5.0599742 3.2981222 -1.9049344 -5.0857205 3.2706153 -1.9070814 -5.1113195 3.2429168 -1.9092282 -5.1222453 3.2059402 -1.9058546 -5.1466804 3.1774495 -1.9076947 -5.1612015 3.1428411 -1.9058546 -5.1852851 3.1140525 -1.9076947 -5.2018375 3.080723 -1.9067746 -5.2189989 3.0477877 -1.9061612 -5.2442007 3.0195053 -1.9086148 -5.2775307 2.9957254 -1.9141352 -5.2858443 2.9577112 -1.9104549 -5.3047266 2.9256816 -1.9107616 -5.312542 2.8876247 -1.9070814 -5.3402295 2.8603642 -1.9107616 -5.3484197 2.8226583 -1.907388 -5.3690166 2.7915435 -1.9086148 -5.3979053 2.7646196 -1.9129084 -5.4037185 2.7258759 -1.9089215 -5.4169326 2.6909747 -1.9076947 -5.4076896 2.6451447 -1.8984939 -5.4444013 2.6218212 -1.9058546 -5.4483438 2.5826602 -1.9015609 -5.4787531 2.5560193 -1.9067746 -5.5081749 2.5287054 -1.9116817 -5.5123096 2.489769 -1.9076947 -5.5335717 2.4586034 -1.9098415 -5.5494256 2.4249847 -1.9101483 -5.571197 2.3938932 -1.9126017 -5.5875344 2.3604043 -1.9132152 -5.6071873 2.3282645 -1.9150553 -5.6160798 2.2916589 -1.9132152 -5.6424046 2.2621124 -1.9175088 -5.657064 2.2277973 -1.9178156 -5.6706271 2.1930444 -1.9178156 -5.6919856 2.161248 -1.9205757 -5.7051396 2.126282 -1.9205757 -5.7261243 2.0941765 -1.923336 -5.7316985 2.0564322 -1.9208825 -5.73523 2.0180669 -1.9178156 -5.7502041 1.9837689 -1.9187356 -5.7703834 1.9511914 -1.9214958 -5.7822471 1.9157484 -1.9214958 -5.7920823 1.8796458 -1.9208825 -5.802599 1.8437828 -1.9205757 -5.8219833 1.8106865 -1.923336 -5.832984 1.7749294 -1.923336 -5.8419404 1.7385628 -1.9227226 -5.8570681 1.7040132 -1.9242561 -5.8701601 1.6688231 -1.9251761 -5.8784547 1.6322641 -1.9245628 -5.8791723 1.5936754 -1.9214958 -5.8888407 1.5575715 -1.9214958 -5.8872266 1.5185583 -1.9178156 -5.9019723 1.4837977 -1.9196557 -5.8998709 1.4448413 -1.9159753 -5.9308472 1.4139063 -1.923336 -5.931993 1.3757697 -1.9208825 -5.9449658 1.3403918 -1.922416 -5.9558678 1.3044993 -1.923336 -5.9637599 1.2679302 -1.923336 -5.9658341 1.2301611 -1.9214958 -5.9816704 1.1952091 -1.9242561 -5.9954329 1.159748 -1.9264029 -6.0117922 1.1246873 -1.9294698 -6.01296 1.0867639 -1.9276297 -6.0251412 1.0508287 -1.9294698 -6.0295982 1.0135242 -1.9288565 -6.0357037 0.97650814 -1.9288565 -6.0444036 0.9398936 -1.9297765 -6.0368772 0.90082401 -1.9254829 -6.0592513 0.8661868 -1.9310033 -6.0550213 0.82770425 -1.9279364 -6.065649 0.79127347 -1.9297765 -6.0826693 0.75556338 -1.9337635 -6.0890818 0.71844929 -1.934377 -6.0962129 0.68139052 -1.935297 -6.0917602 0.64307433 -1.9325367 -6.0899081 0.6051203 -1.9306966 -6.0783429 0.56633198 -1.9257895 -6.098772 0.53050679 -1.9313099 -6.1009636 0.49299896 -1.9310033 -6.105772 0.4556962 -1.9316167 -6.1084533 0.41822332 -1.9316167 -6.1166043 0.38108873 -1.9334568 -6.1226287 0.34376347 -1.9346836 -6.1360302 0.30675742 -1.9383639 -6.1387482 0.26914316 -1.9386706 -6.1374307 0.23136443 -1.9377506 -6.129221 0.19340311 -1.9346836 -6.1312442 0.15581527 -1.9349903 -6.1197133 0.11795562 -1.9310033 -6.1250806 0.08046516 -1.9325367 -6.1368804 0.042958666 -1.9362171 -6.1284623 0.0052968725 -1.9334568 -6.125524 -0.032291174 -1.9325367 -6.1147413 -0.069754675 -1.9291631 -6.1084881 -0.10717145 -1.927323 -6.1124735 -0.14476399 -1.9288565 -6.1143241 -0.18235235 -1.9297765 -6.117846 -0.22003765 -1.9313099 -6.1230373 -0.25785351 -1.9334568 -6.1213403 -0.29541889 -1.9334568 -6.1165609 -0.33281749 -1.9325367 -6.1277046 -0.37114987 -1.9368304 -6.124362 -0.4086782 -1.9365238 -6.1255364 -0.44652641 -1.9377506 -6.1302719 -0.48470521 -1.940204 -6.120544 -0.52174354 -1.9380572 -6.119123 -0.55946237 -1.9386706 -6.1212587 -0.59755397 -1.9405107 -6.1184239 -0.63520056 -1.9408175 -6.1106267 -0.67231345 -1.9395907 -6.110168 -0.71023518 -1.9408175 -6.1056952 -0.74771309 -1.9408175 -6.0811682 -0.78260785 -1.934377 -6.0866275 -0.82130849 -1.9377506 -6.090898 -0.8599723 -1.9408175 -6.0694995 -0.89496577 -1.9356037 -6.0742416 -0.93378347 -1.9389772 -6.0571198 -0.96922994 -1.935297 -6.0595088 -1.0077845 -1.9380572 -6.0400801 -1.0426767 -1.9337635 -6.0494962 -1.0825716 -1.9389772 -6.0427394 -1.1196702 -1.9389772 -6.0310817 -1.15583 -1.9374439 -6.0313454 -1.1942948 -1.9398974 -6.0211062 -1.2307075 -1.9389772 -6.011579 -1.2672362 -1.9383639 -6.0083404 -1.3051097 -1.9398974 -5.9955754 -1.3409121 -1.9383639 -5.9918723 -1.3787431 -1.9398974 -5.9907093 -1.4172369 -1.9423509 -5.9717274 -1.4514939 -1.9389772 -5.9737902 -1.4908761 -1.9426576 -5.9553099 -1.5251395 -1.9395907 -5.9357138 -1.5589902 -1.9362171 -5.9453359 -1.6005814 -1.9426576 -5.9555879 -1.6426024 -1.9494048 -5.9389858 -1.6773024 -1.947258 -5.9240103 -1.7123892 -1.9457245 -5.8960509 -1.7435745 -1.9398974 -5.8916187 -1.7816489 -1.9420443 -5.8860316 -1.8194532 -1.9438844 -5.8520679 -1.848364 -1.9362171 -5.8297467 -1.880728 -1.9325367 -5.7882662 -1.9066309 -1.922416 -5.7710457 -1.9402901 -1.9205757 -5.6852112 -1.9503241 -1.895427 -5.6084571 -1.9625241 -1.8733451 -5.5183244 -1.9690558 -1.846663 -5.4202757 -1.9716264 -1.8172204 -5.3527474 -1.984324 -1.7982056 -5.2843795 -1.9959313 -1.7788839 -5.2080784 -2.0036976 -1.7568021 -5.1761909 -2.0279734 -1.750055 -5.125638 -2.0445242 -1.7368672 -5.080369 -2.0626812 -1.7255195 -5.0412292 -2.0829055 -1.7163187 -4.9985237 -2.1012514 -1.7058913 -4.9811611 -2.1300101 -1.7043577 -4.9357057 -2.1464822 -1.6930101 -4.8789215 -2.1574705 -1.6776755 -4.82653 -2.1697958 -1.6638744 -4.7482042 -2.1696868 -1.6408725 -4.5379972 -2.1073341 -1.5709467 -4.3623095 -2.0583355 -1.5129818 -4.3229938 -2.0723023 -1.5034744 -4.2982178 -2.0929523 -1.4991807 -4.2332573 -2.0935354 -1.4804724 -4.1744065 -2.0963929 -1.4639111 -4.0181813 -2.0488613 -1.41208 -3.9100313 -2.0240095 -1.3774239 -4.0028458 -2.1033316 -1.4157604 -3.9520769 -2.107688 -1.4019593 -3.9541354 -2.1400564 -1.4074798 -4.1119328 -2.2582467 -1.4703516 -4.0057211 -2.231987 -1.4363087 -4.0772834 -2.3047879 -1.467898 -3.9466574 -2.2629762 -1.4246545 -3.5353525 -2.0559299 -1.2765222 -3.4538157 -2.0369484 -1.25076 -3.4110334 -2.0400176 -1.2394124 -3.3821776 -2.0510333 -1.2332785 -3.3516943 -2.0607746 -1.2265313 -3.3058755 -2.0606487 -1.213957 -3.2569675 -2.0580041 -1.2001557 -3.3909252 -2.1719382 -1.2562804 -3.1540439 -2.0475223 -1.1704066 -3.1239316 -2.0553219 -1.1636595 -3.0985935 -2.065999 -1.1587523 -3.1000514 -2.0945687 -1.1642728 -3.0643697 -2.0979507 -1.1553787 -3.0209451 -2.0955467 -1.1434177 -2.9768882 -2.0921421 -1.13115 -2.9539175 -2.1031888 -1.1271631 -2.9154885 -2.1028914 -1.1170422 -2.8433678 -2.0774846 -1.0934269 -2.8037963 -2.0750656 -1.0826926 -2.8199439 -2.1139343 -1.094347 -2.7841837 -2.1139228 -1.0851462 -2.7666347 -2.1274836 -1.0833061 -2.746021 -2.1385686 -1.0802392 -2.7642276 -2.1801438 -1.0931202 -2.7448504 -2.1923099 -1.0906667 -2.7180295 -2.1983323 -1.0851462 -2.7044897 -2.2149684 -1.0851462 -2.6835234 -2.2254429 -1.0820793 -2.6625307 -2.2357435 -1.0790124 -2.6458626 -2.2495713 -1.0777856 -2.6406634 -2.2732184 -1.0814658 -2.6173403 -2.2812452 -1.0774789 -2.5911648 -2.2865517 -1.0722651 -2.5565081 -2.2840109 -1.0633711 -2.5572648 -2.3130674 -1.0698116 -2.5065334 -2.2952771 -1.0538636 -2.4951937 -2.3132031 -1.0550903 -2.4865036 -2.3336825 -1.0575439 -2.4748967 -2.3515189 -1.0587707 -2.467279 -2.373261 -1.0618376 -2.4601691 -2.3956621 -1.0652112 -2.4400024 -2.4053648 -1.0627576 -2.4204831 -2.4155831 -1.0606108 -2.4089625 -2.4337728 -1.0621443 -2.3999705 -2.4546351 -1.0649046 -2.3881688 -2.4727392 -1.066438 -2.4011929 -2.516969 -1.0796257 -2.3889666 -2.5351195 -1.0811592 -2.362994 -2.5385797 -1.0762521 -2.3435092 -2.5488257 -1.074412 -2.323348 -2.5582237 -1.0722651 -2.3037953 -2.5681789 -1.0704249 -2.2861009 -2.5801287 -1.0695049 -2.2677202 -2.5912414 -1.0682781 -2.2480447 -2.6007853 -1.066438 -2.230809 -2.6130819 -1.0658246 -2.2110536 -2.6223536 -1.0639844 -2.1949215 -2.6358709 -1.0639844 -2.1805196 -2.651495 -1.0649046 -2.1630099 -2.6633465 -1.0642911 -2.1662703 -2.7010777 -1.074412 -2.123666 -2.6814795 -1.0609175 -2.1007259 -2.6862102 -1.0575439 -2.0871115 -2.702817 -1.0590774 -2.0722184 -2.7178438 -1.0599974 -2.0595083 -2.7358317 -1.0621443 -2.0506279 -2.7591147 -1.066438 -2.0359111 -2.7747157 -1.0676647 -2.0283349 -2.8002629 -1.0728785 -2.0221815 -2.8281446 -1.0790124 -2.0091791 -2.8467216 -1.0814658 -2.0014625 -2.8730571 -1.0869863 -1.9676261 -2.8617492 -1.0777856 -1.9340044 -2.8501351 -1.0685848 -1.9021879 -2.84059 -1.0603042 -1.8752822 -2.8379111 -1.0547837 -1.8531575 -2.8421869 -1.0520234 -1.8372273 -2.8559062 -1.0529435 -1.81814 -2.8647141 -1.0520234 -1.7985089 -2.8725884 -1.0507966 -1.7848481 -2.8900497 -1.0532502 -1.7646071 -2.8968818 -1.0517168 -1.7414103 -2.8986781 -1.0483432 -1.7138942 -2.8929274 -1.0422093 -1.677398 -2.8713307 -1.0302483 -1.6654456 -2.8914683 -1.0339286 -1.6575363 -2.9190176 -1.0403692 -1.6433113 -2.9357786 -1.0428227 -1.636295 -2.9658115 -1.0501833 -1.6180663 -2.9757957 -1.0501833 -1.60382 -2.9932201 -1.0529435 -1.5872 -3.006372 -1.0541703 -1.570918 -3.020277 -1.0557038 -1.5532238 -3.0315537 -1.0563171 -1.5354503 -3.0427268 -1.0569305 -1.5175983 -3.0537958 -1.0575439 -1.4950694 -3.0553544 -1.0547837 -1.4680378 -3.047318 -1.0486498 -1.446052 -3.049387 -1.0461963 -1.4253029 -3.0538893 -1.0446628 -1.3997897 -3.0478709 -1.0394491 -1.3853699 -3.0659449 -1.0428227 -1.3951178 -3.1387596 -1.0655179 -1.3632609 -3.1184769 -1.055397 -1.3534905 -3.1486471 -1.0630643 -1.3382177 -3.166538 -1.066438 -1.3169389 -3.170294 -1.0649046 -1.2985398 -3.180959 -1.0658246 -1.2800595 -3.1915174 -1.0667447 -1.2642871 -3.209054 -1.0701183 -1.2401119 -3.2052097 -1.0661312 -1.2140055 -3.1958506 -1.0603042 -1.1950377 -3.2050233 -1.0609175 -1.1943012 -3.2641456 -1.0787057 -1.1954535 -3.3305452 -1.0989474 -1.166154 -3.3126762 -1.0903599 -1.139601 -3.3017726 -1.0842261 -1.1168826 -3.3014894 -1.0817726 -1.0936122 -3.2992446 -1.0787057 -1.0751096 -3.3113251 -1.0805458 -1.0608208 -3.33691 -1.0869863 -1.0437158 -3.3542633 -1.0906667 -1.0145305 -3.3323746 -1.0811592 -0.99026597 -3.3257644 -1.0768656 -0.96426076 -3.3125846 -1.0704249 -0.94313669 -3.3156922 -1.0695049 -0.92811829 -3.340677 -1.0759454 -0.90760285 -3.3463089 -1.0759454 -0.9145354 -3.4557989 -1.1106017 -0.89640206 -3.4733274 -1.1145886 -0.76445931 -3.0384302 -0.96829647 -0.73901463 -3.0153277 -0.95909572 -0.81114483 -3.400352 -1.0851462 -0.80831397 -3.4831531 -1.1109084 -0.77584052 -3.4388347 -1.0946536 -0.75167358 -3.4295833 -1.0900533 -0.72745174 -3.4192343 -1.0851462 -0.71125907 -3.4469392 -1.0928135 -0.68879145 -3.4447048 -1.0906667 -0.66258568 -3.4226997 -1.0820793 -0.64227128 -3.4304433 -1.0833061 -0.62408525 -3.450243 -1.0885198 -0.60290319 -3.4540074 -1.0885198 -0.57901925 -3.4416842 -1.0833061 -0.56441963 -3.4855759 -1.0964938 -0.53980833 -3.4682817 -1.0897466 -0.51655304 -3.458349 -1.0854529 -0.49855173 -3.4840674 -1.0928135 -0.47870931 -3.4983778 -1.0964938 -0.45440692 -3.4795411 -1.0894399 -0.43492272 -3.4973767 -1.094347 -0.41378909 -3.5028155 -1.0952671 -0.38817197 -3.4683969 -1.0833061 -0.36738169 -3.4754462 -1.0848395 -0.34576803 -3.4747934 -1.0839194 -0.32461685 -3.478745 -1.0845329 -0.30359477 -3.4844644 -1.0857596 -0.2816734 -3.4796205 -1.0836127 -0.26052952 -3.4841309 -1.0845329 -0.24031346 -3.5027566 -1.0900533 -0.22011459 -3.5250647 -1.0968004 -0.20060818 -3.5643618 -1.1090682 -0.17916 -3.5740814 -1.1118284 -0.15830579 -3.5998368 -1.1198025 -0.13674979 -3.6150074 -1.1244028 -0.11280538 -3.5596495 -1.106308 -0.090745643 -3.5517111 -1.1035477 -0.068678595 -3.5379264 -1.0989474 -0.047203146 -3.5563641 -1.1047745 -0.025354883 -3.5527797 -1.1035477 -0.0035633277 -3.5652418 -1.1075348 --0.018385403 -3.5785217 -1.1118284 --0.040243123 -3.5697758 -1.1090682 --0.061808579 -3.5504286 -1.1029344 --0.083433427 -3.5433216 -1.1007875 --0.10548735 -3.5532081 -1.1041611 --0.12862866 -3.5895903 -1.1161221 --0.15057111 -3.5868316 -1.1155087 --0.17317544 -3.5981991 -1.1194957 --0.19426435 -3.5790114 -1.1136686 --0.21610565 -3.5758519 -1.1130552 --0.23727998 -3.5630624 -1.1093749 --0.25636294 -3.5235684 -1.0971072 --0.28053516 -3.5541894 -1.1075348 --0.30006939 -3.5258472 -1.0989474 --0.32560566 -3.5665925 -1.1127485 --0.35054129 -3.595788 -1.1228694 --0.37446883 -3.6115568 -1.1286964 --0.39672616 -3.610137 -1.1290032 --0.42250249 -3.6388338 -1.139124 --0.4452855 -3.6399517 -1.1403508 --0.47138312 -3.666415 -1.1498582 --0.49565536 -3.6766589 -1.1541519 --0.52380174 -3.7131307 -1.1670331 --0.77707464 -5.2710214 -1.6755286 --0.80911279 -5.2642727 -1.6749153 --0.83944118 -5.2469912 -1.6709284 --0.87021333 -5.2332921 -1.6681681 --0.90328038 -5.2334814 -1.6700082 --0.93604678 -5.2315879 -1.671235 --0.97333711 -5.2538214 -1.6804358 --1.0028658 -5.2337289 -1.6758354 --1.0338501 -5.2218747 -1.6739953 --1.0691148 -5.2312856 -1.679209 --1.0990317 -5.2143826 -1.6758354 --1.1348479 -5.2252126 -1.6816626 --1.1693828 -5.2292967 -1.6853428 --1.2008063 -5.2192402 -1.6844227 --1.2352207 -5.2219625 -1.6877964 --1.2685885 -5.2198339 -1.6896366 --1.2985172 -5.2036409 -1.6868763 --1.3282949 -5.1872773 -1.6841161 --1.3586466 -5.1735063 -1.6822759 --1.3918507 -5.1705866 -1.6841161 --1.4225377 -5.1582789 -1.6828893 --1.4577856 -5.1622763 -1.687183 --1.4899623 -5.1550627 -1.6877964 --1.1804485 -3.9931021 -1.3004441 --1.1983112 -3.9639196 -1.2930835 --1.5803788 -5.1131248 -1.6831959 --1.6111488 -5.1015162 -1.6825826 --1.6430056 -5.0933461 -1.6831959 --1.6745249 -5.0840726 -1.6835027 --1.7072061 -5.0782132 -1.6850362 --1.7398784 -5.0721436 -1.6865696 --1.7665641 -5.0487957 -1.6822759 --1.79879 -5.0414467 -1.6835027 --1.8235044 -5.0133209 -1.6776755 --1.8512521 -4.9940062 -1.6749153 --1.8875803 -4.9976888 -1.6801291 --1.9103452 -4.9655828 -1.6730752 --1.938693 -4.948451 -1.671235 --1.9834855 -4.9727058 -1.6838094 --2.0075119 -4.9445691 -1.6782889 --1.2508819 -3.028698 -1.014607 --1.2690731 -3.0200882 -1.0143003 --1.2741013 -2.980742 -1.0032594 --2.1217968 -4.8789763 -1.6730752 --2.1613216 -4.8876257 -1.6807425 --2.1865854 -4.8638558 -1.6770622 --2.2219293 -4.8624663 -1.6813558 --1.5827217 -3.4089615 -1.1697932 --1.5897924 -3.3699222 -1.1593657 --1.604677 -3.3480895 -1.155072 --1.6197705 -3.3270569 -1.151085 --1.6380438 -3.3127902 -1.1495515 --1.6617588 -3.3094807 -1.1520051 --1.6893879 -3.3136351 -1.1572188 --1.7171303 -3.3175745 -1.1624327 --1.7627025 -3.354996 -1.1799141 --2.1986547 -4.122541 -1.4642178 --2.2307076 -4.1215272 -1.4688182 --2.5823233 -4.701685 -1.687183 --2.6083426 -4.6807637 -1.6853428 --2.6445117 -4.6779265 -1.6902499 --2.6779017 -4.669868 -1.6933168 --2.7108135 -4.6607528 -1.6960771 --2.7495191 -4.6612453 -1.7025176 --2.7868662 -4.658988 -1.7080381 --2.8119442 -4.6361046 -1.7058913 --2.840338 -4.6187634 -1.7058913 --2.8676171 -4.5996332 -1.7052778 --2.90189 -4.5916052 -1.7089581 --2.9402809 -4.5897403 -1.7150919 --2.9580176 -4.5556488 -1.7089581 --2.9921956 -4.5469527 -1.7126385 --3.012115 -4.5166311 -1.7080381 --3.030709 -4.4846597 -1.7028244 --3.0613968 -4.4706903 -1.7046645 --3.0589199 -4.4088173 -1.6877964 --3.0990551 -4.4086504 -1.6951571 --3.1177633 -4.3779244 -1.6905566 --3.1501374 -4.3664293 -1.6936235 --3.160017 -4.3239679 -1.6844227 --3.1740263 -4.2876697 -1.6776755 --2.2384465 -2.9859276 -1.1612059 --2.255574 -2.9706209 -1.1605924 --3.2663414 -4.2466235 -1.6850362 --3.2829757 -4.2144899 -1.6801291 --3.3046458 -4.1890364 -1.6779822 --3.3112712 -4.1448884 -1.6681681 --3.3354437 -4.123013 -1.6675547 --3.3630927 -4.1054139 -1.6687815 --3.3857884 -4.0817714 -1.6675547 --3.3936253 -4.0405159 -1.6589673 --3.4097188 -4.0094681 -1.6546736 --3.4417107 -3.9971244 -1.6583539 --3.4718022 -3.9823871 -1.6611142 --3.5018425 -3.9674308 -1.6638744 --3.520411 -3.9394829 -1.6611142 --3.5355747 -3.9079285 -1.6568204 --3.5607729 -3.8875644 -1.6574339 --3.5890908 -3.8705273 -1.6595807 --3.6179852 -3.8539827 -1.6620343 --3.6441879 -3.8344698 -1.6632611 --3.6696274 -3.8140945 -1.6641811 --3.6829975 -3.781281 -1.6595807 --3.6987767 -3.7511578 -1.6562071 --3.708945 -3.7155955 -1.6503799 --3.7404706 -3.7014694 -1.654367 --3.7767277 -3.6917522 -1.6605008 --3.7965693 -3.6658652 -1.659274 --3.8217468 -3.645128 -1.6605008 --3.8391905 -3.6170418 -1.6583539 --3.8543429 -3.5869343 -1.655287 --3.8790829 -3.5657928 -1.6565138 --3.8994796 -3.5406449 -1.6559004 --3.9190049 -3.5147455 -1.6549803 --3.9333713 -3.4843228 -1.6519134 --3.9518106 -3.4576163 -1.6506866 --3.9823158 -3.4413917 -1.6546736 --4.0011845 -3.4150386 -1.6537535 --4.0213356 -3.3898101 -1.6534469 --4.0464492 -3.3687248 -1.655287 --4.0743966 -3.3498762 -1.6583539 --4.0993085 -3.3284118 -1.660194 --4.1255956 -3.3079581 -1.6626476 --4.1376057 -3.2760842 -1.659274 --4.1591291 -3.251807 -1.6598874 --4.1887999 -3.2337849 -1.6638744 --4.225976 -3.2212894 -1.6709284 --4.2395773 -3.1907213 -1.6684748 --4.2544904 -3.1612425 -1.6666346 --4.2692018 -3.1317012 -1.6647944 --4.2806273 -3.0998659 -1.6617275 --4.3289952 -3.0945694 -1.6733818 --4.3642359 -3.0794692 -1.6798223 --4.3892984 -3.0569832 -1.6822759 --4.4118953 -3.0326884 -1.6838094 --4.4233303 -3.0007529 -1.6810491 --4.447197 -2.9772606 -1.6831959 --4.4606156 -2.9467704 -1.6813558 --4.4754229 -2.9172666 -1.6801291 --4.5140553 -2.9031329 -1.6881031 --4.5269608 -2.8723218 -1.686263 --4.5469208 -2.8460054 -1.687183 --4.574018 -2.8240507 -1.6908633 --4.595325 -2.7984064 -1.6923968 --4.6148572 -2.7716269 -1.6933168 --4.6448817 -2.7510161 -1.6982239 --4.6657844 -2.7248631 -1.6997573 --4.6576676 -2.6819398 -1.6905566 --4.6939039 -2.6645834 -1.6979172 --4.7193031 -2.6408427 -1.7012908 --4.7879314 -2.6407852 -1.7206124 --4.8149171 -2.6172643 -1.7245995 --4.8350811 -2.5899174 -1.7261329 --4.8643513 -2.5673065 -1.73104 --4.8926811 -2.5439949 -1.7356404 --4.9183655 -2.5191307 -1.7393206 --4.9464784 -2.4953327 -1.743921 --4.9685163 -2.4683211 -1.7463746 --4.9810028 -2.4365342 -1.7454545 --5.0061512 -2.4108791 -1.7491348 --5.0285912 -2.3837843 -1.7518951 --5.0551996 -2.358516 -1.7561888 --5.0834174 -2.3338046 -1.7610958 --5.0776892 -2.2935619 -1.7540419 --5.1021056 -2.2669983 -1.7577223 --5.1298752 -2.241745 -1.7626293 --5.1557779 -2.2154849 -1.766923 --5.185935 -2.1908422 -1.7727501 --5.232686 -2.1728442 -1.7844044 --5.1295843 -2.0932508 -1.743921 --5.1582351 -2.0681093 -1.7494415 --5.2027121 -2.0489693 -1.7604824 --5.2391567 -2.0262725 -1.7687631 --5.2835269 -2.0062447 -1.779804 --5.3323073 -1.9874094 -1.7923784 --5.3962517 -1.973605 -1.8101666 --5.4181151 -1.9439911 -1.8135402 --5.5251193 -1.9441798 -1.8460495 --5.6449242 -1.9474707 -1.8828527 --5.7703834 -1.9511914 -1.9214958 --5.8373647 -1.9339981 -1.940204 --5.890769 -1.9116511 -1.9543118 --5.9060168 -1.8766223 -1.9555386 --5.9346895 -1.8457158 -1.9613658 --5.9568305 -1.8125893 -1.9650462 --5.9751391 -1.7781754 -1.9674996 --5.9831953 -1.740682 -1.9665796 --5.9928474 -1.7036769 -1.966273 --6.0178628 -1.670945 -1.97118 --6.0243278 -1.6329933 -1.9699532 --6.0185905 -1.5918635 -1.9647394 --6.03654 -1.5570421 -1.9674996 --6.0367489 -1.5176544 -1.9644327 --6.0635133 -1.4848833 -1.9702599 --6.0863991 -1.4509586 -1.9748603 --6.0645881 -1.4064953 -1.9647394 --6.0861039 -1.3721856 -1.9690331 --6.08883 -1.3335954 -1.967193 --6.0968981 -1.2962099 -1.967193 --6.1196523 -1.2618483 -1.9721 --6.1104789 -1.2209213 -1.9665796 --6.1178551 -1.1834052 -1.9665796 --6.1268725 -1.1461941 -1.967193 --6.1300435 -1.1079023 -1.9659662 --6.1386013 -1.0705949 -1.9665796 --6.1647668 -1.0362186 -1.9730201 --6.1512771 -0.99518424 -1.9665796 --6.1657324 -0.9587366 -1.9693398 --6.1630263 -0.91962367 -1.9665796 --6.1619573 -0.88084912 -1.9644327 --6.1747904 -0.84405339 -1.9668863 --6.1902351 -0.80750203 -1.9702599 --0 -0 -0 --6.2252007 -0.73448408 -1.9785405 --6.2466173 -0.69817305 -1.984061 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --6.2395983 0.22443959 -1.9705666 --0 0 -0 --6.2696481 0.30260426 -1.9813008 --6.25912 0.34060138 -1.9785405 --6.2873139 0.38084733 -1.9883547 --6.257318 0.41757542 -1.9794607 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --5.8809462 0.97804648 -1.950989 --5.8542728 1.0105649 -1.9440156 --5.8460946 1.046133 -1.9433817 --5.8423634 1.0825025 -1.9443326 --5.8318853 1.1176164 -1.9430647 --5.8305001 1.154484 -1.9449666 --5.8270235 1.1909971 -1.9462345 --5.8196058 1.2267286 -1.9462345 --5.8166037 1.2634202 -1.9478194 --5.8031883 1.2978448 -1.9459175 --5.7932673 1.3330028 -1.9452835 --5.7849789 1.3685246 -1.9452835 --5.7690997 1.4022033 -1.9427477 --5.7567067 1.4366571 -1.9414798 --5.7459455 1.471482 -1.9408458 --5.7322216 1.5055065 -1.9392611 --5.7283716 1.5421294 -1.9411628 --5.7306871 1.5805262 -1.9452835 --5.7263579 1.6172056 -1.9471854 --5.7117715 1.6509949 -1.9456005 --5.7069907 1.687624 -1.9475024 --0 0 -0 --5.6541362 1.7477294 -1.9364083 --5.6505408 1.7846743 -1.9389441 --5.6277494 1.8155271 -1.9348234 --5.6074953 1.8470575 -1.9316536 --5.6041474 1.8841493 -1.9345064 --5.5906868 1.9178848 -1.9338725 --5.5779185 1.9518393 -1.9335555 --5.5569043 1.9828413 -1.9303857 --5.5785036 2.0292184 -1.9424307 --5.5650582 2.0630796 -1.9421138 --5.5496325 2.0961821 -1.9411628 --5.5348959 2.1295135 -1.9405289 --5.5181928 2.1620512 -1.9392611 --5.5048227 2.1958694 -1.9392611 --5.4921246 2.2299619 -1.9395781 --5.4783382 2.2636189 -1.9395781 --5.4634714 2.2968233 -1.9392611 --5.4475312 2.3295577 -1.9386271 --5.4357443 2.3640738 -1.9395781 --5.420269 2.3969989 -1.9392611 --5.4002686 2.4278789 -1.9373592 --5.3913083 2.4637275 -1.9395781 --5.3545842 2.4867759 -1.9316536 --5.3323627 2.5163465 -1.9291179 --5.3399143 2.5600867 -1.9376762 --5.315578 2.5886517 -1.9345064 --5.2944937 2.6186962 -1.9326046 --5.2740879 2.6490052 -1.9310197 --5.2509751 2.6778698 -1.928484 --5.2268648 2.7061148 -1.9256312 --5.2135205 2.7398999 -1.9268991 --5.1874051 2.7669287 -1.9234123 --5.1895142 2.8090887 -1.9307027 --5.1696863 2.8395085 -1.9297519 --5.1513376 2.8707139 -1.9294349 --5.1402316 2.9060016 -1.9319706 --5.1206584 2.9365432 -1.9313366 --5.0927052 2.9621861 -1.927533 --5.0638137 2.9871149 -1.9234123 --5.059227 3.0264056 -1.9288009 --5.0356965 3.0544407 -1.9268991 --5.015244 3.0842881 -1.9262651 --5.0010538 3.1180134 -1.928167 --4.9802246 3.1476271 -1.927533 --4.9600186 3.1776145 -1.9272161 --4.9404278 3.2079887 -1.9272161 --4.920651 3.2382421 -1.9272161 --4.9030561 3.2699523 -1.928167 --4.8852572 3.3015685 -1.9291179 --4.8672552 3.3330891 -1.9300689 --4.8467121 3.3628914 -1.9300689 --4.8120193 3.3827498 -1.9243633 --4.8027616 3.4204643 -1.9291179 --4.7786069 3.4476497 -1.92785 --4.751236 3.472429 -1.9253142 --4.7077332 3.485153 -1.916122 --4.7128196 3.5338862 -1.9272161 --4.6902919 3.5621634 -1.9268991 --4.6736093 3.5949228 -1.9291179 --4.653708 3.6252804 -1.9300689 --4.6135044 3.6396694 -1.9224614 --4.6044235 3.6785638 -1.928167 --4.5699673 3.6972032 -1.9230953 --4.5523319 3.7293813 -1.9253142 --4.5249829 3.7536108 -1.9234123 --4.504045 3.7831347 -1.9243633 --4.4742446 3.8051703 -1.9215105 --4.4630308 3.8430719 -1.9268991 --4.4250674 3.8579199 -1.9205596 --4.4041567 3.8875093 -1.9218274 --4.3795133 3.9138277 -1.9215105 --4.3476791 3.9336271 -1.9180238 --4.321363 3.9583082 -1.9170729 --4.2872572 3.9757211 -1.9126352 --4.2517176 3.9915667 -1.9075637 --4.2463965 4.0358729 -1.9164389 --4.2324886 4.0723734 -1.9215105 --4.2094598 4.1002517 -1.9224614 --4.1862478 4.1280012 -1.9234123 --4.1615114 4.1542797 -1.9237293 --4.1292715 4.1729951 -1.9205596 --4.0969586 4.1914711 -1.9173899 --4.0639162 4.2090259 -1.9139031 --4.0242662 4.21947 -1.9072467 --4.0197635 4.2668629 -1.9177068 --3.9941533 4.2921414 -1.9180238 --3.9715931 4.3207579 -1.9199257 --3.9386308 4.3380241 -1.9167559 --3.9119391 4.3621097 -1.9167559 --3.8888736 4.3902903 -1.9186578 --3.8587394 4.4105005 -1.9170729 --3.830364 4.4326591 -1.9164389 --3.7993991 4.4517498 -1.9145371 --3.7555068 4.4554 -1.9059788 --3.7426627 4.4958525 -1.9135861 --3.7156086 4.519465 -1.9139031 --3.6830249 4.5362883 -1.9113673 --3.658088 4.5625014 -1.9129522 --3.6253138 4.5789127 -1.9104165 --3.600071 4.6048064 -1.9120013 --3.5787041 4.635818 -1.915805 --3.5599668 4.6705117 -1.9211935 --3.526679 4.6862054 -1.9186578 --3.4961617 4.7054725 -1.9177068 --3.4672236 4.7268362 -1.9177068 --3.4270287 4.7326589 -1.9113673 --3.3935125 4.7474251 -1.9088316 --3.3517416 4.7503347 -1.9015411 --3.3268676 4.7770376 -1.9040769 --3.3050158 4.8083029 -1.9085146 --3.2690604 4.8190732 -1.9047109 --3.240485 4.8406172 -1.9053448 --3.2101996 4.8596182 -1.9050279 --3.1891263 4.8927307 -1.9104165 --3.1569929 4.9090161 -1.9091486 --3.1176653 4.9138799 -1.903443 --3.0889654 4.935329 -1.9043939 --3.0436757 4.9299798 -1.8948847 --3.0340886 4.982584 -1.9081976 --2.9990637 4.9937897 -1.9053448 --2.9625657 5.002305 -1.9015411 --2.9389915 5.0326734 -1.9062958 --2.9028499 5.0415711 -1.902809 --2.8812258 5.0757837 -1.9091486 --2.8486376 5.0908842 -1.9081976 --2.8187213 5.1107583 -1.9091486 --2.7873092 5.1279578 -1.9091486 --2.7544487 5.1424556 -1.9081976 --2.7241714 5.1617761 -1.9091486 --2.6959486 5.1851258 -1.9116843 --2.6649475 5.2032585 -1.9123182 --2.6274168 5.2085042 -1.9081976 --2.5970967 5.2279253 -1.9094656 --2.5670538 5.2480221 -1.9110503 --2.5298655 5.2534208 -1.9072467 --2.4886446 5.2499909 -1.9002733 --2.4603949 5.273757 -1.903443 --2.4279892 5.288754 -1.903443 --2.3990066 5.3113313 -1.9062958 --2.3733046 5.3415523 -1.9120013 --2.3416243 5.3586211 -1.9129522 --2.3109474 5.3781166 -1.914854 --2.2767968 5.3895741 -1.9139031 --2.2378638 5.3894281 -1.9088316 --2.2065449 5.4074488 -1.9104165 --2.1683819 5.4085617 -1.9059788 --2.1452348 5.4473557 -1.915171 --2.1138229 5.4657235 -1.9170729 --2.0711544 5.4546514 -1.9085146 --2.0373149 5.4663687 -1.9081976 --2.0073197 5.488564 -1.9116843 --1.9739251 5.5016704 -1.9120013 --1.9401304 5.5136786 -1.9120013 --1.9056438 5.5236859 -1.9113673 --1.8692843 5.5280871 -1.9088316 --1.8293623 5.5214472 -1.902492 --1.7942777 5.5289598 -1.9012241 --1.7588824 5.5353456 -1.8996394 --1.7240398 5.5433168 -1.8986884 --1.6924797 5.5619569 -1.9015411 --1.6594027 5.5758734 -1.902809 --1.6262187 5.5895929 -1.9040769 --1.5965605 5.6158867 -1.9097825 --1.568925 5.6502509 -1.9183408 --1.5381975 5.6744175 -1.9234123 --1.5069897 5.6975021 -1.928167 --1.4717652 5.7057233 -1.92785 --1.4374218 5.7174058 -1.9288009 --1.3923841 5.6855855 -1.914854 --1.362312 5.7143183 -1.9218274 --1.3297961 5.7336564 -1.9256312 --1.2885385 5.7148771 -1.9164389 --1.2530425 5.7208233 -1.915805 --1.2173246 5.7256207 -1.914854 --1.1746974 5.6967564 -1.902492 --1.1475285 5.7429185 -1.915805 --1.1111878 5.7442641 -1.9139031 --1.0771421 5.7575002 -1.916122 --1.040782 5.7584009 -1.9142201 --1.0057555 5.7665477 -1.914854 --0.97460049 5.797863 -1.9234123 --0.94264418 5.8262043 -1.9310197 --0.90702337 5.8328156 -1.9313366 --0.86813581 5.8176341 -1.9243633 --0.83604884 5.8482013 -1.9329215 --0.80130595 5.8616781 -1.9357743 --0.76606077 5.8721275 -1.9376762 --0.72966474 5.8738937 -1.9367253 --0.69327587 5.8754344 -1.9357743 --0.65742266 5.8814631 -1.9364083 --0.62092376 5.8816133 -1.9351404 --0.58247697 5.8617182 -1.9272161 --0.5476439 5.8774581 -1.9313366 --0.50869107 5.8476377 -1.9202427 --0.47188357 5.8393049 -1.9164389 --0.43703458 5.8553314 -1.9208765 --0.40025562 5.845602 -1.9167559 --0.36573821 5.8697195 -1.9240463 --0.3299816 5.8765879 -1.9256312 --0.2940596 5.8813438 -1.9265821 --0.25796682 5.8830371 -1.9265821 --0.22075458 5.8551288 -1.9167559 --0.18575348 5.8857598 -1.9265821 --0.1498048 5.8934259 -1.9288009 --0.11387911 5.9065614 -1.9329215 --0.077033624 5.8616281 -1.9177068 --0.041327558 5.8989782 -1.9300689 --0.0051153149 5.8820491 -1.9243633 -0.03071015 5.8307552 -1.9072467 -0.066722892 5.8513212 -1.9142201 -0.1026081 5.849853 -1.9139031 -0.13876882 5.8604918 -1.9177068 -0.17489474 5.8652177 -1.9196087 -0.2111519 5.8716168 -1.9221444 -0.24689665 5.8635774 -1.9199257 -0.28296155 5.8638468 -1.9205596 -0.31862733 5.856318 -1.9186578 -0.35409686 5.8466792 -1.916122 -0.38983858 5.8425035 -1.915488 -0.42650679 5.8513527 -1.9192917 -0.46202856 5.8438983 -1.9177068 -0.49852124 5.8485136 -1.9202427 -0.53396624 5.8406219 -1.9186578 -0.57154304 5.8551707 -1.9246802 -0.60755682 5.8524971 -1.9249972 -0.64469945 5.859972 -1.9288009 -0.678783 5.83989 -1.9234123 -0.71794438 5.8629165 -1.9326046 -0.74979138 5.8264174 -1.9218274 -0.78425992 5.8123078 -1.9186578 -0.82388449 5.8355603 -1.928167 -0.85206968 5.7787886 -1.9107335 -0.8859272 5.7631397 -1.9072467 -0.92247081 5.7650876 -1.9097825 -0.95751631 5.7574477 -1.9091486 -0.99363166 5.7561374 -1.9107335 -1.0301009 5.7564673 -1.9129522 -1.0648844 5.7472405 -1.9120013 -1.1006641 5.7433929 -1.9129522 -1.1355158 5.7346706 -1.9123182 -1.1704919 5.726666 -1.9120013 -1.2050214 5.7165918 -1.9110503 -1.2394712 5.7063103 -1.9100995 -1.2790138 5.7189603 -1.9170729 -1.3142931 5.7119288 -1.9173899 -1.3471334 5.6945271 -1.9142201 -1.3798096 5.6769381 -1.9110503 -1.4134687 5.663764 -1.9094656 -1.4481943 5.6549845 -1.9094656 -1.4821428 5.64324 -1.9085146 -1.5123044 5.6175542 -1.902809 -1.5495178 5.6182265 -1.9062958 -1.5790648 5.5912709 -1.9002733 -1.6064967 5.5577865 -1.8920319 -1.6424506 5.5541916 -1.8942508 -1.6723826 5.5303912 -1.8894962 -1.7085252 5.5272746 -1.8920319 -1.7449781 5.524827 -1.8948847 -1.7823384 5.524848 -1.8986884 -1.822138 5.5318246 -1.9050279 -1.8545353 5.5160451 -1.903443 -1.8905001 5.5108418 -1.9056618 -1.9355533 5.5313663 -1.9170729 -1.958303 5.488121 -1.9059788 -1.9925889 5.4777842 -1.9066128 -2.0225365 5.4556723 -1.903126 -2.0546336 5.4396105 -1.9018581 -2.0906959 5.4339828 -1.9043939 -2.1271122 5.4289999 -1.9072467 -2.1631947 5.422894 -1.9097825 -2.1925039 5.3998518 -1.9062958 -2.2266819 5.388927 -1.9072467 -2.2534583 5.3602991 -1.9018581 -2.2922719 5.3603244 -1.9069297 -2.3254972 5.3470283 -1.9072467 -2.3375516 5.2858176 -1.8901302 -2.3816061 5.2973266 -1.8996394 -2.3975108 5.2463822 -1.8863264 -2.4428382 5.2599597 -1.8967866 -2.4718292 5.2380099 -1.8942508 -2.4973631 5.2090602 -1.8891792 -2.5292783 5.1936388 -1.8891792 -2.5636206 5.1831226 -1.8910811 -2.5966523 5.1698375 -1.8920319 -2.6339257 5.1647916 -1.8961526 -2.6642587 5.1460061 -1.8952017 -2.6971073 5.1320806 -1.8961526 -2.7285464 5.1154346 -1.8961526 -2.7594314 5.0977621 -1.8958356 -2.7933979 5.0857229 -1.8977375 -2.8259356 5.0709724 -1.8986884 -2.8611977 5.0609684 -1.9015411 -2.8936126 5.0457854 -1.902492 -2.921181 5.0221963 -1.9002733 -2.9485688 4.9984593 -1.8980545 -2.9791832 4.9802732 -1.8980545 -3.0091937 4.9610887 -1.8977375 -3.0410681 4.9449549 -1.8986884 -3.0728576 4.928617 -1.8996394 -3.105068 4.9128761 -1.9009073 -3.1505013 4.9176908 -1.9104165 -3.1635733 4.872016 -1.8999563 -3.1928866 4.8517208 -1.8996394 -3.2210174 4.8296709 -1.8986884 -3.2537773 4.8145313 -1.9005903 -3.2811141 4.7913456 -1.8993224 -3.3077483 4.7672262 -1.8977375 -3.3374827 4.7476168 -1.8980545 -3.3560979 4.7123699 -1.8920319 -3.3932724 4.7032266 -1.8967866 -3.4215074 4.6815515 -1.8964696 -3.4552469 4.6673303 -1.8993224 -3.476424 4.6361761 -1.8952017 -3.5025113 4.6117368 -1.8939338 -3.5272732 4.5856481 -1.8920319 -3.5594234 4.5691566 -1.8942508 -3.5962029 4.5584002 -1.8990054 -3.6270647 4.5399537 -1.9005903 -3.6602213 4.5242496 -1.903443 -3.6867108 4.5002379 -1.902809 -3.7154653 4.478992 -1.903443 -3.7508073 4.4655519 -1.9075637 -3.7793655 4.4438982 -1.9081976 -3.7917101 4.4033751 -1.9005903 -3.8230197 4.3850312 -1.902809 -3.8354194 4.3451357 -1.8955187 -3.864536 4.3243494 -1.8967866 -3.8986323 4.3089957 -1.9005903 -3.9243579 4.2842937 -1.9002733 -3.9628241 4.2733474 -1.9062958 -3.9766371 4.2358131 -1.9002733 -3.9973261 4.205833 -1.8977375 -4.034893 4.1935296 -1.903443 -4.0605483 4.1686931 -1.903443 -4.0873823 4.14505 -1.9040769 -4.1268091 4.1339893 -1.9107335 -4.1527715 4.1092567 -1.9110503 -4.171803 4.0777316 -1.9081976 -4.1926517 4.0481043 -1.9062958 -4.2187839 4.0236115 -1.9069297 -4.2364902 3.9911458 -1.90376 -4.2588167 3.9631376 -1.902809 -4.283752 3.9375732 -1.903126 -4.3148532 3.9175904 -1.9062958 -4.3303375 3.8834419 -1.902492 -4.355504 3.8580563 -1.903126 -4.3705297 3.8237641 -1.8993224 -4.4053907 3.8067977 -1.9043939 -4.4286661 3.779695 -1.9043939 -4.4546747 3.7548954 -1.9056618 -4.4798174 3.7293119 -1.9066128 -4.501883 3.7011516 -1.9062958 -4.5230355 3.6722634 -1.9056618 -4.544003 3.6432548 -1.9050279 -4.5670156 3.6158934 -1.9053448 -4.5921049 3.5901394 -1.9066128 -4.6087923 3.557838 -1.9043939 -4.6214848 3.5225921 -1.9005903 -4.6377077 3.4901762 -1.8983715 -4.6597972 3.46222 -1.8986884 -4.6847768 3.4363678 -1.9002733 -4.7019329 3.4047763 -1.8986884 -4.7373948 3.3863418 -1.9047109 -4.7503347 3.3517416 -1.9015411 -4.7708116 3.322531 -1.9015411 -4.7887635 3.2915833 -1.9005903 -4.8182883 3.268528 -1.9043939 -4.8414054 3.2410126 -1.9056618 -4.8659487 3.2143822 -1.9075637 -4.8879638 3.1860187 -1.9085146 -4.9034324 3.1534014 -1.9069297 -4.9210873 3.1222389 -1.9062958 -4.942564 3.0934944 -1.9072467 -4.9606452 3.0626109 -1.9069297 -4.982584 3.0340886 -1.9081976 -4.9913507 2.9975986 -1.9043939 -5.0104656 2.9673994 -1.9047109 -5.0293975 2.9370782 -1.9050279 -5.051434 2.9085295 -1.9066128 -5.0609374 2.8727973 -1.903443 -5.0768142 2.8407636 -1.902809 -5.0958099 2.8104756 -1.903443 -5.1204581 2.7832322 -1.9062958 -5.1315875 2.7486262 -1.9040769 -5.1592598 2.7228432 -1.9081976 -5.1834431 2.6950736 -1.9110503 -5.2049465 2.6658123 -1.9129522 -5.2237463 2.6351068 -1.9139031 -5.2381177 2.6021609 -1.9132692 -5.2522817 2.5691378 -1.9126352 -5.2611108 2.5335696 -1.9100995 -5.2705588 2.4983959 -1.9078807 -5.2866488 2.4664104 -1.9081976 -5.3008208 2.4335301 -1.9078807 -5.3199749 2.4029114 -1.9094656 -5.3380852 2.3717639 -1.9107335 -5.3507996 2.3382058 -1.9100995 -5.362432 2.3042064 -1.9091486 -5.3799639 2.2727363 -1.9104165 -5.3929319 2.2393188 -1.9100995 -5.4144735 2.2094119 -1.9129522 -5.4367313 2.1796777 -1.916122 -5.4464736 2.1448872 -1.914854 -5.464839 2.1134808 -1.9167559 -5.4883442 2.0839503 -1.9205596 -5.4903631 2.0462596 -1.9167559 -5.5063782 2.0138364 -1.9180238 -5.5230947 1.9816136 -1.9196087 -5.5324659 1.9467427 -1.9186578 -5.5460997 1.9133782 -1.9192917 -5.5469546 1.8756655 -1.915488 -5.5610595 1.8424897 -1.9164389 -5.5695539 1.8074546 -1.915488 -5.5841551 1.7743956 -1.9167559 -5.6021824 1.7423522 -1.9192917 -5.6127677 1.7079451 -1.9192917 -5.627687 1.6748266 -1.9208765 -5.6424108 1.6415893 -1.9224614 -5.6551142 1.6077155 -1.9234123 -5.6648722 1.5729861 -1.9234123 -5.6707559 1.5372047 -1.9221444 -5.6791644 1.502138 -1.9218274 -5.6901112 1.467737 -1.9224614 -5.6898117 1.4304824 -1.9192917 -5.6920338 1.3939637 -1.9170729 -5.7032475 1.3596718 -1.9180238 -5.7087111 1.3240088 -1.9170729 -5.7213535 1.2899992 -1.9186578 -5.7291613 1.2548693 -1.9186578 -5.7506685 1.2226518 -1.9234123 -5.7664223 1.1890678 -1.9262651 -5.7736096 1.1536633 -1.9262651 -5.7833729 1.1187559 -1.9272161 -5.7854676 1.0823764 -1.9256312 -5.792933 1.0470258 -1.9259481 -5.7927084 1.0103202 -1.9237293 -5.8006692 0.97507238 -1.9243633 -5.8149691 0.94082564 -1.9272161 -5.8196955 0.90498221 -1.9268991 -5.8373332 0.87107676 -1.9310197 -5.8106461 0.83067745 -1.9202427 -5.8475828 0.7993781 -1.9310197 -5.8504968 0.76323742 -1.9303857 -5.8080101 0.72147602 -1.9145371 -5.8500037 0.69027334 -1.9272161 -5.8513012 0.6540491 -1.9262651 -5.8618064 0.61883134 -1.928484 -5.8683248 0.58313388 -1.9294349 -5.8746252 0.54737973 -1.9303857 -5.874094 0.51099437 -1.9291179 -5.8856268 0.4756301 -1.9319706 -5.8884344 0.43950763 -1.9319706 -5.8938589 0.40356317 -1.9329215 -5.8820252 0.36650583 -1.928167 -5.8983674 0.33120605 -1.9329215 -5.8974471 0.29486585 -1.9319706 -5.8953552 0.25850779 -1.9307027 -5.8892484 0.22204332 -1.928167 -5.8886037 0.18584344 -1.927533 -5.8943739 0.14982897 -1.9291179 -5.8913894 0.11358555 -1.92785 -5.8986139 0.077522233 -1.9300689 -5.9027719 0.041354395 -1.9313366 -5.9057598 0.0051375586 -1.9322876 -5.9066286 -0.031104529 -1.9326046 -5.9034815 -0.067314088 -1.9316536 -5.9029574 -0.10353591 -1.9316536 -5.89747 -0.1396419 -1.9300689 -5.8993464 -0.17591007 -1.9310197 -5.8848863 -0.21162818 -1.9265821 -5.8796868 -0.24757385 -1.9253142 -5.8856359 -0.28401145 -1.92785 -5.8837824 -0.32011968 -1.92785 -5.8854942 -0.35644495 -1.9291179 -5.887928 -0.39286634 -1.9307027 -5.8891902 -0.42926213 -1.9319706 -5.8892817 -0.46561351 -1.9329215 -5.8938742 -0.5023846 -1.9354573 -5.8954029 -0.53897071 -1.9370422 -5.8882093 -0.57476574 -1.9357743 -5.8845716 -0.61088431 -1.9357743 -5.8797698 -0.64687622 -1.9354573 -5.8643847 -0.68162835 -1.9316536 -5.8610334 -0.71771395 -1.9319706 -5.8452311 -0.75221115 -1.928167 -5.8433251 -0.78844297 -1.9291179 -5.8411951 -0.82467967 -1.9300689 -5.8519759 -0.86285585 -1.9354573 -5.83251 -0.89658606 -1.9307027 -5.8334546 -0.93340534 -1.9329215 -5.8360376 -0.97058094 -1.9357743 -5.8168879 -1.0041142 -1.9313366 -5.8236876 -1.042125 -1.9357743 -5.803195 -1.075248 -1.9310197 -5.8011456 -1.1117277 -1.9326046 -5.8007278 -1.148591 -1.9348234 -5.7972879 -1.1849215 -1.9360913 -5.7676349 -1.2157772 -1.928484 -5.781384 -1.2557726 -1.9357743 -5.7994862 -1.2970171 -1.9446496 -5.7692356 -1.327475 -1.9370422 -5.7388301 -1.3576107 -1.9294349 -5.7313137 -1.3930218 -1.9297519 -5.720818 -1.4277031 -1.9291179 -5.7321634 -1.4679536 -1.9360913 -5.733139 -1.5057473 -1.9395781 -5.7173815 -1.5391715 -1.9373592 -5.697772 -1.5714506 -1.9338725 -5.704452 -1.6110206 -1.9395781 -5.6935482 -1.6457288 -1.9392611 -5.6733384 -1.677675 -1.9357743 -5.6711082 -1.7149246 -1.9386271 -5.6523237 -1.7471693 -1.9357743 -5.6315484 -1.778677 -1.9322876 -5.619626 -1.8129069 -1.9319706 -5.593082 -1.8423109 -1.9265821 -5.5942583 -1.8808253 -1.9310197 -5.5431385 -1.9015771 -1.9170729 -5.5259953 -1.9336742 -1.915171 -5.4613218 -1.9487425 -1.8964696 -5.3913264 -1.9611458 -1.8758663 -5.2973742 -1.9638646 -1.8467047 -5.2027082 -1.9651703 -1.8172262 -5.1533737 -1.9827553 -1.8039134 -5.0872416 -1.9932367 -1.784578 -5.0167727 -2.0012252 -1.7636577 -4.9701262 -2.0180569 -1.7512957 -4.9208336 -2.0333056 -1.7379827 -4.8829093 -2.0528035 -1.7287905 -4.8396993 -2.0696757 -1.7176964 -4.7921181 -2.0842047 -1.7050176 -4.7896485 -2.1181717 -1.7088212 -4.767911 -2.1436319 -1.7056515 -4.7262006 -2.1598401 -1.6951914 -4.705977 -2.1856034 -1.6926556 -4.559526 -2.1517086 -1.6435246 -4.3709102 -2.0956032 -1.5785451 -4.4099855 -2.1477103 -1.5978805 -4.2564483 -2.1053593 -1.5455798 -4.2646389 -2.1420774 -1.5535041 -4.1238298 -2.1031499 -1.5056411 -4.0493612 -2.0965858 -1.4825021 -4.0960312 -2.152715 -1.5050071 -4.1229148 -2.19923 -1.5202219 -4.1493802 -2.2461548 -1.5354366 -4.2352786 -2.3263576 -1.5734735 -4.0461097 -2.2548964 -1.506592 -4.0751319 -2.3039494 -1.5230746 -4.0633869 -2.3303258 -1.5240256 -3.7251635 -2.1668768 -1.398821 -3.5467782 -2.0923643 -1.3347924 -3.4801517 -2.0819569 -1.3138721 -3.4283857 -2.0796642 -1.2986574 -3.3614299 -2.0673771 -1.2774202 -3.3124628 -2.0653856 -1.2631563 -3.2644501 -2.0633786 -1.2492095 -3.1606829 -2.0250514 -1.2130744 -3.1195605 -2.0258143 -1.2016635 -3.0880563 -2.0324054 -1.194056 -3.0786839 -2.0534198 -1.1953239 -3.0463803 -2.0589964 -1.1873996 -3.9782534 -2.7243912 -1.5699868 -2.9803619 -2.0681131 -1.170917 -2.9288192 -2.0590918 -1.1550683 -2.8775008 -2.0495169 -1.1392196 -2.8441031 -2.0521529 -1.1306614 -2.8153768 -2.0578141 -1.124005 -2.7744913 -2.0541725 -1.1122769 -2.7413461 -2.0557964 -1.1037186 -2.7082863 -2.0570917 -1.0951604 -2.6865916 -2.0667324 -1.0913566 -2.674608 -2.0837607 -1.0916736 -2.6558149 -2.0954337 -1.0891378 -2.6636565 -2.1282644 -1.098013 -2.66677 -2.1576908 -1.1049864 -2.6556816 -2.1758161 -1.1059374 -2.645931 -2.1950974 -1.1075222 -2.6287811 -2.2082415 -1.1059374 -2.6130145 -2.2224867 -1.1049864 -2.5835159 -2.224864 -1.098013 -2.5262048 -2.2026582 -1.0786777 -2.4920204 -2.1999171 -1.0694854 -2.4685738 -2.2063191 -1.0650479 -2.4275591 -2.19661 -1.0526859 -2.4112377 -2.2089014 -1.0514179 -2.3969433 -2.2230101 -1.051101 -2.391556 -2.245465 -1.0549047 -2.3859835 -2.2679372 -1.0587083 -2.3733897 -2.2838497 -1.0593423 -2.3538959 -2.2930756 -1.0568064 -2.3559904 -2.323457 -1.0644139 -2.3557863 -2.3519397 -1.0710703 -2.332638 -2.3575866 -1.0669496 -2.316802 -2.3704987 -1.0663157 -2.3008957 -2.3833051 -1.0656818 -2.2855742 -2.396692 -1.0653648 -2.2805812 -2.4210253 -1.0701194 -2.2792525 -2.4495528 -1.0767758 -2.255193 -2.4537168 -1.0723382 -2.2413702 -2.4689124 -1.0729722 -2.2173133 -2.472734 -1.0685345 -2.1775711 -2.458606 -1.0561726 -2.1649425 -2.474776 -1.0574404 -2.150337 -2.4887309 -1.0577574 -2.1301 -2.4961073 -1.0552217 -2.1233025 -2.5192823 -1.0596592 -2.1078043 -2.5322633 -1.0596592 -2.1012626 -2.5561376 -1.0644139 -2.0771687 -2.5586748 -1.0599762 -2.06499 -2.5758114 -1.0618781 -2.0473797 -2.5862029 -1.0609272 -2.0384831 -2.6076825 -1.0647309 -2.0154891 -2.6111326 -1.0609272 -2.0120792 -2.640044 -1.0679005 -2.0072496 -2.6674955 -1.0742401 -2.0032897 -2.6965094 -1.0812135 -0 -0 -0 -1.9628165 -2.7109039 -1.0770928 -1.9395267 -2.7136378 -1.0732892 -1.9080749 -2.7045648 -1.0647309 -1.8800603 -2.6998785 -1.0580744 -1.8747419 -2.7277763 -1.0647309 -1.8483846 -2.725101 -1.0590253 -1.8252969 -2.726934 -1.0552217 -1.7991197 -2.7238386 -1.0495161 -1.7870343 -2.7419772 -1.0523689 -1.7747937 -2.7600696 -1.0552217 -1.7563004 -2.7685051 -1.0542707 -1.7468287 -2.7912881 -1.0590253 -1.7236892 -2.7922702 -1.0552217 -1.7124437 -2.8125143 -1.0590253 -1.7010145 -2.8327253 -1.062829 -1.6749008 -2.8284206 -1.0571234 -1.6575143 -2.8386445 -1.0571234 -1.6500051 -2.8660212 -1.06378 -1.6328567 -2.8769162 -1.0640969 -1.6147103 -2.8860533 -1.06378 -1.6001781 -2.90172 -1.0659988 -1.5895913 -2.9248161 -1.0710703 -1.5751981 -2.9412026 -1.0736061 -1.5602206 -2.9566839 -1.0758249 -1.5468627 -2.9754577 -1.0793116 -1.5307386 -2.9891136 -1.0808965 -1.5110873 -2.9959095 -1.0799456 -1.4888781 -2.9974806 -1.0770928 -1.4654564 -2.9963365 -1.0732892 -1.4458089 -3.0027084 -1.0723382 -1.4176059 -2.9909554 -1.0647309 -1.3827841 -2.964359 -1.0517349 -1.3859404 -3.0193312 -1.0688515 -1.3755879 -3.0459294 -1.075508 -1.3599539 -3.0612462 -1.0780437 -1.3403852 -3.0677948 -1.0774097 -1.3211617 -3.0750902 -1.0770928 -1.2989463 -3.0752759 -1.0742401 -1.2735044 -3.0674222 -1.0685345 -1.2550174 -3.0760565 -1.0688515 -1.2474154 -3.1118689 -1.0789946 -1.2178702 -3.0929909 -1.0694854 -1.200922 -3.1057127 -1.0713873 -1.1835268 -3.1174562 -1.0729722 -1.1686828 -3.1362123 -1.0770928 -1.14844 -3.1406522 -1.0761418 -1.1253034 -3.1369274 -1.0723382 -1.1123319 -3.1616659 -1.0786777 -1.0891987 -3.1576729 -1.074874 -1.0773998 -3.1867576 -1.0827984 -1.0625997 -3.2077129 -1.0878699 -1.0431902 -3.2150748 -1.0881869 -1.0277525 -3.2349732 -1.0929415 -1.0233788 -3.2910278 -1.110375 -0.98935789 -3.2518785 -1.0945264 -0.96830374 -3.2542517 -1.0932585 -0.94354755 -3.2437401 -1.0875529 -0.93218744 -3.2795732 -1.098013 -0.91204679 -3.2852314 -1.098013 -0.89038259 -3.2852736 -1.0961112 -0.85419726 -3.2301605 -1.075191 -0.82251364 -3.1894228 -1.0593423 -0.77586454 -3.0867939 -1.0222564 -0.74765742 -3.0537271 -1.0092604 -0.74364662 -3.120069 -1.0304977 -0.72727472 -3.136584 -1.0346184 -0.71657079 -3.1789203 -1.0476142 -0.71126115 -3.2481093 -1.0698024 -0.69289619 -3.2598338 -1.0723382 -0.67633009 -3.2807438 -1.0780437 -0.6556294 -3.2820418 -1.0770928 -0.63674015 -3.292521 -1.0793116 -0.61408299 -3.2833145 -1.074874 -0.59780669 -3.3084865 -1.0821644 -0.57667983 -3.3074207 -1.0805795 -0.55448759 -3.2996733 -1.0767758 -0.53513998 -3.3086309 -1.0786777 -0.52022302 -3.3465271 -1.0904057 -0.50079972 -3.3571606 -1.0929415 -0.47898254 -3.3517203 -1.0900887 -0.45622286 -3.3386216 -1.0847002 -0.43671092 -3.3488817 -1.0872359 -0.41755813 -3.3627925 -1.0910397 -0.39713895 -3.3671751 -1.0916736 -0.37868476 -3.3893423 -1.09833 -0.36186653 -3.4293294 -1.111009 -0.34288239 -3.4522483 -1.1179824 -0.32098889 -3.4467325 -1.1154466 -0.3002454 -3.4533615 -1.1170315 -0.27759758 -3.4371772 -1.111009 -0.255725 -3.428412 -1.1075222 -0.23487839 -3.4327552 -1.1084732 -0.21363385 -3.4312921 -1.1075222 -0.19278876 -3.436326 -1.1087902 -0.17151053 -3.4336553 -1.1075222 -0.15043879 -3.434643 -1.1075222 -0.12875281 -3.4193895 -1.1021338 -0.10689992 -3.3926244 -1.0929415 -0.085767001 -3.3808906 -1.0888208 -0.064653687 -3.3623881 -1.0824814 -0.04392102 -3.3551347 -1.0799456 -0.023367019 -3.3600831 -1.0815305 -0.0027592839 -3.3705962 -1.0850172 --0.017991373 -3.3838274 -1.0894548 --0.038936544 -3.3997757 -1.0948434 --0.060028393 -3.4127488 -1.099281 --0.08121375 -3.4227462 -1.1027677 --0.10362398 -3.4695842 -1.1186163 --0.1237203 -3.4357092 -1.1075222 --0.14603397 -3.4642608 -1.1173484 --0.16765271 -3.4708784 -1.1198843 --0.19064467 -3.5010364 -1.1303444 --0.20874408 -3.4439454 -1.111643 --0.22961949 -3.4388144 -1.110375 --0.24933764 -3.418422 -1.1040356 --0.27015862 -3.4149368 -1.1034017 --0.29110721 -3.4132149 -1.1034017 --0.31601387 -3.4548116 -1.1179824 --0.33720624 -3.4528074 -1.1179824 --0.36073473 -3.4733143 -1.1255897 --0.38774079 -3.522887 -1.1430234 --0.40967783 -3.5232677 -1.1439742 --0.43232542 -3.5291605 -1.146827 --0.45215696 -3.512331 -1.1420724 --0.47686869 -3.5329885 -1.1499968 --0.72594917 -5.1415429 -1.6939235 --0.75568569 -5.124794 -1.6898028 --0.78942126 -5.1350598 -1.6948744 --0.8176192 -5.1095157 -1.6879009 --0.84786648 -5.0978532 -1.6856822 --0.87767893 -5.0841436 -1.6828294 --0.90935916 -5.0814633 -1.6837803 --0.94034857 -5.0748553 -1.6834633 --0.97057736 -5.0643325 -1.6818784 --1.0018173 -5.0592122 -1.6821954 --1.0336007 -5.0566869 -1.6834633 --1.0648041 -5.0511775 -1.6837803 --1.0953749 -5.0426955 -1.6831464 --1.1300206 -5.0525398 -1.6888518 --1.1544102 -5.0168576 -1.6790257 --1.1838616 -5.0041423 -1.6771239 --1.2136484 -4.9930973 -1.675856 --1.2465585 -4.9947591 -1.6790257 --1.2715368 -4.9649649 -1.6714183 --1.3084806 -4.9818377 -1.6799766 --1.3360661 -4.9627252 -1.676173 --1.3662397 -4.9535193 -1.675856 --1.3899077 -4.9213114 -1.6676147 --1.1633577 -4.0243168 -1.3585653 --1.1880286 -4.0171027 -1.3585653 --1.4497919 -4.7941222 -1.6324306 --1.4920622 -4.8268194 -1.6470114 --1.5342166 -4.8573675 -1.6609582 --1.5674856 -4.8586941 -1.6647619 --1.5856986 -4.8138518 -1.6523999 --1.6197388 -4.8175168 -1.6571546 --1.6504987 -4.8110762 -1.6584224 --1.6809275 -4.803544 -1.6593733 --1.7119633 -4.797606 -1.6609582 --1.7416928 -4.7879028 -1.6612751 --1.7726861 -4.7815723 -1.66286 --1.8060127 -4.7812524 -1.6666638 --1.837359 -4.7753921 -1.6685655 --1.8707768 -4.7746258 -1.6723692 --1.8951193 -4.7507234 -1.6679317 --1.2121755 -2.9849517 -1.0352523 --1.2308301 -2.9783344 -1.0355693 --1.2505516 -2.9742234 -1.0368372 --2.02195 -4.7280741 -1.6771239 --2.0520575 -4.7181878 -1.6780747 --2.103981 -4.7575536 -1.6970932 --2.1339109 -4.7462845 -1.6977271 --2.1598401 -4.7262006 -1.6951914 --1.5752703 -3.3915586 -1.2083199 --1.5915991 -3.3723938 -1.2048331 --1.6065223 -3.3505907 -1.2003956 --1.6266357 -3.3398175 -1.2000786 --1.6458366 -3.3272233 -1.1991277 --1.6645185 -3.3136718 -1.1978598 --1.683527 -3.3008614 -1.1969088 --1.7168291 -3.3157375 -1.206418 --1.749053 -3.3278098 -1.2149763 --1.7779189 -3.3329155 -1.2209989 --2.2443492 -4.1460438 -1.5341687 --2.5098865 -4.5694709 -1.7008969 --2.525413 -4.5316148 -1.6923386 --2.5396364 -4.4920897 -1.6831464 --2.5728128 -4.4862957 -1.6869501 --2.6107814 -4.4884615 -1.6939235 --2.6320093 -4.4617376 -1.6898028 --2.6588495 -4.4446902 -1.6894858 --2.6895142 -4.4339685 -1.6917046 --2.7295864 -4.4383883 -1.6999459 --2.7467337 -4.4054594 -1.6936065 --2.7691536 -4.3813071 -1.6907537 --2.7929151 -4.3594413 -1.6888518 --2.8046343 -4.3191533 -1.6796596 --2.8284767 -4.2979016 -1.6780747 --2.8584781 -4.2859893 -1.6802936 --2.8985291 -4.2888012 -1.6885349 --2.9194317 -4.2631097 -1.6853652 --2.9217477 -4.2108283 -1.6714183 --2.9606192 -4.2114439 -1.6790257 --2.9748514 -4.1769743 -1.6723692 --2.9937663 -4.1494122 -1.6685655 --3.0197299 -4.1317306 -1.6688825 --3.0427678 -4.1100745 -1.6676147 --3.0576887 -4.0776682 -1.6619091 --2.2561238 -2.9703884 -1.2051501 --2.2748854 -2.9572411 -1.2054671 --2.298816 -2.9507093 -1.2086369 --3.14979 -3.9924648 -1.6581055 --3.1724522 -3.9708397 -1.6571546 --3.2086868 -3.966047 -1.663494 --3.2329617 -3.9462841 -1.663494 --3.261353 -3.9314828 -1.6657128 --3.2835848 -3.9092188 -1.6647619 --3.2903066 -3.8687668 -1.6558867 --3.3152206 -3.8499424 -1.6565206 --3.336288 -3.8266683 -1.6552527 --3.372257 -3.8203471 -1.6615921 --3.381732 -3.7840245 -1.6546187 --3.4067955 -3.7653131 -1.6555697 --3.4215076 -3.7352462 -1.651449 --3.4462967 -3.7162683 -1.6523999 --3.4709818 -3.6971269 -1.6533508 --3.4981749 -3.6805723 -1.6555697 --3.5318708 -3.6706579 -1.6609582 --3.5324903 -3.6264961 -1.650498 --3.5553412 -3.6054282 -1.650815 --3.5539463 -3.5600505 -1.6397209 --3.5844872 -3.54685 -1.6438416 --3.6082172 -3.5267782 -1.6447926 --3.6366119 -3.5111604 -1.6479623 --3.6601462 -3.4907444 -1.6489131 --3.6828768 -3.4695213 -1.6495471 --3.6992362 -3.4423351 -1.6473284 --3.7195902 -3.4189303 -1.6470114 --3.7426047 -3.3979557 -1.6479623 --3.7633836 -3.3749275 -1.6479623 --3.7847309 -3.3524013 -1.6482793 --3.792382 -3.3178735 -1.6425737 --3.8169742 -3.2982624 -1.6444756 --3.87393 -3.3061831 -1.6606412 --3.8752899 -3.2664568 -1.6523999 --3.8777666 -3.2280524 -1.6447926 --3.9150825 -3.2186551 -1.6523999 --3.9251866 -3.1867998 -1.6482793 --3.9520657 -3.1685886 -1.651449 --3.973664 -3.1460459 -1.6523999 --3.9928932 -3.1216047 -1.6523999 --4.0172267 -3.1011033 -1.6546187 --4.0437217 -3.0821457 -1.6577885 --4.0663462 -3.0601275 -1.6593733 --4.0896139 -3.0385134 -1.6612751 --4.1051221 -3.0111189 -1.6600072 --4.1373472 -2.9958873 -1.6657128 --4.1564231 -2.9709961 -1.6660298 --4.1830988 -2.9514523 -1.6695164 --4.2081342 -2.9306083 -1.6723692 --4.2260365 -2.9047325 -1.6723692 --4.2563376 -2.8872671 -1.6774409 --4.2913117 -2.872705 -1.6844143 --4.3049011 -2.8437059 -1.6828294 --4.3246522 -2.8187916 -1.6837803 --4.3370805 -2.7891247 -1.6818784 --4.369328 -2.7721155 -1.6879009 --4.398314 -2.7528021 -1.6926556 --4.4264197 -2.732739 -1.6970932 --4.4479642 -2.7084875 -1.698995 --4.4783211 -2.6894464 -1.7043836 --4.4931068 -2.6609504 -1.7037497 --4.5199962 -2.6395497 -1.7078702 --4.546792 -2.6179187 -1.711991 --4.5602951 -2.5885663 -1.71104 --4.5909901 -2.5688734 -1.7167455 --4.6124792 -2.5438619 -1.7189643 --4.6413331 -2.5227604 -1.724036 --4.6692657 -2.5009522 -1.7287905 --4.6971049 -2.4788961 -1.7335452 --4.729897 -2.4592178 -1.7402016 --4.7474298 -2.4314466 -1.7411525 --4.7791948 -2.4108155 -1.747492 --4.8100352 -2.3894639 -1.7535145 --4.8152351 -2.3553202 -1.7500278 --4.8424134 -2.3319037 -1.7547824 --4.8677716 -2.3074293 -1.758903 --4.8921518 -2.2823303 -1.7627068 --4.9207163 -2.2589977 -1.7680953 --4.9223843 -2.2232957 -1.7636577 --4.9515343 -2.1999836 -1.7693632 --4.9293084 -2.1539869 -1.7563672 --4.9415607 -2.1233263 -1.7560502 --4.9256659 -2.0807838 -1.7455902 --4.9567347 -2.0581605 -1.7522466 --4.9964914 -2.0388179 -1.7620728 --5.0326753 -2.0176525 -1.7706311 --5.090848 -2.0048091 -1.7871137 --5.1499352 -1.9916694 -1.8039134 --5.198411 -1.9738386 -1.8169092 --5.3010712 -1.9756957 -1.8492405 --5.3879137 -1.9705013 -1.8758663 --5.4579282 -1.9582276 -1.8964696 --5.5288873 -1.9454832 -1.9173899 --5.5882378 -1.9279189 -1.9341894 --5.6493764 -1.9103067 -1.951623 --5.6870999 -1.884259 -1.9608152 --5.7075753 -1.8522563 -1.963985 --5.733295 -1.8217969 -1.9690566 --5.7416487 -1.7857386 -1.9681057 --5.7661076 -1.7546173 -1.9728602 --5.7685843 -1.7167689 -1.9700074 --5.7753668 -1.680281 -1.9687396 --5.7873926 -1.6453313 -1.9693735 --5.797379 -1.6097896 -1.9693735 --5.7961631 -1.5712087 -1.9655699 --5.8038607 -1.5351294 -1.9649359 --5.8122525 -1.4992517 -1.9646189 --5.8231821 -1.4640229 -1.9652529 --5.8320556 -1.4282649 -1.9652529 --5.8305612 -1.3900331 -1.9617661 --5.8435998 -1.355303 -1.963351 --5.8712349 -1.3238039 -1.9700074 --5.8699827 -1.2857239 -1.9668378 --5.8851829 -1.2512605 -1.9693735 --5.8918204 -1.2149346 -1.9690566 --5.8880038 -1.1765294 -1.9652529 --5.8904562 -1.1394781 -1.963668 --5.9066596 -1.1050583 -1.9668378 --5.9114623 -1.0684574 -1.9662038 --5.9263158 -1.0336324 -1.9690566 --5.9428349 -0.99897993 -1.9725432 --5.9441714 -0.96173888 -1.9709584 --5.9658923 -0.92772657 -1.976347 --5.9771008 -0.89194334 -1.9782488 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --5.6692877 1.0514209 -1.9550045 --5.6553059 1.0847617 -1.9523866 --5.6457624 1.1188899 -1.951405 --5.6369395 1.1531315 -1.9507506 --5.6269841 1.1871116 -1.9497689 --5.6149774 1.2206112 -1.9481329 --5.6000056 1.2533885 -1.945515 --5.5949721 1.2883626 -1.9464967 --5.5933976 1.3241936 -1.9487872 --5.5870037 1.3589361 -1.9494417 --5.5739765 1.392046 -1.9478056 --5.5616689 1.425282 -1.9464967 --5.5336275 1.4543331 -1.9396251 --5.5136514 1.4853076 -1.9356985 --5.52174 1.5238907 -1.9419156 --5.5013742 1.5546569 -1.9379891 --5.5071621 1.5928499 -1.9435518 --5.4827881 1.6223184 -1.9383162 --5.4899139 1.6611328 -1.9445335 --5.482326 1.6956252 -1.945515 --5.4556012 1.7241035 -1.9396251 --5.4458189 1.7578365 -1.9399524 --5.4259567 1.7882587 -1.9366802 --5.4193597 1.8230253 -1.9383162 --5.4375639 1.8663731 -1.9491144 --5.4215508 1.89814 -1.9474784 --5.3911147 1.9246944 -1.9406068 --5.3667731 1.9532106 -1.9360257 --5.3422847 1.9815006 -1.9314448 --5.334445 2.015914 -1.9330808 --5.3281479 2.0509851 -1.9353713 --5.3110647 2.0819142 -1.9337353 --5.2955575 2.1134117 -1.9327536 --5.2693591 2.1405277 -1.9278454 --5.2526331 2.1713748 -1.9265364 --5.2557592 2.2105277 -1.9327536 --5.2551274 2.2483127 -1.9376619 --5.2507634 2.2846644 -1.9412613 --5.2426949 2.3195169 -1.9435518 --5.2145762 2.345437 -1.9383162 --5.2009463 2.3777821 -1.9386435 --5.1734052 2.4036746 -1.9337353 --5.1602678 2.4361799 -1.9343897 --5.1409631 2.4657528 -1.9327536 --5.1384778 2.5034614 -1.9376619 --5.117939 2.5324278 -1.9356985 --5.102304 2.5637834 -1.9356985 --5.0789022 2.5911758 -1.9327536 --5.0620685 2.6218557 -1.9324263 --5.0425406 2.6511071 -1.9311175 --5.0261784 2.6819975 -1.9311175 --5.007966 2.7118869 -1.9304631 --4.9895754 2.7416537 -1.9298086 --4.9701834 2.7708366 -1.9288269 --4.9530883 2.801281 -1.9288269 --4.9317088 2.8292677 -1.9271909 --4.9183393 2.8618519 -1.9288269 --4.8966184 2.8895745 -1.9271909 --4.8804173 2.9205358 -1.9278454 --4.8615975 2.9499362 -1.9275181 --4.8482342 2.9826827 -1.9294814 --4.8290396 3.0118747 -1.9291542 --4.8128643 3.0429637 -1.9301358 --4.7917156 3.0709076 -1.9291542 --4.7791214 3.1043704 -1.9317719 --4.7607727 3.134156 -1.9320991 --4.7406664 3.1627839 -1.9317719 --4.7188225 3.1902242 -1.9307903 --4.6944818 3.2159133 -1.9288269 --4.6777658 3.2468133 -1.9301358 --4.655437 3.2738233 -1.9291542 --4.6337228 3.30123 -1.9284997 --4.609549 3.326834 -1.9268637 --4.5859981 3.3528235 -1.9255548 --4.56458 3.380337 -1.9252275 --4.5384622 3.4043109 -1.922937 --4.5137267 3.4292355 -1.921301 --4.4993396 3.4620543 -1.924246 --4.4802475 3.4913394 -1.9252275 --4.4572577 3.5175929 -1.9245732 --4.4311619 3.5413353 -1.9226098 --4.4174275 3.5749984 -1.9262092 --4.3881011 3.596045 -1.922937 --4.3637724 3.6210914 -1.9219553 --4.3429184 3.6490149 -1.9226098 --4.3240447 3.6786561 -1.924246 --4.2978125 3.7020345 -1.9226098 --4.2821364 3.7345481 -1.925882 --4.2591414 3.7607524 -1.925882 --4.2416205 3.7918546 -1.9284997 --4.2161727 3.8159065 -1.9275181 --4.1947694 3.8436203 -1.9284997 --4.1717987 3.8699293 -1.9288269 --0 0 -0 --0 0 -0 --4.1093888 3.9552388 -1.933408 --4.0775995 3.9731236 -1.9298086 --0 0 -0 --4.0298734 4.0241985 -1.9304631 --3.9984612 4.0421305 -1.9271909 --3.9768853 4.0699682 -1.9288269 --3.9439642 4.086133 -1.9249003 --3.918818 4.1102557 -1.9249003 --3.8876946 4.1280313 -1.9219553 --3.8571446 4.1462722 -1.9193376 --3.8277955 4.1656857 -1.9173744 --3.7977188 4.184195 -1.9150838 --3.7738655 4.2095299 -1.9160655 --3.753602 4.238975 -1.9190104 --3.7293873 4.264061 -1.9199921 --3.6994479 4.2825727 -1.9180288 --3.6712613 4.3030343 -1.9170471 --3.6514854 4.3334298 -1.9206465 --3.619993 4.3499417 -1.9180288 --3.6064305 4.388135 -1.9252275 --3.569912 4.3984399 -1.9199921 --3.5487647 4.4276366 -1.9232643 --3.51684 4.4433994 -1.9206465 --3.4866011 4.4611712 -1.9190104 --3.4591622 4.4824805 -1.9190104 --3.4344559 4.50738 -1.9206465 --3.4050307 4.526103 -1.9196649 --3.3805745 4.5514627 -1.9216281 --3.3531423 4.5728822 -1.9219553 --3.3200352 4.5864806 -1.9190104 --3.285789 4.5983071 -1.915411 --3.2547901 4.6145201 -1.913775 --3.2258749 4.6336288 -1.9134477 --3.1984527 4.6548929 -1.9141022 --3.1687701 4.6728663 -1.9134477 --3.1437161 4.6977196 -1.9157382 --3.1158733 4.7184978 -1.9163927 --3.0868626 4.7375278 -1.9163927 --3.0572245 4.7555842 -1.9160655 --3.0239398 4.7678685 -1.9134477 --2.9956298 4.7879357 -1.9141022 --2.9642107 4.8030095 -1.9127933 --2.9351754 4.8219147 -1.9131205 --2.906992 4.8422642 -1.9141022 --2.8767445 4.8591971 -1.913775 --2.8473511 4.877573 -1.9141022 --2.8216102 4.9023237 -1.9170471 --2.7905447 4.917901 -1.9163927 --2.758472 4.9316316 -1.9150838 --2.7308965 4.9534302 -1.9170471 --2.7004514 4.9700933 -1.9170471 --2.6725798 4.9915681 -1.9190104 --2.6392572 5.0028577 -1.9170471 --2.6080751 5.0181193 -1.9167199 --2.5759439 5.0315037 -1.9157382 --2.5441723 5.045527 -1.9150838 --2.5131655 5.0610428 -1.9150838 --2.4783301 5.068727 -1.9121388 --2.4459534 5.081284 -1.9111573 --2.4123025 5.0910721 -1.9091939 --2.3810189 5.1057782 -1.9091939 --2.3476758 5.1159968 -1.9075578 --2.317795 5.1337509 -1.9088666 --2.2870181 5.1496034 -1.9095211 --2.2587802 5.1713338 -1.912466 --2.2229068 5.1755443 -1.9088666 --2.1925781 5.1925688 -1.9101756 --2.161762 5.2085428 -1.9111573 --2.1265521 5.2138338 -1.9082122 --2.0962772 5.2311702 -1.9098483 --2.058259 5.2289853 -1.9042857 --2.0230711 5.233583 -1.9013406 --1.9832128 5.2255764 -1.8938147 --1.9537494 5.2447314 -1.8964324 --1.9302862 5.2805853 -1.9052672 --1.8988051 5.2949986 -1.9062489 --1.8681599 5.3118987 -1.9082122 --1.8379943 5.3304086 -1.91083 --1.8076718 5.3487482 -1.9134477 --1.7700686 5.3453856 -1.9082122 --1.7372366 5.3561459 -1.9082122 --1.7006235 5.3549953 -1.9039584 --1.674461 5.3869877 -1.9118116 --1.6400018 5.3926396 -1.9101756 --1.6068823 5.4026012 -1.9101756 --1.5800297 5.4341373 -1.9180288 --1.5409791 5.4237313 -1.91083 --1.5071658 5.4312634 -1.9101756 --1.4720836 5.4340239 -1.9078851 --1.436783 5.4356451 -1.9052672 --1.3986897 5.4260573 -1.8987229 --1.3794037 5.4904447 -1.9186832 --1.3459134 5.499723 -1.9190104 --1.31805 5.5326982 -1.9278454 --1.2744852 5.4992547 -1.9131205 --1.246321 5.5318623 -1.9219553 --1.2117492 5.5366359 -1.9209738 --1.1775579 5.5430422 -1.9206465 --1.1418099 5.5418334 -1.9177016 --1.1063058 5.5413218 -1.9150838 --1.0706719 5.5396552 -1.9121388 --1.0335394 5.5294003 -1.9062489 --1.0017726 5.5477271 -1.9105028 --0.96965772 5.5649409 -1.9144294 --0.93408692 5.5623984 -1.9114844 --0.9002403 5.569891 -1.9121388 --0.86213607 5.5500975 -1.903304 --0.82778686 5.5534139 -1.9026495 --0.79796445 5.5883241 -1.9131205 --0.75753331 5.5481734 -1.8974141 --0.72567022 5.5695839 -1.903304 --0.68811411 5.5467362 -1.8938147 --0.65428776 5.5527306 -1.8944691 --0.618949 5.5453711 -1.8905425 --0.58550477 5.5547032 -1.8925058 --0.55271405 5.5713563 -1.8970869 --0.51974094 5.5878153 -1.9016678 --0.48821756 5.6229076 -1.9127933 --0.45438877 5.6342745 -1.9157382 --0.41896909 5.6256485 -1.9118116 --0.38431448 5.6262279 -1.9111573 --0.35031113 5.6369681 -1.9141022 --0.3159799 5.6437287 -1.9157382 --0.28111047 5.6408424 -1.9141022 --0.24760193 5.6679506 -1.922937 --0.21257259 5.6627531 -1.9206465 --0.17752798 5.6545062 -1.9173744 --0.14294757 5.660212 -1.9190104 --0.10807152 5.6534243 -1.9163927 --0.073392801 5.6549258 -1.9167199 --0.038724806 5.6599946 -1.9183559 --0.0039859931 5.6421714 -1.9121388 -0.0306125 5.63831 -1.91083 -0.065052241 5.6247878 -1.9062489 -0.099716336 5.6327858 -1.9091939 -0.13439016 5.6367912 -1.91083 -0.16943054 5.6509728 -1.9160655 -0.2037923 5.6413279 -1.9131205 -0.2386436 5.6456361 -1.9150838 -0.27318829 5.6421776 -1.9144294 -0.30847478 5.6526613 -1.9186832 -0.34223351 5.635571 -1.9134477 -0.37674302 5.632422 -1.9131205 -0.41157198 5.6337743 -1.9144294 -0.44620726 5.6320848 -1.9147565 -0.48003125 5.6207671 -1.9118116 -0.51675642 5.6421819 -1.9203193 -0.55044496 5.6295004 -1.9170471 -0.58448696 5.6213179 -1.915411 -0.61948615 5.6223216 -1.9170471 -0.65331572 5.6127834 -1.9150838 -0.68751246 5.6067929 -1.9144294 -0.72153926 5.5996575 -1.9134477 -0.75487089 5.5876336 -1.91083 -0.78609556 5.561377 -1.903304 -0.81965196 5.5527101 -1.9019951 -0.8532756 5.5447745 -1.9010135 -0.88967592 5.5543628 -1.9062489 -0.92498302 5.5562558 -1.9088666 -0.96260202 5.5709605 -1.9160655 -0.99926853 5.5789008 -1.9209738 -1.0371037 5.592175 -1.9278454 -1.0665858 5.5606503 -1.9190104 -1.1019725 5.5604892 -1.921301 -1.1400512 5.5730634 -1.9281725 -1.1693443 5.5428495 -1.9199921 -1.2013234 5.5263367 -1.9167199 -1.2327309 5.5077963 -1.9127933 -1.2705352 5.5176244 -1.9190104 -1.2965232 5.4766231 -1.9072306 -1.3285382 5.4621377 -1.90494 -1.3597367 5.4447155 -1.9016678 -1.3942931 5.4408464 -1.903304 -1.4298147 5.4404135 -1.9062489 -1.4616936 5.4260635 -1.9042857 -1.4967208 5.4233689 -1.9065762 -1.5271411 5.4040809 -1.9029768 -1.562373 5.4018703 -1.9055945 -1.5946839 5.3894639 -1.9046128 -1.6279969 5.3804817 -1.90494 -1.6604215 5.3685861 -1.9042857 -1.6916217 5.352891 -1.9023223 -1.7235632 5.3397131 -1.9013406 -1.7598462 5.3398056 -1.9052672 -1.7865483 5.3109956 -1.8987229 -1.8187953 5.2990398 -1.8983957 -1.8519002 5.2895637 -1.8990501 -1.8798709 5.2656431 -1.8944691 -1.9166719 5.2664399 -1.8990501 -1.9463197 5.2474933 -1.8964324 -1.9808207 5.2416391 -1.8987229 -2.0115869 5.2258592 -1.8974141 -2.0425792 5.2107787 -1.8964324 -2.076616 5.203413 -1.8983957 -2.103523 5.1783175 -1.8938147 -2.1399524 5.1766648 -1.8980684 -2.1720421 5.1643076 -1.8983957 -2.2033169 5.1500144 -1.8980684 -2.2363842 5.1398635 -1.8993773 -2.269027 5.1286368 -1.900359 -2.3016164 5.1172032 -1.9013406 -2.3333647 5.1038437 -1.9016678 -2.369019 5.098856 -1.9052672 -2.4014714 5.0867872 -1.9062489 -2.4326379 5.0719562 -1.9062489 -2.4612288 5.0518379 -1.9042857 -2.4925992 5.037488 -1.9046128 -2.5234618 5.022099 -1.9046128 -2.5512221 5.0006289 -1.9023223 -2.5805531 4.9823642 -1.9013406 -2.6084363 4.9614186 -1.8993773 -2.6388299 4.9453201 -1.8993773 -2.6673236 4.9257121 -1.8980684 -2.6979523 4.9100809 -1.8983957 -2.7303305 4.8975606 -1.9000318 -2.7626567 4.8848271 -1.9016678 -2.7921071 4.8669643 -1.9013406 -2.8228686 4.8513741 -1.9019951 -2.8530633 4.8347759 -1.9023223 -2.878792 4.8106928 -1.8997046 -2.9121785 4.7994003 -1.9023223 -2.9420676 4.7822456 -1.9026495 -2.9638519 4.7520785 -1.8977413 -3.0060883 4.7545667 -1.9062489 -3.0408154 4.7447824 -1.9098483 -3.067812 4.7228656 -1.9085394 -3.0894566 4.6929045 -1.9039584 -3.1234396 4.6817193 -1.9072306 -3.1499896 4.6593351 -1.9059217 -3.1843956 4.6484938 -1.9095211 -3.2026179 4.61412 -1.903304 -3.227607 4.589745 -1.9013406 -3.2502239 4.5621595 -1.8980684 -3.2787087 4.5428967 -1.8983957 -3.301501 4.5158291 -1.8954507 -3.3347726 4.5030789 -1.8987229 -3.368012 4.4900904 -1.9019951 -3.3972147 4.4715972 -1.9029768 -3.4291992 4.4566584 -1.9055945 -3.4570611 4.4362788 -1.9059217 -3.4865587 4.4179497 -1.9072306 -3.5165515 4.4001637 -1.9088666 -3.542295 4.3770347 -1.9082122 -3.5618961 4.3464479 -1.9042857 -3.5945342 4.3317819 -1.9075578 -3.6167896 4.3045812 -1.9052672 -3.6406841 4.2794294 -1.9039584 -3.6705747 4.2613049 -1.9059217 -3.69541 4.2372785 -1.9052672 -3.7238424 4.2173567 -1.9065762 -3.7395706 4.1831589 -1.9013406 -3.7677045 4.1629362 -1.9026495 -0 0 -0 -3.8024368 4.099071 -1.8944691 -3.8326929 4.0811725 -1.8970869 -3.8544061 4.0541549 -1.8954507 -3.877243 4.0283866 -1.8944691 -3.9045262 4.0072269 -1.8957779 -3.9363415 3.9905922 -1.8993773 -3.9627569 3.9683697 -1.900359 -4.0031581 3.9599259 -1.9082122 -4.0233245 3.9313266 -1.9062489 -4.0392103 3.8986928 -1.9023223 -4.0685287 3.8790505 -1.90494 -4.0674844 3.8306959 -1.8931602 -4.0839925 3.7992313 -1.889888 -4.139936 3.8041444 -1.9052672 -4.1485033 3.7653368 -1.8983957 -4.1623802 3.7316129 -1.8941419 -4.1816607 3.7028713 -1.8925058 -4.2277789 3.6976678 -1.903304 -4.261116 3.6809206 -1.9082122 -4.2879357 3.6583846 -1.9101756 -4.3117476 3.6332231 -1.91083 -4.3310537 3.6042809 -1.9095211 -4.3479767 3.5734394 -1.9072306 -4.3720226 3.5484796 -1.9082122 -4.3922381 3.5204048 -1.9075578 -4.4137564 3.4933884 -1.9075578 -4.4321299 3.4639132 -1.9062489 -4.4533005 3.4366531 -1.9062489 -4.4690413 3.4052556 -1.9039584 -4.4921174 3.3794737 -1.90494 -4.5120101 3.3512838 -1.9046128 -4.527153 3.3196251 -1.9023223 -4.5566235 3.2984316 -1.9062489 -4.5813904 3.273706 -1.9082122 -4.5975294 3.242811 -1.9065762 -4.6235456 3.218858 -1.9091939 -4.6471038 3.1931028 -1.91083 -4.6697373 3.1666493 -1.9121388 -4.6843672 3.1347845 -1.9101756 -4.6972046 3.1018183 -1.9075578 -4.7082305 3.0677814 -1.9042857 -4.7341199 3.043432 -1.9072306 -4.7503109 3.012809 -1.9062489 -4.7639003 2.9805987 -1.9042857 -4.773253 2.9458544 -1.9006863 -4.8041544 2.9243696 -1.9059217 -4.8228178 2.895323 -1.9062489 -4.8372397 2.8637514 -1.90494 -4.8628821 2.838779 -1.9082122 -4.8818469 2.80983 -1.9088666 -4.8998179 2.7802887 -1.9091939 -4.9143109 2.7487884 -1.9082122 -4.9360499 2.7213192 -1.9101756 -4.9534855 2.691432 -1.9105028 -4.9682403 2.6600955 -1.9098483 -4.9869761 2.6308832 -1.91083 -5.0063791 2.6019766 -1.9121388 -5.0239329 2.5720699 -1.9127933 -5.0429955 2.5428963 -1.9141022 -5.0635824 2.5144258 -1.9160655 -5.0763683 2.4820642 -1.9150838 -5.0966115 2.4533277 -1.9170471 -5.1081529 2.4203913 -1.9157382 -5.119482 2.3874061 -1.9144294 -5.1254454 2.3520091 -1.9111573 -5.1363349 2.3189611 -1.9098483 -5.1556492 2.2897017 -1.9118116 -5.1609416 2.2542436 -1.9085394 -5.1824908 2.2258887 -1.9114844 -5.2047572 2.1977217 -1.9147565 -5.2198896 2.1664686 -1.915411 -5.2269597 2.1319025 -1.9131205 -5.2531004 2.1050601 -1.9180288 -5.2667975 2.0731339 -1.9183559 -5.2776556 2.0400975 -1.9177016 -5.2883072 2.0070057 -1.9170471 -5.3076067 1.9771569 -1.9196649 -5.3311772 1.948768 -1.9239187 -5.337697 1.9141071 -1.9219553 -5.3546901 1.8831995 -1.9239187 -5.3715048 1.8521553 -1.925882 -5.3773966 1.8173474 -1.9239187 -5.3911376 1.7852087 -1.9249003 -5.3956976 1.7500563 -1.9226098 -5.4099369 1.7180592 -1.9239187 -5.4122553 1.6823094 -1.9209738 -5.4279003 1.6507174 -1.922937 -5.4343038 1.6163045 -1.9216281 -5.4504709 1.5847753 -1.9239187 -5.4682736 1.5536246 -1.9268637 -5.4695082 1.5177703 -1.9239187 -5.4714212 1.4822062 -1.921301 -5.4749308 1.4471586 -1.9193376 -5.4690661 1.4097669 -1.9141022 -5.4757805 1.3757226 -1.9134477 -5.4804468 1.3412002 -1.9121388 -5.4968467 1.3095168 -1.9150838 -5.5103016 1.2770431 -1.9170471 -5.5171118 1.243001 -1.9167199 -5.543098 1.2131621 -1.9232643 -5.5467396 1.1783427 -1.9219553 -5.5594187 1.1454294 -1.9239187 -5.5663424 1.1112958 -1.9239187 -5.5739841 1.0772996 -1.924246 -5.5823474 1.0434248 -1.9249003 -5.5988741 1.0109975 -1.9284997 -5.6059027 0.97678649 -1.9288269 -5.607131 0.94158942 -1.9271909 -5.612803 0.90716702 -1.9271909 -5.620131 0.87300014 -1.9278454 -5.6253819 0.83849919 -1.9278454 -5.636034 0.80476701 -1.9298086 -5.6446109 0.77068043 -1.9311175 -5.6454854 0.73554361 -1.9298086 -5.6527057 0.70123816 -1.9307903 -5.6522098 0.66598868 -1.9291542 -5.6496158 0.63056248 -1.9268637 -5.6486793 0.59539092 -1.9252275 -5.6550474 0.56099933 -1.9262092 -5.660265 0.5264647 -1.9268637 -5.6624475 0.4916425 -1.9265364 -5.6681833 0.45711643 -1.9275181 -5.6850166 0.42337832 -1.9324263 -5.6856217 0.38835934 -1.9317719 -5.6916704 0.35369939 -1.9330808 -5.6946769 0.31882191 -1.933408 -5.6918068 0.28363982 -1.9317719 -5.6915522 0.24862812 -1.9311175 -5.694859 0.21377125 -1.9317719 -5.6932302 0.17873584 -1.9307903 -5.6942196 0.14379947 -1.9307903 -5.6940498 0.10883982 -1.9304631 -5.69839 0.073948026 -1.9317719 -5.6959019 0.03896315 -1.9307903 -5.6988688 0.0040144427 -1.9317719 -5.6978412 -0.030947909 -1.9314448 -5.6984887 -0.065919742 -1.9317719 -5.6941977 -0.10081609 -1.9304631 -5.6981955 -0.13586672 -1.9320991 -5.700088 -0.17091316 -1.9330808 -5.7017651 -0.20598795 -1.9340625 -5.7051144 -0.24116994 -1.9356985 -5.7054148 -0.27626312 -1.936353 -5.6979508 -0.31095558 -1.9343897 -5.7006516 -0.34619907 -1.9360257 -5.6993628 -0.38123435 -1.936353 -5.6922045 -0.41585258 -1.9347169 -5.6820097 -0.45017287 -1.9320991 -5.6810236 -0.48518977 -1.9327536 -5.6779394 -0.52003872 -1.9327536 -5.6746416 -0.55486816 -1.9327536 -5.6711302 -0.58967662 -1.9327536 -5.6786761 -0.62570715 -1.9366802 -5.6813002 -0.66130519 -1.9389707 -5.6677566 -0.69500053 -1.9356985 -5.6558881 -0.72879648 -1.9330808 -5.6531825 -0.76374006 -1.9337353 -5.6483898 -0.79841298 -1.9337353 -5.6377759 -0.83222669 -1.9317719 -5.635365 -0.86723554 -1.9327536 -5.6299376 -0.90179712 -1.9327536 -5.6326871 -0.9377231 -1.9356985 -5.6240339 -0.97178376 -1.9347169 -5.6347075 -1.0092762 -1.9406068 -5.6256213 -1.0433136 -1.9396251 -5.6218977 -1.0783467 -1.9406068 -5.6114678 -1.1120862 -1.9392979 -5.5980582 -1.1451695 -1.9370074 -5.5900021 -1.1793017 -1.9366802 -5.5780439 -1.2125746 -1.9350441 -5.5658884 -1.2457452 -1.933408 -5.5562983 -1.2794489 -1.9327536 -5.5566182 -1.3154784 -1.9356985 -5.5456877 -1.3488779 -1.9347169 -5.5455575 -1.3849425 -1.9376619 -5.5314631 -1.4175348 -1.9356985 -5.5317998 -1.4538523 -1.9389707 -5.5273371 -1.4889973 -1.9406068 -5.5126314 -1.5213749 -1.9386435 -5.4759145 -1.5474565 -1.9288269 -5.4654083 -1.5807642 -1.9284997 -5.5072517 -1.6295624 -1.9471512 -5.4881053 -1.660585 -1.943879 -5.4696884 -1.6917137 -1.9409341 -5.4583044 -1.7249583 -1.9406068 -5.4512143 -1.7595792 -1.9419156 -5.4367256 -1.7918102 -1.9406068 -5.4157777 -1.8218194 -1.9370074 -5.4009223 -1.8537879 -1.9356985 -5.3769608 -1.8825184 -1.9311175 -5.3484011 -1.9094354 -1.9249003 -5.3250413 -1.9380131 -1.9206465 -5.2572379 -1.9499364 -1.9000318 -5.1956778 -1.963441 -1.8817075 -5.1262155 -1.9732076 -1.8604385 -5.0841017 -1.9928927 -1.849313 -4.9770007 -1.9862037 -1.8139734 -4.8964386 -1.9889511 -1.7884505 -4.8413558 -2.00126 -1.7724168 -4.7967591 -2.0173666 -1.7603097 -4.7382493 -2.0270522 -1.7429672 -4.6979976 -2.0440173 -1.7324963 -4.6421638 -2.0536802 -1.7161354 -4.6053472 -2.0712671 -1.7069732 -4.5788026 -2.0931969 -1.7017378 -4.5607314 -2.1188624 -1.6997744 -4.5416632 -2.1439815 -1.6974839 -4.4423771 -2.130517 -1.6644349 -4.361268 -2.1246114 -1.6382575 -4.2922573 -2.1236613 -1.6166611 -4.2512856 -2.1359518 -1.6058629 -4.1421518 -2.1130214 -1.56856 -4.1333036 -2.1405714 -1.5701962 -4.04566 -2.1267409 -1.5410738 -3.9916885 -2.1297183 -1.52504 -4.0391974 -2.1870306 -1.5489269 -4.0886354 -2.2463703 -1.5737956 -4.0764256 -2.272336 -1.57445 -3.9711173 -2.2456517 -1.5381287 -3.9203837 -2.2488084 -1.523404 -3.8893619 -2.2628374 -1.5165324 -3.8721492 -2.2847381 -1.5152235 -3.6310465 -2.1725438 -1.4236026 -3.40763 -2.0672889 -1.3385259 -3.4431653 -2.1178772 -1.3581589 -3.3355072 -2.0799365 -1.3195472 -3.3099046 -2.0922813 -1.3143117 -3.1967735 -2.0482867 -1.2730823 -3.1556211 -2.0493264 -1.2613025 -3.1240473 -2.0561762 -1.2534492 -3.0807195 -2.0548472 -1.2406877 -3.0390923 -2.0541236 -1.2285807 -3.0038269 -2.0572407 -1.2190913 -2.9810572 -2.0686266 -1.2148376 -2.9304385 -2.0602367 -1.1988038 -2.9061997 -2.069952 -1.1938956 -2.8758233 -2.0750222 -1.1863695 -2.8424437 -2.0775669 -1.1775347 -2.7924383 -2.067405 -1.161501 -2.737375 -2.0527384 -1.1431768 -2.7074251 -2.0563445 -1.1356508 -2.6707952 -2.0544734 -1.1251798 -2.655158 -2.0684984 -1.123871 -2.6379662 -2.081238 -1.1219076 -2.6303124 -2.1015158 -1.1241982 -2.6232438 -2.1223722 -1.1268159 -2.6211331 -2.1474147 -1.1317241 -2.615905 -2.1700966 -1.1353235 -2.6170075 -2.1982672 -1.1418679 -2.5984325 -2.2099962 -1.1395774 -2.56478 -2.2086265 -1.1304153 -2.5262587 -2.2025788 -1.1189626 -2.474453 -2.1842561 -1.1012928 -2.4469171 -2.1867993 -1.0947485 -2.3802166 -2.1535702 -1.06988 -2.3697441 -2.1706884 -1.0711888 -2.3376789 -2.1678329 -1.062354 -2.3236446 -2.1814888 -1.0620267 -2.3102155 -2.1957052 -1.0620267 -2.2953379 -2.2085283 -1.0613723 -2.2810669 -2.221911 -1.0610451 -2.2667179 -2.2352018 -1.0607178 -2.2442696 -2.240386 -1.0564641 -2.2218435 -2.2453794 -1.0522102 -2.2020817 -2.2528861 -1.0492653 -2.1803436 -2.2581949 -1.0453386 -2.1912196 -2.2975247 -1.0577729 -2.1718993 -2.3054223 -1.0551552 -2.1750865 -2.3373892 -1.0639901 -2.1619821 -2.3520832 -1.0646445 -2.1538587 -2.372303 -1.0679166 -2.1449378 -2.3918078 -1.0708616 -2.1183217 -2.3914797 -1.0646445 -2.0824616 -2.3802445 -1.0535191 -2.075846 -2.4022753 -1.0577729 -2.0733304 -2.429347 -1.0643172 -2.053515 -2.4362411 -1.0616995 -2.0445709 -2.4560599 -1.0649717 -2.0282626 -2.4670987 -1.0643172 -2.0142775 -2.4809651 -1.0649717 -1.9931083 -2.485903 -1.0616995 -1.9766449 -2.4966037 -1.0610451 -1.9577984 -2.5042171 -1.0590818 -1.9447047 -2.5191758 -1.0603907 -1.9280655 -2.5295572 -1.0597363 -1.913644 -2.5428505 -1.0603907 -1.8974421 -2.5537858 -1.0600635 -1.8772676 -2.559283 -1.0574456 -1.8582052 -2.5661602 -1.0554824 -1.8391292 -2.5729001 -1.0535191 -1.8227631 -2.583364 -1.0531919 -1.8095763 -2.5983777 -1.0548279 -1.7941339 -2.6102111 -1.0551552 -1.7807351 -2.6250815 -1.0567913 -1.7630183 -2.6336021 -1.0558096 -1.7504694 -2.6498907 -1.0581001 -1.7383027 -2.6669161 -1.0607178 -1.7418286 -2.7085357 -1.0734794 -1.7155635 -2.7040088 -1.0672623 -1.7024471 -2.7200925 -1.0695528 -1.6807636 -2.722445 -1.0662806 -1.6797448 -2.7585392 -1.0767516 -1.6598699 -2.7639325 -1.0747882 -1.6284426 -2.7496681 -1.0649717 -1.5986823 -2.7375717 -1.0561368 -1.5908077 -2.762892 -1.062354 -1.5621706 -2.7520523 -1.0541735 -1.5540162 -2.777257 -1.0603907 -1.5351218 -2.7834294 -1.0590818 -1.521171 -2.798609 -1.0613723 -1.5155628 -2.8295519 -1.06988 -1.5012577 -2.8446491 -1.0721705 -1.4789833 -2.844583 -1.0685711 -1.4593492 -2.8493981 -1.0669351 -1.4380106 -2.8507044 -1.0639901 -1.4171312 -2.8527029 -1.0613723 -1.4008453 -2.8638914 -1.062354 -1.3840657 -2.874136 -1.0630084 -1.3712577 -2.8928225 -1.0669351 -1.3578731 -2.9106033 -1.0705345 -1.3533822 -2.9480836 -1.0816598 -1.3383769 -2.963223 -1.0842775 -1.3182528 -2.9670608 -1.0826415 -1.2985102 -2.9716294 -1.0813326 -1.2795068 -2.9778044 -1.0806782 -1.2601089 -2.9829874 -1.0796965 -1.2464887 -3.0020101 -1.0839504 -1.224835 -3.0017264 -1.0810053 -1.20007 -2.9933956 -1.0751154 -1.1920581 -3.0270834 -1.084932 -1.1731213 -3.0334592 -1.0846047 -1.1518054 -3.0335319 -1.081987 -1.1308626 -3.0343432 -1.0796965 -1.1118987 -3.0403373 -1.0793693 -1.0980043 -3.0604458 -1.0842775 -1.0770119 -3.060885 -1.081987 -1.0569789 -3.0638623 -1.0806782 -1.0408808 -3.0783474 -1.0836232 -1.026129 -3.0972357 -1.0882041 -0.99603391 -3.069315 -1.0757699 -0.98232722 -3.0915811 -1.0816598 -0.96165735 -3.0921359 -1.0796965 -0.94926041 -3.1196771 -1.0875497 -0.92606252 -3.1118562 -1.0826415 -0.91169661 -3.1338134 -1.0885314 -0.89477336 -3.1475296 -1.0914763 -0.87897849 -3.165709 -1.0960574 -0.8610189 -3.1765153 -1.0980207 -0.83475572 -3.1561573 -1.0888586 -0.80311865 -3.1136355 -1.0718433 -0.77709675 -3.0910091 -1.0620267 -0.73993671 -3.0213685 -1.0355221 -0.71963364 -3.0184977 -1.0329044 -0.70834619 -3.0541568 -1.0440297 -0.69478047 -3.0814927 -1.0522102 -0.68050206 -3.10693 -1.0597363 -0.66515279 -3.1286099 -1.0659534 -0.65032488 -3.1539199 -1.0734794 -0.63558096 -3.1810184 -1.0816598 -0.62411129 -3.2266099 -1.0963846 -0.60777003 -3.2489567 -1.102929 -0.58748794 -3.2507648 -1.1022745 -0.56801659 -3.2571013 -1.1032562 -0.55364758 -3.2940748 -1.115036 -0.53131694 -3.2843497 -1.110455 -0.51187885 -3.2922168 -1.1120911 -0.49319887 -3.3055768 -1.1156905 -0.47183987 -3.3010569 -1.1130728 -0.45068261 -3.2973359 -1.1107823 -0.42507869 -3.2588089 -1.0963846 -0.3976419 -3.2013376 -1.0754427 -0.37876409 -3.2102864 -1.0777332 -0.36272091 -3.24542 -1.0891858 -0.34408575 -3.2598014 -1.0934397 -0.32891834 -3.3107495 -1.110455 -0.31008223 -3.3287008 -1.1160177 -0.28639001 -3.2928839 -1.102929 -0.26792255 -3.3162429 -1.110455 -0.24581973 -3.2942657 -1.1022745 -0.22573027 -3.2975974 -1.102929 -0.20514184 -3.2932618 -1.1009657 -0.18429933 -3.2831366 -1.0970391 -0.16424461 -3.2860932 -1.0976934 -0.14444786 -3.2955356 -1.1006385 -0.12337799 -3.2736969 -1.0927852 -0.10302351 -3.265892 -1.0898403 -0.082627468 -3.2522929 -1.084932 -0.062741689 -3.2565176 -1.0862409 -0.04269854 -3.2521169 -1.0846047 -0.022881111 -3.2731061 -1.0918036 -0.0027925363 -3.2637355 -1.0885314 --0.017174857 -3.2532969 -1.084932 --0.037392192 -3.2748625 -1.092458 --0.057756376 -3.2896883 -1.0976934 --0.078258462 -3.3024974 -1.1022745 --0.099205025 -3.3246236 -1.1101278 --0.11953405 -3.3220637 -1.1094733 --0.14095822 -3.3458142 -1.117981 --0.1620817 -3.357156 -1.1222348 --0.18365976 -3.3740256 -1.1284519 --0.20464629 -3.3775511 -1.1300881 --0.22454435 -3.363975 -1.1258342 --0.24414545 -3.3483975 -1.120926 --0.26640716 -3.3685021 -1.1284519 --0.2873933 -3.3705702 -1.1297609 --0.30280033 -3.3113427 -1.1098006 --0.32449487 -3.323529 -1.1147088 --0.34693784 -3.3412125 -1.1215804 --0.37064677 -3.3681374 -1.1317241 --0.3942613 -3.3911417 -1.1405591 --0.41586792 -3.3952241 -1.1428496 --0.43911189 -3.4113519 -1.1493939 --0.45940179 -3.4039111 -1.1477579 --0.68517214 -4.848434 -1.6539639 --0.71656686 -4.8553562 -1.6578906 --0.74807233 -4.8620749 -1.6618172 --0.77579635 -4.8443313 -1.6572361 --0.80954552 -4.8637142 -1.6657438 --0.83744049 -4.8474817 -1.6618172 --0.86616755 -4.8366714 -1.6598538 --0.89893341 -4.8479891 -1.6657438 --0.92884141 -4.8433099 -1.6660709 --0.95725471 -4.8310313 -1.6637805 --0.99086028 -4.8445072 -1.670652 --1.0211527 -4.8411098 -1.6716337 --1.0500343 -4.8310599 -1.6703248 --1.0773851 -4.814383 -1.6667254 --1.1060563 -4.8039985 -1.6654166 --1.1394341 -4.8136721 -1.6713065 --1.1624669 -4.779964 -1.6618172 --1.1910869 -4.7699909 -1.6608355 --1.2252626 -4.7818146 -1.6677071 --1.2495322 -4.7550154 -1.6608355 --1.2845885 -4.769156 -1.6686888 --1.309299 -4.7447886 -1.6627988 --1.1367767 -4.0237865 -1.40626 --1.1619703 -4.0185509 -1.4069145 --1.3961449 -4.7189789 -1.6624717 --1.42836 -4.7211761 -1.6663982 --1.4497581 -4.6879501 -1.6575633 --1.4910322 -4.7186093 -1.6719609 --1.5211189 -4.7129683 -1.6732697 --1.5497124 -4.7026486 -1.6729425 --1.5818543 -4.7029028 -1.6765419 --1.6106811 -4.6931081 -1.6765419 --1.6472578 -4.7054319 -1.6847224 --1.6773704 -4.6987953 -1.6860313 --1.7116671 -4.7035093 -1.691594 --1.7381935 -4.6867166 -1.6893035 --1.769926 -4.683918 -1.6922485 --1.7959155 -4.6659155 -1.6896306 --1.8269265 -4.6609659 -1.6919212 --1.8600469 -4.6610765 -1.696175 --1.2118543 -2.984565 -1.0738066 --1.2286998 -2.9735804 -1.0724977 --1.2472887 -2.966856 -1.072825 --1.9783376 -4.6244493 -1.7001016 --2.0025263 -4.6026931 -1.6965022 --2.0311127 -4.5911832 -1.6968294 --2.05847 -4.5769105 -1.696175 --2.0900521 -4.571928 -1.69912 --1.5647732 -3.3688018 -1.2446144 --1.5870286 -3.362555 -1.2459232 --1.6059958 -3.3493462 -1.2446144 --1.620306 -3.3266878 -1.239706 --1.6423647 -3.3200705 -1.241015 --1.6635542 -3.311619 -1.2416694 --1.6898571 -3.3131325 -1.2462504 --1.7131977 -3.3085742 -1.248541 --1.7427044 -3.3155625 -1.2554126 --2.286813 -4.2859473 -1.640548 --2.3027151 -4.2527251 -1.633022 --2.3975046 -4.3635545 -1.6824319 --2.4265351 -4.3528881 -1.684068 --2.4550598 -4.341207 -1.6853769 --2.4872954 -4.3358955 -1.6893035 --2.5062466 -4.3074861 -1.684068 --2.5292668 -4.2863307 -1.6817775 --2.5521219 -4.2650557 -1.6794869 --2.5821664 -4.2557778 -1.6821047 --2.6126885 -4.2470965 -1.6850497 --2.6381989 -4.2301836 -1.6847224 --2.6585486 -4.205132 -1.681123 --2.6837907 -4.1879444 -1.6807958 --2.7073774 -4.1682291 -1.6794869 --2.7313428 -4.1491709 -1.6785053 --2.7572749 -4.1331196 -1.6788325 --2.7778187 -4.1090789 -1.6758876 --2.7976372 -4.0841627 -1.6726153 --2.8258784 -4.0715766 -1.6745787 --2.8540702 -4.0587978 -1.6765419 --2.8772755 -4.0389009 -1.6755604 --2.9003439 -4.0188718 -1.6745787 --2.9110024 -3.9819322 -1.6663982 --2.9353802 -3.9639957 -1.6663982 --2.9488714 -3.9315495 -1.660181 --2.9717958 -3.9118769 -1.6595266 --2.2902231 -2.9770503 -1.259012 --2.3107708 -2.9659226 -1.2603208 --2.324827 -2.9464965 -1.2580303 --3.0745742 -3.8473618 -1.6637805 --3.0856364 -3.8130014 -1.6569089 --3.1089745 -3.7939966 -1.6569089 --3.1418526 -3.7864819 -1.6621444 --3.1650269 -3.7671325 -1.6621444 --3.189307 -3.7490807 -1.6627988 --3.2196531 -3.7380309 -1.6667254 --3.2288616 -3.7025402 -1.6595266 --3.2446375 -3.6748683 -1.6559272 --3.2652352 -3.6527774 -1.6549456 --3.2799759 -3.6242678 -1.651019 --3.3098145 -3.612433 -1.6549456 --3.3332033 -3.5934415 -1.6556001 --3.3519545 -3.5694783 -1.6539639 --3.3672807 -3.541997 -1.6506917 --3.3928833 -3.5253532 -1.652655 --3.4052162 -3.4949951 -1.648074 --3.416641 -3.4639463 -1.6431657 --3.4358277 -3.4409115 -1.6421841 --3.4730024 -3.4357107 -1.6500373 --3.4818501 -3.402451 -1.6441474 --3.4938211 -3.3724935 -1.6398935 --3.517185 -3.3536 -1.6412024 --3.5445764 -3.3384328 -1.6444746 --3.5739899 -3.3249862 -1.6487285 --3.5936284 -3.3023548 -1.6484013 --3.6278205 -3.2929413 -1.6549456 --3.6564019 -3.278187 -1.6588722 --3.6601734 -3.2412851 -1.6513462 --3.6814153 -3.2200096 -1.6520007 --3.7025342 -3.1985953 -1.652655 --3.7407844 -3.1917593 -1.6611627 --3.7581301 -3.1669199 -1.660181 --3.7702265 -3.1377578 -1.6569089 --3.7908688 -3.1157649 -1.6575633 --3.8209226 -3.1013761 -1.6624717 --3.8428302 -3.0802362 -1.6637805 --3.8631401 -3.0577717 -1.6644349 --3.8855526 -3.0369189 -1.6660709 --3.9123442 -3.0193691 -1.6696703 --3.9300451 -2.994734 -1.6693431 --3.9574094 -2.9773786 -1.6732697 --3.9793973 -2.9558568 -1.6749059 --3.995935 -2.9302669 -1.6742514 --4.0176673 -2.9084628 -1.6758876 --4.0400515 -2.8870513 -1.6778508 --4.063096 -2.8660192 -1.6801413 --4.0860343 -2.8448129 -1.6824319 --4.1034131 -2.8196878 -1.6824319 --4.127677 -2.7992284 -1.6853769 --4.1565561 -2.7817295 -1.6902851 --4.1822214 -2.761899 -1.6938845 --4.2085915 -2.7423737 -1.6978111 --4.2269287 -2.7175205 -1.6984656 --4.2475142 -2.6940629 -1.7001016 --4.2767835 -2.6759667 -1.7053372 --4.3043818 -2.65662 -1.7099181 --4.3319035 -2.6370351 -1.7144992 --4.3512435 -2.6123502 -1.7158082 --4.3728833 -2.5889709 -1.7180986 --4.4099069 -2.5744727 -1.7266062 --4.421525 -2.5450094 -1.7249702 --4.4337702 -2.5159669 -1.7236613 --4.4565473 -2.4928646 -1.7266062 --4.5081744 -2.4855392 -1.7410039 --4.4909549 -2.440243 -1.7282424 --4.5616646 -2.4425139 -1.7501659 --4.5857601 -2.4193263 -1.7537653 --4.603034 -2.3924499 -1.754747 --4.6235156 -2.3671744 -1.7570375 --4.6328902 -2.3362088 -1.7550743 --4.6564488 -2.3123589 -1.7586737 --4.6739454 -2.2854035 -1.7599826 --4.7108712 -2.2677431 -1.7688174 --4.7272596 -2.2400084 -1.7697991 --4.7426276 -2.2117586 -1.7704535 --4.7595453 -2.1841927 -1.7717624 --4.7969747 -2.1658299 -1.7809244 --4.7289867 -2.1003189 -1.7501659 --4.7391872 -2.0701287 -1.7491844 --4.7613516 -2.0451109 -1.7527838 --4.8025403 -2.0279815 -1.7635819 --4.8463154 -2.0115094 -1.7753618 --4.8961935 -1.9970729 -1.7894322 --4.9583564 -1.9870179 -1.8080835 --5.022337 -1.9769663 -1.8273894 --5.0872602 -1.966544 -1.8470225 --5.1822834 -1.9667925 -1.8777809 --5.267756 -1.9623212 -1.90494 --5.3267393 -1.9471468 -1.9222826 --5.3884015 -1.932278 -1.9406068 --5.4313583 -1.9101455 -1.9520594 --5.4635243 -1.8838639 -1.9595854 --5.4875145 -1.854538 -1.9641665 --5.5230126 -1.8288476 -1.9730014 --5.5359278 -1.7955073 -1.9736558 --5.5423374 -1.7600765 -1.9720197 --5.5611544 -1.728559 -1.9749647 --5.5589981 -1.6905572 -1.9703836 --5.5765128 -1.6585697 -1.9730014 --5.5865846 -1.6243216 -1.9730014 --5.590992 -1.588464 -1.9710381 --5.6097393 -1.5566533 -1.9743103 --5.6045914 -1.518253 -1.9690747 --5.6092334 -1.4826287 -1.9674387 --5.626461 -1.4503044 -1.9703836 --5.6370869 -1.4162139 -1.9710381 --5.6429167 -1.3809254 -1.9700564 --5.6457682 -1.3449624 -1.9680932 --5.6585174 -1.311361 -1.9697292 --5.6673789 -1.2768238 -1.9700564 --5.6658754 -1.2400069 -1.9667842 --5.6761503 -1.205807 -1.9677659 --5.6936231 -1.1730516 -1.9713653 --5.6997871 -1.1379093 -1.9710381 --5.7029505 -1.1021981 -1.9697292 --5.7133217 -1.0678784 -1.9710381 --5.7113972 -1.0312924 -1.9680932 --5.7120318 -0.99525648 -1.9661298 --5.7189631 -0.96034569 -1.966457 --5.7294121 -0.92598963 -1.9680932 --5.7237806 -0.88907892 -1.9641665 --5.7309976 -0.85421997 -1.964821 --5.7389379 -0.81943929 -1.9658026 --5.7382398 -0.78344458 -1.9638393 --5.7279463 -0.74627036 -1.9586037 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --5.4623103 0.97650236 -1.9482287 --5.4543648 1.0096576 -1.9475535 --5.4397464 1.0415134 -1.9445152 --5.4360232 1.0754193 -1.945528 --5.4173331 1.1063063 -1.9411393 --5.4058371 1.138556 -1.9394515 --5.4015093 1.172303 -1.9404641 --5.3932958 1.2052187 -1.9401267 --5.3876338 1.2387103 -1.9408017 --5.3808479 1.2719613 -1.9411393 --5.3793449 1.3065083 -1.9435025 --5.3785338 1.3413124 -1.9462032 --5.3665547 1.373356 -1.9448528 --5.3653107 1.4081699 -1.9475535 --5.3592963 1.4417976 -1.9485663 --5.3476262 1.4739044 -1.9475535 --5.3384819 1.5066891 -1.9475535 --5.3273282 1.5388947 -1.9468783 --5.3087583 1.5688865 -1.9435025 --5.2936254 1.5997975 -1.9414769 --5.2801118 1.6311374 -1.9401267 --5.2628226 1.6612386 -1.9374259 --5.2426758 1.6903229 -1.9337125 --0 0 -0 --5.2277842 1.7566295 -1.9360756 --5.2177978 1.7889787 -1.9364132 --5.1853971 1.8135046 -1.928311 --5.2220497 1.8623582 -1.9465408 --5.1972542 1.8895416 -1.9414769 --5.1793838 1.919107 -1.9391139 --5.1631074 1.9491889 -1.9374259 --5.1501718 1.9804947 -1.9370884 --5.1545763 2.0185785 -1.9435025 --5.1324754 2.0463345 -1.9397891 --5.106739 2.0724797 -1.9347252 --5.0878363 2.1012602 -1.9323621 --5.0783186 2.1338973 -1.9337125 --5.0564742 2.1613183 -1.9303366 --5.042254 2.1919284 -1.929999 --5.0304317 2.2235868 -1.9306742 --5.023562 2.2574971 -1.9333749 --5.0070472 2.2871056 -1.9323621 --4.994627 2.3185778 -1.9330373 --4.9769011 2.3475745 -1.9316869 --4.9649496 2.3792882 -1.9326997 --4.9443326 2.4068244 -1.9303366 --4.930315 2.4375339 -1.9306742 --4.9169483 2.4685845 -1.9313493 --4.9067407 2.5012724 -1.9333749 --4.8913012 2.5313325 -1.9333749 --4.8673434 2.5569203 -1.929999 --4.83495 2.5778818 -1.9232472 --4.8364277 2.6169055 -1.9303366 --4.8178039 2.6451731 -1.9293238 --4.8014827 2.6746848 -1.9293238 --4.7849808 2.7040958 -1.9293238 --4.7731991 2.7362134 -1.9313493 --4.7612028 2.7682881 -1.9333749 --4.7449379 2.7979283 -1.9337125 --4.7317204 2.8294051 -1.9354004 --4.7166853 2.859849 -1.9364132 --4.7014546 2.8902149 -1.9374259 --4.6788387 2.9160213 -1.9354004 --4.6568789 2.9421618 -1.9337125 --4.6379461 2.9701729 -1.9333749 --4.6148963 2.9955001 -1.9313493 --4.595643 3.023243 -1.9310117 --4.5707407 3.0472078 -1.928311 --4.547277 3.0720346 -1.9262855 --4.5267882 3.098815 -1.9256103 --4.5138769 3.1308239 -1.928311 --4.4868798 3.1530502 -1.9249351 --4.4705157 3.1827052 -1.9262855 --4.4516664 3.2106264 -1.9266231 --4.4372034 3.2417674 -1.9289862 --4.4179854 3.2694926 -1.9293238 --4.4031138 3.3004909 -1.9316869 --4.3872781 3.3308606 -1.9337125 --4.3660111 3.3571439 -1.9333749 --4.3364177 3.3769307 -1.9293238 --4.3133979 3.4017262 -1.928311 --4.2850885 3.4222553 -1.9249351 --4.2186289 3.4117882 -1.9040047 --4.2252903 3.4602699 -1.916833 --4.2047038 3.4867315 -1.9171706 --4.1882768 3.5167022 -1.9195337 --4.1694889 3.5447733 -1.9208841 --4.1433792 3.5666058 -1.9188585 --4.134191 3.6030931 -1.9249351 --4.1176519 3.6333742 -1.9276358 --4.0903659 3.6541817 -1.9252727 --4.0727544 3.6836305 -1.9276358 --4.0493813 3.7079155 -1.9272983 --4.0224118 3.728853 -1.9252727 --3.9953375 3.7495992 -1.9232472 --3.9715729 3.7733953 -1.9229096 --3.9463096 3.7957358 -1.9218968 --3.9215961 3.8185654 -1.9212216 --3.8994329 3.8438773 -1.9218968 --3.8831036 3.8750448 -1.9256103 --3.859916 3.8994672 -1.9259479 --3.8207796 3.9075992 -1.9181833 --3.7947693 3.9289384 -1.9171706 --3.7699404 3.9514678 -1.916833 --3.7494974 3.9786353 -1.9188585 --3.7243731 4.0008779 -1.9185209 --3.7010283 4.0250406 -1.9191961 --3.6813247 4.0532479 -1.9218968 --3.6626713 4.0827661 -1.9252727 --3.6338053 4.1009359 -1.9232472 --3.6110539 4.1259885 -1.9245975 --3.5869005 4.1494923 -1.9252727 --3.5625947 4.1728544 -1.9259479 --3.5332825 4.1903181 -1.9239224 --3.5062997 4.2104726 -1.9232472 --3.4642539 4.2122793 -1.9141324 --3.448432 4.2458768 -1.9198713 --3.4211369 4.2654877 -1.9191961 --3.3761966 4.2627878 -1.9083933 --3.3638957 4.3012176 -1.9164954 --3.3368652 4.321032 -1.9161578 --3.3120012 4.3436708 -1.9171706 --3.2858529 4.3646631 -1.9175082 --3.2533944 4.3771882 -1.9141324 --3.2270319 4.3978271 -1.91447 --3.2044048 4.4236431 -1.9171706 --3.1772015 4.443222 -1.9171706 --3.1498785 4.4626331 -1.9171706 --3.1111364 4.4656582 -1.9100813 --3.0932779 4.4986243 -1.9161578 --3.0656166 4.5175195 -1.9161578 --3.0388875 4.5378089 -1.916833 --3.009949 4.5547991 -1.9161578 --2.9819446 4.5731821 -1.9161578 --2.9477158 4.5818939 -1.9121068 --2.9190419 4.5991001 -1.9117692 --2.8882694 4.6129355 -1.9100813 --2.8579319 4.6273675 -1.9087309 --2.8294849 4.6448159 -1.9087309 --2.8014166 4.6628971 -1.9090685 --2.7741923 4.6824279 -1.9100813 --2.7477837 4.7034254 -1.9117692 --2.7249808 4.7308002 -1.9161578 --2.6945074 4.7449756 -1.915145 --2.6708601 4.7712755 -1.9191961 --2.6374407 4.7801566 -1.9161578 --2.6031134 4.7871537 -1.9124444 --2.5754697 4.8063545 -1.9137948 --2.5454903 4.8212342 -1.9134572 --2.5158598 4.8367624 -1.9134572 --2.4869933 4.8537836 -1.9141324 --2.4605575 4.8756747 -1.916833 --2.4268236 4.8830948 -1.9137948 --2.3972297 4.8987389 -1.9141324 --2.3646748 4.908268 -1.9121068 --2.3341103 4.9218345 -1.9117692 --2.3018758 4.9317989 -1.9100813 --2.2731431 4.9492517 -1.9114317 --2.2411816 4.9596753 -1.9100813 --2.2076483 4.9664526 -1.9073806 --2.1778872 4.9816298 -1.9080558 --2.1495106 5.0000877 -1.9100813 --2.1176906 5.0105815 -1.9090685 --2.0869064 5.0234814 -1.9090685 --2.0563993 5.0370631 -1.9094061 --2.0254538 5.0495863 -1.9094061 --1.9906356 5.0522861 -1.9056926 --1.9599377 5.0652828 -1.9060302 --1.9241399 5.0648947 -1.901304 --1.8956577 5.0836616 -1.9040047 --1.8657234 5.0987329 -1.905355 --1.8363116 5.1154003 -1.9073806 --1.8058275 5.1292348 -1.9083933 --1.7715563 5.1322112 -1.905355 --1.7406358 5.1447678 -1.9060302 --1.7102202 5.1589251 -1.9073806 --1.6773704 5.1657405 -1.9060302 --1.63794 5.1517158 -1.8969153 --1.6088167 5.1697578 -1.8999536 --1.5770655 5.1795321 -1.8999536 --1.5479419 5.1981325 -1.9033295 --1.5141754 5.2012062 -1.9009664 --1.48146 5.2076831 -1.8999536 --1.4469577 5.2076058 -1.8965777 --1.4159632 5.2200203 -1.8979281 --1.3831843 5.2258801 -1.8969153 --1.3496809 5.2288008 -1.8948898 --1.3168831 5.2342453 -1.893877 --1.285638 5.2458839 -1.8952274 --1.2532072 5.252758 -1.8948898 --1.2267013 5.2851048 -1.9040047 --1.1917623 5.2815142 -1.8999536 --1.1607444 5.2951632 -1.9023167 --1.129016 5.3058686 -1.9036671 --1.0989127 5.3246803 -1.9080558 --1.0669591 5.3350148 -1.9094061 --1.033846 5.339613 -1.9087309 --1.0024499 5.3532577 -1.9114317 --0.96773994 5.3491187 -1.9077182 --0.93214691 5.3391929 -1.9019791 --0.90249395 5.3633766 -1.9087309 --0.8710736 5.3781047 -1.9121068 --0.83892691 5.3889289 -1.9141324 --0.80389714 5.3809419 -1.9094061 --0.7704649 5.3829775 -1.9083933 --0.73691016 5.3838735 -1.907043 --0.70312953 5.3826938 -1.9050175 --0.66880977 5.3766317 -1.901304 --0.63669103 5.3881125 -1.9040047 --0.60173196 5.3750796 -1.8979281 --0.56864071 5.3777347 -1.8975905 --0.53768557 5.4017291 -1.9050175 --0.50409329 5.4002404 -1.9033295 --0.47143936 5.4088583 -1.905355 --0.43862259 5.4163399 -1.907043 --0.40573177 5.4236226 -1.9087309 --0.37257445 5.4278884 -1.9094061 --0.33920377 5.4291329 -1.9090685 --0.30567285 5.4273529 -1.9077182 --0.2717987 5.4178448 -1.9036671 --0.23884055 5.4259934 -1.9060302 --0.20557848 5.428297 -1.9063678 --0.17241681 5.4341607 -1.9080558 --0.13882871 5.4257064 -1.9046799 --0.10560808 5.4302206 -1.9060302 --0.072412863 5.4401784 -1.9094061 --0.038922027 5.4254599 -1.9040047 --0.005648056 5.4406571 -1.9094061 -0.02778258 5.4500022 -1.912782 -0.060970549 5.4271398 -1.9046799 -0.094058082 5.4144282 -1.9002912 -0.12732272 5.4156313 -1.9009664 -0.16107874 5.4326248 -1.9073806 -0.19461125 5.4371786 -1.9094061 -0.22824509 5.4424653 -1.9117692 -0.26127401 5.4334407 -1.9090685 -0.29450622 5.4298553 -1.9083933 -0.32810104 5.4326439 -1.9100813 -0.36124161 5.427711 -1.9090685 -0.39460683 5.426331 -1.9094061 -0.42759889 5.420054 -1.9080558 -0.46036938 5.4117012 -1.9060302 -0.49330989 5.405962 -1.9050175 -0.5263797 5.4018965 -1.9046799 -0.55941826 5.3976288 -1.9043423 -0.59304053 5.3987732 -1.9060302 -0.62648094 5.3978376 -1.907043 -0.66061735 5.4023013 -1.9100813 -0.69351298 5.3962789 -1.9094061 -0.72497749 5.3797946 -1.9050175 -0.75823635 5.3771091 -1.9056926 -0.79011875 5.3649054 -1.9029919 -0.82402188 5.3664689 -1.905355 -0.85574645 5.3538756 -1.9026543 -0.88565129 5.3308811 -1.8962401 -0.92090261 5.3401885 -1.9016416 -0.95398319 5.3362908 -1.9023167 -0.98705065 5.3321877 -1.9029919 -1.0202806 5.3288045 -1.9040047 -1.0529583 5.322444 -1.9040047 -1.0850315 5.3131161 -1.9029919 -1.1137333 5.2879362 -1.8962401 -1.1471564 5.2856026 -1.8979281 -1.1851075 5.303268 -1.907043 -1.219523 5.3041525 -1.9100813 -1.2477162 5.2782488 -1.9033295 -1.2785249 5.2640905 -1.9009664 -1.3108006 5.2561464 -1.9009664 -1.3395276 5.2343259 -1.8959025 -1.3752029 5.239665 -1.9009664 -1.4065936 5.2284017 -1.8999536 -1.4376478 5.2160425 -1.8986033 -1.4686034 5.2034993 -1.8972529 -1.500765 5.1952944 -1.8975905 -1.5315475 5.1823773 -1.8962401 -1.5638617 5.1746845 -1.8969153 -1.5955836 5.1649914 -1.8969153 -1.6255456 5.1497178 -1.8948898 -1.6568244 5.138751 -1.8945522 -1.6859697 5.121335 -1.8918515 -1.7227575 5.126955 -1.8979281 -1.7526573 5.111836 -1.8962401 -1.7811939 5.0929885 -1.8932018 -1.8117781 5.0801902 -1.8925266 -1.8432369 5.0698624 -1.8928642 -1.8694056 5.045217 -1.8878005 -1.900992 5.0354128 -1.8884757 -1.9311774 5.0218968 -1.8878005 -1.9598958 5.0046935 -1.885775 -1.9937041 5.000443 -1.8888133 -2.02718 4.9950938 -1.8915139 -2.0603058 4.9886513 -1.893877 -2.0930643 4.9811225 -1.8959025 -2.1239583 4.9690518 -1.8962401 -2.1547832 4.956789 -1.8965777 -2.1878202 4.949501 -1.8989408 -2.2158341 4.9308319 -1.8969153 -2.2480025 4.9214239 -1.8986033 -2.2793462 4.9100995 -1.899616 -2.3102343 4.8977237 -1.9002912 -2.3434963 4.8902473 -1.9029919 -2.3755178 4.8800077 -1.9046799 -2.4058335 4.8661838 -1.9050175 -2.4381802 4.8563781 -1.907043 -2.4683599 4.842165 -1.9073806 -2.5001874 4.8311081 -1.9090685 -2.5271573 4.8106761 -1.907043 -2.5566273 4.7950792 -1.907043 -2.5833139 4.7743344 -1.9050175 -2.6080306 4.7501421 -1.9016416 -2.6334636 4.7274714 -1.8989408 -2.6596429 4.7063069 -1.8969153 -2.6875341 4.6882653 -1.8962401 -2.7171962 4.6733146 -1.8969153 -2.7472544 4.6589866 -1.8979281 -2.7786877 4.6468897 -1.8999536 -2.810076 4.634582 -1.9019791 -2.8424037 4.6236677 -1.9046799 -2.8712182 4.6069388 -1.9050175 -2.9014425 4.5924182 -1.9063678 -2.9275362 4.5713577 -1.9050175 -2.9555304 4.553309 -1.9050175 -2.984448 4.5366611 -1.9056926 -3.0064852 4.5096478 -1.9019791 -3.0251424 4.4778552 -1.8962401 -3.0557508 4.4638696 -1.8982657 -3.0873744 4.4512239 -1.9009664 -3.1146286 4.4321961 -1.9009664 -3.1461322 4.4191365 -1.9036671 -3.1638288 4.3867698 -1.8979281 -3.1840231 4.3581533 -1.893877 -3.2258213 4.3589644 -1.9029919 -3.2587163 4.3473749 -1.9067054 -3.2824845 4.3235493 -1.9050175 -3.314115 4.3100429 -1.9080558 -3.3364506 4.2844276 -1.9056926 -3.3685048 4.2712665 -1.9090685 -3.38114 4.2335997 -1.901304 -3.4147475 4.2222886 -1.9056926 -3.4358201 4.1954303 -1.9029919 -3.4633005 4.1764436 -1.9040047 -3.4785724 4.142859 -1.8982657 -3.4947824 4.1106787 -1.8932018 -0 0 -0 -3.5536211 4.0774183 -1.8979281 -3.5785728 4.0555367 -1.8979281 -3.6027627 4.0328007 -1.8975905 -3.6299651 4.0134115 -1.8989408 -3.6532514 3.9896741 -1.8982657 -3.682142 3.9720156 -1.9006288 -3.7032239 3.9459157 -1.8989408 -3.7286625 3.9244838 -1.899616 -3.7591972 3.9083157 -1.9029919 -3.7863905 3.8885484 -1.9046799 -3.8108397 3.8659127 -1.9050175 -3.8451264 3.8531184 -1.9104189 -3.8693652 3.8301148 -1.9107565 -3.8927937 3.8063009 -1.9107565 -3.9038892 3.7705717 -1.9046799 -3.9303565 3.7497959 -1.9063678 -3.9498661 3.7223811 -1.9046799 -3.969187 3.6948681 -1.9029919 -3.985548 3.6647093 -1.8999536 -4.0072622 3.6395526 -1.899616 -4.0260158 3.611753 -1.8979281 -4.0544415 3.5926006 -1.9009664 -4.0820751 3.5726151 -1.9036671 -4.1067677 3.5499632 -1.9050175 -4.1349154 3.5301991 -1.9080558 -4.157218 3.505368 -1.9083933 -4.1793714 3.4803963 -1.9087309 -4.2028289 3.4564805 -1.9097437 -4.2232275 3.4300337 -1.9094061 -4.246397 3.405823 -1.9104189 -4.2642636 3.3773656 -1.9090685 -4.2871308 3.3528767 -1.9100813 -4.3046432 3.3242068 -1.9087309 -4.3212166 3.2948775 -1.907043 -4.339848 3.2671685 -1.9063678 -4.3462157 3.23037 -1.9002912 -4.3697495 3.2064259 -1.9019791 -4.38553 3.1767919 -1.9002912 -4.3758459 3.1290154 -1.8874629 -4.4049592 3.109164 -1.8918515 -4.44944 3.0998356 -1.9029919 -4.4683762 3.0724759 -1.9029919 -4.489481 3.0465865 -1.9040047 -4.506526 3.0179346 -1.9033295 -4.5249591 2.9902263 -1.9033295 -4.5416446 2.9613769 -1.9026543 -4.5605211 2.9339635 -1.9029919 -4.5800271 2.9069345 -1.9036671 -4.5993733 2.8797765 -1.9043423 -4.6385789 2.8648574 -1.9134572 -4.6335621 2.8226283 -1.9040047 -4.6524081 2.7951138 -1.9046799 -4.6759491 2.7703536 -1.9073806 -4.6920471 2.7411354 -1.907043 -4.7161188 2.7165229 -1.9100813 -4.7277875 2.6847451 -1.9080558 -4.7466354 2.6570647 -1.9090685 -4.7603774 2.6265256 -1.9080558 -4.7739229 2.5959179 -1.907043 -4.7889318 2.5661321 -1.9067054 -4.8045869 2.5366995 -1.9067054 -4.8250718 2.5097778 -1.9087309 -4.8420558 2.4809833 -1.9094061 -4.8613896 2.453347 -1.9110941 -4.8771944 2.4238908 -1.9114317 -4.8936663 2.3947468 -1.9121068 -4.908268 2.3646748 -1.9121068 -4.9192829 2.3329 -1.9107565 -4.945446 2.3082466 -1.9154826 -4.9620819 2.2790372 -1.9164954 -4.97683 2.2489352 -1.916833 -4.9922562 2.2191205 -1.9175082 -5.0057783 2.1884468 -1.9175082 -5.0121942 2.154716 -1.9148074 -5.0322571 2.1268535 -1.9175082 -5.0469508 2.0966582 -1.9181833 -5.0562348 2.0642281 -1.916833 -5.0723 2.0345666 -1.9181833 -5.0838127 2.0030601 -1.9178458 -5.0942516 1.9711493 -1.9171706 -5.1027308 1.938517 -1.9158202 -5.1198211 1.9091444 -1.9178458 -5.1305552 1.8773704 -1.9175082 -5.1455216 1.8471268 -1.9188585 -5.1683006 1.8195844 -1.9232472 -5.1722498 1.7853804 -1.9205465 -5.1857824 1.7545156 -1.9215592 -5.1910896 1.7208856 -1.9195337 -5.2167702 1.6939445 -1.9252727 -5.227066 1.6619031 -1.9252727 -5.2317719 1.6281205 -1.9232472 -5.2362609 1.5943429 -1.9212216 -5.2504559 1.5635273 -1.9229096 -5.2554317 1.5299659 -1.9212216 -5.268342 1.4987209 -1.922572 -5.2819734 1.467627 -1.92426 -5.2917876 1.4354362 -1.9245975 -5.2995853 1.4026985 -1.92426 -5.3053584 1.3694485 -1.9232472 -5.3054457 1.3348022 -1.9202089 -5.3107934 1.301551 -1.9191961 -5.3214264 1.2695956 -1.9202089 -5.3291163 1.23692 -1.9202089 -5.3347692 1.2037834 -1.9195337 -5.3540077 1.1736484 -1.9239224 -5.368474 1.1423424 -1.9266231 -5.3689289 1.1080483 -1.92426 -5.381165 1.0761924 -1.9262855 -5.3848944 1.0426168 -1.9252727 -5.3884149 1.0090362 -1.92426 -5.394505 0.97595447 -1.92426 -5.3966827 0.94218826 -1.9229096 -5.4014339 0.9089008 -1.922572 -5.4059801 0.87559056 -1.9222344 -5.4159012 0.84312791 -1.9239224 -5.4172487 0.80932409 -1.922572 -5.4528618 0.7804727 -1.9337125 -5.4547501 0.74661672 -1.9326997 -5.464829 0.71386492 -1.9347252 -5.4775128 0.68136626 -1.9377635 -5.478786 0.64741248 -1.9367508 -5.4714303 0.61252558 -1.9326997 -5.4807019 0.57953626 -1.9347252 -5.4879012 0.54626966 -1.9360756 -5.486464 0.51214844 -1.9343876 -5.4810634 0.47773826 -1.9313493 -5.4829535 0.44402203 -1.9310117 -5.4808812 0.41001946 -1.9293238 -5.4823551 0.37631714 -1.9289862 -5.4883184 0.34290603 -1.9303366 -5.4921989 0.3093299 -1.9310117 -5.4977541 0.27581352 -1.9323621 -5.5049853 0.24232352 -1.9343876 -5.5063686 0.20854099 -1.9343876 -5.5188341 0.17510968 -1.9384387 -5.5245094 0.14136419 -1.9401267 -5.5290375 0.10753727 -1.9414769 -5.5211225 0.073496327 -1.9384387 -5.5242934 0.039638441 -1.9394515 -5.5187845 0.0057349838 -1.9374259 -5.5130682 -0.02809938 -1.9354004 -5.509027 -0.061884385 -1.93405 -5.5076027 -0.095669694 -1.9337125 -5.5134993 -0.12961629 -1.9360756 -5.5097775 -0.16336055 -1.9350628 -5.5105529 -0.19723204 -1.935738 -5.5111198 -0.23111919 -1.9364132 -5.5142989 -0.26515612 -1.9381011 -5.5078683 -0.29873168 -1.9364132 -5.5049925 -0.33246505 -1.9360756 -5.5019093 -0.36617434 -1.935738 -5.4995589 -0.39992654 -1.935738 -5.4913712 -0.43321991 -1.9337125 -5.484858 -0.46658731 -1.9323621 -5.484704 -0.50048941 -1.9333749 -5.4796562 -0.53395104 -1.9326997 -5.4762769 -0.56756353 -1.9326997 -5.4736271 -0.60125732 -1.9330373 -5.4763799 -0.63559073 -1.9354004 -5.4686394 -0.66872448 -1.93405 -5.4625659 -0.70202696 -1.9333749 -5.4572229 -0.7354058 -1.9330373 -5.456336 -0.76940227 -1.9343876 -5.4496498 -0.80259311 -1.9337125 -5.4455528 -0.83615923 -1.93405 -5.4468265 -0.87059623 -1.9364132 -5.4404535 -0.90384674 -1.9360756 -5.4338775 -0.93705183 -1.935738 -5.4289522 -0.97054142 -1.9360756 -5.4173412 -1.002807 -1.93405 -5.4166336 -1.0370899 -1.9360756 -5.4147849 -1.0712193 -1.9377635 -5.4053435 -1.1038588 -1.9367508 -5.4012318 -1.1375864 -1.9377635 -5.3959899 -1.1711055 -1.9384387 -5.3914585 -1.2048082 -1.9394515 -5.3857989 -1.2382886 -1.9401267 -5.3790159 -1.2715284 -1.9404641 -5.3656244 -1.303177 -1.9384387 -5.3529606 -1.3349367 -1.9367508 -5.3401089 -1.3665903 -1.9350628 -5.3370862 -1.4007642 -1.9370884 -5.3074837 -1.4278628 -1.9293238 -5.3167725 -1.4654028 -1.9360756 -5.2986212 -1.4954423 -1.9326997 -5.2902503 -1.528187 -1.9330373 -5.2699413 -1.5574181 -1.9289862 -5.278307 -1.5951694 -1.935738 -5.2756152 -1.6297486 -1.9384387 -5.2744923 -1.6649212 -1.9418145 -5.257906 -1.695232 -1.9394515 -5.2509818 -1.7286391 -1.9408017 -5.2393837 -1.7605263 -1.9404641 -5.2267017 -1.7920309 -1.9397891 -5.2120538 -1.822825 -1.9384387 -5.1972246 -1.8535067 -1.9370884 -5.1786761 -1.8827889 -1.9343876 -5.1537862 -1.9096245 -1.9293238 -5.1181941 -1.9322369 -1.9202089 -5.075491 -1.9517826 -1.9083933 -5.0292358 -1.9695047 -1.8952274 -4.9409847 -1.9700029 -1.8658572 -4.8869371 -1.9832957 -1.849653 -4.7972422 -1.9812709 -1.8196076 -4.7285867 -1.9869711 -1.7976644 -4.6747584 -1.9981925 -1.7814602 -4.6183825 -2.0077033 -1.7642431 -4.5663719 -2.0185008 -1.7487141 -4.5229907 -2.0325937 -1.7365609 -4.4856029 -2.0489681 -1.7267709 -4.4447703 -2.0633757 -1.7156305 -4.4005256 -2.0757537 -1.7031397 -4.3707285 -2.0945811 -1.696388 -4.3450985 -2.1151812 -1.6913241 -4.2712822 -2.1117704 -1.6670178 -4.2742281 -2.145962 -1.673432 -4.1754379 -2.1285496 -1.6389979 -4.1405625 -2.1428826 -1.6302207 -4.1206694 -2.1647468 -1.62752 -4.1122932 -2.1926467 -1.6295455 -4.0904827 -2.2133591 -1.6261696 -4.0627975 -2.2307158 -1.6204306 -4.0144949 -2.236366 -1.606252 -3.9531648 -2.2340996 -1.5866718 -3.8666987 -2.2166555 -1.5566264 -3.8554664 -2.2417586 -1.5576392 -3.7637959 -2.2194796 -1.5252308 -3.569134 -2.1343348 -1.4496109 -3.588973 -2.1762013 -1.4634521 -3.4913507 -2.1464272 -1.4280053 -3.4397681 -2.1439142 -1.4118011 -3.407449 -2.152915 -1.403699 -3.8959639 -2.4950793 -1.6173923 -3.5939612 -2.3329244 -1.4948478 -3.3129802 -2.1795788 -1.3804054 -3.758522 -2.5058069 -1.578232 -3.0761583 -2.0783393 -1.2895942 -3.0711157 -2.1024919 -1.2929701 -3.0473282 -2.1137865 -1.2882439 -2.9950213 -2.1048462 -1.2710268 -2.9406397 -2.0937071 -1.2527971 -2.9117043 -2.1001494 -1.2457078 -2.9132051 -2.128525 -1.2521219 -2.8176119 -2.0853324 -1.2153249 -2.8025038 -2.1008883 -1.2143121 -2.7805634 -2.1112149 -1.210261 -2.7444232 -2.110451 -1.1997957 -2.6772044 -2.0850358 -1.1751518 -2.6517949 -2.0915153 -1.1694129 -2.6308205 -2.1012862 -1.1656994 -2.6068985 -2.1085112 -1.1606356 -2.5829875 -2.1155219 -1.1555717 -2.5540166 -2.1181135 -1.1481447 -2.540972 -2.1337447 -1.1481447 -2.517791 -2.1407607 -1.1434186 -2.4468195 -2.1064324 -1.1160738 -2.3870113 -2.0805919 -1.093793 -2.3784351 -2.0989356 -1.0958186 -2.3444512 -2.0946779 -1.085691 -2.3315542 -2.1090238 -1.085691 -2.3164868 -2.1213834 -1.0846782 -2.304117 -2.1361971 -1.0850158 -2.2957711 -2.1548033 -1.0873789 -2.2818239 -2.168201 -1.0870413 -2.269834 -2.1834662 -1.0877165 -2.240207 -2.1815934 -1.0796144 -2.2207453 -2.1893513 -1.0765761 -2.2132668 -2.20892 -1.0796144 -2.1943736 -2.2171073 -1.0769137 -2.1754634 -2.2251461 -1.0742129 -2.1630771 -2.2398067 -1.0748881 -2.1473439 -2.250994 -1.0738754 -2.130909 -2.2613873 -1.072525 -2.1169932 -2.2744198 -1.072525 -2.1055465 -2.290138 -1.0738754 -2.097784 -2.3099818 -1.0772513 -2.077913 -2.3165045 -1.0742129 -2.0561683 -2.3207572 -1.0701619 -2.0400298 -2.3312051 -1.0691491 -2.0226095 -2.3401182 -1.0674613 -2.0051565 -2.3489056 -1.0657732 -1.9900992 -2.360445 -1.0654356 -1.9719639 -2.3682721 -1.0634102 -1.9699525 -2.3955934 -1.0704995 -1.9534358 -2.4054439 -1.0694867 -1.9392285 -2.418119 -1.0698243 -1.9196789 -2.4240694 -1.0671237 -1.9018693 -2.4320958 -1.0654356 -1.8880612 -2.4452095 -1.0661108 -1.8735929 -2.4574969 -1.0664485 -1.8567802 -2.4666908 -1.0654356 -1.8438561 -2.4810591 -1.0667861 -1.8347241 -2.5006735 -1.0704995 -1.8127186 -2.502737 -1.0664485 -1.7923999 -2.5069218 -1.0634102 -1.7764411 -2.5171034 -1.0630726 -1.7512766 -2.5140548 -1.056996 -1.7331507 -2.5208752 -1.055308 -1.7239937 -2.5408082 -1.0593591 -1.7130855 -2.5583773 -1.0623974 -1.7056596 -2.5814049 -1.0677987 -1.6918452 -2.5949757 -1.0691491 -1.6723254 -2.5997667 -1.0667861 -1.6694584 -2.6306412 -1.0755633 -1.655284 -2.6440263 -1.0769137 -1.6494178 -2.6709504 -1.084003 -1.6212438 -2.6617286 -1.0759009 -1.6073054 -2.6756604 -1.0775888 -1.5846194 -2.6749449 -1.0732002 -1.5672266 -2.6829922 -1.072525 -1.5450959 -2.6827705 -1.0684739 -1.5272111 -2.6897449 -1.0674613 -1.5106784 -2.6990652 -1.0674613 -1.493634 -2.7074597 -1.0671237 -1.4823899 -2.7264962 -1.0711746 -1.4669665 -2.7380297 -1.0721874 -1.4492595 -2.7453146 -1.0715122 -1.4297807 -2.749145 -1.0694867 -1.4128854 -2.7578664 -1.0694867 -1.3938161 -2.7622821 -1.0677987 -1.3789358 -2.774997 -1.0694867 -1.3693312 -2.7986238 -1.0755633 -1.3554024 -2.8137572 -1.078264 -1.34618 -2.8390303 -1.0850158 -1.3351055 -2.8608837 -1.0904171 -1.3202769 -2.8750093 -1.0927804 -1.3049374 -2.8882029 -1.0948058 -1.2868087 -2.8952951 -1.0944682 -1.2644938 -2.8927872 -1.0904171 -1.2515539 -2.9117332 -1.0948058 -1.2270671 -2.9037516 -1.0887293 -1.2012808 -2.8921027 -1.0813023 -1.1892061 -2.9133623 -1.0867038 -1.1727096 -2.9240987 -1.0880541 -1.1533651 -2.9277363 -1.0867038 -1.1370779 -2.9391472 -1.0883917 -1.1186879 -2.945189 -1.0880541 -1.1012534 -2.9537616 -1.0887293 -1.0895792 -2.978142 -1.095481 -1.0652413 -2.9679391 -1.0890669 -1.0445091 -2.9673166 -1.0863662 -1.0238247 -2.9665518 -1.0836655 -1.0049995 -2.9709947 -1.0829903 -0.9855659 -2.9735315 -1.0816399 -0.96468514 -2.9714656 -1.0786016 -0.94186997 -2.9629765 -1.0732002 -0.92730874 -2.9803839 -1.0775888 -0.91558588 -3.0076284 -1.085691 -0.89845777 -3.0177004 -1.0873789 -0.88545126 -3.0421352 -1.0944682 -0.88248348 -3.1027377 -1.1150612 -0.85889167 -3.0917695 -1.1089846 -0.84212321 -3.1051574 -1.1120229 -0.81992257 -3.0984368 -1.1076342 -0.78418714 -3.0386999 -1.0836655 -0.75794613 -3.0133309 -1.072525 -0.73518401 -3.0005548 -1.0661108 -0.7130444 -2.9894445 -1.0603719 -0.69575256 -2.9983478 -1.0620598 -0.67920727 -3.0108242 -1.065098 -0.66394639 -3.0296462 -1.0704995 -0.64299262 -3.022615 -1.0664485 -0.62557602 -3.0320346 -1.0684739 -0.6054827 -3.0284319 -1.0657732 -0.5870682 -3.0330143 -1.0661108 -0.57849973 -3.0902209 -1.085691 -0.55835408 -3.0872285 -1.0833279 -0.55057573 -3.154577 -1.1066214 -0.53386575 -3.173676 -1.1123605 -0.51182276 -3.1610961 -1.1066214 -0.49125811 -3.1567364 -1.1039207 -0.46520019 -3.1150055 -1.0877165 -0.44714561 -3.1252556 -1.0904171 -0.42770556 -3.1260753 -1.0897421 -0.40888226 -3.1314409 -1.0907547 -0.38896281 -3.1282861 -1.0887293 -0.37042385 -3.1362226 -1.0907547 -0.35337403 -3.1580808 -1.0978441 -0.33329642 -3.1536372 -1.095481 -0.31291342 -3.1453195 -1.0917675 -0.29553446 -3.167799 -1.0991945 -0.27641886 -3.1733036 -1.1005448 -0.2551935 -3.1533611 -1.0927804 -0.2354183 -3.1492355 -1.0907547 -0.21512258 -3.1365345 -1.085691 -0.19563805 -3.1340377 -1.0843406 -0.17635128 -3.1342392 -1.084003 -0.15678599 -3.1286817 -1.0816399 -0.13733703 -3.1239424 -1.0796144 -0.11870169 -3.1388357 -1.0846782 -0.099439919 -3.1395049 -1.0846782 -0.080415882 -3.1494658 -1.0880541 -0.06140196 -3.1658988 -1.093793 -0.041899621 -3.1605687 -1.0917675 -0.022546886 -3.1664138 -1.093793 -0.0031187588 -3.167434 -1.0941306 --0.016335223 -3.1711586 -1.095481 --0.035834793 -3.1747637 -1.0968313 --0.055314101 -3.174484 -1.0968313 --0.075033918 -3.1844361 -1.1005448 --0.094571836 -3.1839159 -1.1005448 --0.11447579 -3.1936233 -1.1042583 --0.13469929 -3.2079082 -1.1096597 --0.15559891 -3.2324071 -1.1187747 --0.1806733 -3.3282027 -1.1535462 --0.19990118 -3.3073003 -1.1464568 --0.219816 -3.3003762 -1.1444314 --0.240881 -3.310231 -1.1484823 --0.26052201 -3.3002453 -1.145444 --0.27957129 -3.2845159 -1.1403803 --0.29877925 -3.2724273 -1.1366668 --0.31930897 -3.2752166 -1.1383547 --0.33969021 -3.2760046 -1.1393675 --0.35834706 -3.2607591 -1.1346413 --0.37823951 -3.2575641 -1.1343037 --0.39890555 -3.260788 -1.1363292 --0.4208245 -3.273217 -1.1417305 --0.44127759 -3.2733717 -1.1427433 --0.46279931 -3.2808554 -1.1464568 --0.48072827 -3.2630539 -1.1410555 --0.72763735 -4.7384486 -1.677483 --0.7552132 -4.7245998 -1.6741072 --0.78372604 -4.7170911 -1.6730944 --0.81297457 -4.7140489 -1.6737696 --0.8422153 -4.710825 -1.6744447 --0.87247461 -4.7129731 -1.6771455 --0.90084565 -4.7047577 -1.6761327 --0.92969656 -4.6991415 -1.6761327 --0.95926553 -4.6970377 -1.677483 --0.98884368 -4.6947474 -1.6788334 --1.0208247 -4.70331 -1.6842347 --1.0459706 -4.6804223 -1.6781582 --1.0727718 -4.6656599 -1.6751199 --1.1013795 -4.6589894 -1.6751199 --1.1319445 -4.6603765 -1.6781582 --1.1605188 -4.6533432 -1.6781582 --1.1913823 -4.6552539 -1.6815341 --1.2208796 -4.6514983 -1.6828845 --1.23204 -4.579381 -1.6589156 --1.1403437 -4.1370544 -1.497211 --1.2656498 -4.4841957 -1.629208 --1.334143 -4.6183267 -1.6822093 --1.3600551 -4.6019292 -1.679171 --1.3890831 -4.5962005 -1.6801838 --1.418092 -4.5902886 -1.6811965 --1.4476472 -4.5859895 -1.6828845 --1.4769142 -4.5806041 -1.6842347 --1.5052867 -4.57235 -1.6845723 --1.5324144 -4.5603504 -1.6835597 --1.5563996 -4.5392866 -1.679171 --1.5848441 -4.5314283 -1.6798462 --1.6151476 -4.5287113 -1.6825469 --1.6454774 -4.5257931 -1.6852475 --1.6784478 -4.5297341 -1.6906489 --1.7075398 -4.5228729 -1.6919993 --1.7389752 -4.521975 -1.6957128 --1.7704636 -4.5208611 -1.6994263 --1.8009582 -4.5169082 -1.702127 --1.2025824 -2.9627969 -1.1049335 --1.2203798 -2.9544921 -1.1045959 --1.8655654 -4.4396019 -1.6852475 --1.89721 -4.4384584 -1.6892986 --1.927785 -4.4345031 -1.6923369 --1.9576218 -4.428618 -1.6947 --1.9940169 -4.4371295 -1.7028022 --2.008692 -4.3974113 -1.6919993 --1.5700114 -3.3817716 -1.2953333 --1.5835048 -3.3567498 -1.2892566 --1.5959371 -3.3299928 -1.2825049 --1.6159276 -3.3192911 -1.2821673 --1.6379324 -3.3126888 -1.2835176 --1.6603392 -3.3067827 -1.2852056 --1.6840175 -3.303242 -1.2879063 --1.7180965 -3.3195992 -1.2987092 --1.7471867 -3.3256614 -1.3054608 --2.2546384 -4.2285829 -1.6768079 --2.2783027 -4.2105293 -1.6751199 --2.3004715 -4.1898694 -1.6724192 --2.3352969 -4.192122 -1.679171 --2.3605123 -4.1768947 -1.6788334 --2.3879693 -4.1655989 -1.6801838 --2.4167953 -4.1565647 -1.6825469 --2.44082 -4.1392245 -1.6815341 --2.4656887 -4.1233621 -1.6811965 --2.4899669 -4.1065454 -1.6805214 --2.5175817 -4.0951996 -1.6822093 --2.5396752 -4.0748816 -1.6801838 --2.5646303 -4.0592217 -1.6801838 --2.5889814 -4.0426164 -1.6798462 --2.6137376 -4.0266547 -1.6798462 --2.6383955 -4.0105414 -1.6798462 --2.6634762 -3.99506 -1.6801838 --2.6705523 -3.9529014 -1.6690433 --2.7021997 -3.9473157 -1.6737696 --2.7220778 -3.924473 -1.6710688 --2.7461066 -3.9076967 -1.6710688 --2.7596607 -3.8762031 -1.6646546 --2.79055 -3.8691225 -1.6690433 --2.8075752 -3.8428061 -1.6649922 --2.8277421 -3.8209667 -1.6629667 --2.8449242 -3.7952585 -1.6592532 --2.8624666 -3.7702334 -1.6558774 --2.8769405 -3.741405 -1.6508136 --2.3030503 -2.9572058 -1.3024225 --2.321152 -2.9430189 -1.3024225 --2.3362296 -2.9250433 -1.3007346 --2.9809136 -3.6857772 -1.6582404 --3.001684 -3.6652324 -1.6572278 --3.0211129 -3.6431224 -1.6555398 --3.0440152 -3.6252375 -1.6558774 --3.0625441 -3.6021883 -1.6538519 --3.0815189 -3.579762 -1.6521639 --3.1077547 -3.5657544 -1.6545271 --3.130198 -3.5473242 -1.6548647 --3.1531591 -3.5294549 -1.6555398 --3.1690738 -3.5037577 -1.6525015 --3.1917841 -3.4856353 -1.6531767 --3.210552 -3.4632237 -1.6518263 --3.2323856 -3.4441454 -1.6521639 --3.2528093 -3.4235644 -1.6518263 --3.2776694 -3.4076121 -1.6538519 --3.3123057 -3.4015999 -1.6609412 --3.3093281 -3.3570774 -1.648788 --3.3285346 -3.3353758 -1.6481129 --3.3422482 -3.3082671 -1.644737 --3.373925 -3.2988853 -1.650476 --3.386656 -3.2709274 -1.6467625 --3.4107485 -3.2539845 -1.648788 --3.438185 -3.2400973 -1.6525015 --3.459379 -3.2202227 -1.6531767 --3.47838 -3.1982987 -1.6528391 --3.4979389 -3.1768954 -1.6528391 --3.5299773 -3.166688 -1.6589156 --3.5514545 -3.1468418 -1.6599284 --3.5714047 -3.1256111 -1.660266 --3.5983486 -3.1104105 -1.6639795 --3.6187978 -3.0894952 -1.6646546 --3.6427233 -3.0714805 -1.6670178 --3.671627 -3.0575051 -1.671744 --3.6954072 -3.0391045 -1.6741072 --3.718369 -3.0199337 -1.6761327 --3.7346261 -2.9952943 -1.6751199 --3.7521968 -2.9717383 -1.6747823 --3.7711017 -2.9492393 -1.6751199 --3.7868922 -2.9243186 -1.6741072 --3.8040156 -2.9004567 -1.6737696 --3.8255007 -2.8798921 -1.6754575 --3.8544309 -2.8647885 -1.6805214 --3.8787661 -2.8460965 -1.6835597 --3.8984432 -2.8239002 -1.6845723 --3.9218221 -2.8043072 -1.687273 --3.9481828 -2.7867048 -1.6913241 --3.9737027 -2.7683463 -1.6950376 --3.9921653 -2.7449787 -1.6957128 --4.0011449 -2.7151453 -1.6923369 --4.0232038 -2.6942105 -1.6947 --4.0459414 -2.6736259 -1.6974007 --4.0819817 -2.6616049 -1.7058405 --4.1045685 -2.640583 -1.7085412 --4.133409 -2.6234198 -1.7139425 --4.1693726 -2.610498 -1.7223822 --4.1877141 -2.58635 -1.723395 --4.2002892 -2.5586469 -1.7220447 --4.2352738 -2.544462 -1.7301468 --4.2621441 -2.5251451 -1.7348731 --4.2799959 -2.50037 -1.7358857 --4.3074918 -2.4811099 -1.7409496 --4.3300009 -2.4588168 -1.7439879 --4.3499341 -2.4349611 -1.7460134 --4.3672652 -2.4095888 -1.7470262 --4.384449 -2.3840957 -1.7480389 --4.4114394 -2.3638179 -1.7531028 --4.4375138 -2.342859 -1.757829 --4.459321 -2.3194969 -1.7608672 --4.4810085 -2.2959549 -1.7639056 --4.5008941 -2.2713859 -1.7662687 --4.5164323 -2.2445641 -1.7669439 --4.5377288 -2.2205338 -1.7699822 --4.5690761 -2.2012298 -1.7770715 --4.591001 -2.1771872 -1.7804474 --4.5181274 -2.1087606 -1.746351 --4.5172958 -2.0747113 -1.7409496 --4.5496693 -2.0558712 -1.7487141 --4.5897222 -2.0401533 -1.759517 --4.6219902 -2.0206268 -1.7672814 --4.662838 -2.004499 -1.7784219 --4.7114639 -1.9912441 -1.7926006 --4.759232 -1.9771061 -1.8064417 --4.8078742 -1.9628123 -1.8206204 --4.8757381 -1.9557062 -1.842226 --4.9533272 -1.9516367 -1.8675451 --5.0310469 -1.9466877 -1.8928642 --5.1044908 -1.9391857 -1.9164954 --5.1648002 -1.9259207 -1.9350628 --5.2118783 -1.9071349 -1.9485663 --5.2447443 -1.8827538 -1.9566684 --5.2624125 -1.8527259 -1.9590316 --5.2888074 -1.8256239 -1.9647706 --5.3079343 -1.7958537 -1.9678088 --5.3242145 -1.7650286 -1.9698343 --5.3430014 -1.7349435 -1.9728726 --5.3517523 -1.7015563 -1.9721975 --5.3674846 -1.6703651 -1.974223 --5.3722301 -1.6357539 -1.9721975 --5.3830676 -1.6030284 -1.9725351 --5.3855724 -1.567863 -1.9698343 --5.3969021 -1.5353035 -1.9705095 --5.4007792 -1.5006474 -1.968484 --5.4135194 -1.4684666 -1.9698343 --5.4105983 -1.4320903 -1.9654458 --5.4147267 -1.3976879 -1.9637578 --5.416811 -1.3628293 -1.9613947 --5.4387846 -1.3329287 -1.9664584 --5.4422832 -1.2984393 -1.9647706 --5.4483137 -1.2645957 -1.9640954 --5.4550524 -1.2309345 -1.9637578 --5.4625025 -1.1974398 -1.9637578 --5.4706678 -1.1640959 -1.9640954 --5.4841604 -1.1318389 -1.9664584 --5.4983859 -1.0996447 -1.9691592 --5.5096507 -1.0667815 -1.9708471 --5.5244193 -1.0345148 -1.9738854 --5.5334415 -1.001101 -1.9748982 --5.543189 -0.96777749 -1.9762485 --5.5499511 -0.93390316 -1.9765861 --5.561152 -0.90073514 -1.9786117 --5.561924 -0.86587125 -1.9769237 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --5.2559419 1.0406026 -1.9463221 --5.267828 1.0765911 -1.9532804 --5.2574534 1.1081195 -1.9518888 --5.2450585 1.1391627 -1.9498012 --5.2333956 1.1703004 -1.9480617 --5.2252026 1.2021794 -1.9477137 --5.2186403 1.234434 -1.9480617 --5.2155223 1.2675397 -1.9498012 --5.2076468 1.2995178 -1.9498012 --5.2041159 1.3326106 -1.9515408 --5.1958413 1.3645173 -1.9515408 --5.1828446 1.3951533 -1.9498012 --5.1696677 1.4256812 -1.9480617 --5.156312 1.4561 -1.9463221 --5.1373734 1.4848455 -1.942495 --5.1227722 1.5147437 -1.9404075 --5.1268415 1.5502211 -1.9456263 --5.1235027 1.5835888 -1.9480617 --5.108326 1.613301 -1.9459741 --5.1090369 1.6480709 -1.9501492 --5.0792394 1.6729318 -1.942495 --5.0626588 1.7019733 -1.9400595 --5.0397062 1.7287438 -1.9351887 --5.0077672 1.7521986 -1.9268386 --4.9889755 1.7800554 -1.9237075 --0 0 -0 --4.9887309 1.8492953 -1.9324054 --5.0290318 1.8994259 -1.9529325 --5.019032 1.9309213 -1.9536283 --5.0088353 1.9623655 -1.9543241 --4.9984417 1.9937574 -1.9550201 --4.914022 1.9951017 -1.9261428 --4.9094853 2.0284398 -1.9292741 --4.9081812 2.063251 -1.933797 --4.904048 2.0970161 -1.9372762 --4.8936677 2.1281896 -1.9383199 --4.8873763 2.1612113 -1.9411033 --4.8842831 2.1957741 -1.9452783 --4.8519602 2.2171259 -1.9376241 --4.8297629 2.2429047 -1.934145 --4.8235397 2.2760997 -1.9372762 --4.790041 2.2963278 -1.9292741 --4.7826033 2.3289609 -1.9320575 --4.7606606 2.3545203 -1.9289262 --4.7519879 2.3866334 -1.9313616 --4.751451 2.4229896 -1.9372762 --4.7314997 2.4495113 -1.9351887 --4.713891 2.4771881 -1.934145 --4.6986027 2.5060654 -1.934145 --4.6889081 2.5379734 -1.9365804 --4.6650305 2.5621812 -1.9331012 --4.6451273 2.5884745 -1.9313616 --4.6275253 2.6160045 -1.9306657 --4.6105733 2.6438828 -1.9303179 --4.5829196 2.6655214 -1.925447 --4.5737448 2.69788 -1.9285783 --4.5619316 2.7287817 -1.9306657 --4.5459037 2.7572083 -1.9310137 --4.5360866 2.7894709 -1.934145 --4.5212717 2.8187399 -1.9351887 --4.5023065 2.8454268 -1.9344928 --4.4879198 2.8750224 -1.9358846 --4.4670496 2.9004626 -1.9344928 --4.443687 2.9242086 -1.9320575 --4.4233212 2.9498587 -1.9310137 --4.4012547 2.9743185 -1.9292741 --4.3829217 3.0012681 -1.9292741 --4.3628836 3.0270355 -1.9285783 --4.3442278 3.0537486 -1.9285783 --4.3254085 3.0803468 -1.9285783 --4.3071866 3.1073778 -1.9289262 --4.2850118 3.1315343 -1.9275346 --4.2732506 3.1633475 -1.9310137 --4.2515101 3.1878202 -1.9299699 --4.2385883 3.2189517 -1.9331012 --4.2053838 3.234607 -1.9268386 --4.1898942 3.2638078 -1.9289262 --4.1719966 3.2911975 -1.9299699 --4.1553855 3.3196609 -1.9317095 --4.1378531 3.3474548 -1.9331012 --4.1223116 3.376941 -1.9355366 --4.1051207 3.405165 -1.9372762 --4.0870209 3.4327018 -1.9386679 --4.0665956 3.4583223 -1.9390157 --4.0460091 3.4838212 -1.9393637 --4.0245566 3.5085814 -1.9393637 --4.0022502 3.5325892 -1.9390157 --3.9798002 3.5564551 -1.9386679 --3.9446967 3.5688543 -1.9320575 --3.9289451 3.5986917 -1.9351887 --3.9074774 3.6233692 -1.9355366 --3.8838046 3.6459932 -1.9348408 --3.8538861 3.6626492 -1.9310137 --3.8347173 3.6894779 -1.9327533 --3.8187215 3.7194808 -1.9362324 --3.7831461 3.7303324 -1.9296221 --3.7588592 3.7521501 -1.9289262 --3.7331285 3.7724771 -1.9275346 --3.7040141 3.7892771 -1.9244033 --3.6735318 3.8045127 -1.9205762 --3.646884 3.8235888 -1.9188366 --3.6207833 3.8431635 -1.9174449 --3.6022422 3.8707995 -1.9202282 --3.5733492 3.8873067 -1.9174449 --3.55006 3.9098535 -1.9177928 --3.5385187 3.9455245 -1.9247512 --3.5142429 3.9671621 -1.9247512 --3.4818113 3.979476 -1.9202282 --3.4561024 3.9993463 -1.9195324 --3.4296722 4.0183372 -1.9184886 --3.4061599 4.0407395 -1.9191844 --3.3837011 4.064446 -1.9205762 --3.3533411 4.0786128 -1.9174449 --3.3371139 4.1100311 -1.9226637 --3.3153503 4.134819 -1.9247512 --3.2835171 4.1469975 -1.9209241 --3.2551234 4.163373 -1.9191844 --3.2283707 4.1817832 -1.9184886 --3.1992419 4.1970391 -1.9164011 --3.1723018 4.2150917 -1.9157053 --3.1480558 4.2367353 -1.9167491 --3.1364138 4.2756295 -1.925795 --3.1002252 4.2811232 -1.9195324 --3.0640876 4.286335 -1.9132699 --3.0496173 4.3219099 -1.9209241 --3.0251837 4.3436184 -1.9223157 --2.9990056 4.3628716 -1.9226637 --2.9642868 4.3695517 -1.9174449 --2.9389839 4.3899956 -1.9184886 --2.9068263 4.4001226 -1.9150095 --2.8782375 4.4155192 -1.9139657 --2.8485553 4.4291534 -1.9122262 --2.8233335 4.4497156 -1.9136178 --2.7984636 4.4709291 -1.9153574 --2.7704854 4.4872184 -1.9150095 --2.7453375 4.5081372 -1.9167491 --2.7132816 4.5176635 -1.9136178 --2.6864657 4.53584 -1.9143137 --2.657166 4.5498095 -1.9132699 --2.6277959 4.5635905 -1.9122262 --2.6025207 4.5845208 -1.9143137 --2.5743415 4.6004033 -1.9143137 --2.5487814 4.6210384 -1.9164011 --2.5176938 4.6316481 -1.9143137 --2.4892271 4.6470089 -1.9143137 --2.4619789 4.6646829 -1.9153574 --2.4341755 4.681365 -1.9160533 --2.4054053 4.6962128 -1.9160533 --2.3773887 4.7125583 -1.9167491 --2.3463435 4.7228584 -1.9150095 --2.3164968 4.7354817 -1.9143137 --2.2853639 4.7453823 -1.9125741 --2.2554009 4.7576213 -1.9118782 --2.2249775 4.7688217 -1.9108344 --2.1960657 4.783236 -1.9111824 --2.1674466 4.7983298 -1.9118782 --2.1368222 4.8089681 -1.9108344 --2.1087756 4.8254256 -1.9122262 --2.0776479 4.8348284 -1.9108344 --2.0483074 4.8483491 -1.9111824 --2.019598 4.8634238 -1.9122262 --1.9914889 4.880065 -1.9139657 --1.9608104 4.8904519 -1.9132699 --1.9297363 4.8997741 -1.9122262 --1.8979454 4.9071503 -1.9104866 --1.8681326 4.91958 -1.9108344 --1.8382387 4.9318285 -1.9111824 --1.8089086 4.9456563 -1.9122262 --1.7794778 4.9593101 -1.9132699 --1.7502587 4.9736733 -1.9146615 --1.7175688 4.9781146 -1.9122262 --1.6827893 4.9761252 -1.9073553 --1.6539928 4.9916968 -1.9094428 --1.6169703 4.982132 -1.9017886 --1.5928962 5.0125117 -1.9097908 --1.5587709 5.0114479 -1.9056157 --1.5285374 5.0227118 -1.9063115 --1.4982244 5.0337934 -1.9070073 --1.468618 5.0473928 -1.908747 --1.4391574 5.0617204 -1.9108344 --1.4078215 5.0695519 -1.9104866 --1.3786497 5.0853343 -1.9132699 --1.3478998 5.0955105 -1.9139657 --1.3173109 5.1064086 -1.9150095 --1.2854971 5.112577 -1.9143137 --1.2538798 5.1194577 -1.9139657 --1.222661 5.1279669 -1.9143137 --1.1899036 5.1298923 -1.9122262 --1.1586108 5.1380115 -1.9125741 --1.127664 5.1477718 -1.9136178 --1.0981994 5.1646814 -1.9174449 --1.0668671 5.1731591 -1.9181408 --1.0349215 5.1786885 -1.9177928 --1.0024147 5.1812596 -1.9164011 --0.97215432 5.1956067 -1.9195324 --0.93992323 5.1996288 -1.9188366 --0.90719664 5.2006803 -1.917097 --0.87433738 5.2006011 -1.9150095 --0.84151328 5.200315 -1.912922 --0.8093012 5.2035275 -1.9122262 --0.77749586 5.2093229 -1.9125741 --0.74485493 5.2093549 -1.9108344 --0.7122429 5.2091823 -1.9090949 --0.68014544 5.2125249 -1.908747 --0.64549518 5.1952009 -1.9007449 --0.61360592 5.1990638 -1.9007449 --0.58179742 5.2036629 -1.9010928 --0.5494644 5.2034054 -1.8997011 --0.51928455 5.2244048 -1.9063115 --0.48426729 5.1957536 -1.8944824 --0.45408008 5.2182417 -1.9017886 --0.42235434 5.2246675 -1.9031802 --0.39021885 5.2262259 -1.9028324 --0.35948509 5.2481642 -1.9101386 --0.32628813 5.2343636 -1.904224 --0.29489785 5.249372 -1.9090949 --0.26272938 5.2520189 -1.9094428 --0.23008977 5.2441659 -1.9059637 --0.19780241 5.2426686 -1.9049199 --0.16507183 5.2259793 -1.8983095 --0.13331006 5.2390776 -1.9028324 --0.10121485 5.242609 -1.9038761 --0.06905704 5.2440686 -1.904224 --0.036955379 5.2556438 -1.9083991 --0.0047034887 5.2510839 -1.9066595 -0.027357973 5.221951 -1.895874 -0.059714004 5.2488713 -1.9059637 -0.091370799 5.217473 -1.8944824 -0.12338289 5.216814 -1.8944824 -0.15539034 5.2159586 -1.8944824 -0.18857752 5.2476988 -1.9066595 -0.22029778 5.2352028 -1.9024844 -0.25241622 5.2337527 -1.9024844 -0.28432074 5.2283607 -1.9010928 -0.31724885 5.2405548 -1.9063115 -0.34939831 5.2385097 -1.9063115 -0.38167131 5.2381372 -1.9070073 -0.41447136 5.2441077 -1.9101386 -0.44664082 5.241466 -1.9101386 -0.47896451 5.2404943 -1.9108344 -0.51101929 5.2365236 -1.9104866 -0.54314035 5.2332892 -1.9104866 -0.57421398 5.2205396 -1.9070073 -0.60634416 5.2178493 -1.9073553 -0.63823473 5.2131 -1.9070073 -0.67056924 5.211875 -1.9080511 -0.70203394 5.2039461 -1.9066595 -0.73382026 5.1986122 -1.9063115 -0.76433516 5.1847372 -1.9028324 -0.79584849 5.1780963 -1.9021366 -0.82671589 5.1675611 -1.900049 -0.85840786 5.1623912 -1.900049 -0.8899079 5.1561031 -1.8997011 -0.92285097 5.1579285 -1.9024844 -0.95499498 5.1549344 -1.9035282 -0.98678374 5.1498981 -1.9038761 -1.0183643 5.1437464 -1.9038761 -1.0484033 5.130053 -1.9010928 -1.0783125 5.1161852 -1.8983095 -1.1092862 5.1076403 -1.8976136 -1.1399908 5.0979929 -1.8965698 -1.1706188 5.088161 -1.8955261 -1.2031132 5.0863566 -1.8976136 -1.2349646 5.0816112 -1.8986573 -1.26544 5.0712094 -1.8976136 -1.2979292 5.0687985 -1.8997011 -1.3304362 5.0661793 -1.9017886 -1.3605211 5.0542994 -1.9003969 -1.3940024 5.054894 -1.9038761 -1.4265224 5.0516582 -1.9059637 -1.4582734 5.0455122 -1.9070073 -1.4886726 5.0346713 -1.9063115 -1.5195367 5.0254421 -1.9063115 -1.5492355 5.0124412 -1.9049199 -1.5785494 4.9983711 -1.9031802 -1.6089011 4.987699 -1.9028324 -1.6403552 4.9804044 -1.9038761 -1.6690899 4.9649143 -1.9017886 -1.703784 4.9669938 -1.9066595 -1.735778 4.9608703 -1.9083991 -1.7630322 4.9412971 -1.9049199 -1.7923563 4.927743 -1.9038761 -1.8215804 4.9140158 -1.9028324 -1.8507036 4.9001155 -1.9017886 -1.879388 4.8851676 -1.9003969 -1.910354 4.8761625 -1.9014407 -1.9378049 4.858254 -1.8990053 -1.9675782 4.8462725 -1.8990053 -1.996919 4.8332419 -1.8986573 -2.0269012 4.8217621 -1.8990053 -2.0549736 4.8057866 -1.8976136 -2.0877893 4.8008242 -1.9007449 -2.1160693 4.7853513 -1.8997011 -2.144238 4.7697124 -1.8986573 -2.1746337 4.7590237 -1.8997011 -2.2033985 4.7447405 -1.8993531 -2.2360725 4.7387614 -1.9024844 -2.2679453 4.7308693 -1.9049199 -2.3018584 4.7269778 -1.9090949 -2.3299875 4.7110844 -1.9083991 -2.3647437 4.708427 -1.9132699 -2.3948679 4.6963339 -1.9143137 -2.4249325 4.6840482 -1.9153574 -2.4514463 4.6649318 -1.9136178 -2.4751682 4.6407042 -1.9097908 -2.5013642 4.6213074 -1.9080511 -2.52877 4.604229 -1.9073553 -2.554234 4.5837131 -1.9052678 -2.5804651 4.5646901 -1.9038761 -2.6140234 4.5585289 -1.9080511 -2.6329858 4.5270076 -1.9014407 -2.6640489 4.5164185 -1.9038761 -2.690748 4.4983783 -1.9031802 -2.715867 4.4777761 -1.9014407 -2.7526252 4.4761992 -1.9080511 -2.7790465 4.457634 -1.9073553 -2.8163667 4.4563465 -1.9143137 -2.8451748 4.4413495 -1.9153574 -2.866755 4.4151602 -1.9115303 -2.8927608 4.3959208 -1.9108344 -2.9191589 4.3773084 -1.9104866 -2.9391363 4.3492179 -1.9059637 -2.9620581 4.3256879 -1.9035282 -2.9858713 4.3035808 -1.9017886 -3.0111427 4.2836452 -1.9010928 -3.0362818 4.2635612 -1.9003969 -3.0612881 4.2433305 -1.8997011 -3.0911405 4.2297645 -1.9021366 -3.1203835 4.2152381 -1.904224 -3.1495645 4.2005124 -1.9063115 -3.1752789 4.181108 -1.9063115 -3.2020175 4.1630321 -1.9070073 -3.2303827 4.1470041 -1.908747 -3.2476358 4.1168017 -1.9038761 -3.2757616 4.1004586 -1.9056157 -3.2926025 4.0700793 -1.9007449 -0 0 -0 -3.3440969 4.0315318 -1.9017886 -3.3772147 4.0209861 -1.9066595 -3.4115436 4.0116129 -1.9122262 -3.4434369 3.9991283 -1.9164011 -3.4697587 3.9800441 -1.9174449 -3.499079 3.9643013 -1.9202282 -3.5183389 3.9371653 -1.9174449 -3.5298479 3.9016013 -1.9104866 -3.5423203 3.8674273 -1.904224 -3.5634332 3.84287 -1.9028324 -3.5940056 3.82845 -1.9066595 -3.6219509 3.8110816 -1.9090949 -3.6621711 3.8063481 -1.9181408 -3.6710632 3.7690337 -1.9104866 -3.6947789 3.7471049 -1.9108344 -3.7143886 3.7210467 -1.9090949 -3.7411499 3.7021413 -1.9111824 -3.7591014 3.67453 -1.908747 -3.7822516 3.6520464 -1.9090949 -3.8025534 3.6268296 -1.9080511 -3.8165452 3.5957162 -1.9038761 -3.8309853 3.5652068 -1.900049 -3.8500276 3.5390959 -1.8986573 -3.8758359 3.5191863 -1.9007449 -3.8966582 3.4947126 -1.9003969 -3.91873 3.4713588 -1.9007449 -3.9484246 3.4546549 -1.9049199 -3.9603243 3.4223957 -1.9003969 -3.9983668 3.4126348 -1.908747 -4.0249667 3.3928697 -1.9115303 -4.0449886 3.3675096 -1.9111824 -4.0612292 3.3390551 -1.9090949 -4.0750895 3.3087559 -1.9059637 -4.0887308 3.2784123 -1.9028324 -4.1087694 3.2532628 -1.9028324 -4.1345634 3.2326088 -1.9056157 -4.1572895 3.2094698 -1.9070073 -4.1880903 3.1924236 -1.9122262 -4.2068505 3.1661022 -1.9118782 -4.2231874 3.1379938 -1.9104866 -4.2325335 3.1048152 -1.9059637 -4.2628965 3.0870321 -1.9111824 -4.2779436 3.0580921 -1.9094428 -4.3019905 3.035568 -1.9118782 -4.3236132 3.0112569 -1.9132699 -4.3420086 2.9846711 -1.9132699 -4.3625684 2.9595513 -1.9143137 -4.3759704 2.929599 -1.9122262 -4.3954287 2.9037266 -1.912922 -4.4210176 2.88182 -1.9164011 -4.4307308 2.8495693 -1.912922 -4.4425898 2.8188145 -1.9104866 -4.468545 2.7969718 -1.9143137 -4.4800377 2.7660542 -1.9118782 -4.4913197 2.735101 -1.9094428 -4.5039983 2.7050786 -1.9077032 -4.518898 2.6764364 -1.9070073 -4.5319967 2.6467681 -1.9056157 -4.5497766 2.6198459 -1.9063115 -4.5747356 2.5969689 -1.9101386 -4.58322 2.5647311 -1.9070073 -4.6021547 2.5383711 -1.9083991 -4.6168199 2.5096376 -1.9080511 -4.6321316 2.481262 -1.9080511 -4.6489277 2.4536679 -1.908747 -4.6630635 2.424664 -1.9083991 -4.6820259 2.3981426 -1.9101386 -4.6991639 2.3706353 -1.9111824 -4.7136216 2.3417571 -1.9111824 -4.7405353 2.3189676 -1.9164011 -4.7529855 2.2890234 -1.9157053 -4.77033 2.2614222 -1.917097 -4.7764688 2.2285435 -1.9139657 -4.7960176 2.2019305 -1.9164011 -4.7957664 2.1662893 -1.9108344 -4.8063979 2.1356807 -1.9097908 -4.8194118 2.106149 -1.9097908 -4.838274 2.0791278 -1.9122262 -4.8552589 2.0512249 -1.9139657 -4.8712173 2.0228324 -1.9153574 -4.8948226 1.9975076 -1.9198804 -4.904376 1.9663898 -1.9188366 -4.9364142 1.9441574 -1.9268386 -4.9220161 1.9036915 -1.9164011 -4.9336042 1.8734547 -1.9164011 -4.9511566 1.8454381 -1.9188366 -4.957984 1.8134145 -1.917097 -4.9672527 1.7823257 -1.9164011 -4.9834018 1.7536799 -1.9184886 -4.9967275 1.723986 -1.9195324 -5.0063233 1.6929941 -1.9191844 -5.015727 1.6619493 -1.9188366 -5.0302892 1.6325881 -1.9205762 -5.048254 1.6042459 -1.9237075 -5.0553164 1.5724055 -1.9226637 -5.0657663 1.5416297 -1.9230115 -5.0715361 1.5094488 -1.9216199 -5.0789018 1.4777786 -1.9209241 -5.0923829 1.4478681 -1.9226637 -5.1020741 1.4168453 -1.9230115 -5.1133866 1.3862482 -1.9240553 -5.1190767 1.3541284 -1.9230115 -5.1281972 1.3229268 -1.9233595 -5.1280346 1.2893801 -1.9202282 -5.1413136 1.2592278 -1.9223157 -5.1434712 1.2263541 -1.9202282 -5.1673388 1.1985807 -1.9264908 -5.1736813 1.166646 -1.9261428 -5.1816583 1.1350794 -1.9264908 -5.1949449 1.1046275 -1.9289262 -5.1988702 1.0721636 -1.9278824 -5.2025928 1.0396932 -1.9268386 -5.2005897 1.0061502 -1.9237075 -5.2066655 0.97422105 -1.9237075 -5.2097774 0.94175547 -1.9226637 -5.2200761 0.91057569 -1.9244033 -5.2264895 0.87868398 -1.9247512 -5.2410378 0.84809393 -1.9282304 -5.2396579 0.81491238 -1.925795 -5.2436323 0.78260893 -1.925447 -5.2566886 0.75161237 -1.9285783 -5.2760639 0.7213726 -1.934145 -5.2831798 0.689349 -1.9351887 -5.2984748 0.65830374 -1.9393637 -5.3014836 0.62567085 -1.9390157 -5.3052225 0.59312975 -1.9390157 -5.3050327 0.56017339 -1.9376241 -5.2962418 0.52640897 -1.9331012 -5.2937708 0.49338111 -1.9310137 -5.2957644 0.46080878 -1.9306657 -5.3078375 0.4290593 -1.934145 -5.3178496 0.39703974 -1.9369283 -5.318315 0.36427483 -1.9362324 -5.3120284 0.3311123 -1.9331012 -5.313024 0.29845968 -1.9327533 -5.3147554 0.26585397 -1.9327533 -5.3172231 0.23327912 -1.9331012 -5.3063755 0.20019202 -1.9285783 -5.3224969 0.16809922 -1.934145 -5.3487329 0.13607617 -1.9435388 -5.3400941 0.10307549 -1.9400595 -5.3368759 0.070258789 -1.9386679 -5.3447065 0.037562106 -1.9414512 -5.3392115 0.0047630905 -1.9393637 -5.3428903 -0.028018259 -1.9407554 -5.3154311 -0.060485832 -1.9306657 -5.3187094 -0.093166061 -1.9320575 -5.3302221 -0.12609015 -1.9365804 -5.3237257 -0.15862466 -1.9344928 -5.3329582 -0.19166006 -1.9383199 -5.3391752 -0.22469585 -1.9411033 -5.3470602 -0.25790587 -1.9445825 -5.3481855 -0.29086331 -1.9456263 -5.3406854 -0.32333252 -1.9435388 -5.3386006 -0.35609627 -1.9435388 -5.3363152 -0.38884661 -1.9435388 -5.3254175 -0.42091566 -1.9404075 -5.3189983 -0.45326465 -1.9390157 -5.3254533 -0.48674825 -1.942495 -5.3158345 -0.5187766 -1.9400595 -5.3125515 -0.55138421 -1.9400595 -5.3062725 -0.58366287 -1.9390157 -5.297935 -0.61566848 -1.9372762 -5.2875438 -0.64736545 -1.9348408 -5.3011389 -0.68207401 -1.9414512 -5.293138 -0.71408617 -1.9400595 -5.2867999 -0.74628836 -1.9393637 -5.2895412 -0.779809 -1.942147 -5.2883635 -0.81282079 -1.9435388 -5.2823505 -0.84510601 -1.9431908 -5.2816896 -0.87827188 -1.9449304 -5.2808204 -0.91146147 -1.9466699 -5.2566719 -0.94054037 -1.9397117 -5.244349 -0.97158015 -1.9372762 -5.243813 -1.0048004 -1.9393637 -5.2366295 -1.0367746 -1.9390157 -5.2310882 -1.0690744 -1.9393637 -5.2280989 -1.1019258 -1.9407554 -5.2249041 -1.1347808 -1.942147 -5.224247 -1.1682523 -1.9445825 -5.2078443 -1.1981817 -1.9411033 -5.2086048 -1.2320579 -1.9442346 -5.20368 -1.2646589 -1.9452783 -5.1985507 -1.2972459 -1.9463221 -5.1859527 -1.3279554 -1.9445825 -5.1767998 -1.3595124 -1.9442346 -5.1710763 -1.3919828 -1.9452783 -5.1479783 -1.4196947 -1.9397117 -5.138268 -1.4510003 -1.9393637 -5.1454792 -1.4871901 -1.9456263 -5.1236711 -1.5150098 -1.9407554 -5.1160736 -1.5469625 -1.9414512 -5.0993199 -1.5761087 -1.9386679 -5.1011744 -1.6110408 -1.9431908 -5.1018996 -1.6457669 -1.9473659 -5.0872531 -1.6755731 -1.9456263 -5.0795422 -1.7076532 -1.9466699 -5.0698552 -1.7390929 -1.9470179 -5.0582042 -1.7698584 -1.9466699 -5.0446005 -1.7999159 -1.9456263 -5.0325804 -1.8305144 -1.9452783 -5.0168586 -1.8597291 -1.9435388 -4.9930754 -1.8858367 -1.9386679 -4.971786 -1.9127331 -1.9348408 -4.9337707 -1.932938 -1.9244033 -4.8939538 -1.9520537 -1.9132699 -4.8532209 -1.970401 -1.9017886 -4.7717271 -1.9714876 -1.8739552 -4.6904054 -1.9716494 -1.8461218 -4.6342602 -1.9815835 -1.828378 -4.5695748 -1.9871628 -1.807155 -4.5410061 -2.0079563 -1.8005446 -4.4542146 -2.0023215 -1.7702757 -4.4213815 -2.0202584 -1.7619257 -4.3612895 -2.0252259 -1.7424424 -4.3191085 -2.0379388 -1.7302653 -4.2718649 -2.0477779 -1.7160006 -4.2381492 -2.0636849 -1.7073027 -4.2035599 -2.0788398 -1.6982569 -4.1597304 -2.0890179 -1.6853839 -4.1134295 -2.0974588 -1.6714672 -4.0721784 -2.1079979 -1.6596379 -4.0458903 -2.1259637 -1.6540713 -4.0435219 -2.156487 -1.6585943 -4.0236187 -2.1776853 -1.6558108 -4.0192189 -2.2072992 -1.6596379 -4.0285277 -2.2447021 -1.6693796 -4.0154943 -2.26984 -1.6697276 -3.8998423 -2.2361171 -1.6262379 -3.8512049 -2.239728 -1.6112775 -3.8252785 -2.2561691 -1.6060586 -3.8387148 -2.2959671 -1.6178879 -3.8381803 -2.3277459 -1.6238024 -3.3215692 -2.0422401 -1.4049623 -3.4911382 -2.1762044 -1.4846354 -3.2716928 -2.0673149 -1.3941768 -3.3102524 -2.1202335 -1.4167914 -3.2515807 -2.110883 -1.3966123 -3.2362182 -2.1292479 -1.3955685 -0 -0 -0 -3.2152822 -2.1724768 -1.3980039 -3.0750487 -2.1052666 -1.3409454 -3.0043106 -2.0840001 -1.3148516 -2.9592583 -2.0797436 -1.3002391 -2.9105549 -2.0722938 -1.2838869 -2.8726983 -2.0720069 -1.2724056 -2.8319285 -2.0691209 -1.2595327 -2.79055 -2.0652552 -1.2463118 -2.760576 -2.0693994 -1.2383097 -2.7261779 -2.0698509 -1.2282201 -2.6993091 -2.0756762 -1.2216097 -2.6665561 -2.0766399 -1.2122159 -2.629478 -2.0737953 -1.2007346 -2.5983951 -2.0752573 -1.1920366 -2.5987301 -2.1017783 -1.1982992 -2.5814342 -2.1141186 -1.1962117 -2.559756 -2.1227336 -1.1920366 -2.5079234 -2.1058314 -1.1732491 -2.4499695 -2.0829067 -1.1513304 -2.4222262 -2.0850506 -1.144024 -2.386071 -2.0795381 -1.1325427 -2.3606164 -2.0829697 -1.1262803 -2.3498881 -2.0992894 -1.127324 -2.3327923 -2.1098938 -1.1252365 -2.3253319 -2.129235 -1.1280198 -2.3087869 -2.1402748 -1.1262803 -2.3010781 -2.1595354 -1.1290636 -2.2592478 -2.1464818 -1.1144511 -2.2115862 -2.1271458 -1.0967072 -2.1864064 -2.1288986 -1.0904447 -2.167963 -2.1370068 -1.0876614 -2.1342452 -2.1297321 -1.0768759 -2.1138849 -2.1354556 -1.0730488 -2.1000869 -2.1477153 -1.072701 -2.0875204 -2.1612353 -1.0730488 -2.0819831 -2.1821461 -1.0772239 -2.0524859 -2.1778169 -1.0685259 -2.0512166 -2.2034123 -1.0751363 -2.0376582 -2.2159569 -1.0751363 -2.0076411 -2.2103679 -1.0660905 -1.9927891 -2.2212486 -1.0653946 -1.9872019 -2.2425594 -1.0699176 -1.9826622 -2.265296 -1.0751363 -1.965661 -2.2738714 -1.0733968 -1.9534973 -2.2880294 -1.0744405 -1.9345887 -2.2942371 -1.0716572 -1.9234735 -2.3096676 -1.0733968 -1.9098607 -2.3221505 -1.0737447 -1.8949854 -2.3330977 -1.0733968 -1.8818069 -2.3461442 -1.0740926 -1.8673757 -2.3576467 -1.0740926 -1.8505652 -2.3661053 -1.072701 -1.834294 -2.3751891 -1.0716572 -1.8219583 -2.3893824 -1.0730488 -1.8004998 -2.3915262 -1.0688739 -1.7869097 -2.4040341 -1.0695697 -1.7710165 -2.4134409 -1.0688739 -1.7561746 -2.4242623 -1.0688739 -1.7401764 -2.4334667 -1.0681781 -1.7338579 -2.4563568 -1.0737447 -1.7058979 -2.4484825 -1.0653946 -1.6897804 -2.4573584 -1.0646988 -1.6725658 -2.4645765 -1.0633072 -1.6563692 -2.4732344 -1.0626113 -1.6437455 -2.487263 -1.064351 -1.6320355 -2.5028005 -1.0667863 -1.6191827 -2.5167105 -1.0685259 -1.6122458 -2.5400577 -1.0744405 -1.6135362 -2.5769255 -1.0862697 -1.5829234 -2.5628426 -1.0758322 -1.5842291 -2.6005363 -1.0880094 -1.5667951 -2.6077967 -1.0869656 -1.5636593 -2.6391437 -1.0963594 -1.5446006 -2.6438303 -1.0942718 -1.5213346 -2.6410697 -1.089053 -1.50325 -2.6470931 -1.0876614 -1.4814878 -2.6464481 -1.0834864 -1.4625058 -2.6505623 -1.0813988 -1.4475574 -2.6619575 -1.0824426 -1.4272143 -2.6633508 -1.0793114 -1.4082208 -2.6670825 -1.0772239 -1.3922617 -2.6765049 -1.0775717 -1.3694046 -2.6724794 -1.072353 -1.3576237 -2.6900401 -1.0761801 -1.3473465 -2.7109153 -1.0813988 -1.3459233 -2.7502947 -1.0942718 -1.3200771 -2.7399166 -1.0866176 -1.3156843 -2.7742293 -1.097403 -1.2934865 -2.771204 -1.0928801 -1.2643377 -2.7526734 -1.0820947 -1.2578391 -2.7834506 -1.0914885 -1.2430196 -2.796257 -1.093576 -1.2138309 -2.7763386 -1.0824426 -1.2063918 -2.8061316 -1.0914885 -1.1949856 -2.8273003 -1.0970552 -1.1750996 -2.8285179 -1.0946198 -1.1517034 -2.8209171 -1.0887052 -1.1427419 -2.8488171 -1.0970552 -1.1221501 -2.8479238 -1.0939239 -1.1026264 -2.8495085 -1.0918365 -1.080132 -2.8430724 -1.0866176 -1.072157 -2.8751247 -1.0967072 -1.0396904 -2.8411441 -1.080703 -1.0193899 -2.8395274 -1.0775717 -1.0035027 -2.8501508 -1.0793114 -0.98507893 -2.8535957 -1.0782676 -0.97115272 -2.8702445 -1.0824426 -0.95882732 -2.8921695 -1.0887052 -0.9326759 -2.8721361 -1.0786155 -0.91304904 -2.8715498 -1.0761801 -0.89624709 -2.8797841 -1.0772239 -0.88674289 -2.9121382 -1.0876614 -0.86404717 -2.9013491 -1.0813988 -0.84910762 -2.9164989 -1.0852259 -0.82914674 -2.9144394 -1.0824426 -0.81952024 -2.9492841 -1.0939239 -0.79135871 -2.9171555 -1.0796593 -0.77128851 -2.9137986 -1.0765281 -0.75152332 -2.9112134 -1.0737447 -0.73798621 -2.9330461 -1.0803552 -0.72175813 -2.9448044 -1.0831385 -0.70041698 -2.9354975 -1.0779197 -0.68366176 -2.9452198 -1.0800072 -0.66866779 -2.9630783 -1.0852259 -0.6554845 -2.9900217 -1.0939239 -0.63673615 -2.9921534 -1.0932281 -0.61533809 -2.981312 -1.0876614 -0.59813464 -2.9905479 -1.0897489 -0.580841 -2.9996846 -1.0918365 -0.56190765 -3.0004275 -1.0907927 -0.54365337 -3.0047414 -1.0911406 -0.53469986 -3.0625138 -1.1116678 -0.5182271 -3.0796058 -1.1168865 -0.49947077 -3.0836532 -1.1172343 -0.4793894 -3.0792484 -1.1144511 -0.45951915 -3.0756409 -1.1120156 -0.43374881 -3.0301406 -1.0939239 -0.41476762 -3.0299582 -1.0928801 -0.39628947 -3.0333757 -1.0932281 -0.38228524 -3.0729661 -1.1071448 -0.36375174 -3.0780473 -1.1081885 -0.34371471 -3.069972 -1.1043614 -0.31848517 -3.0114198 -1.0817468 -0.29944631 -3.0077195 -1.0796593 -0.2841104 -3.0431063 -1.0921843 -0.26810816 -3.0756147 -1.1036656 -0.25051221 -3.0930882 -1.1095802 -0.23194627 -3.1001768 -1.1116678 -0.21157846 -3.0818992 -1.1043614 -0.19254805 -3.0812681 -1.1036656 -0.17327146 -3.075839 -1.1012301 -0.15434857 -3.0759079 -1.1008823 -0.13539048 -3.0749238 -1.1001865 -0.11676653 -3.0822549 -1.1026219 -0.097969539 -3.0866616 -1.1040136 -0.079217434 -3.0947022 -1.1067969 -0.060370333 -3.1026289 -1.1095802 -0.041380379 -3.1066906 -1.1109719 -0.022291757 -3.1031361 -1.1095802 -0.0032635329 -3.1219649 -1.1165385 --0.015913019 -3.1256764 -1.1179302 --0.034928448 -3.1114578 -1.1127114 --0.053869732 -3.1027486 -1.1095802 --0.073018692 -3.1070459 -1.1113198 --0.092138045 -3.1084137 -1.1120156 --0.11107368 -3.1040421 -1.110624 --0.13055348 -3.1136057 -1.1144511 --0.15033628 -3.1267924 -1.1196698 --0.17227924 -3.1763623 -1.1384574 --0.19836117 -3.283798 -1.1788158 --0.29712921 -4.4574227 -1.6158004 --0.23734511 -3.263351 -1.1722053 --0.26136407 -3.3123014 -1.190993 --0.27426118 -3.223762 -1.1586366 --0.29275361 -3.2080142 -1.1534178 --0.31060684 -3.1874959 -1.1464595 --0.32977116 -3.1818001 -1.1450678 --0.50067657 -4.5533113 -1.6578984 --0.36857507 -3.1756513 -1.144372 --0.38691223 -3.1640246 -1.1408927 --0.41003412 -3.1904159 -1.1516782 --0.62520069 -4.6353483 -1.6937339 --0.46700358 -3.3113916 -1.198995 --0.68518603 -4.6486588 -1.701736 --0.71098685 -4.6267614 -1.6951256 --0.73847294 -4.6167574 -1.6930381 --0.76570904 -4.6056662 -1.6906027 --0.79219824 -4.5907187 -1.6867756 --0.82035142 -4.5857716 -1.6867756 --0.84847379 -4.5806518 -1.6867756 --0.8739146 -4.5615482 -1.6815568 --0.90279871 -4.5606985 -1.6832963 --0.9305777 -4.5541544 -1.6829485 --0.95792329 -4.5456071 -1.6819047 --0.98798752 -4.5497208 -1.6857318 --1.013428 -4.5325947 -1.6815568 --1.0485845 -4.5582671 -1.6937339 --1.0683255 -4.5170798 -1.680513 --1.0962434 -4.5113506 -1.6808609 --1.1154979 -4.4708848 -1.6679879 --1.141746 -4.4594154 -1.6662484 --1.1145095 -4.2446856 -1.5865753 --1.1078522 -4.1164641 -1.5399543 --1.1792357 -4.2767797 -1.6043191 --1.2561963 -4.4489985 -1.6735547 --1.2915469 -4.4691253 -1.6843401 --1.3152202 -4.4485307 -1.6794692 --1.3449351 -4.4484529 -1.6826005 --1.3735901 -4.4445949 -1.6843401 --1.3968803 -4.4235682 -1.6794692 --1.4242846 -4.4158058 -1.6798172 --1.4492983 -4.4007506 -1.6773818 --1.478067 -4.3971066 -1.6794692 --1.5104983 -4.4039159 -1.6857318 --1.5415195 -4.4060678 -1.6902547 --1.571678 -4.4053555 -1.6937339 --1.598038 -4.393867 -1.6930381 --1.6239899 -4.3813419 -1.6919943 --1.6501799 -4.3695412 -1.6912985 --1.6786439 -4.363708 -1.6930381 --1.6971751 -4.3323774 -1.684688 --1.1815788 -2.9635389 -1.1419365 --1.1944475 -2.9432042 -1.1367178 --1.2167825 -2.9462166 -1.1408927 --1.8186164 -4.326582 -1.6996485 --1.8436544 -4.3118939 -1.6982569 --1.8584806 -4.2738509 -1.6874714 --1.8945323 -4.284658 -1.6965172 --1.9134796 -4.2567077 -1.6899068 --1.5583019 -3.4110129 -1.3496433 --1.5764368 -3.3954356 -1.3472079 --1.5856333 -3.3611131 -1.3371183 --1.5981175 -3.3344142 -1.33016 --1.6123873 -3.3119035 -1.3249412 --1.627273 -3.2910242 -1.3204182 --1.6558548 -3.2977316 -1.3273766 --1.6828755 -3.3008711 -1.3329433 --1.7117217 -3.3071325 -1.3399017 --1.7393988 -3.3106742 -1.3458163 --1.7817494 -3.3412952 -1.3632121 --2.1919718 -4.0499992 -1.6669443 --2.2127173 -4.0290785 -1.663813 --2.246985 -4.0326219 -1.6711192 --2.2730708 -4.0212069 -1.672163 --2.2879043 -3.9901068 -1.6648567 --2.3161163 -3.9824758 -1.6676401 --2.3338377 -3.9568858 -1.6627692 --2.3696272 -3.9617984 -1.6711192 --2.400701 -3.958405 -1.6759901 --2.4254355 -3.9443986 -1.676338 --2.4381802 -3.9111464 -1.6683359 --2.4676442 -3.9048288 -1.672163 --2.492569 -3.8911927 -1.6728588 --2.5148659 -3.8734667 -1.671815 --2.5380702 -3.8571799 -1.6714672 --2.5471203 -3.8196974 -1.6617255 --2.5841625 -3.8241901 -1.6707714 --2.6155264 -3.8198636 -1.6759901 --2.6244812 -3.7829485 -1.6665963 --2.6320035 -3.7445345 -1.6565067 --2.6679862 -3.7466395 -1.6648567 --2.6909249 -3.7301984 -1.6648567 --2.711549 -3.7105899 -1.663465 --2.7298019 -3.687855 -1.6606817 --2.7456276 -3.6620362 -1.6565067 --2.7652099 -3.6413879 -1.6547672 --2.7840705 -3.6198943 -1.6526796 --2.8021953 -3.5975671 -1.6502442 --2.3299377 -2.954025 -1.3541663 --2.3433368 -2.9338145 -1.351383 --2.365423 -2.9244821 -1.3538184 --2.9068739 -3.5487425 -1.6603338 --2.9226067 -3.5236249 -1.6568546 --2.9477911 -3.5099325 -1.6589421 --2.9577293 -3.4782121 -1.6523317 --2.9796274 -3.4607086 -1.6526796 --3.0075843 -3.4501328 -1.6565067 --3.0342824 -3.4379385 -1.6596379 --3.0534456 -3.4171591 -1.6585943 --3.0579979 -3.3802869 -1.6495483 --3.0742476 -3.3566213 -1.647113 --3.1005242 -3.3438807 -1.6502442 --3.122267 -3.32616 -1.6509401 --3.1464932 -3.3110161 -1.6530275 --3.1641495 -3.2889454 -1.6516359 --3.1698761 -3.2546966 -1.6439817 --3.2003212 -3.2458642 -1.6495483 --3.2135525 -3.2195325 -1.6460692 --3.2352462 -3.2017317 -1.647113 --3.2595248 -3.1864069 -1.6495483 --3.280364 -3.1676488 -1.6502442 --3.2977028 -3.1455207 -1.6492004 --3.3271792 -3.1348681 -1.6544192 --3.3484111 -3.1163096 -1.655463 --3.3716114 -3.0995114 -1.6575505 --3.3891778 -3.0775051 -1.6568546 --3.4191666 -3.0666645 -1.6624213 --3.4337075 -3.041898 -1.6603338 --3.4699504 -3.0362017 -1.6690317 --3.4956098 -3.0209818 -1.6725109 --3.5147936 -3.0000846 -1.6728588 --3.5446069 -2.9881272 -1.6784256 --3.5693607 -2.971719 -1.6815568 --3.5831819 -2.9461904 -1.6794692 --3.612839 -2.9336016 -1.6850359 --3.6293082 -2.9102058 -1.6843401 --3.6500371 -2.8902092 -1.6857318 --3.671396 -2.870645 -1.6874714 --3.689683 -2.8486366 -1.6878192 --3.705601 -2.8248069 -1.6871234 --3.7266099 -2.8048348 -1.688863 --3.7460079 -2.7835929 -1.6899068 --3.772846 -2.7677622 -1.6944298 --3.7927954 -2.7467592 -1.6958214 --3.8217828 -2.732156 -1.7013881 --3.8400073 -2.7097352 -1.7020839 --3.8504062 -2.6818373 -1.6993005 --3.8737435 -2.6629393 -1.7024318 --3.8962178 -2.6433296 -1.7052152 --3.9193761 -2.6240656 -1.7083464 --3.9487033 -2.6087494 -1.7142611 --3.9717057 -2.5890777 -1.7173923 --3.9914603 -2.5671937 -1.7191318 --4.0095124 -2.5441606 -1.7201756 --4.0322008 -2.5239861 -1.7233069 --4.0635686 -2.5090444 -1.7302653 --4.0860949 -2.4884508 -1.7333965 --4.1117363 -2.469605 -1.7379194 --4.1397204 -2.4519708 -1.743486 --4.1644034 -2.4321952 -1.7476611 --4.1833115 -2.4089355 -1.7494007 --4.2151375 -2.3929377 -1.756707 --4.2526517 -2.379843 -1.7664486 --4.2679949 -2.354157 -1.7667966 --4.2716503 -2.3221064 -1.7622737 --4.2874708 -2.2967372 -1.7629695 --4.3288474 -2.2848217 -1.7744508 --4.3602548 -2.2672963 -1.781757 --4.3757539 -2.241354 -1.7824528 --4.4028182 -2.2212162 -1.7880195 --4.4138451 -2.1929083 -1.7869759 --4.3952122 -2.1501365 -1.773755 --4.3745317 -2.106863 -1.7598382 --4.3780575 -2.0755663 -1.7560111 --4.3847623 -2.0458903 -1.7535757 --4.4262047 -2.0322411 -1.7654049 --4.4590988 -2.0143023 -1.773755 --4.509932 -2.0040264 -1.7894112 --4.5522141 -1.9894497 -1.8015883 --4.6160221 -1.983678 -1.8224634 --4.6721554 -1.9739153 -1.8402072 --4.7049608 -1.953835 -1.8485572 --4.8132205 -1.9642277 -1.887176 --4.8852305 -1.9587182 -1.9111824 --4.9503722 -1.9496512 -1.9324054 --4.9910998 -1.9303937 -1.9438866 --5.0282698 -1.9093788 -1.9539763 --5.0583405 -1.8853621 -1.9612825 --5.0777388 -1.8571858 -1.9644138 --5.0908036 -1.8266274 -1.9651096 --5.1107602 -1.7984666 -1.9685888 --5.1172676 -1.7655457 -1.9668492 --5.140439 -1.7383156 -1.9717201 --5.1581283 -1.7090992 -1.9745034 --5.1640592 -1.6759712 -1.9727638 --5.2010522 -1.6527659 -1.9832014 --5.1860275 -1.6130306 -1.9734596 --5.1814756 -1.5768152 -1.967893 --5.1937494 -1.5457944 -1.9689367 --5.2058372 -1.5146822 -1.9699805 --5.2285604 -1.4865543 -1.9751992 --5.2312598 -1.4526898 -1.9727638 --5.2445993 -1.4217896 -1.9745034 --5.2432542 -1.3869475 -1.9706763 --5.2552972 -1.3556854 -1.972068 --5.2616978 -1.322957 -1.9713721 --5.2678952 -1.2902013 -1.9706763 --5.2748003 -1.2576367 -1.9703283 --5.2796779 -1.2246125 -1.9692847 --5.290751 -1.1930181 -1.9706763 --5.2961397 -1.1601313 -1.9699805 --5.3068266 -1.1283921 -1.9713721 --5.3099775 -1.0950521 -1.9699805 --5.3156772 -1.0622666 -1.9696325 --5.3220954 -1.0296302 -1.9696325 --5.32094 -0.99557728 -1.9668492 --5.3241811 -0.96241015 -1.9658054 --5.3364511 -0.93084979 -1.9682409 --5.3522329 -0.89979601 -1.972068 --5.3687592 -0.86873311 -1.976243 --0 -0 -0 --5.408689 -0.80720687 -1.9873763 --5.4385991 -0.77758205 -1.9967701 --5.464633 -0.74711323 -2.0047722 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --5.3409567 -0.037536558 -1.9400595 --0 -0 -0 --5.3428903 0.028018259 -1.9407554 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --5.2527013 -0.13438906 -1.9715911 --5.2328877 -0.10175557 -1.9637177 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --0 0 -0 --5.1187916 1.0126848 -1.9576337 --5.1005878 1.0416461 -1.9529814 --5.0886178 1.0717689 -1.950834 --5.0782957 1.1021799 -1.9494026 --5.0668807 1.1323011 -1.9476131 --5.0571074 1.1627421 -1.9465395 --5.0526042 1.1943942 -1.9476131 --5.0442729 1.2251537 -1.9472553 --5.0430026 1.2576629 -1.9497604 --5.0460467 1.2913597 -1.954055 --5.0298991 1.3201644 -1.950834 --5.0189991 1.3502749 -1.9497604 --5.01332 1.3817897 -1.950834 --5.0020509 1.4117641 -1.9497604 --4.9771466 1.4377662 -1.9433186 --4.9736037 1.4698658 -1.9454659 --4.9591284 1.4987352 -1.9433186 --4.9471622 1.528309 -1.942245 --4.93502 1.5577924 -1.9411713 --4.921814 1.586898 -1.9397398 --4.9102101 1.6164839 -1.9390241 --4.9010844 1.6468793 -1.939382 --4.8917704 1.6772236 -1.9397398 --4.887557 1.7093647 -1.942245 --4.8831334 1.7415172 -1.9447501 --4.8749886 1.7724037 -1.9458238 --4.8657727 1.8029314 -1.9465395 --4.8581128 1.8340722 -1.947971 --4.8345656 1.8591553 -1.9429607 --0 0 -0 --4.7975087 1.9128108 -1.9372346 --4.7804904 1.9401052 -1.9350874 --4.7650437 1.9679757 -1.9336559 --4.7554612 1.9982615 -1.9347295 --4.7491212 2.0299714 -1.9372346 --4.7331505 2.0575845 -1.9358032 --4.7289772 2.0903623 -1.939382 --4.7058411 2.1147473 -1.9350874 --4.6953249 2.1447456 -1.936161 --4.6812296 2.1731222 -1.9358032 --4.6441598 2.1906524 -1.9257826 --4.6390514 2.2231419 -1.9293613 --4.6127291 2.2454352 -1.9239931 --4.6072354 2.2778339 -1.9275719 --4.5798197 2.2993579 -1.9218459 --0 0 -0 --4.5603809 2.3601065 -1.9257826 --4.5466404 2.3884783 -1.9261404 --4.5368433 2.4189665 -1.9282877 --0 0 -0 --4.515821 2.4794011 -1.9322244 --4.5062332 2.5102434 -1.9347295 --4.488307 2.5364678 -1.9336559 --4.4734693 2.5644243 -1.9340137 --4.4592643 2.5927632 -1.9347295 --4.4408584 2.6186533 -1.9336559 --4.4239058 2.6453733 -1.933298 --4.4051952 2.671016 -1.9322244 --4.3887234 2.6979954 -1.9322244 --4.3736711 2.7258611 -1.9329401 --4.3584418 2.7536433 -1.9336559 --4.3430367 2.7813416 -1.9343716 --0 0 -0 --4.3070183 2.8334014 -1.9336559 --4.2918825 2.8613293 -1.9347295 --4.2726974 2.8865645 -1.9340137 --4.2495112 2.9090352 -1.9315087 --4.2308145 2.9345229 -1.9311507 --4.2066169 2.9561329 -1.9282877 --4.191442 2.9840543 -1.9297192 --4.1677513 3.0058935 -1.927214 --4.1560154 3.0363667 -1.9304349 --4.1365557 3.061255 -1.9300771 --4.1049919 3.0770588 -1.9239931 --4.105372 3.1168675 -1.933298 --4.0824685 3.1391535 -1.9315087 --4.0609198 3.1624229 -1.9304349 --4.0443721 3.1895933 -1.9318665 --4.0218062 3.2120185 -1.9304349 --4.0005698 3.235461 -1.9297192 --3.9690824 3.2504821 -1.9239931 --3.9648774 3.2878866 -1.9318665 --3.946774 3.3139539 -1.9329401 --3.9277887 3.339318 -1.9336559 --3.9114716 3.3670104 -1.9358032 --3.8907382 3.3909473 -1.9358032 --3.8656573 3.4110501 -1.9336559 --3.8446548 3.434705 -1.9336559 --3.8221223 3.4569781 -1.9329401 --3.8008387 3.480365 -1.9329401 --3.7746181 3.4991777 -1.9304349 --3.7476292 3.5171609 -1.9275719 --3.7219157 3.536231 -1.9254247 --3.6974556 3.5564127 -1.9239931 --3.673557 3.5770788 -1.9229195 --3.6541996 3.6021738 -1.924351 --3.6320283 3.6245277 -1.924351 --3.6149759 3.6520538 -1.927214 --3.588582 3.6701605 -1.9250668 --3.5640485 3.6900959 -1.9239931 --3.5419841 3.7125704 -1.924351 --3.5152946 3.7301569 -1.9222038 --3.4936132 3.7530229 -1.9229195 --3.4660947 3.7695775 -1.9204143 --3.446667 3.7949212 -1.9225616 --3.4245641 3.8173881 -1.9232774 --3.4072697 3.8453174 -1.9268562 --3.3823812 3.8647463 -1.9261404 --3.360436 3.8875465 -1.927214 --3.3359127 3.9073825 -1.9268562 --3.3088648 3.9242086 -1.9250668 --3.2811384 3.9401326 -1.9229195 --3.255121 3.9580276 -1.9218459 --3.2307737 3.9779263 -1.9218459 --3.2103949 4.0027738 -1.924351 --3.1875131 4.0245929 -1.9254247 --3.166786 4.0492234 -1.9279298 --3.1424515 4.0693173 -1.9282877 --3.1196885 4.0914927 -1.9297192 --3.0950863 4.1113033 -1.9300771 --3.0597742 4.1167283 -1.9236352 --3.0333519 4.1339197 -1.9229195 --3.0008078 4.1426239 -1.9182671 --2.9693575 4.1526036 -1.9143304 --2.9427445 4.1692195 -1.9136146 --0 0 -0 --2.8887146 4.2011704 -1.9118253 --2.8681262 4.2265425 -1.9154041 --2.8452566 4.2487164 -1.9175513 --2.820678 4.2684317 -1.918625 --2.7939241 4.2848763 -1.9182671 --2.7685907 4.3035097 -1.9189829 --2.7371283 4.3125329 -1.9154041 --2.7071464 4.3237066 -1.9128989 --2.679584 4.3386469 -1.9121832 --2.6470821 4.345438 -1.9078885 --2.6290262 4.3760052 -1.9143304 --2.6021259 4.3920546 -1.9143304 --2.5770123 4.4111629 -1.9157619 --2.5540924 4.4341741 -1.9189829 --2.5296037 4.4546337 -1.9211301 --2.5031354 4.4717007 -1.9218459 --2.4742968 4.4845228 -1.9207722 --2.4467337 4.4996204 -1.9207722 --2.41555 4.5079646 -1.9179091 --2.3847919 4.5169215 -1.9154041 --2.3540149 4.5256705 -1.9128989 --2.3274791 4.5425224 -1.9139725 --2.2966177 4.5508828 -1.9114674 --2.2657413 4.5590358 -1.9089622 --2.2438824 4.5854325 -1.9143304 --2.2148938 4.5974321 -1.9136146 --2.1910448 4.6202164 -1.9175513 --2.1618643 4.6318812 -1.9168355 --2.1341827 4.6467557 -1.9175513 --2.1029384 4.6538072 -1.9150462 --2.0766196 4.6717424 -1.9171934 --2.0490377 4.6869631 -1.9182671 --2.0250354 4.7105994 -1.9229195 --2.0004566 4.7332568 -1.927214 --1.9670767 4.735095 -1.9229195 --1.9390447 4.7496691 -1.9239931 --1.9088217 4.7588773 -1.9229195 --1.8789011 4.7687626 -1.9222038 --1.8475829 4.7749767 -1.9200565 --1.8185812 4.787096 -1.9204143 --1.7846055 4.7859163 -1.9154041 --1.755206 4.7967763 -1.9154041 --1.7247939 4.8048191 -1.9143304 --1.6955898 4.8161926 -1.9146882 --1.6675299 4.8309193 -1.9164777 --1.6315708 4.8224854 -1.9089622 --1.6054765 4.8430414 -1.9132568 --1.5716918 4.8403683 -1.9082465 --1.548471 4.8703876 -1.9164777 --1.516615 4.8735557 -1.9139725 --1.4845065 4.8756237 -1.9111094 --1.4564283 4.8909054 -1.9136146 --1.4258686 4.8979564 -1.9128989 --1.3950218 4.9039187 -1.9118253 --1.366156 4.9168849 -1.9136146 --1.3300922 4.9035463 -1.9050256 --1.3059543 4.9341822 -1.9139725 --1.2772883 4.948431 -1.9164777 --1.2434828 4.9425921 -1.9111094 --1.2135769 4.9519429 -1.9118253 --1.1781839 4.938406 -1.903594 --1.1516616 4.9619145 -1.9100358 --1.1193438 4.96069 -1.9068149 --1.0888845 4.9674649 -1.9068149 --1.0583842 4.9740524 -1.9068149 --1.0289769 4.98594 -1.9089622 --0.99579972 4.979341 -1.9039519 --0.96913481 5.0055256 -1.9118253 --0.93926293 5.0159669 -1.9136146 --0 0 -0 --0.87908453 5.0353937 -1.9168355 --0.84786135 5.0388513 -1.9161198 --0.81812245 5.051333 -1.9189829 --0.78653783 5.052567 -1.9175513 --0.75538301 5.0563745 -1.9171934 --0.72540247 5.0683088 -1.9200565 --0.69314998 5.0643382 -1.9168355 --0.6606105 5.0573854 -1.912541 --0.63118124 5.0743165 -1.9175513 --0.59816992 5.0623293 -1.9114674 --0.56626517 5.0584807 -1.9086044 --0.53521627 5.0618601 -1.9086044 --0.50386953 5.0622611 -1.9075307 --0.47210371 5.0578198 -1.9046676 --0.44138524 5.0643425 -1.9060992 --0.41052902 5.0697474 -1.9071728 --0.37913498 5.0684462 -1.9057413 --0.34758037 5.0641561 -1.9032362 --0.31533483 5.047555 -1.8960786 --0.2856195 5.0717692 -1.9046676 --0.25463492 5.0762243 -1.9057413 --0.22340073 5.0758252 -1.9050256 --0.19239347 5.080833 -1.9064571 --0.16118476 5.0809846 -1.9060992 --0.13019703 5.0893455 -1.9089622 --0.099003389 5.0919161 -1.909678 --0.067820609 5.097096 -1.9114674 --0.036517065 5.0936813 -1.9100358 --0.0052569415 5.0891404 -1.9082465 -0.025941392 5.0834742 -1.9060992 -0.057090838 5.0794845 -1.9046676 -0.088289194 5.0809059 -1.9053835 -0.11941963 5.0784016 -1.9046676 -0.15055026 5.0766401 -1.9043097 -0.18173043 5.0765538 -1.9046676 -0.21318862 5.0828066 -1.9075307 -0.24428256 5.0795374 -1.9068149 -0.27529392 5.0751457 -1.9057413 -0.30592322 5.0649724 -1.9025204 -0.33711943 5.0648632 -1.9032362 -0.36852878 5.0673561 -1.9050256 -0.39976132 5.0668612 -1.9057413 -0.43084347 5.0643129 -1.9057413 -0.46216375 5.064364 -1.9068149 -0.49259597 5.0549269 -1.9043097 -0.52456504 5.0610971 -1.9078885 -0.55540574 5.0559268 -1.9071728 -0.58598751 5.0487137 -1.9057413 -0.6169548 5.045023 -1.9057413 -0.64813679 5.042995 -1.9064571 -0.67919248 5.0398483 -1.9068149 -0.70932174 5.0300384 -1.9046676 -0.74017209 5.0255914 -1.9046676 -0 0 -0 -0.80164081 5.0152078 -1.9043097 -0.83071584 5.000062 -1.9003731 -0.86233169 5.000392 -1.9025204 -0.89234024 4.9913297 -1.9010888 -0.92413896 4.992188 -1.903594 -0.9540509 4.9827547 -1.9021626 -0.98641807 4.9859676 -1.9057413 -1.0169928 4.9798212 -1.9057413 -1.0469521 4.970746 -1.9046676 -1.0774324 4.9642282 -1.9046676 -1.1070577 4.9538789 -1.9032362 -1.137015 4.9451728 -1.9025204 -1.1675513 4.9390116 -1.9028783 -1.1969533 4.9281249 -1.9014468 -1.2260398 4.9161577 -1.8996574 -1.2575703 4.91397 -1.9018047 -1.2869872 4.9034519 -1.900731 -1.317535 4.8972659 -1.9014468 -1.3468151 4.8863893 -1.9003731 -1.3795613 4.8879185 -1.9043097 -1.4100453 4.881156 -1.9050256 -1.4378523 4.8652482 -1.9021626 -1.4687581 4.8599095 -1.903594 -1.5010302 4.8588357 -1.9068149 -1.5302532 4.847753 -1.9060992 -1.5593966 4.8364949 -1.9053835 -1.5893354 4.8277225 -1.9057413 -1.6180358 4.8152242 -1.9046676 -1.6466426 4.8025556 -1.903594 -1.6776205 4.7967687 -1.9053835 -1.7076485 4.7881436 -1.9060992 -1.7379528 4.7802086 -1.9071728 -1.767251 4.7694545 -1.9071728 -1.7964826 4.7585211 -1.9071728 -1.8283272 4.7543812 -1.9100358 -1.8537203 4.7335086 -1.9060992 -1.8799636 4.7151065 -1.9032362 -1.9071043 4.6991563 -1.9014468 -1.9391092 4.6951337 -1.9046676 -1.9657115 4.6779819 -1.9025204 -1.9965796 4.6709843 -1.9046676 -2.0233417 4.6543636 -1.9028783 -2.0522397 4.642715 -1.9032362 -2.0810709 4.630887 -1.903594 -2.11061 4.6205788 -1.9046676 -2.1365631 4.6024594 -1.9025204 -2.1611784 4.5816622 -1.8992995 -2.1916709 4.5733676 -1.9014468 -2.2184656 4.5573149 -1.9003731 -2.2505245 4.5519876 -1.9039519 -2.2767372 4.5347552 -1.9025204 -2.305367 4.5223637 -1.9032362 -2.3322141 4.5064745 -1.9025204 -2.3585188 4.4895992 -1.9014468 -2.3811903 4.4659791 -1.8975101 -2.4098811 4.4537482 -1.8985838 -2.4344673 4.4339666 -1.8964365 -2.462991 4.4213929 -1.8975101 -2.4960451 4.4167657 -1.9021626 -2.5282066 4.4102783 -1.9060992 -2.5566278 4.3971043 -1.9071728 -2.5883021 4.3893785 -1.9107516 -2.6161444 4.3750172 -1.9114674 -2.6453602 4.362875 -1.9132568 -2.665235 4.3354239 -1.9082465 -2.6912928 4.3181963 -1.9078885 -2.7167406 4.3000226 -1.9071728 -2.7385423 4.2761946 -1.9039519 -2.7657456 4.2608771 -1.9046676 -2.7949166 4.2485075 -1.9068149 -2.8271472 4.240602 -1.9111094 -2.8473644 4.2146635 -1.9071728 -0 0 -0 -2.909513 4.1947508 -1.9143304 -0 0 -0 -0 0 -0 -0 0 -0 -3.0082762 4.1175604 -1.9121832 -0 0 -0 -3.0540986 4.0743566 -1.9093201 -0 0 -0 -0 0 -0 -3.1171033 4.0027146 -1.9021626 -3.1352451 3.9754477 -1.8982259 -3.1525869 3.9473791 -1.8939313 -0 0 -0 -3.1966488 3.9033377 -1.8914262 -3.2223272 3.8858063 -1.8924998 -3.251513 3.8723977 -1.8957207 -3.2830744 3.861623 -1.9003731 -3.3121891 3.8477752 -1.903594 -3.3412573 3.8337154 -1.9068149 -3.3628645 3.8110411 -1.9057413 -3.3812089 3.7847641 -1.9028783 -3.4062469 3.7660239 -1.9039519 -3.4286602 3.7443638 -1.903594 -3.4553792 3.7273645 -1.9057413 -3.4826574 3.7108591 -1.9082465 -3.5105064 3.6948359 -1.9111094 -3.5357003 3.6759186 -1.912541 -3.5614457 3.6574998 -1.9143304 -3.5818543 3.6335833 -1.9132568 -3.5961676 3.603605 -1.9089622 -3.6182113 3.5814714 -1.9089622 -3.6414537 3.5605087 -1.909678 -3.6545014 3.5296645 -1.9050256 -3.6929793 3.5232899 -1.9139725 -3.7165668 3.5024853 -1.9150462 -3.7366209 3.4783425 -1.9143304 -3.7578931 3.4553494 -1.9143304 -3.7797153 3.4328542 -1.9146882 -3.7944524 3.4039855 -1.9114674 -3.8194606 3.3843548 -1.9136146 -3.8415599 3.3620856 -1.9143304 -3.8578787 3.3347867 -1.9121832 -3.878978 3.3116586 -1.912541 -3.899225 3.2877953 -1.912541 -3.9214776 3.2656012 -1.9136146 -3.9414411 3.241478 -1.9136146 -3.9605315 3.2166438 -1.9132568 -3.9801939 3.192282 -1.9132568 -4.0040979 3.1712787 -1.9154041 -4.0249524 3.1478009 -1.9161198 -4.0404959 3.1201911 -1.9143304 -4.0573378 3.0936418 -1.9132568 -4.0792274 3.0709348 -1.9146882 -4.0934973 3.0425048 -1.912541 -4.1128411 3.0178828 -1.9128989 -4.1395993 2.9986162 -1.9168355 -4.1594396 2.974246 -1.9175513 -4.176085 2.9475913 -1.9168355 -4.1925602 2.9208441 -1.9161198 -4.2119422 2.8961222 -1.9168355 -4.2242246 2.8665531 -1.9143304 -4.2401824 2.8395405 -1.9136146 -4.2520728 2.8098657 -1.9111094 -4.2747087 2.7872932 -1.9136146 -4.2933011 2.762022 -1.9143304 -4.3125329 2.7371283 -1.9154041 -4.3292465 2.7106154 -1.9154041 -4.3370581 2.6786027 -1.9114674 -4.3398561 2.6436813 -1.9053835 -4.3591971 2.6189263 -1.9068149 -4.3727746 2.5907013 -1.9057413 -4.3877826 2.5633507 -1.9053835 -4.4058557 2.5377779 -1.9064571 -4.4229679 2.5116186 -1.9071728 -4.4423695 2.4867134 -1.9089622 -4.460814 2.4612134 -1.9103937 -4.4741912 2.4329038 -1.909678 -4.4947963 2.4084923 -1.9121832 -4.5136185 2.3830476 -1.9139725 -4.524014 2.353153 -1.9121832 -4.5358744 2.3240724 -1.9111094 -4.5608859 2.3016667 -1.9157619 -4.571578 2.2719758 -1.9143304 -4.5980129 2.2500398 -1.9196986 -4.6117325 2.2217846 -1.9196986 -4.6219039 2.1918452 -1.9182671 -4.6217279 2.1571245 -1.912541 -4.643362 2.1326234 -1.9161198 -4.6521053 2.1021693 -1.9143304 -4.6299338 2.0580316 -1.8996574 -4.6630077 2.0385625 -1.9082465 -4.6891537 2.0158143 -1.9139725 -4.6971335 1.9851862 -1.9121832 -4.7014656 1.9531031 -1.9089622 -4.7211413 1.9273957 -1.9121832 -4.7285457 1.8966526 -1.9103937 -4.7496505 1.8713691 -1.9143304 -4.7619143 1.8425276 -1.9146882 -4.7774944 1.8149327 -1.9164777 -4.7876658 1.7852581 -1.9161198 -4.8081756 1.7593783 -1.9200565 -4.821517 1.7307894 -1.9211301 -4.8373308 1.7030334 -1.9232774 -4.8512197 1.6745391 -1.9247088 -4.8658257 1.6462377 -1.9264983 -4.8758354 1.6163505 -1.9264983 -4.8865495 1.586691 -1.9268562 -4.8917437 1.5552629 -1.9250668 -4.89852 1.5243858 -1.9239931 -4.9024215 1.492668 -1.9218459 -4.9088035 1.4617596 -1.9207722 -4.9158874 1.4310901 -1.9200565 -4.9263721 1.4014109 -1.9207722 -4.9375768 1.3719071 -1.9218459 -4.940495 1.3401177 -1.9196986 -4.9540405 1.3112121 -1.9218459 -4.9638009 1.2812569 -1.9225616 -4.9751911 1.251687 -1.9239931 -4.9854984 1.2218033 -1.9250668 -4.9910851 1.1907563 -1.924351 -5.0001168 1.1605315 -1.9250668 -5.0025892 1.1288016 -1.9232774 -5.007597 1.097685 -1.9225616 -5.0096712 1.0659662 -1.9207722 -5.0142889 1.0348297 -1.9200565 -5.0196285 1.00386 -1.9196986 -5.0247769 0.97286367 -1.9193407 -5.0297337 0.94184196 -1.9189829 -5.042769 0.91229278 -1.9218459 -5.0593095 0.88326174 -1.9261404 -5.0655551 0.85235679 -1.9264983 -5.0780635 0.82245398 -1.9293613 -5.0857821 0.79171121 -1.9304349 -5.0970087 0.76145679 -1.9329401 -5.0969634 0.72950596 -1.9311507 -5.0985684 0.69783771 -1.9300771 -5.1101613 0.66750854 -1.9329401 -5.1058211 0.63510257 -1.9297192 -5.0901484 0.60145932 -1.9222038 -5.0965271 0.57052732 -1.9232774 -5.0980749 0.53904831 -1.9225616 -5.1012864 0.50775701 -1.9225616 -5.0987277 0.47592539 -1.9204143 -5.1136451 0.44568616 -1.9250668 -5.1088376 0.41369751 -1.9222038 -5.1140733 0.38255167 -1.9232774 -5.1237769 0.35167724 -1.9261404 -5.1081314 0.31912407 -1.9193407 -5.1249099 0.28861639 -1.9250668 -5.1228538 0.25697768 -1.9236352 -5.1196699 0.22533394 -1.9218459 -5.1274877 0.19416384 -1.924351 -5.1369824 0.16296566 -1.9275719 -5.1388192 0.13146661 -1.9279298 -5.141396 0.099969387 -1.9286456 -5.1456475 0.068470486 -1.9300771 -5.1431694 0.036875788 -1.9290035 -5.1479678 0.0053223954 -1.9307928 -5.1479034 -0.026265042 -1.9307928 -5.1457782 -0.05783065 -1.9300771 -5.144393 -0.089387313 -1.9297192 -5.1428137 -0.12092915 -1.9293613 -5.1373081 -0.15234457 -1.9275719 -5.1288114 -0.18359698 -1.9247088 -5.1369181 -0.21545388 -1.9282877 -5.1336336 -0.2468798 -1.9275719 -5.1254954 -0.27802104 -1.9250668 -5.1339459 -0.31008369 -1.9290035 -5.141264 -0.34219855 -1.9325823 -5.1362734 -0.37353534 -1.9315087 -5.1357465 -0.40519062 -1.9322244 -5.1313028 -0.43653721 -1.9315087 -5.1396866 -0.46903151 -1.9358032 -5.1367121 -0.50055921 -1.9358032 -5.137259 -0.53245282 -1.9372346 -5.1357517 -0.56416821 -1.9379504 -5.1349759 -0.59599268 -1.9390241 -5.1330762 -0.62771565 -1.9397398 -5.130054 -0.65931875 -1.9400977 -5.1240611 -0.69053447 -1.939382 -5.1243505 -0.72261369 -1.9411713 -5.1244392 -0.75472242 -1.9429607 -5.1114054 -0.78487635 -1.9397398 -5.1046491 -0.81592995 -1.9390241 -5.1013889 -0.84754205 -1.9397398 -5.0914917 -0.87803459 -1.9379504 -5.0795736 -0.90810901 -1.9354453 -5.0876789 -0.94180804 -1.9408134 -5.0882239 -0.97423643 -1.9433186 -5.0821505 -1.0054388 -1.9433186 -5.0813746 -1.037724 -1.9454659 -5.0785666 -1.0696527 -1.9468974 -5.0792084 -1.1023779 -1.9497604 -5.0750823 -1.1341333 -1.950834 -5.0707583 -1.1658796 -1.9519078 -5.0616913 -1.1965417 -1.9511919 -5.0506248 -1.2266959 -1.9497604 -5.0348487 -1.2556299 -1.9465395 -5.0198121 -1.2846481 -1.9436765 -5.0037065 -1.313292 -1.9404556 -4.9946523 -1.343727 -1.9400977 -4.9836125 -1.3736042 -1.9390241 -4.9705973 -1.4028894 -1.9372346 -4.9601016 -1.4328438 -1.9365189 -4.9610667 -1.4661617 -1.9404556 -4.9564466 -1.497925 -1.942245 -4.94627 -1.5280335 -1.9418871 -4.936801 -1.5583544 -1.9418871 -4.9307013 -1.5897626 -1.9433186 -4.9288363 -1.6226141 -1.9465395 -4.9117064 -1.6504476 -1.9436765 -4.90767 -1.6826736 -1.9461817 -4.8963714 -1.7124467 -1.9458238 -4.8892903 -1.7437124 -1.9472553 -4.8714781 -1.7711278 -1.9443922 -4.8622704 -1.801634 -1.9451081 -4.846756 -1.8297857 -1.9433186 -4.7805285 -1.8383799 -1.9207722 -4.8108945 -1.8840187 -1.9379504 -4.7844977 -1.9076244 -1.9318665 -4.7311707 -1.920094 -1.9146882 -4.7029014 -1.9423165 -1.9078885 -4.6392422 -1.9494365 -1.8864158 -4.5816851 -1.9584178 -1.8674482 -4.5430341 -1.9749552 -1.856354 -4.4522552 -1.9680681 -1.8234291 -4.3855834 -1.9708577 -1.8005248 -4.3504748 -1.9872566 -1.7908621 -4.2950029 -1.9938648 -1.7726103 -4.2573509 -2.0082319 -1.761874 -4.2104225 -2.0177743 -1.7472008 -4.1685762 -2.029269 -1.7346752 -4.1183777 -2.0361886 -1.7185706 -4.0857773 -2.0513666 -1.7099814 -4.0489874 -2.0641012 -1.699603 -4.0221472 -2.0816116 -1.693519 -4.0159125 -2.1097255 -1.696382 -3.9831159 -2.1237848 -1.6877929 -3.9823289 -2.1548493 -1.6931611 -3.9428387 -2.164865 -1.6817091 -3.9147971 -2.1808388 -1.6752672 -3.8997161 -2.2038996 -1.6745514 -3.8828793 -2.225929 -1.6731199 -3.8295918 -2.226717 -1.6555839 -3.8053999 -2.2440078 -1.6509314 -3.8236172 -2.2864816 -1.6652466 -3.7448375 -2.2706902 -1.6362584 -3.66242 -2.2515748 -1.6054808 -3.5035088 -2.1836333 -1.5399889 -3.5626738 -2.2509682 -1.5729138 -3.2562625 -2.0854766 -1.4397827 -3.2011082 -2.0779672 -1.4204572 -3.1906383 -2.0991092 -1.421531 -3.1831372 -2.1222725 -1.424036 -3.1924949 -2.1569211 -1.4344145 -3.0767155 -2.1063244 -1.3868166 -3.0767777 -2.1342094 -1.3929006 -3.0124342 -2.1170809 -1.3689227 -2.9400511 -2.0932879 -1.3410081 -2.893069 -2.0867114 -1.3249036 -2.8508039 -2.0829427 -1.3109462 -2.8424733 -2.1037281 -1.3130935 -2.8070955 -2.1043293 -1.3023572 -2.7933869 -2.1209493 -1.3019993 -2.7751384 -2.1340652 -1.2994941 -2.7877789 -2.1711314 -1.3120199 -2.7707384 -2.1853051 -1.3102305 -2.6996331 -2.1562345 -1.2819581 -2.6304431 -2.1275496 -1.2544014 -3.3072989 -2.7086015 -1.5961759 -3.2913358 -2.7294397 -1.5965338 -3.2888296 -2.7615914 -1.6036913 -2.4522212 -2.0850234 -1.1914147 -2.4061182 -2.0714018 -1.1745944 -2.3891389 -2.0824459 -1.1724471 -2.3665135 -2.0884175 -1.1674367 -2.3473871 -2.0973003 -1.1642158 -2.3317037 -2.109159 -1.1627843 -2.3228505 -2.1272097 -1.1649317 -2.3001668 -2.1325357 -1.1599213 -2.2686534 -2.1293573 -1.1502585 -2.2244036 -2.1136541 -1.1337961 -2.1689913 -2.0864856 -1.1112498 -2.1588242 -2.1023605 -1.1126813 -2.1412284 -2.1109788 -1.1101761 -2.1183202 -2.1141844 -1.104808 -2.0993955 -2.12117 -1.1015871 -2.0785062 -2.1260006 -1.0972924 -2.0595834 -2.1326697 -1.0940715 -2.036145 -2.1344581 -1.0883455 -2.020448 -2.1441934 -1.0869139 -2.0002542 -2.1490326 -1.0829773 -1.9800775 -2.1537049 -1.0790406 -1.9567797 -2.1547551 -1.0733145 -1.946016 -2.1695013 -1.0747461 -1.9233778 -2.1709185 -1.0693779 -1.9137112 -2.1868949 -1.0715252 -1.9039208 -2.2028344 -1.0736724 -1.8885496 -2.2123446 -1.0725988 -1.8785512 -2.228174 -1.0747461 -1.8809791 -2.2590311 -1.0844089 -1.868862 -2.2726934 -1.0854825 -1.8595917 -2.289916 -1.0883455 -1.8466747 -2.3027399 -1.0890613 -1.83425 -2.3162234 -1.0901349 -1.8177022 -2.3244927 -1.0887034 -1.8016928 -2.333385 -1.0876298 -1.7833779 -2.3391986 -1.0851246 -1.7616895 -2.3403997 -1.0804721 -1.7428393 -2.34517 -1.0776092 -1.7223396 -2.3475389 -1.0736724 -1.697494 -2.3436956 -1.0668727 -1.6771064 -2.3457124 -1.0629361 -1.670221 -2.3666387 -1.0679464 -1.6551343 -2.3760762 -1.0675884 -1.6415821 -2.3877258 -1.0683043 -1.6295223 -2.4016166 -1.0700936 -1.6261876 -2.428638 -1.077967 -1.6189781 -2.4502554 -1.0833352 -1.6049334 -2.4617074 -1.0840509 -1.590809 -2.4730792 -1.0847667 -1.5741031 -2.4804287 -1.083693 -1.5643054 -2.4987459 -1.0876298 -1.5459995 -2.5035307 -1.0854825 -1.5325525 -2.5161593 -1.0869139 -1.5190085 -2.528717 -1.0883455 -1.5058441 -2.5420065 -1.0901349 -1.4911605 -2.5528109 -1.0908506 -1.4777993 -2.5659578 -1.09264 -1.4597213 -2.5709174 -1.0908506 -1.4398135 -2.5724928 -1.0876298 -1.4185879 -2.5714684 -1.0833352 -1.402783 -2.5801244 -1.0833352 -1.3820733 -2.5796299 -1.0793985 -1.3605505 -2.5773273 -1.0747461 -1.352899 -2.601366 -1.0815458 -1.3381894 -2.6121113 -1.0826194 -1.3280272 -2.6319435 -1.0876298 -1.3147624 -2.6458957 -1.0901349 -1.3120492 -2.6815901 -1.1019449 -1.2939492 -2.6862254 -1.1005133 -1.2746413 -2.6882086 -1.0980083 -1.2514079 -2.6815951 -1.0919243 -1.2345406 -2.6883748 -1.0915664 -1.2057152 -2.6686704 -1.0801142 -1.1893178 -2.6760182 -1.0801142 -1.1672641 -2.6704323 -1.0747461 -1.1519632 -2.6801176 -1.0758197 -1.1322244 -2.6793947 -1.0725988 -1.1236452 -2.7052619 -1.0804721 -1.1102018 -2.7198858 -1.083693 -1.0927967 -2.7249136 -1.0829773 -1.0750293 -2.7289612 -1.0819037 -1.0586014 -2.736377 -1.0822616 -1.0407964 -2.7402022 -1.081188 -1.0229843 -2.7439122 -1.0801142 -1.0009936 -2.7361073 -1.0743883 -0.98765743 -2.7518649 -1.0783249 -0.96424043 -2.7393775 -1.0708094 -0.94253784 -2.7311203 -1.0650834 -0.92935413 -2.7474661 -1.0693779 -0.91512358 -2.7610936 -1.0725988 -0.90191442 -2.7782021 -1.0772512 -0.88824666 -2.7943618 -1.0815458 -0.86914134 -2.7935185 -1.0790406 -0.85960174 -2.8238101 -1.0890613 -0.84199244 -2.8281364 -1.0887034 -0.82566774 -2.8368356 -1.0901349 -0.81003463 -2.8481352 -1.09264 -0.79979497 -2.8791423 -1.1030185 -0.77600074 -2.8614659 -1.0940715 -0.75866747 -2.8670762 -1.0944295 -0.73896015 -2.8635402 -1.0912086 -0.71795744 -2.8544376 -1.0858403 -0.69976246 -2.8560684 -1.0847667 -0.68092418 -2.8548586 -1.0826194 -0.66212714 -2.8535256 -1.0804721 -0.64604497 -2.8639107 -1.0829773 -0.6340605 -2.8933594 -1.0929979 -0.61124057 -2.8734496 -1.083693 -0.59624118 -2.8899486 -1.0887034 -0.57831436 -2.892637 -1.0883455 -0.55966675 -2.8915474 -1.0865561 -0.54999512 -2.9380639 -1.1033764 -0.5397734 -2.9845686 -1.1201967 -0.51679105 -2.961149 -1.1098182 -0.50000721 -2.9725516 -1.1130391 -0.48101172 -2.9709549 -1.1112498 -0.46205473 -2.9692371 -1.1094604 -0.44451731 -2.9766338 -1.1112498 -0.42240593 -2.9524996 -1.1008712 -0.40833607 -2.9846401 -1.1123234 -0.38638443 -2.9593127 -1.1015871 -0.36718115 -2.9532881 -1.0983661 -0.34444806 -2.9165385 -1.0833352 -0.32571438 -2.9111736 -1.0804721 -0.30863172 -2.9205458 -1.0833352 -0.29070577 -2.9223847 -1.0833352 -0.27190033 -2.9148161 -1.0797564 -0.25514632 -2.9294529 -1.0847667 -0.23927906 -2.9570234 -1.0947874 -0.22127007 -2.9602983 -1.0955031 -0.2066866 -3.0137682 -1.1155443 -0.18696636 -2.9954088 -1.1080289 -0.16868851 -2.9983642 -1.1087446 -0.15047514 -3.0030732 -1.1101761 -0.132416 -3.0123355 -1.113397 -0.11382393 -3.0102921 -1.1123234 -0.095440023 -3.0137339 -1.113397 -0.077257715 -3.0263977 -1.1180495 -0.058868896 -3.0361507 -1.1216283 -0.040350799 -3.0448577 -1.1248492 -0.021694215 -3.0487831 -1.1262807 -0.0029774758 -3.0404549 -1.1230597 --0.015711294 -3.0469522 -1.1255649 --0.034354646 -3.04213 -1.1237755 --0.052890968 -3.0343928 -1.1209124 --0.071464904 -3.0321441 -1.1201967 --0.089433536 -3.0101812 -1.1119655 --0.10733535 -2.9937119 -1.1058816 --0.12476505 -2.9706061 -1.0972924 --0.14540812 -3.0201502 -1.1166179 --0.16383567 -3.0173364 -1.1159022 --0.18701306 -3.0936363 -1.1456062 --0.20487681 -3.0756598 -1.1391643 --0.22516562 -3.0939023 -1.1466798 --0.24165067 -3.0608125 -1.1345119 --0.26216665 -3.0797412 -1.1423852 --0.28156739 -3.0836542 -1.1445326 --0.30274531 -3.1051028 -1.1534795 --0.32054168 -3.0911124 -1.1488271 --0.34092879 -3.102082 -1.1538373 --0.36017156 -3.1017869 -1.1545532 --0.37942353 -3.1013722 -1.1552689 --0.39832708 -3.0980597 -1.154911 --0.47964773 -3.5582633 -1.3338505 --0.62722427 -4.4475212 -1.6792039 --0.52640462 -3.5733571 -1.3420818 --0.68288815 -4.4468732 -1.6820669 --0.71060276 -4.4453654 -1.6831405 --0.73985416 -4.4528966 -1.6877929 --0.76541793 -4.4381509 -1.6838562 --0.79214275 -4.4306135 -1.6827826 --0.81914365 -4.4247513 -1.6824248 --0.8457514 -4.4168906 -1.6813512 --0.87338048 -4.4143658 -1.6824248 --0.89970303 -4.4052644 -1.6809932 --0.92498487 -4.3914375 -1.6777723 --0.95151687 -4.3838539 -1.6770566 --0.9765656 -4.3697314 -1.6738356 --1.0033593 -4.363657 -1.6738356 --1.0223846 -4.3247037 -1.660952 --1.0475793 -4.3129044 -1.6588048 --1.0679244 -4.2819328 -1.649142 --1.0784402 -4.2137842 -1.6248063 --1.1016684 -4.1971526 -1.6208695 --1.1518952 -4.2813883 -1.6570153 --1.1875694 -4.3084478 -1.6706147 --1.2132225 -4.2983842 -1.6695411 --1.2419057 -4.298933 -1.672762 --1.2690538 -4.2939181 -1.6738356 --1.295917 -4.2878385 -1.6745514 --1.3233045 -4.2833748 -1.675983 --1.3456277 -4.2627077 -1.6709726 --1.3783467 -4.2748117 -1.6792039 --1.406302 -4.271596 -1.6813512 --1.4289173 -4.2522645 -1.6770566 --1.4580096 -4.2522502 -1.6806353 --1.4837652 -4.2423425 -1.6802775 --1.5119631 -4.239315 -1.6827826 --1.5360327 -4.2246923 -1.6806353 --1.5583578 -4.2055564 -1.6766987 --1.5831442 -4.1932945 -1.6756251 --1.6121948 -4.1922174 -1.6792039 --1.6195042 -4.135293 -1.6598784 --1.1735775 -2.9430194 -1.1720892 --1.1919646 -2.9366283 -1.1724471 --1.2110301 -2.9318485 -1.1735207 --1.7306283 -4.1184077 -1.669899 --1.7621038 -4.1223083 -1.675983 --1.7925755 -4.1234078 -1.6809932 --1.8087837 -4.0918331 -1.6724042 --1.8323258 -4.077251 -1.6709726 --1.5725875 -3.4424832 -1.4082894 --1.584246 -3.4124415 -1.3997003 --1.5876294 -3.3654959 -1.3839536 --1.5933213 -3.3245332 -1.370712 --1.6112386 -3.3096566 -1.3685648 --1.6344123 -3.3055675 -1.3710699 --1.6588532 -3.303822 -1.3746488 --1.683758 -3.3027327 -1.3785855 --1.7095699 -3.3031204 -1.3832378 --1.7350157 -3.3024888 -1.3875324 --1.7675459 -3.3148527 -1.397553 --2.1161945 -3.9108768 -1.6620257 --2.1280193 -3.8757176 -1.6523629 --2.15903 -3.8756399 -1.658089 --2.183229 -3.8631322 -1.6584469 --2.2110705 -3.8569548 -1.6616678 --2.2281249 -3.8320136 -1.6566575 --2.258235 -3.8295312 -1.6616678 --2.2802525 -3.8131983 -1.6605941 --2.304091 -3.7999337 -1.660952 --2.3263857 -3.7841337 -1.6602362 --2.3505485 -3.7713728 -1.660952 --2.3701541 -3.751353 -1.6584469 --2.3941345 -3.7383122 -1.6591626 --2.4160106 -3.7219851 -1.6584469 --2.4346976 -3.7008495 -1.6555839 --2.4558063 -3.6835101 -1.6545101 --2.4799294 -3.6706934 -1.6555839 --2.5034606 -3.6569488 -1.6562996 --2.5125489 -3.6223364 -1.6473526 --2.5331175 -3.6045594 -1.646279 --2.5519381 -3.5843842 -1.6441317 --2.5804372 -3.5777471 -1.6484263 --2.6050951 -3.5656166 -1.6502156 --2.638588 -3.5653279 -1.6577311 --2.6559348 -3.5430932 -1.6548681 --2.6764956 -3.5252423 -1.6541523 --2.6940918 -3.5035715 -1.6516472 --2.7126701 -3.4832909 -1.6498578 --2.7241633 -3.4541159 -1.6437738 --2.3485131 -2.9404261 -1.4000582 --2.3512456 -2.9070823 -1.3907533 --2.3737714 -2.8983803 -1.3936163 --2.805727 -3.3833458 -1.6423423 --2.8342392 -3.3753636 -1.6469947 --2.8609443 -3.3650241 -1.6505735 --2.8858018 -3.3523605 -1.6530787 --2.894048 -3.3205106 -1.6459211 --2.9217811 -3.3110931 -1.6502156 --2.9395542 -3.2903175 -1.6487842 --2.9584353 -3.2708337 -1.6480684 --2.9784491 -3.2526195 -1.6480684 --2.995177 -3.2308586 -1.646279 --3.0206952 -3.2185481 -1.6494999 --3.0558219 -3.2162008 -1.658089 --3.0774403 -3.199409 -1.6591626 --3.094408 -3.1777899 -1.6577311 --3.1053274 -3.1500976 -1.6530787 --3.1391075 -3.1455264 -1.660952 --3.1643212 -3.1321187 -1.6641729 --3.1841474 -3.1132965 -1.6645308 --3.1877437 -3.078779 -1.6562996 --3.2133303 -3.0656078 -1.6598784 --3.233439 -3.0471144 -1.6605941 --3.2643764 -3.0386701 -1.6670359 --3.2829599 -3.0185831 -1.6670359 --3.3104053 -3.0065444 -1.6716884 --3.3253155 -2.9830575 -1.669899 --3.3512437 -2.9694102 -1.6738356 --3.3694007 -2.9487915 -1.6738356 --3.3831925 -2.9243975 -1.6716884 --3.4081736 -2.909647 -1.6752672 --3.4273903 -2.889884 -1.675983 --3.4515154 -2.8741779 -1.6792039 --3.4755764 -2.8582842 -1.6824248 --3.4988472 -2.8416147 -1.6852878 --3.53297 -2.8335314 -1.693519 --3.558341 -2.8181779 -1.6974556 --3.5821855 -2.8014691 -1.7006766 --3.6044807 -2.7834318 -1.7031817 --3.6274316 -2.7657926 -1.7060448 --3.6383662 -2.7389896 -1.7031817 --3.6566026 -2.7177277 -1.7038975 --3.6799846 -2.7002122 -1.7071184 --3.703289 -2.682512 -1.7103393 --3.7265146 -2.6646273 -1.7135602 --3.7435572 -2.6422503 -1.7139181 --3.7482073 -2.611223 -1.70855 --3.7672365 -2.5902917 -1.7099814 --3.7961938 -2.5760422 -1.7160654 --3.8158078 -2.555299 -1.7178547 --3.8337519 -2.5333822 -1.7189285 --3.8492243 -2.5098109 -1.7189285 --3.8779011 -2.4947348 -1.7250124 --3.9010189 -2.475898 -1.7285912 --3.9303825 -2.4608359 -1.735033 --3.9636796 -2.4479599 -1.7432642 --3.9818151 -2.4255366 -1.7446958 --4.0006247 -2.4034636 -1.7464851 --4.0257401 -2.3850594 -1.7511375 --4.052392 -2.3673792 -1.7565057 --4.0700784 -2.3443341 -1.7579372 --4.0933175 -2.3243892 -1.761874 --4.1262422 -2.3097212 -1.7701051 --4.1411543 -2.2848108 -1.770463 --4.1583767 -2.2611425 -1.7718946 --4.1721725 -2.2355847 -1.7718946 --4.1924171 -2.2134309 -1.7747576 --4.2075763 -2.1885269 -1.7754734 --4.1935024 -2.1486149 -1.7636633 --4.1649275 -2.1018057 -1.7457694 --4.1835985 -2.0791199 -1.7482746 --4.2155671 -2.0628521 -1.7565057 --4.2424455 -2.043838 -1.7625897 --4.2751546 -2.0273726 -1.7711787 --4.3078208 -2.0105824 -1.7797679 --4.3531685 -1.9993142 -1.7937251 --4.4036441 -1.9898721 -1.8098297 --4.4533134 -1.9795059 -1.8255764 --4.508153 -1.970849 -1.8434703 --4.566484 -1.9630684 -1.8627958 --4.6369286 -1.9597355 -1.8871316 --4.6962919 -1.9509534 -1.9068149 --4.7712808 -1.9478697 -1.9329401 --4.8186746 -1.9328122 -1.9476131 --4.8591118 -1.914507 -1.9594232 --4.8855715 -1.8903855 -1.9655071 --4.9092989 -1.8650161 -1.9705174 --4.9250245 -1.8364897 -1.9723068 --4.9388309 -1.8071985 -1.9733804 --4.9498267 -1.7768605 -1.9733804 --4.964159 -1.747696 -1.974812 --4.9686108 -1.7150704 -1.9723068 --4.976387 -1.6836534 -1.9712331 --4.9821925 -1.6516176 -1.9694438 --5.0020022 -1.6241893 -1.9733804 --5.0074244 -1.5920521 -1.9715911 --5.0144243 -1.5604645 -1.9705174 --5.017652 -1.5277629 -1.9680122 --5.0269318 -1.4969463 -1.9680122 --5.0198846 -1.4613743 -1.9615705 --5.0521078 -1.4371899 -1.9708753 --5.0374398 -1.3996625 -1.9615705 --5.0360203 -1.3660372 -1.9576337 --5.0542364 -1.3377399 -1.9615705 --5.0677743 -1.3081032 -1.9637177 --5.0838552 -1.2790344 -1.9669386 --5.0888867 -1.2471493 -1.965865 --5.1064339 -1.2182854 -1.9698017 --5.1165419 -1.1875637 -1.9708753 --5.1246433 -1.1563524 -1.9712331 --5.1243453 -1.1232862 -1.9683702 --5.1357079 -1.0927948 -1.9701595 --5.1368294 -1.0601293 -1.9680122 --5.1459842 -1.02914 -1.9690859 --0 -0 -0 --5.1224318 -0.95920771 -1.9551287 --5.155786 -0.93274808 -1.965865 --5.1641717 -0.90157723 -1.9669386 --5.19631 -0.87436891 -1.9773171 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 --0 -0 -0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5351443 13.340423 5.4857445 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9488316 -2.2632864 3.2971976 128.0 +7.969614 -2.3221679 3.3115354 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9979534 -2.5449817 3.3479314 128.0 +7.9919157 -2.5971713 3.3519754 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.3939185 -2.2862976 1.9880397 128.0 +4.3830962 -2.3149531 1.9895103 128.0 +4.3425841 -2.3277383 1.9777459 128.0 +4.3355713 -2.3583412 1.9810547 128.0 +4.3120642 -2.3799541 1.9770106 128.0 +4.2689838 -2.3904581 1.9641433 128.0 +4.226747 -2.4009831 1.9516436 128.0 +4.2022672 -2.421299 1.9472319 128.0 +4.1961622 -2.4522016 1.9512759 128.0 +4.0786486 -2.4171882 1.9042183 128.0 +4.0924315 -2.4594212 1.9174533 128.0 +4.0486789 -2.4670575 1.9042183 128.0 +3.5857356 -2.2150939 1.6961354 128.0 +3.6603353 -2.2923615 1.7373109 128.0 +3.9154494 -2.4858129 1.8634106 128.0 +3.9704947 -2.5551016 1.896498 128.0 +3.8963318 -2.5412979 1.8689251 128.0 +3.8643763 -2.5543842 1.8612047 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.0545526 -2.8255713 1.983628 128.0 +4.1655059 -2.9410751 2.0457587 128.0 +0 -0 0 128.0 +2.9402294 -2.1300862 1.465259 128.0 +2.9308519 -2.1508391 1.4670972 128.0 +2.9026759 -2.1576812 1.4597443 128.0 +3.7584021 -2.830193 1.8898804 128.0 +3.729876 -2.8447387 1.8843659 128.0 +3.560034 -2.7498541 1.8082649 128.0 +2.903774 -2.2712555 1.4873172 128.0 +3.2279439 -2.5570679 1.657901 128.0 +2.8372459 -2.2758653 1.4678324 128.0 +2.8520942 -2.3166943 1.4825379 128.0 +2.8529043 -2.3465614 1.4902583 128.0 +4.0857925 -3.4035554 2.1321537 128.0 +2.9418752 -2.4809532 1.5512862 128.0 +3.968065 -3.3887992 2.0928164 128.0 +3.0216296 -2.612391 1.6090053 128.0 +3.0048437 -2.6302695 1.6086377 128.0 +2.8209605 -2.4999571 1.5200369 128.0 +2.7502079 -2.4675174 1.490626 128.0 +2.7370803 -2.4862223 1.4917289 128.0 +2.7265639 -2.5073781 1.4943023 128.0 +2.7097666 -2.5227928 1.4935671 128.0 +2.7307694 -2.5738277 1.5134195 128.0 +3.9565771 -3.776047 2.1920786 128.0 +2.922313 -2.8230159 1.6362104 128.0 +2.9428232 -2.8779671 1.6571658 128.0 +2.9647501 -2.9352386 1.6792241 128.0 +3.0267956 -3.0337141 1.7240759 128.0 +3.2267456 -3.2741785 1.8472345 128.0 +2.7448459 -2.8193479 1.5854765 128.0 +2.8125589 -2.9246423 1.6340046 128.0 +2.8419425 -2.9917531 1.6612098 128.0 +2.8413439 -3.0281284 1.6715037 128.0 +2.9010746 -3.1301036 1.7170907 128.0 +2.8403811 -3.1025622 1.6928266 128.0 +2.9740608 -3.288969 1.7828979 128.0 +2.9216201 -3.27108 1.7637807 128.0 +2.8861182 -3.2715065 1.7545898 128.0 +2.8916416 -3.3186088 1.7700306 128.0 +2.8178585 -3.2742455 1.7376785 128.0 +2.7182388 -3.1979189 1.6891503 128.0 +2.6573219 -3.1653798 1.6637833 128.0 +2.65921 -3.2074044 1.6770183 128.0 +2.5900083 -3.1632047 1.6461366 128.0 +2.5851634 -3.19712 1.6553277 128.0 +2.5202522 -3.156225 1.6266519 128.0 +2.6896348 -3.4112108 1.7472371 128.0 +3.2374752 -4.1586623 2.1134043 128.0 +2.7036643 -3.5169663 1.7836332 128.0 +3.1980014 -4.2136374 2.1211245 128.0 +2.661417 -3.5513682 1.7843684 128.0 +2.6451054 -3.575109 1.7880448 128.0 +2.6286023 -3.598783 1.7917212 128.0 +2.6075585 -3.616353 1.7924565 128.0 +2.5815465 -3.6269801 1.789883 128.0 +2.5458829 -3.6237247 1.7806921 128.0 +2.5172436 -3.6301055 1.7762804 128.0 +2.4838967 -3.6293633 1.7685601 128.0 +0 -0 0 128.0 +2.0138299 -3.0210435 1.465259 128.0 +1.995766 -3.0341206 1.4656266 128.0 +1.9806536 -3.0517709 1.4682001 128.0 +1.9593848 -3.0599499 1.4663619 128.0 +1.9480187 -3.0837107 1.4718764 128.0 +1.8897341 -3.0324516 1.4424654 128.0 +1.8657378 -3.0352728 1.4384214 128.0 +1.8331047 -3.0235972 1.4277599 128.0 +1.7944851 -3.0012579 1.4123192 128.0 +1.4432333 -2.447331 1.1531346 128.0 +1.9252216 -3.3117361 1.544301 128.0 +1.4140165 -2.4664714 1.1538699 128.0 +1.4061716 -2.4880581 1.159752 128.0 +1.3605776 -2.4421954 1.1351203 128.0 +1.3415416 -2.4431596 1.1318116 128.0 +1.5273064 -2.8227546 1.298719 128.0 +1.4780405 -2.7721558 1.2718816 128.0 +1.3758643 -2.6189535 1.1994569 128.0 +1.2726371 -2.4588253 1.1244588 128.0 +1.4596828 -2.8635299 1.3005573 128.0 +1.5083795 -3.0046031 1.3590117 128.0 +1.5471606 -3.1297009 1.4101133 128.0 +1.2155716 -2.4968436 1.1277676 128.0 +1.6833229 -3.5133278 1.5700357 128.0 +1.6506341 -3.5000355 1.5597419 128.0 +1.3032149 -2.8073275 1.2534996 128.0 +1.3122176 -2.8728023 1.278499 128.0 +1.2812352 -2.8511059 1.2656317 128.0 +1.2479396 -2.8231835 1.250191 128.0 +0.96055067 -2.2089436 0.98218304 128.0 +0.98094124 -2.2943356 1.0163734 128.0 +1.4671522 -3.4922237 1.5273898 128.0 +1.451726 -3.515775 1.5336396 128.0 +0.95775992 -2.3594043 1.0365934 128.0 +0.94395304 -2.3669646 1.0373287 128.0 +1.3840559 -3.5349722 1.5306984 128.0 +0.92617327 -2.4078865 1.0498284 128.0 +1.034101 -2.7389631 1.1873249 128.0 +1.2651724 -3.4150715 1.4696707 128.0 +0.91946858 -2.5285463 1.0935773 128.0 +1.2212965 -3.4250836 1.4674648 128.0 +1.2824463 -3.6678033 1.5659916 128.0 +1.147539 -3.3474326 1.4288628 128.0 +1.0044848 -2.9894094 1.2766608 128.0 +0.92832136 -2.819711 1.203501 128.0 +0.91527796 -2.8386321 1.2090155 128.0 +0.88190609 -2.7936389 1.1880602 128.0 +0.86913449 -2.813216 1.1939423 128.0 +0.87200856 -2.8852689 1.2215152 128.0 +1.0609206 -3.5907371 1.5101107 128.0 +0.74529344 -2.5794404 1.0913714 128.0 +0.74156076 -2.6269298 1.1090181 128.0 +0.98428309 -3.5719984 1.4946699 128.0 +0.90323919 -3.3579288 1.4045987 128.0 +0.87696052 -3.3418174 1.3957754 128.0 +0.8720938 -3.4084051 1.4207748 128.0 +0.77364761 -3.1023574 1.2939398 128.0 +0.93363732 -3.8454344 1.5942998 128.0 +0.6883145 -2.9115889 1.2126919 128.0 +0.56100941 -2.4389904 1.0193144 128.0 +0.53651738 -2.3997266 1.0020355 128.0 +0.52985567 -2.4402378 1.0171087 128.0 +0.69069278 -3.2798038 1.3549676 128.0 +0.52457225 -2.5677502 1.0660044 128.0 +0.51925474 -2.6238372 1.0873275 128.0 +0.50820684 -2.6534638 1.097989 128.0 +0.48566574 -2.6226959 1.0843863 128.0 +0.46989065 -2.6274574 1.0851216 128.0 +0.45502153 -2.6376233 1.0880626 128.0 +0.43609169 -2.6238513 1.0814452 128.0 +0 -0 0 128.0 +1.1900495 -7.762095 3.1343341 128.0 +1.1526712 -7.8391781 3.1622744 128.0 +0.4601472 -3.2636645 1.3329093 128.0 +0.31973183 -2.3705482 0.97556555 128.0 +0.30376211 -2.3613963 0.97115391 128.0 +0.2902799 -2.3715239 0.97446269 128.0 +0.27636421 -2.3788033 0.97666848 128.0 +0.26358441 -2.3970942 0.98328596 128.0 +0.25278741 -2.4365935 0.99835908 128.0 +0.2726002 -2.7963135 1.1406349 128.0 +0.32369035 -3.5490437 1.438789 128.0 +0.30944133 -3.6399217 1.4740822 128.0 +0.28491774 -3.6139383 1.4630531 128.0 +0.2642138 -3.6360245 1.4711411 128.0 +0.14874732 -2.229893 0.9134348 128.0 +0.13773625 -2.275322 0.93108141 128.0 +0.1515798 -2.7924387 1.1354879 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.10584817 -2.9555397 1.1990893 128.0 +0.09674453 -3.264751 1.3211449 128.0 +0.07662455 -3.2615643 1.3196745 128.0 +0.057400484 -3.3084648 1.3380563 128.0 +0.036806334 -3.2817872 1.3273948 128.0 +0.016379403 -3.2205741 1.3031307 128.0 +-0.0033832951 -3.2215438 1.3034984 128.0 +-0.023754396 -3.3014376 1.3351152 128.0 +-0.043998457 -3.3002996 1.3347476 128.0 +-0.064930029 -3.3343697 1.3483502 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.2875165 -3.6561685 1.5623153 128.0 +-1.3096116 -3.6473243 1.5619477 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.2623429 -3.2620118 1.4126868 128.0 +-1.2768747 -3.2403631 1.4068046 128.0 +-1.2925746 -3.2221115 1.4023929 128.0 +-1.3672057 -3.3484123 1.4597443 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6324087 -3.7330129 1.6406221 128.0 +-1.6942242 -3.8104403 1.6784889 128.0 +-1.7191058 -3.8033624 1.6799593 128.0 +-1.7280372 -3.7614794 1.6663568 128.0 +-3.4012337 -7.2827697 3.2074938 128.0 +-3.3617082 -7.0844979 3.1299224 128.0 +-3.4010749 -7.0553608 3.126246 128.0 +-3.435302 -7.015986 3.1181579 128.0 +-1.5158021 -3.0497537 1.3762907 128.0 +-1.5256811 -3.0229638 1.3685702 128.0 +-1.5514156 -3.0276127 1.3748201 128.0 +-1.5665278 -3.0114374 1.371879 128.0 +-3.8539882 -7.2953944 3.291683 128.0 +-3.8494501 -7.1798215 3.2505076 128.0 +-3.8938768 -7.1568832 3.2508752 128.0 +-0 -0 0 128.0 +-1.963174 -3.5063548 1.6185639 128.0 +-0 -0 0 128.0 +-1.6604819 -2.8825824 1.3450414 128.0 +-1.7443253 -2.9855349 1.3968784 128.0 +-2.5319765 -4.2722263 1.9931866 128.0 +-2.4340219 -4.0501914 1.8979685 128.0 +-2.3741081 -3.8962257 1.8336319 128.0 +-2.3114216 -3.7415707 1.7685601 128.0 +-2.2548313 -3.6004455 1.7093704 128.0 +-2.2494552 -3.5433683 1.6891503 128.0 +-2.0068421 -3.1189981 1.4961405 128.0 +-2.0015466 -3.069243 1.4784939 128.0 +-2.0162375 -3.0506985 1.4755528 128.0 +-3.0559394 -4.5616546 2.2005343 128.0 +-3.3822131 -4.9820976 2.4104555 128.0 +-5.5705485 -8.0968809 3.9151964 128.0 +-5.9259624 -8.5011845 4.1265879 128.0 +-5.617444 -7.9542336 3.8795354 128.0 +-2.4865239 -3.4765773 1.7196642 128.0 +-5.7479281 -7.9306288 3.9019616 128.0 +-5.7810683 -7.8742228 3.8916676 128.0 +-5.2070746 -7.0021439 3.4795458 128.0 +-6.2706671 -8.3248425 4.1501169 128.0 +-0 -0 0 128.0 +-5.3561201 -6.9323382 3.4931483 128.0 +-5.4266415 -6.9352269 3.5111625 128.0 +-5.4667821 -6.8988843 3.509692 128.0 +-5.5229812 -6.8826165 3.5185153 128.0 +-0 -0 0 128.0 +-5.6111627 -6.8193488 3.5210888 128.0 +-3.2154152 -3.8600426 2.0159802 128.0 +-5.7106171 -6.7691679 3.5310149 128.0 +-5.7955399 -6.7849073 3.5574849 128.0 +-0 -0 0 128.0 +-2.5653198 -2.9306891 1.5696681 128.0 +-3.1848421 -3.593298 1.9281148 128.0 +-3.2142854 -3.5819924 1.9325265 128.0 +-2.6782527 -2.9483502 1.6045936 128.0 +-2.7107763 -2.9476006 1.6130493 128.0 +-2.7357845 -2.9383969 1.6170933 128.0 +-2.6810229 -2.844429 1.5751827 128.0 +-2.6798017 -2.8084192 1.5645211 128.0 +-3.6238074 -3.750788 2.0917137 128.0 +-3.6545587 -3.7364583 2.0961251 128.0 +-2.7441311 -2.7718306 1.5718739 128.0 +-3.6645756 -3.6558704 2.0762727 128.0 +-3.0416284 -2.9976826 1.7181937 128.0 +-2.9079962 -2.8310995 1.6343722 128.0 +-2.9192784 -2.8074033 1.6310636 128.0 +-2.897332 -2.752301 1.6097406 128.0 +-2.9114518 -2.7319269 1.60827 128.0 +-3.1819541 -2.9491045 1.7450312 128.0 +-3.2281199 -2.9552636 1.7601044 128.0 +-3.1047533 -2.8075726 1.6847386 128.0 +-3.0310392 -2.7073402 1.6365781 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-4.0260353 -3.2550223 2.0766404 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-4.1973372 -3.1856363 2.1130366 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-4.0404425 -2.9510167 2.0078921 128.0 +-4.0524378 -2.9218197 2.004951 128.0 +-5.7965436 -4.1248894 2.8424296 128.0 +-5.7479191 -4.0374074 2.8067689 128.0 +-5.9415059 -4.1191325 2.8880167 128.0 +-5.9336619 -4.0600224 2.8722084 128.0 +-5.9337969 -4.0068879 2.8604438 128.0 +-6.0116749 -4.0059772 2.8858109 128.0 +-6.0454674 -3.9751446 2.8902225 128.0 +-6.0947127 -3.9541686 2.9019871 128.0 +-5.8548775 -3.7477822 2.7780931 128.0 +-0 -0 0 128.0 +-5.8593774 -3.6500895 2.758976 128.0 +-6.6519008 -4.0871687 3.1163197 128.0 +-5.8520279 -3.5465903 2.7350795 128.0 +-0 -0 0 128.0 +-5.8975129 -3.4759259 2.7361825 128.0 +-7.3709908 -4.2833204 3.400136 128.0 +-6.9573288 -3.9861174 3.1997736 128.0 +-7.448103 -4.2067189 3.4115329 128.0 +-8.5829649 -4.7782664 3.9133582 128.0 +-5.3604932 -2.9418387 2.4472191 128.0 +-7.0816903 -3.8296542 3.2126408 128.0 +-5.3789544 -2.8666542 2.4394989 128.0 +-7.1429749 -3.7502418 3.2192583 128.0 +-7.0915041 -3.6679022 3.1861708 128.0 +-7.4113755 -3.7758327 3.3181529 128.0 +-6.7660689 -3.3950613 3.022572 128.0 +-6.5841584 -3.2534051 2.9332361 128.0 +-6.1498766 -2.9920983 2.733609 128.0 +-5.5289569 -2.6483071 2.453469 128.0 +-5.5249124 -2.6048181 2.4446456 128.0 +-5.6707153 -2.6311216 2.5012619 128.0 +-8.741827 -3.990366 3.8288016 128.0 +-6.3278465 -2.8420353 2.7722108 128.0 +-7.4408937 -3.2869997 3.2457283 128.0 +-9.1157608 -3.9599135 3.9589453 128.0 +-7.5157361 -3.2104137 3.2608013 128.0 +-7.5344357 -3.1638777 3.2604337 128.0 +-7.0370374 -2.904434 3.0394835 128.0 +-7.0400748 -2.8552613 3.0332336 128.0 +-7.0531421 -2.8102901 3.0313954 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-11.876719 -4.3968048 5.0364914 128.0 +-9.6377573 -3.5010831 4.0835743 128.0 +-12.423872 -4.4267273 5.2438388 128.0 +-0 -0 0 128.0 +-12.581958 -4.3097863 5.2875876 128.0 +-6.6447129 -2.2311912 2.8008866 128.0 +-10.984507 -3.6127696 4.6012082 128.0 +-12.161667 -3.9172733 5.0809755 128.0 +-10.909163 -3.4402344 4.5519447 128.0 +-8.6302633 -2.6637287 3.6004984 128.0 +-6.5862746 -1.9889675 2.7497849 128.0 +-6.6090579 -1.9516762 2.7541966 128.0 +-6.6521826 -1.9201082 2.7670639 128.0 +-10.963908 -3.0911138 4.5331955 128.0 +-6.9110589 -1.9032298 2.8637526 128.0 +-6.9172182 -1.859341 2.8615468 128.0 +-6.9554844 -1.823935 2.872576 128.0 +-8.8469801 -2.2616866 3.6398358 128.0 +-8.8020334 -2.1927555 3.6159394 128.0 +-7.1505589 -1.7350441 2.9387507 128.0 +-7.0850415 -1.6731945 2.9078691 128.0 +-9.7028913 -2.2282095 3.9655628 128.0 +-8.9484997 -1.9973418 3.6545413 128.0 +-8.8406134 -1.9164068 3.6060131 128.0 +-8.6965828 -1.8294104 3.5431471 128.0 +-12.220451 -2.4920003 4.9603901 128.0 +-11.055835 -2.1840565 4.4850349 128.0 +-12.245544 -2.3409765 4.9585519 128.0 +-12.293514 -2.2720454 4.9721546 128.0 +-12.074682 -2.1550901 4.8787746 128.0 +-12.106009 -2.0841146 4.8861275 128.0 +-0 -0 0 128.0 +-12.306999 -1.9635129 4.9567142 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.912019 -1.8169399 5.1846495 128.0 +-12.359775 -1.6620073 4.9600224 128.0 +-12.980387 -1.6643806 5.2033987 128.0 +-12.585098 -1.5353028 5.042006 128.0 +-12.480654 -1.444909 4.9967866 128.0 +-12.347844 -1.3528196 4.9405379 128.0 +-13.035825 -1.347235 5.2107515 128.0 +-12.942953 -1.2574307 5.1706791 128.0 +-12.948573 -1.1778222 5.1699438 128.0 +-12.942583 -1.0972505 5.1647968 128.0 +-12.960197 -1.018689 5.1692085 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.2283025 14.441788 5.6277099 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5173154 13.328074 5.3104157 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9587998 -2.2579985 3.1991751 128.0 +7.9833579 -2.3179851 3.2145569 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9721351 -2.528451 3.2338736 128.0 +7.9760156 -2.5836496 3.2417433 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.5665121 -2.3713434 2.001184 128.0 +4.4742198 -2.358393 1.9675586 128.0 +4.4481368 -2.3796356 1.9625506 128.0 +4.4211411 -2.4002018 1.9571849 128.0 +4.3809733 -2.4133184 1.9460957 128.0 +4.3245082 -2.4169226 1.9278522 128.0 +4.2998481 -2.4378858 1.9235595 128.0 +4.2645698 -2.4525859 1.9146166 128.0 +0 -0 0 128.0 +4.1594014 -2.4605229 1.8813491 128.0 +4.1570392 -2.4936831 1.8870724 128.0 +3.5791581 -2.1770656 1.6348827 128.0 +4.096714 -2.5263748 1.873837 128.0 +4.1769505 -2.6113558 1.9171207 128.0 +4.229475 -2.6804204 1.9482419 128.0 +4.1257329 -2.650305 1.9085355 128.0 +4.0139146 -2.6134157 1.8648942 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +2.9812517 -2.0741069 1.4213262 128.0 +2.9951856 -2.1111879 1.4338462 128.0 +4.2688856 -3.0481434 2.0394595 128.0 +4.411274 -3.1908438 2.115653 128.0 +4.3577137 -3.1930161 2.099556 128.0 +2.9792175 -2.2113259 1.4513743 128.0 +2.954396 -2.221148 1.4460086 128.0 +0 -0 0 128.0 +3.5547788 -2.7413387 1.7497095 128.0 +2.85781 -2.2320478 1.4191798 128.0 +3.5230682 -2.7864926 1.7507826 128.0 +2.8586316 -2.2897143 1.4331307 128.0 +2.8633866 -2.3225043 1.4424313 128.0 +2.8259878 -2.3210661 1.4309845 128.0 +2.8325162 -2.3556764 1.4413582 128.0 +3.1709054 -2.6701195 1.61807 128.0 +3.1729393 -2.7052765 1.6273706 128.0 +2.9159236 -2.5172422 1.5057471 128.0 +2.9911327 -2.6143544 1.5518925 128.0 +2.910691 -2.5757306 1.5189826 128.0 +3.9069021 -3.500097 2.0394595 128.0 +3.9517601 -3.5842261 2.0738003 128.0 +4.0204935 -3.6917708 2.1210189 128.0 +2.6927042 -2.5033407 1.4384965 128.0 +2.9710882 -2.7962718 1.5930299 128.0 +2.9619882 -2.8221788 1.5973225 128.0 +2.6844838 -2.5894303 1.4588864 128.0 +2.5903668 -2.5295277 1.4170336 128.0 +2.5794466 -2.5499694 1.4195375 128.0 +2.6093006 -2.6113234 1.4442199 128.0 +3.0747807 -3.1150594 1.7067835 128.0 +3.0503933 -3.1285188 1.7039219 128.0 +3.1017566 -3.220484 1.7429129 128.0 +0 -0 0 128.0 +3.1988683 -3.4039197 1.8194642 128.0 +3.1086664 -3.3488889 1.7804731 128.0 +3.0262058 -3.3004527 1.7454169 128.0 +2.9833283 -3.2940433 1.7325392 128.0 +3.0128736 -3.3679614 1.7611564 128.0 +2.9463909 -3.3346038 1.7346854 128.0 +0 -0 0 128.0 +2.780859 -3.2262249 1.6617113 128.0 +2.7525353 -3.233273 1.6567034 128.0 +2.856456 -3.397331 1.7303928 128.0 +2.7568014 -3.3199675 1.6831744 128.0 +2.580035 -3.1462049 1.5887372 128.0 +2.5248275 -3.117712 1.5669166 128.0 +2.5342321 -3.1688781 1.5844446 128.0 +2.5147405 -3.1843684 1.5844446 128.0 +2.7691016 -3.5509748 1.7550752 128.0 +3.2349966 -4.2012148 2.0612803 128.0 +6.3218999 -8.3145418 4.0312228 128.0 +3.2566442 -4.3384266 2.1081409 128.0 +3.2377479 -4.3688302 2.1131492 128.0 +2.6693509 -3.6485643 1.7618718 128.0 +2.9022789 -4.0183864 1.9289253 128.0 +2.7566648 -3.8665659 1.8491546 128.0 +2.7554626 -3.9154806 1.8641787 128.0 +2.8358138 -4.0826306 1.934291 128.0 +2.5920851 -3.781101 1.7861966 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +2.0174885 -3.1037309 1.4481548 128.0 +1.9615993 -3.0586727 1.4220415 128.0 +1.9283129 -3.0477676 1.4116678 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.9038813 -3.1354229 1.4352771 128.0 +1.8303829 -3.0565207 1.3948551 128.0 +1.8310663 -3.1006596 1.4095215 128.0 +1.4792532 -2.5405247 1.1562585 128.0 +1.4468958 -2.5204005 1.1433808 128.0 +1.74746 -3.0875175 1.3891317 128.0 +1.4722849 -2.6390824 1.1877375 128.0 +1.6779367 -3.0514531 1.3640915 128.0 +1.7130287 -3.1610293 1.4073752 128.0 +1.673802 -3.1344147 1.391278 128.0 +1.3953326 -2.652107 1.1780792 128.0 +1.253523 -2.4185429 1.073626 128.0 +1.7712772 -3.4690762 1.5222021 128.0 +1.7285572 -3.4373331 1.5039586 128.0 +1.5039153 -3.0370066 1.3283199 128.0 +1.1544933 -2.3680022 1.0392853 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.5219746 -3.326256 1.4313422 128.0 +1.3631231 -3.0281451 1.3022066 128.0 +0.98788905 -2.2312961 0.96488041 128.0 +0.98275709 -2.2570064 0.97310787 128.0 +1.4108392 -3.2947917 1.4030826 128.0 +1.109008 -2.6346688 1.1251372 128.0 +1.3820856 -3.3403308 1.4148872 128.0 +1.4122251 -3.4733117 1.4663984 128.0 +1.4012817 -3.5079265 1.4771298 128.0 +0.91300511 -2.3272901 0.98777425 128.0 +0.914828 -2.3746731 1.0049446 128.0 +1.3034269 -3.4457855 1.4413582 128.0 +1.0195658 -2.7463887 1.1523236 128.0 +1.2354646 -3.3913302 1.4127409 128.0 +0.93171871 -2.6074486 1.0907965 128.0 +1.1606973 -3.3119428 1.3744653 128.0 +1.1027155 -3.2094951 1.3301085 128.0 +1.0511039 -3.1215091 1.2918329 128.0 +0.96578658 -2.9274874 1.2109891 128.0 +0.91678512 -2.8373935 1.1723558 128.0 +0.88160646 -2.7868762 1.1498196 128.0 +0.83050478 -2.6825149 1.1058205 128.0 +1.108956 -3.6607962 1.4953734 128.0 +0.68077648 -2.2985542 0.94842547 128.0 +0.71213126 -2.4596548 1.0110258 128.0 +0.72245842 -2.5538311 1.0467974 128.0 +0.61048567 -2.2098873 0.90836126 128.0 +0.61199802 -2.2694898 0.93053967 128.0 +0.88192892 -3.3514552 1.3576527 128.0 +0.88154954 -3.4354951 1.3887739 128.0 +0.77319473 -3.0920646 1.2510532 128.0 +0.5702669 -2.3418915 0.95343345 128.0 +0.68907267 -2.9068749 1.174502 128.0 +0.67017376 -2.9064987 1.1727134 128.0 +0.53952879 -2.4075747 0.97525418 128.0 +0.76066244 -3.4939001 1.3998631 128.0 +0.7278142 -3.444597 1.378758 128.0 +1.6000967 -7.8071303 3.0829175 128.0 +0.5221234 -2.6307561 1.0575289 128.0 +0.49962485 -2.6008968 1.044651 128.0 +0.48177928 -2.5938144 1.0407162 128.0 +0.46486467 -2.591207 1.0385699 128.0 +0.45134741 -2.6078124 1.0439357 128.0 +0.44256344 -2.6538239 1.0607483 128.0 +0.42597538 -2.6546454 1.0600328 128.0 +0.41252726 -2.6756673 1.0671872 128.0 +0.47651643 -3.2213202 1.2775242 128.0 +0.42777121 -3.0198505 1.198469 128.0 +0.42302915 -3.1242092 1.2378178 128.0 +0.34709805 -2.6877637 1.0682603 128.0 +0.29262173 -2.3812051 0.94914091 128.0 +0.28093112 -2.407999 0.95879924 128.0 +0.39386666 -3.5643206 1.4037981 128.0 +0.36694661 -3.5183735 1.3851968 128.0 +0.24349649 -2.4833934 0.98598564 128.0 +0.33315513 -3.6249008 1.4245455 128.0 +0.3053968 -3.5626783 1.3998631 128.0 +0.1725345 -2.1709547 0.86436218 128.0 +0.26192799 -3.5698831 1.401294 128.0 +0.14412448 -2.1468203 0.8543461 128.0 +0.13134812 -2.1541889 0.85685015 128.0 +0.18827684 -3.4305067 1.3462057 128.0 +0.16767967 -3.4409246 1.3497829 128.0 +0.14497009 -3.4045694 1.3354743 128.0 +0 -0 0 128.0 +0.09784437 -3.230613 1.2682236 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.017159967 -2.997654 1.1784369 128.0 +-0.0012378512 -3.0126441 1.1841604 128.0 +-0.019141575 -2.9219999 1.1494619 128.0 +-0.037468899 -2.9535754 1.1616242 128.0 +-0 -0 0 128.0 +-0.073826902 -2.9575608 1.1634128 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.3275921 -3.5673773 1.488219 128.0 +-0 -0 0 128.0 +-1.3537803 -3.5055168 1.4696178 128.0 +-1.2819891 -3.2598848 1.3719614 128.0 +-1.3019673 -3.2519572 1.3719614 128.0 +-1.3166118 -3.2309349 1.3665956 128.0 +-1.5459689 -3.7283058 1.5762172 128.0 +-0 -0 0 128.0 +-1.5978633 -3.7236428 1.5822984 128.0 +-1.6341243 -3.7445815 1.5951762 128.0 +-1.6892567 -3.8070409 1.625582 128.0 +-1.7102811 -3.7914968 1.6234357 128.0 +-1.7296219 -3.7724421 1.6198586 128.0 +-3.3138368 -7.1130314 3.0360565 128.0 +-3.4117515 -7.2073565 3.0847061 128.0 +-3.3672869 -7.0019779 3.0063663 128.0 +-3.4085476 -6.9778285 3.0049353 128.0 +-1.5100595 -3.0433414 1.3315394 128.0 +-1.5337458 -3.0440266 1.335832 128.0 +-1.5574971 -3.0445354 1.3401246 128.0 +-0 -0 0 128.0 +-4.5365858 -8.6073332 3.7572122 128.0 +-3.9185266 -7.3252358 3.2124107 128.0 +-3.952708 -7.2813573 3.2038255 128.0 +-4.0054202 -7.2716904 3.2102644 128.0 +-4.0431304 -7.2347488 3.2048986 128.0 +-1.9653987 -3.4663429 1.5565429 128.0 +-1.7571442 -3.055114 1.3801888 128.0 +-1.7735047 -3.0402415 1.3784002 128.0 +-4.2080531 -7.1140561 3.1963134 128.0 +-4.2540264 -7.0921059 3.198102 128.0 +-4.3037705 -7.0762424 3.2027524 128.0 +-2.1945751 -3.5585785 1.6316632 128.0 +-2.212904 -3.5395029 1.6291592 128.0 +-2.2220848 -3.5061381 1.6202163 128.0 +-1.973063 -3.0712881 1.4284805 128.0 +-1.9959466 -3.0653846 1.4313422 128.0 +-2.9660904 -4.4951081 2.093117 128.0 +-2.9941351 -4.4776001 2.0934746 128.0 +-5.6766043 -8.3780136 3.9067376 128.0 +-4.6449747 -6.7655478 3.1737773 128.0 +-5.6883388 -8.1773968 3.8459258 128.0 +-4.8685846 -6.9080305 3.267499 128.0 +-5.7209778 -8.0127344 3.801569 128.0 +-5.712574 -7.8980293 3.7640088 128.0 +-5.1963515 -7.0922008 3.3980653 128.0 +-5.2536831 -7.0789309 3.4070082 128.0 +-5.2835536 -7.028646 3.398423 128.0 +-5.3260155 -6.9953513 3.3980653 128.0 +-5.3950672 -6.9965587 3.4145203 128.0 +-0 -0 0 128.0 +-5.4990549 -6.9532652 3.4259672 128.0 +-5.5270228 -6.9011698 3.4170244 128.0 +-3.0406733 -3.7489965 1.8792027 128.0 +-3.0677679 -3.7353206 1.8817067 128.0 +-3.1007793 -3.7286336 1.8877879 128.0 +-3.1891553 -3.7874031 1.926779 128.0 +-0 -0 0 128.0 +-3.193902 -3.6999109 1.9024543 128.0 +-3.2005677 -3.6619613 1.8931537 128.0 +-3.1889439 -3.6037874 1.8734792 128.0 +-0 -0 0 128.0 +-3.3878753 -3.7352438 1.9618351 128.0 +-3.4151516 -3.7192011 1.9643391 128.0 +-2.8167703 -3.0299134 1.6148505 128.0 +-2.6580439 -2.8241906 1.5157632 128.0 +-3.5377803 -3.7131813 1.994745 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.6363811 -3.6786492 2.0115578 128.0 +-3.656903 -3.6542871 2.0104845 128.0 +-2.8558874 -2.8189151 1.5672743 128.0 +-2.8971982 -2.8248098 1.580152 128.0 +-3.0974085 -2.9831979 1.6774509 128.0 +-3.142715 -2.9898853 1.6917595 128.0 +-3.1507947 -2.9609523 1.6863937 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.0400126 -2.6860507 1.584087 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.7467957 -8.2986126 4.9337406 128.0 +-9.8089666 -8.2482672 4.9394641 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.020809 -8.1162796 4.9698696 128.0 +-10.052919 -8.0406408 4.9612846 128.0 +-4.1582689 -3.283993 2.0598493 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.7904873 -4.1823874 2.7663386 128.0 +-0 -0 0 128.0 +-5.8451939 -4.1137013 2.7681272 128.0 +-5.832746 -4.0516515 2.7505991 128.0 +-5.8790617 -4.0305724 2.7606151 128.0 +-5.9624605 -4.0341978 2.7878017 128.0 +-5.9777822 -3.9913137 2.783509 128.0 +-0 -0 0 128.0 +-10.41997 -6.774271 4.7910118 128.0 +-6.0070062 -3.8528748 2.7638347 128.0 +-5.9579372 -3.7700014 2.7309248 128.0 +-6.0110588 -3.7521651 2.744518 128.0 +-5.8868637 -3.6246257 2.6783404 128.0 +-5.8507285 -3.5530486 2.6522272 128.0 +-6.7944961 -4.0693984 3.0639584 128.0 +-6.8137093 -4.0243068 3.0614545 128.0 +-6.8229418 -3.9734933 3.0546579 128.0 +-6.8390961 -3.9269035 3.0510807 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.3985767 -4.6189861 3.7017663 128.0 +-0 -0 0 128.0 +-5.4588671 -2.9154003 2.4007528 128.0 +-5.4807844 -2.8840249 2.4025414 128.0 +-7.3553977 -3.8131602 3.2038255 128.0 +-7.3761611 -3.7666824 3.2027524 128.0 +-7.4116478 -3.7276466 3.208118 128.0 +-0 -0 0 128.0 +-6.6586351 -3.2471168 2.8679299 128.0 +-5.5411325 -2.6601284 2.3846555 128.0 +-6.7857866 -3.2066591 2.9051325 128.0 +-6.4615669 -3.0050642 2.7598999 128.0 +-6.4017649 -2.929606 2.72699 128.0 +-0 -0 0 128.0 +-7.4481616 -3.2985964 3.1505258 128.0 +-7.4365845 -3.2390344 3.1372902 128.0 +-7.5103979 -3.2165072 3.1598263 128.0 +-7.5265503 -3.1689141 3.1583955 128.0 +-7.0341835 -2.9109023 2.94627 128.0 +-7.0475869 -2.8659275 2.9444814 128.0 +-9.0100918 -3.5998328 3.7468386 128.0 +-9.4553471 -3.7106318 3.9210463 128.0 +-9.3725033 -3.6119092 3.8777626 128.0 +-0 -0 0 128.0 +-9.4633932 -3.5141785 3.8970792 128.0 +-8.1669436 -2.9757993 3.3597896 128.0 +-11.683909 -4.176425 4.7831421 128.0 +-11.679354 -4.094151 4.7709799 128.0 +-11.695424 -4.0193753 4.7674026 128.0 +-6.6852784 -2.2515917 2.7323556 128.0 +-12.555272 -4.1433487 5.0947127 128.0 +-11.177422 -3.6127009 4.5298791 128.0 +-8.6192713 -2.7274806 3.4932177 128.0 +-11.010397 -3.4100575 4.4454579 128.0 +-6.6618299 -2.0183804 2.696584 128.0 +-6.7054262 -1.9867527 2.7091041 128.0 +-6.7094178 -1.9432331 2.7058847 128.0 +-6.753562 -1.9111842 2.7187624 128.0 +-6.9208746 -1.9127531 2.7806473 128.0 +-6.8937125 -1.8597903 2.7652655 128.0 +-8.616292 -2.2679834 3.4431376 128.0 +-7.1285739 -1.8296207 2.8493288 128.0 +-7.0880289 -1.7729274 2.828939 128.0 +-8.3916521 -2.0444453 3.3386843 128.0 +-8.6420975 -2.0493805 3.4324059 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.8681707 -2.1491308 3.8988678 128.0 +-11.120977 -2.350642 4.3842888 128.0 +-11.14251 -2.2838609 4.3871503 128.0 +-12.192241 -2.4212019 4.7917271 128.0 +-12.216954 -2.3482854 4.7956619 128.0 +-10.135106 -1.8836448 3.9789963 128.0 +-0 -0 0 128.0 +-7.407197 -1.2827176 2.9097829 128.0 +-7.452693 -1.2435471 2.9244492 128.0 +-13.220005 -2.1228821 5.1591015 128.0 +-13.15618 -2.0299046 5.1294112 128.0 +-7.5463734 -1.1168239 2.9523511 128.0 +-7.5928411 -1.076136 2.9677329 128.0 +-12.465825 -1.6890745 4.8489618 128.0 +-12.538931 -1.6206957 4.8732867 128.0 +-12.496737 -1.537341 4.8532543 128.0 +-0 -0 0 128.0 +-12.904492 -1.4269906 5.0034952 128.0 +-12.546136 -1.3094808 4.8621974 128.0 +-12.512114 -1.2283674 4.8460999 128.0 +-12.526855 -1.1522559 4.8489618 128.0 +-12.963538 -1.1122645 5.0142264 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.0174923 12.465459 4.880219 128.0 +-3.9350059 12.471094 4.8729267 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.3725743 12.855971 4.9521027 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.5183342 14.614471 5.5219612 128.0 +-2.4221671 14.590794 5.5073762 128.0 +-0 0 0 128.0 +-2.2241714 14.497064 5.4615374 128.0 +-2.1355865 14.513221 5.4625793 128.0 +-2.0433569 14.503765 5.4542451 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.2782444 13.675879 5.1167054 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.6838136 13.523218 5.0767698 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5343249 13.346725 5.1430974 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9327807 -2.2572198 3.084522 128.0 +7.9556952 -2.3166065 3.0987599 128.0 +7.9530139 -2.3688598 3.1032743 128.0 +7.9688287 -2.4269073 3.1150813 128.0 +7.977067 -2.4830072 3.12411 128.0 +7.9822345 -2.5384462 3.1320972 128.0 +7.9691844 -2.5882459 3.1331389 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.4509439 -2.2804103 1.8822975 128.0 +4.4310451 -2.3046474 1.8798667 128.0 +4.3206344 -2.2809832 1.8395842 128.0 +4.3412695 -2.326061 1.8541692 128.0 +4.3236203 -2.350862 1.8527802 128.0 +4.2869477 -2.3651109 1.8434041 128.0 +4.2887187 -2.4005351 1.8503493 128.0 +4.2934775 -2.4379227 1.8586837 128.0 +4.2727504 -2.4609435 1.8562528 128.0 +4.333674 -2.5315959 1.8888955 128.0 +0 -0 0 128.0 +4.1447458 -2.4898968 1.820832 128.0 +4.123785 -2.5118654 1.8184012 128.0 +3.6216605 -2.2364304 1.6065707 128.0 +4.2190108 -2.6414349 1.873616 128.0 +4.2335982 -2.6868775 1.8871592 128.0 +4.2619796 -2.7417333 1.9069532 128.0 +4.2859182 -2.7944758 1.9250109 128.0 +4.2749491 -2.8248584 1.927789 128.0 +4.2855825 -2.8698266 1.9402905 128.0 +4.2415137 -2.8781593 1.9284835 128.0 +4.1666002 -2.8648007 1.9027861 128.0 +4.2943487 -2.9916575 1.9684188 128.0 +4.3900504 -3.0985489 2.0201609 128.0 +4.6890006 -3.3529501 2.1649697 128.0 +4.550642 -3.2963636 2.1111438 128.0 +3.7358308 -2.7409861 1.7461704 128.0 +4.3314991 -3.219342 2.0288424 128.0 +4.4082952 -3.3186371 2.0736394 128.0 +2.9257209 -2.2302921 1.3926567 128.0 +2.9090126 -2.2459087 1.3912677 128.0 +2.8944387 -2.2631381 1.3909204 128.0 +2.8753529 -2.2767787 1.3884896 128.0 +3.2314277 -2.5913415 1.5642047 128.0 +2.8355517 -2.3024304 1.3829334 128.0 +2.8546824 -2.3471932 1.3989074 128.0 +4.1342349 -3.4427083 2.0225918 128.0 +3.5496297 -2.9927506 1.7496431 128.0 +4.1344604 -3.5297248 2.0434277 128.0 +4.0361176 -3.4887791 2.0059233 128.0 +2.9139822 -2.5497921 1.4641929 128.0 +3.1979263 -2.8332458 1.6124742 128.0 +4.0333309 -3.6182258 2.0368297 128.0 +4.1963673 -3.8112838 2.1295488 128.0 +4.1459861 -3.8122003 2.1160057 128.0 +4.0772233 -3.7953873 2.0930862 128.0 +2.9914689 -2.8187177 1.5523977 128.0 +3.9631822 -3.7810354 2.0587072 128.0 +2.9532819 -2.8519573 1.5506613 128.0 +2.8653376 -2.8011708 1.5141988 128.0 +2.60355 -2.5765347 1.3867532 128.0 +2.5751083 -2.5798466 1.3801552 128.0 +3.2950873 -3.3423972 1.7683953 128.0 +3.211725 -3.2980402 1.7350581 128.0 +3.2382243 -3.3663571 1.760061 128.0 +3.2149246 -3.3834431 1.7586719 128.0 +3.2159178 -3.4263594 1.7704788 128.0 +2.93924 -3.1701987 1.6312264 128.0 +2.9304962 -3.1999335 1.6371299 128.0 +2.9403651 -3.2505486 1.6534512 128.0 +2.9659622 -3.3195906 1.6788014 128.0 +2.9238265 -3.3131118 1.6666472 128.0 +2.8399956 -3.2581604 1.6308792 128.0 +2.8022127 -3.2549102 1.6208085 128.0 +2.6923127 -3.1662841 1.5694135 128.0 +2.692126 -3.20573 1.580526 128.0 +2.8220186 -3.4026845 1.6673417 128.0 +2.804651 -3.4242897 1.6694254 128.0 +2.7093041 -3.3495457 1.6256702 128.0 +2.6734891 -3.3470519 1.6166414 128.0 +2.6459348 -3.3545556 1.6124742 128.0 +2.601109 -3.3396475 1.5978892 128.0 +2.7177219 -3.5339901 1.6812322 128.0 +3.1092567 -4.0951738 1.934387 128.0 +3.0896938 -4.1216798 1.9378597 128.0 +3.0392494 -4.1066337 1.9222327 128.0 +2.9913192 -4.0941548 1.907995 128.0 +2.9557221 -4.0979786 1.901397 128.0 +2.9495518 -4.1427794 1.9135512 128.0 +2.9413254 -4.1853557 1.9246637 128.0 +2.9829111 -4.3004284 1.9684188 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.5631424 -2.3435853 1.073522 128.0 +1.5332762 -2.3296258 1.0631042 128.0 +1.5067031 -2.3201094 1.0547698 128.0 +1.9757673 -3.0843713 1.3867532 128.0 +2.030911 -3.2137854 1.4381481 128.0 +1.9273558 -3.0916698 1.3794607 128.0 +1.8941119 -3.080267 1.3693901 128.0 +1.9665512 -3.2426035 1.4346756 128.0 +1.7407036 -2.9100909 1.286047 128.0 +1.6932929 -2.8706279 1.2645167 128.0 +1.612036 -2.7715068 1.2176361 128.0 +1.6239051 -2.8317933 1.2391665 128.0 +1.6424732 -2.9053922 1.266253 128.0 +1.7309074 -3.106319 1.3471652 128.0 +1.5119535 -2.7526855 1.1933278 128.0 +1.48299 -2.7396395 1.1839516 128.0 +1.8167723 -3.4066186 1.4600258 128.0 +1.808042 -3.4409497 1.4697491 128.0 +1.3284779 -2.5657349 1.1002612 128.0 +1.3480449 -2.6431897 1.1290841 128.0 +0 -0 0 128.0 +1.3911172 -2.8125453 1.1922859 128.0 +1.5728154 -3.2300086 1.3607085 128.0 +0 -0 0 128.0 +1.19595 -2.5340085 1.0679657 128.0 +0 -0 0 128.0 +1.4806108 -3.2403362 1.3495961 128.0 +1.4464848 -3.2177086 1.3367474 128.0 +1.4039767 -3.1750562 1.3159115 128.0 +1.2873102 -2.9599857 1.2256233 128.0 +1.2790707 -2.9911129 1.2349993 128.0 +1.3768864 -3.2755828 1.3461235 128.0 +1.3624865 -3.2978387 1.3516797 128.0 +0.93548101 -2.3033001 0.95093817 128.0 +1.1191926 -2.8055553 1.1488781 128.0 +1.3155659 -3.3581629 1.3659174 128.0 +0.88148838 -2.2903671 0.9391312 128.0 +1.2570434 -3.3284295 1.3478597 128.0 +1.2411559 -3.3483915 1.3527215 128.0 +1.0159535 -2.7927337 1.1308204 128.0 +1.2046949 -3.3766205 1.3579304 128.0 +1.1820973 -3.3786373 1.3558469 128.0 +0.93124443 -2.714263 1.0929687 128.0 +1.0903969 -3.2435391 1.2975067 128.0 +0.97200859 -2.9508591 1.1808263 128.0 +0.92800176 -2.8764353 1.1495726 128.0 +0.90187186 -2.8552454 1.1391547 128.0 +0.88765472 -2.8714778 1.1433219 128.0 +0.86053032 -2.8454499 1.1311677 128.0 +0.67148358 -2.2696822 0.90683573 128.0 +0.67002767 -2.3170068 0.92350435 128.0 +0.72935832 -2.5819154 1.0238634 128.0 +0.99237162 -3.5989435 1.4127979 128.0 +0.89480436 -3.3242228 1.3051465 128.0 +0.86820567 -3.306066 1.2961175 128.0 +0.86439747 -3.3758373 1.3207732 128.0 +0.55912429 -2.2390945 0.88495821 128.0 +0.55797994 -2.2944283 0.90475219 128.0 +0.71395534 -3.0178981 1.1787426 128.0 +0.67778945 -2.9454489 1.1495726 128.0 +1.7732919 -7.937593 3.042156 128.0 +1.7243557 -7.9474077 3.0418088 128.0 +1.6633947 -7.9000249 3.0199313 128.0 +0.56462443 -2.7618065 1.0742165 128.0 +0.53748655 -2.7137005 1.0547698 128.0 +0 -0 0 128.0 +0.48538953 -2.6186569 1.0165708 128.0 +0.48942322 -2.7342119 1.058937 128.0 +0.57100636 -3.3082948 1.2735455 128.0 +0.50050187 -3.009222 1.1599904 128.0 +0.45778561 -2.8603652 1.1030394 128.0 +0.47689712 -3.1022689 1.1926332 128.0 +0.41391754 -2.8063891 1.0808145 128.0 +0.40100482 -2.83952 1.0922742 128.0 +1.1222435 -8.3318501 3.1435568 128.0 +0.30848584 -2.3949683 0.92454618 128.0 +0.30094379 -2.4554601 0.94642371 128.0 +0.48725328 -4.1955085 1.5944165 128.0 +0.46610013 -4.2403674 1.6100434 128.0 +0.39096361 -3.7683568 1.4332864 128.0 +0.25638482 -2.6245117 1.0068475 128.0 +0.34205475 -3.7439196 1.4225214 128.0 +0.31891748 -3.7440794 1.4218268 128.0 +0.29358429 -3.7160494 1.4107144 128.0 +0.16334519 -2.2362468 0.86064976 128.0 +0 -0 0 128.0 +0.13273562 -2.1856627 0.84120303 128.0 +0.11982811 -2.1958001 0.84467566 128.0 +0.38495651 -8.0152416 3.0018735 128.0 +0.12509248 -2.9691539 1.1308204 128.0 +0.28776881 -8.0531006 3.014375 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.051817916 -2.9497643 1.1228334 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +-0.0025166934 -2.9746001 1.1318622 128.0 +-0.020463962 -2.9332681 1.1165826 128.0 +-0 -0 0 128.0 +-0.055518344 -2.884979 1.0988722 128.0 +-0.071889311 -2.833024 1.0797727 128.0 +-0.089181274 -2.8297179 1.0787309 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.2623287 -3.8089852 1.5162823 128.0 +-1.2859772 -3.8020563 1.5166296 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.3829854 -3.7098613 1.4964883 128.0 +-0 -0 0 128.0 +-1.4294226 -3.6952341 1.4975301 128.0 +-1.4427828 -3.6628385 1.4881541 128.0 +-1.3097955 -3.266638 1.333622 128.0 +-1.326623 -3.2507265 1.3304967 128.0 +-1.3609419 -3.2771628 1.3443872 128.0 +-0 -0 0 128.0 +-1.4166181 -3.2963963 1.3589722 128.0 +-1.6033075 -3.6682525 1.5128098 128.0 +-1.6901891 -3.8031521 1.5714972 128.0 +-1.684904 -3.7294776 1.5457997 128.0 +-1.6881772 -3.6764638 1.5284365 128.0 +-3.5192962 -7.5388932 3.1112614 128.0 +-3.4171493 -7.2045288 2.9831214 128.0 +-3.4551833 -7.1707544 2.9779124 128.0 +-3.4323134 -7.0129766 2.9216557 128.0 +-1.5533986 -3.1266925 1.3232042 128.0 +-1.5438126 -3.0601788 1.2995902 128.0 +-1.5625604 -3.0506485 1.2995902 128.0 +-1.5860115 -3.0501537 1.3034101 128.0 +-3.7299178 -7.0635953 2.9883304 128.0 +-4.0270786 -7.514153 3.1873119 128.0 +-1.6477121 -3.0311525 1.3079245 128.0 +-4.7525563 -8.6119089 3.6727858 128.0 +-1.6554585 -2.9583402 1.2856997 128.0 +-0 -0 0 128.0 +-2.0339153 -3.5317445 1.539549 128.0 +-0 -0 0 128.0 +-4.1609583 -7.0221148 3.0529213 128.0 +-4.2310209 -7.0414615 3.0723679 128.0 +-2.1302247 -3.4975822 1.5468415 128.0 +-2.2073472 -3.5745926 1.5860822 128.0 +-2.23123 -3.5641601 1.5874712 128.0 +-1.9760761 -3.1142023 1.3961294 128.0 +-1.9961623 -3.1035957 1.3968239 128.0 +-1.9798149 -3.0370948 1.3728627 128.0 +-4.5222263 -6.8423429 3.0675063 128.0 +-2.805625 -4.1897559 1.8975772 128.0 +-2.8807931 -4.2453928 1.9302199 128.0 +-4.8084459 -6.9920459 3.1727269 128.0 +-2.4221952 -3.4773126 1.5996255 128.0 +-5.614943 -7.9536338 3.6356285 128.0 +-2.2813573 -3.1910596 1.4829451 128.0 +-0 -0 0 128.0 +-5.7270961 -7.8035769 3.6147928 128.0 +-5.2723818 -7.0925202 3.3029506 128.0 +-2.7945225 -3.7124004 1.7510321 128.0 +-5.3590212 -7.0272856 3.3029506 128.0 +-5.4501977 -7.0566077 3.3321207 128.0 +-5.5003281 -7.0318956 3.3362877 128.0 +-5.5451183 -7.0002189 3.3373296 128.0 +-5.6085076 -6.991663 3.3494837 128.0 +-5.6199598 -6.9185443 3.3310788 128.0 +-5.6658802 -6.8882756 3.3331625 128.0 +-3.1804004 -3.8193786 1.8708379 128.0 +-3.1330309 -3.7159269 1.8302081 128.0 +-3.2544374 -3.812151 1.8864647 128.0 +-3.2544577 -3.765156 1.8732687 128.0 +-3.2169597 -3.6759727 1.839237 128.0 +-3.2786446 -3.7003744 1.8611145 128.0 +-2.7168946 -3.0290346 1.5371181 128.0 +-2.7411048 -3.0185535 1.5402435 128.0 +-3.4261954 -3.7263601 1.9048697 128.0 +-2.7153091 -2.9174347 1.5062118 128.0 +-2.9113526 -3.0897245 1.6024035 128.0 +-2.9839962 -3.1281075 1.6312264 128.0 +-2.8441377 -2.9451892 1.5464942 128.0 +-2.8090398 -2.8733821 1.5183659 128.0 +-2.9368126 -2.9673705 1.5763588 128.0 +-3.6633739 -3.6559441 1.9468884 128.0 +-3.0752063 -3.031811 1.6294901 128.0 +-3.0903912 -3.0096145 1.6277537 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.8546121 -3.5734437 1.9767531 128.0 +-3.7934556 -3.4737461 1.9350815 128.0 +-3.8835654 -3.5126657 1.9694606 128.0 +-9.7001419 -8.6637611 4.8465347 128.0 +-4.0044436 -3.5335991 2.0080068 128.0 +-9.7972441 -8.5366812 4.8423676 128.0 +-9.1037607 -7.8347945 4.4780884 128.0 +-9.7662077 -8.3010378 4.7767348 128.0 +-9.8758583 -8.2903929 4.8052106 128.0 +-4.100122 -3.4001241 2.0027978 128.0 +-4.1136513 -3.368962 1.9993252 128.0 +-10.068353 -8.14081 4.8250046 128.0 +-4.2756085 -3.4147627 2.0566237 128.0 +-4.3612885 -3.4395528 2.0871828 128.0 +-4.3941512 -3.4219439 2.0927389 128.0 +-10.085174 -7.7529716 4.7409668 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.955842 -7.2719579 4.5958109 128.0 +-10.096124 -7.2798309 4.6395659 128.0 +-10.14977 -7.2242699 4.643733 128.0 +-10.244553 -7.1974316 4.6666522 128.0 +-0 -0 0 128.0 +-4.553926 -3.1174552 2.0739868 128.0 +-10.407163 -7.02916 4.6808901 128.0 +-10.471947 -6.9797316 4.6906137 128.0 +-5.9472709 -3.9120827 2.6664174 128.0 +-5.9491353 -3.8612258 2.6566942 128.0 +-5.9340148 -3.7998769 2.6396782 128.0 +-5.9825912 -3.779418 2.6507907 128.0 +-5.9666667 -3.7183418 2.6337748 128.0 +-5.9661994 -3.6674235 2.6237042 128.0 +-6.1048775 -3.7012222 2.6740572 128.0 +-0 -0 0 128.0 +-6.9779205 -4.1140914 3.0300019 128.0 +-5.9263005 -3.4454525 2.5688365 128.0 +-7.0107942 -4.0183616 3.0227094 128.0 +-7.0059242 -3.9586649 3.0102079 128.0 +-7.0472879 -3.9251828 3.0175004 128.0 +-6.9660096 -3.8241198 2.9730506 128.0 +-0 -0 0 128.0 +-5.4822054 -2.9228804 2.3309615 128.0 +-5.560647 -2.9210112 2.3563116 128.0 +-5.5626392 -2.8786507 2.3497136 128.0 +-7.3198423 -3.7308221 3.0727153 128.0 +-7.376123 -3.7026618 3.0866058 128.0 +-8.2730579 -4.0893888 3.4477592 128.0 +-5.600409 -2.7260895 2.3368649 128.0 +-6.7469664 -3.2328751 2.8008082 128.0 +-6.8930621 -3.2509997 2.8525505 128.0 +-5.6453853 -2.6205692 2.3351285 128.0 +-6.5724411 -3.001817 2.7060053 128.0 +-8.2793884 -3.7198672 3.3915026 128.0 +-7.4477 -3.2915556 3.0456285 128.0 +-7.4643159 -3.2443008 3.0442395 128.0 +-7.4564862 -3.1866508 3.0331273 128.0 +-7.0323496 -2.954567 2.8549812 128.0 +-7.0538135 -2.9127929 2.8563702 128.0 +-9.2631941 -3.7583733 3.7321677 128.0 +-9.0743895 -3.6171131 3.6477828 128.0 +-9.068469 -3.5504289 3.6366704 128.0 +-9.0594454 -3.4829445 3.624516 128.0 +-9.0674849 -3.4223258 3.6193073 128.0 +-9.1199722 -3.3783474 3.6318085 128.0 +-0 -0 0 128.0 +-7.1953073 -2.5656886 2.8591485 128.0 +-11.777955 -4.1176863 4.6506782 128.0 +-11.806548 -4.0465565 4.6520672 128.0 +-6.7505932 -2.2680326 2.6674592 128.0 +-12.634768 -4.1577888 4.9559226 128.0 +-12.615413 -4.0658059 4.9385595 128.0 +-11.43367 -3.6077704 4.4701014 128.0 +-11.253085 -3.4750338 4.3916202 128.0 +-6.7451701 -2.0382037 2.6396782 128.0 +-6.7746372 -2.0018239 2.6462762 128.0 +-12.359385 -3.5687296 4.7940979 128.0 +-6.9602518 -1.9640995 2.7084363 128.0 +-6.9721723 -1.9213552 2.7084363 128.0 +-7.3352103 -1.9729927 2.8431742 128.0 +-7.0351372 -1.8461179 2.7237158 128.0 +-8.3191948 -2.1283779 3.2102313 128.0 +-8.444931 -2.1054065 3.2532918 128.0 +-11.524285 -2.7976859 4.4218321 128.0 +-9.7159128 -2.2958333 3.7273059 128.0 +-11.236947 -2.5823655 4.2999425 128.0 +-9.7204742 -2.1713231 3.7186244 128.0 +-9.7831039 -2.1223688 3.7373767 128.0 +-11.150431 -2.3472888 4.2499366 128.0 +-11.156354 -2.2771399 4.2468114 128.0 +-9.936429 -1.9648417 3.7811317 128.0 +-12.255588 -2.3451099 4.6510258 128.0 +-12.267902 -2.2695258 4.650331 128.0 +-7.5254445 -1.3449479 2.861232 128.0 +-7.5307832 -1.2982699 2.8601902 128.0 +-7.536757 -1.2517303 2.8594956 128.0 +-7.5868936 -1.2122619 2.8754697 128.0 +-7.6498051 -1.1742148 2.8963056 128.0 +-13.105766 -1.9285986 4.9357815 128.0 +-12.64562 -1.7817259 4.7593718 128.0 +-12.521553 -1.685968 4.7090187 128.0 +-12.907439 -1.6573207 4.8493128 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-13.277231 -1.3745013 4.9732857 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.7673697 12.830887 4.9288197 128.0 +-4.6404943 12.728098 4.8786168 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.0049858 12.648129 4.7782111 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.4584489 12.80934 4.7785482 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.0439706 14.3882 5.2933788 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.5240614 14.558211 5.3179746 128.0 +-2.4295659 14.542779 5.3068562 128.0 +-0 0 0 128.0 +-2.2445951 14.530557 5.2920308 128.0 +-2.1627116 14.593417 5.3098884 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.5140709 15.351512 5.5507941 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.7257905 14.718821 5.3338103 128.0 +1.8088037 14.649085 5.3125839 128.0 +1.8959908 14.617168 5.3051715 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.4893136 13.568455 5.0440497 128.0 +3.56338 13.512194 5.0312467 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9522214 -2.2546356 2.9884343 128.0 +7.9744072 -2.3138804 3.0019114 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.022027 -2.5427341 3.0420063 128.0 +7.9955244 -2.5884292 3.0379632 128.0 +8.0232964 -2.6519165 3.0544727 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.2086215 -2.2505832 1.7384205 128.0 +4.25349 -2.3082442 1.7623426 128.0 +4.2730637 -2.352917 1.7761567 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.0440316 -2.3579698 1.7057382 128.0 +4.1137772 -2.4325726 1.7407789 128.0 +3.638485 -2.1818137 1.5487283 128.0 +3.5799751 -2.1767097 1.5298603 128.0 +3.6082308 -2.2243233 1.5473806 128.0 +3.6001041 -2.2499135 1.5497391 128.0 +3.6085021 -2.2860675 1.5591732 128.0 +4.1838732 -2.686619 1.8098499 128.0 +4.1957197 -2.7307272 1.8219793 128.0 +4.1930327 -2.7657506 1.8280441 128.0 +3.9121814 -2.6151178 1.7144984 128.0 +3.8290186 -2.5936685 1.6855223 128.0 +3.7881899 -2.6000664 1.6747406 128.0 +3.7304211 -2.5942369 1.6565462 128.0 +4.251698 -2.9955499 1.891724 128.0 +4.2332377 -3.0215814 1.891724 128.0 +3.9582469 -2.8621519 1.7785152 128.0 +4.2436953 -3.1083493 1.9129506 128.0 +3.0184319 -2.2396128 1.3755459 128.0 +3.0099022 -2.2620506 1.3779043 128.0 +2.9719901 -2.2622304 1.3671225 128.0 +2.9528332 -2.2764001 1.3647641 128.0 +2.9699819 -2.3188078 1.3789152 128.0 +3.5451162 -2.8029261 1.647786 128.0 +3.327925 -2.6645799 1.5561408 128.0 +3.0087137 -2.4394877 1.4166514 128.0 +3.6246452 -2.9758308 1.7087705 128.0 +2.8655963 -2.3823395 1.3640902 128.0 +2.825712 -2.3786583 1.3522975 128.0 +2.8304124 -2.4124401 1.3613948 128.0 +2.8226855 -2.4359124 1.3647641 128.0 +2.8559031 -2.4953067 1.3876754 128.0 +2.8292544 -2.5028031 1.3822844 128.0 +3.2767849 -2.9346466 1.6046588 128.0 +3.2043068 -2.9053726 1.5783782 128.0 +8.5782776 -7.8735571 4.1973424 128.0 +3.0690889 -2.8521886 1.5298603 128.0 +3.0213552 -2.842582 1.5150353 128.0 +2.8681726 -2.7318571 1.447986 128.0 +2.8723691 -2.7696619 1.4584309 128.0 +2.670023 -2.6063902 1.3657749 128.0 +2.6472826 -2.6161067 1.3624055 128.0 +2.6405003 -2.6416225 1.3671225 128.0 +3.3089888 -3.3511279 1.7158461 128.0 +3.2568059 -3.3390186 1.6996734 128.0 +3.2486699 -3.3718207 1.7060751 128.0 +3.2064977 -3.3691857 1.6949563 128.0 +6.8252258 -7.2595615 3.5962577 128.0 +3.0700829 -3.3061776 1.6450906 128.0 +3.019824 -3.2923441 1.6292548 128.0 +2.997669 -3.3087184 1.628244 128.0 +2.9622405 -3.3102119 1.6201577 128.0 +2.9113169 -3.293761 1.6036481 128.0 +2.6811206 -3.0711386 1.4894285 128.0 +2.6394744 -3.0611508 1.4769621 128.0 +2.6853569 -3.1532652 1.5126767 128.0 +2.9211295 -3.4730108 1.6545247 128.0 +2.9063828 -3.4988353 1.6582309 128.0 +2.7540684 -3.3571975 1.584443 128.0 +2.7393446 -3.3813481 1.5878123 128.0 +2.7150161 -3.393682 1.5857908 128.0 +2.6970603 -3.4139709 1.5874754 128.0 +2.9482753 -3.7793434 1.7458329 128.0 +3.0600641 -3.9726381 1.8250117 128.0 +3.0886431 -4.0610304 1.8563462 128.0 +3.0727136 -4.0919514 1.8617371 128.0 +3.0542774 -4.1198039 1.8657804 128.0 +3.0200431 -4.1263113 1.8603895 128.0 +2.9648888 -4.1035552 1.8421952 128.0 +2.9648054 -4.156929 1.857694 128.0 +2.9208131 -4.1488681 1.8462384 128.0 +2.9017491 -4.1759896 1.8502815 128.0 +2.852638 -4.1595526 1.8354566 128.0 +1.5904398 -2.3501728 1.0460274 128.0 +1.5707595 -2.3520582 1.0426581 128.0 +1.5552616 -2.3600798 1.0419842 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +2.0744133 -3.3222978 1.4321502 128.0 +2.0875692 -3.3894744 1.4550616 128.0 +1.8032148 -2.9685163 1.2734557 128.0 +1.7777071 -2.9674103 1.2684017 128.0 +1.7403064 -2.9458389 1.2549245 128.0 +1.7345225 -2.977613 1.2636847 128.0 +1.7903227 -3.1171911 1.3169198 128.0 +1.86164 -3.2878737 1.3826214 128.0 +1.6390326 -2.936691 1.2340349 128.0 +1.6300606 -2.9631906 1.2407734 128.0 +1.4718131 -2.7149053 1.135651 128.0 +1.8456211 -3.4546397 1.4321502 128.0 +0 -0 0 128.0 +1.3426906 -2.5894234 1.0743296 128.0 +1.3584772 -2.6596572 1.0992625 128.0 +1.378107 -2.7394311 1.1279016 128.0 +1.3771585 -2.7798932 1.140705 128.0 +1.4257231 -2.9228325 1.194277 128.0 +1.1717166 -2.4401336 0.99919397 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.4401979 -3.1978283 1.2855853 128.0 +0 -0 0 128.0 +1.6133797 -3.7029245 1.4759512 128.0 +1.2575958 -2.9356132 1.1733873 128.0 +0.9409104 -2.234386 0.89811468 128.0 +1.510007 -3.647614 1.4432689 128.0 +1.5028566 -3.6943104 1.457757 128.0 +1.4029186 -3.5102522 1.3832953 128.0 +1.3565756 -3.4556947 1.3590362 128.0 +0.89428616 -2.3201764 0.92035216 128.0 +1.0417123 -2.7526813 1.0837636 128.0 +1.3540645 -3.6451197 1.4220423 128.0 +1.3265125 -3.6392064 1.4166514 128.0 +1.0140158 -2.8361058 1.1083596 128.0 +2.7564788 -7.8593793 3.0110085 128.0 +2.5499015 -7.415834 2.8368154 128.0 +1.1107993 -3.2968276 1.2754773 128.0 +0.9435184 -2.8583488 1.1076857 128.0 +0.93262643 -2.8846886 1.1154351 128.0 +0.90922379 -2.8724048 1.1086966 128.0 +0.90133768 -2.9094059 1.1204891 128.0 +0.85614765 -2.82478 1.086796 128.0 +0.69023681 -2.3289945 0.89979935 128.0 +0.69559354 -2.4010086 0.92506915 128.0 +0.74730295 -2.6398578 1.0123342 128.0 +0.67762399 -2.4511065 0.94056797 128.0 +0.82505691 -3.0569589 1.1636163 128.0 +0.73624384 -2.7961087 1.0652324 128.0 +0.57686961 -2.2470396 0.86071539 128.0 +0.56329983 -2.2514503 0.86105227 128.0 +0 -0 0 128.0 +0.70110661 -2.9553266 1.1174568 128.0 +0.68613726 -2.9733336 1.1225107 128.0 +0.60334283 -2.6899426 1.0170513 128.0 +0.70655417 -3.2427878 1.2181991 128.0 +1.6931121 -8.0038071 2.9581103 128.0 +0.56981337 -2.7789891 1.0456904 128.0 +0 -0 0 128.0 +0.54776609 -2.8486431 1.0686017 128.0 +0.49272928 -2.6501606 0.9951508 128.0 +0.47529307 -2.6466472 0.99279231 128.0 +0.45775768 -2.6420922 0.99009687 128.0 +0.43595138 -2.6114197 0.97796732 128.0 +0.42485225 -2.644722 0.98908603 128.0 +0.43449363 -2.8147671 1.0497336 128.0 +0.47685173 -3.2197249 1.1952878 128.0 +0.47826004 -3.3717394 1.2491968 128.0 +0.32753405 -2.4164424 0.90316868 128.0 +0.31971207 -2.4725635 0.92271066 128.0 +0.29785591 -2.4202797 0.90316868 128.0 +0.46451992 -3.9734759 1.4621371 128.0 +0.40436238 -3.653399 1.3458959 128.0 +0.26383263 -2.5264859 0.93955719 128.0 +0.36401612 -3.7039995 1.3624055 128.0 +0.33454019 -3.633034 1.3361249 128.0 +0 -0 0 128.0 +0.17994809 -2.2590835 0.8415103 128.0 +0.1615186 -2.1981721 0.81927288 128.0 +0.19468874 -2.8905146 1.0672541 128.0 +0.1401795 -2.2920856 0.85229212 128.0 +0.44456643 -8.065115 2.9210479 128.0 +0.39599335 -8.0864992 2.9277866 128.0 +0.3879835 -9.0595436 3.2754993 128.0 +0 -0 0 128.0 +0.090755068 -2.9804201 1.0975778 128.0 +0.07357002 -3.0261006 1.1137505 128.0 +0.16201985 -8.8742962 3.2067654 128.0 +0.036257796 -3.0126538 1.1086966 128.0 +0.017573215 -2.9798665 1.0969039 128.0 +-0.00071277423 -2.9940412 1.1019579 128.0 +-0.019019175 -2.983624 1.0982517 128.0 +-0 -0 0 128.0 +-0.054602839 -2.9276252 1.0783727 128.0 +-0 -0 0 128.0 +-0.089278884 -2.8862681 1.0638847 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.3577158 -3.7921112 1.4719081 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4324058 -3.7110937 1.4540508 128.0 +-1.4499847 -3.6890903 1.4489968 128.0 +-1.345302 -3.3619232 1.3263539 128.0 +-1.3286239 -3.2620437 1.2909762 128.0 +-1.3424875 -3.239043 1.2852484 128.0 +-1.3700171 -3.2489641 1.2923239 128.0 +-1.4444708 -3.3677006 1.3418528 128.0 +-1.6412401 -3.7626762 1.4995364 128.0 +-1.6730744 -3.7723315 1.5072858 128.0 +-1.7016063 -3.7740116 1.5120028 128.0 +-1.4709945 -3.2096901 1.2940085 128.0 +-1.4994043 -3.2193816 1.301421 128.0 +-3.5053949 -7.4085407 2.9635012 128.0 +-3.4659514 -7.2103834 2.8934197 128.0 +-3.5700223 -7.3116632 2.9422746 128.0 +-1.5884165 -3.2027032 1.3098443 128.0 +-1.5542644 -3.0860958 1.2670541 128.0 +-1.5680283 -3.0664408 1.2630109 128.0 +-1.6128362 -3.1069033 1.2832267 128.0 +-1.6792622 -3.1869142 1.3196152 128.0 +-1.7072196 -3.1923263 1.326017 128.0 +-4.1527805 -7.6531348 3.1464548 128.0 +-1.6999496 -3.0870066 1.2916501 128.0 +-1.752835 -3.1373453 1.3165829 128.0 +-1.8518891 -3.267427 1.3745351 128.0 +-1.9633939 -3.4151807 1.4402366 128.0 +-1.9805187 -3.3965619 1.4375411 128.0 +-4.1738653 -7.0590587 2.9651859 128.0 +-1.8714858 -3.1208622 1.3327556 128.0 +-2.0441699 -3.3619452 1.4385519 128.0 +-2.1966591 -3.5633457 1.5285125 128.0 +-1.983494 -3.173718 1.369818 128.0 +-1.9727021 -3.1137638 1.3496021 128.0 +-1.9815972 -3.0857549 1.3428636 128.0 +-2.535074 -3.8950505 1.6936086 128.0 +-1.9638506 -2.9771042 1.3068119 128.0 +-1.9773723 -2.9579532 1.3037796 128.0 +-2.7066529 -3.9958467 1.7576255 128.0 +-2.0929 -3.0491362 1.3539822 128.0 +-2.5437126 -3.6577559 1.6248747 128.0 +-5.7088404 -8.1033821 3.5777264 128.0 +-2.697248 -3.7787747 1.691924 128.0 +-5.5883031 -7.7290378 3.4436278 128.0 +-5.5666409 -7.6004114 3.4018486 128.0 +-5.5021033 -7.416388 3.3351362 128.0 +-5.3919711 -7.1754885 3.24248 128.0 +-2.6801784 -3.5211842 1.6140929 128.0 +-5.5106573 -7.1490498 3.2606745 128.0 +-5.517921 -7.0683446 3.2394478 128.0 +-5.5553489 -7.026968 3.2360785 128.0 +-5.5824738 -6.9729033 3.2269814 128.0 +-5.6257467 -6.93925 3.2273183 128.0 +-6.1443305 -7.4846144 3.4958522 128.0 +-6.1925468 -7.4496689 3.4972 128.0 +-6.2648163 -7.4432278 3.5120249 128.0 +-3.177614 -3.7283471 1.7835692 128.0 +-3.2299538 -3.7429972 1.7997419 128.0 +-3.272681 -3.7457986 1.8105236 128.0 +-0 -0 0 128.0 +-3.3278224 -3.7158771 1.8155776 128.0 +-3.0754797 -3.3919501 1.6690127 128.0 +-2.8371232 -3.090694 1.5318818 128.0 +-2.7297804 -2.9373474 1.4655064 128.0 +-2.7922642 -2.9678628 1.4887546 128.0 +-2.7857487 -2.9247644 1.4759512 128.0 +-0 -0 0 128.0 +-2.9832036 -3.0561161 1.5588362 128.0 +-3.025722 -3.0618653 1.5709658 128.0 +-3.0650933 -3.0638785 1.5814106 128.0 +-3.6907704 -3.6444154 1.8866701 128.0 +-3.7272158 -3.6355076 1.8937457 128.0 +-3.7555544 -3.6184492 1.896778 128.0 +-3.800873 -3.6174085 1.9082336 128.0 +-3.8326006 -3.6030478 1.9129506 128.0 +-3.8256612 -3.5525532 1.8987995 128.0 +-9.6843596 -8.8837643 4.7333994 128.0 +-9.9012499 -8.9714813 4.8119044 128.0 +-4.0180883 -3.5958154 1.960121 128.0 +-4.0584168 -3.587307 1.9688812 128.0 +-9.0356369 -7.8891559 4.3230176 128.0 +-9.0895777 -7.8384848 4.3257132 128.0 +-4.0291471 -3.4314086 1.9244063 128.0 +-4.0602131 -3.4151073 1.9291234 128.0 +-4.1911697 -3.4815845 1.9803369 128.0 +-10.008539 -8.2114697 4.6633177 128.0 +-4.3213615 -3.5010195 2.0207686 128.0 +-10.107818 -8.0874424 4.662981 128.0 +-4.335927 -3.4255447 2.0079651 128.0 +-0 -0 0 128.0 +-9.7477875 -7.5092845 4.4338679 128.0 +-0 -0 0 128.0 +-9.8580256 -7.403234 4.4422913 128.0 +-9.938055 -7.3684034 4.4577899 128.0 +-0 -0 0 128.0 +-4.4973297 -3.2494435 2.0160515 128.0 +-10.236031 -7.3012366 4.5298934 128.0 +-4.4960656 -3.1652806 1.9981942 128.0 +-4.6143661 -3.2064109 2.0413213 128.0 +-0 -0 0 128.0 +-10.490877 -7.10114 4.5639234 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.638751 -6.9191546 4.5720096 128.0 +-5.9693708 -3.8302002 2.5686183 128.0 +-6.0381041 -3.8222075 2.5878234 128.0 +-5.9887719 -3.7397013 2.5571625 128.0 +-6.021225 -3.7088103 2.5612059 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.0755029 -3.5896871 2.555815 128.0 +-7.1403308 -4.1600184 2.9877603 128.0 +-7.1436791 -4.1034646 2.9786632 128.0 +-7.1433258 -4.0451713 2.9682183 128.0 +-5.5879459 -3.1191564 2.3206372 128.0 +-7.1907787 -3.9562991 2.9675446 128.0 +-5.6738067 -3.076381 2.3401792 128.0 +-7.0760279 -3.7807856 2.9015059 128.0 +-5.5670033 -2.9306383 2.2818902 128.0 +-7.1544871 -3.7105744 2.9146464 128.0 +-5.6520152 -2.8873765 2.301769 128.0 +-7.3592811 -3.7029123 2.9786632 128.0 +-5.6195321 -2.7843554 2.2748146 128.0 +-5.6373568 -2.7502348 2.2751515 128.0 +-5.6481853 -2.7127392 2.2727928 128.0 +-6.8197703 -3.2241735 2.7300081 128.0 +-6.8462539 -3.1854455 2.7327037 128.0 +-0 -0 0 128.0 +-7.833405 -3.5285251 3.1050124 128.0 +-7.4468908 -3.2995853 2.945307 128.0 +-7.4790802 -3.2590961 2.9500241 128.0 +-8.5703182 -3.6722696 3.3671446 128.0 +-7.0491004 -2.969312 2.7677445 128.0 +-7.1933222 -2.9782343 2.8165994 128.0 +-8.1245422 -3.3055882 3.1693661 128.0 +-8.1770191 -3.2686067 3.1818326 128.0 +-0 -0 0 128.0 +-9.7020187 -3.7408521 3.7515829 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.0748296 -2.4326298 2.7077708 128.0 +-6.8210669 -2.298656 2.6063545 128.0 +-11.310612 -3.7347462 4.2930307 128.0 +-8.4693279 -2.7389388 3.2158625 128.0 +-6.8541436 -2.1701548 2.6033223 128.0 +-6.7702031 -2.0979543 2.5669336 128.0 +-6.7829485 -2.0563736 2.5669336 128.0 +-0 -0 0 128.0 +-8.3766375 -2.4277871 3.1515088 128.0 +-6.9881468 -1.9788975 2.6296027 128.0 +-7.0636792 -1.9535531 2.653188 128.0 +-7.0864406 -1.9131198 2.6572311 128.0 +-8.2971258 -2.1855032 3.1009691 128.0 +-12.144081 -3.1194363 4.517427 128.0 +-13.588713 -3.4018221 5.043376 128.0 +-0 -0 0 128.0 +-11.413449 -2.7088046 4.2283401 128.0 +-11.381233 -2.6274955 4.2104826 128.0 +-9.6351233 -2.1621394 3.5642493 128.0 +-11.352825 -2.4745967 4.1885824 128.0 +-11.340161 -2.3990433 4.1784744 128.0 +-7.4145412 -1.5209603 2.7391052 128.0 +-13.298775 -2.643389 4.8826599 128.0 +-12.348571 -2.3758206 4.5305672 128.0 +-7.5023732 -1.3955928 2.7613428 128.0 +-7.5358157 -1.3540298 2.7704399 128.0 +-11.506126 -1.9948175 4.2094717 128.0 +-11.657448 -1.947455 4.2600117 128.0 +-11.582726 -1.861989 4.2286768 128.0 +-12.675161 -1.9579346 4.6201906 128.0 +-12.609633 -1.8686664 4.5922256 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-13.26563 -1.7169974 4.8172956 128.0 +-13.326376 -1.6417869 4.8354897 128.0 +-13.363318 -1.5631599 4.8452606 128.0 +-14.200845 -1.5728874 5.1434445 128.0 +-14.16528 -1.4810224 5.1272717 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.8620868 12.869967 4.7813468 128.0 +-0 0 0 128.0 +-4.7060485 12.934881 4.7836318 128.0 +-4.5938754 12.871816 4.7500134 128.0 +-4.5101266 12.886378 4.7451172 128.0 +-0 0 0 128.0 +-4.3061695 12.805464 4.6958318 128.0 +-4.2142091 12.791245 4.6811442 128.0 +-4.1225858 12.776381 4.6664567 128.0 +-4.038136 12.782507 4.6596022 128.0 +-3.9573948 12.799819 4.656991 128.0 +-0 0 0 128.0 +-3.7965391 12.835635 4.6527481 128.0 +-0 0 0 128.0 +-3.6253827 12.833956 4.6357756 128.0 +-3.5402844 12.833179 4.6276159 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.4319389 14.503819 5.1772618 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.2031078 14.742807 5.2402558 128.0 +-3.0737939 14.578126 5.1753035 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.8567019 14.902383 5.2702837 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.5137489 14.557501 5.1318932 128.0 +-0 0 0 128.0 +-2.3335729 14.578852 5.1289558 128.0 +-2.243644 14.590094 5.1279764 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.197776 13.778579 4.8064795 128.0 +1.2823849 13.771911 4.8068056 128.0 +1.3692008 13.787298 4.8149652 128.0 +1.6021663 15.183949 5.3029232 128.0 +1.6914172 15.139075 5.2908468 128.0 +1.6214185 13.748495 4.8110485 128.0 +1.8277707 14.720396 5.1527824 128.0 +0 0 0 128.0 +1.9875312 14.545141 5.0999064 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.4858918 14.793329 5.2105541 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5117285 13.617551 4.8867722 128.0 +3.5558169 13.446797 4.83357 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9638782 -2.2630739 2.8895721 128.0 +7.9534726 -2.3129532 2.8908777 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0042171 -2.5423696 2.9306977 128.0 +7.9938612 -2.5931857 2.932656 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.2773299 -1.9943608 1.6603756 128.0 +0 -0 0 128.0 +4.2533855 -2.0471101 1.660702 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.1857266 -2.2407985 1.6701674 128.0 +4.1968126 -2.2799823 1.6799592 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.6001163 -2.1308901 1.4753107 128.0 +3.6299205 -2.1787336 1.4926095 128.0 +3.6108325 -2.1975238 1.4903249 128.0 +3.5683265 -2.2017612 1.4785746 128.0 +3.5547495 -2.2236147 1.4785746 128.0 +3.5809453 -2.270705 1.4948943 128.0 +4.1560469 -2.6715076 1.7367517 128.0 +4.7303023 -3.0820198 1.9802409 128.0 +4.4116058 -2.9129999 1.8562115 128.0 +4.4117146 -2.9521086 1.8637186 128.0 +3.6105134 -2.4479358 1.536999 128.0 +3.5915303 -2.4673662 1.535367 128.0 +3.5685668 -2.4839547 1.5321032 128.0 +3.537812 -2.494905 1.5255753 128.0 +4.3921347 -3.1382687 1.8947259 128.0 +3.7059791 -2.6822758 1.6104375 128.0 +3.9851692 -2.921891 1.7370781 128.0 +2.989182 -2.2196095 1.3163573 128.0 +2.9558702 -2.2231305 1.307871 128.0 +2.9399183 -2.2395065 1.3068918 128.0 +2.9470716 -2.2736769 1.3160309 128.0 +2.9777441 -2.3266492 1.3356144 128.0 +3.03159 -2.3988585 1.3656427 128.0 +3.3744774 -2.7041945 1.5239433 128.0 +3.3343394 -2.7057831 1.5134987 128.0 +3.7849634 -3.1103857 1.7223903 128.0 +3.6517558 -3.0386019 1.6711466 128.0 +3.1603851 -2.6625228 1.4576855 128.0 +3.2388923 -2.7628651 1.5007694 128.0 +4.109426 -3.5496757 1.9058232 128.0 +3.3050485 -2.8901641 1.5467908 128.0 +3.2964509 -2.9185371 1.551034 128.0 +3.2707403 -2.9317667 1.5474436 128.0 +3.2407932 -2.9409785 1.5418949 128.0 +3.212944 -2.9518526 1.5373254 128.0 +3.1788564 -2.9567006 1.5298184 128.0 +8.3893776 -7.9023185 4.0104065 128.0 +3.0157938 -2.8747952 1.4694357 128.0 +2.9498188 -2.8466289 1.4462618 128.0 +2.7680428 -2.7041168 1.3669482 128.0 +2.7278829 -2.6977799 1.3555244 128.0 +2.6859024 -2.6890459 1.3431215 128.0 +3.3343456 -3.3798857 1.6701674 128.0 +2.6579776 -2.7272205 1.3457327 128.0 +6.8826609 -7.1519289 3.4581492 128.0 +6.8699036 -7.2269135 3.4738159 128.0 +7.4283867 -7.9112167 3.7780144 128.0 +6.8154073 -7.3481011 3.4914412 128.0 +2.7071428 -2.9538476 1.4142752 128.0 +2.5627708 -2.8309157 1.3493229 128.0 +2.5692863 -2.8733704 1.3617259 128.0 +2.7530198 -3.1172724 1.4668245 128.0 +2.9947212 -3.4333534 1.6039096 128.0 +2.9322753 -3.4036725 1.5820413 128.0 +2.6198549 -3.0788507 1.4266782 128.0 +3.0143027 -3.5870562 1.6486255 128.0 +2.995857 -3.6098492 1.6505839 128.0 +2.8975785 -3.5352995 1.6091319 128.0 +2.8716702 -3.547868 1.6068472 128.0 +2.7749197 -3.4716311 1.5653952 128.0 +2.7816668 -3.5242138 1.5810621 128.0 +3.1782174 -4.0781136 1.8160652 128.0 +2.9911988 -3.887001 1.7243487 128.0 +1.8999722 -2.4998713 1.1149727 128.0 +1.8619156 -2.4812319 1.1019169 128.0 +1.8505927 -2.4979279 1.1042017 128.0 +2.9646215 -4.0546327 1.7651478 128.0 +2.9889069 -4.1409717 1.7941968 128.0 +3.0051141 -4.2177491 1.8190027 128.0 +3.0215774 -4.2964258 1.8444613 128.0 +3.0172498 -4.3467264 1.8578435 128.0 +2.9146867 -4.2544107 1.8114957 128.0 +2.8975246 -4.2855291 1.8170444 128.0 +1.6025525 -2.4009187 1.0274993 128.0 +1.5929867 -2.4186025 1.0307633 128.0 +1.5642182 -2.4069264 1.0219506 128.0 +0 -0 0 128.0 +1.5360787 -2.4283376 1.0229298 128.0 +1.5491537 -2.4826357 1.0412078 128.0 +2.02408 -3.289216 1.3643371 128.0 +1.9822913 -3.2660129 1.3499757 128.0 +1.5851966 -2.6478209 1.0963683 128.0 +1.9137292 -3.2420578 1.3307185 128.0 +1.9398977 -3.3329961 1.3623787 128.0 +1.7816391 -3.1045816 1.2667454 128.0 +1.7318552 -3.0611467 1.2452035 128.0 +1.7691731 -3.1724498 1.2850236 128.0 +1.6277245 -2.9612081 1.1975502 128.0 +1.636071 -3.020185 1.2168074 128.0 +1.6401951 -3.0727019 1.2334534 128.0 +1.6125164 -3.0659735 1.2269255 128.0 +1.4724296 -2.8416128 1.1358619 128.0 +1.3055322 -2.5575547 1.022277 128.0 +1.3848429 -2.7547269 1.0953891 128.0 +1.3796474 -2.7868958 1.1045281 128.0 +0 -0 0 128.0 +1.2411476 -2.5862668 1.0212978 128.0 +1.4870458 -3.1486266 1.233127 128.0 +1.4485883 -3.1165411 1.2174602 128.0 +1.0585836 -2.3137872 0.90934497 128.0 +1.4699205 -3.2668498 1.2677246 128.0 +1.6665977 -3.7659702 1.4527895 128.0 +0.9140349 -2.0988405 0.82121885 128.0 +0.89928126 -2.1000638 0.81958687 128.0 +0.88930899 -2.1125133 0.82219803 128.0 +0.87849575 -2.1231718 0.8241564 128.0 +1.5094017 -3.7146032 1.4152544 128.0 +1.4631177 -3.6649706 1.393386 128.0 +1.437499 -3.6659584 1.3904485 128.0 +1.4030993 -3.6438327 1.3790247 128.0 +1.319263 -3.4896684 1.3189684 128.0 +1.3500646 -3.6386189 1.3708649 128.0 +1.2459687 -3.4220948 1.2882874 128.0 +1.1480778 -3.2142317 1.2093003 128.0 +1.0097076 -2.8821812 1.0852709 128.0 +2.5113697 -7.3176689 2.7022226 128.0 +1.1055872 -3.2849932 1.2275783 128.0 +1.0277487 -3.1166458 1.1639316 128.0 +1.1615337 -3.5969765 1.3359408 128.0 +0.89947259 -2.8441958 1.0607914 128.0 +0.90796256 -2.9336481 1.091146 128.0 +0.89076567 -2.9418783 1.0921252 128.0 +0.77969462 -2.6327541 0.97886676 128.0 +0.75328994 -2.6020741 0.96613741 128.0 +0.67360413 -2.3810515 0.88519192 128.0 +1.9915779 -7.2173347 2.6160548 128.0 +0.8811844 -3.2690234 1.1998349 128.0 +0.84310269 -3.2058012 1.1753554 128.0 +0.8039549 -3.1349118 1.1482648 128.0 +0.76960003 -3.0792563 1.1267228 128.0 +0.75024509 -3.0820835 1.12607 128.0 +0.69759458 -2.944052 1.0754791 128.0 +0.69329274 -3.008153 1.0966947 128.0 +1.9395058 -8.667902 3.097811 128.0 +0.65793079 -3.0238237 1.0993059 128.0 +0.68946451 -3.2655067 1.1831888 128.0 +0.60203725 -2.9399867 1.0669929 128.0 +1.603388 -8.0925684 2.8794541 128.0 +1.553169 -8.0994692 2.878475 128.0 +0.50615114 -2.7256508 0.98800576 128.0 +0.68452978 -3.8192022 1.3705385 128.0 +0.4641445 -2.6822894 0.97070694 128.0 +0.45449963 -2.7261138 0.9850682 128.0 +0.51914519 -3.237535 1.1629524 128.0 +0.50099337 -3.2518706 1.1668692 128.0 +0.60014039 -4.0628333 1.4488729 128.0 +0.411506 -2.9067905 1.0444717 128.0 +0.34627289 -2.5579801 0.92207432 128.0 +0.46518531 -3.6063135 1.286329 128.0 +0.29441002 -2.3950322 0.86397636 128.0 +0.28265476 -2.4221442 0.87278897 128.0 +0.27429822 -2.4830258 0.89335173 128.0 +0.25974053 -2.4912434 0.8956365 128.0 +0.34938586 -3.5680845 1.2687038 128.0 +0.21349148 -2.3229246 0.83623296 128.0 +0.19409788 -2.2639143 0.8153438 128.0 +0.18348004 -2.3065236 0.82970506 128.0 +0.22153033 -3.0240846 1.0777639 128.0 +0.54335886 -8.1287098 2.8438773 128.0 +0.21301986 -3.4992721 1.2412869 128.0 +0.1603885 -2.9276028 1.0431662 128.0 +0.14151132 -2.9096491 1.0366384 128.0 +0.12448998 -2.930295 1.0434926 128.0 +0.31582186 -8.7555571 3.0560327 128.0 +0.08747983 -2.8966439 1.0314161 128.0 +0.070732906 -2.9405947 1.0464301 128.0 +0.050453726 -2.8133864 1.002367 128.0 +0.033383735 -2.8306561 1.0082421 128.0 +0 -0 0 128.0 +-0.0014491337 -2.9357736 1.0444717 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.072847039 -2.9093406 1.0356592 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4343574 -3.7118115 1.4048098 128.0 +-1.4512172 -3.6879895 1.3992611 128.0 +-0 -0 0 128.0 +-1.4727938 -3.6121421 1.3777192 128.0 +-1.3528273 -3.2608373 1.249773 128.0 +-1.3687634 -3.2428973 1.2461827 128.0 +-1.4289404 -3.3282297 1.2814332 128.0 +-1.6215588 -3.7134922 1.4299421 128.0 +-1.6615857 -3.7423434 1.4446298 128.0 +-1.6638941 -3.6864221 1.427331 128.0 +-1.4936244 -3.2560804 1.2677246 128.0 +-3.426326 -7.3464847 2.8298423 128.0 +-3.4903693 -7.3654666 2.8451829 128.0 +-3.6027596 -7.4835768 2.8987112 128.0 +-3.6465335 -7.4570847 2.8970792 128.0 +-3.7384818 -7.5276866 2.9329824 128.0 +-1.5600933 -3.0950949 1.2275783 128.0 +-1.5751768 -3.0778925 1.2246407 128.0 +-1.5922885 -3.0648148 1.2233353 128.0 +-1.7072465 -3.2372234 1.2944889 128.0 +-1.7159195 -3.2058563 1.286329 128.0 +-2.3179026 -4.266572 1.7073762 128.0 +-2.3358207 -4.237371 1.7015011 128.0 +-2.3608537 -4.2213092 1.7008483 128.0 +-2.3783112 -4.1919475 1.6949733 128.0 +-2.3973842 -4.1658077 1.6904038 128.0 +-1.8065374 -3.095633 1.2683774 128.0 +-2.4343555 -4.1124892 1.6809384 128.0 +-2.0964859 -3.4929764 1.4374491 128.0 +-2.1390193 -3.5147614 1.451484 128.0 +-2.16998 -3.5168521 1.4576855 128.0 +-1.9743664 -3.1565411 1.3163573 128.0 +-1.9891397 -3.1371839 1.3134197 128.0 +-4.7146616 -7.3329048 3.0410187 128.0 +-2.5870144 -3.9709113 1.6672299 128.0 +-2.5607922 -3.8784614 1.6355698 128.0 +-2.5861192 -3.865032 1.636549 128.0 +-2.6219912 -3.8670821 1.644056 128.0 +-2.6836863 -3.9062266 1.6672299 128.0 +-2.6249509 -3.7710118 1.6172917 128.0 +-5.5826745 -7.9137878 3.3749189 128.0 +-2.6759768 -3.7454362 1.6202292 128.0 +-2.6002245 -3.5926738 1.5621313 128.0 +-2.6647105 -3.6345756 1.5869372 128.0 +-5.3270226 -7.1712198 3.1154363 128.0 +-5.3936601 -7.1686087 3.1284921 128.0 +-2.8234162 -3.7059414 1.6394864 128.0 +-5.4864221 -7.1086144 3.1314297 128.0 +-5.5212035 -7.0636468 3.1265337 128.0 +-5.5585737 -7.0222254 3.1232698 128.0 +-0 -0 0 128.0 +-3.023351 -3.7254596 1.6874663 128.0 +-6.137116 -7.4663253 3.3680646 128.0 +-6.2438951 -7.5018988 3.4010303 128.0 +-0 -0 0 128.0 +-3.1193905 -3.6566114 1.6904038 128.0 +-6.5830221 -7.6195641 3.5077608 128.0 +-6.6620164 -7.6160197 3.5247333 128.0 +-3.2463384 -3.6664989 1.7217375 128.0 +-3.322418 -3.7063243 1.749481 128.0 +-3.2783794 -3.6123891 1.7152097 128.0 +-2.7273219 -2.9686859 1.4227614 128.0 +-2.7712438 -2.9795737 1.4358171 128.0 +-2.9016092 -3.0815358 1.4922832 128.0 +-2.9335103 -3.077354 1.498811 128.0 +-2.8814275 -2.985858 1.4635606 128.0 +-3.6489663 -3.7346404 1.8336904 128.0 +-2.8885972 -2.920711 1.4491993 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.7198834 -3.6248393 1.8242249 128.0 +-8.4209251 -8.10359 4.0662193 128.0 +-3.7949181 -3.6082201 1.8389127 128.0 +-3.8224995 -3.5900426 1.8415239 128.0 +-3.834059 -3.55688 1.836628 128.0 +-3.8606908 -3.5377567 1.8389127 128.0 +-3.8844283 -3.5159039 1.8398919 128.0 +-3.9193196 -3.5039701 1.8460933 128.0 +-3.9768879 -3.5117564 1.8627394 128.0 +-9.0898409 -7.9259853 4.1951447 128.0 +-4.0325766 -3.4737911 1.8686144 128.0 +-4.0934186 -3.482662 1.886566 128.0 +-4.122673 -3.4641666 1.8901564 128.0 +-4.1729517 -3.4629443 1.9032122 128.0 +-4.244575 -3.478605 1.9257333 128.0 +-4.3128715 -3.4905431 1.9466225 128.0 +-10.16694 -8.123662 4.5244756 128.0 +-4.4607611 -3.5204866 1.9929702 128.0 +-4.5039034 -3.5098948 2.0024357 128.0 +-4.6662126 -3.5905349 2.0637975 128.0 +-4.5594335 -3.4640794 2.0079844 128.0 +-9.8819666 -7.411037 4.2960005 128.0 +-4.5628538 -3.379185 1.9913383 128.0 +-4.603344 -3.3656251 1.9998245 128.0 +-4.6223755 -3.33621 1.9991717 128.0 +-4.7890487 -3.4119651 2.0611863 128.0 +-10.438712 -7.3392496 4.4370022 128.0 +-10.552668 -7.3230162 4.4660511 128.0 +-10.485095 -7.1812248 4.4190507 128.0 +-11.399846 -7.7052875 4.7819996 128.0 +-11.408377 -7.6094966 4.7660065 128.0 +-11.497492 -7.5674114 4.7836318 128.0 +-10.65976 -6.9227748 4.4197035 128.0 +-10.723526 -6.8710041 4.4285159 128.0 +-10.745507 -6.7924519 4.4203563 128.0 +-10.788588 -6.7273908 4.4210091 128.0 +-6.0944395 -3.7491479 2.5014908 128.0 +-6.06318 -3.6788399 2.4796224 128.0 +-6.1034846 -3.6522424 2.4868031 128.0 +-5.6853242 -3.3549161 2.3102243 128.0 +-5.6445212 -3.2843261 2.2857449 128.0 +-5.6703072 -3.2529216 2.2880297 128.0 +-6.0662036 -3.43065 2.4371912 128.0 +-5.8749366 -3.2751153 2.3533082 128.0 +-5.6703987 -3.1156912 2.2648559 128.0 +-6.1474419 -3.3287585 2.4446983 128.0 +-5.7765956 -3.0823483 2.29162 128.0 +-5.6882977 -2.9905632 2.2498417 128.0 +-5.6637306 -2.9334412 2.2331955 128.0 +-5.6824651 -2.8990633 2.2335219 128.0 +-7.2780199 -3.6566083 2.8432245 128.0 +-7.4019918 -3.6621675 2.8823917 128.0 +-7.4829612 -3.6452353 2.9049127 128.0 +-8.0208597 -3.846463 3.1023805 128.0 +-7.9528422 -3.7540143 3.0674565 128.0 +-7.4553447 -3.4634855 2.8693359 128.0 +-6.9150534 -3.1611412 2.6562011 128.0 +-7.4455581 -3.3484819 2.8497522 128.0 +-7.4564548 -3.2985289 2.8461618 128.0 +-7.0258102 -3.0566938 2.6764376 128.0 +-7.0505176 -3.0161283 2.6787224 128.0 +-8.2757454 -3.4801326 3.1307769 128.0 +-8.2812176 -3.422791 3.1249018 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.2682137 -2.8487768 2.7263756 128.0 +-7.2670302 -2.796999 2.7195215 128.0 +-11.474594 -4.335072 4.2662988 128.0 +-11.490342 -4.2606411 4.262382 128.0 +-11.476295 -4.175518 4.247694 128.0 +-11.446504 -4.0853281 4.227458 128.0 +-11.220648 -3.9272957 4.1357412 128.0 +-11.430506 -3.9221656 4.2036309 128.0 +-0 -0 0 128.0 +-6.8541508 -2.2587466 2.5227063 128.0 +-11.918173 -3.8457489 4.3550773 128.0 +-6.8552141 -2.1662104 2.5132411 128.0 +-0 -0 0 128.0 +-12.618476 -3.81668 4.5829 128.0 +-11.304659 -3.3438516 4.10147 128.0 +-7.0624981 -2.0424647 2.5693805 128.0 +-7.052156 -1.9926697 2.5612206 128.0 +-7.3758869 -2.0353026 2.6728473 128.0 +-8.1941891 -2.2069554 2.9610524 128.0 +-12.885714 -3.3851762 4.631206 128.0 +-12.756985 -3.2678275 4.5780039 128.0 +-12.787801 -3.1922369 4.5819206 128.0 +-14.189487 -3.4496603 5.0731425 128.0 +-6.72188 -1.5912009 2.4159758 128.0 +-11.441453 -2.6335404 4.0848241 128.0 +-7.4530334 -1.6678392 2.6679513 128.0 +-11.401784 -2.4774907 4.0596919 128.0 +-13.552397 -2.8576038 4.8133335 128.0 +-13.368713 -2.7333241 4.742506 128.0 +-7.5390086 -1.4937927 2.6845973 128.0 +-7.5730977 -1.4523089 2.6934099 128.0 +-7.6664433 -1.4214827 2.7231116 128.0 +-11.459195 -2.0514824 4.0505528 128.0 +-11.526523 -1.9906167 4.0698099 128.0 +-11.606587 -1.9311723 4.0936365 128.0 +-11.785291 -1.8866481 4.152061 128.0 +-12.765476 -1.9632058 4.4905305 128.0 +-11.819713 -1.7436745 4.1563039 128.0 +-0 -0 0 128.0 +-13.909497 -1.8776538 4.8773065 128.0 +-11.906993 -1.5331749 4.1762142 128.0 +-12.930402 -1.5842578 4.5290451 128.0 +-13.430932 -1.5619524 4.6997485 128.0 +-13.433686 -1.4787889 4.697464 128.0 +-13.415241 -1.3935038 4.6879983 128.0 +-13.44894 -1.3136419 4.6968112 128.0 +-13.484986 -1.233677 4.7066031 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.932714 13.372181 5.0473719 128.0 +-6.8285255 13.371375 5.0312567 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.7541237 13.046803 4.6555562 128.0 +-4.6212835 12.928319 4.6034198 128.0 +-4.5873837 13.086255 4.6492367 128.0 +-0 0 0 128.0 +-4.3583021 12.939261 4.5781412 128.0 +-4.7926559 14.522626 5.124155 128.0 +-4.1294441 12.776008 4.5026221 128.0 +-4.0289311 12.731455 4.4782915 128.0 +-3.9454029 12.738717 4.4722877 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.7110484 12.811914 4.4732356 128.0 +-3.6199629 12.790625 4.4580688 128.0 +-3.5363574 12.794306 4.4517493 128.0 +-3.8075359 14.111909 4.8988614 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.3827968 13.884003 4.790164 128.0 +-0 0 0 128.0 +-3.3426971 14.490252 4.9835439 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.9517183 14.863285 5.0777059 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.5156231 14.52459 4.9402547 128.0 +-0 0 0 128.0 +-2.3349378 14.540316 4.9355149 128.0 +-2.2200637 14.388402 4.8795862 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.1007953 14.860456 4.9936552 128.0 +1.1158608 13.904858 4.6767273 128.0 +1.2000967 13.885461 4.6726193 128.0 +0 0 0 128.0 +1.5074058 15.256675 5.1367941 128.0 +1.5992076 15.230154 5.1311069 128.0 +1.6929425 15.222884 5.1320548 128.0 +1.7796789 15.155672 5.1130958 128.0 +0 0 0 128.0 +1.922276 14.799625 5.0012388 128.0 +2.0060112 14.735847 4.98386 128.0 +2.0961235 14.721381 4.9832277 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.9822171 14.968464 5.1140437 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.3984084 15.112 5.1895628 128.0 +3.481662 15.050191 5.1756597 128.0 +3.5618713 14.977778 5.1582808 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5080793 13.63158 4.7187524 128.0 +3.5628488 13.500632 4.6811509 128.0 +3.6565187 13.518815 4.6950541 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9589763 -2.2580483 2.7862172 128.0 +7.9440598 -2.3065767 2.7859013 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0152922 -2.5421367 2.8314025 128.0 +7.9887118 -2.5877616 2.8276107 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.3058949 -2.0062079 1.6129826 128.0 +4.2797832 -2.0260963 1.607927 128.0 +4.2869368 -2.061775 1.6151946 128.0 +0 -0 0 128.0 +4.2740622 -2.1205511 1.6199342 128.0 +4.2652068 -2.1488705 1.6215142 128.0 +4.2282896 -2.1629045 1.6126667 128.0 +4.2199912 -2.1914313 1.6145626 128.0 +4.2324848 -2.2309959 1.6243579 128.0 +4.2170424 -2.2560291 1.623726 128.0 +4.2106252 -2.2859354 1.6265699 128.0 +4.2089853 -2.318594 1.6313095 128.0 +4.1681762 -2.3295662 1.6211982 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.717253 -2.2610459 1.479955 128.0 +3.6782739 -2.2683759 1.4701596 128.0 +3.800251 -2.3758907 1.5235603 128.0 +3.8192611 -2.4204922 1.5368315 128.0 +3.689383 -2.370049 1.4913303 128.0 +4.4675179 -2.9087005 1.8063626 128.0 +4.5652099 -3.0123401 1.8524957 128.0 +4.093915 -2.7376075 1.671123 128.0 +3.6222532 -2.4545555 1.4881705 128.0 +4.4683151 -3.0679379 1.8360647 128.0 +4.0093393 -2.7892039 1.6575359 128.0 +4.0107627 -2.8268688 1.6651194 128.0 +3.9894807 -2.8486688 1.6635395 128.0 +4.163352 -3.0115387 1.7422186 128.0 +4.478488 -3.2814975 1.879986 128.0 +4.0613213 -3.0143442 1.7153603 128.0 +3.0188928 -2.2696271 1.288787 128.0 +3.0101941 -2.2921307 1.2909988 128.0 +3.5776253 -2.758954 1.5355675 128.0 +3.4634166 -2.7049441 1.4944901 128.0 +3.4400563 -2.7208478 1.4916463 128.0 +3.332207 -2.6689587 1.4527807 128.0 +3.2494454 -2.6355715 1.4243425 128.0 +3.755276 -3.0841544 1.6493204 128.0 +3.7990205 -3.1593046 1.6764947 128.0 +3.8231115 -3.2192185 1.6954535 128.0 +3.4920926 -2.9773386 1.5592661 128.0 +3.047843 -2.6311018 1.3718897 128.0 +3.903235 -3.4114084 1.7573856 128.0 +3.2242355 -2.8531373 1.464788 128.0 +3.2102017 -2.8760321 1.4663678 128.0 +3.212173 -2.9135213 1.4752153 128.0 +3.2165997 -2.9537089 1.4853266 128.0 +3.131007 -2.9107349 1.4546766 128.0 +3.1110153 -2.9279411 1.4537287 128.0 +3.031852 -2.8887324 1.4256064 128.0 +2.9771922 -2.8717163 1.4085435 128.0 +2.8108423 -2.7447793 1.3393438 128.0 +2.7615576 -2.7299614 1.3241768 128.0 +2.7279878 -2.730078 1.3162773 128.0 +2.9651437 -3.0040057 1.4366658 128.0 +6.93962 -7.1166544 3.3413947 128.0 +6.9590116 -7.2246981 3.3717287 128.0 +3.3181083 -3.4876542 1.6341534 128.0 +3.3167894 -3.5293791 1.6439488 128.0 +2.5255949 -2.7208662 1.2673002 128.0 +2.5242426 -2.7530937 1.2748839 128.0 +2.5971127 -2.8676772 1.319437 128.0 +2.5851617 -2.8899224 1.3222809 128.0 +2.8991106 -3.2811029 1.4891185 128.0 +2.671788 -3.0615246 1.384213 128.0 +2.6300309 -3.0512729 1.3725218 128.0 +2.6161797 -3.073132 1.3750496 128.0 +2.570406 -3.0571766 1.3611465 128.0 +2.8916619 -3.4823484 1.5384114 128.0 +2.8497829 -3.4750841 1.527668 128.0 +3.0565257 -3.7741358 1.6483725 128.0 +2.9586384 -3.6994653 1.608559 128.0 +3.2258055 -4.0846014 1.7643372 128.0 +2.7368009 -3.5095611 1.5131329 128.0 +2.6660089 -3.4623942 1.4862746 128.0 +1.8901178 -2.4863207 1.0710766 128.0 +1.866282 -2.4864905 1.0663369 128.0 +2.6029558 -3.5124047 1.4869065 128.0 +2.8945491 -3.9563186 1.6635395 128.0 +2.9407761 -4.0716791 1.7036691 128.0 +3.0462859 -4.2727261 1.7785563 128.0 +3.0636985 -4.3534055 1.8038348 128.0 +3.0277264 -4.3588758 1.7984631 128.0 +3.0170195 -4.4008465 1.8079425 128.0 +2.9516764 -4.3627 1.7851919 128.0 +1.6250331 -2.4342182 1.0056686 128.0 +1.6236393 -2.4647417 1.0138842 128.0 +1.6167599 -2.4873846 1.0189399 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.5400531 -2.467629 0.99966502 128.0 +2.0019698 -3.2517869 1.3026901 128.0 +1.9962626 -3.2875261 1.3118535 128.0 +1.6191795 -2.7039223 1.080556 128.0 +1.9340554 -3.2750154 1.2976344 128.0 +1.9010313 -3.2646852 1.2891029 128.0 +1.8648998 -3.2483144 1.2783597 128.0 +1.8196932 -3.2151113 1.2612966 128.0 +1.8309079 -3.2817254 1.2824674 128.0 +1.7750721 -3.2280552 1.2578208 128.0 +1.7204174 -3.17466 1.2334905 128.0 +1.6450297 -3.0805485 1.1939929 128.0 +1.6291898 -3.0964615 1.1962048 128.0 +1.544654 -2.9800568 1.1488078 128.0 +1.6277487 -3.1880417 1.2230631 128.0 +1.273057 -2.5317702 0.9747026 128.0 +1.41879 -2.8651536 1.095723 128.0 +1.8058559 -3.7035303 1.4031718 128.0 +1.7559937 -3.6580923 1.3823171 128.0 +1.5328389 -3.2441924 1.2259068 128.0 +1.4572852 -3.1339605 1.1819856 128.0 +0.9728955 -2.1265831 0.80976093 128.0 +0.9430781 -2.0953133 0.79617375 128.0 +0.92866683 -2.0975904 0.79490983 128.0 +0.930556 -2.1371722 0.8072331 128.0 +0.92190778 -2.1533072 0.81102484 128.0 +1.5441921 -3.6681473 1.3564067 128.0 +1.5198414 -3.6731699 1.3548268 128.0 +1.2095336 -2.9749458 1.1004628 128.0 +1.4735955 -3.6889012 1.3538789 128.0 +0.92197472 -2.3501434 0.87169307 128.0 +1.3992136 -3.6314571 1.3270205 128.0 +0.89373696 -2.3630555 0.872325 128.0 +1.2310067 -3.3157153 1.2088439 128.0 +1.2181102 -3.3437088 1.2161115 128.0 +1.1905445 -3.3314652 1.20916 128.0 +1.1468529 -3.2724526 1.1857774 128.0 +1.0157318 -2.956419 1.0720245 128.0 +1.0947962 -3.251214 1.1734542 128.0 +1.0334941 -3.1326363 1.1295329 128.0 +0.96405995 -2.9836421 1.0751843 128.0 +0.91395789 -2.8890967 1.0401105 128.0 +0.89256412 -2.8828685 1.0360028 128.0 +0.71389288 -2.3571167 0.85115433 128.0 +0.70588636 -2.3832846 0.85873789 128.0 +0.72160852 -2.4923701 0.89507556 128.0 +0.69131511 -2.4438026 0.87674874 128.0 +0.67226261 -2.433367 0.87169307 128.0 +0.88916713 -3.2966573 1.1680825 128.0 +0.83752131 -3.1827757 1.1270051 128.0 +0.84510642 -3.2935359 1.1633428 128.0 +0.76846558 -3.0731621 1.0859276 128.0 +0.74892068 -3.0750539 1.0849797 128.0 +0.70507717 -2.9743519 1.0489579 128.0 +0.7017439 -3.0433357 1.0710766 128.0 +0.69198447 -3.0873923 1.0846637 128.0 +0.70372075 -3.2324884 1.1326927 128.0 +0.67013675 -3.1717682 1.1105741 128.0 +1.7039543 -8.3137445 2.8573129 128.0 +0.43838498 -2.2091496 0.78100669 128.0 +0.42715016 -2.2239101 0.78511447 128.0 +0.50279617 -2.7068739 0.94784427 128.0 +0.42162439 -2.3503826 0.8261919 128.0 +0.51617885 -2.9820752 1.0388466 128.0 +0.44991851 -2.6978896 0.94184065 128.0 +0.5180614 -3.2279956 1.1197375 128.0 +0.42517012 -2.7575924 0.96016753 128.0 +0.43019542 -2.908438 1.0100924 128.0 +0.35906735 -2.5352743 0.88370031 128.0 +0 -0 0 128.0 +1.0361618 -8.0176125 2.7233372 128.0 +0.29774055 -2.4228046 0.84388679 128.0 +0.28793311 -2.4679341 0.85842186 128.0 +0.28603181 -2.5894172 0.89855134 128.0 +0.26146835 -2.5080836 0.87074512 128.0 +0.24727957 -2.5219157 0.87485284 128.0 +0.25301218 -2.7539105 0.95195204 128.0 +0.24852315 -2.9000406 1.000297 128.0 +0.65619779 -8.2432222 2.7849534 128.0 +0.20950966 -2.8565073 0.98481399 128.0 +0.49840802 -7.4100518 2.5043628 128.0 +0.52225018 -8.546526 2.8825912 128.0 +0.48360604 -8.8006134 2.966326 128.0 +0.11495217 -2.3613844 0.81829238 128.0 +0.10600515 -2.4919078 0.86158168 128.0 +0.088807203 -2.4403641 0.84420276 128.0 +0.091910809 -3.0354645 1.0423224 128.0 +0.072938599 -3.021744 1.0375826 128.0 +0 -0 0 128.0 +0.031256661 -2.6391377 0.90992665 128.0 +0 -0 0 128.0 +-0.0012016643 -2.8850529 0.99176556 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.055139288 -2.9291263 1.0066166 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4244105 -3.7569149 1.369046 128.0 +-3.1026649 -8.0355034 2.8996542 128.0 +-1.4641579 -3.7232587 1.3633583 128.0 +-3.2225444 -8.0505543 2.9189291 128.0 +-1.4828923 -3.6391118 1.3396598 128.0 +-1.4132721 -3.4082046 1.2597167 128.0 +-1.3751665 -3.2595973 1.20916 128.0 +-1.3865379 -3.2310438 1.2018924 128.0 +-1.4146838 -3.2416067 1.2088439 128.0 +-1.6465309 -3.7107267 1.3829491 128.0 +-1.6579573 -3.6754723 1.3737856 128.0 +-3.4800603 -7.591218 2.8121276 128.0 +-3.4933219 -7.4983392 2.7859013 128.0 +-3.4938052 -7.3807168 2.7505116 128.0 +-3.5850749 -7.454906 2.7859013 128.0 +-3.6482382 -7.4685736 2.7991724 128.0 +-3.6834555 -7.4247994 2.7912729 128.0 +-1.5598642 -3.0958784 1.1854614 128.0 +-1.5779667 -3.0845594 1.1848295 128.0 +-1.595552 -3.072293 1.1838815 128.0 +-1.8107724 -3.435112 1.3241768 128.0 +-0 -0 0 128.0 +-1.6767259 -3.0882652 1.2012604 128.0 +-4.1343498 -7.5057831 2.8848031 128.0 +-4.1507072 -7.4272671 2.8645804 128.0 +-4.1943307 -7.3983574 2.8633165 128.0 +-1.8631504 -3.2394712 1.2755158 128.0 +-1.9871904 -3.4066451 1.3443995 128.0 +-2.0433142 -3.4540012 1.3674661 128.0 +-2.0981405 -3.4975402 1.3892686 128.0 +-2.1333649 -3.5072982 1.3981161 128.0 +-1.9536767 -3.1678736 1.2704601 128.0 +-1.9720719 -3.1542172 1.2698282 128.0 +-1.9949434 -3.1476676 1.27204 128.0 +-4.6142359 -7.1835122 2.8743758 128.0 +-2.0939803 -3.2159801 1.3090097 128.0 +-5.313343 -8.0529184 3.2440727 128.0 +-2.4955633 -3.7318923 1.5260881 128.0 +-2.5141575 -3.7102258 1.5235603 128.0 +-2.5771482 -3.7533937 1.5472589 128.0 +-2.6754346 -3.8457744 1.5911801 128.0 +-2.7077258 -3.8416944 1.5962358 128.0 +-2.71526 -3.8026147 1.5870723 128.0 +-2.7535534 -3.8066397 1.5956038 128.0 +-2.7948015 -3.8141637 1.6057152 128.0 +-2.826633 -3.8083718 1.6104548 128.0 +-2.8738899 -3.8228095 1.623726 128.0 +-5.436327 -7.1402512 3.0197268 128.0 +-5.4922023 -7.1225386 3.0263622 128.0 +-5.6403241 -7.2225595 3.0829227 128.0 +-5.9728994 -7.5524702 3.2377532 128.0 +-5.6941338 -7.1098471 3.0645959 128.0 +-6.1171207 -7.5427165 3.2652433 128.0 +-6.1675014 -7.5101728 3.2674551 128.0 +-3.0962195 -3.7231498 1.6436328 128.0 +-3.1141176 -3.6982753 1.6411049 128.0 +-6.4899573 -7.6127076 3.3625653 128.0 +-3.1791039 -3.6827655 1.6512163 128.0 +-3.2316079 -3.6974816 1.6663834 128.0 +-3.2674365 -3.6925054 1.6730189 128.0 +-2.7101791 -3.0250449 1.383581 128.0 +-2.7509966 -3.0329568 1.3946403 128.0 +-2.7958624 -3.0446742 1.4075955 128.0 +-3.4197261 -3.6786151 1.7036691 128.0 +-3.4532864 -3.6693091 1.7090406 128.0 +-3.4940593 -3.6672857 1.7178881 128.0 +-3.5118852 -3.6409972 1.7156763 128.0 +-3.5480785 -3.6336362 1.7223119 128.0 +-3.5749757 -3.6165209 1.7245237 128.0 +-3.6145468 -3.6119552 1.7327392 128.0 +-3.6852536 -3.6377008 1.7554898 128.0 +-0 -0 0 128.0 +-3.7596817 -3.621165 1.7693928 128.0 +-3.7728946 -3.5895257 1.7652851 128.0 +-8.5580873 -8.0433464 3.942389 128.0 +-9.8275318 -9.1235952 4.4969344 128.0 +-10.067929 -9.2324142 4.5803533 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.9226408 -8.7684631 4.4410057 128.0 +-10.072751 -8.7916403 4.4836631 128.0 +-9.1434755 -7.8821878 4.0514021 128.0 +-9.1887779 -7.8234758 4.0501385 128.0 +-9.9838047 -8.3952951 4.3752818 128.0 +-10.462833 -8.6890945 4.5604463 128.0 +-10.678072 -8.7577047 4.6302781 128.0 +-9.7967682 -7.9348083 4.2296152 128.0 +-4.6092963 -3.6863945 1.9965827 128.0 +-4.6176829 -3.6468694 1.9905791 128.0 +-10.450634 -8.1505003 4.4447975 128.0 +-4.6139798 -3.5528793 1.9703563 128.0 +-4.6145468 -3.5084219 1.9615089 128.0 +-4.6291585 -3.4749148 1.958665 128.0 +-4.6603022 -3.4537899 1.9627728 128.0 +-4.7258153 -3.4576259 1.9810996 128.0 +-4.7346363 -3.4196746 1.9760439 128.0 +-10.366869 -7.3918414 4.2713246 128.0 +-10.387201 -7.3106174 4.2612128 128.0 +-0 -0 0 128.0 +-11.275842 -7.7309289 4.5841451 128.0 +-11.484934 -7.7711291 4.6492367 128.0 +-11.548181 -7.71105 4.6555562 128.0 +-0 -0 0 128.0 +-10.674701 -6.939889 4.2713246 128.0 +-10.724269 -6.87887 4.274168 128.0 +-10.763068 -6.8109083 4.2729044 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.0924811 -3.6998796 2.4048293 128.0 +-6.1118131 -3.6604772 2.4035652 128.0 +-6.0769753 -3.5891297 2.3814466 128.0 +-6.0414944 -3.5183489 2.359328 128.0 +-0 -0 0 128.0 +-6.0792613 -3.4411411 2.3574321 128.0 +-6.0041561 -3.3501439 2.3207784 128.0 +-5.9813704 -3.2894633 2.3043475 128.0 +-5.8988471 -3.1970878 2.2654819 128.0 +-5.9376006 -3.1711142 2.2727494 128.0 +-0 -0 0 128.0 +-5.7553892 -2.9835954 2.1899626 128.0 +-5.9806004 -3.0539491 2.2673779 128.0 +-7.6842189 -3.8647504 2.8955464 128.0 +-7.7154393 -3.8213181 2.8983903 128.0 +-7.3584151 -3.5884128 2.7574632 128.0 +-7.6385908 -3.6672149 2.8528891 128.0 +-7.8934093 -3.7301414 2.9385197 128.0 +-7.5393543 -3.5063789 2.8001204 128.0 +-7.3795605 -3.3771338 2.7337646 128.0 +-6.9226046 -3.1167593 2.5593436 128.0 +-7.0014544 -3.1007364 2.5811462 128.0 +-7.027307 -3.0607491 2.583674 128.0 +-7.1488667 -3.0616527 2.6209598 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.673143 -5.1539111 4.5873046 128.0 +-12.666644 -5.0609155 4.5737176 128.0 +-11.588187 -4.5477309 4.1768465 128.0 +-11.567183 -4.4577756 4.1594672 128.0 +-11.582782 -4.3823519 4.1553597 128.0 +-11.599669 -4.3075652 4.1518841 128.0 +-11.652624 -4.2460551 4.1613631 128.0 +-11.60252 -4.1473293 4.1345048 128.0 +-11.691318 -4.0983458 4.1569395 128.0 +-0 -0 0 128.0 +-11.696673 -3.9397254 4.1414566 128.0 +-6.9112802 -2.280601 2.4547541 128.0 +-6.9233379 -2.2375677 2.4541221 128.0 +-6.9088964 -2.1861701 2.4443266 128.0 +-12.283762 -3.804481 4.3136659 128.0 +-7.7968864 -2.3623445 2.7441919 128.0 +-7.1617365 -2.1219804 2.5185821 128.0 +-7.0342817 -2.0373421 2.4699211 128.0 +-7.0046568 -1.9822561 2.4553859 128.0 +-6.9471884 -1.920027 2.4313715 128.0 +-6.9441824 -1.873409 2.4263158 128.0 +-7.0298648 -1.8503304 2.4519103 128.0 +-8.1539555 -2.0928521 2.8345623 128.0 +-8.2080612 -2.0531433 2.8487813 128.0 +-8.246315 -2.0090301 2.8576288 128.0 +-8.2354078 -1.95292 2.8497293 128.0 +-7.6176648 -1.7571014 2.6345468 128.0 +-7.5903459 -1.7018151 2.6215916 128.0 +-11.505288 -2.505734 3.9525003 128.0 +-9.5024309 -2.0084727 3.2655594 128.0 +-13.386608 -2.7439086 4.581933 128.0 +-13.358524 -2.6528463 4.5667658 128.0 +-12.503407 -2.4033551 4.2713246 128.0 +-10.401426 -1.9331516 3.5543652 128.0 +-10.419629 -1.8704669 3.5565772 128.0 +-11.717255 -2.0293243 3.9913659 128.0 +-12.640038 -2.1093714 4.2988148 128.0 +-12.678036 -2.0358362 4.3073463 128.0 +-11.915776 -1.8384825 4.0463467 128.0 +-0 -0 0 128.0 +-13.722245 -1.9451712 4.646709 128.0 +-11.948539 -1.6189679 4.0466623 128.0 +-11.996825 -1.5506102 4.0596175 128.0 +-13.606 -1.6738364 4.596468 128.0 +-13.616957 -1.59043 4.5967841 128.0 +-13.64249 -1.5086213 4.6021557 128.0 +-13.609971 -1.4205493 4.5882525 128.0 +-13.641092 -1.3392388 4.5958362 128.0 +-13.654721 -1.256035 4.5977321 128.0 +-13.739685 -1.1788805 4.6236424 128.0 +-14.013367 -1.1157967 4.712749 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.1660256 13.427445 4.9030929 128.0 +-7.0799561 13.464418 4.9006538 128.0 +-6.9774961 13.46955 4.8869352 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-5.0347905 13.320206 4.5893874 128.0 +-0 0 0 128.0 +-4.7716122 13.108021 4.4964037 128.0 +-4.65555 13.03749 4.462564 128.0 +-4.592145 13.113452 4.4787216 128.0 +-4.4760404 13.037788 4.4436622 128.0 +-0 0 0 128.0 +-4.7640491 14.452166 4.9021783 128.0 +-4.1191597 12.758146 4.3226314 128.0 +-4.025877 12.735958 4.3067784 128.0 +-3.9327407 12.712197 4.2906203 128.0 +-3.8585274 12.748851 4.2948885 128.0 +-3.7837422 12.784159 4.298852 128.0 +-3.7012599 12.793411 4.2942786 128.0 +-3.6188064 12.802134 4.2897058 128.0 +-0 0 0 128.0 +-3.8055112 14.122925 4.7131624 128.0 +-3.7163622 14.136798 4.7101135 128.0 +-3.6104012 14.084605 4.6854196 128.0 +-3.7401226 14.972301 4.9710774 128.0 +-3.4172578 14.045488 4.6582866 128.0 +-0 0 0 128.0 +-3.1153517 13.524858 4.4738441 128.0 +-3.328917 14.86905 4.9085803 128.0 +-0 0 0 128.0 +-3.0927303 14.655308 4.8256574 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.8014607 14.600317 4.789988 128.0 +-2.7076545 14.594757 4.7826715 128.0 +-2.6931045 15.030149 4.9189458 128.0 +-2.5095413 14.51802 4.7473073 128.0 +-2.4182239 14.519993 4.7430391 128.0 +-2.3131196 14.434874 4.7107234 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.81921959 14.649478 4.7277961 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.0895079 14.642365 4.7311492 128.0 +0 0 0 128.0 +1.2107738 13.956124 4.5153055 128.0 +1.2969135 13.954122 4.5171347 128.0 +1.3811935 13.932633 4.5128665 128.0 +0 0 0 128.0 +1.549423 13.890971 4.5052447 128.0 +1.7858816 15.164722 4.9189458 128.0 +1.8696331 15.078813 4.8948617 128.0 +1.9469832 14.950894 4.8573632 128.0 +2.0426781 14.967919 4.8668141 128.0 +2.1098416 14.782566 4.8110237 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.503921 15.498081 5.0564394 128.0 +2.6218405 15.618615 5.1006451 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.8420336 15.21009 4.9841866 128.0 +2.6228056 13.575597 4.4570765 128.0 +3.0254872 15.159124 4.9793091 128.0 +3.2120478 15.594548 5.1277776 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.7003736 15.536858 5.143631 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.503114 13.593955 4.5247564 128.0 +3.5652835 13.492098 4.4982328 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9603682 -2.2605774 2.6800222 128.0 +7.9362879 -2.3064537 2.6766689 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0207138 -2.5460739 2.7248373 128.0 +7.9632673 -2.5817232 2.7108135 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.3467875 -2.0911608 1.5751941 128.0 +4.3313079 -2.1165378 1.5742795 128.0 +4.3515067 -2.1595945 1.5861692 128.0 +4.2760949 -2.1549504 1.5639142 128.0 +4.2610965 -2.1802793 1.5633044 128.0 +4.2070751 -2.1853013 1.5486709 128.0 +4.1851635 -2.2066302 1.5456222 128.0 +4.1354418 -2.2129371 1.5325131 128.0 +4.197938 -2.2796483 1.5602558 128.0 +4.1621861 -2.2934077 1.5523293 128.0 +4.1463737 -2.3179734 1.5517195 128.0 +4.1635489 -2.3612325 1.5633044 128.0 +0 -0 0 128.0 +4.0701046 -2.3746955 1.539525 128.0 +3.816972 -2.2584319 1.4508095 128.0 +3.9091935 -2.3455381 1.4904418 128.0 +3.9142525 -2.3813655 1.4977586 128.0 +3.7788074 -2.3308082 1.4523338 128.0 +3.7951152 -2.373147 1.4639187 128.0 +4.817184 -3.0539186 1.8568888 128.0 +4.0388904 -2.5951667 1.5678774 128.0 +4.1170483 -2.681253 1.6038513 128.0 +3.8779912 -2.5595129 1.5184894 128.0 +3.8598387 -2.5816705 1.5175748 128.0 +3.8171251 -2.587131 1.5072094 128.0 +3.8553402 -2.6477201 1.528245 128.0 +3.9570465 -2.7534962 1.5742795 128.0 +3.9657598 -2.7958398 1.5843401 128.0 +3.9183097 -2.7985256 1.5724504 128.0 +3.8941212 -2.8174889 1.5697066 128.0 +3.8544872 -2.8249972 1.5608655 128.0 +4.0228696 -2.9865925 1.6349475 128.0 +3.8644326 -2.9058669 1.5788525 128.0 +3.7268391 -2.8383212 1.530684 128.0 +3.8737211 -2.9879827 1.5971444 128.0 +4.0113964 -3.1336839 1.6605561 128.0 +3.617208 -2.8615174 1.5075142 128.0 +3.9258213 -3.145148 1.6413497 128.0 +3.3385336 -2.7082257 1.4072139 128.0 +3.2821214 -2.6960044 1.3907512 128.0 +3.7523322 -3.1212282 1.593486 128.0 +3.6588235 -3.0815952 1.5623899 128.0 +3.2102051 -2.737416 1.3816053 128.0 +3.2164111 -2.7769849 1.391361 128.0 +3.2595294 -2.8493371 1.4169695 128.0 +3.2583842 -2.8838055 1.4239814 128.0 +3.2533925 -2.9151881 1.429469 128.0 +3.2890406 -2.983743 1.4526386 128.0 +4.3618584 -4.0065746 1.9270076 128.0 +3.8602321 -3.5895495 1.7184803 128.0 +3.1260984 -2.9425676 1.4053847 128.0 +2.6227193 -2.4990163 1.1907603 128.0 +2.6278937 -2.534905 1.1999062 128.0 +3.0359843 -2.964998 1.3895317 128.0 +3.006901 -2.9728541 1.3846539 128.0 +3.079453 -3.0822287 1.4258106 128.0 +3.0952611 -3.1363242 1.4416635 128.0 +2.8885303 -2.9628944 1.3556918 128.0 +3.3649666 -3.4945285 1.5840352 128.0 +2.6163709 -2.7503211 1.2462455 128.0 +2.5890145 -2.7552149 1.2413677 128.0 +2.5545723 -2.7521963 1.2331364 128.0 +2.5517919 -2.7832677 1.2398434 128.0 +2.5877099 -2.8574822 1.2651471 128.0 +3.0157132 -3.3717594 1.4791619 128.0 +2.6488955 -2.9982533 1.3117914 128.0 +2.622937 -3.0058367 1.308133 128.0 +2.5596919 -2.9699183 1.2861828 128.0 +2.5340152 -2.9768634 1.2825243 128.0 +2.7981369 -3.3285093 1.4230669 128.0 +2.8311801 -3.4101136 1.4498949 128.0 +2.8192577 -3.4384708 1.4544679 128.0 +3.3127608 -4.0916543 1.7163463 128.0 +3.0426264 -3.8053761 1.5907422 128.0 +3.1165702 -3.9473333 1.6410449 128.0 +2.9547212 -3.7898405 1.5694017 128.0 +2.9947169 -3.8901742 1.6026319 128.0 +3.0019026 -3.9494278 1.6190946 128.0 +3.1307685 -4.1719589 1.7007983 128.0 +3.077338 -4.1535869 1.6858599 128.0 +1.8376935 -2.5116897 1.0273529 128.0 +1.8005106 -2.4927993 1.0154632 128.0 +3.0484395 -4.2770109 1.712383 128.0 +3.0374784 -4.3174491 1.7209193 128.0 +3.0098436 -4.3344407 1.7203095 128.0 +2.9831915 -4.3528271 1.7203095 128.0 +2.985764 -4.4144454 1.7370771 128.0 +3.0051339 -4.5024023 1.7639052 128.0 +1.6462533 -2.4986029 0.98894006 128.0 +1.6303724 -2.5078583 0.98863524 128.0 +1.6190648 -2.5242298 0.99107414 128.0 +1.5908222 -2.5139916 0.9834525 128.0 +0 -0 0 128.0 +1.5378944 -2.497632 0.97003847 128.0 +1.5087069 -2.4842229 0.96150231 128.0 +0 -0 0 128.0 +1.4529393 -2.4598978 0.94564933 128.0 +1.5460666 -2.6548071 1.0145487 128.0 +1.5330653 -2.6700265 1.0166827 128.0 +1.5879169 -2.8053918 1.0630221 128.0 +1.6801164 -3.0114026 1.1349701 128.0 +1.1039144 -2.0066648 0.76425511 128.0 +1.1174303 -2.0611377 0.78163236 128.0 +0 -0 0 128.0 +1.0796436 -2.051091 0.77309614 128.0 +1.0696661 -2.0627513 0.77492535 128.0 +1.0673766 -2.0896366 0.78224206 128.0 +1.0686454 -2.1242299 0.79230261 128.0 +1.2904265 -2.6053591 0.96180713 128.0 +1.3232191 -2.7134027 0.99747628 128.0 +1.236941 -2.576344 0.9459542 128.0 +1.1954949 -2.5296266 0.92674774 128.0 +0 -0 0 128.0 +1.4340264 -3.1339707 1.1343603 128.0 +1.0233283 -2.272387 0.82888633 128.0 +0.99087042 -2.2368169 0.81425285 128.0 +0.94558924 -2.1703694 0.78894907 128.0 +1.2135835 -2.8337288 1.0179021 128.0 +1.1954347 -2.839366 1.0172925 128.0 +1.5447334 -3.73385 1.3245957 128.0 +0 -0 0 128.0 +1.2033324 -3.0121489 1.0694243 128.0 +1.0006155 -2.5495198 0.90784615 128.0 +0.93739808 -2.4320648 0.86547005 128.0 +0.88609797 -2.3415527 0.83254468 128.0 +0.87138259 -2.3460526 0.83223981 128.0 +2.9209597 -8.0227909 2.7641649 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1505467 -3.3486197 1.164542 128.0 +1.0209706 -3.0315485 1.0550957 128.0 +1.075086 -3.2584641 1.1294825 128.0 +1.0544871 -3.2631867 1.1288728 128.0 +0.9216634 -2.9126997 1.0090611 128.0 +0.90630668 -2.9264891 1.0118049 128.0 +1.2019286 -3.9684668 1.3584356 128.0 +0.80709648 -2.7236876 0.94046664 128.0 +0.7075485 -2.4422247 0.84504414 128.0 +0.69177306 -2.4437706 0.84412956 128.0 +0.71020824 -2.5691557 0.88437164 128.0 +0.89830208 -3.3303092 1.1352749 128.0 +0.88027143 -3.3449695 1.1383235 128.0 +0.85216534 -3.320785 1.1285679 128.0 +0.77247107 -3.0884783 1.0502177 128.0 +0.75170535 -3.0857565 1.0477788 128.0 +0.71081823 -2.9976325 1.0172925 128.0 +0.70288306 -3.047415 1.0322309 128.0 +1.6037482 -7.1605682 2.3800359 128.0 +0.64823854 -2.9767046 1.0063174 128.0 +0.60165393 -2.8464344 0.96241689 128.0 +1.6600522 -8.1098204 2.6809371 128.0 +0.4259792 -2.143589 0.73072004 128.0 +0.41030684 -2.1330676 0.72645193 128.0 +0.40068391 -2.1542737 0.73254919 128.0 +0.39551735 -2.2016907 0.74718267 128.0 +0.38427064 -2.2172148 0.75145078 128.0 +0.37566319 -2.249594 0.76120645 128.0 +0.36381093 -2.264082 0.76516968 128.0 +0.35556093 -2.302983 0.77705938 128.0 +0.37007123 -2.499212 0.83986145 128.0 +1.0767257 -7.6097941 2.4913113 128.0 +1.0249128 -7.5785046 2.4791167 128.0 +0.38595203 -2.9863958 0.99503738 128.0 +0.33284974 -2.7051127 0.9035781 128.0 +0.29048172 -2.4857376 0.83223981 128.0 +0.26896644 -2.4306731 0.81394798 128.0 +0.75985593 -7.2975607 2.3797309 128.0 +0.28749117 -2.9285824 0.97308713 128.0 +0.75727099 -8.2566595 2.685205 128.0 +0.70546043 -8.2478657 2.6809371 128.0 +0.22699393 -2.8507783 0.94656396 128.0 +0.17827718 -2.4246778 0.80937499 128.0 +0.16295144 -2.4190743 0.80724096 128.0 +0.14804749 -2.4190779 0.80693609 128.0 +0.13252704 -2.407578 0.80297285 128.0 +0.11738355 -2.4007356 0.80053395 128.0 +0.10240944 -2.3957014 0.79870474 128.0 +0.089563742 -2.4476805 0.81516743 128.0 +0.074800134 -2.4567518 0.81791121 128.0 +0.061516691 -2.5323825 0.84199548 128.0 +0.049969375 -2.7583947 0.91424835 128.0 +0.033714347 -2.8167417 0.93284506 128.0 +0 -0 0 128.0 +-0.00098079373 -2.9931364 0.98924494 128.0 +-0 -0 0 128.0 +-0.040754862 -3.2271686 1.0642415 128.0 +-0.060828868 -3.2411411 1.0688145 128.0 +-0.081003696 -3.2521319 1.0724729 128.0 +-0.10158478 -3.2715642 1.0788751 128.0 +-0.12240735 -3.2908654 1.0852772 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.2738461 -8.0295534 2.8068459 128.0 +-1.4789355 -3.5662708 1.2669764 128.0 +-1.4341017 -3.3992009 1.2121007 128.0 +-1.403814 -3.2713251 1.1706392 128.0 +-1.4253849 -3.2661409 1.1718587 128.0 +-1.4496511 -3.2669082 1.1752121 128.0 +-1.6123245 -3.5739121 1.2861828 128.0 +-1.6501125 -3.5985758 1.2983774 128.0 +-3.4473314 -7.3948674 2.6428289 128.0 +-1.6839527 -3.5565388 1.2907557 128.0 +-3.6394396 -7.5631099 2.7178254 128.0 +-3.6962364 -7.562026 2.7254472 128.0 +-3.5218737 -7.0947862 2.5666127 128.0 +-1.7642951 -3.5013855 1.2861828 128.0 +-1.5878283 -3.1039214 1.1471647 128.0 +-1.6081613 -3.0966554 1.1480793 128.0 +-1.6426858 -3.1162121 1.1587495 128.0 +-1.6671703 -3.1161494 1.1624079 128.0 +-4.0370798 -7.4323263 2.7385564 128.0 +-4.07617 -7.3957386 2.7342882 128.0 +-1.7433085 -3.1190135 1.1749073 128.0 +-4.8331237 -8.5197315 3.1665857 128.0 +-0 -0 0 128.0 +-1.8474797 -3.1670012 1.204784 128.0 +-2.076968 -3.5104654 1.3367902 128.0 +-2.0979784 -3.4968386 1.3364854 128.0 +-2.0886915 -3.4334614 1.3175838 128.0 +-1.9646614 -3.1855454 1.2291732 128.0 +-1.9816447 -3.1693935 1.2276489 128.0 +-2.0571663 -3.2456443 1.2611839 128.0 +-2.4432318 -3.8025589 1.4779425 128.0 +-2.1415553 -3.2887788 1.2874023 128.0 +-2.4225333 -3.6705635 1.4389198 128.0 +-5.4849162 -8.1980886 3.1885359 128.0 +-2.5769749 -3.8021483 1.5014169 128.0 +-2.61374 -3.8058884 1.5090386 128.0 +-5.4520454 -7.8331151 3.0861015 128.0 +-2.7535701 -3.905833 1.5608655 128.0 +-2.7802527 -3.8927383 1.5623899 128.0 +-2.3763001 -3.2846565 1.3288637 128.0 +-2.4020414 -3.2776945 1.3319124 128.0 +-0 -0 0 128.0 +-5.4206061 -7.2070255 2.9178164 128.0 +-5.4664574 -7.1759019 2.918731 128.0 +-0 -0 0 128.0 +-5.7036586 -7.2996306 2.9964714 128.0 +-5.9753146 -7.5512609 3.1135395 128.0 +-6.0245142 -7.5181708 3.1150637 128.0 +-6.1197476 -7.5417004 3.1400626 128.0 +-0 -0 0 128.0 +-6.3885107 -7.678329 3.2284732 128.0 +-6.4864416 -7.6994343 3.253777 128.0 +-6.4773092 -7.5935578 3.2260344 128.0 +-6.5561557 -7.5911479 3.2418873 128.0 +-2.7019899 -3.0910623 1.3453264 128.0 +-2.7215369 -3.0751381 1.3456314 128.0 +-2.7638774 -3.084619 1.3569113 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.6149187 -9.1489391 4.053741 128.0 +-8.6610355 -9.0855675 4.0491681 128.0 +-8.718605 -9.0343084 4.0500827 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.3756571 -8.162446 3.77479 128.0 +-8.4516592 -8.1359968 3.7863748 128.0 +-9.9474792 -9.4587641 4.4250655 128.0 +-8.6140413 -8.0909986 3.8141174 128.0 +-9.9434042 -9.2252245 4.3729339 128.0 +-10.02159 -9.1839848 4.3823848 128.0 +-3.9385812 -3.566144 1.7318944 128.0 +-3.968909 -3.5495269 1.7355528 128.0 +-3.9977531 -3.5314109 1.7386014 128.0 +-0 -0 0 128.0 +-9.2197847 -7.9430208 3.9266124 128.0 +-9.9335499 -8.452199 4.2061729 128.0 +-9.9764738 -8.3837366 4.2025146 128.0 +-10.438169 -8.662941 4.3732386 128.0 +-10.695914 -8.7665482 4.4579911 128.0 +-0 -0 0 128.0 +-10.185168 -8.1411333 4.2049537 128.0 +-10.269321 -8.1056252 4.2189775 128.0 +-4.6064377 -3.5910547 1.9007891 128.0 +-10.820907 -8.3274641 4.401896 128.0 +-10.872558 -8.261488 4.4022007 128.0 +-9.9554472 -7.4688444 4.0150232 128.0 +-10.032469 -7.4308567 4.0275226 128.0 +-0 -0 0 128.0 +-10.250327 -7.399147 4.0778251 128.0 +-10.357589 -7.3803215 4.1022143 128.0 +-11.284574 -7.9367809 4.4473205 128.0 +-0 -0 0 128.0 +-11.168975 -7.6523805 4.3650074 128.0 +-11.40587 -7.7122555 4.4384794 128.0 +-11.30403 -7.542757 4.381165 128.0 +-5.5047865 -3.6252449 2.1410222 128.0 +-10.738415 -6.9765067 4.1302619 128.0 +-10.772199 -6.9048333 4.1269083 128.0 +-5.5842676 -3.5319576 2.1462049 128.0 +-5.602602 -3.4956107 2.1449854 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.1813025 -3.6489258 2.3288186 128.0 +-6.1838193 -3.5994339 2.321502 128.0 +-6.1752224 -3.5438881 2.3102219 128.0 +-6.188561 -3.5012424 2.3071733 128.0 +-6.1874671 -3.4506831 2.2989421 128.0 +-6.1551032 -3.3833003 2.2794306 128.0 +-6.0718975 -3.2892358 2.2416275 128.0 +-6.0003772 -3.2030473 2.2083974 128.0 +-6.0005288 -3.1559761 2.2013855 128.0 +-5.8447208 -3.0284307 2.1382785 128.0 +-6.3501582 -3.2409434 2.3132706 128.0 +-6.3129067 -3.1732697 2.2928448 128.0 +-6.2870169 -3.1120894 2.2766869 128.0 +-0 -0 0 128.0 +-7.3887095 -3.5449965 2.6544137 128.0 +-7.3974032 -3.4934947 2.6498408 128.0 +-7.3798323 -3.4299815 2.636122 128.0 +-7.3920774 -3.3806751 2.6330733 128.0 +-6.9749141 -3.1383619 2.4794216 128.0 +-6.9905558 -3.0939643 2.4782021 128.0 +-6.9910688 -3.0430334 2.4718001 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.0080495 -2.8981903 2.4586909 128.0 +-7.0071707 -2.8476083 2.4522886 128.0 +-7.0307035 -2.8070304 2.4544227 128.0 +-12.666869 -4.9663892 4.3863478 128.0 +-12.642886 -4.8677034 4.3677511 128.0 +-12.709933 -4.8041763 4.3805556 128.0 +-11.698878 -4.3402634 4.0253887 128.0 +-11.685016 -4.2537422 4.0116696 128.0 +-11.675018 -4.1691556 3.999475 128.0 +-7.5870075 -2.6573865 2.6044159 128.0 +-11.53703 -3.9609537 3.9357584 128.0 +-11.469042 -3.8591177 3.9046621 128.0 +-6.94628 -2.2904317 2.3724144 128.0 +-6.9556713 -2.2463043 2.3708899 128.0 +-12.455346 -3.9372015 4.212575 128.0 +-6.9927216 -2.1638737 2.3742435 128.0 +-7.0386844 -2.1308556 2.3852186 128.0 +-7.0799375 -2.0960035 2.3946693 128.0 +-7.1109633 -2.0578144 2.4007666 128.0 +-7.9959707 -2.2606962 2.6909974 128.0 +-13.022402 -3.5949106 4.3555565 128.0 +-9.5496731 -2.5736136 3.1970723 128.0 +-7.3914447 -1.9436845 2.4775925 128.0 +-7.5508456 -1.936121 2.5263708 128.0 +-8.2177134 -2.0533538 2.7425196 128.0 +-8.2107239 -1.9981657 2.7361174 128.0 +-9.6231976 -2.2792487 3.1967673 128.0 +-8.1445999 -1.876528 2.7065456 128.0 +-7.8882923 -1.7666138 2.6187446 128.0 +-11.726802 -2.5502198 3.8726516 128.0 +-13.212747 -2.7884226 4.3537273 128.0 +-13.333179 -2.7284837 4.3875675 128.0 +-12.601352 -2.4983318 4.1433711 128.0 +-12.594932 -2.4168382 4.1363592 128.0 +-10.431385 -1.9355965 3.4272447 128.0 +-11.850222 -2.1235769 3.884846 128.0 +-12.715178 -2.1980555 4.1616631 128.0 +-13.770296 -2.2934277 4.4997573 128.0 +-11.950309 -1.9151847 3.905272 128.0 +-11.968425 -1.842837 3.9074061 128.0 +-12.021905 -1.7756234 3.9211249 128.0 +-0 -0 0 128.0 +-13.627469 -1.8420259 4.432992 128.0 +-13.72164 -1.7690843 4.4598203 128.0 +-0 -0 0 128.0 +-14.678865 -1.7095648 4.7616358 128.0 +-14.672039 -1.6175876 4.7561483 128.0 +-14.490335 -1.5076376 4.6945658 128.0 +-13.573237 -1.3281609 4.3967133 128.0 +-13.692098 -1.2550136 4.4323821 128.0 +-13.375002 -1.1432647 4.3281188 128.0 +-13.346637 -1.058393 4.3168387 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-25.98941 -0.78004181 8.3541565 128.0 +-25.991804 -0.62051368 8.3535471 128.0 +-26.000835 -0.46112037 8.3553762 128.0 +-26.016508 -0.30172759 8.3596439 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.766324 12.839646 5.0033722 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.7504902 11.758425 4.3718767 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.6417823 12.405594 4.5220923 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.6469607 12.941532 4.6643558 128.0 +-0 0 0 128.0 +-7.4785275 13.018653 4.6587596 128.0 +-7.4060411 13.0776 4.6634722 128.0 +-7.3568697 13.178702 4.6832066 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.1233916 13.530318 4.7441764 128.0 +-7.0881987 13.666238 4.7762814 128.0 +-6.9998627 13.700963 4.7733359 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.0372348 14.650781 5.0407786 128.0 +-6.9500666 14.699733 5.0428405 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-5.1022782 13.478307 4.4731989 128.0 +-4.9742112 13.387532 4.4331412 128.0 +-4.8098054 13.192449 4.3592114 128.0 +-4.6814561 13.08944 4.3159142 128.0 +-4.5798593 13.057501 4.2961798 128.0 +-4.4778991 13.022098 4.2755618 128.0 +-4.3911977 13.029406 4.2690821 128.0 +-4.306673 13.042493 4.2646642 128.0 +-4.725348 14.610778 4.764205 128.0 +-4.057725 12.814669 4.1742401 128.0 +-3.9679856 12.803725 4.1627526 128.0 +-3.8932309 12.840635 4.1668763 128.0 +-3.7983394 12.810225 4.1494985 128.0 +-3.7233906 12.846141 4.1536222 128.0 +-3.6484044 12.882537 4.15804 128.0 +-3.9285307 14.203361 4.5733428 128.0 +-3.8726962 14.343446 4.6104546 128.0 +-3.7449298 14.216309 4.5624447 128.0 +-3.6476429 14.200145 4.5500741 128.0 +-0 0 0 128.0 +-3.4343948 14.085076 4.4997077 128.0 +-3.5341821 14.890638 4.7483001 128.0 +-3.2842953 14.225793 4.5312233 128.0 +-3.3135147 14.765047 4.6952825 128.0 +-3.2061641 14.708536 4.6711302 128.0 +-0 0 0 128.0 +-3.0369513 14.802941 4.6888027 128.0 +-0 0 0 128.0 +-2.8064919 14.586659 4.609571 128.0 +-2.710294 14.567904 4.5983787 128.0 +-0 0 0 128.0 +-2.521033 14.540746 4.5798225 128.0 +-2.4297178 14.543688 4.5759935 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.1777644 14.708683 4.5792336 128.0 +0 0 0 128.0 +1.2965311 14.026062 4.3727603 128.0 +1.3899771 14.092974 4.396029 128.0 +1.55581 14.841676 4.6307783 128.0 +1.5513223 13.971327 4.363924 128.0 +1.7614106 15.022683 4.6932206 128.0 +1.857887 15.046685 4.7041187 128.0 +1.9541097 15.065329 4.7135439 128.0 +2.0311949 14.94037 4.6784935 128.0 +2.1240399 14.936141 4.6811447 128.0 +2.1992283 14.812229 4.6466832 128.0 +0 0 0 128.0 +2.4728913 15.355879 4.8251748 128.0 +2.5464079 15.216944 4.7865901 128.0 +2.6976016 15.534343 4.8908577 128.0 +2.7321053 15.179847 4.7851176 128.0 +2.5446346 13.656819 4.3129687 128.0 +2.9085982 15.095443 4.7695069 128.0 +3.0104942 15.124174 4.784234 128.0 +3.186305 15.50981 4.9114752 128.0 +3.2879465 15.520819 4.921195 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.587065 15.51819 4.9403405 128.0 +3.5123358 14.780907 4.7138386 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.4848986 13.551285 4.3438954 128.0 +3.5575047 13.489912 4.3312302 128.0 +3.6314838 13.435541 4.3209214 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +5.1746893 14.740621 4.8463821 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.737032 -2.7818556 5.8696165 128.0 +0 -0 0 128.0 +17.777811 -2.8628545 5.5812612 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9562387 -2.2557745 2.5801854 128.0 +7.9450011 -2.3053493 2.581069 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9889736 -2.5322592 2.6143522 128.0 +7.97965 -2.5832908 2.6164141 128.0 +7.9772596 -2.6367025 2.6208322 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.3844395 -2.1409361 1.5351549 128.0 +4.4371457 -2.2004859 1.5578346 128.0 +4.3791757 -2.2053227 1.5425185 128.0 +4.3400345 -2.2191017 1.5336822 128.0 +4.3076758 -2.2360055 1.5272024 128.0 +4.2236986 -2.2254269 1.5027555 128.0 +4.1568708 -2.2229147 1.4841994 128.0 +4.1406331 -2.2470117 1.4833158 128.0 +4.1811829 -2.3023334 1.502461 128.0 +4.1644745 -2.3265474 1.5015773 128.0 +4.1642551 -2.3600652 1.5065845 128.0 +3.9641047 -2.2788999 1.4406074 128.0 +3.8955579 -2.271415 1.4211677 128.0 +3.8708532 -2.2889524 1.4173386 128.0 +3.855916 -2.3121691 1.4170442 128.0 +3.8024595 -2.3119576 1.4029062 128.0 +3.7825074 -2.3317356 1.4008443 128.0 +3.7875795 -2.367054 1.4079133 128.0 +4.1968269 -2.6587098 1.5625472 128.0 +4.3082967 -2.7665021 1.6093792 128.0 +3.985265 -2.5937788 1.4968647 128.0 +3.9493306 -2.6050301 1.4895011 128.0 +3.7966135 -2.5378797 1.4388402 128.0 +3.8616779 -2.6157868 1.4688833 128.0 +3.5902588 -2.4642386 1.3734521 128.0 +3.8230104 -2.6586142 1.466527 128.0 +3.6964684 -2.6044223 1.4249967 128.0 +4.0646834 -2.9012904 1.5704999 128.0 +3.8346074 -2.7727647 1.4897957 128.0 +3.673346 -2.690654 1.4347166 128.0 +4.0021486 -2.9693534 1.5672599 128.0 +3.9976058 -3.0041871 1.5725616 128.0 +3.9562831 -3.0112975 1.5637254 128.0 +4.0217481 -3.1002722 1.5964195 128.0 +4.0229888 -3.1407673 1.604372 128.0 +3.2232163 -2.5484624 1.2977551 128.0 +3.2313919 -2.5873027 1.3071804 128.0 +3.1627481 -2.5643547 1.286268 128.0 +3.1462154 -2.5831063 1.2859734 128.0 +3.3074219 -2.7495778 1.3569578 128.0 +3.2714784 -2.7538209 1.3492998 128.0 +3.2857964 -2.8004949 1.3619649 128.0 +3.2171791 -2.7762799 1.3410527 128.0 +3.7247493 -3.2542932 1.5557728 128.0 +3.4749281 -3.0738587 1.4612253 128.0 +3.9251683 -3.5152278 1.6553276 128.0 +3.957334 -3.5880263 1.6777127 128.0 +3.8697662 -3.552146 1.6503204 128.0 +4.385561 -4.0753961 1.8765277 128.0 +2.671092 -2.5131054 1.1616772 128.0 +2.6639261 -2.5373559 1.1652118 128.0 +2.6379874 -2.5437047 1.1607937 128.0 +2.6120713 -2.5498312 1.1563755 128.0 +2.5868592 -2.5564075 1.152252 128.0 +2.6285563 -2.6296761 1.1772879 128.0 +3.3839314 -3.4270124 1.5157152 128.0 +2.6961863 -2.7643425 1.221469 128.0 +2.7017198 -2.8042305 1.2314835 128.0 +2.6172571 -2.7501516 1.2014403 128.0 +2.5885501 -2.7536271 1.1961386 128.0 +3.1569047 -3.3996599 1.4612253 128.0 +3.1579502 -3.442909 1.4712396 128.0 +2.5483351 -2.8128459 1.2011458 128.0 +2.7783132 -3.1047146 1.3154275 128.0 +2.6731291 -3.0243313 1.27537 128.0 +2.6029811 -2.9816492 1.2512177 128.0 +2.5877576 -3.0011833 1.2526904 128.0 +2.559999 -3.0060923 1.2482723 128.0 +2.5230498 -2.9998047 1.239436 128.0 +2.5900929 -3.1181369 1.2806717 128.0 +2.8127735 -3.4287457 1.3981935 128.0 +3.2645602 -4.0295377 1.6297026 128.0 +3.240968 -4.0509849 1.6302916 128.0 +2.8688638 -3.631402 1.4576907 128.0 +2.6119728 -3.3483145 1.340169 128.0 +2.9500611 -3.8298528 1.5213115 128.0 +0 -0 0 128.0 +1.8847613 -2.5101967 0.99879628 128.0 +1.8761539 -2.5309258 1.0023308 128.0 +1.8402683 -2.5146298 0.99172729 128.0 +1.8304014 -2.5336199 0.99467272 128.0 +1.8331348 -2.5704768 1.0043925 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.6404116 -2.5918403 0.97670573 128.0 +1.5475332 -2.478653 0.93193555 128.0 +1.9142323 -3.1080976 1.1563755 128.0 +1.8911555 -3.113251 1.1540192 128.0 +1.8621931 -3.1084015 1.1481284 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.748014 -3.0435443 1.1130781 128.0 +1.6110997 -2.8454959 1.0391483 128.0 +1.5665916 -2.806932 1.022065 128.0 +0 -0 0 128.0 +1.1079054 -2.0438416 0.74784756 128.0 +1.1020997 -2.0632439 0.75226569 128.0 +1.0956521 -2.0818057 0.75638926 128.0 +1.0837377 -2.0901859 0.75697833 128.0 +1.0743706 -2.1036043 0.75933462 128.0 +1.0756189 -2.1383271 0.76905447 128.0 +1.5186296 -3.0653734 1.0856857 128.0 +1.4947635 -3.0643275 1.0821513 128.0 +1.4813122 -3.0846398 1.0859803 128.0 +1.4856415 -3.142915 1.1027691 128.0 +1.4707639 -3.1615024 1.1060091 128.0 +1.4728222 -3.2173867 1.1219143 128.0 +1.4518753 -3.2237494 1.1210307 128.0 +0.97791815 -2.207751 0.77553439 128.0 +0.96626228 -2.2180901 0.7770071 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1630541 -2.9628751 1.0123452 128.0 +0 -0 0 128.0 +0.90160137 -2.382591 0.81647557 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +2.8810444 -8.0558968 2.6682532 128.0 +1.015885 -2.8972676 0.97758931 128.0 +0.82560539 -2.4018967 0.81411922 128.0 +0.81970376 -2.4331791 0.82266092 128.0 +0.78917587 -2.3909762 0.80734479 128.0 +0.78948909 -2.4421458 0.82236636 128.0 +0.91989815 -2.9061122 0.97081488 128.0 +0.78294259 -2.5274127 0.84681326 128.0 +1.2776659 -4.2148852 1.3887682 128.0 +0.74072903 -2.4992659 0.83473706 128.0 +0.72059077 -2.4872425 0.82943535 128.0 +2.2100646 -7.8043094 2.5312917 128.0 +2.3881271 -8.6346941 2.7925494 128.0 +0.89615822 -3.3202722 1.091282 128.0 +0.87284702 -3.3146193 1.0877476 128.0 +0.78567523 -3.0598235 1.0049816 128.0 +0.77547342 -3.0988867 1.0158796 128.0 +0.73606771 -3.0200279 0.98937094 128.0 +0.72282028 -3.0468028 0.99643993 128.0 +0.70583183 -3.0586295 0.99879628 128.0 +0.74167317 -3.3062701 1.0756714 128.0 +0.72137231 -3.3107588 1.0756714 128.0 +0.60213345 -2.8476529 0.92840105 128.0 +1.6685641 -8.1339092 2.5904944 128.0 +1.6232822 -8.1674261 2.597858 128.0 +0.422849 -2.199481 0.72163343 128.0 +0.41843578 -2.2508888 0.73694956 128.0 +0.59259981 -3.2993255 1.0644789 128.0 +0.38914967 -2.2464383 0.73400414 128.0 +0.35299423 -2.1149387 0.69217938 128.0 +0.38248882 -2.3812504 0.77465075 128.0 +0.38975793 -2.5252175 0.81883186 128.0 +0.5704217 -3.8509967 1.2311889 128.0 +1.2401172 -8.7384653 2.7516081 128.0 +1.0354795 -7.6332326 2.4055228 128.0 +1.1378199 -8.7918825 2.7636843 128.0 +0.32017848 -2.601429 0.8391552 128.0 +0.29077274 -2.4884958 0.80351573 128.0 +0.27886546 -2.5206275 0.81294107 128.0 +0.26041195 -2.4937775 0.80410486 128.0 +0.81426293 -8.28055 2.5957961 128.0 +0.76765007 -8.3310671 2.6099341 128.0 +0.23485552 -2.7352273 0.87744546 128.0 +0.59098649 -7.4082093 2.3218732 128.0 +0.64077705 -8.7049952 2.721565 128.0 +0.58664429 -8.6982746 2.7183251 128.0 +0.15285935 -2.4988439 0.80292666 128.0 +0.13452321 -2.4453461 0.78613788 128.0 +0.11914203 -2.4384894 0.78378153 128.0 +0.10360449 -2.425808 0.77965796 128.0 +0.088332281 -2.4158931 0.77641803 128.0 +0.073419347 -2.4135239 0.77553439 128.0 +0.059075832 -2.4330361 0.78142518 128.0 +0 -0 0 128.0 +0.045765329 -3.794307 1.2008512 128.0 +0 -0 0 128.0 +-0.0007253568 -3.1093898 0.98966551 128.0 +-0.020329379 -3.1934214 1.0155851 128.0 +-0.040361222 -3.2285924 1.0264831 128.0 +-0.060436152 -3.2426162 1.0309012 128.0 +-0.081297159 -3.2813537 1.0429773 128.0 +-0.10216509 -3.3046727 1.0503409 128.0 +-0.12282832 -3.3144884 1.0535809 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.2775512 -8.0485611 2.7097833 128.0 +-3.316632 -8.0035791 2.7015362 128.0 +-3.3827543 -8.0235853 2.715085 128.0 +-1.419319 -3.3090436 1.1410594 128.0 +-1.4227886 -3.2617297 1.1280997 128.0 +-1.4443249 -3.2564328 1.1292778 128.0 +-1.4792018 -3.2806156 1.1404704 128.0 +-1.6505629 -3.6016188 1.2523959 128.0 +-3.4894292 -7.4933925 2.5790074 128.0 +-3.6272957 -7.6662054 2.6452789 128.0 +-1.7136794 -3.5645981 1.250334 128.0 +-3.7345147 -7.6485958 2.6547043 128.0 +-3.7890165 -7.6409483 2.660006 128.0 +-1.644487 -3.2652888 1.1581428 128.0 +-1.5914135 -3.1121857 1.10866 128.0 +-1.6012353 -3.0845499 1.1024746 128.0 +-1.6522002 -3.1355426 1.1236815 128.0 +-1.6781671 -3.1379871 1.1280997 128.0 +-1.6937439 -3.1209114 1.1257433 128.0 +-4.0716705 -7.3950267 2.6332028 128.0 +-4.3555675 -7.7970719 2.7840078 128.0 +-0 -0 0 128.0 +-4.8337994 -8.4091749 3.0208185 128.0 +-4.8934879 -8.3933916 3.0258257 128.0 +-4.3928924 -7.4295287 2.6915219 128.0 +-2.0969419 -3.4969201 1.2880353 128.0 +-1.9555382 -3.2161446 1.1914259 128.0 +-1.9747338 -3.2032716 1.1911314 128.0 +-2.0743611 -3.3191442 1.2376688 128.0 +-2.2056513 -3.4815421 1.3015841 128.0 +-2.3978665 -3.734122 1.3990772 128.0 +-2.4306366 -3.7345574 1.4046735 128.0 +-2.4708679 -3.7458992 1.4143933 128.0 +-2.4953988 -3.7330513 1.4152769 128.0 +-0 -0 0 128.0 +-5.3387132 -7.7790046 2.9392307 128.0 +-0 -0 0 128.0 +-2.3600671 -3.3495908 1.2942207 128.0 +-2.3689175 -3.3187115 1.2880353 128.0 +-0 -0 0 128.0 +-5.6849246 -7.7619238 2.9966662 128.0 +-2.4210625 -3.2630324 1.2836171 128.0 +-5.4525352 -7.256093 2.8287778 128.0 +-5.8169947 -7.6430397 2.9916589 128.0 +-5.9390388 -7.704844 3.0296547 128.0 +-5.9456296 -7.6162796 3.0093312 128.0 +-5.9691377 -7.5504165 2.9978442 128.0 +-6.2572284 -7.815794 3.1171331 128.0 +-6.1413813 -7.5753312 3.0370181 128.0 +-6.2853665 -7.6564288 3.0844393 128.0 +-6.2882457 -7.5648046 3.0632322 128.0 +-2.6516728 -3.1501064 1.300406 128.0 +-2.6622739 -3.1235936 1.2962824 128.0 +-2.6857598 -3.1122642 1.2983443 128.0 +-2.7016623 -3.0921276 1.2968715 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.6294432 -9.2868347 3.9386075 128.0 +-0 -0 0 128.0 +-8.7091465 -9.1449451 3.9235859 128.0 +-8.7684107 -9.0947742 3.9250586 128.0 +-8.8353977 -9.0524273 3.9300656 128.0 +-0 -0 0 128.0 +-9.7540913 -9.7514172 4.2823362 128.0 +-9.8185005 -9.696084 4.2843981 128.0 +-9.8798618 -9.6376581 4.2852817 128.0 +-8.506115 -8.1962585 3.6720481 128.0 +-8.5354805 -8.1241446 3.6632118 128.0 +-8.6185875 -8.1030407 3.6773498 128.0 +-8.6618423 -8.0441532 3.6746988 128.0 +-9.97367 -9.1491737 4.2028103 128.0 +-0 -0 0 128.0 +-8.7123108 -7.7973137 3.6349359 128.0 +-8.7241917 -7.7120614 3.6202087 128.0 +-10.469459 -9.1411285 4.3150306 128.0 +-10.559363 -9.1060505 4.3288736 128.0 +-9.2873468 -7.9101973 3.791337 128.0 +-10.018002 -8.4270353 4.0661435 128.0 +-10.575972 -8.7861738 4.2690821 128.0 +-9.7084179 -7.9652214 3.9017897 128.0 +-10.164737 -8.2357941 4.0634928 128.0 +-10.214333 -8.1726723 4.0631981 128.0 +-0 -0 0 128.0 +-10.328171 -8.0578804 4.0687943 128.0 +-10.767289 -8.2947168 4.2204828 128.0 +-10.600451 -8.0630236 4.1362443 128.0 +-9.9566584 -7.4773111 3.8690958 128.0 +-9.9670401 -7.3898945 3.855547 128.0 +-10.006798 -7.3246474 3.8534851 128.0 +-10.169287 -7.3481874 3.8982553 128.0 +-10.38923 -7.4105186 3.9645269 128.0 +-0 -0 0 128.0 +-11.24372 -7.8136635 4.2514095 128.0 +-11.370258 -7.7985811 4.2808638 128.0 +-11.389406 -7.7093825 4.2702603 128.0 +-11.143272 -7.4434743 4.1615748 128.0 +-10.787399 -7.1104064 4.0134206 128.0 +-5.6036668 -3.6442544 2.0915425 128.0 +-5.6275306 -3.6108348 2.0921314 128.0 +-5.658462 -3.5818598 2.0953715 128.0 +-5.6908708 -3.5536535 2.0992005 128.0 +-5.7443004 -3.5382161 2.1106875 128.0 +-5.7634521 -3.5014143 2.1098039 128.0 +-5.8577843 -3.509702 2.136018 128.0 +-5.830668 -3.4450092 2.1186402 128.0 +-0 -0 0 128.0 +-6.2462187 -3.5878906 2.251478 128.0 +-6.2257075 -3.5254788 2.2364564 128.0 +-5.9802098 -3.3381464 2.1422033 128.0 +-6.0767698 -3.3433137 2.1690066 128.0 +-6.088769 -3.3014088 2.1660612 128.0 +-6.0161982 -3.2144434 2.1336617 128.0 +-6.097537 -3.2099688 2.1551633 128.0 +-5.9321866 -3.076571 2.0909534 128.0 +-6.3747478 -3.2566457 2.2376347 128.0 +-7.3703284 -3.7084715 2.5742946 128.0 +-7.404932 -3.6691189 2.5784183 128.0 +-7.4006815 -3.6106229 2.5692875 128.0 +-7.4666286 -3.5862484 2.5843091 128.0 +-7.3589029 -3.4790924 2.540128 128.0 +-7.3896422 -3.4383085 2.5433679 128.0 +-6.4600458 -2.9576414 2.2211404 128.0 +-6.9799433 -3.1440406 2.3907957 128.0 +-6.9929876 -3.0984433 2.3887341 128.0 +-7.1494083 -3.1154194 2.4349768 128.0 +-7.1200786 -3.0507898 2.4187772 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.0537605 -2.8698699 2.3784251 128.0 +-7.076561 -2.8286633 2.3801923 128.0 +-7.0244017 -2.7579441 2.3572183 128.0 +-12.704009 -4.8984709 4.2278461 128.0 +-12.704332 -4.8092628 4.2181263 128.0 +-12.703146 -4.7199025 4.2081122 128.0 +-12.756108 -4.6507072 4.2160649 128.0 +-12.75831 -4.5630164 4.2075229 128.0 +-11.469485 -4.02282 3.7774935 128.0 +-11.64758 -4.0052018 3.8275654 128.0 +-7.6429982 -2.5756907 2.5171537 128.0 +-6.9898758 -2.3078907 2.3000772 128.0 +-6.992085 -2.2611351 2.2962482 128.0 +-0 -0 0 128.0 +-7.0503411 -2.1847801 2.3062625 128.0 +-7.0892205 -2.1492436 2.3145096 128.0 +-7.3661413 -2.1839514 2.3993375 128.0 +-7.9310336 -2.2986171 2.5763564 128.0 +-7.5312271 -2.1327176 2.4438131 128.0 +-7.5745659 -2.0948746 2.4535329 128.0 +-7.3058858 -1.9723755 2.363698 128.0 +-7.3723726 -1.9418744 2.3810759 128.0 +-0 -0 0 128.0 +-9.4592047 -2.3679128 3.0367236 128.0 +-9.4837685 -2.3123181 3.0399635 128.0 +-9.5740223 -2.2721813 3.064116 128.0 +-9.8820238 -2.2813325 3.1571908 128.0 +-13.232113 -2.9694583 4.2110577 128.0 +-10.272488 -2.2390759 3.2717671 128.0 +-10.337455 -2.1868832 3.287967 128.0 +-10.414336 -2.1364741 3.3079956 128.0 +-12.434939 -2.4716594 3.9389019 128.0 +-12.569051 -2.418247 3.9763086 128.0 +-11.968271 -2.2265737 3.7833843 128.0 +-12.024034 -2.1607032 3.7966387 128.0 +-12.027649 -2.0852516 3.7936933 128.0 +-12.058126 -2.0144045 3.7992897 128.0 +-0 -0 0 128.0 +-14.57052 -2.2507696 4.5754046 128.0 +-13.66805 -2.0255497 4.2899942 128.0 +-13.715229 -1.9466156 4.3008924 128.0 +-13.671044 -1.8548419 4.2835145 128.0 +-13.692594 -1.7722727 4.2867546 128.0 +-0 -0 0 128.0 +-13.730395 -1.606109 4.2920561 128.0 +-14.610034 -1.6182204 4.5618558 128.0 +-13.450628 -1.4062837 4.1995707 128.0 +-0 -0 0 128.0 +-13.39455 -1.2344506 4.1771855 128.0 +-13.406633 -1.1526494 4.178658 128.0 +-13.430601 -1.0717349 4.18396 128.0 +-0 -0 0 128.0 +-14.557347 -0.98206294 4.5282779 128.0 +-26.00354 -1.5943285 8.0609999 128.0 +-14.639867 -0.80729616 4.5503683 128.0 +-12.228724 -0.59903485 3.8048859 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.7189627 12.959994 4.817697 128.0 +-9.6523829 13.037113 4.824214 128.0 +-9.5772991 13.103063 4.8267641 128.0 +-9.5893011 13.289908 4.8735161 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.8926206 12.153441 4.3130579 128.0 +-0 0 0 128.0 +-7.7459593 12.254245 4.3147578 128.0 +-7.7122264 12.368276 4.3379922 128.0 +-7.690948 12.504407 4.3688769 128.0 +-7.6115913 12.547263 4.3674603 128.0 +-7.5580897 12.633235 4.3810611 128.0 +-7.4887142 12.693416 4.3858776 128.0 +-7.4270816 12.767312 4.3955116 128.0 +-7.3619609 12.835938 4.4034452 128.0 +-0 0 0 128.0 +-7.4401007 13.349206 4.5468183 128.0 +-7.3862133 13.445882 4.5641022 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.1606655 13.623705 4.5788364 128.0 +-0 0 0 128.0 +-7.4730501 14.65204 4.8910837 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.1655593 14.712099 4.8664322 128.0 +-7.0656176 14.7359 4.8599153 128.0 +-0 0 0 128.0 +-6.8878884 14.829325 4.8624654 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.9983459 13.480413 4.2793398 128.0 +-4.8834119 13.422506 4.2515717 128.0 +-4.7613211 13.341119 4.2167201 128.0 +-4.5878377 13.108478 4.1348333 128.0 +-4.5213218 13.177202 4.147584 128.0 +-4.3777361 13.018347 4.089498 128.0 +-4.3067751 13.072289 4.0979981 128.0 +-4.2947884 13.310217 4.1637344 128.0 +-4.2806196 13.550311 4.2300377 128.0 +-3.9872653 12.896462 4.0197949 128.0 +-3.9000096 12.894064 4.0115781 128.0 +-3.8118463 12.887403 4.0022273 128.0 +-3.7500072 12.970434 4.0206451 128.0 +-3.6729577 13.002429 4.0234785 128.0 +-3.954124 14.333823 4.424696 128.0 +-3.8785627 14.404118 4.4388633 128.0 +-3.7784154 14.383121 4.4252629 128.0 +-3.6596406 14.287117 4.3889947 128.0 +-3.9355171 15.766443 4.8327141 128.0 +-3.1995857 13.160494 4.033112 128.0 +-3.3443849 14.133675 4.3226914 128.0 +-3.3676915 14.632445 4.4677649 128.0 +-3.3000293 14.75204 4.4977994 128.0 +-3.2405918 14.915398 4.5411515 128.0 +-3.1863928 15.112359 4.5947037 128.0 +-3.0215967 14.779277 4.4884491 128.0 +-3.0813487 15.557671 4.7173924 128.0 +-2.8062553 14.639112 4.4354634 128.0 +-0 0 0 128.0 +-2.5934629 14.488361 4.3802109 128.0 +-2.5019054 14.488881 4.3756771 128.0 +-2.3854272 14.338405 4.3260918 128.0 +-2.2695274 14.178528 4.2739563 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-1.2493594 13.65657 4.0832644 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.82194906 14.652458 4.3674603 128.0 +0.91148144 14.641396 4.3657603 128.0 +1.0039891 14.674755 4.3773775 128.0 +1.1057233 14.825161 4.4238462 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.2319305 13.230565 3.9574587 128.0 +1.3975085 14.072098 4.2096367 128.0 +1.4841291 14.066119 4.2104869 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.8118825 13.895179 4.1716681 128.0 +2.0493684 14.997408 4.5037498 128.0 +2.1357868 14.945627 4.4921327 128.0 +2.2125866 14.832647 4.4623814 128.0 +0 0 0 128.0 +2.2259254 13.763005 4.1507006 128.0 +2.5470836 15.157303 4.5726027 128.0 +2.392179 13.720482 4.1464505 128.0 +2.7980623 15.485407 4.680841 128.0 +2.9059021 15.53676 4.7015252 128.0 +2.9492629 15.250294 4.6207714 128.0 +3.0704081 15.370152 4.6624231 128.0 +3.1026747 15.050463 4.5717525 128.0 +3.1913741 15.014257 4.5666523 128.0 +3.3560855 15.326021 4.6669569 128.0 +3.466305 15.377175 4.6887746 128.0 +3.5627592 15.36496 4.691608 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5118711 13.618104 4.1866856 128.0 +3.574518 13.517493 4.162601 128.0 +3.6907666 13.618411 4.2002864 128.0 +3.7950435 13.670357 4.223237 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +4.6297302 15.217217 4.7309933 128.0 +0 0 0 128.0 +4.7803955 15.046838 4.6961417 128.0 +4.8714466 15.013574 4.6950083 128.0 +4.9571424 14.964284 4.6890578 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.876446 -2.4430115 5.3622875 128.0 +18.946239 -2.7078075 5.686152 128.0 +17.829945 -2.659934 5.3577542 128.0 +17.813288 -2.7692864 5.3577542 128.0 +17.788385 -2.8773091 5.3554873 128.0 +18.720871 -3.146198 5.6402502 128.0 +18.704992 -3.261667 5.6413836 128.0 +18.70067 -3.3792775 5.6462002 128.0 +0 -0 0 128.0 +18.098507 -3.5003045 5.4778929 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9672441 -2.2640309 2.4786766 128.0 +7.943994 -2.3101952 2.4758432 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0000677 -2.5410511 2.5115447 128.0 +7.9606085 -2.5823934 2.5041778 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.3195152 -2.078958 1.4478642 128.0 +4.2911711 -2.0978374 1.4427639 128.0 +4.3117142 -2.140769 1.4538145 128.0 +4.3216157 -2.1788476 1.4614648 128.0 +4.2671943 -2.1843381 1.4478642 128.0 +4.2562633 -2.2118073 1.4487143 128.0 +4.2663598 -2.2504153 1.4566479 128.0 +4.3294001 -2.3177588 1.4824324 128.0 +4.3108845 -2.34199 1.4810157 128.0 +4.2913942 -2.3656178 1.4793156 128.0 +4.2801461 -2.3937781 1.480449 128.0 +4.1961551 -2.3806996 1.4569312 128.0 +4.1681709 -2.3987451 1.4523977 128.0 +4.172421 -2.4353991 1.4589148 128.0 +4.0592065 -2.4027977 1.4251965 128.0 +4.0904264 -2.4553103 1.4410639 128.0 +4.0457964 -2.4624054 1.4308635 128.0 +4.0077629 -2.4730768 1.4229298 128.0 +4.3859606 -2.7438896 1.5600692 128.0 +4.3609438 -2.7656116 1.5572357 128.0 +4.2591991 -2.7378485 1.5274844 128.0 +3.8309767 -2.4957988 1.3824114 128.0 +3.9860282 -2.6318533 1.4427639 128.0 +3.8582361 -2.5815694 1.4030956 128.0 +3.8375614 -2.6019642 1.4013954 128.0 +3.8207335 -2.6249189 1.4011121 128.0 +4.5018039 -3.1339235 1.6521566 128.0 +3.8650253 -2.7257929 1.42888 128.0 +3.9332666 -2.8102472 1.4597647 128.0 +4.1311064 -2.9901369 1.5382515 128.0 +3.6247454 -2.6574993 1.3594602 128.0 +3.6037524 -2.6762586 1.3577602 128.0 +3.9665594 -2.9837806 1.4980165 128.0 +4.0229216 -3.065038 1.5257844 128.0 +4.0139074 -3.0972831 1.5294678 128.0 +3.446327 -2.6930099 1.3237587 128.0 +3.1688387 -2.5075297 1.2254376 128.0 +3.1870623 -2.5539227 1.2381883 128.0 +3.1854775 -2.5849154 1.2435719 128.0 +3.1954844 -2.6257296 1.2534889 128.0 +3.2065833 -2.6679902 1.2639728 128.0 +3.2436802 -2.7327366 1.284657 128.0 +3.2049677 -2.7339103 1.2761565 128.0 +3.5886726 -3.0996578 1.4325635 128.0 +4.0329528 -3.5270383 1.6144716 128.0 +3.0464225 -2.6970534 1.2336547 128.0 +4.1578593 -3.727375 1.6813412 128.0 +3.0684769 -2.7845192 1.2557557 128.0 +3.1508851 -2.8948059 1.2957075 128.0 +3.1597414 -2.9389117 1.3064746 128.0 +4.2954803 -4.04531 1.7748454 128.0 +4.2754354 -4.0762239 1.7768288 128.0 +2.6842716 -2.5902238 1.1336336 128.0 +2.6580408 -2.5965898 1.1293834 128.0 +2.6393316 -2.6101522 1.12825 128.0 +3.0026782 -3.0063889 1.2869238 128.0 +3.4696555 -3.5171118 1.4912162 128.0 +2.8538125 -2.9282813 1.2396049 128.0 +3.6762414 -3.8192749 1.5977542 128.0 +3.927572 -4.1309452 1.7156261 128.0 +3.4525292 -3.6760163 1.5215341 128.0 +3.4018693 -3.6668932 1.5093503 128.0 +3.2601192 -3.5575731 1.4572146 128.0 +2.8399637 -3.137301 1.2818235 128.0 +3.3382707 -3.7338951 1.5113337 128.0 +3.3451245 -3.7881012 1.5246509 128.0 +2.7080014 -3.1044667 1.248672 128.0 +2.6275778 -3.049804 1.2209041 128.0 +2.5988746 -3.0541801 1.2163706 128.0 +2.7571039 -3.2808306 1.2976909 128.0 +3.0908144 -3.7243261 1.4614648 128.0 +2.5385704 -3.097048 1.2146705 128.0 +2.5894868 -3.1990547 1.2475387 128.0 +2.5524502 -3.1931541 1.2393216 128.0 +2.5351853 -3.2117674 1.240455 128.0 +2.5113051 -3.2219665 1.2384716 128.0 +1.9190785 -2.4931109 0.96107596 128.0 +1.8735843 -2.4651246 0.94634199 128.0 +1.8601491 -2.4788761 0.94719201 128.0 +1.8466158 -2.4925556 0.94804204 128.0 +1.835248 -2.5092592 0.9500255 128.0 +1.837772 -2.5453608 0.95909256 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.9223447 -3.1237788 1.1152161 128.0 +1.5062653 -2.4811699 0.88910609 128.0 +1.5269505 -2.5504458 0.90979034 128.0 +1.5141959 -2.5647233 0.91149044 128.0 +0 -0 0 128.0 +1.56371 -2.7245414 0.95965922 128.0 +0 -0 0 128.0 +1.5647026 -2.8055174 0.98062682 128.0 +1.5506905 -2.8209496 0.98261023 128.0 +1.5319828 -2.8278811 0.9817602 128.0 +1.5231775 -2.8533053 0.98714381 128.0 +1.1077017 -2.1053472 0.73439926 128.0 +1.0996126 -2.1214726 0.73751605 128.0 +1.0817825 -2.1187818 0.73439926 128.0 +1.1234246 -2.2342191 0.77038419 128.0 +1.5612063 -3.1539955 1.0712975 128.0 +1.5409846 -3.1617911 1.0707308 128.0 +1.220991 -2.5442207 0.86530507 128.0 +1.2008553 -2.5421243 0.86218822 128.0 +0 -0 0 128.0 +1.4728909 -3.220463 1.0778145 128.0 +1.4629334 -3.2513072 1.0848981 128.0 +1.4476104 -3.2707474 1.0882983 128.0 +0.97850591 -2.2470894 0.75565016 128.0 +0.98656887 -2.3041945 0.77208424 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1752385 -2.9432356 0.96787626 128.0 +0 -0 0 128.0 +1.160037 -3.0120349 0.98516035 128.0 +0.91958904 -2.4314556 0.79956883 128.0 +0.90631926 -2.4415483 0.80098552 128.0 +0 -0 0 128.0 +0.85501927 -2.3928723 0.78228468 128.0 +0.83081901 -2.3709173 0.77378434 128.0 +0.81687802 -2.3777847 0.774351 128.0 +0.81205189 -2.4118412 0.78341812 128.0 +1.0219465 -3.0990298 0.99564415 128.0 +0.93666822 -2.899883 0.93189132 128.0 +0.91452509 -2.8918583 0.92764115 128.0 +0.89138305 -2.8800066 0.9222576 128.0 +1.2306463 -4.0659328 1.2866404 128.0 +0.80077219 -2.7040379 0.86473835 128.0 +0.71945906 -2.4850223 0.79588532 128.0 +2.1892292 -7.7482171 2.4103901 128.0 +2.0297203 -7.3556457 2.2860014 128.0 +0.89944184 -3.336849 1.0525967 128.0 +0.88430941 -3.3627114 1.0588303 128.0 +0.79871422 -3.1144454 0.98147684 128.0 +0.77378452 -3.0960255 0.97439325 128.0 +0.72669005 -2.9851604 0.93925834 128.0 +0.90416867 -3.8173687 1.1905861 128.0 +0.8850292 -3.8415368 1.1962531 128.0 +0.75156671 -3.3555458 1.0474964 128.0 +0.62145966 -2.8558967 0.89505637 128.0 +0 -0 0 128.0 +1.6718701 -8.1748495 2.4968107 128.0 +0.66023725 -3.328764 1.0341792 128.0 +0.63474649 -3.3063796 1.0262455 128.0 +0.54858696 -2.9547117 0.91942412 128.0 +0.58939499 -3.2874873 1.0183119 128.0 +0.41556242 -2.4008093 0.75139999 128.0 +0.41403741 -2.4827805 0.77520108 128.0 +0 -0 0 128.0 +1.2914627 -8.394908 2.5410128 128.0 +1.1593639 -7.8561864 2.3778055 128.0 +1.1482676 -8.1261921 2.4562922 128.0 +0.36666042 -2.7091048 0.83923721 128.0 +0.33081689 -2.5619688 0.79475194 128.0 +0.39282465 -3.1988745 0.98374361 128.0 +0.28341195 -2.4286602 0.75395012 128.0 +0.26672214 -2.4141479 0.74913323 128.0 +0.25893331 -2.4834654 0.76925081 128.0 +0.2806693 -2.8639374 0.88173914 128.0 +0.68085206 -7.4364133 2.2378325 128.0 +0.73194492 -8.5756502 2.5744474 128.0 +0.20176166 -2.5378299 0.78370142 128.0 +0.18528001 -2.5265858 0.78001791 128.0 +0.16888015 -2.5142787 0.7760511 128.0 +0.47131333 -7.7658672 2.3302033 128.0 +0.17707089 -3.2343638 0.9885605 128.0 +0.14220688 -2.9240704 0.89647311 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.083876245 -2.7756937 0.85198778 128.0 +0.067228854 -2.7924547 0.85680467 128.0 +0.050580457 -2.820622 0.86502171 128.0 +0 -0 0 128.0 +0.018215202 -3.2506642 0.99196064 128.0 +-0.00169653 -3.2123542 0.98062682 128.0 +-0.024286063 -3.6217737 1.1016155 128.0 +-0.047392238 -3.6886821 1.1214497 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.3269718 -8.1557379 2.6339502 128.0 +-3.3258288 -8.0120592 2.5945652 128.0 +-3.3685825 -7.9764838 2.5897481 128.0 +-3.4159472 -7.9521399 2.5886147 128.0 +-1.4569523 -3.3368294 1.1072824 128.0 +-1.4411834 -3.2463222 1.0809313 128.0 +-1.4610754 -3.2374179 1.0809313 128.0 +-1.4925165 -3.2536671 1.0891483 128.0 +-3.5832558 -7.6828346 2.5361958 128.0 +-3.680037 -7.7655592 2.5704806 128.0 +-3.7076428 -7.7013588 2.55688 128.0 +-1.7033963 -3.4848371 1.1775522 128.0 +-3.8249123 -7.7016592 2.5721807 128.0 +-1.6367487 -3.2470446 1.1058657 128.0 +-1.6019918 -3.130245 1.0704474 128.0 +-1.6132047 -3.1050408 1.0653472 128.0 +-1.6375983 -3.1052616 1.0687474 128.0 +-4.052114 -7.5671806 2.5676472 128.0 +-4.2056441 -7.7393384 2.6339502 128.0 +-0 -0 0 128.0 +-1.9390413 -3.467521 1.2053201 128.0 +-1.8670125 -3.2912588 1.149501 128.0 +-4.3809109 -7.6105251 2.6260164 128.0 +-4.3951216 -7.5280161 2.6070323 128.0 +-2.0215995 -3.4155896 1.2041868 128.0 +-1.9956112 -3.3250182 1.1772689 128.0 +-1.9521285 -3.2078671 1.1410006 128.0 +-1.9763093 -3.2031727 1.1435508 128.0 +-2.1592572 -3.4519293 1.2345047 128.0 +-2.3222051 -3.662112 1.3127083 128.0 +-2.3539691 -3.6623132 1.3178084 128.0 +-5.3447008 -8.2014961 2.9238129 128.0 +-5.3848801 -8.1533442 2.9184294 128.0 +-0 -0 0 128.0 +-5.4226131 -7.9953818 2.8858447 128.0 +-5.456902 -7.9406204 2.8781943 128.0 +-5.4951081 -7.892036 2.8728106 128.0 +-5.5174427 -7.8213415 2.8594935 128.0 +-0 -0 0 128.0 +-2.3736527 -3.279799 1.2277044 128.0 +-5.5169611 -7.52282 2.787807 128.0 +-5.4257426 -7.30408 2.7198038 128.0 +-5.7011323 -7.5771527 2.8331423 128.0 +-2.434824 -3.1961524 1.2186373 128.0 +-2.4596636 -3.1879845 1.2211875 128.0 +-5.8845296 -7.5283484 2.8546765 128.0 +-5.9300165 -7.4913483 2.8543932 128.0 +-6.0844569 -7.5902462 2.9056787 128.0 +-2.5861244 -3.1869664 1.2441385 128.0 +-2.6111121 -3.1777055 1.2466886 128.0 +-2.6686037 -3.2073202 1.2642561 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.648077 -9.1809387 3.7579832 128.0 +-8.7174854 -9.1415815 3.7636502 128.0 +-8.7114611 -9.0237589 3.737299 128.0 +-0 -0 0 128.0 +-8.7952318 -8.8895912 3.7262485 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.9513187 -9.5760145 4.1118822 128.0 +-8.6480761 -8.220541 3.5568078 128.0 +-8.6976547 -8.166667 3.5565243 128.0 +-8.7490063 -8.1144495 3.557091 128.0 +-10.113316 -9.2647858 4.0838308 128.0 +-8.8386793 -7.9981103 3.5534074 128.0 +-8.9276342 -7.9795122 3.5692749 128.0 +-9.2453346 -8.1619329 3.6752462 128.0 +-9.3436747 -8.147274 3.6942306 128.0 +-9.2190723 -7.9396081 3.6262274 128.0 +-9.3406715 -7.9450202 3.654562 128.0 +-10.047233 -8.4402008 3.9084399 128.0 +-10.585999 -8.7824926 4.095448 128.0 +-9.7056675 -7.952239 3.7387156 128.0 +-10.178519 -8.2357388 3.8999395 128.0 +-10.049035 -8.0294695 3.8319366 128.0 +-11.558808 -9.1199656 4.3816276 128.0 +-10.697592 -8.334589 4.0382123 128.0 +-11.69418 -8.9961452 4.3906946 128.0 +-11.75145 -8.9259615 4.3915448 128.0 +-10.062725 -7.5465703 3.7477827 128.0 +-10.123486 -7.4955258 3.7531664 128.0 +-10.190192 -7.4485464 3.7608168 128.0 +-10.328256 -7.4526505 3.7945349 128.0 +-10.291766 -7.3307247 3.7647836 128.0 +-10.321647 -7.256959 3.7593999 128.0 +-5.8242869 -4.0424013 2.1261942 128.0 +-5.8371115 -3.9984608 2.1219442 128.0 +-10.728403 -7.2515345 3.8574376 128.0 +-5.8705797 -3.9164195 2.1165605 128.0 +-5.8520408 -3.8523841 2.1015432 128.0 +-5.8321338 -3.788202 2.0862424 128.0 +-11.435295 -7.3269711 4.0441628 128.0 +-11.452474 -7.2392478 4.0345287 128.0 +-11.512954 -7.1789875 4.0401959 128.0 +-6.5392981 -4.0227132 2.2998853 128.0 +-6.0046306 -3.6433282 2.1066434 128.0 +-6.5758252 -3.9347785 2.2956352 128.0 +-5.9563732 -3.5147972 2.0749087 128.0 +-5.9338903 -3.4526289 2.0598912 128.0 +-5.9716024 -3.4256954 2.0655582 128.0 +-6.2012224 -3.5069778 2.1363947 128.0 +-6.2125716 -3.4632599 2.1329947 128.0 +-6.9826617 -3.8364241 2.3854558 128.0 +-6.107852 -3.3073297 2.0836923 128.0 +-0 -0 0 128.0 +-6.109776 -3.2120523 2.0709419 128.0 +-5.9956598 -3.1052814 2.0264566 128.0 +-6.3503585 -3.2396522 2.1378114 128.0 +-6.4532466 -3.2423768 2.1652961 128.0 +-6.4334769 -3.1831622 2.1522622 128.0 +-6.4770298 -3.1553836 2.1601958 128.0 +-7.4457979 -3.5707812 2.4713097 128.0 +-7.3478794 -3.46855 2.4322078 128.0 +-7.3733726 -3.4254186 2.4336245 128.0 +-6.9816704 -3.191582 2.299602 128.0 +-7.0054955 -3.1506493 2.3010187 128.0 +-7.6649718 -3.3907351 2.5078611 128.0 +-7.6592493 -3.332166 2.4993608 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.1318207 -2.8967946 2.3058355 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.850957 -4.7650113 4.0809975 128.0 +-12.948448 -4.7109833 4.1025319 128.0 +-12.820848 -4.5756907 4.0535131 128.0 +-12.808854 -4.4830012 4.0410457 128.0 +-7.2599745 -2.4915791 2.2993186 128.0 +-9.5749588 -3.2201416 3.0161836 128.0 +-7.0577278 -2.3257976 2.2270653 128.0 +-7.0645642 -2.280093 2.2247987 128.0 +-7.0948825 -2.2419014 2.2298989 128.0 +-0 -0 0 128.0 +-7.8424673 -2.3725576 2.4523253 128.0 +-7.8154931 -2.3121557 2.4395747 128.0 +-7.5402422 -2.1805449 2.3506043 128.0 +-7.4971814 -2.1183398 2.3333201 128.0 +-12.676182 -3.4969888 3.916657 128.0 +-9.3812017 -2.526479 2.9019954 128.0 +-7.9189153 -2.0808289 2.4506254 128.0 +-9.4096413 -2.4106913 2.9014287 128.0 +-7.8470836 -1.9593472 2.4211574 128.0 +-7.9372368 -1.9301856 2.4449584 128.0 +-9.8835888 -2.3390706 3.0323343 128.0 +-9.543541 -2.196888 2.9249463 128.0 +-9.6682129 -2.1631935 2.9586644 128.0 +-9.5866499 -2.0832725 2.9300466 128.0 +-13.307814 -2.8060536 4.0498295 128.0 +-16.924376 -3.4599841 5.1353278 128.0 +-12.136136 -2.403944 3.6868634 128.0 +-12.683763 -2.4315834 3.8472373 128.0 +-12.704102 -2.3547597 3.8489373 128.0 +-13.471644 -2.4115512 4.0750475 128.0 +-13.541 -2.3383057 4.0914812 128.0 +-13.977021 -2.3253353 4.2178535 128.0 +-14.432317 -2.3101296 4.3498926 128.0 +-13.70118 -2.1070209 4.127183 128.0 +-14.568687 -2.1489339 4.3824778 128.0 +-13.566472 -1.916208 4.0795808 128.0 +-14.116856 -1.9056277 4.2402382 128.0 +-12.166956 -1.5666224 3.6559787 128.0 +-13.998295 -1.7150004 4.1983027 128.0 +-0 -0 0 128.0 +-13.447279 -1.4802841 4.0285788 128.0 +-13.435122 -1.3955672 4.0223451 128.0 +-14.478093 -1.4140753 4.3294921 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.183281 -0.96410418 3.6423781 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.221466 -0.66581059 3.6477618 128.0 +-12.225322 -0.59080851 3.6477618 128.0 +-12.2268 -0.51570362 3.6471951 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.6164227 12.969851 4.6066418 128.0 +-9.5917854 13.103917 4.6330857 128.0 +-9.6295414 13.326287 4.6903353 128.0 +-9.516861 13.342043 4.6753411 128.0 +-0 0 0 128.0 +-9.3463774 13.449134 4.6723423 128.0 +-0 0 0 128.0 +-9.6773624 14.296613 4.9234219 128.0 +-8.1625042 12.219631 4.1955366 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.9003439 12.311934 4.1767263 128.0 +-7.8272238 12.364243 4.1780896 128.0 +-7.7838283 12.464264 4.1955366 128.0 +-0 0 0 128.0 +-7.6947346 12.664915 4.2307043 128.0 +-7.6010537 12.685481 4.2219806 128.0 +-7.5338421 12.750104 4.2279782 128.0 +-7.4617643 12.806898 4.2315221 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.355269 13.564284 4.4038157 128.0 +-7.2678204 13.601523 4.4013619 128.0 +-7.1766062 13.63139 4.3967276 128.0 +-7.0941596 13.67773 4.3975453 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.1955614 14.747843 4.6813388 128.0 +-7.1049347 14.791717 4.6813388 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-5.0276985 13.531475 4.1219306 128.0 +-4.9406214 13.551223 4.118659 128.0 +-0 0 0 128.0 +-4.6236391 13.182308 3.9899843 128.0 +-4.5279608 13.167668 3.9771714 128.0 +-4.4400125 13.174234 3.9709013 128.0 +-4.335259 13.129056 3.9493644 128.0 +-4.7209597 14.597211 4.3787351 128.0 +-4.3446136 13.720598 4.109663 128.0 +-4.3056321 13.893118 4.1530089 128.0 +-4.1831722 13.796819 4.1167507 128.0 +-3.8421361 12.957918 3.8613095 128.0 +-3.8003252 13.111546 3.8997483 128.0 +-4.3724041 15.438703 4.57829 128.0 +-3.6919811 13.348217 3.9559073 128.0 +-3.8966897 14.432302 4.2675076 128.0 +-3.8119831 14.470825 4.2718692 128.0 +-0 0 0 128.0 +-3.5848112 14.319585 4.2143474 128.0 +-3.490726 14.316073 4.2069869 128.0 +-3.1755037 13.37958 3.9281003 128.0 +-3.4455223 14.924057 4.3716469 128.0 +-3.3422968 14.893285 4.3566527 128.0 +-3.2500305 14.909753 4.3555627 128.0 +-3.1576881 14.925649 4.3544722 128.0 +-3.1731818 15.466881 4.5055013 128.0 +-2.8992507 14.585812 4.2454257 128.0 +-0 0 0 128.0 +-2.7020895 14.523811 4.2176189 128.0 +-2.5974345 14.453945 4.1928105 128.0 +-0 0 0 128.0 +-2.4078159 14.41261 4.172092 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.91078293 14.79216 4.2309771 128.0 +1.0014638 14.785334 4.2307043 128.0 +1.1006011 14.893091 4.2631454 128.0 +0 0 0 128.0 +1.2901394 14.958025 4.2857728 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.4857255 14.172935 4.0695882 128.0 +1.6060988 14.464771 4.1554623 128.0 +0 0 0 128.0 +1.7389249 14.08303 4.0524135 128.0 +1.7964736 13.849782 3.9888937 128.0 +0 0 0 128.0 +2.1522479 15.134535 4.3631959 128.0 +2.2159684 14.924995 4.3070369 128.0 +0 0 0 128.0 +2.3809066 14.784592 4.274868 128.0 +2.3205879 13.86727 4.0156102 128.0 +2.4023404 13.833811 4.0101581 128.0 +2.4779761 13.767676 3.9954367 128.0 +2.8846943 15.482171 4.4940515 128.0 +2.9255798 15.183589 4.4130845 128.0 +3.0252626 15.198379 4.422626 128.0 +2.8296247 13.773401 4.015883 128.0 +3.2428434 15.307884 4.4654269 128.0 +3.0263317 13.865479 4.0529585 128.0 +3.4251778 15.243468 4.4586115 128.0 +3.2231205 13.943537 4.0867629 128.0 +3.3017211 13.89448 4.0783119 128.0 +3.3755064 13.827225 4.0646811 128.0 +0 0 0 128.0 +3.5245674 13.705558 4.0415087 128.0 +3.5649309 13.518076 3.9929831 128.0 +3.6917372 13.658487 4.0406909 128.0 +3.809104 13.757047 4.0764036 128.0 +3.9052517 13.77507 4.0886712 128.0 +4.4867039 15.463987 4.5941014 128.0 +4.5659018 15.383592 4.5785623 128.0 +0 0 0 128.0 +4.6998968 15.150887 4.5264926 128.0 +4.7913194 15.117177 4.5251298 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.924847 -2.2188385 5.4307604 128.0 +18.938566 -2.3383358 5.4386663 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.909508 -2.6590116 5.1619611 128.0 +17.859577 -2.7637031 5.1524196 128.0 +17.287548 -2.7839158 4.9932117 128.0 +0 -0 0 128.0 +17.191416 -2.9853172 4.9757643 128.0 +17.971968 -3.2345657 5.205852 128.0 +18.079472 -3.3685672 5.2426553 128.0 +18.457148 -3.5562458 5.3576994 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9619851 -2.2574034 2.3766422 128.0 +7.9489083 -2.3064828 2.3769147 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0192308 -2.5418482 2.4153538 128.0 +7.9641228 -2.578265 2.4036312 128.0 +7.9892616 -2.6406689 2.4158988 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.3128614 -2.1388626 1.3957695 128.0 +4.3761382 -2.2037935 1.4200323 128.0 +4.34026 -2.2192171 1.4129442 128.0 +4.4170823 -2.2927847 1.4418415 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.3504529 -2.360853 1.4342083 128.0 +14.025976 -7.7222481 4.5684757 128.0 +4.3161139 -2.411247 1.4325726 128.0 +4.2384567 -2.4021108 1.4121264 128.0 +13.985727 -8.0390434 4.6025529 128.0 +4.5037341 -2.6259599 1.5089051 128.0 +4.4726291 -2.644731 1.503998 128.0 +4.2236147 -2.5326138 1.4271203 128.0 +3.6703188 -2.2316296 1.2488294 128.0 +3.5861182 -2.2106946 1.2253844 128.0 +3.5765657 -2.2352061 1.2267474 128.0 +4.3536348 -2.7580314 1.4920028 128.0 +4.377111 -2.8106828 1.5056337 128.0 +3.9146399 -2.547821 1.3551496 128.0 +3.9302571 -2.5924511 1.3657817 128.0 +3.8710806 -2.5876486 1.3510604 128.0 +3.8527405 -2.6097341 1.3502425 128.0 +3.457459 -2.3731065 1.2199321 128.0 +3.5589542 -2.4750156 1.2600065 128.0 +3.4587526 -2.4369652 1.230564 128.0 +4.3044076 -3.0723729 1.5301691 128.0 +4.2199802 -3.0513761 1.5072694 128.0 +3.6880937 -2.7014544 1.3270701 128.0 +3.6351304 -2.6970921 1.3142571 128.0 +3.691586 -2.7742512 1.3401557 128.0 +3.0390217 -2.3132427 1.1138843 128.0 +3.0415356 -2.344768 1.1198819 128.0 +3.0619786 -2.3906188 1.1324222 128.0 +3.0615931 -2.4206982 1.137602 128.0 +3.0887439 -2.4731095 1.1528685 128.0 +3.1482506 -2.5526023 1.1801301 128.0 +3.1600444 -2.5944579 1.1902169 128.0 +3.1825407 -2.6457787 1.2043929 128.0 +3.2023163 -2.6956134 1.2177511 128.0 +3.1930392 -2.7214518 1.2204772 128.0 +3.6388521 -3.1400979 1.3935885 128.0 +3.9383357 -3.4408731 1.5135396 128.0 +3.0624082 -2.7090123 1.1902169 128.0 +3.0292428 -2.7129903 1.1839467 128.0 +2.99757 -2.7179561 1.1782218 128.0 +3.2728775 -3.004329 1.2905396 128.0 +3.9669669 -3.6864569 1.5661545 128.0 +3.0963039 -2.9130831 1.236289 128.0 +2.6470878 -2.5213211 1.0675396 128.0 +2.6308749 -2.5368481 1.0672671 128.0 +2.9347458 -2.8647504 1.1937609 128.0 +2.8171885 -2.783977 1.1539589 128.0 +2.8694389 -2.8706112 1.1817658 128.0 +3.3730147 -3.4159586 1.3919528 128.0 +3.3654282 -3.4503646 1.3974051 128.0 +3.3028021 -3.4279957 1.3805029 128.0 +3.2757359 -3.4419248 1.3780494 128.0 +2.8676879 -3.0505054 1.2180237 128.0 +2.8842726 -3.1061122 1.2327449 128.0 +2.8918262 -3.1528196 1.2439222 128.0 +2.9053748 -3.2068648 1.2578256 128.0 +7.0686097 -7.8981495 3.0350101 128.0 +2.8664401 -3.2429976 1.2580982 128.0 +2.3453004 -2.6865408 1.0421864 128.0 +2.8100903 -3.2589855 1.2510103 128.0 +2.9509993 -3.4651358 1.3213452 128.0 +2.3728733 -2.8212864 1.0762633 128.0 +2.5989923 -3.1288486 1.1842194 128.0 +2.5504515 -3.1090345 1.1711338 128.0 +3.6415894 -4.4948444 1.6708391 128.0 +2.5006859 -3.1258249 1.165954 128.0 +2.48981 -3.1516786 1.1697707 128.0 +2.4804862 -3.1797919 1.1744051 128.0 +2.4491849 -3.1797087 1.1689528 128.0 +2.4389484 -3.2069287 1.1733147 128.0 +1.8824648 -2.5071387 0.92005432 128.0 +1.8842374 -2.5418277 0.92823279 128.0 +1.8509883 -2.5292745 0.91978168 128.0 +1.8467046 -2.5561807 0.92523402 128.0 +1.8645091 -2.6144595 0.94159096 128.0 +1.879451 -2.6699047 0.9568575 128.0 +2.0705838 -2.9800298 1.0599064 128.0 +2.0577018 -3.0006127 1.0626326 128.0 +1.995026 -2.9478493 1.040278 128.0 +1.9950718 -2.9872363 1.049547 128.0 +1.8930405 -2.8725004 1.0064737 128.0 +1.8423309 -2.8332503 0.98929882 128.0 +1.8909039 -2.9473376 1.023921 128.0 +1.8717545 -2.9572587 1.0233759 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.5543251 -2.6683521 0.90669614 128.0 +1.5455915 -2.6911874 0.91105795 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.5033892 -2.773133 0.92550665 128.0 +1.4836246 -2.7772141 0.92387092 128.0 +0 -0 0 128.0 +1.1291419 -2.1777213 0.72676951 128.0 +1.1175095 -2.1880355 0.72785997 128.0 +1.1243898 -2.2352448 0.74067289 128.0 +1.0982645 -2.2171018 0.73276705 128.0 +1.5453639 -3.1680307 1.0304638 128.0 +1.5242298 -3.1739843 1.0293734 128.0 +1.266603 -2.6796665 0.87152863 128.0 +1.6670179 -3.5832407 1.1515054 128.0 +1.6401935 -3.5829046 1.148234 128.0 +1.4790728 -3.284121 1.0522732 128.0 +1.4452511 -3.2623477 1.0427315 128.0 +0 -0 0 128.0 +0.9598158 -2.240736 0.72240764 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1553363 -3.0528092 0.95658487 128.0 +0.91841763 -2.4727221 0.7791118 128.0 +0.91179717 -2.5018125 0.78619981 128.0 +0.85333306 -2.3868732 0.74994189 128.0 +0.83835298 -2.3911564 0.74966925 128.0 +0.82429111 -2.3980751 0.75021446 128.0 +0.81079048 -2.4067345 0.75130492 128.0 +1.0735724 -3.2521722 1.0021118 128.0 +0.8247202 -2.5510712 0.79137951 128.0 +0.87179244 -2.754205 0.85026461 128.0 +1.2405409 -4.0038204 1.2193868 128.0 +0 -0 0 128.0 +0.77253324 -2.6065168 0.80201155 128.0 +0 -0 0 128.0 +2.3042157 -8.1367207 2.4278941 128.0 +0.91834593 -3.3213332 1.0081093 128.0 +0.89970505 -3.3334074 1.0100176 128.0 +0.87653852 -3.3286312 1.0070188 128.0 +0.79648799 -3.1019127 0.93913746 128.0 +0.77370119 -3.0918086 0.93477559 128.0 +0.73169333 -3.0020897 0.90724134 128.0 +1.8302795 -7.712358 2.2776825 128.0 +0.88679457 -3.8423679 1.1490518 128.0 +0.74394536 -3.3163939 0.9947511 128.0 +0.63648468 -2.9213777 0.87888926 128.0 +1.8113401 -8.5625734 2.5115871 128.0 +1.6800596 -8.1899338 2.4006324 128.0 +0.63381803 -3.1902165 0.95331347 128.0 +0.52387464 -2.7244852 0.81782329 128.0 +0.47071487 -2.5318496 0.76139176 128.0 +0.47440308 -2.6416955 0.79219735 128.0 +0.44980147 -2.5962098 0.77829391 128.0 +0.43703422 -2.6179001 0.78374624 128.0 +0.42126834 -2.6224325 0.78429151 128.0 +0.40693232 -2.636378 0.78756291 128.0 +0.38905534 -2.6274045 0.78429151 128.0 +0.38185152 -2.6926119 0.80228412 128.0 +1.1536301 -8.5038748 2.4633341 128.0 +0.39238527 -3.0339136 0.89851761 128.0 +1.0489523 -8.515481 2.4627888 128.0 +0.28390288 -2.4297805 0.7248612 128.0 +0.82794392 -7.476769 2.1631837 128.0 +0.28038365 -2.6847475 0.79655921 128.0 +0.73556495 -7.4806213 2.1615481 128.0 +0.23231331 -2.5241578 0.74994189 128.0 +0.21871717 -2.5475831 0.75621206 128.0 +0.20407666 -2.5613451 0.75975603 128.0 +0.19047691 -2.5913346 0.7679345 128.0 +0.21694233 -3.2202549 0.94622546 128.0 +0 -0 0 128.0 +0.16993554 -3.0872214 0.90778661 128.0 +0.15584125 -3.1871858 0.93586606 128.0 +0.13228503 -3.0948417 0.90942228 128.0 +0.097263031 -2.6590855 0.78565454 128.0 +0.077886924 -2.5596182 0.75730252 128.0 +0.062415004 -2.5696664 0.76002866 128.0 +0.043020103 -2.3718369 0.70386976 128.0 +0.030525491 -2.5413773 0.75185019 128.0 +0.017621834 -2.9879336 0.87834406 128.0 +-0.00078264094 -3.634532 1.061542 128.0 +-0.018985949 -2.9783039 0.87561786 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.071123593 -2.868763 0.84481227 128.0 +-0.087480702 -2.8278825 0.8333624 128.0 +-0.10557649 -2.8474834 0.83908731 128.0 +-0.12267359 -2.8381307 0.8366338 128.0 +-0.1396599 -2.828676 0.83418024 128.0 +-0.15781184 -2.8421757 0.83826947 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.5506976 -3.7415516 1.1793122 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.4637685 -7.9420433 2.486779 128.0 +-1.5437759 -3.4807246 1.110613 128.0 +-1.4638876 -3.2466414 1.0408232 128.0 +-1.4817772 -3.2332246 1.0394602 128.0 +-1.5446359 -3.3165262 1.0683575 128.0 +-3.5942547 -7.5963659 2.4129002 128.0 +-1.7456803 -3.6311791 1.1733147 128.0 +-0 -0 0 128.0 +-3.8856223 -7.8357863 2.5099514 128.0 +-1.6880449 -3.3517997 1.0950738 128.0 +-1.6047877 -3.1383476 1.0304638 128.0 +-1.6333209 -3.1463749 1.0361887 128.0 +-1.6400403 -3.1124594 1.0285555 128.0 +-4.2715859 -7.9886599 2.5985518 128.0 +-4.3228173 -7.9665279 2.5999148 128.0 +-0 -0 0 128.0 +-4.3780274 -7.8372831 2.5753794 128.0 +-0 -0 0 128.0 +-1.906913 -3.3169138 1.1157926 128.0 +-4.5055542 -7.7279406 2.5663829 128.0 +-2.0659678 -3.4936893 1.1817658 128.0 +-1.9488441 -3.2498949 1.1054332 128.0 +-1.9642504 -3.2304766 1.1029797 128.0 +-2.2187715 -3.5992231 1.2297462 128.0 +-2.2688546 -3.6304178 1.2447401 128.0 +-2.26998 -3.5831034 1.2335628 128.0 +-5.2745333 -8.2147226 2.7978342 128.0 +-5.315393 -8.1676884 2.792927 128.0 +-2.1490958 -3.2579932 1.137602 128.0 +-2.1514037 -3.2183478 1.1286056 128.0 +-2.1721895 -3.2066798 1.1291509 128.0 +-2.1891026 -3.1893246 1.1277878 128.0 +-2.2152216 -3.1853118 1.1310592 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.384624 -7.3518734 2.6138182 128.0 +-0 -0 0 128.0 +-2.4286368 -3.2316103 1.1771313 128.0 +-5.6967468 -7.4850311 2.6969662 128.0 +-2.5039389 -3.2480483 1.1937609 128.0 +-2.5161252 -3.2227638 1.1902169 128.0 +-2.5388355 -3.2110384 1.1915799 128.0 +-2.5849464 -3.2284484 1.203575 128.0 +-2.6089482 -3.2177584 1.2054833 128.0 +-2.6310847 -3.2046642 1.2065738 128.0 +-2.6611536 -3.2010384 1.2112083 128.0 +-6.6692491 -7.9237733 2.9663107 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.7789488 -9.4477406 3.6860173 128.0 +-8.769515 -9.3222141 3.6582105 128.0 +-9.2166872 -9.6779146 3.8185089 128.0 +-8.7730713 -9.0996084 3.6132288 128.0 +-8.8273964 -9.0442295 3.6126835 128.0 +-8.9449358 -9.0528612 3.6377642 128.0 +-9.0146036 -9.0120907 3.6434891 128.0 +-9.0984821 -8.9850035 3.6549392 128.0 +-9.1410456 -8.916914 3.650032 128.0 +-0 -0 0 128.0 +-10.042142 -9.5582924 3.9599965 128.0 +-0 -0 0 128.0 +-10.131892 -9.4094601 3.9496372 128.0 +-8.7892027 -8.062561 3.4112203 128.0 +-0 -0 0 128.0 +-8.8860474 -7.9528136 3.410675 128.0 +-9.0860519 -8.0319624 3.4679244 128.0 +-11.128164 -9.7162924 4.2176189 128.0 +-9.3893967 -8.0970535 3.5448022 128.0 +-9.526063 -8.1135292 3.5772436 128.0 +-9.3827686 -7.892652 3.5058181 128.0 +-10.539599 -8.7559557 3.914197 128.0 +-9.5830488 -7.8623562 3.5439844 128.0 +-9.6886711 -7.8500471 3.5649757 128.0 +-0 -0 0 128.0 +-11.500927 -9.086977 4.1849051 128.0 +-10.672756 -8.3267374 3.8673069 128.0 +-11.752573 -9.0537872 4.2353387 128.0 +-0 -0 0 128.0 +-11.826634 -8.8817272 4.2225261 128.0 +-10.118818 -7.5024357 3.6009612 128.0 +-10.232981 -7.4902167 3.6249514 128.0 +-10.348151 -7.4774408 3.6492143 128.0 +-12.15853 -8.6726217 4.2634182 128.0 +-12.212302 -8.5984087 4.2636909 128.0 +-11.379963 -7.9083495 3.9583609 128.0 +-10.6539 -7.307219 3.6922874 128.0 +-10.743153 -7.2719131 3.7075541 128.0 +-10.849173 -7.2470093 3.7285454 128.0 +-11.62283 -7.6611085 3.9760809 128.0 +-11.674459 -7.5927954 3.9777167 128.0 +-5.8753433 -3.7698607 2.0097008 128.0 +-5.9097447 -3.7409444 2.0135176 128.0 +-5.9480925 -3.7142956 2.0186973 128.0 +-5.9724092 -3.6787384 2.0192425 128.0 +-5.9940467 -3.6415234 2.0189698 128.0 +-6.0121517 -3.6022034 2.0176067 128.0 +-6.0275145 -3.5613301 2.0154259 128.0 +-6.0417714 -3.5199194 2.0129724 128.0 +-6.0565815 -3.4789474 2.0107913 128.0 +-6.0761395 -3.4407711 2.010246 128.0 +-6.1114182 -3.4113967 2.0148807 128.0 +-6.4036613 -3.5231862 2.102663 128.0 +-6.2128711 -3.3687074 2.0342364 128.0 +-6.7535949 -3.6084867 2.20135 128.0 +-6.2690663 -3.3002803 2.0391433 128.0 +-6.1781697 -3.2041619 2.0037034 128.0 +-6.214849 -3.174948 2.0091558 128.0 +-6.2170243 -3.1281049 2.0037034 128.0 +-6.8145542 -3.3765543 2.1866288 128.0 +-6.8195801 -3.3270831 2.1817217 128.0 +-7.3584838 -3.5343001 2.3447461 128.0 +-7.3330626 -3.4668744 2.3300247 128.0 +-7.354197 -3.4218142 2.3300247 128.0 +-7.0050244 -3.2071881 2.2147081 128.0 +-7.0210629 -3.162565 2.2136178 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.2171459 -3.0401082 2.2506936 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-13.11417 -5.0566363 4.0142469 128.0 +-13.173744 -4.9869752 4.0229707 128.0 +-13.212213 -4.9090648 4.0254245 128.0 +-9.4890461 -3.4594746 2.8935223 128.0 +-9.4955997 -3.3960013 2.8891604 128.0 +-13.194111 -4.627779 3.9935284 128.0 +-13.050302 -4.4875984 3.942004 128.0 +-13.611863 -4.5875168 4.101757 128.0 +-7.0773973 -2.3367934 2.1435554 128.0 +-7.1007566 -2.2962842 2.1462815 128.0 +-7.7586079 -2.4565792 2.3376582 128.0 +-7.8167276 -2.4223142 2.350471 128.0 +-10.11392 -3.0664158 3.0262864 128.0 +-7.6115699 -2.2567308 2.2812266 128.0 +-10.075937 -2.9203742 3.0042045 128.0 +-12.541238 -3.5517361 3.7250013 128.0 +-9.9543028 -2.7531569 2.9581323 128.0 +-7.9442458 -2.1447492 2.3632839 128.0 +-9.3760815 -2.4697573 2.7790236 128.0 +-10.498113 -2.6965842 3.1028914 128.0 +-9.5139475 -2.3816187 2.810647 128.0 +-9.5489454 -2.3282123 2.8166447 128.0 +-8.7495699 -2.0764818 2.5797412 128.0 +-10.806742 -2.4948471 3.1743169 128.0 +-8.734026 -1.9598945 2.5680187 128.0 +-13.289118 -2.8967214 3.8855724 128.0 +-0 -0 0 128.0 +-12.157807 -2.4942086 3.5483463 128.0 +-17.031769 -3.3855045 4.9520464 128.0 +-12.709968 -2.4453635 3.6991029 128.0 +-18.451136 -3.4328568 5.3495207 128.0 +-13.8782 -2.4939549 4.02706 128.0 +-0 -0 0 128.0 +-14.178215 -2.3686509 4.1047559 128.0 +-14.189632 -2.281152 4.1039376 128.0 +-14.265166 -2.2035921 4.1216578 128.0 +-13.594129 -2.0145926 3.9256468 128.0 +-13.777698 -1.9554836 3.9747179 128.0 +-13.883821 -1.8837168 4.0017066 128.0 +-13.610779 -1.7616808 3.9204671 128.0 +-0 -0 0 128.0 +-12.304038 -1.4392209 3.5418034 128.0 +-12.347063 -1.3675116 3.5516176 128.0 +-12.476748 -1.304435 3.5862398 128.0 +-12.337063 -1.2133478 3.5442569 128.0 +-12.354814 -1.1385977 3.5472558 128.0 +-14.563436 -1.25214 4.1734548 128.0 +-12.314148 -0.98261201 3.5319893 128.0 +-12.25182 -0.90201753 3.5126336 128.0 +-12.228325 -0.82488126 3.5044551 128.0 +-12.210109 -0.74842072 3.4979122 128.0 +-12.208707 -0.67316878 3.4962766 128.0 +-12.194349 -0.59734994 3.4910967 128.0 +-0 -0 0 128.0 +-12.181532 -0.44695535 3.4856446 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.5579128 12.904791 4.3739557 128.0 +-9.5486259 13.059047 4.4060597 128.0 +-9.4920444 13.150267 4.4170222 128.0 +-9.4464645 13.257792 4.433466 128.0 +-9.3893709 13.35025 4.4449506 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.6798267 14.507372 4.7474608 128.0 +-9.572051 14.538272 4.7383256 128.0 +-9.5294657 14.668781 4.7615557 128.0 +-7.9699287 12.434185 4.0252461 128.0 +-7.8785238 12.459191 4.0176773 128.0 +-7.8356433 12.561358 4.0349035 128.0 +-7.833281 12.730887 4.0735331 128.0 +-7.7890701 12.834832 4.0912819 128.0 +-7.6402788 12.765585 4.0544796 128.0 +-7.5647502 12.817213 4.0560455 128.0 +-7.4893613 12.869228 4.0578728 128.0 +-0 0 0 128.0 +-7.6383314 13.503819 4.2267461 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.4436355 13.743994 4.2580671 128.0 +-7.3064485 13.690613 4.2277899 128.0 +-7.5978456 14.449508 4.4459944 128.0 +-7.4695296 14.419565 4.4227648 128.0 +-0 0 0 128.0 +-7.4172711 14.759426 4.4981966 128.0 +-7.2863274 14.723329 4.4736614 128.0 +-7.1764016 14.727839 4.4616551 128.0 +-7.1096931 14.821209 4.4765325 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.7161517 15.177985 4.5195994 128.0 +-6.6321383 15.240153 4.5258636 128.0 +-6.5407796 15.285886 4.5274296 128.0 +-6.4547234 15.344419 4.5329108 128.0 +-6.3630314 15.389979 4.5347381 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-5.0356131 13.573686 3.9464214 128.0 +-4.9452991 13.585279 3.9409401 128.0 +-0 0 0 128.0 +-4.5606747 13.023561 3.7629313 128.0 +-4.5251775 13.180954 3.7999947 128.0 +-4.4306736 13.168214 3.7885103 128.0 +-4.3461657 13.18415 3.7853782 128.0 +-4.716783 14.609701 4.1828966 128.0 +-4.2465868 13.434392 3.8414953 128.0 +-4.3702898 14.126974 4.0302057 128.0 +-4.5407186 15.003576 4.2703347 128.0 +-3.8764324 13.097434 3.7250848 128.0 +-4.3951483 15.192632 4.3081813 128.0 +-3.7553153 13.285219 3.7647583 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.8183124 14.524736 4.092587 128.0 +-4.0018125 15.612061 4.3896165 128.0 +-3.3357358 13.352952 3.753274 128.0 +-3.2473531 13.346905 3.7459657 128.0 +-3.1889684 13.466152 3.7736328 128.0 +-3.5210791 15.286947 4.2734671 128.0 +-3.3567972 14.993626 4.1862893 128.0 +-3.2499716 14.946022 4.1674967 128.0 +-3.1510303 14.931678 4.1581006 128.0 +-3.029947 14.806976 4.1184268 128.0 +-2.9596772 14.929451 4.1471381 128.0 +-2.7972834 14.578536 4.0456052 128.0 +-2.6959858 14.531832 4.0281177 128.0 +-2.6035359 14.530046 4.0231581 128.0 +-2.4906657 14.40877 3.9855728 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-1.6130095 13.849237 3.8018217 128.0 +-1.5291646 13.869429 3.804693 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.0063182 14.746469 4.0283785 128.0 +1.0867429 14.605243 3.991837 128.0 +1.2336169 15.308412 4.1844625 128.0 +1.1675084 13.457905 3.6843674 128.0 +0 0 0 128.0 +1.5313886 15.446417 4.2288342 128.0 +0 0 0 128.0 +1.5844963 14.205173 3.8965685 128.0 +1.6726445 14.203813 3.8989174 128.0 +1.7433637 14.061079 3.8628981 128.0 +1.8242445 14.008956 3.8516748 128.0 +2.0876586 15.297328 4.2063875 128.0 +2.1876233 15.327234 4.218133 128.0 +2.2420599 15.048093 4.1455722 128.0 +2.3221998 14.955832 4.1241693 128.0 +2.2591155 13.983571 3.8618541 128.0 +2.5765436 15.3489 4.2400575 128.0 +2.4149675 13.8654 3.8373191 128.0 +2.4955382 13.825623 3.8305328 128.0 +2.8682086 15.350114 4.2541523 128.0 +2.9760809 15.403311 4.2737279 128.0 +2.750356 13.781132 3.8315771 128.0 +3.1255267 15.174644 4.221004 128.0 +2.9607913 13.941805 3.8856061 128.0 +3.1847765 14.556137 4.0607438 128.0 +0 0 0 128.0 +3.24176 13.992151 3.9153612 128.0 +3.3154721 13.921288 3.9012666 128.0 +3.3925676 13.866926 3.8918703 128.0 +0 0 0 128.0 +3.5232024 13.671882 3.8493257 128.0 +3.5611384 13.476417 3.8007777 128.0 +4.2887063 15.834929 4.4676585 128.0 +4.3635874 15.728321 4.4452114 128.0 +4.4410157 15.634393 4.4264188 128.0 +4.5570779 15.67637 4.4459944 128.0 +4.6240077 15.550034 4.4183273 128.0 +4.5859127 15.082674 4.2943478 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +4.7568173 14.368097 4.1241693 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.051399 -1.1830405 5.1930051 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.819519 -1.5168271 5.136888 128.0 +18.378048 -1.5947745 5.0196943 128.0 +18.366955 -1.7074206 5.0194335 128.0 +18.597248 -1.844009 5.0849471 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.160229 -2.3745694 5.5205727 128.0 +18.941086 -2.3488221 5.1924829 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.992311 -2.8300321 5.2238045 128.0 +17.316721 -2.6889637 4.7701688 128.0 +17.293224 -2.7940881 4.768342 128.0 +18.012606 -3.0238936 4.9703636 128.0 +18.328466 -3.1926935 5.0622392 128.0 +0 -0 0 128.0 +18.669365 -3.4886775 5.1671653 128.0 +18.672251 -3.607928 5.1739511 128.0 +0 -0 0 128.0 +18.672897 -3.8463395 5.1867409 128.0 +18.622507 -3.9552248 5.1794324 128.0 +18.62995 -4.0764337 5.1883068 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9429574 -2.2556305 2.264473 128.0 +7.9345293 -2.3059423 2.2660389 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0163164 -2.5446775 2.3059735 128.0 +7.9702501 -2.583988 2.2973602 128.0 +7.9927335 -2.6455896 2.3083227 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +13.713062 -7.233243 4.223875 128.0 +13.656507 -7.3108692 4.220221 128.0 +13.618177 -7.3982134 4.2223091 128.0 +13.579289 -7.4853625 4.2243972 128.0 +0 -0 0 128.0 +3.6129067 -2.0487735 1.1549195 128.0 +13.930318 -8.0167198 4.3776097 128.0 +3.5699859 -2.0827348 1.1494383 128.0 +3.5745833 -2.1149282 1.1549195 128.0 +3.6103697 -2.1661375 1.1703191 128.0 +4.4430242 -2.7032471 1.4381154 128.0 +4.4822145 -2.7649338 1.455864 128.0 +3.4864147 -2.1799989 1.1436961 128.0 +3.4843855 -2.2085886 1.1473502 128.0 +3.4886324 -2.2414114 1.1530924 128.0 +3.4998863 -2.2791123 1.1611837 128.0 +3.8676622 -2.5526919 1.2849025 128.0 +3.8182313 -2.5538261 1.27394 128.0 +4.7852001 -3.2436228 1.5949823 128.0 +4.1008716 -2.8164334 1.377039 128.0 +4.1627374 -2.8966994 1.4031399 128.0 +4.1511955 -2.9266384 1.405228 128.0 +3.4851928 -2.4890263 1.1898948 128.0 +3.4362309 -2.4860239 1.1786714 128.0 +3.420912 -2.5070615 1.1786714 128.0 +3.4093394 -2.5308826 1.1799765 128.0 +3.3104343 -2.4890761 1.1517874 128.0 +3.926255 -2.9902732 1.3663375 128.0 +3.0824704 -2.377351 1.0844468 128.0 +3.070107 -2.3980033 1.0852298 128.0 +3.597297 -2.8457577 1.272113 128.0 +3.2822385 -2.6292987 1.169014 128.0 +3.301271 -2.6779814 1.1812814 128.0 +3.3086419 -2.7178011 1.1896338 128.0 +3.3156474 -2.7578115 1.1979861 128.0 +3.2964487 -2.776238 1.197203 128.0 +3.2220716 -2.7475405 1.1768444 128.0 +3.3088844 -2.8568692 1.2139077 128.0 +3.4693148 -3.0328226 1.2778552 128.0 +3.3415115 -2.9574168 1.2384427 128.0 +3.5094631 -3.144763 1.3060442 128.0 +3.7274146 -3.3816373 1.3926996 128.0 +3.7236545 -3.4201207 1.3989638 128.0 +3.0353944 -2.8222075 1.1525704 128.0 +3.0334806 -2.8553398 1.1583126 128.0 +3.1158123 -2.9691572 1.195637 128.0 +4.0435286 -3.9013262 1.5511327 128.0 +2.9624581 -2.893151 1.1515263 128.0 +3.7784836 -3.7361238 1.4686534 128.0 +3.7050123 -3.7086895 1.4493388 128.0 +3.6320219 -3.680496 1.430024 128.0 +3.3257554 -3.4116304 1.3201388 128.0 +3.3409078 -3.4695311 1.3342333 128.0 +3.2576985 -3.4249003 1.3099594 128.0 +3.2676816 -3.4778981 1.3222269 128.0 +3.2324934 -3.4830205 1.3167456 128.0 +2.9925928 -3.2643545 1.2293073 128.0 +7.0592561 -7.7982173 2.8760195 128.0 +2.8802524 -3.2202265 1.2000742 128.0 +2.3716555 -2.684263 1.0004015 128.0 +2.32532 -2.6645703 0.98813409 128.0 +2.2893965 -2.6561143 0.98004276 128.0 +2.2693028 -2.6657002 0.9784767 128.0 +2.2411048 -2.6655314 0.97351754 128.0 +2.1877213 -2.6346593 0.95785689 128.0 +2.126848 -2.5935273 0.9388032 128.0 +3.4462864 -4.256649 1.5127642 128.0 +3.3947916 -4.2460427 1.5018017 128.0 +2.3735721 -3.0058274 1.0674812 128.0 +2.3568642 -3.0226192 1.0682641 128.0 +2.3064849 -2.9957099 1.0541697 128.0 +2.312587 -3.0420899 1.065132 128.0 +2.3691788 -3.1566136 1.0990633 128.0 +2.3371267 -3.1540241 1.0933211 128.0 +2.219738 -3.0342672 1.0484273 128.0 +1.9270881 -2.6681864 0.92183757 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +2.1379998 -3.0783119 1.0452952 128.0 +1.9826844 -2.8922729 0.98004276 128.0 +1.9930142 -2.9459701 0.99361527 128.0 +1.9631144 -2.9404767 0.98787308 128.0 +1.9020405 -2.887156 0.96673125 128.0 +1.869566 -2.8761051 0.95942301 128.0 +1.8529251 -2.8891478 0.95994502 128.0 +1.8429006 -2.9127018 0.96386015 128.0 +1.8423629 -2.9518039 0.97273451 128.0 +1.8742918 -3.0444515 0.9985745 128.0 +1.8896277 -3.1120148 1.0163232 128.0 +1.8501741 -3.0895882 1.0056218 128.0 +1.8468809 -3.1274867 1.0139741 128.0 +1.9058189 -3.2730942 1.0559967 128.0 +1.5773122 -2.7471561 0.88842827 128.0 +1.8503029 -3.2693465 1.0476444 128.0 +1.4903668 -2.6710272 0.85893416 128.0 +1.5450733 -2.8095653 0.89886868 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.4499083 -2.7969201 0.88373011 128.0 +1.1041408 -2.1617 0.68823361 128.0 +1.1341965 -2.2546916 0.71433461 128.0 +1.0950825 -2.2105608 0.69893503 128.0 +0 -0 0 128.0 +1.5400141 -3.208261 0.99413729 128.0 +1.5219481 -3.2211418 0.99518132 128.0 +1.2056401 -2.5922074 0.80490506 128.0 +1.5429109 -3.3721452 1.0345938 128.0 +1.6128675 -3.5831575 1.0943651 128.0 +1.4951644 -3.3767002 1.0304177 128.0 +1.5984305 -3.6708391 1.114463 128.0 +1.5823314 -3.6956658 1.1189001 128.0 +1.6498179 -3.9197567 1.1818035 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.6135263 -4.0400147 1.2081655 128.0 +1.5865932 -4.0444465 1.2065995 128.0 +1.5416343 -4.0018535 1.1914608 128.0 +1.4917989 -3.9444144 1.1721461 128.0 +0.90730238 -2.4428999 0.73652047 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.9505384 -2.7115653 0.80882019 128.0 +0 -0 0 128.0 +1.1230887 -3.3351343 0.98343593 128.0 +1.1007906 -3.3364615 0.98186982 128.0 +0.80661255 -2.4952223 0.74095762 128.0 +0.80321282 -2.537864 0.75165904 128.0 +0.77792817 -2.5113885 0.74278468 128.0 +0.76334256 -2.5188863 0.74356771 128.0 +0.75252861 -2.539259 0.74800491 128.0 +1.1655135 -4.0257044 1.1650989 128.0 +1.1502404 -4.0662227 1.1744952 128.0 +0.9211148 -3.3334143 0.96699226 128.0 +0.90064406 -3.3390036 0.96699226 128.0 +0.87989402 -3.3435333 0.96673125 128.0 +0.79178745 -3.0851648 0.89312643 128.0 +0.75834161 -3.0318973 0.87694383 128.0 +0.74177712 -3.0449355 0.87929291 128.0 +1.8493965 -7.8073606 2.2013085 128.0 +1.7148148 -7.4422731 2.0969045 128.0 +0.70500034 -3.1447401 0.90330583 128.0 +0.64591277 -2.9660048 0.85266989 128.0 +1.8136501 -8.5918665 2.4062014 128.0 +0.64544892 -3.1496181 0.90121776 128.0 +0.64637685 -3.2557869 0.92940682 128.0 +0.52201581 -2.7155073 0.77958709 128.0 +0.48316643 -2.5990658 0.74669981 128.0 +0.45291427 -2.5221634 0.72477502 128.0 +1.3296909 -7.6891913 2.1417983 128.0 +0.43159851 -2.5856178 0.74069661 128.0 +0.52564436 -3.2745125 0.9286238 128.0 +0.43242916 -2.802531 0.79864085 128.0 +0.41043249 -2.7726619 0.78976649 128.0 +0.38760298 -2.7340271 0.77854306 128.0 +0.37017387 -2.7315707 0.77723801 128.0 +0.35204941 -2.723259 0.77436692 128.0 +0.34214687 -2.7809412 0.78950548 128.0 +0.32764363 -2.805042 0.79550868 128.0 +0.85177046 -7.7207561 2.1321409 128.0 +0.26814166 -2.5678511 0.72999519 128.0 +0.3997533 -4.0768738 1.1395199 128.0 +0.37200162 -4.049449 1.1314286 128.0 +0.28210005 -3.2898812 0.92470866 128.0 +0.20588118 -2.5842438 0.73286629 128.0 +0.55906743 -7.6380825 2.1026468 128.0 +0 -0 0 128.0 +0.17547823 -2.8708827 0.80960327 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.083948635 -2.7620208 0.77906507 128.0 +0.065481894 -2.6987898 0.76183844 128.0 +0 -0 0 128.0 +0.043922469 -3.700377 1.0325058 128.0 +0.017295396 -2.9765854 0.8367483 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.035740983 -2.8412638 0.8002069 128.0 +-0.053340152 -2.8496776 0.80255598 128.0 +-0.071409687 -2.8724573 0.80882019 128.0 +-0.089881979 -2.8989811 0.81612849 128.0 +-0.10835639 -2.9167035 0.82108766 128.0 +-0.13071819 -3.0182118 0.84875476 128.0 +-0.15091726 -3.0510976 0.85789007 128.0 +-0.16914983 -3.0414398 0.85554099 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6125426 -3.7572858 1.1374317 128.0 +-1.6232015 -3.7190127 1.1290795 128.0 +-1.6220888 -3.6551664 1.1131579 128.0 +-1.5559024 -3.4489455 1.0549526 128.0 +-1.4880551 -3.2454364 0.99726945 128.0 +-1.5063087 -3.2327454 0.99622542 128.0 +-1.5310764 -3.2339103 0.99935752 128.0 +-3.7909751 -7.877903 2.395761 128.0 +-3.9706931 -8.1233311 2.4766741 128.0 +-3.9298694 -7.9163837 2.4216011 128.0 +-3.8857896 -7.7085266 2.3660059 128.0 +-1.6185573 -3.1639414 0.99283224 128.0 +-1.6294818 -3.137676 0.98787308 128.0 +-1.6527574 -3.1353028 0.99022216 128.0 +-1.8492194 -3.4561505 1.091755 128.0 +-1.8842176 -3.470185 1.0995853 128.0 +-4.3952641 -7.9745078 2.4939008 128.0 +-4.438457 -7.9372787 2.4907687 128.0 +-0 -0 0 128.0 +-4.771008 -8.2913332 2.6184025 128.0 +-2.0136259 -3.4516041 1.1123748 128.0 +-1.9560801 -3.3062763 1.0706133 128.0 +-1.9519831 -3.2536573 1.0578238 128.0 +-1.9794396 -3.2539876 1.0617388 128.0 +-0 -0 0 128.0 +-2.0637684 -3.3006485 1.0844468 128.0 +-5.1882873 -8.1823578 2.6515508 128.0 +-5.2785921 -8.2128935 2.6716485 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-2.2937937 -3.340266 1.1275134 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.3791308 -7.4328094 2.5126934 128.0 +-2.3934639 -3.2659969 1.1267304 128.0 +-2.4278488 -3.2706232 1.1332556 128.0 +-2.4565766 -3.2672358 1.1371708 128.0 +-2.4683867 -3.2413514 1.1335167 128.0 +-5.7520432 -7.4553638 2.5779459 128.0 +-5.8184857 -7.4465504 2.5870812 128.0 +-5.8628693 -7.4091949 2.5865593 128.0 +-5.9112396 -7.3768477 2.5878644 128.0 +-5.9935012 -7.3861589 2.603786 128.0 +-6.0092878 -7.313447 2.5912576 128.0 +-6.1065373 -7.3395071 2.6134434 128.0 +-6.6490932 -7.8924565 2.8222513 128.0 +-6.7099261 -7.8661976 2.8274715 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.6585331 -9.4243155 3.492264 128.0 +-8.6767454 -9.3286028 3.4766033 128.0 +-9.1746082 -9.7432108 3.6504359 128.0 +-9.2149 -9.6664715 3.6428666 128.0 +-8.8349171 -9.15481 3.4719052 128.0 +-9.334178 -9.5540438 3.6433887 128.0 +-8.9893656 -9.0889387 3.4883487 128.0 +-9.0374508 -9.0261059 3.4854777 128.0 +-9.0727329 -8.9508247 3.4779084 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.8210764 -8.3878841 3.3231294 128.0 +-8.7991934 -8.2648745 3.2959845 128.0 +-8.8370008 -8.1989107 3.2912862 128.0 +-8.8793135 -8.1373606 3.2884152 128.0 +-8.9254971 -8.0794859 3.2871101 128.0 +-10.148006 -9.073247 3.7125564 128.0 +-10.189738 -8.9986687 3.7075973 128.0 +-11.098161 -9.6802225 4.013762 128.0 +-11.193188 -9.6428137 4.0265512 128.0 +-9.142664 -7.7793779 3.2777138 128.0 +-9.359477 -7.8653378 3.3374851 128.0 +-10.154163 -8.4272785 3.5998001 128.0 +-9.6389694 -7.9004092 3.4016936 128.0 +-9.6122246 -7.7803898 3.3755925 128.0 +-9.6545048 -7.7170453 3.3737655 128.0 +-10.641335 -8.3992033 3.6974177 128.0 +-11.674937 -9.0991821 4.0341206 128.0 +-10.922632 -8.405735 3.7584941 128.0 +-11.612768 -8.8238344 3.9753935 128.0 +-11.719976 -8.7923813 3.9934032 128.0 +-10.236111 -7.5816612 3.4760814 128.0 +-10.277762 -7.5152926 3.4745152 128.0 +-10.3683 -7.4842887 3.4893928 128.0 +-10.351916 -7.3762803 3.4687731 128.0 +-10.555699 -7.4242344 3.5212362 128.0 +-11.391712 -7.9080992 3.7814631 128.0 +-11.709204 -8.0224476 3.8696845 128.0 +-11.229586 -7.5930796 3.6971569 128.0 +-10.872842 -7.255095 3.5661297 128.0 +-0 -0 0 128.0 +-11.421687 -7.4203248 3.7146444 128.0 +-11.456436 -7.3433313 3.7112513 128.0 +-6.0720186 -3.8403308 1.9744909 128.0 +-6.0930109 -3.8014688 1.9737078 128.0 +-6.2724414 -3.8601158 2.0232997 128.0 +-6.1408525 -3.7274134 1.9742298 128.0 +-6.3955469 -3.8284557 2.0473127 128.0 +-6.7739167 -3.9986248 2.1587639 128.0 +-16.049862 -9.340023 5.0528426 128.0 +-7.0192499 -4.0280805 2.2201014 128.0 +-7.0119033 -3.9668775 2.2101829 128.0 +-6.7587094 -3.7691345 2.1243105 128.0 +-6.7284088 -3.6983068 2.107867 128.0 +-6.4216113 -3.4786041 2.0065951 128.0 +-7.1846461 -3.8349564 2.2339349 128.0 +-0 -0 0 128.0 +-6.3054004 -3.2670267 1.952044 128.0 +-6.8567452 -3.4993863 2.1133482 128.0 +-6.8125324 -3.4243095 2.0935113 128.0 +-6.8758106 -3.4034212 2.1063008 128.0 +-6.4591794 -3.148083 1.9747518 128.0 +-7.3096108 -3.5070601 2.2240164 128.0 +-7.3536892 -3.472858 2.2308028 128.0 +-7.0176711 -3.2617204 2.1243105 128.0 +-7.0252614 -3.2129803 2.1206565 128.0 +-16.710625 -7.5171466 4.9862852 128.0 +-7.2486658 -3.2081544 2.1752076 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.3394885 -3.0351975 2.1793838 128.0 +-7.3678122 -2.9941022 2.1822548 128.0 +-7.36901 -2.9420397 2.1772957 128.0 +-7.3788342 -2.8935983 2.1749465 128.0 +-7.3865404 -2.8444536 2.1720755 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.9659138 -2.4880347 2.031913 128.0 +-10.547152 -3.6937063 3.0535061 128.0 +-13.295999 -4.5646629 3.8328819 128.0 +-7.0901318 -2.3861694 2.054621 128.0 +-7.1046395 -2.3426201 2.054621 128.0 +-10.423329 -3.3655548 2.9934738 128.0 +-7.6842136 -2.429493 2.2109659 128.0 +-7.5062284 -2.3226864 2.1564147 128.0 +-7.6284437 -2.3092935 2.1869531 128.0 +-7.7952046 -2.3076334 2.2300196 128.0 +-9.4135008 -2.7237413 2.681567 128.0 +-9.5117846 -2.6890302 2.7045357 128.0 +-9.0237455 -2.491432 2.5630684 128.0 +-9.3539162 -2.5208824 2.6512897 128.0 +-9.3953505 -2.4703104 2.6585979 128.0 +-13.353741 -3.4231164 3.7592771 128.0 +-8.8283587 -2.2058454 2.4923346 128.0 +-13.597348 -3.3082643 3.8156552 128.0 +-11.443679 -2.7102003 3.2116783 128.0 +-11.462915 -2.6405821 3.2124612 128.0 +-13.28572 -2.9745657 3.7130785 128.0 +-8.9145079 -1.9389203 2.4985988 128.0 +-16.964348 -3.5798209 4.7197938 128.0 +-12.274249 -2.5118806 3.4194422 128.0 +-12.745847 -2.5269654 3.545249 128.0 +-17.091833 -3.2793207 4.7375426 128.0 +-17.218887 -3.1942749 4.7670369 128.0 +-17.206806 -3.0829456 4.7584233 128.0 +-13.512699 -2.3358471 3.7397015 128.0 +-13.479165 -2.2449651 3.726651 128.0 +-13.46409 -2.1576364 3.7188206 128.0 +-12.390348 -1.9077607 3.4215302 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.383633 -1.5195079 3.4053476 128.0 +-12.375463 -1.441486 3.4006495 128.0 +-12.401346 -1.3674272 3.4053476 128.0 +-12.423906 -1.2928056 3.4092629 128.0 +-12.428722 -1.2162678 3.4084797 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.387434 -0.90596288 3.390209 128.0 +-12.397575 -0.83026004 3.3915141 128.0 +-12.345586 -0.75072271 3.3761146 128.0 +-12.317187 -0.67316949 3.3672402 128.0 +-12.336514 -0.59832674 3.3714163 128.0 +-12.2898 -0.52050078 3.3578439 128.0 +-12.295656 -0.4451867 3.3586268 128.0 +-12.320349 -0.37039867 3.36463 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-13.202861 -0.24123573 3.4471555 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.49124 13.800355 5.2073269 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-13.77984 14.300405 5.1680169 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.041852 15.884225 5.5150437 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.6517925 13.185892 4.2581363 128.0 +-9.5395155 13.201707 4.2443652 128.0 +-9.4425898 13.237924 4.2373548 128.0 +-9.3622999 13.297196 4.2378554 128.0 +-0 0 0 128.0 +-8.9393911 13.033449 4.1194258 128.0 +-0 0 0 128.0 +-9.6704273 14.476931 4.5345559 128.0 +-9.5622339 14.506895 4.5255423 128.0 +-9.5015469 14.60912 4.5390625 128.0 +-9.3949957 14.641071 4.5310502 128.0 +-7.9196873 12.510294 3.8612838 128.0 +-7.8935475 12.639948 3.8860714 128.0 +-7.9823971 12.958512 3.9681962 128.0 +-9.1399364 15.043462 4.5843816 128.0 +-7.6913991 12.83625 3.9020958 128.0 +-7.6346564 12.92071 3.913363 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.6394815 13.684928 4.0853739 128.0 +-0 0 0 128.0 +-7.4663563 13.769135 4.08287 128.0 +-7.3976998 13.844575 4.0916333 128.0 +-0 0 0 128.0 +-7.5348339 14.527309 4.2643957 128.0 +-0 0 0 128.0 +-7.4195328 14.744944 4.300951 128.0 +-7.2747545 14.680889 4.2694035 128.0 +-7.4617691 15.293423 4.4329014 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.8646669 15.238826 4.3545327 128.0 +-0 0 0 128.0 +-6.6624479 15.288193 4.3450179 128.0 +-6.5711851 15.335014 4.3467708 128.0 +-6.4837337 15.391106 4.3512774 128.0 +-6.3928776 15.439544 4.3537812 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.9705324 13.633257 3.7849181 128.0 +-4.8884172 13.668057 3.78617 128.0 +-4.7551088 13.557104 3.7476113 128.0 +-4.516614 13.134674 3.6241741 128.0 +-0 0 0 128.0 +-4.3587341 13.200142 3.6271787 128.0 +-4.7245727 14.608381 4.0027485 128.0 +-4.2347093 13.373547 3.6599784 128.0 +-4.0941014 13.210629 3.6089008 128.0 +-4.4703312 14.743828 4.0165195 128.0 +-3.9030526 13.163343 3.5828614 128.0 +-3.8305664 13.21587 3.5906231 128.0 +-3.7470286 13.230742 3.5883696 128.0 +-4.2857695 15.494803 4.1897826 128.0 +-4.0172257 14.878689 4.0177712 128.0 +-3.9145105 14.859993 4.0062537 128.0 +-3.859633 15.025325 4.0440612 128.0 +-3.6923575 14.749132 3.96419 128.0 +-3.3036063 13.548751 3.638696 128.0 +-3.213479 13.539565 3.6309342 128.0 +-3.1427567 13.612798 3.645206 128.0 +-3.3509095 14.93166 3.9897289 128.0 +-3.2544844 14.930182 3.9839702 128.0 +-3.1501875 14.890199 3.9681962 128.0 +-3.0605149 14.917783 3.9704497 128.0 +-2.9043634 14.611529 3.8848195 128.0 +-2.7927008 14.514991 3.854774 128.0 +-2.4055169 12.929955 3.4333844 128.0 +-2.5891938 14.408095 3.8179681 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-1.7183523 13.94771 3.6664882 128.0 +-0 0 0 128.0 +-1.5423723 13.925407 3.6554716 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.76601869 13.822833 3.6124063 128.0 +0.84820276 13.775354 3.6013894 128.0 +1.0181246 15.031404 3.9283857 128.0 +0 0 0 128.0 +1.1706795 14.620173 3.8252292 128.0 +1.2439808 14.422694 3.7759044 128.0 +1.4203818 15.366297 4.0230293 128.0 +1.5194858 15.40643 4.0357985 128.0 +1.6187321 15.442072 4.0475664 128.0 +1.7250954 15.536733 4.0748582 128.0 +1.8595078 15.859517 4.1617398 128.0 +1.7586956 14.243183 3.7436054 128.0 +1.8423216 14.203321 3.736094 128.0 +1.9595591 14.413354 3.7939317 128.0 +2.0200229 14.204564 3.7426038 128.0 +2.2531421 15.175412 3.9997439 128.0 +2.3093536 14.923068 3.9373994 128.0 +2.2816019 14.167844 3.7433548 128.0 +2.3643374 14.12875 3.736845 128.0 +2.4239891 13.958495 3.696033 128.0 +2.7412474 15.230649 4.0342965 128.0 +2.5700977 13.793498 3.6607294 128.0 +2.9583473 15.353673 4.0758595 128.0 +2.790385 14.018242 3.7285824 128.0 +2.8818014 14.027411 3.7355931 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.7413266 15.744674 4.2173243 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5121336 13.657202 3.6790073 128.0 +3.544028 13.438804 3.6264274 128.0 +3.6531949 13.515874 3.6529677 128.0 +0 0 0 128.0 +0 0 0 128.0 +4.5055981 15.529114 4.213819 128.0 +4.5156841 15.214381 4.1364517 128.0 +4.6140132 15.203063 4.1409583 128.0 +4.5480266 14.661264 4.0019975 128.0 +0 0 0 128.0 +4.7278981 14.60527 4.0022478 128.0 +4.8247166 14.598047 4.0082569 128.0 +0 0 0 128.0 +0 0 0 128.0 +5.1320424 14.619128 4.0390539 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.129284 -1.4135461 4.9927511 128.0 +18.960051 -1.5180711 4.9511881 128.0 +18.410221 -1.5878042 4.8109751 128.0 +0 -0 0 128.0 +18.030937 -1.7782663 4.717834 128.0 +18.633038 -1.9531484 4.877326 128.0 +18.704416 -2.0767348 4.8991089 128.0 +0 -0 0 128.0 +20.041937 -2.4745457 5.2546487 128.0 +18.90593 -2.4521711 4.9624553 128.0 +17.642445 -2.3984809 4.6367106 128.0 +17.771172 -2.5271301 4.6742678 128.0 +17.42877 -2.5876474 4.5888882 128.0 +19.821695 -3.0672908 5.2193451 128.0 +17.525698 -2.8222611 4.6229401 128.0 +17.516645 -2.9311814 4.6251931 128.0 +17.834095 -3.0969048 4.7133269 128.0 +17.790936 -3.2019877 4.7070675 128.0 +17.865179 -3.3286445 4.7318554 128.0 +0 -0 0 128.0 +18.869362 -3.755883 5.0077739 128.0 +18.831736 -3.8686705 5.0040183 128.0 +0 -0 0 128.0 +19.004181 -4.1477771 5.0626073 128.0 +19.07472 -4.2859535 5.0881457 128.0 +19.690437 -4.551383 5.2586546 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9512043 -2.2543473 2.1694663 128.0 +7.9353623 -2.3025529 2.1689653 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0102863 -2.5390136 2.2052705 128.0 +7.9807405 -2.5836439 2.201515 128.0 +7.9739299 -2.635602 2.2040186 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.354799 -7.7378683 5.1835408 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.036779 -8.4413309 5.4176459 128.0 +18.957266 -8.5456467 5.4098845 128.0 +18.889511 -8.6549501 5.4056277 128.0 +18.868523 -8.7858105 5.4148917 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +13.644713 -7.5123491 4.0603361 128.0 +3.4944417 -1.9522945 1.0672934 128.0 +3.4596543 -1.9608123 1.0605332 128.0 +3.4727392 -1.9964769 1.0680445 128.0 +3.4855156 -2.0323753 1.0755559 128.0 +3.4779799 -2.0566802 1.0770582 128.0 +3.4943573 -2.0954056 1.0858215 128.0 +3.4789524 -2.1152983 1.0850704 128.0 +3.4477758 -2.1254296 1.0795621 128.0 +3.4149642 -2.1342323 1.073553 128.0 +3.2145085 -2.0365136 1.0162159 128.0 +3.0797484 -1.9777409 0.97865891 128.0 +3.04808 -1.9839275 0.97264981 128.0 +3.9289241 -2.591572 1.2493197 128.0 +3.9282422 -2.6258519 1.254077 128.0 +3.9296918 -2.6618493 1.2595853 128.0 +3.8765647 -2.6607125 1.2480677 128.0 +3.5525444 -2.4705589 1.1511707 128.0 +3.975008 -2.8006375 1.2896309 128.0 +3.5850029 -2.55896 1.1712011 128.0 +3.6014018 -2.6041651 1.1814667 128.0 +3.5197439 -2.5781636 1.1604348 128.0 +3.4781988 -2.580677 1.1521722 128.0 +3.6573484 -2.7485259 1.215268 128.0 +4.4732428 -3.4047143 1.4859288 128.0 +3.9477057 -3.0432036 1.3211788 128.0 +4.1243305 -3.2198727 1.3852761 128.0 +4.3179159 -3.4138281 1.4556328 128.0 +4.3180499 -3.4571991 1.4626435 128.0 +3.5326464 -2.8642097 1.2082573 128.0 +3.5471833 -2.9122453 1.2190237 128.0 +3.3758724 -2.8064728 1.1674454 128.0 +3.3645144 -2.8321211 1.1694485 128.0 +3.2733848 -2.7899184 1.1444105 128.0 +4.1350965 -3.5682557 1.4446161 128.0 +4.0642729 -3.5508864 1.4278406 128.0 +3.5724759 -3.1601334 1.2655944 128.0 +3.4808929 -3.1174109 1.2405564 128.0 +3.458113 -3.1354592 1.2393045 128.0 +3.0600595 -2.8090074 1.1063527 128.0 +3.0867395 -2.8685887 1.1218762 128.0 +3.0676696 -2.886148 1.1213756 128.0 +3.0877626 -2.9409697 1.134896 128.0 +3.1323886 -3.0203354 1.1574303 128.0 +3.7733991 -3.6832476 1.395792 128.0 +3.3636804 -3.323921 1.2550784 128.0 +3.0009673 -3.0021684 1.1298884 128.0 +3.3668566 -3.409723 1.2713531 128.0 +2.9246888 -2.9985743 1.1153663 128.0 +3.6183331 -3.755434 1.3807693 128.0 +3.5905497 -3.7726562 1.3790165 128.0 +3.3206286 -3.5322323 1.2858752 128.0 +3.0485318 -3.2829728 1.1907308 128.0 +3.8405397 -4.1869688 1.5014523 128.0 +3.8108761 -4.206151 1.4999501 128.0 +2.3729031 -2.6517608 0.95236903 128.0 +2.3469689 -2.6553905 0.94861329 128.0 +2.3249006 -2.663178 0.94635987 128.0 +2.3059869 -2.6744604 0.9453584 128.0 +2.2713277 -2.6671858 0.93809736 128.0 +2.236222 -2.6588461 0.93058592 128.0 +2.1641839 -2.6054969 0.90805173 128.0 +2.1211355 -2.5857949 0.897035 128.0 +2.079021 -2.5664163 0.88626868 128.0 +2.2084043 -2.7605491 0.94635987 128.0 +2.2046292 -2.7907593 0.95186824 128.0 +2.3149121 -2.9675806 1.0054495 128.0 +3.2633018 -4.2364435 1.4150712 128.0 +3.1926994 -4.197825 1.3960423 128.0 +3.1697888 -4.2212067 1.3972943 128.0 +3.0982738 -4.1791396 1.3775142 128.0 +2.3520324 -3.213747 1.0620354 128.0 +1.9330635 -2.6756866 0.88576794 128.0 +1.9868879 -2.7860184 0.91706544 128.0 +1.9502475 -2.7704511 0.90830213 128.0 +1.9437094 -2.7974706 0.91305935 128.0 +1.9385556 -2.8269088 0.91856772 128.0 +1.9271433 -2.8475695 0.92132187 128.0 +1.9101725 -2.8601456 0.92157227 128.0 +1.9394766 -2.9429452 0.94360572 128.0 +1.8897105 -2.9060953 0.92858291 128.0 +1.8666147 -2.9094875 0.92607909 128.0 +1.8430308 -2.9118881 0.92332494 128.0 +1.8671818 -2.9904771 0.94385606 128.0 +1.8553988 -3.0125935 0.94711101 128.0 +1.8278298 -3.0090282 0.94260418 128.0 +1.8337166 -3.0608795 0.95487279 128.0 +1.7868266 -3.024564 0.94060117 128.0 +1.7809072 -3.05722 0.94711101 128.0 +1.7394484 -3.0286343 0.93534315 128.0 +1.8863882 -3.3315716 1.022225 128.0 +0 -0 0 128.0 +1.4369717 -2.6122806 0.80314255 128.0 +1.4735291 -2.7180698 0.83168584 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.6953447 -3.3189731 0.99593514 128.0 +1.0965726 -2.1799667 0.66318011 128.0 +1.0853254 -2.1909914 0.66443199 128.0 +1.633966 -3.3496165 0.99593514 128.0 +1.5517595 -3.2312949 0.95912927 128.0 +1.6382605 -3.465692 1.023477 128.0 +1.5438497 -3.3185594 0.97865891 128.0 +1.2078551 -2.638732 0.78261137 128.0 +1.4847172 -3.2966504 0.96714145 128.0 +1.4672071 -3.3118942 0.96889406 128.0 +1.4348674 -3.2933214 0.96113229 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.97323596 -2.3513341 0.69022113 128.0 +1.6123279 -3.9633372 1.1386517 128.0 +1.5948074 -3.990236 1.1434089 128.0 +1.5288911 -3.894511 1.1141145 128.0 +1.507056 -3.9092386 1.1156168 128.0 +1.4816699 -3.9147904 1.1146152 128.0 +1.4687496 -3.9537563 1.1228778 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.87459105 -2.5960238 0.74054754 128.0 +1.0474787 -3.1731563 0.89628386 128.0 +0.96601659 -2.987922 0.84420484 128.0 +0.87167054 -2.7538202 0.77910602 128.0 +0.80717862 -2.6056085 0.73754299 128.0 +1.2243811 -4.0391603 1.123629 128.0 +0.80872321 -2.7285576 0.76808935 128.0 +0.76069844 -2.6256037 0.73904526 128.0 +1.196525 -4.2258887 1.1679462 128.0 +0.92200762 -3.3345702 0.92683023 128.0 +0.9012773 -3.3392301 0.92657989 128.0 +0.83464855 -3.1696274 0.87975883 128.0 +0.81349808 -3.1681252 0.87800616 128.0 +0.75877279 -3.0321832 0.84044915 128.0 +1.0539333 -4.3235011 1.182969 128.0 +2.0416145 -8.6026802 2.3186927 128.0 +1.9798608 -8.5763693 2.3084271 128.0 +0.66208071 -2.951648 0.81440961 128.0 +0.65158743 -2.9906542 0.82367367 128.0 +0.75487435 -3.5695329 0.97565436 128.0 +0.71310914 -3.4773617 0.95011556 128.0 +0.5558427 -2.7979846 0.76984197 128.0 +1.5335064 -7.9712815 2.1314085 128.0 +0.47807437 -2.5714014 0.7084989 128.0 +0.4607462 -2.5657105 0.70624548 128.0 +0.58724916 -3.3888538 0.92157227 128.0 +0.47485933 -2.8442755 0.77785414 128.0 +1.3325311 -8.2898607 2.2035179 128.0 +1.2130492 -7.8539281 2.0873415 128.0 +0.46955323 -3.1704853 0.86098033 128.0 +0.39293984 -2.770721 0.75582069 128.0 +0.37736368 -2.7836328 0.7585749 128.0 +0.35592604 -2.7522912 0.74981159 128.0 +0.97570491 -7.921073 2.0961049 128.0 +0.3081733 -2.6372147 0.71876448 128.0 +0.307657 -2.7805083 0.75557035 128.0 +0.28182942 -2.6985717 0.73378724 128.0 +0.39901462 -4.0597434 1.0870734 128.0 +0.3707197 -4.0254807 1.077559 128.0 +0.23335418 -2.7177708 0.73754299 128.0 +0.32668567 -4.0972824 1.0950856 128.0 +0.21747991 -2.9579508 0.79913646 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.14161086 -2.5738151 0.69873405 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.072781116 -2.392653 0.65116185 128.0 +0.058500823 -2.4095082 0.65541834 128.0 +0.052129805 -2.8696148 0.77434886 128.0 +0.034097295 -2.8350301 0.76533514 128.0 +0.017010482 -2.8864968 0.77860528 128.0 +-0 -0 0 128.0 +-0.024089793 -3.7955611 1.0137122 128.0 +-0.036602817 -2.9250438 0.78862047 128.0 +-0.055410307 -2.9712272 0.80063874 128.0 +-0.074929088 -3.0230954 0.81415927 128.0 +-0.093208812 -3.0138695 0.8119058 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.15104902 -3.0599921 0.8244248 128.0 +-0.17314157 -3.1189411 0.83994842 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6342411 -3.684751 1.0745544 128.0 +-1.6393141 -3.6358187 1.0635377 128.0 +-1.5704551 -3.4267743 1.0069518 128.0 +-1.5044085 -3.2301292 0.95362091 128.0 +-1.5233718 -3.2190871 0.95312017 128.0 +-1.5577738 -3.2402201 0.96188343 128.0 +-4.0190325 -8.2313795 2.4010677 128.0 +-1.6008596 -3.2277989 0.9638865 128.0 +-1.6267302 -3.2300215 0.96739179 128.0 +-1.6178743 -3.1639469 0.9511171 128.0 +-1.63146 -3.1427891 0.94786215 128.0 +-1.6534204 -3.1378589 0.94936442 128.0 +-1.7452223 -3.2634056 0.98917484 128.0 +-4.216866 -7.7712507 2.3186927 128.0 +-0 -0 0 128.0 +-1.8923361 -3.3870971 1.0354952 128.0 +-1.9006737 -3.3535218 1.0289853 128.0 +-4.8805599 -8.49053 2.5648162 128.0 +-1.9977565 -3.4261312 1.057779 128.0 +-1.9399071 -3.2804658 1.0177182 128.0 +-1.9604969 -3.2693315 1.0179685 128.0 +-2.0524354 -3.3755419 1.0537729 128.0 +-0 -0 0 128.0 +-5.2436328 -8.3913469 2.5911062 128.0 +-5.2287126 -8.2543249 2.5590575 128.0 +-4.634335 -7.2175713 2.250339 128.0 +-4.7556286 -7.3074737 2.2868943 128.0 +-0 -0 0 128.0 +-2.3132961 -3.4605799 1.1086061 128.0 +-0 -0 0 128.0 +-2.3407979 -3.4103785 1.1018459 128.0 +-2.3030949 -3.3116932 1.0753056 128.0 +-2.3233716 -3.2974994 1.0753056 128.0 +-2.3458104 -3.2863336 1.0763071 128.0 +-2.3897543 -3.3048303 1.0868231 128.0 +-5.5406957 -7.5649838 2.4571528 128.0 +-5.6095047 -7.5611691 2.4669178 128.0 +-5.6726594 -7.5490541 2.4741788 128.0 +-0 -0 0 128.0 +-5.752459 -7.4627705 2.4689207 128.0 +-5.8207788 -7.4563336 2.478435 128.0 +-5.8898354 -7.4500985 2.4881999 128.0 +-5.9433031 -7.4236441 2.4914548 128.0 +-5.9302139 -7.3148379 2.4674184 128.0 +-6.5487118 -7.9772449 2.7012734 128.0 +-6.5987735 -7.9384017 2.7017741 128.0 +-6.6230459 -7.8688745 2.6920092 128.0 +-6.6636682 -7.8192458 2.6890047 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-8.7945089 -9.3487854 3.3515103 128.0 +-8.832345 -9.2743158 3.3442492 128.0 +-8.902523 -9.2338867 3.3492568 128.0 +-8.9089746 -9.1278162 3.3307288 128.0 +-9.0798092 -9.1893702 3.3730428 128.0 +-9.3236198 -9.3210402 3.4416471 128.0 +-0 -0 0 128.0 +-9.1053505 -8.8820915 3.3217149 128.0 +-10.456363 -10.075586 3.7874217 128.0 +-10.51869 -10.011905 3.7876723 128.0 +-10.593326 -9.9597759 3.7924294 128.0 +-10.531513 -9.7806082 3.7491136 128.0 +-8.9640198 -8.2229357 3.1779969 128.0 +-8.9856091 -8.1417751 3.1679816 128.0 +-8.9834566 -8.039999 3.1499543 128.0 +-11.038198 -9.7577467 3.8422551 128.0 +-10.24754 -8.9473553 3.550312 128.0 +-9.13799 -7.8802357 3.1527085 128.0 +-11.153289 -9.4995556 3.8209727 128.0 +-10.08007 -8.479249 3.4386425 128.0 +-9.5979767 -7.9736419 3.25912 128.0 +-10.172137 -8.3457012 3.4348867 128.0 +-9.7447491 -7.8954864 3.275645 128.0 +-10.585231 -8.4694529 3.5380433 128.0 +-11.554635 -9.1294146 3.8405023 128.0 +-10.899801 -8.5038862 3.6073985 128.0 +-11.599073 -8.9355288 3.8187194 128.0 +-11.673717 -8.8794298 3.8252292 128.0 +-11.687725 -8.777401 3.8122094 128.0 +-11.765471 -8.7233973 3.8199711 128.0 +-10.349319 -7.5753779 3.3490064 128.0 +-10.428563 -7.5355492 3.3595223 128.0 +-10.479333 -7.4747925 3.3610246 128.0 +-11.381516 -8.0134382 3.6319358 128.0 +-11.439216 -7.9495292 3.63469 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-11.349335 -7.5811281 3.5618293 128.0 +-11.36088 -7.4884353 3.5510631 128.0 +-11.422846 -7.4291425 3.5560706 128.0 +-11.413623 -7.3238807 3.5392952 128.0 +-0 -0 0 128.0 +-6.1790481 -3.8585339 1.9160817 128.0 +-6.2174444 -3.8296876 1.9205885 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.024742 -9.33671 4.8285017 128.0 +-16.070818 -9.2319384 4.8252468 128.0 +-16.189501 -9.1684618 4.8437748 128.0 +-16.42889 -9.171361 4.8981075 128.0 +-16.30673 -8.9723692 4.8455276 128.0 +-6.6942406 -3.6297469 2.0014613 128.0 +-6.4747381 -3.4594738 1.9306037 128.0 +-7.4792929 -3.9374752 2.21804 128.0 +-6.3663063 -3.3017476 1.8867872 128.0 +-6.7045732 -3.4251649 1.9791774 128.0 +-6.9373441 -3.4905849 2.0405204 128.0 +-15.636847 -7.7484837 4.5453219 128.0 +-15.714549 -7.6672511 4.5540853 128.0 +-7.2107363 -3.4633276 2.100862 128.0 +-7.1101923 -3.3614943 2.0660594 128.0 +-7.0156975 -3.2642951 2.0332594 128.0 +-7.0435171 -3.2248137 2.0355129 128.0 +-7.2511888 -3.2662365 2.0888438 128.0 +-0 -0 0 128.0 +-7.3386507 -3.1978946 2.1023643 128.0 +-7.3928394 -3.1676776 2.1121292 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.9245663 -2.4285681 1.9298525 128.0 +-7.1050467 -2.4430215 1.9751713 128.0 +-7.107059 -2.3950508 1.971666 128.0 +-9.3445282 -3.0854781 2.5770848 128.0 +-13.265327 -4.2901711 3.6376946 128.0 +-7.6391158 -2.4187386 2.1043675 128.0 +-7.638092 -2.3669479 2.100111 128.0 +-8.9393663 -2.7102587 2.4478889 128.0 +-8.9697514 -2.6594856 2.4516444 128.0 +-7.5929585 -2.2006171 2.0765753 128.0 +-12.601976 -3.5689392 3.4193633 128.0 +-9.163681 -2.5344553 2.4909542 128.0 +-9.1846685 -2.4796946 2.4924564 128.0 +-9.0414925 -2.381609 2.4501421 128.0 +-8.9246569 -2.292361 2.4150889 128.0 +-9.0597067 -2.26789 2.4473879 128.0 +-11.040213 -2.6918733 2.9709325 128.0 +-8.9935989 -2.1344068 2.4226005 128.0 +-13.23641 -3.0558498 3.5453043 128.0 +-17.454811 -3.9172132 4.658494 128.0 +-17.139875 -3.7362123 4.5688577 128.0 +-17.046921 -3.6065235 4.5383115 128.0 +-12.414035 -2.5467827 3.3094463 128.0 +-12.338269 -2.4524417 3.2854099 128.0 +-12.253262 -2.3574803 3.25912 128.0 +-17.292105 -3.2171929 4.5808759 128.0 +-17.389654 -3.1250734 4.6014071 128.0 +-13.398255 -2.3229203 3.5488098 128.0 +-12.436339 -2.0776002 3.2929213 128.0 +-12.45172 -2.0017142 3.2936723 128.0 +-12.437935 -1.9212829 3.2869122 128.0 +-12.420759 -1.8406705 3.2794008 128.0 +-12.41169 -1.7615659 3.2741427 128.0 +-12.4309 -1.6865478 3.2763963 128.0 +-12.443894 -1.6106143 3.2771473 128.0 +-18.299534 -2.2546167 4.8004594 128.0 +-17.60914 -2.0599339 4.6171813 128.0 +-17.600279 -1.9495022 4.6116729 128.0 +-17.353853 -1.8144846 4.5445709 128.0 +-17.311668 -1.7027558 4.5307999 128.0 +-12.49378 -1.1514089 3.276897 128.0 +-17.256987 -1.4837989 4.5115209 128.0 +-12.503109 -0.99769616 3.2758954 128.0 +-12.675067 -0.93319172 3.3189609 128.0 +-12.530831 -0.84529692 3.2801518 128.0 +-12.453644 -0.76335597 3.2588696 128.0 +-12.393326 -0.68335426 3.242094 128.0 +-12.512357 -0.61293787 3.2718894 128.0 +-13.101074 -0.56123835 3.4233692 128.0 +-13.129426 -0.48176482 3.4298792 128.0 +-13.166004 -0.40223086 3.4386425 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-15.93369 14.45571 5.3166413 128.0 +-15.846123 14.55452 5.3171186 128.0 +-15.966307 14.846572 5.387486 128.0 +-15.539049 14.628056 5.2741823 128.0 +-15.397684 14.674214 5.2567697 128.0 +-15.276605 14.738747 5.246274 128.0 +-14.339737 14.005674 4.9557405 128.0 +-14.212098 14.052427 4.9414282 128.0 +-14.150314 14.164101 4.9500155 128.0 +-14.029716 14.216786 4.9383273 128.0 +-13.951709 14.31234 4.9416666 128.0 +-13.906062 14.441751 4.9566946 128.0 +-14.897361 15.662586 5.3416872 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.452336 15.765907 5.2856321 128.0 +-0 0 0 128.0 +-14.19563 15.872578 5.262733 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-13.445587 16.399881 5.2412648 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.3955259 13.354053 4.0428729 128.0 +-9.3898439 13.521535 4.0757904 128.0 +-9.0805273 13.248848 3.9775145 128.0 +-8.8777418 13.124925 3.9243217 128.0 +-8.6132107 12.903704 3.8429818 128.0 +-9.5674076 14.525702 4.304544 128.0 +-9.4992657 14.616707 4.3140855 128.0 +-10.096014 15.745707 4.626564 128.0 +-8.0421772 12.713133 3.727293 128.0 +-7.9383168 12.721044 3.7153664 128.0 +-8.0087395 13.011013 3.7850182 128.0 +-7.8622379 12.950327 3.7535317 128.0 +-7.900846 13.195804 3.8100641 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.8338146 13.843842 3.9393492 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.4888539 13.821744 3.8935509 128.0 +-7.5904918 14.216973 3.9908724 128.0 +-7.8426099 14.908768 4.170011 128.0 +-7.5713806 14.60998 4.0741205 128.0 +-7.4511309 14.596478 4.057662 128.0 +-7.4115868 14.741705 4.085093 128.0 +-7.5579491 15.26559 4.2162867 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.0637498 14.953401 4.0943961 128.0 +-6.8584776 14.752522 4.0283222 128.0 +-6.7722721 14.804042 4.0309463 128.0 +-6.806438 15.123397 4.1058455 128.0 +-6.7288437 15.19951 4.1151485 128.0 +-6.6583233 15.293046 4.1292219 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.87184 13.635846 3.5889435 128.0 +-4.7672119 13.605908 3.5734389 128.0 +-4.5476923 13.239037 3.4706309 128.0 +-4.4477868 13.211467 3.4563191 128.0 +-0 0 0 128.0 +-4.3148746 13.356543 3.4799337 128.0 +-4.2527485 13.445731 3.4961541 128.0 +-4.534205 14.64793 3.7986145 128.0 +-4.3648872 14.413365 3.731348 128.0 +-3.9331322 13.280557 3.4343739 128.0 +-3.8450909 13.282052 3.4286492 128.0 +-4.3406262 15.346328 3.9496062 128.0 +-3.7329938 13.513584 3.4758787 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.4103539 13.641639 3.4861357 128.0 +-3.5828948 14.71535 3.7523391 128.0 +-3.4529102 14.569796 3.7101185 128.0 +-3.3856897 14.687235 3.7344489 128.0 +-3.3799863 15.084898 3.8293853 128.0 +-3.2582552 14.971553 3.795752 128.0 +-2.8672135 13.574534 3.4400988 128.0 +-2.647716 12.926844 3.2733638 128.0 +-2.8702738 14.465065 3.6545403 128.0 +-2.7673657 14.408968 3.6361732 128.0 +-2.6734076 14.396077 3.6287787 128.0 +-2.3615534 13.165725 3.3177311 128.0 +-2.3571889 13.622067 3.4279335 128.0 +-2.2815428 13.684171 3.4398601 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-1.9738768 13.939891 3.4904292 128.0 +-1.8901285 13.965213 3.4937687 128.0 +-1.8006761 13.947653 3.4866128 128.0 +-1.7104453 13.920847 3.4773099 128.0 +-1.6195995 13.884779 3.4658604 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.60667741 13.965749 3.4658604 128.0 +0.69153911 13.945274 3.4618053 128.0 +0.77573943 13.916528 3.455842 128.0 +0.858051 13.862073 3.4436767 128.0 +0.94170439 13.836201 3.4386675 128.0 +1.0233454 13.786581 3.4279335 128.0 +1.1023095 13.710346 3.4107592 128.0 +1.2655667 14.616652 3.6359346 128.0 +1.3313466 14.351396 3.5724847 128.0 +1.3586968 13.730255 3.4212546 128.0 +1.6192689 15.397324 3.8351102 128.0 +1.7119935 15.371655 3.8312936 128.0 +0 0 0 128.0 +1.8524985 14.962056 3.7354031 128.0 +2.0614378 15.850826 3.958432 128.0 +1.9404377 14.237694 3.5617509 128.0 +2.0014346 14.04093 3.5159523 128.0 +2.062808 13.862211 3.4746861 128.0 +2.1449969 13.831059 3.470154 128.0 +2.4251742 15.027539 3.7711833 128.0 +2.3677473 14.12071 3.5491085 128.0 +2.4338603 13.988237 3.519769 128.0 +2.4974029 13.849753 3.4889982 128.0 +2.5853672 13.850398 3.4930532 128.0 +2.7073133 14.02593 3.5409985 128.0 +2.9175696 14.631906 3.6969993 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.272347 14.135326 3.5960996 128.0 +3.3482227 14.069633 3.58465 128.0 +3.4155724 13.971471 3.5650902 128.0 +3.9540949 15.753993 4.0218816 128.0 +3.5177238 13.660481 3.4971082 128.0 +3.5409596 13.409541 3.438906 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +4.5051465 15.160094 3.9169271 128.0 +4.6415739 15.275257 3.9536612 128.0 +4.5859737 14.766089 3.830101 128.0 +4.6750212 14.733045 3.8289082 128.0 +4.779109 14.746576 3.8398807 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.294235 -1.4326347 4.7844734 128.0 +19.332514 -1.5548126 4.7961617 128.0 +19.228762 -1.6652721 4.7730236 128.0 +18.50552 -1.7170559 4.5972247 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.181232 -2.025121 4.5256643 128.0 +18.793447 -2.2101805 4.680234 128.0 +18.848925 -2.3340502 4.6974087 128.0 +18.851582 -2.4519169 4.7017021 128.0 +18.891029 -2.5750213 4.7152987 128.0 +17.573132 -2.5052223 4.3923244 128.0 +17.543982 -2.6109996 4.3889847 128.0 +17.562178 -2.723959 4.397572 128.0 +0 -0 0 128.0 +19.158476 -3.2128987 4.8037944 128.0 +25.040569 -4.357832 6.2753072 128.0 +18.057728 -3.2565513 4.5392609 128.0 +17.27943 -3.225738 4.3498654 128.0 +17.240242 -3.3280194 4.3450947 128.0 +17.248068 -3.4394403 4.3522506 128.0 +17.254223 -3.5508864 4.3591681 128.0 +19.099747 -4.0531354 4.828125 128.0 +0 -0 0 128.0 +19.822615 -4.4614744 5.0230069 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9573369 -2.2582183 2.0639992 128.0 +7.9423985 -2.30673 2.0637608 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.005579 -2.5397322 2.095247 128.0 +7.9815311 -2.5861106 2.0931003 128.0 +7.958137 -2.6325946 2.091192 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.53302 -7.6872053 4.9605112 128.0 +0 -0 0 128.0 +18.380178 -7.8895364 4.9452448 128.0 +0 -0 0 128.0 +18.431097 -8.1806927 4.9853187 128.0 +19.130293 -8.631978 5.1873565 128.0 +19.004587 -8.7159958 5.1677966 128.0 +19.0819 -8.8935757 5.2033381 128.0 +18.994495 -8.9951124 5.1945124 128.0 +19.106091 -9.1919155 5.2400723 128.0 +0 -0 0 128.0 +18.990112 -9.4248209 5.2395949 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +14.19519 -7.4844346 3.9739366 128.0 +14.141294 -7.5672698 3.9717898 128.0 +14.102276 -7.6580682 3.9739366 128.0 +3.5101979 -1.9331498 1.0165988 128.0 +3.540652 -1.9783486 1.0285255 128.0 +3.4701614 -1.9669763 1.0120666 128.0 +3.4714949 -1.9959806 1.0158832 128.0 +3.4709253 -2.0240963 1.0192226 128.0 +3.4784982 -2.0572257 1.0249474 128.0 +14.57066 -8.7427568 4.2060294 128.0 +3.4214656 -2.0805743 1.0158832 128.0 +3.2747416 -2.0189254 0.97724074 128.0 +3.1956 -1.997269 0.95791954 128.0 +4.1863685 -2.6528018 1.2496459 128.0 +3.4445372 -2.2122169 1.0378282 128.0 +3.2331595 -2.1045139 0.97986466 128.0 +3.2242382 -2.1269875 0.98105729 128.0 +3.2571354 -2.1775095 0.9946537 128.0 +3.3257053 -2.2530353 1.0189841 128.0 +3.2597866 -2.2376597 1.0034795 128.0 +3.6572981 -2.5438647 1.1265627 128.0 +9.1021357 -6.4164433 2.767673 128.0 +9.0625935 -6.4721723 2.767673 128.0 +3.9277022 -2.8407571 1.2229302 128.0 +3.9297788 -2.8791568 1.2288935 128.0 +3.5206258 -2.6125927 1.1091498 128.0 +4.6206179 -3.4735103 1.4521608 128.0 +4.6015358 -3.5035617 1.4528764 128.0 +3.9455938 -3.0423541 1.2560863 128.0 +3.984247 -3.1113484 1.2739764 128.0 +4.0442853 -3.1984043 1.2987839 128.0 +3.4493613 -2.7622674 1.1177369 128.0 +3.4217896 -2.7748141 1.1143975 128.0 +3.6500671 -2.99735 1.192398 128.0 +3.7973442 -3.1575704 1.2453524 128.0 +3.3344831 -2.8072965 1.102948 128.0 +3.4716222 -2.959415 1.1528014 128.0 +4.1288681 -3.5639679 1.3720137 128.0 +4.0374684 -3.5285096 1.349353 128.0 +3.5627203 -3.1521969 1.2007467 128.0 +3.5903196 -3.2161272 1.2162513 128.0 +3.3979084 -3.0814805 1.1590033 128.0 +3.1851206 -2.9242337 1.0943607 128.0 +3.1898744 -2.964885 1.1019938 128.0 +3.1716223 -2.9844019 1.1019938 128.0 +3.1595774 -3.0098367 1.1041405 128.0 +3.0746591 -2.9651062 1.0814799 128.0 +3.9289517 -3.8362329 1.3810779 128.0 +3.7803543 -3.7366731 1.3379034 128.0 +3.3215415 -3.3235092 1.1864346 128.0 +2.804523 -2.8405838 1.0127822 128.0 +7.4261637 -7.6173339 2.6453052 128.0 +3.1978364 -3.3197229 1.1644895 128.0 +2.4345362 -2.5581679 0.89971739 128.0 +2.4148042 -2.5688109 0.89828616 128.0 +3.062206 -3.2982931 1.1377738 128.0 +2.3686631 -2.5825012 0.89303845 128.0 +3.1120977 -3.4356916 1.1709299 128.0 +2.2778845 -2.5454984 0.87133193 128.0 +2.2557938 -2.5521488 0.86894655 128.0 +2.2841425 -2.6164358 0.88540536 128.0 +3.0065591 -3.4874892 1.1632968 128.0 +3.1569276 -3.7077749 1.2284164 128.0 +2.2249732 -2.6453979 0.88135034 128.0 +2.2111804 -2.6619892 0.88230443 128.0 +2.1732566 -2.6492205 0.87395579 128.0 +2.1587937 -2.6647699 0.8746714 128.0 +2.1545305 -2.6931365 0.87944204 128.0 +2.1692557 -2.7459421 0.89184576 128.0 +2.1577396 -2.766094 0.8939926 128.0 +2.1531658 -2.7954423 0.89900178 128.0 +2.1359727 -2.8086014 0.89900178 128.0 +2.156585 -2.8721449 0.91450649 128.0 +2.0984557 -2.8306999 0.89780915 128.0 +2.0420644 -2.7902193 0.88158888 128.0 +2.0186524 -2.7940354 0.87896496 128.0 +1.9873801 -2.786598 0.87300164 128.0 +2.0048871 -2.8479857 0.88779074 128.0 +1.9823897 -2.8530548 0.8856439 128.0 +1.9571608 -2.8539495 0.88230443 128.0 +1.9434208 -2.8715358 0.88397419 128.0 +0 -0 0 128.0 +2.4549816 -3.7256889 1.1282325 128.0 +2.4347208 -3.7447538 1.1294252 128.0 +1.8765575 -2.9249053 0.88588244 128.0 +1.8715529 -2.9568832 0.89184576 128.0 +1.8533746 -2.9683111 0.89184576 128.0 +1.8590493 -3.0184991 0.90305686 128.0 +1.9437951 -3.2000332 0.95195621 128.0 +1.9520568 -3.2585614 0.96531409 128.0 +1.917709 -3.2462254 0.95839661 128.0 +1.9060596 -3.2721992 0.9624517 128.0 +1.8656437 -3.248457 0.95243329 128.0 +1.7949862 -3.1702487 0.92714876 128.0 +1.8000969 -3.2253065 0.93955249 128.0 +1.7531404 -3.1869309 0.92571753 128.0 +1.7252265 -3.1822579 0.92142391 128.0 +1.3878291 -2.597368 0.75564319 128.0 +1.7642512 -3.3518836 0.96269023 128.0 +1.7552674 -3.3850646 0.9688921 128.0 +1.7375543 -3.4018259 0.9705618 128.0 +1.7114146 -3.4020112 0.96769941 128.0 +1.6844764 -3.4002633 0.96435994 128.0 +0 -0 0 128.0 +1.5863277 -3.3033533 0.93239647 128.0 +1.4884734 -3.1488161 0.88779074 128.0 +1.57719 -3.3903813 0.95076352 128.0 +1.6217936 -3.5430644 0.98940599 128.0 +1.2927791 -2.8701463 0.80549669 128.0 +1.580158 -3.5671396 0.99059862 128.0 +1.4256804 -3.2722411 0.90902019 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.96395534 -2.3687832 0.66046834 128.0 +0.94508135 -2.3638306 0.65760595 128.0 +1.551405 -3.9526522 1.075278 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.4706157 -3.9595981 1.0697918 128.0 +0.90668285 -2.4866107 0.6824134 128.0 +1.1494747 -3.214617 0.87085485 128.0 +0 -0 0 128.0 +1.2862592 -3.7419133 1.0041951 128.0 +0.8246302 -2.4464459 0.66643167 128.0 +1.1918876 -3.6107724 0.96626824 128.0 +0.96377289 -2.9803653 0.80168015 128.0 +0.9419542 -2.9751112 0.79881775 128.0 +0.88922995 -2.8695078 0.7701937 128.0 +1.281041 -4.2272906 1.1172599 128.0 +0.74064112 -2.497489 0.67215645 128.0 +0.80656421 -2.7827754 0.74395502 128.0 +0.8639906 -3.0511992 0.81122148 128.0 +0.92047697 -3.3288474 0.88063473 128.0 +0.89700121 -3.3231807 0.87777233 128.0 +0.81953746 -3.1116672 0.82267106 128.0 +0.80163532 -3.1213405 0.82386374 128.0 +0.75633281 -3.021621 0.79738653 128.0 +2.1605661 -8.8717213 2.2751014 128.0 +1.8978877 -8.0059814 2.0532651 128.0 +0.68663001 -2.9744654 0.78212041 128.0 +0.66942739 -2.9833605 0.78331304 128.0 +1.8414493 -8.4589901 2.1586969 128.0 +1.8061622 -8.548995 2.1784952 128.0 +1.5088332 -7.3640065 1.8786587 128.0 +0.55387694 -2.7864659 0.73012012 128.0 +1.6040061 -8.3490391 2.1205316 128.0 +0.50563943 -2.7176218 0.71127594 128.0 +1.5915722 -8.8708935 2.2460003 128.0 +0.49525714 -2.8566351 0.74443209 128.0 +1.3017317 -7.8044281 1.9757419 128.0 +1.3402274 -8.3511629 2.1097977 128.0 +1.217099 -7.8927603 1.9938704 128.0 +0.43224317 -2.9169247 0.75659734 128.0 +1.203428 -8.495573 2.1398528 128.0 +1.1135279 -8.2237091 2.0706782 128.0 +1.01533 -7.8605371 1.9790813 128.0 +0.95086533 -7.7345653 1.9464022 128.0 +0.31063217 -2.6548636 0.6888538 128.0 +0.3111656 -2.8092332 0.72654212 128.0 +0.28979847 -2.7714872 0.71676224 128.0 +0.26559326 -2.6997585 0.69863367 128.0 +0.27182609 -2.9498749 0.75993681 128.0 +0.25959918 -3.0201867 0.77687263 128.0 +0.65546143 -8.2416553 2.063045 128.0 +0.21386594 -2.9049828 0.74777156 128.0 +0.5552488 -8.2636127 2.066623 128.0 +0.17436479 -2.8443816 0.7322669 128.0 +0 -0 0 128.0 +0.13520572 -2.7590079 0.71079892 128.0 +0 -0 0 128.0 +0.091548368 -2.4906616 0.64448661 128.0 +0.11588217 -3.8054953 0.96746087 128.0 +0.063097827 -2.5799453 0.66619313 128.0 +0.044785943 -2.4414339 0.63208288 128.0 +0.032754149 -2.6931691 0.69386303 128.0 +0 -0 0 128.0 +-0 -0 0 128.0 +-0.018783344 -2.9865918 0.76590014 128.0 +-0.037270185 -2.9990442 0.76900107 128.0 +-0.056131396 -3.0230329 0.77496439 128.0 +-0.075410187 -3.0517564 0.78212041 128.0 +-0.094801009 -3.0725908 0.78736812 128.0 +-0 -0 0 128.0 +-0.13452624 -3.1177666 0.79881775 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.3709383 -3.6173697 0.98248851 128.0 +-1.3938082 -3.6107013 0.98296559 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4905584 -3.5960393 0.98845184 128.0 +-1.51184 -3.5850363 0.98797476 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6177635 -3.6471367 1.0123051 128.0 +-1.6469024 -3.6521895 1.0163603 128.0 +-1.6656368 -3.6340711 1.0142134 128.0 +-1.5906628 -3.4151745 0.957681 128.0 +-1.5334378 -3.2403486 0.91283673 128.0 +-1.5490807 -3.2221274 0.91045141 128.0 +-1.5739393 -3.223032 0.91331381 128.0 +-1.5962765 -3.2185328 0.91474497 128.0 +-1.6116239 -3.2000058 0.91235965 128.0 +-1.6276891 -3.1831408 0.91045141 128.0 +-1.642265 -3.163614 0.90782756 128.0 +-1.6675346 -3.1646447 0.91092849 128.0 +-1.858309 -3.4745774 1.00014 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-4.9883356 -8.9239759 2.5434515 128.0 +-1.9094806 -3.3687961 0.98344266 128.0 +-1.9940435 -3.468128 1.0149291 128.0 +-1.9330565 -3.3149147 0.97485542 128.0 +-1.9414897 -3.2829332 0.96913064 128.0 +-1.9930791 -3.3234186 0.98415822 128.0 +-0 -0 0 128.0 +-4.5520983 -7.3808045 2.1622751 128.0 +-5.1817794 -8.2872458 2.4330103 128.0 +-5.2408514 -8.2684183 2.4368269 128.0 +-4.8184395 -7.5000091 2.2219083 128.0 +-2.1951485 -3.3723092 1.0206538 128.0 +-2.2152643 -3.3579659 1.0204153 128.0 +-2.2406864 -3.3515747 1.0225621 128.0 +-2.2666583 -3.3458016 1.0249474 128.0 +-2.2750487 -3.31422 1.0196997 128.0 +-5.4312844 -7.8061948 2.3681293 128.0 +-5.3850636 -7.6393843 2.3280556 128.0 +-5.4120803 -7.5785403 2.3197072 128.0 +-5.445385 -7.5270944 2.3142209 128.0 +-5.4897456 -7.4911904 2.3135052 128.0 +-5.5813427 -7.5189619 2.3323493 128.0 +-5.6548071 -7.5210524 2.3435605 128.0 +-5.6931992 -7.4761705 2.3404596 128.0 +-5.7739625 -7.4864631 2.354533 128.0 +-5.8287582 -7.4623728 2.3581109 128.0 +-5.8461156 -7.3906736 2.3469 128.0 +-6.4214711 -8.016283 2.5551395 128.0 +-6.4827747 -7.9918137 2.5599103 128.0 +-6.56498 -7.9924054 2.5727911 128.0 +-6.5356402 -7.8579059 2.5427358 128.0 +-6.635036 -7.8785605 2.5622957 128.0 +-6.7279968 -7.8901615 2.5792315 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.1599503 -9.6121922 3.2936392 128.0 +-9.1553707 -9.4901152 3.2712171 128.0 +-9.1808558 -9.4004145 3.2597675 128.0 +-9.3489838 -9.4557695 3.2984099 128.0 +-9.0392447 -9.0310459 3.1707945 128.0 +-9.1636152 -9.0436211 3.1946478 128.0 +-9.2015476 -8.9702778 3.1886845 128.0 +-9.2473202 -8.9048939 3.1855836 128.0 +-10.466419 -9.9555988 3.5803564 128.0 +-10.524478 -9.8885307 3.5794022 128.0 +-10.602751 -9.8402815 3.5853655 128.0 +-10.673669 -9.7848825 3.5889435 128.0 +-9.0201006 -8.1679659 3.021234 128.0 +-9.0490551 -8.0936928 3.0143166 128.0 +-9.0730715 -8.0155153 3.0059679 128.0 +-9.1081791 -7.9475627 3.0014358 128.0 +-11.077679 -9.5466843 3.6242466 128.0 +-10.274445 -8.7452927 3.346355 128.0 +-9.7108717 -8.1634665 3.1483724 128.0 +-10.219585 -8.4845734 3.2948318 128.0 +-9.7029209 -7.9556437 3.1142621 128.0 +-10.553902 -8.5455055 3.3678231 128.0 +-9.7482386 -7.7947392 3.0980418 128.0 +-9.8324699 -7.7636619 3.1094913 128.0 +-9.9028988 -7.7210965 3.1166472 128.0 +-11.613118 -8.9402437 3.6321182 128.0 +-11.692498 -8.8876219 3.6397512 128.0 +-11.667581 -8.7562599 3.6154208 128.0 +-10.418704 -7.7196908 3.2173085 128.0 +-10.383569 -7.5954232 3.1922624 128.0 +-11.758276 -8.4905586 3.5946684 128.0 +-11.340389 -8.0834627 3.4529796 128.0 +-11.352444 -7.9874654 3.4417684 128.0 +-0 -0 0 128.0 +-11.438392 -7.8398666 3.4384289 128.0 +-11.346309 -7.6748719 3.3969243 128.0 +-11.360877 -7.5835438 3.3873827 128.0 +-11.178477 -7.3630686 3.3201163 128.0 +-11.524743 -7.4901218 3.4083738 128.0 +-0 -0 0 128.0 +-16.154535 -10.218793 4.7274637 128.0 +-16.208693 -10.114338 4.7250786 128.0 +-16.145563 -9.9378338 4.6890597 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.09251 -9.3685951 4.6060505 128.0 +-6.4541826 -3.7054133 1.8602916 128.0 +-16.263741 -9.2029276 4.6222706 128.0 +-11.349741 -6.3310995 3.2244644 128.0 +-11.413905 -6.2753735 3.2316206 128.0 +-11.473543 -6.2167854 3.2375839 128.0 +-6.5056949 -3.4741335 1.8438329 128.0 +-6.5045424 -3.4223964 1.837631 128.0 +-6.5055876 -3.3721452 1.8321446 128.0 +-7.4292016 -3.7930646 2.0811737 128.0 +-7.4662185 -3.7543869 2.08499 128.0 +-7.4690967 -3.6985955 2.0795038 128.0 +-16.126154 -7.8611112 4.4388385 128.0 +-7.043746 -3.381058 1.9514114 128.0 +-7.0020123 -3.3083286 1.9344755 128.0 +-7.0186577 -3.2636654 1.9335214 128.0 +-7.2089977 -3.2984962 1.9795583 128.0 +-7.1679945 -3.2267041 1.9630996 128.0 +-7.1610169 -3.1708696 1.9559436 128.0 +-7.1830096 -3.1280334 1.9566592 128.0 +-17.039738 -7.2946162 4.5850592 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-17.843155 -6.872942 4.7288952 128.0 +-9.5460978 -3.6105046 2.5391579 128.0 +-6.9331818 -2.5740821 1.848842 128.0 +-9.5431461 -3.4761417 2.5269926 128.0 +-6.9358964 -2.4786808 1.8414475 128.0 +-7.099453 -2.4880862 1.8800899 128.0 +-7.1063194 -2.4416392 1.8779432 128.0 +-7.6163435 -2.5646501 2.006274 128.0 +-7.5028167 -2.4752913 1.9728794 128.0 +-7.5631461 -2.4438329 1.9845675 128.0 +-7.6307778 -2.4140689 1.9981639 128.0 +-7.6027713 -2.3539953 1.9871914 128.0 +-9.5159817 -2.8821986 2.4745152 128.0 +-12.615694 -3.7362895 3.264061 128.0 +-9.0077124 -2.6080825 2.3356888 128.0 +-9.0188742 -2.5514419 2.334496 128.0 +-8.8714781 -2.4510756 2.2929914 128.0 +-8.8132133 -2.3768802 2.2743857 128.0 +-12.325208 -3.2425737 3.1626842 128.0 +-13.062623 -3.3509445 3.3446853 128.0 +-12.302831 -3.0757759 3.1471796 128.0 +-13.167869 -3.2062407 3.3611441 128.0 +-0 -0 0 128.0 +-9.1417208 -2.107796 2.336643 128.0 +-17.794241 -3.9868371 4.5113525 128.0 +-17.612448 -3.8327811 4.4595909 128.0 +-12.465667 -2.6330962 3.1617301 128.0 +-12.771765 -2.6159668 3.2344828 128.0 +-12.750425 -2.5301828 3.2251801 128.0 +-17.281569 -3.3188355 4.3546362 128.0 +-13.299939 -2.4699411 3.3549423 128.0 +-17.342024 -3.1102843 4.3598838 128.0 +-0 -0 0 128.0 +-17.296505 -2.8835087 4.3393698 128.0 +-17.387707 -2.7891638 4.3577371 128.0 +-17.798016 -2.7430463 4.4555354 128.0 +-16.562719 -2.4487998 4.1447268 128.0 +-0 -0 0 128.0 +-16.505871 -2.2337801 4.123497 128.0 +-16.51445 -2.1318386 4.1223044 128.0 +-18.18223 -2.2336771 4.5318666 128.0 +-18.064407 -2.1067801 4.4994259 128.0 +-17.747835 -1.9595779 4.4180861 128.0 +-12.720368 -1.325868 3.1736569 128.0 +-17.263128 -1.6919402 4.2928557 128.0 +-12.762758 -1.1721541 3.1803358 128.0 +-12.797771 -1.0962223 3.1872532 128.0 +-17.338783 -1.3776617 4.304544 128.0 +-12.558438 -0.92065406 3.1252346 128.0 +-18.100481 -1.2148103 4.4882145 128.0 +-17.995152 -1.0968784 4.4605451 128.0 +-13.072644 -0.71667093 3.2480793 128.0 +-13.146635 -0.63983798 3.2652538 128.0 +-13.165837 -0.55981845 3.2690701 128.0 +-13.198139 -0.48008031 3.2762263 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-36.584564 30.398211 11.136353 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.173849 14.65772 5.1279888 128.0 +-16.040552 14.717184 5.1143489 128.0 +-16.010597 14.871662 5.1336718 128.0 +-15.872931 14.92626 5.1188955 128.0 +-15.529244 14.783669 5.0377383 128.0 +-15.359006 14.802316 5.0120497 128.0 +-14.443298 14.091784 4.7431169 128.0 +-14.339932 14.163718 4.7376609 128.0 +-14.256887 14.255571 4.7390251 128.0 +-14.30466 14.479948 4.7840366 128.0 +-14.057752 14.405755 4.7312956 128.0 +-14.981514 15.541999 5.0718379 128.0 +-14.878481 15.625874 5.0693374 128.0 +-14.757636 15.690626 5.060926 128.0 +-13.951194 15.016801 4.8174543 128.0 +-13.245785 14.434145 4.6058087 128.0 +-13.167434 14.526692 4.609446 128.0 +-0 0 0 128.0 +-13.046238 14.752836 4.6299062 128.0 +-12.978533 14.859012 4.6380901 128.0 +-13.446264 15.586491 4.837914 128.0 +-13.379428 15.702798 4.8483715 128.0 +-13.396943 15.920204 4.8897457 128.0 +-13.557941 16.31366 4.9843154 128.0 +-13.28027 16.18051 4.9190712 128.0 +-13.278851 16.382732 4.9554443 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-11.360662 15.514688 4.5214691 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.3688612 13.47647 3.864027 128.0 +-9.2342033 13.458224 3.842658 128.0 +-9.0373297 13.346108 3.7951458 128.0 +-8.8275757 13.210228 3.7414956 128.0 +-8.4933138 12.880424 3.6341953 128.0 +-10.18959 15.660995 4.3941636 128.0 +-10.10067 15.734695 4.397346 128.0 +-8.208416 12.961355 3.6139629 128.0 +-7.9971552 12.800878 3.5559933 128.0 +-8.0262623 13.024632 3.6039603 128.0 +-7.8627343 12.93633 3.5664506 128.0 +-7.7161169 12.872409 3.5359881 128.0 +-7.610723 12.875082 3.5239396 128.0 +-0 0 0 128.0 +-9.0286913 15.710681 4.2625389 128.0 +-7.8496137 13.855181 3.7499068 128.0 +-7.7649269 13.903934 3.7501342 128.0 +-7.6752415 13.94364 3.7480881 128.0 +-7.6591959 14.118866 3.7821879 128.0 +-0 0 0 128.0 +-7.67733 14.576251 3.8783491 128.0 +-7.7949715 15.022422 3.983376 128.0 +-7.5404286 14.752607 3.9001727 128.0 +-7.628428 15.15348 3.992924 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.0223007 14.845803 3.8663003 128.0 +-6.9528599 14.935402 3.8783491 128.0 +-6.9357147 15.140684 3.9201779 128.0 +-6.8694921 15.242439 3.9354091 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.8080473 16.15304 4.1245489 128.0 +-6.6972513 16.166618 4.1175013 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.8504496 13.821189 3.4518757 128.0 +-4.7810788 13.895811 3.4630148 128.0 +-4.4505024 13.197755 3.2838778 128.0 +-4.379827 13.256252 3.2916071 128.0 +-4.3011041 13.291215 3.293653 128.0 +-4.2435908 13.393479 3.3122942 128.0 +-4.5034413 14.522381 3.5819092 128.0 +-4.4269724 14.591674 3.592139 128.0 +-4.298296 14.486927 3.5600853 128.0 +-3.8810658 13.381356 3.2850144 128.0 +-3.8156157 13.463943 3.2993364 128.0 +-4.2592673 15.388554 3.7599094 128.0 +-4.1718774 15.440722 3.7662747 128.0 +-3.5753345 13.562969 3.3068383 128.0 +-3.4922888 13.585595 3.3070657 128.0 +-3.4419987 13.739015 3.338892 128.0 +-3.5956697 14.735255 3.5732706 128.0 +-3.4763792 14.635767 3.544172 128.0 +-0 0 0 128.0 +-3.3759089 15.030778 3.6287394 128.0 +-3.3272126 15.25101 3.6764789 128.0 +-3.2404311 15.30353 3.6842082 128.0 +-2.8187261 13.727235 3.3038831 128.0 +-2.8828692 14.490199 3.4814286 128.0 +-2.7417815 14.237 3.417094 128.0 +-2.6595445 14.281318 3.4236865 128.0 +-2.3773618 13.216259 3.1672568 128.0 +-2.4869218 14.32919 3.4275513 128.0 +-2.2379732 13.381785 3.1997652 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-1.8946189 13.945911 3.3179774 128.0 +-1.8112663 13.974657 3.3220694 128.0 +-0 0 0 128.0 +-1.6269456 13.887506 3.2966084 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.85325205 13.896908 3.2827413 128.0 +0.93555313 13.847689 3.2725112 128.0 +1.0222212 13.864996 3.2779672 128.0 +1.1094469 13.885643 3.2843325 128.0 +1.1919551 13.847528 3.2770579 128.0 +1.3415639 14.541047 3.4414184 128.0 +1.4406811 14.633331 3.4650607 128.0 +1.6299505 15.575314 3.6883001 128.0 +1.7213045 15.527271 3.6794341 128.0 +1.8231119 15.572515 3.6926193 128.0 +1.8511941 15.013996 3.5639498 128.0 +2.0753579 16.02219 3.8040116 128.0 +2.0126376 14.82321 3.5246217 128.0 +2.0216796 14.234022 3.3886776 128.0 +0 0 0 128.0 +2.1448877 13.876117 3.3102484 128.0 +2.2383399 13.914613 3.3225241 128.0 +2.4970512 14.937951 3.5680418 128.0 +2.4400461 14.065522 3.3650351 128.0 +2.496151 13.882557 3.3252521 128.0 +2.8106096 15.099124 3.6178274 128.0 +2.8330777 14.717257 3.5312142 128.0 +0 0 0 128.0 +2.8543012 13.905833 3.3463938 128.0 +0 0 0 128.0 +3.0871804 14.156149 3.4148207 128.0 +3.1727028 14.131239 3.4134567 128.0 +3.25453 14.090631 3.4084554 128.0 +0 0 0 128.0 +3.8543277 15.800831 3.8292453 128.0 +0 0 0 128.0 +3.5101669 13.659427 3.3247974 128.0 +3.5507388 13.473781 3.2852418 128.0 +4.2927351 15.89327 3.8756211 128.0 +4.3870573 15.855368 3.8728931 128.0 +4.4967365 15.872188 3.8835776 128.0 +4.2846413 14.777118 3.6241927 128.0 +4.477684 15.095989 3.7083051 128.0 +4.4933534 14.814753 3.646471 128.0 +4.5864773 14.794344 3.6482897 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +27.761995 4.6433468 6.6033683 128.0 +27.764967 4.4688911 6.5974579 128.0 +27.771654 4.2953186 6.5926838 128.0 +27.775331 4.1215463 6.5874553 128.0 +27.784674 3.9488497 6.583818 128.0 +27.782326 3.7747514 6.5776796 128.0 +27.766335 3.5992033 6.5685863 128.0 +27.736673 3.4224434 6.5565381 128.0 +27.718462 3.2476566 6.5474448 128.0 +27.709799 3.0744035 6.5408521 128.0 +27.703928 2.9017849 6.5351691 128.0 +27.694077 2.7290678 6.5288038 128.0 +27.68412 2.5566704 6.5226655 128.0 +27.687643 2.3857524 6.5199375 128.0 +27.673609 2.2135673 6.5133452 128.0 +27.667248 2.0422895 6.5087986 128.0 +27.659826 1.8711731 6.504252 128.0 +27.649403 1.7001053 6.4992504 128.0 +27.64473 1.5296125 6.4958405 128.0 +27.639004 1.3592411 6.4924307 128.0 +27.629313 1.188872 6.4883385 128.0 +27.61565 1.0185653 6.4835649 128.0 +27.611647 0.84880036 6.4812913 128.0 +27.60368 0.67905098 6.4783359 128.0 +27.609274 0.50970119 6.4787908 128.0 +27.605064 0.34020019 6.4771996 128.0 +27.593 0.17072773 6.4740167 128.0 +27.590607 0.0014168681 6.4733348 128.0 +27.577436 -0.16779909 6.4703794 128.0 +27.571018 -0.33694845 6.469243 128.0 +27.563564 -0.50602543 6.4681063 128.0 +27.556046 -0.6750474 6.4671969 128.0 +27.553331 -0.84417504 6.4676514 128.0 +27.535955 -1.0127938 6.4649234 128.0 +27.521441 -1.1813983 6.4631047 128.0 +27.519508 -1.3505306 6.464469 128.0 +27.51362 -1.5195228 6.4651508 128.0 +27.506695 -1.6884936 6.4658327 128.0 +27.498732 -1.8574365 6.4665151 128.0 +27.492643 -2.0265601 6.4678788 128.0 +27.483574 -2.1955237 6.4687881 128.0 +27.463764 -2.3636177 6.4674244 128.0 +27.457472 -2.5328925 6.46947 128.0 +27.433661 -2.7005577 6.4676514 128.0 +27.449503 -2.8722818 6.4753809 128.0 +27.431364 -3.0406547 6.4753809 128.0 +27.434435 -3.2115171 6.4806094 128.0 +27.397783 -3.3777657 6.4767447 128.0 +27.411308 -3.5503142 6.4849286 128.0 +27.392868 -3.7189641 6.4858379 128.0 +27.351215 -3.8843722 6.4815187 128.0 +27.364433 -4.057693 6.4903846 128.0 +17.612123 -2.7222714 4.1927481 128.0 +18.391178 -2.9583247 4.3809781 128.0 +18.372681 -3.0711153 4.3809781 128.0 +19.190166 -3.3289108 4.5792112 128.0 +18.489838 -3.3244309 4.4180331 128.0 +0 -0 0 128.0 +17.421576 -3.3535876 4.1741071 128.0 +17.495228 -3.4792233 4.1966128 128.0 +19.230698 -3.9471273 4.6153569 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.01659 -4.4938979 4.8215461 128.0 +0 -0 0 128.0 +20.175962 -4.790482 4.8733778 128.0 +20.168894 -4.9197273 4.8788338 128.0 +20.177057 -5.0530872 4.888154 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9709044 -2.2584317 1.9664935 128.0 +7.9578323 -2.3075688 1.9667208 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0946903 -2.5642109 2.0146878 128.0 +7.9972682 -2.5874546 1.9946826 128.0 +8.0117559 -2.6465547 2.0021844 128.0 +0 -0 0 128.0 +19.934326 -6.856811 4.9536257 128.0 +0 -0 0 128.0 +19.830343 -7.0943594 4.949079 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.584295 -7.9391079 5.1827755 128.0 +0 -0 0 128.0 +18.720284 -7.485393 4.7390251 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.543434 -7.8135791 4.7299318 128.0 +18.385942 -7.8804111 4.7021971 128.0 +18.32653 -7.9884076 4.6994696 128.0 +18.269157 -8.0971556 4.6974235 128.0 +19.172693 -8.638731 4.941577 128.0 +19.153856 -8.7720232 4.9504428 128.0 +19.084663 -8.8823986 4.9465785 128.0 +19.047409 -9.007658 4.9511251 128.0 +0 -0 0 128.0 +19.111347 -9.3265629 4.9968185 128.0 +0 -0 0 128.0 +14.42692 -7.2611532 3.802875 128.0 +14.404641 -7.3610592 3.8087857 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +14.222221 -7.7137427 3.8094676 128.0 +14.116608 -7.7689371 3.7940092 128.0 +3.5874407 -2.0034215 0.99169719 128.0 +3.6267681 -2.0546722 1.0055645 128.0 +3.9729526 -2.2830663 1.1021801 128.0 +3.1477752 -1.8347521 0.88303286 128.0 +3.8373268 -2.2682304 1.0730817 128.0 +3.1433995 -1.8842549 0.88803416 128.0 +3.1259532 -1.8999671 0.88644284 128.0 +3.8645701 -2.381386 1.0921776 128.0 +3.1569149 -1.9722322 0.9014467 128.0 +3.8079045 -2.4114401 1.0846757 128.0 +3.1439486 -2.0181875 0.90462935 128.0 +3.1551793 -2.0528393 0.91122198 128.0 +3.1506541 -2.0775204 0.91349524 128.0 +3.1427059 -2.1000593 0.91485924 128.0 +3.1200843 -2.1127517 0.91213125 128.0 +3.0998344 -2.1268988 0.91008532 128.0 +3.1171122 -2.1669986 0.91872388 128.0 +3.1196814 -2.1972976 0.92327052 128.0 +3.5865526 -2.5591247 1.0610332 128.0 +3.5518401 -2.5673933 1.0555773 128.0 +3.4676588 -2.5390928 1.0357995 128.0 +3.4840848 -2.5841041 1.04512 128.0 +3.4557052 -2.596076 1.0414827 128.0 +4.307754 -3.2775903 1.2960937 128.0 +4.0630827 -3.1310043 1.2299403 128.0 +3.9992657 -3.1211298 1.2167552 128.0 +4.0732541 -3.2192702 1.2444896 128.0 +4.0290937 -3.2247324 1.2372149 128.0 +3.9903166 -3.234066 1.2315316 128.0 +3.6722841 -3.0138667 1.1415085 128.0 +3.414789 -2.8378158 1.0689899 128.0 +3.2885168 -2.7671838 1.0357995 128.0 +2.9512284 -2.5145078 0.93759239 128.0 +2.9047723 -2.5058558 0.92804444 128.0 +2.902545 -2.5351617 0.93213642 128.0 +2.9066331 -2.5703392 0.93827438 128.0 +2.8915327 -2.5887752 0.93850172 128.0 +3.3006127 -2.9916325 1.0723997 128.0 +3.7156053 -3.4094682 1.2097079 128.0 +3.6739235 -3.4129832 1.2031152 128.0 +3.6777427 -3.4588101 1.2110718 128.0 +3.6881905 -3.5115261 1.2213017 128.0 +2.9730926 -2.865768 0.99647117 128.0 +0 -0 0 128.0 +2.9169159 -2.8815072 0.9896512 128.0 +3.9052806 -3.9053192 1.3217821 128.0 +2.837534 -2.8727486 0.97510201 128.0 +2.9259551 -2.9988291 1.0105656 128.0 +3.2217686 -3.3427405 1.1162747 128.0 +2.4336352 -2.5563562 0.85643512 128.0 +2.4072289 -2.559891 0.85279781 128.0 +2.3934648 -2.5767536 0.8534798 128.0 +2.3604898 -2.5727365 0.84756923 128.0 +2.8685317 -3.1650999 1.0296615 128.0 +2.3599205 -2.6363339 0.85848111 128.0 +2.3191855 -2.6230443 0.84984255 128.0 +2.2902343 -2.6225567 0.84529591 128.0 +2.2308435 -2.5864208 0.82983738 128.0 +2.2452476 -2.6356394 0.84074926 128.0 +2.2578764 -2.6836405 0.85120648 128.0 +2.2780912 -2.7416308 0.86461908 128.0 +2.2334235 -2.7216842 0.85438913 128.0 +2.2473416 -2.7731624 0.86575574 128.0 +2.5948043 -3.2422929 1.0019271 128.0 +2.4112117 -3.051116 0.94032037 128.0 +2.354697 -3.0174904 0.92599851 128.0 +2.1482909 -2.788142 0.8541618 128.0 +2.0432763 -2.685802 0.82028949 128.0 +2.0384569 -2.71386 0.82483608 128.0 +2.0919652 -2.8209555 0.85234314 128.0 +2.0976305 -2.8651659 0.86143643 128.0 +2.0879979 -2.8890316 0.86461908 128.0 +2.0272417 -2.8415449 0.8473419 128.0 +2.3103485 -3.2806621 0.96919143 128.0 +1.9966661 -2.8726048 0.84916055 128.0 +1.9437402 -2.8334124 0.83461136 128.0 +1.9285023 -2.848511 0.83552068 128.0 +1.9218094 -2.8764837 0.84006727 128.0 +1.7995843 -2.7296925 0.79573768 128.0 +1.9102653 -2.9365816 0.85029721 128.0 +1.9158846 -2.9851243 0.8605271 128.0 +1.8761693 -2.963093 0.85120648 128.0 +1.8600168 -2.9778528 0.85211581 128.0 +1.8069682 -2.9328353 0.83665729 128.0 +1.7894444 -2.9446998 0.83688462 128.0 +1.7783521 -2.9673176 0.84006727 128.0 +2.0123529 -3.4048655 0.9557789 128.0 +2.0478203 -3.5139008 0.98192197 128.0 +1.6443385 -2.8619254 0.80301231 128.0 +1.6205064 -2.8609464 0.80005699 128.0 +1.598648 -2.863184 0.798011 128.0 +1.5932597 -2.8951199 0.80392164 128.0 +1.5782517 -2.9099772 0.80528563 128.0 +1.5562348 -2.9118772 0.80323964 128.0 +1.6340972 -3.103169 0.85120648 128.0 +1.6881373 -3.2540295 0.8882615 128.0 +1.2816468 -2.5082104 0.69002867 128.0 +1.6717247 -3.3214703 0.90053737 128.0 +1.6932704 -3.4162958 0.92258853 128.0 +1.1314548 -2.318723 0.6347872 128.0 +1.6600778 -3.4552495 0.92736244 128.0 +1.5384887 -3.2532201 0.87257564 128.0 +1.6479663 -3.5406907 0.94418496 128.0 +1.635944 -3.5719838 0.94964093 128.0 +1.2038479 -2.6719503 0.71662641 128.0 +1.301101 -2.935678 0.78209782 128.0 +1.4173442 -3.2515714 0.8605271 128.0 +1.4088783 -3.2870574 0.867347 128.0 +1.5982256 -3.7927787 0.99328852 128.0 +1.5782779 -3.8106108 0.99533451 128.0 +1.5772656 -3.8752413 1.0092016 128.0 +1.5596061 -3.9002173 1.0130663 128.0 +1.5274551 -3.8888667 1.0078378 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.90924048 -2.4934566 0.65206438 128.0 +1.1268955 -3.1499667 0.81346953 128.0 +0.86954355 -2.4786983 0.64569908 128.0 +0.84671372 -2.4618871 0.64024311 128.0 +0.85524291 -2.5371656 0.65752029 128.0 +1.0694171 -3.2377002 0.82847339 128.0 +0.95507807 -2.952352 0.75686407 128.0 +0.93782723 -2.9609418 0.75754607 128.0 +1.3240594 -4.2706609 1.0762644 128.0 +1.2961338 -4.2731133 1.0749004 128.0 +0.80837113 -2.7256348 0.69616663 128.0 +0.7916317 -2.7305436 0.69616663 128.0 +0.78203225 -2.7606461 0.70230454 128.0 +0.91653663 -3.3125527 0.83483869 128.0 +0.88603288 -3.2805099 0.8257454 128.0 +0.816733 -3.0994396 0.78073382 128.0 +0.79988205 -3.1128809 0.78277981 128.0 +0.75686204 -3.0223241 0.75981939 128.0 +2.1118062 -8.6549768 2.1122127 128.0 +1.910114 -8.0424538 1.9621742 128.0 +0.75810844 -3.2824352 0.8189255 128.0 +0.78021199 -3.475153 0.86393708 128.0 +0.769669 -3.5293496 0.87575829 128.0 +1.8057796 -8.5289564 2.0676558 128.0 +0.5956341 -2.9022713 0.72412837 128.0 +0.66789615 -3.3585856 0.83188337 128.0 +0.5439502 -2.826169 0.70435053 128.0 +0.54246849 -2.9146578 0.72458303 128.0 +0.51043481 -2.8393402 0.70594186 128.0 +0.49899909 -2.8769598 0.71412581 128.0 +0.49884874 -2.984659 0.73890489 128.0 +1.275537 -7.9265876 1.9067054 128.0 +0.62935412 -4.0713005 0.99419785 128.0 +1.2049016 -8.1217747 1.9492162 128.0 +1.1524408 -8.1106968 1.9448969 128.0 +0.44246262 -3.259093 0.80028433 128.0 +0.99235326 -7.6577773 1.835096 128.0 +0.49093276 -3.98141 0.9689641 128.0 +0.30974975 -2.6467102 0.65456504 128.0 +0.44440055 -4.0084281 0.97396535 128.0 +0.29632151 -2.8323932 0.6973033 128.0 +0.39938015 -4.056221 0.98396796 128.0 +0.26458663 -2.8687856 0.70503253 128.0 +0.24948753 -2.8994617 0.71185249 128.0 +0.2335559 -2.9242353 0.7173084 128.0 +0.21603894 -2.9314404 0.71867239 128.0 +0.19785067 -2.929796 0.7179904 128.0 +0.18034829 -2.9387307 0.71980906 128.0 +0.15784664 -2.8590786 0.70094055 128.0 +0 -0 0 128.0 +0.10629153 -2.4784441 0.61159939 128.0 +0.14167534 -3.8502254 0.93190908 128.0 +0.081616797 -2.6664464 0.65524697 128.0 +0.063888393 -2.6114063 0.6422891 128.0 +0.047594074 -2.5971444 0.63887918 128.0 +0.034432627 -2.8223221 0.69139266 128.0 +0.017525187 -2.8886986 0.70685118 128.0 +-0.00019807987 -2.9160187 0.71321648 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4053142 -3.6427696 0.94395763 128.0 +-1.4294193 -3.6386104 0.94509429 128.0 +-1.4517184 -3.629771 0.94509429 128.0 +-1.464052 -3.5964415 0.93895638 128.0 +-1.4793849 -3.5711958 0.9348644 128.0 +-1.5133692 -3.5907683 0.94213897 128.0 +-1.5511016 -3.618113 0.95145959 128.0 +-3.572871 -8.1961308 2.1197147 128.0 +-3.61323 -8.1517963 2.1140313 128.0 +-1.6422383 -3.6439967 0.96555412 128.0 +-1.6653774 -3.6356223 0.96600878 128.0 +-1.686421 -3.6226866 0.96532679 128.0 +-1.5878899 -3.3569698 0.89940071 128.0 +-1.554059 -3.2339303 0.87007499 128.0 +-1.5713104 -3.2190828 0.86871099 128.0 +-1.5962219 -3.2198513 0.87143898 128.0 +-1.6115707 -3.2012978 0.86916566 128.0 +-1.6338419 -3.196552 0.87052965 128.0 +-1.6543216 -3.1881957 0.87098432 128.0 +-1.663871 -3.1590285 0.86598307 128.0 +-4.771822 -8.928031 2.3956947 128.0 +-4.8840818 -9.0047312 2.4238839 128.0 +-4.3251314 -7.8586564 2.1265347 128.0 +-5.005609 -8.9645243 2.4293399 128.0 +-0 -0 0 128.0 +-1.9580307 -3.4072204 0.94986826 128.0 +-1.9421277 -3.3320382 0.93281841 128.0 +-1.9605544 -3.3167052 0.93190908 128.0 +-2.0409389 -3.4048495 0.95918882 128.0 +-2.0562294 -3.3831081 0.95668817 128.0 +-2.0943162 -3.398617 0.96441746 128.0 +-2.1269956 -3.4046993 0.9696461 128.0 +-2.1462836 -3.389116 0.9689641 128.0 +-2.1644084 -3.3717852 0.96782744 128.0 +-2.2163854 -3.4066036 0.98123997 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.1743231 -7.6423783 2.1870048 128.0 +-5.2971382 -7.7213039 2.2183764 128.0 +-5.3560867 -7.7054486 2.2231505 128.0 +-5.3937345 -7.6589036 2.2192857 128.0 +-5.5401645 -7.7651896 2.2592962 128.0 +-5.5705943 -7.7073717 2.2524762 128.0 +-5.6131792 -7.66676 2.2506576 128.0 +-0 -0 0 128.0 +-5.9010062 -7.8558092 2.3261313 128.0 +-5.7244573 -7.5241637 2.2395182 128.0 +-5.799046 -7.5259252 2.2504301 128.0 +-6.1021171 -7.8195634 2.3479552 128.0 +-6.3407745 -8.0234156 2.4197919 128.0 +-6.3521619 -7.9372177 2.4056973 128.0 +-6.4847393 -8.0017443 2.4368417 128.0 +-6.5046816 -7.9264221 2.4261572 128.0 +-6.5749764 -7.9125762 2.4341137 128.0 +-6.5456648 -7.7796822 2.4059248 128.0 +-6.7220998 -7.8906002 2.4523003 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.2110987 -9.4406729 3.1115608 128.0 +-9.2572193 -9.3721981 3.1076961 128.0 +-9.4150791 -9.4157619 3.1408865 128.0 +-9.2489147 -9.136754 3.0674586 128.0 +-9.199564 -8.9771309 3.0331316 128.0 +-9.4094181 -9.0698767 3.0833716 128.0 +-9.4176416 -8.9669781 3.0681405 128.0 +-9.4192829 -8.858984 3.0510907 128.0 +-10.541466 -9.7932749 3.3914056 128.0 +-9.0279198 -8.2844553 2.892868 128.0 +-9.0554943 -8.2079763 2.8855937 128.0 +-9.1281776 -8.1723957 2.8926408 128.0 +-9.1351118 -8.0781698 2.8792284 128.0 +-9.1867065 -8.0238876 2.8799102 128.0 +-9.2335548 -7.9654598 2.8792284 128.0 +-9.3356247 -7.9541278 2.895596 128.0 +-9.4379015 -7.9418416 2.9119639 128.0 +-10.373182 -8.6207504 3.1811242 128.0 +-9.7446613 -7.9978013 2.9753895 128.0 +-9.7890129 -7.9341793 2.9740255 128.0 +-10.794674 -8.6401291 3.2602353 128.0 +-11.483112 -9.0761528 3.4493749 128.0 +-9.963335 -7.7760191 2.9828913 128.0 +-11.538862 -8.8923483 3.4332345 128.0 +-11.573833 -8.8066368 3.4275513 128.0 +-11.643223 -8.7471542 3.4320979 128.0 +-11.580136 -8.5891056 3.3982255 128.0 +-10.391239 -7.6088467 3.0390422 128.0 +-11.382402 -8.2278461 3.3111577 128.0 +-11.283648 -8.051507 3.2684193 128.0 +-11.332839 -7.98212 3.2684193 128.0 +-0 -0 0 128.0 +-11.331174 -7.7746778 3.2404575 128.0 +-11.406887 -7.7241158 3.2484143 128.0 +-11.437873 -7.6431575 3.2438676 128.0 +-11.03661 -7.277442 3.118608 128.0 +-11.541416 -7.5091262 3.2468228 128.0 +-0 -0 0 128.0 +-16.731785 -10.59636 4.6558218 128.0 +-16.817961 -10.506911 4.6617322 128.0 +-16.171635 -9.9656715 4.4669094 128.0 +-16.954784 -10.305303 4.6642332 128.0 +-16.030445 -9.609252 4.3955274 128.0 +-11.133944 -6.58144 3.0517726 128.0 +-11.211977 -6.5350676 3.0620027 128.0 +-11.247643 -6.4637232 3.0608659 128.0 +-11.301496 -6.4027481 3.0647306 128.0 +-11.368626 -6.3489528 3.0722325 128.0 +-6.5344515 -3.5966365 1.7737166 128.0 +-15.683574 -8.5080671 4.1977491 128.0 +-15.856574 -8.476409 4.2298031 128.0 +-6.5288954 -3.438535 1.7550755 128.0 +-6.5688872 -3.4082775 1.7600768 128.0 +-6.5532579 -3.349292 1.7505288 128.0 +-16.192032 -8.1512766 4.2643576 128.0 +-6.3644032 -3.1548603 1.6907407 128.0 +-16.32497 -7.9686217 4.2732234 128.0 +-6.9968567 -3.3620884 1.844644 128.0 +-7.0252771 -3.3228409 1.8466899 128.0 +-7.2971401 -3.3968096 1.9114794 128.0 +-7.2284265 -3.3110073 1.8885188 128.0 +-6.3386021 -2.8564441 1.6555043 128.0 +-6.354229 -2.8167081 1.6550497 128.0 +-0 -0 0 128.0 +-7.2511191 -3.1084404 1.874197 128.0 +-0 -0 0 128.0 +-17.532312 -7.2630448 4.4625902 128.0 +-17.582861 -7.1579022 4.4641814 128.0 +-17.709633 -7.0831532 4.485096 128.0 +-7.1273403 -2.7997992 1.8200922 128.0 +-7.0862389 -2.7335799 1.8055429 128.0 +-7.0546126 -2.6717658 1.7934943 128.0 +-7.0991697 -2.6389492 1.8005416 128.0 +-7.0237441 -2.561965 1.7778085 128.0 +-7.0448332 -2.5207887 1.7791725 128.0 +-7.1483788 -2.5084746 1.8009963 128.0 +-0 -0 0 128.0 +-7.4766736 -2.5210807 1.8744243 128.0 +-7.5243645 -2.4858508 1.882381 128.0 +-0 -0 0 128.0 +-8.6172371 -2.7301407 2.1426752 128.0 +-8.722188 -2.7046185 2.1642716 128.0 +-8.7749615 -2.6620762 2.1731374 128.0 +-8.8060675 -2.6126163 2.1767747 128.0 +-8.7209244 -2.5292349 2.1522231 128.0 +-8.6688213 -2.4565575 2.1358552 128.0 +-8.8648663 -2.45346 2.1797302 128.0 +-12.485043 -3.3732152 3.0515454 128.0 +-9.0157785 -2.3765147 2.2090559 128.0 +-12.421751 -3.1930785 3.0265388 128.0 +-13.109899 -3.2843697 3.1874895 128.0 +-9.2784252 -2.2639558 2.2620239 128.0 +-9.3319349 -2.216435 2.2715719 128.0 +-9.3795166 -2.1670265 2.2797558 128.0 +-14.534804 -3.2645001 3.5100725 128.0 +-17.654331 -3.8515921 4.2507176 128.0 +-12.620757 -2.6723003 3.0440433 128.0 +-12.753293 -2.6187105 3.0717778 128.0 +-17.247555 -3.4315288 4.1377339 128.0 +-13.222427 -2.5463655 3.1758955 128.0 +-17.40612 -3.2415485 4.1656957 128.0 +-0 -0 0 128.0 +-17.085747 -2.9654155 4.0806737 128.0 +-17.181419 -2.8735368 4.0990877 128.0 +-16.90741 -2.7211666 4.0302062 128.0 +-17.150909 -2.6525044 4.0838566 128.0 +-16.532068 -2.4530132 3.9340451 128.0 +-17.186989 -2.4425218 4.0849929 128.0 +-16.541626 -2.2473323 3.9294984 128.0 +-18.366825 -2.3806617 4.3559718 128.0 +-17.298622 -2.1343391 4.1013608 128.0 +-17.613159 -2.0635176 4.1722884 128.0 +-0 -0 0 128.0 +-12.696747 -1.32968 3.0126717 128.0 +-12.753122 -1.2565249 3.0240383 128.0 +-12.774168 -1.1795034 3.027221 128.0 +-12.802509 -1.10294 3.0322223 128.0 +-11.957718 -0.95625693 2.8328526 128.0 +-12.997661 -0.95923042 3.0749605 128.0 +-18.007992 -1.2180955 4.2459435 128.0 +-18.038456 -1.1090122 4.2513995 128.0 +-18.050755 -0.99863243 4.2527633 128.0 +-18.04487 -0.88728213 4.2500353 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-20.389574 12.244471 5.2879868 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.064939 14.765859 4.8540974 128.0 +-15.969747 14.860162 4.8528028 128.0 +-0 0 0 128.0 +-14.074835 13.422752 4.3302369 128.0 +-14.018902 13.534636 4.3384361 128.0 +-0 0 0 128.0 +-14.971972 14.814183 4.6866693 128.0 +-14.291673 14.315598 4.5024118 128.0 +-14.213163 14.412754 4.5054326 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.700869 15.466779 4.7477288 128.0 +-14.074382 14.990726 4.5762014 128.0 +-13.832088 14.914989 4.5274401 128.0 +-13.853748 15.123429 4.5645504 128.0 +-13.258235 14.652776 4.3990641 128.0 +-0 0 0 128.0 +-13.130409 14.874401 4.4167562 128.0 +-13.268607 15.218184 4.4939976 128.0 +-13.336811 15.487257 4.5488 128.0 +-0 0 0 128.0 +-13.390674 15.94136 4.6329455 128.0 +-13.653555 16.458368 4.7578692 128.0 +-0 0 0 128.0 +-12.477162 15.421443 4.4158931 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-11.553669 15.6055 4.3231173 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.3025932 13.583058 3.6704493 128.0 +-9.1408911 13.52419 3.6395957 128.0 +-9.1449594 13.710815 3.6743329 128.0 +-9.0123501 13.693258 3.6549146 128.0 +-8.8313828 13.599249 3.6156466 128.0 +-8.2384405 12.858109 3.4070086 128.0 +-8.1374798 12.873749 3.3979468 128.0 +-8.0805483 12.959067 3.4072244 128.0 +-7.9712143 12.960163 3.3947105 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.6769886 16.403231 4.2409134 128.0 +-9.1058531 15.653686 4.0342174 128.0 +-8.9994316 15.691475 4.0296865 128.0 +-7.9073257 13.985149 3.5826356 128.0 +-7.7652798 13.932756 3.5571764 128.0 +-7.7557936 14.11879 3.592129 128.0 +-7.8712049 14.539658 3.6859839 128.0 +-8.6292048 16.176399 4.0838413 128.0 +-7.6431317 14.541803 3.6626821 128.0 +-7.651176 14.776595 3.7095015 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.1350245 15.117964 3.7265463 128.0 +-7.021565 15.117178 3.7157583 128.0 +-6.9400387 15.184844 3.7217996 128.0 +-7.1169853 15.828291 3.8674362 128.0 +-7.0647492 15.973467 3.8920326 128.0 +-6.9942532 16.080091 3.9073515 128.0 +-6.9077411 16.151434 3.9142559 128.0 +-6.7914796 16.153008 3.9045467 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.8697519 13.914187 3.2900679 128.0 +-4.7430973 13.823735 3.2620194 128.0 +-4.6236496 13.749843 3.2380702 128.0 +-4.450305 13.50807 3.1752846 128.0 +-4.336761 13.440334 3.1532774 128.0 +-4.2462716 13.441551 3.1474519 128.0 +-4.1657343 13.473883 3.1489623 128.0 +-4.4110937 14.584324 3.3994572 128.0 +-4.3395195 14.671979 3.4134815 128.0 +-3.882586 13.429145 3.1215611 128.0 +-4.1448154 14.673383 3.4018307 128.0 +-3.7255447 13.50496 3.1282494 128.0 +-4.1400738 15.375617 3.5511351 128.0 +-3.5652418 13.571383 3.1332119 128.0 +-3.5116951 13.709352 3.1597502 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.4819486 14.715242 3.3739977 128.0 +-3.2435944 14.093058 3.2281454 128.0 +-3.3411684 14.93601 3.4145603 128.0 +-3.2962956 15.17188 3.4633217 128.0 +-3.1054718 14.728424 3.3586791 128.0 +-2.783164 13.612588 3.1027901 128.0 +-2.5892165 13.071938 2.9772189 128.0 +-2.5080411 13.082783 2.97614 128.0 +-2.6612628 14.35855 3.2594304 128.0 +-2.364332 13.207733 2.9975002 128.0 +-2.2955358 13.293196 3.0134661 128.0 +-0 0 0 128.0 +-2.2772341 14.226699 3.2162788 128.0 +-2.1802559 14.177671 3.2022545 128.0 +-2.0942192 14.197545 3.2037647 128.0 +-1.9801786 14.019655 3.1612604 128.0 +-1.8977736 14.058637 3.1673017 128.0 +-1.7926604 13.923779 3.1347222 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.63959974 20.287649 4.5177307 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.0411924 13.960876 3.126092 128.0 +1.1253403 13.935732 3.1219923 128.0 +0 0 0 128.0 +1.3012522 13.974345 3.1338592 128.0 +1.4355513 14.454843 3.2423854 128.0 +2.1475451 20.348764 4.553978 128.0 +1.7000556 15.21634 3.4158549 128.0 +1.8150197 15.388899 3.4566331 128.0 +1.8877391 15.203053 3.4177966 128.0 +2.0695505 15.86992 3.5690429 128.0 +2.1671519 15.858857 3.5694745 128.0 +2.2671835 15.864594 3.5737896 128.0 +2.2288499 14.941613 3.3707614 128.0 +2.1924856 14.104641 3.1867199 128.0 +2.2643268 14.000316 3.1664386 128.0 +2.5243824 15.022274 3.3985941 128.0 +2.4477074 14.038809 3.1815417 128.0 +2.536581 14.0389 3.1849937 128.0 +2.8250692 15.104754 3.428153 128.0 +2.9351315 15.177251 3.4484344 128.0 +2.8077648 14.0559 3.1998811 128.0 +2.9044101 14.089092 3.2113163 128.0 +2.9824779 14.031847 3.2024703 128.0 +3.096518 14.141096 3.2313817 128.0 +3.1905308 14.154216 3.2387176 128.0 +3.6497486 15.739987 3.602917 128.0 +3.3191445 13.925933 3.1959975 128.0 +3.844486 15.701602 3.6046431 128.0 +3.9502809 15.715595 3.6132734 128.0 +3.5217404 13.656362 3.1489623 128.0 +3.562768 13.473075 3.1120677 128.0 +0 0 0 128.0 +4.3279781 15.589456 3.6076636 128.0 +4.1244664 14.510677 3.3660147 128.0 +4.3348198 14.902314 3.4620271 128.0 +4.4401045 14.922229 3.472815 128.0 +4.5435219 14.933939 3.4818769 128.0 +0 0 0 128.0 +4.771688 15.019438 3.5148878 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +27.967991 9.0230293 6.5262218 128.0 +27.980928 8.8380184 6.5165129 128.0 +27.999182 8.6552076 6.5083141 128.0 +27.991943 8.4651575 6.4945054 128.0 +27.975002 8.2730312 6.478755 128.0 +27.971769 8.0857706 6.4664569 128.0 +27.947559 7.8932886 6.4496279 128.0 +27.937105 7.7055626 6.4362507 128.0 +27.920687 7.5169935 6.4217949 128.0 +27.920952 7.3336291 6.4114385 128.0 +27.903938 7.1464272 6.3974142 128.0 +27.890419 6.9608927 6.384469 128.0 +27.881369 6.7771769 6.372818 128.0 +27.880619 6.5960832 6.3633246 128.0 +27.874889 6.4143777 6.3529682 128.0 +27.869888 6.233418 6.3430433 128.0 +27.838909 6.0473728 6.3275089 128.0 +27.837273 5.8683877 6.3188787 128.0 +27.8431 5.6914101 6.3121901 128.0 +27.840141 5.5130649 6.3037753 128.0 +27.82933 5.3336844 6.2938504 128.0 +27.814487 5.1541109 6.2832785 128.0 +27.818676 4.9785318 6.2772369 128.0 +27.801552 4.7996082 6.266665 128.0 +27.792913 4.6226845 6.2582502 128.0 +27.800507 4.4488239 6.2537193 128.0 +27.793501 4.2729678 6.2461681 128.0 +27.771862 4.0953717 6.2355957 128.0 +27.750059 3.9183383 6.2252393 128.0 +27.741646 3.7436855 6.2181196 128.0 +27.738914 3.5701559 6.2125096 128.0 +27.726376 3.3957326 6.2049584 128.0 +27.727291 3.2232885 6.2006431 128.0 +27.718399 3.0500004 6.194386 128.0 +27.712311 2.8773463 6.188992 128.0 +27.710009 2.7053556 6.1846771 128.0 +27.707611 2.5335908 6.1805778 128.0 +27.699286 2.3615427 6.1753993 128.0 +27.683077 2.1891534 6.1687107 128.0 +27.661903 2.0167685 6.1611595 128.0 +27.662066 1.8462205 6.1585703 128.0 +27.664103 1.6759235 6.1566286 128.0 +27.655338 1.5051408 6.1525292 128.0 +27.649424 1.3347168 6.1492925 128.0 +27.643435 1.1644633 6.1462722 128.0 +27.632496 0.9941932 6.1423883 128.0 +27.621483 0.82413036 6.1387205 128.0 +27.617235 0.65442479 6.1367788 128.0 +27.603157 0.4846485 6.132895 128.0 +27.598776 0.31519184 6.1313848 128.0 +27.586521 0.14577134 6.1283641 128.0 +27.559555 -0.02347465 6.122323 128.0 +27.56768 -0.19263825 6.1242647 128.0 +27.559145 -0.36169672 6.1227546 128.0 +27.547621 -0.53062004 6.1208124 128.0 +27.524323 -0.69914234 6.1164975 128.0 +27.525372 -0.86820018 6.1177921 128.0 +27.509768 -1.0367082 6.1156344 128.0 +27.505816 -1.2056139 6.1162815 128.0 +27.502777 -1.3746076 6.1173606 128.0 +27.505524 -1.5439928 6.1199493 128.0 +27.493582 -1.712613 6.1195183 128.0 +27.485479 -1.8814783 6.1201653 128.0 +27.465628 -2.049509 6.1184392 128.0 +27.475893 -2.2198846 6.1236176 128.0 +27.458836 -2.3881779 6.1229701 128.0 +27.449499 -2.5571609 6.1242647 128.0 +27.450783 -2.727278 6.1281486 128.0 +19.142721 -2.0201931 4.2860069 128.0 +27.432714 -3.0658889 6.1320319 128.0 +27.402719 -3.2328961 6.1296587 128.0 +27.38818 -3.4016976 6.1309533 128.0 +27.400681 -3.5741062 6.138505 128.0 +27.360821 -3.7397852 6.1346211 128.0 +17.715664 -2.5318556 3.9869661 128.0 +27.376608 -4.0847764 6.1488609 128.0 +17.680365 -2.7486134 3.9863188 128.0 +17.718109 -2.865937 3.9986172 128.0 +18.536016 -3.1151202 4.185895 128.0 +19.047535 -3.3214195 4.3049936 128.0 +17.743069 -3.2061744 4.0167408 128.0 +17.622284 -3.2961266 3.9940863 128.0 +18.868132 -3.6492028 4.2791023 128.0 +0 -0 0 128.0 +18.066435 -3.7246625 4.1086535 128.0 +19.905672 -4.2314668 4.5293818 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.672356 -4.6892614 4.5013332 128.0 +20.480663 -5.0149922 4.6918473 128.0 +20.418255 -5.1327071 4.6847277 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9567866 -2.2610579 1.8604555 128.0 +7.9277625 -2.3054724 1.8570035 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0130367 -2.5451725 1.8904459 128.0 +7.9814801 -2.5891674 1.886778 128.0 +7.9672971 -2.6387062 1.8872095 128.0 +0 -0 0 128.0 +19.982899 -6.8933196 4.7034984 128.0 +19.966936 -7.0252023 4.7097554 128.0 +19.969408 -7.1640739 4.7205434 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.609943 -7.9700565 4.9153728 128.0 +20.54339 -8.0895681 4.9112735 128.0 +20.51512 -8.2241888 4.9164515 128.0 +18.712191 -7.6349139 4.4983125 128.0 +18.651464 -7.7439685 4.4950762 128.0 +0 -0 0 128.0 +18.578356 -7.9822912 4.5006862 128.0 +18.435974 -8.0554705 4.4782472 128.0 +18.345154 -8.1502008 4.4683223 128.0 +19.355528 -8.7417507 4.7255058 128.0 +19.198587 -8.8130894 4.7004776 128.0 +18.131855 -8.4584208 4.4536505 128.0 +19.236341 -9.1178732 4.7365093 128.0 +19.18795 -9.2395468 4.738451 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +14.234418 -7.9640884 3.636791 128.0 +14.154714 -8.033926 3.6290238 128.0 +14.020533 -8.0719013 3.6074479 128.0 +4.022862 -2.3480542 1.0619353 128.0 +3.9453681 -2.3353741 1.0457535 128.0 +4.0314136 -2.4198675 1.0716444 128.0 +4.1065593 -2.4994082 1.0949463 128.0 +4.1210561 -2.5430257 1.1027136 128.0 +3.0608408 -1.9144654 0.83042699 128.0 +3.0787179 -1.9520432 0.83819425 128.0 +3.0765376 -1.9772352 0.84078336 128.0 +3.1142459 -2.0286012 0.8539446 128.0 +3.1799529 -2.0993412 0.87465733 128.0 +3.1467266 -2.1052332 0.86926341 128.0 +3.1814251 -2.1568439 0.88199311 128.0 +3.1737638 -2.180196 0.88350344 128.0 +3.3502262 -2.3318877 0.93463808 128.0 +3.0949118 -2.1823866 0.86947918 128.0 +4.3166857 -3.0843341 1.2049829 128.0 +4.2336197 -3.0643733 1.1875064 128.0 +4.386375 -3.2161984 1.2345417 128.0 +4.356369 -3.2354815 1.2317368 128.0 +4.3450165 -3.2686095 1.2341101 128.0 +3.8100176 -2.9027495 1.0910627 128.0 +3.5463474 -2.7363229 1.0224515 128.0 +3.8987265 -3.0467172 1.1260154 128.0 +3.9358428 -3.11483 1.1417657 128.0 +4.1741457 -3.3453798 1.2146919 128.0 +3.4561434 -2.8046813 1.0161946 128.0 +3.5738797 -2.9368374 1.0548153 128.0 +3.6601021 -3.0455503 1.0848056 128.0 +3.1254575 -2.6330802 0.93571687 128.0 +2.9547594 -2.5203559 0.89083922 128.0 +2.9333289 -2.5333312 0.88911313 128.0 +2.9485939 -2.5782866 0.898175 128.0 +3.0701301 -2.7180543 0.93873745 128.0 +3.5447969 -3.1775529 1.0845898 128.0 +3.4211335 -3.1047237 1.0535207 128.0 +3.788053 -3.4805129 1.1693828 128.0 +3.7215929 -3.4617822 1.15579 128.0 +7.8344712 -7.3795209 2.4108541 128.0 +3.6321967 -3.4627116 1.1415499 128.0 +2.9892242 -2.8846776 0.95060414 128.0 +2.9993982 -2.9302669 0.95923448 128.0 +3.5157895 -3.4774702 1.1253681 128.0 +2.4727414 -2.4755032 0.80583054 128.0 +2.4746449 -2.5080111 0.81122452 128.0 +2.4707916 -2.5350394 0.81489241 128.0 +2.4646683 -2.5600033 0.817913 128.0 +2.4536228 -2.5800323 0.81942332 128.0 +2.4223745 -2.5786653 0.81446087 128.0 +2.401195 -2.5877521 0.81273484 128.0 +2.2144549 -2.4159434 0.75685352 128.0 +2.2847514 -2.5236166 0.78490204 128.0 +2.245801 -2.5113769 0.77713478 128.0 +2.2135489 -2.5060756 0.77152503 128.0 +2.4580007 -2.8176992 0.85890704 128.0 +2.1972828 -2.5500693 0.77648747 128.0 +2.1303558 -2.5032525 0.75901109 128.0 +2.1237481 -2.5267451 0.76203167 128.0 +2.4024487 -2.8944583 0.86386949 128.0 +2.1983919 -2.6817825 0.79892629 128.0 +2.1198683 -2.6185479 0.77713478 128.0 +2.0927911 -2.6177738 0.77325112 128.0 +1.9333594 -2.4488769 0.72211647 128.0 +1.9434991 -2.493047 0.73117828 128.0 +2.0609205 -2.6775234 0.77929235 128.0 +2.9084334 -3.8277781 1.0949463 128.0 +2.8638041 -3.8174274 1.0871789 128.0 +2.0397544 -2.7534602 0.78986448 128.0 +2.0643032 -2.822686 0.80539906 128.0 +2.1737716 -3.0110965 0.85329729 128.0 +2.4713187 -3.4681942 0.97369027 128.0 +1.9013753 -2.7028351 0.76289475 128.0 +1.4344498 -2.0654216 0.58834654 128.0 +2.4285777 -3.5445163 0.98210484 128.0 +2.4040496 -3.555306 0.98102605 128.0 +1.9303629 -2.8924727 0.80108386 128.0 +1.8894979 -2.8691885 0.79180628 128.0 +1.4905936 -2.2935355 0.63710785 128.0 +1.4469967 -2.2565949 0.62502539 128.0 +1.4628578 -2.3124802 0.63732356 128.0 +1.4594895 -2.3388133 0.64185452 128.0 +2.3253858 -3.7791851 1.0131739 128.0 +2.3117745 -3.8092451 1.0172734 128.0 +1.8011482 -3.0088463 0.80755663 128.0 +1.7707461 -2.9996564 0.80237842 128.0 +2.2628677 -3.8882906 1.0267668 128.0 +1.693972 -2.9517014 0.78468627 128.0 +1.1059217 -1.9539117 0.52879733 128.0 +1.0896342 -1.9529841 0.52685553 128.0 +1.0795107 -1.9630566 0.52771854 128.0 +1.9366235 -3.5754588 0.93118596 128.0 +1.9091341 -3.5769358 0.92859685 128.0 +1.5601062 -2.9662404 0.77325112 128.0 +1.4880064 -2.8717012 0.74736017 128.0 +0 -0 0 128.0 +1.3172375 -2.6201184 0.68069094 128.0 +1.3227799 -2.6719139 0.69147885 128.0 +1.6633233 -3.4130187 0.87163675 128.0 +1.653747 -3.4469337 0.87746221 128.0 +1.1571167 -2.4494326 0.63128239 128.0 +1.6117345 -3.467854 0.87767798 128.0 +0.94231993 -2.0593543 0.53311247 128.0 +0.92926586 -2.0642068 0.5328967 128.0 +1.1637888 -2.6289072 0.66796124 128.0 +0 -0 0 128.0 +1.2635052 -2.9518373 0.74218196 128.0 +0 -0 0 128.0 +1.5612717 -3.7757182 0.9355011 128.0 +1.5263208 -3.7562757 0.92859685 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.93997538 -2.4854324 0.61984718 128.0 +0.92029524 -2.4792507 0.61704236 128.0 +0 -0 0 128.0 +0.89636439 -2.5087507 0.6213575 128.0 +1.1631271 -3.3206539 0.81014574 128.0 +1.1607889 -3.3803747 0.8224439 128.0 +1.1260238 -3.3457839 0.81273484 128.0 +1.1005858 -3.337791 0.80928272 128.0 +0.74674314 -2.311106 0.56935984 128.0 +0.92162895 -2.9143522 0.70809221 128.0 +1.3160574 -4.2540035 1.0166261 128.0 +0.70181584 -2.3169825 0.56763375 128.0 +1.2634784 -4.2688966 1.0164104 128.0 +0.78123605 -2.698765 0.65350544 128.0 +0.65506846 -2.3154125 0.56439739 128.0 +0.91263866 -3.3049386 0.79029602 128.0 +0.85858625 -3.1850727 0.7616002 128.0 +0.81298494 -3.0911164 0.7389456 128.0 +0.78770524 -3.0714526 0.73333591 128.0 +0.7643525 -3.0582275 0.72923648 128.0 +1.9808564 -8.1457348 1.885052 128.0 +0.71620178 -3.0227163 0.71909589 128.0 +0.76485324 -3.3191912 0.78533357 128.0 +0.84888601 -3.7907486 0.89105499 128.0 +1.8721596 -8.6146049 1.9806328 128.0 +0.60314023 -2.8559349 0.6776703 128.0 +0.68336135 -3.3379185 0.78554934 128.0 +0.55837655 -2.8142707 0.66666669 128.0 +0.56351644 -2.9346421 0.69298917 128.0 +0.56470913 -3.0417364 0.71629101 128.0 +1.6148627 -9.0188971 2.0572269 128.0 +1.4523753 -8.4080038 1.9180629 128.0 +1.392749 -8.3685961 1.9072751 128.0 +1.2767415 -7.9729905 1.8168725 128.0 +0.51222759 -3.3249638 0.77605599 128.0 +1.3220695 -8.9598598 2.0339251 128.0 +1.1686655 -8.2706957 1.8783635 128.0 +1.0398294 -7.6990376 1.7493402 128.0 +0.34885809 -2.7021894 0.63473451 128.0 +0.36893734 -3.0037649 0.70140368 128.0 +0.29414392 -2.5210123 0.59352469 128.0 +0.27995083 -2.5344167 0.5961138 128.0 +0.26459628 -2.5380292 0.59654534 128.0 +0.2742455 -2.7981117 0.65393692 128.0 +0.37767407 -4.1192803 0.94672054 128.0 +0.23118255 -2.6991098 0.63128239 128.0 +0.23546615 -2.964272 0.68975276 128.0 +0.21684752 -2.9598179 0.6884582 128.0 +0.19023442 -2.8344359 0.66040969 128.0 +0.1796246 -2.9476361 0.68522185 128.0 +0.13428099 -2.4475296 0.57432228 128.0 +0.1868566 -3.8498323 0.88436645 128.0 +0 -0 0 128.0 +0.091661945 -2.5178938 0.58942533 128.0 +0.083015271 -2.7467959 0.63991266 128.0 +0.065212995 -2.7072306 0.63106662 128.0 +0.048480812 -2.7007456 0.6295563 128.0 +0.032175057 -2.7244256 0.63473451 128.0 +0.015442338 -2.7216423 0.6340872 128.0 +-0.0013021802 -2.7714846 0.64509088 128.0 +-0.018451825 -2.7919292 0.64962178 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4127504 -3.5903182 0.88522953 128.0 +-1.45801 -3.6395862 0.89903802 128.0 +-1.4766252 -3.6215308 0.89688045 128.0 +-1.5010656 -3.6178129 0.898175 128.0 +-0 -0 0 128.0 +-1.5337832 -3.5722065 0.89170223 128.0 +-3.5951931 -8.2296867 2.0170958 128.0 +-1.5846411 -3.5691774 0.89558589 128.0 +-1.631031 -3.6136694 0.90874714 128.0 +-1.6552105 -3.6080306 0.90982592 128.0 +-1.6760793 -3.5951519 0.90917861 128.0 +-3.8396711 -8.1022978 2.0138595 128.0 +-1.6340641 -3.3957257 0.86537975 128.0 +-1.5836434 -3.2400327 0.82956392 128.0 +-1.5982807 -3.2197609 0.82697487 128.0 +-1.6180067 -3.2098935 0.82697487 128.0 +-1.6403426 -3.2051196 0.82826942 128.0 +-1.6595275 -3.194128 0.82805365 128.0 +-1.6508372 -3.1303451 0.81467664 128.0 +-4.262115 -7.9592214 2.027668 128.0 +-4.2996798 -7.9123302 2.0224898 128.0 +-4.8994389 -8.8853111 2.2747109 128.0 +-4.9810448 -8.9036512 2.287009 128.0 +-1.9890355 -3.506211 0.92341864 128.0 +-1.9262176 -3.3475497 0.88609254 128.0 +-1.9388425 -3.3221767 0.88264042 128.0 +-1.984568 -3.353065 0.89364403 128.0 +-2.0599036 -3.4320664 0.9171617 128.0 +-2.0900652 -3.4343739 0.9210453 128.0 +-4.6005778 -7.4535737 1.9681188 128.0 +-4.7115016 -7.5294929 1.9953043 128.0 +-0 -0 0 128.0 +-4.7417479 -7.375021 1.9700606 128.0 +-4.9234133 -7.5551963 2.0252945 128.0 +-5.1225338 -7.7562246 2.08657 128.0 +-5.2319546 -7.8171473 2.1111662 128.0 +-5.2650204 -7.7630796 2.105341 128.0 +-0 -0 0 128.0 +-5.3057575 -7.620163 2.0844123 128.0 +-5.4047694 -7.6616616 2.1044779 128.0 +-5.4692822 -7.6529794 2.1111662 128.0 +-5.5350361 -7.6453748 2.1182864 128.0 +-0 -0 0 128.0 +-5.750155 -7.7406831 2.1633797 128.0 +-5.7470465 -7.6381598 2.1448245 128.0 +-5.8559594 -7.6842918 2.1674793 128.0 +-5.9185133 -7.6683116 2.1730888 128.0 +-5.9407949 -7.6003127 2.1642427 128.0 +-6.1485505 -7.7673502 2.2216344 128.0 +-6.3549085 -7.927546 2.2777314 128.0 +-6.4415913 -7.9354024 2.2911084 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.2696991 -9.1419201 2.9094708 128.0 +-9.4704113 -9.2258997 2.9541328 128.0 +-9.2538261 -8.9049425 2.8704185 128.0 +-9.3210316 -8.8601017 2.8743024 128.0 +-10.576204 -9.9301834 3.238286 128.0 +-10.636936 -9.8651018 3.238286 128.0 +-10.636783 -9.7442493 3.2201624 128.0 +-0 -0 0 128.0 +-10.750462 -9.6084318 3.218652 128.0 +-0 -0 0 128.0 +-9.3373747 -8.1417818 2.7700913 128.0 +-9.3183413 -8.0250835 2.7500257 128.0 +-9.5094795 -8.0885773 2.7912354 128.0 +-9.4811697 -7.9647646 2.7687967 128.0 +-9.4840174 -7.8684115 2.7556355 128.0 +-10.390205 -8.5130005 3.0007365 128.0 +-9.8288593 -7.9528704 2.8264041 128.0 +-11.319342 -9.0442915 3.2341866 128.0 +-11.42982 -9.0182095 3.2497213 128.0 +-11.404826 -8.8855028 3.2272823 128.0 +-11.417337 -8.7832098 3.2156315 128.0 +-11.467904 -8.7106266 3.2147684 128.0 +-0 -0 0 128.0 +-10.361403 -7.671648 2.8814223 128.0 +-10.405915 -7.6061988 2.880775 128.0 +-11.410564 -8.23347 3.1418421 128.0 +-11.262027 -8.0216951 3.0879028 128.0 +-11.274289 -7.9266114 3.0779779 128.0 +-11.313087 -7.850605 3.0753887 128.0 +-11.518147 -7.8886204 3.1174614 128.0 +-11.491903 -7.7674985 3.0976119 128.0 +-11.117727 -7.4156666 2.9856334 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-11.120554 -7.0294771 2.939677 128.0 +-11.079787 -6.9089355 2.9178853 128.0 +-11.096187 -6.824965 2.9111969 128.0 +-6.4583311 -3.9185085 1.7018734 128.0 +-11.185807 -6.6922936 2.9129231 128.0 +-11.236753 -6.6294861 2.9155121 128.0 +-6.4458017 -3.7503664 1.6805134 128.0 +-6.5076571 -3.733089 1.6904383 128.0 +-6.5355406 -3.6959717 1.6917328 128.0 +-16.490772 -9.1907167 4.2042346 128.0 +-17.911091 -9.8386364 4.5481529 128.0 +-15.979739 -8.6506767 4.0478101 128.0 +-16.009256 -8.5400572 4.0419846 128.0 +-15.987885 -8.4030561 4.0236449 128.0 +-6.6151223 -3.4259772 1.6787874 128.0 +-6.594265 -3.3640308 1.6684309 128.0 +-16.266373 -8.1708927 4.0549297 128.0 +-6.4407449 -3.1867566 1.6205326 128.0 +-6.5040717 -3.1685522 1.6313206 128.0 +-6.9926958 -3.3535666 1.7463195 128.0 +-7.0855532 -3.3447661 1.7640117 128.0 +-7.3751688 -3.4262526 1.8296021 128.0 +-18.021492 -8.2362499 4.4109306 128.0 +-7.3222561 -3.2930508 1.8067318 128.0 +-7.34411 -3.2488501 1.8071634 128.0 +-7.3495793 -3.1974957 1.8037112 128.0 +-7.333148 -3.1369829 1.7950809 128.0 +-7.3504581 -3.0911717 1.7946494 128.0 +-7.3846283 -3.0523508 1.7983173 128.0 +-17.804831 -7.2300439 4.2788868 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.0772219 -2.6247294 1.7005789 128.0 +-7.0959463 -2.5822563 1.7012261 128.0 +-7.1512027 -2.5527775 1.7105038 128.0 +-7.2883906 -2.5514183 1.7389839 128.0 +-7.4609237 -2.5605094 1.7756627 128.0 +-7.9013195 -2.6574991 1.8746955 128.0 +-8.3060732 -2.7369571 1.9650981 128.0 +-8.5187922 -2.7491913 2.0106232 128.0 +-8.5550537 -2.7030447 2.0151541 128.0 +-8.5145712 -2.6329119 2.0019927 128.0 +-8.5791683 -2.5953138 2.0132122 128.0 +-8.6801405 -2.5678196 2.0328462 128.0 +-12.760314 -3.6892769 2.9677255 128.0 +-8.4770136 -2.3950329 1.9791224 128.0 +-8.6976957 -2.3998239 2.0263734 128.0 +-12.548852 -3.3791566 2.9042926 128.0 +-8.7765455 -2.3060539 2.0378087 128.0 +-12.494781 -3.2006865 2.8827169 128.0 +-12.499027 -3.1201773 2.8792648 128.0 +-18.53351 -4.5053811 4.2471704 128.0 +-18.572208 -4.3942742 4.2497592 128.0 +-14.639268 -3.369261 3.3519905 128.0 +-14.642513 -3.2755373 3.3481069 128.0 +-12.639428 -2.7462873 2.8906999 128.0 +-12.7277 -2.683785 2.9068818 128.0 +-13.074938 -2.673286 2.981534 128.0 +-13.024044 -2.5797346 2.9664309 128.0 +-13.041546 -2.5001395 2.9668624 128.0 +-17.524992 -3.2478781 3.9710002 128.0 +-17.03228 -3.0486226 3.8560011 128.0 +-17.143038 -2.9600003 3.8767138 128.0 +-17.029881 -2.8329742 3.8473709 128.0 +-17.609062 -2.8183575 3.9731576 128.0 +-17.343246 -2.6667953 3.9099405 128.0 +-0 -0 0 128.0 +-16.394268 -2.3153749 3.6911621 128.0 +-18.354172 -2.4772646 4.1250515 128.0 +-13.632271 -1.7551541 3.0697789 128.0 +-13.159148 -1.6122634 2.9621158 128.0 +-16.510166 -1.919781 3.7054021 128.0 +-11.903553 -1.3104857 2.6788256 128.0 +-13.068105 -1.3574758 2.9357934 128.0 +-12.912921 -1.2613328 2.8995459 128.0 +-12.102633 -1.1073334 2.7180936 128.0 +-13.331189 -1.1371825 2.9890854 128.0 +-12.053987 -0.9538852 2.7045007 128.0 +-18.062517 -1.3173078 4.0344329 128.0 +-12.024838 -0.80322808 2.6956546 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-20.383766 12.386823 5.0115385 128.0 +-20.309046 12.51269 5.0119472 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-22.251036 14.280746 5.5515699 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-19.266722 13.391662 4.9304214 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-19.171679 14.400386 5.0376921 128.0 +-19.053352 14.495228 5.0299277 128.0 +-0 0 0 128.0 +-16.891403 13.180895 4.5050163 128.0 +-0 0 0 128.0 +-16.788761 13.435504 4.5211577 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-36.820732 30.59444 10.02527 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.236031 14.533629 4.5812297 128.0 +-16.129866 14.61786 4.57653 128.0 +-0 0 0 128.0 +-15.963612 14.828021 4.5806165 128.0 +-0 0 0 128.0 +-16.684437 15.88336 4.8411312 128.0 +-14.014641 13.506725 4.0955486 128.0 +-13.9308 13.59178 4.0953441 128.0 +-13.846444 13.676313 4.09514 128.0 +-0 0 0 128.0 +-14.255471 14.430159 4.2667732 128.0 +-14.156405 14.506848 4.2637081 128.0 +-15.159565 15.726705 4.5922632 128.0 +-14.587554 15.320343 4.4484181 128.0 +-14.017765 14.904009 4.3035517 128.0 +-14.359807 15.456607 4.4365673 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-12.987053 15.242305 4.2126269 128.0 +-13.727167 16.312611 4.4829493 128.0 +-13.59303 16.355879 4.4719157 128.0 +-12.576354 15.322899 4.170536 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-11.718069 15.597549 4.1049476 128.0 +-11.455936 15.445083 4.0467148 128.0 +-11.471416 15.665934 4.085741 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.3948317 13.513826 3.4682701 128.0 +-0 0 0 128.0 +-9.2475004 13.656466 3.4754214 128.0 +-9.1004391 13.61854 3.4517198 128.0 +-8.6039095 13.048136 3.2952065 128.0 +-8.840807 13.588063 3.4165759 128.0 +-8.8397627 13.770561 3.4484506 128.0 +-9.4511852 14.923619 3.7199988 128.0 +-8.1208286 12.998827 3.2320702 128.0 +-9.9123907 16.085176 3.9766312 128.0 +-9.8246937 16.164099 3.9811263 128.0 +-9.7253275 16.224077 3.9811263 128.0 +-0 0 0 128.0 +-8.2797642 14.205082 3.4647965 128.0 +-8.966054 15.601692 3.7888563 128.0 +-7.9320674 14.00071 3.3916481 128.0 +-7.9290652 14.197824 3.4272008 128.0 +-0 0 0 128.0 +-8.622014 15.89361 3.8070412 128.0 +-7.8242221 14.636611 3.4970798 128.0 +-7.7712188 14.754498 3.5136304 128.0 +-7.6760316 14.793215 3.5115871 128.0 +-0 0 0 128.0 +-8.150672 16.19083 3.8164403 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.1644254 15.146249 3.5301807 128.0 +-7.7063746 16.553923 3.8442285 128.0 +-7.217339 15.755434 3.6501195 128.0 +-7.1446638 15.852969 3.662379 128.0 +-7.0175014 15.829392 3.6470547 128.0 +-6.9789295 16.00675 3.6777034 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.2178421 15.273808 3.4750128 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.7295804 13.746148 3.0671797 128.0 +-4.6589108 13.815722 3.07617 128.0 +-4.5457959 13.758537 3.0573721 128.0 +-4.4841971 13.856953 3.0729008 128.0 +-0 0 0 128.0 +-4.193768 13.523859 2.9883101 128.0 +-4.4176679 14.561008 3.2089815 128.0 +-4.3338094 14.60661 3.213068 128.0 +-4.2345586 14.600021 3.2059166 128.0 +-3.8357882 13.535118 2.9693079 128.0 +-4.2809682 15.46695 3.3826578 128.0 +-4.1336365 15.2992 3.3407712 128.0 +-0 0 0 128.0 +-3.5317132 13.738945 2.9938269 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.491802 14.700689 3.1867099 128.0 +-3.4028568 14.727561 3.1879358 128.0 +-3.3034153 14.708049 3.1793542 128.0 +-3.0941606 14.182892 3.0628889 128.0 +-2.8344908 13.386638 2.889008 128.0 +-2.8732104 13.992537 3.0144639 128.0 +-2.8469033 14.309448 3.0782132 128.0 +-2.7707126 14.387205 3.0910857 128.0 +-2.4613779 13.217354 2.8391528 128.0 +-2.6074708 14.495271 3.1070232 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.2727013 14.121366 3.0183461 128.0 +-0 0 0 128.0 +-2.0703559 13.953564 2.9772766 128.0 +-1.9889698 13.996049 2.9836106 128.0 +-1.9097762 14.057459 2.9940312 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.2002687 13.944143 2.9541879 128.0 +1.2982129 14.071033 2.9823847 128.0 +1.3779106 13.995584 2.9682863 128.0 +1.5156074 14.482423 3.0722878 128.0 +1.6994423 15.330015 3.2522984 128.0 +1.7824348 15.224989 3.2324789 128.0 +1.8912697 15.339096 3.2588367 128.0 +2.0221901 15.611646 3.3187041 128.0 +2.6104188 19.226767 4.0828805 128.0 +2.7712827 19.512772 4.1466298 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.2668018 14.091578 3.012012 128.0 +2.363874 14.141129 3.0254974 128.0 +2.4482558 14.112854 3.0226369 128.0 +2.5356705 14.102384 3.0236585 128.0 +2.6180339 14.064425 3.018959 128.0 +2.7179735 14.119229 3.0340791 128.0 +0 0 0 128.0 +2.8544288 13.906454 2.9960744 128.0 +2.9403114 13.891551 2.9966874 128.0 +3.0267444 13.878986 2.9979134 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5566483 14.580366 3.1654601 128.0 +3.9104693 15.614203 3.3926697 128.0 +3.5331042 13.748695 2.9958701 128.0 +3.5540438 13.486323 2.9439716 128.0 +4.1959372 15.534854 3.3916481 128.0 +4.0139704 14.506861 3.1746547 128.0 +4.1250525 14.560131 3.1916137 128.0 +4.3778634 15.098658 3.314209 128.0 +4.4297862 14.934491 3.2843773 128.0 +4.3790054 14.437708 3.1820104 128.0 +0 0 0 128.0 +4.8478751 15.304898 3.3838837 128.0 +0 0 0 128.0 +4.8007741 14.534104 3.2277794 128.0 +5.1118808 15.16298 3.3728502 128.0 +5.1198139 14.884173 3.3182955 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.219585 12.718421 6.4937134 128.0 +28.19776 12.50099 6.4710331 128.0 +28.098957 12.251443 6.43119 128.0 +28.117821 12.054884 6.4185219 128.0 +28.119997 11.852093 6.40238 128.0 +28.118938 11.64898 6.3858294 128.0 +28.10194 11.440423 6.3660102 128.0 +28.089808 11.235058 6.347621 128.0 +28.075306 11.029917 6.3290272 128.0 +28.067566 10.828548 6.3122725 128.0 +28.053837 10.625957 6.2944965 128.0 +28.064375 10.433496 6.2824411 128.0 +28.057974 10.235602 6.2669125 128.0 +28.051126 10.038511 6.2515879 128.0 +28.037376 9.8399448 6.2350378 128.0 +27.998182 9.6336451 6.2131748 128.0 +28.026155 9.4513474 6.2064323 128.0 +28.018557 9.2577057 6.1921296 128.0 +28.006845 9.0636091 6.1772137 128.0 +28.001276 8.8723717 6.1639323 128.0 +27.983196 8.6780643 6.1481996 128.0 +27.965662 8.4848833 6.132875 128.0 +27.965582 8.2978134 6.1216373 128.0 +27.95862 8.1094284 6.1091733 128.0 +27.934391 7.9169044 6.093236 128.0 +27.908855 7.7249837 6.0772986 128.0 +27.904699 7.5398035 6.0662651 128.0 +27.917309 7.3597074 6.0591135 128.0 +27.90316 7.1731596 6.0464454 128.0 +27.885878 6.9865875 6.0333686 128.0 +27.891132 6.8063002 6.0254002 128.0 +27.882845 6.6232705 6.0147753 128.0 +27.867641 6.4392767 6.0029244 128.0 +27.868423 6.2595811 5.9947515 128.0 +27.846054 6.0753193 5.9818788 128.0 +27.830135 5.8931904 5.9706407 128.0 +27.825499 5.714046 5.962059 128.0 +27.820671 5.5353723 5.9536819 128.0 +27.795477 5.3532696 5.9412179 128.0 +27.789307 5.1754494 5.9330449 128.0 +27.786819 4.9987736 5.9258938 128.0 +27.790928 4.8236623 5.9203768 128.0 +27.792967 4.6485276 5.9146557 128.0 +27.779409 4.4712162 5.90587 128.0 +27.749245 4.291852 5.8938146 128.0 +27.740198 4.1163321 5.8864589 128.0 +27.741673 3.9427378 5.8815551 128.0 +27.731394 3.7678306 5.8744035 128.0 +27.737488 3.5954638 5.8709302 128.0 +27.729881 3.4216051 5.8648005 128.0 +27.695908 3.2450135 5.8533583 128.0 +27.71335 3.0747976 5.8529496 128.0 +27.720987 2.9035718 5.8507018 128.0 +27.717823 2.7314081 5.8464112 128.0 +27.69507 2.557682 5.8382382 128.0 +27.681959 2.3852627 5.8323126 128.0 +27.664848 2.2128663 5.8257742 128.0 +27.650572 2.0410583 5.8200531 128.0 +27.649878 1.8705 5.8173971 128.0 +27.646179 1.6999069 5.814332 128.0 +27.630676 1.5288347 5.8090196 128.0 +27.629759 1.3587863 5.8069763 128.0 +27.612148 1.1881332 5.8016639 128.0 +27.620874 1.0187582 5.8020725 128.0 +27.614864 0.84889936 5.7996206 128.0 +27.593132 0.67879134 5.7941041 128.0 +27.588947 0.50932568 5.7924695 128.0 +27.579807 0.33988854 5.7900176 128.0 +27.581373 0.17065564 5.7900176 128.0 +27.576029 0.0014159139 5.7887917 128.0 +27.553003 -0.16765076 5.7840919 128.0 +27.575926 -0.33700839 5.7892003 128.0 +27.536148 -0.50552249 5.781436 128.0 +27.510998 -0.67394447 5.7769403 128.0 +27.524935 -0.84330541 5.7808228 128.0 +27.526091 -1.0124311 5.7822533 128.0 +27.515448 -1.1811411 5.781436 128.0 +27.510616 -1.3500944 5.7820487 128.0 +27.506701 -1.5191407 5.7830706 128.0 +27.496862 -1.6878902 5.7830706 128.0 +27.475245 -1.8558503 5.7808228 128.0 +27.474079 -2.0251918 5.7830706 128.0 +27.468941 -2.194355 5.7847052 128.0 +27.464712 -2.3636992 5.7867484 128.0 +27.46139 -2.5332539 5.7892003 128.0 +27.449226 -2.7020895 5.7900176 128.0 +19.183884 -2.0074954 4.0589743 128.0 +19.058344 -2.112659 4.0352726 128.0 +27.418173 -3.2096136 5.7949214 128.0 +27.397963 -3.3777878 5.7949214 128.0 +27.388371 -3.5473437 5.7973733 128.0 +27.368999 -3.7157238 5.797986 128.0 +27.33987 -3.8827612 5.7967601 128.0 +27.314564 -4.0502987 5.796556 128.0 +17.846228 -2.7584515 3.8021374 128.0 +17.829933 -2.8680573 3.8023417 128.0 +18.754337 -3.1349037 4.0017633 128.0 +0 -0 0 128.0 +17.808805 -3.2019975 3.8096976 128.0 +18.92539 -3.5227454 4.0510054 128.0 +18.159403 -3.4955997 3.8928578 128.0 +0 -0 0 128.0 +19.934204 -4.0915084 4.2804627 128.0 +0 -0 0 128.0 +18.197266 -3.9683557 3.9204419 128.0 +18.18499 -4.0827246 3.9230981 128.0 +19.693304 -4.5484276 4.2516527 128.0 +20.380299 -4.838995 4.4051013 128.0 +20.399677 -4.976017 4.4157262 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9314537 -2.247256 1.7535729 128.0 +7.9231567 -2.2975156 1.7547989 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9763722 -2.5267365 1.779318 128.0 +7.9653749 -2.5771375 1.7803396 128.0 +7.9280334 -2.6189024 1.7756401 128.0 +0 -0 0 128.0 +19.928196 -6.8547025 4.4316635 128.0 +19.952269 -7.0001831 4.4463749 128.0 +19.851795 -7.1020331 4.4337068 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.451509 -7.887897 4.6082006 128.0 +20.434616 -8.0257607 4.6153517 128.0 +20.411345 -8.1615334 4.6212773 128.0 +18.775074 -7.6412506 4.2639122 128.0 +20.438984 -8.4649582 4.6504955 128.0 +0 -0 0 128.0 +18.575459 -7.9616351 4.2512441 128.0 +18.493055 -8.0609903 4.2436843 128.0 +19.470646 -8.6296444 4.4782495 128.0 +19.318262 -8.7043171 4.4555693 128.0 +19.424692 -8.8960533 4.4923482 128.0 +19.351992 -9.006813 4.4882617 128.0 +19.298132 -9.1262217 4.4886703 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.1571341 -2.1569605 1.0104423 128.0 +4.1481519 -2.1847081 1.0114639 128.0 +4.1208553 -2.2027373 1.0081947 128.0 +4.1218905 -2.2359145 1.0116682 128.0 +4.0291924 -2.2177441 0.99287027 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +14.040711 -8.0673895 3.4128981 128.0 +4.0851955 -2.3810148 1.0198412 128.0 +4.0882068 -2.4164953 1.024132 128.0 +4.0917749 -2.452605 1.0286272 128.0 +4.1059289 -2.4954574 1.0357785 128.0 +4.9339685 -3.0402336 1.2425556 128.0 +4.0949225 -2.5581014 1.0406823 128.0 +4.8508 -3.0717509 1.2313178 128.0 +4.8054981 -3.084538 1.2247794 128.0 +3.1732295 -2.0645807 0.82307601 128.0 +3.1580498 -2.082396 0.82246304 128.0 +3.1582365 -2.110435 0.82573223 128.0 +3.1322579 -2.1209934 0.82246304 128.0 +3.2338114 -2.2188041 0.85147721 128.0 +3.2048635 -2.2279897 0.84759504 128.0 +3.258364 -2.2949555 0.86475831 128.0 +3.2330644 -2.306946 0.86189777 128.0 +3.1894927 -2.3055251 0.85433775 128.0 +3.1839747 -2.3314128 0.85658532 128.0 +4.0400443 -2.9963753 1.0827733 128.0 +4.3886728 -3.2968304 1.1786019 128.0 +4.4704213 -3.4013386 1.2053684 128.0 +4.4339585 -3.4167554 1.2012819 128.0 +3.0499923 -2.3804095 0.84044367 128.0 +3.0322568 -2.3966513 0.83962631 128.0 +3.4592631 -2.7687321 0.9577263 128.0 +3.4308012 -2.7806611 0.95466143 128.0 +4.3770084 -3.5921419 1.2147675 128.0 +3.3090813 -2.7499843 0.9309597 128.0 +3.173044 -2.6700349 0.89847201 128.0 +3.3257582 -2.83355 0.94485384 128.0 +3.310533 -2.8558211 0.94546682 128.0 +3.2811503 -2.8657784 0.94219762 128.0 +3.9103405 -3.4577396 1.1224124 128.0 +3.1793621 -2.8464153 0.92360401 128.0 +3.1545832 -2.8592963 0.92156076 128.0 +4.1893787 -3.8441386 1.2196712 128.0 +3.1192577 -2.8977928 0.92156076 128.0 +3.1042712 -2.91956 0.92237806 128.0 +3.0926797 -2.9446268 0.92421699 128.0 +3.0245087 -2.9153185 0.90970987 128.0 +2.4803562 -2.4204407 0.75626165 128.0 +4.4211407 -4.3671904 1.3300068 128.0 +2.4587736 -2.4590018 0.75871354 128.0 +2.4484551 -2.4789169 0.76014382 128.0 +2.4755874 -2.5373302 0.77281201 128.0 +3.4457479 -3.5750909 1.0692879 128.0 +3.4223964 -3.5947485 1.0688792 128.0 +2.4204159 -2.573911 0.77036011 128.0 +2.374594 -2.556442 0.76116544 128.0 +2.3078988 -2.5154295 0.74543244 128.0 +2.2819018 -2.5179389 0.74216324 128.0 +2.2513907 -2.5151191 0.73746371 128.0 +2.2197037 -2.5105538 0.73235559 128.0 +2.1733465 -2.4887381 0.72254801 128.0 +2.1829731 -2.5309331 0.73051667 128.0 +3.2955871 -3.8683259 1.0936025 128.0 +3.2787225 -3.8967133 1.0958501 128.0 +2.3881702 -2.874079 0.81285971 128.0 +2.1916254 -2.6707597 0.75401407 128.0 +1.8713092 -2.3092513 0.65328175 128.0 +1.8277417 -2.2840071 0.64347416 128.0 +1.8519355 -2.3435607 0.65634662 128.0 +1.9959264 -2.5578303 0.71008414 128.0 +2.2084608 -2.8662152 0.78813636 128.0 +2.1825335 -2.8688059 0.78527582 128.0 +2.9686811 -3.9520004 1.0645884 128.0 +2.9560397 -3.9858658 1.0686749 128.0 +3.4306417 -4.6855154 1.2450075 128.0 +3.393225 -4.6945777 1.2419426 128.0 +1.4526799 -2.0363824 0.55500132 128.0 +1.4395938 -2.0444572 0.55479699 128.0 +1.429816 -2.0572708 0.55581862 128.0 +1.4271352 -2.080534 0.55949646 128.0 +1.4176358 -2.0941148 0.56072241 128.0 +2.1063943 -3.1526952 0.82430196 128.0 +1.668286 -2.5305848 0.66554129 128.0 +1.631906 -2.5087738 0.65757257 128.0 +1.6022034 -2.4964981 0.6520558 128.0 +1.5281934 -2.4136586 0.62917137 128.0 +2.3551736 -3.7703943 0.96079117 128.0 +1.8877504 -3.0639174 0.78404987 128.0 +2.3107615 -3.8023579 0.96160847 128.0 +1.8268569 -3.0482306 0.77465093 128.0 +2.2704027 -3.841383 0.96426469 128.0 +2.2527053 -3.8653901 0.96671665 128.0 +2.2372375 -3.893568 0.97019017 128.0 +1.0971544 -1.9372418 0.49758595 128.0 +1.0857244 -1.9447919 0.49779028 128.0 +1.0737709 -1.9514172 0.49779028 128.0 +1.0697125 -1.9725964 0.5012638 128.0 +1.0742031 -2.0102012 0.50861949 128.0 +1.0677792 -2.0280139 0.51127577 128.0 +1.0765067 -2.0753651 0.52087903 128.0 +1.0677621 -2.089776 0.52271795 128.0 +1.1024592 -2.1907182 0.54478508 128.0 +1.124216 -2.2684815 0.56133538 128.0 +1.2275075 -2.5154912 0.61711621 128.0 +0 -0 0 128.0 +1.3074732 -2.7648613 0.67126238 128.0 +1.6726525 -3.5937159 0.86026317 128.0 +0.95625317 -2.0883086 0.51229739 128.0 +0.94945508 -2.1075232 0.51536226 128.0 +0.92698365 -2.0918319 0.51045841 128.0 +1.1883987 -2.7264977 0.6536904 128.0 +1.4096477 -3.288852 0.77975905 128.0 +1.3829776 -3.2821047 0.77628553 128.0 +1.2268081 -2.9622445 0.70211548 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.4398285 -3.6658325 0.85495073 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.92268527 -2.5303099 0.59504908 128.0 +1.2547965 -3.5073521 0.81040782 128.0 +0.8961035 -2.5543735 0.59790963 128.0 +0.87627268 -2.5477905 0.59525341 128.0 +1.1321529 -3.3582535 0.77260768 128.0 +0.78198081 -2.3678093 0.55336672 128.0 +0.77437007 -2.3939838 0.55806619 128.0 +0.72359139 -2.2848427 0.53313851 128.0 +0.71042818 -2.2920446 0.53375149 128.0 +1.2488784 -4.1173701 0.9309597 128.0 +1.2428055 -4.1897092 0.94505817 128.0 +0.67139119 -2.3160148 0.53620338 128.0 +0.78582877 -2.7740414 0.63468814 128.0 +0.89649397 -3.2401462 0.73460317 128.0 +1.0691329 -3.9581242 0.88866436 128.0 +0.81698632 -3.1004007 0.70211548 128.0 +0.78941643 -3.0721726 0.69496411 128.0 +0.77007526 -3.0750594 0.69455546 128.0 +1.9605894 -8.0353508 1.759294 128.0 +0.78612804 -3.3109488 0.74318486 128.0 +0.77417278 -3.3519535 0.7509492 128.0 +1.7964767 -7.9994001 1.744174 128.0 +0.92684174 -4.2496991 0.94076729 128.0 +0.89932901 -4.2486024 0.93933702 128.0 +0.55776972 -2.7178972 0.61200804 128.0 +1.6506275 -8.2974205 1.7987288 128.0 +1.6048684 -8.3343067 1.8044499 128.0 +0.78457546 -4.2145391 0.92769051 128.0 +0.59663439 -3.3184624 0.73664641 128.0 +0.57324791 -3.3047001 0.73296857 128.0 +1.4066339 -8.4117327 1.8130317 128.0 +1.2933881 -8.0374861 1.7321188 128.0 +1.2530249 -8.1033144 1.7443783 128.0 +0.43938029 -2.9633756 0.65818554 128.0 +0.39267397 -2.7653992 0.61589026 128.0 +0.37688464 -2.7764866 0.61772919 128.0 +0.50444382 -3.8941724 0.85249883 128.0 +0.31928572 -2.590482 0.57768142 128.0 +0.2932452 -2.505862 0.55949646 128.0 +0.28650084 -2.5854485 0.5758425 128.0 +0.27195728 -2.5998144 0.57849872 128.0 +0.26348901 -2.6774204 0.59443611 128.0 +0.38129604 -4.1323447 0.89908499 128.0 +0.24322076 -2.8267455 0.62508488 128.0 +0.21517667 -2.6945019 0.59709233 128.0 +0.18177357 -2.46733 0.54928023 128.0 +0.17627931 -2.6109927 0.5791117 128.0 +0 -0 0 128.0 +0.2107076 -3.8141928 0.83022738 128.0 +0.15372883 -3.1329648 0.68760836 128.0 +0.12351527 -2.8785918 0.63427949 128.0 +0.10296266 -2.8010364 0.61793351 128.0 +0.082644351 -2.6998577 0.59668368 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.033272944 -2.7283287 0.60240477 128.0 +0.016574102 -2.7353337 0.60383505 128.0 +-0.00021054308 -2.7255948 0.6017918 128.0 +-0.016987955 -2.7343521 0.60363072 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.10707791 -2.9017801 0.63897902 128.0 +-0.12509073 -2.9059587 0.64000064 128.0 +-0.14229541 -2.892426 0.63734436 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.5102159 -3.5832844 0.84453017 128.0 +-1.5306315 -3.5703514 0.84371287 128.0 +-0 -0 0 128.0 +-1.53546 -3.4635944 0.82368898 128.0 +-1.6290644 -3.6147573 0.86046749 128.0 +-1.6524363 -3.6073637 0.86108047 128.0 +-1.669583 -3.5865066 0.85862857 128.0 +-3.9977851 -8.4531279 1.9846648 128.0 +-3.9987094 -8.3225555 1.9601457 128.0 +-1.624126 -3.3273139 0.80570835 128.0 +-1.6049541 -3.2374704 0.78711474 128.0 +-1.6256688 -3.2293105 0.78752339 128.0 +-1.6423349 -3.2131729 0.78609312 128.0 +-1.6566105 -3.1926079 0.78364122 128.0 +-1.6944124 -3.2170296 0.79181427 128.0 +-4.6744313 -8.7457981 2.1027648 128.0 +-4.6986055 -8.6627398 2.0898921 128.0 +-4.8437018 -8.8009825 2.1297357 128.0 +-4.926722 -8.8232336 2.1421995 128.0 +-1.95681 -3.4539909 0.86148912 128.0 +-1.9199349 -3.3409135 0.83717442 128.0 +-1.9507482 -3.3468316 0.84146529 128.0 +-2.004616 -3.3912623 0.85515505 128.0 +-2.0374634 -3.3990505 0.86005884 128.0 +-5.0392127 -8.2920885 2.0582218 128.0 +-2.1098297 -3.4237974 0.87231839 128.0 +-2.1333909 -3.4149384 0.87334001 128.0 +-0 -0 0 128.0 +-5.0905075 -7.9311295 1.9999892 128.0 +-5.1582918 -7.929286 2.007345 128.0 +-5.1858349 -7.865612 1.9993762 128.0 +-5.132854 -7.6822472 1.9613717 128.0 +-5.2325773 -7.7284265 1.980987 128.0 +-0 -0 0 128.0 +-5.3823333 -7.7432108 2.0012152 128.0 +-5.4449606 -7.7316494 2.006732 128.0 +-5.4962783 -7.7036729 2.0081623 128.0 +-5.6013556 -7.7499361 2.0287991 128.0 +-5.6580548 -7.7280588 2.0320683 128.0 +-5.6884575 -7.6703935 2.0261428 128.0 +-5.7618704 -7.670567 2.0353374 128.0 +-5.9220304 -7.783874 2.0743635 128.0 +-6.1029124 -7.9203124 2.1199281 128.0 +-6.2314887 -7.9853601 2.1471033 128.0 +-6.3884015 -8.0836859 2.1834731 128.0 +-6.4482794 -8.0573282 2.1869466 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.4965363 -9.0421028 2.7698865 128.0 +-9.4256287 -8.864953 2.733721 128.0 +-10.21708 -9.4918966 2.9437673 128.0 +-9.6426115 -8.8485613 2.7645741 128.0 +-10.648286 -9.6517887 3.0326488 128.0 +-10.546133 -9.4419622 2.9874928 128.0 +-10.718996 -9.4788876 3.019572 128.0 +-10.119325 -8.8385105 2.8373139 128.0 +-9.3973379 -8.1067581 2.6233854 128.0 +-9.4558439 -8.0565634 2.6258373 128.0 +-9.5178328 -8.0091066 2.6293108 128.0 +-9.5938988 -7.9730806 2.6366665 128.0 +-10.376602 -8.5164909 2.834862 128.0 +-9.7647829 -7.9145393 2.656486 128.0 +-11.269012 -9.0198145 3.0457256 128.0 +-11.228149 -8.8746214 3.020185 128.0 +-11.251525 -8.7814674 3.012012 128.0 +-11.292789 -8.7027035 3.0087428 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.388875 -7.7054849 2.7326994 128.0 +-11.408978 -8.3541203 2.9844279 128.0 +-11.224407 -8.1136312 2.9237435 128.0 +-11.250075 -8.0275488 2.9176137 128.0 +-11.311924 -7.9673877 2.9208829 128.0 +-11.359795 -7.8972702 2.9206786 128.0 +-11.336201 -7.7781267 2.9024937 128.0 +-11.442883 -7.7484913 2.9174094 128.0 +-11.029548 -7.3702846 2.8017614 128.0 +-11.043509 -7.2819915 2.7939968 128.0 +-11.058444 -7.1948733 2.7866411 128.0 +-11.123801 -7.1406341 2.7919536 128.0 +-11.13598 -7.0523419 2.7841892 128.0 +-11.17074 -6.9786935 2.782146 128.0 +-0 -0 0 128.0 +-11.242991 -6.8334589 2.7790811 128.0 +-11.236012 -6.7351527 2.7672303 128.0 +-11.239206 -6.6436663 2.7580357 128.0 +-11.319509 -6.5977483 2.7676389 128.0 +-0 -0 0 128.0 +-16.511518 -9.354641 3.9939988 128.0 +-16.56348 -9.250288 3.9927728 128.0 +-16.603632 -9.139513 3.9888906 128.0 +-17.904451 -9.7129173 4.2845492 128.0 +-7.1657405 -3.8303301 1.7288496 128.0 +-6.7144852 -3.5362909 1.6168795 128.0 +-16.102623 -8.3555079 3.8195052 128.0 +-6.5987377 -3.3725393 1.5796922 128.0 +-7.1998763 -3.6242683 1.7153642 128.0 +-16.434361 -8.1472664 3.8615961 128.0 +-6.9860611 -3.4098217 1.6554968 128.0 +-7.0042048 -3.3656199 1.6548839 128.0 +-7.2662992 -3.4368553 1.7106646 128.0 +-7.340497 -3.4169948 1.7229242 128.0 +-17.876211 -8.1888943 4.1370263 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.2642164 -3.1669605 1.686963 128.0 +-17.460897 -7.4858069 3.9982896 128.0 +-17.557014 -7.3998199 4.0097318 128.0 +-17.611132 -7.2956991 4.011775 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.0245495 -2.6603782 1.6007377 128.0 +-7.0948763 -2.6373529 1.612793 128.0 +-7.1403527 -2.6045058 1.6193314 128.0 +-7.2640333 -2.599236 1.6432374 128.0 +-7.3768301 -2.5886548 1.6646916 128.0 +-8.3145094 -2.8605764 1.8681995 128.0 +-8.2205963 -2.7719672 1.8436804 128.0 +-8.3573523 -2.7610934 1.8700384 128.0 +-8.203701 -2.6546025 1.8326468 128.0 +-8.3038206 -2.6308281 1.8510361 128.0 +-8.3422461 -2.5867865 1.8559399 128.0 +-12.997601 -3.9433017 2.8679626 128.0 +-13.019675 -3.8629189 2.8675539 128.0 +-12.872025 -3.7333264 2.8303668 128.0 +-8.6951761 -2.4640272 1.9192808 128.0 +-8.7422085 -2.4195073 1.9262278 128.0 +-8.8107548 -2.3803756 1.9378743 128.0 +-12.56316 -3.3117449 2.7447546 128.0 +-12.567126 -3.230453 2.741281 128.0 +-0 -0 0 128.0 +-13.844016 -3.3781669 3.0073125 128.0 +-18.486477 -4.391129 3.9989026 128.0 +-18.5331 -4.2822437 4.0031934 128.0 +-18.498856 -4.1549301 3.9903209 128.0 +-12.70812 -2.7723806 2.7478194 128.0 +-12.986334 -2.7497184 2.8036003 128.0 +-0 -0 0 128.0 +-17.918394 -3.5650127 3.8462718 128.0 +-14.568879 -2.8057046 3.1297033 128.0 +-17.810665 -3.3168964 3.8143971 128.0 +-17.419296 -3.1335366 3.7271502 128.0 +-17.412153 -3.0220745 3.7216334 128.0 +-17.499886 -2.9268064 3.7363448 128.0 +-13.080485 -2.1051524 2.7982876 128.0 +-13.133787 -2.031137 2.8068695 128.0 +-17.063738 -2.5319147 3.6335692 128.0 +-18.255516 -2.5943995 3.8816199 128.0 +-13.266917 -1.8023552 2.8275063 128.0 +-13.429169 -1.7405497 2.859381 128.0 +-13.343413 -1.6462479 2.8391528 128.0 +-12.136978 -1.4218189 2.5835419 128.0 +-12.93063 -1.4344451 2.7484324 128.0 +-12.150591 -1.2724665 2.5829289 128.0 +-12.196163 -1.2016324 2.5908976 128.0 +-13.229723 -1.2215811 2.8060522 128.0 +-18.143642 -1.563243 3.8340123 128.0 +-12.20353 -0.97592252 2.5882413 128.0 +-13.40519 -0.98931837 2.8385398 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-13.599995 -0.75230438 2.8759313 128.0 +-13.585777 -0.6679284 2.8720491 128.0 +-13.62385 -0.58602846 2.8792005 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-20.435835 12.616043 4.7449198 128.0 +-20.341404 12.730784 4.7410693 128.0 +-0 0 0 128.0 +-22.348505 14.371747 5.2460542 128.0 +-22.533649 14.687045 5.310164 128.0 +-22.641247 14.955929 5.3567543 128.0 +-0 0 0 128.0 +-22.463318 15.237604 5.3584871 128.0 +-0 0 0 128.0 +-22.339058 15.556982 5.373889 128.0 +-19.327091 13.636112 4.6736865 128.0 +-19.265411 13.770423 4.6790771 128.0 +-21.034779 15.231133 5.128231 128.0 +-0 0 0 128.0 +-20.850224 15.491041 5.1291933 128.0 +-19.018103 14.311652 4.7027574 128.0 +-19.373989 14.766563 4.8123021 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.856291 13.345014 4.2511005 128.0 +-16.771793 13.446349 4.2505231 128.0 +-0 0 0 128.0 +-16.662373 13.697892 4.2649622 128.0 +-36.815735 30.648039 9.4312897 128.0 +-0 0 0 128.0 +-16.338001 13.943026 4.2470579 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.83448 31.627344 9.2639875 128.0 +-0 0 0 128.0 +-16.018766 14.905782 4.3259916 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.496319 15.926762 4.5317979 128.0 +-14.01311 13.696174 3.8774157 128.0 +-14.966 14.808273 4.1636958 128.0 +-15.96743 15.994355 4.4671106 128.0 +-14.29673 14.497504 4.0277753 128.0 +-0 0 0 128.0 +-14.642303 15.217062 4.1762099 128.0 +-14.083565 14.817243 4.0437546 128.0 +-12.903003 13.742938 3.7314839 128.0 +-0 0 0 128.0 +-12.735373 13.902414 3.7320616 128.0 +-12.615595 13.942456 3.7220504 128.0 +-12.51673 14.004967 3.7182 128.0 +-13.432534 15.216695 4.0152612 128.0 +-13.224132 15.167167 3.9809926 128.0 +-0 0 0 128.0 +-13.850725 16.285145 4.2274203 128.0 +-13.778941 16.403639 4.236084 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-11.902407 15.872003 3.9253535 128.0 +-11.45098 15.466781 3.8086853 128.0 +-11.389444 15.582703 3.8198516 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.2206383 13.463374 3.2345848 128.0 +-9.1378546 13.519697 3.2345848 128.0 +-9.1276827 13.684909 3.2603827 128.0 +-8.9777317 13.640652 3.2368951 128.0 +-8.861268 13.645276 3.2251513 128.0 +-8.3491497 13.030927 3.069401 128.0 +-8.6664152 13.710685 3.2153325 128.0 +-8.1761522 13.112417 3.0647805 128.0 +-8.0919437 13.156487 3.0634327 128.0 +-9.7331476 16.045158 3.7149272 128.0 +-7.8865628 13.182373 3.046876 128.0 +-8.4461727 14.316609 3.2942667 128.0 +-8.3265934 14.313876 3.2819452 128.0 +-8.1731968 14.250628 3.2561471 128.0 +-7.9571476 14.073281 3.2049365 128.0 +-8.7294836 15.663067 3.551091 128.0 +-8.6204576 15.693112 3.5458927 128.0 +-8.4754257 15.655961 3.5258706 128.0 +-7.8213434 14.66174 3.293304 128.0 +-7.7819033 14.805876 3.3146739 128.0 +-0 0 0 128.0 +-8.1840553 16.04632 3.5670702 128.0 +-8.0497684 16.025204 3.551476 128.0 +-8.0017519 16.176329 3.5738084 128.0 +-7.3554363 15.10202 3.328728 128.0 +-7.3585029 15.346848 3.3722379 128.0 +-7.7621069 16.446892 3.6011467 128.0 +-7.2473216 15.603313 3.408432 128.0 +-7.1942682 15.741204 3.4286468 128.0 +-6.8513041 15.237305 3.3108234 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.3929 38.333405 8.2126255 128.0 +-0 0 0 128.0 +-6.3641915 15.400392 3.3023524 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.113812 16.184147 3.4272993 128.0 +-6.0457721 16.306005 3.4450114 128.0 +-0 0 0 128.0 +-5.7146316 16.012976 3.3687725 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.5783978 13.615236 2.8512735 128.0 +-4.4966121 13.648664 2.8524287 128.0 +-4.4097681 13.666659 2.8505034 128.0 +-0 0 0 128.0 +-4.2234697 13.660681 2.8383746 128.0 +-4.1338892 13.667552 2.8345242 128.0 +-0 0 0 128.0 +-4.2353253 14.64959 3.0249283 128.0 +-3.8461461 13.615728 2.8089187 128.0 +-3.8360965 13.905837 2.86321 128.0 +-4.1287103 15.333402 3.1485274 128.0 +-3.6240356 13.795262 2.8314438 128.0 +-3.9672546 15.488432 3.1698973 128.0 +-3.8766589 15.530573 3.1735554 128.0 +-3.7745717 15.526415 3.1679721 128.0 +-3.6686158 15.5044 3.1589236 128.0 +-3.3863986 14.713756 2.99528 128.0 +-3.3031197 14.76586 3.0016332 128.0 +-3.3388731 15.367925 3.118494 128.0 +-3.0022681 14.238766 2.8880453 128.0 +-2.9228997 14.296338 2.8959386 128.0 +-2.6224372 13.239733 2.6810842 128.0 +-2.5527844 13.316291 2.693213 128.0 +-2.6317279 14.199126 2.8662903 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-5.0895672 31.805557 6.352478 128.0 +-2.1600513 14.046214 2.8212402 128.0 +-2.0610874 13.972803 2.8041058 128.0 +-4.4940791 31.828749 6.3395791 128.0 +-0 0 0 128.0 +-4.0291457 31.306299 6.2257986 128.0 +-3.8209989 31.199913 6.2000008 128.0 +-3.629601 31.223747 6.2001929 128.0 +-3.4320467 31.191782 6.1896043 128.0 +-3.259131 31.390871 6.2248359 128.0 +-3.0732257 31.47962 6.2385049 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.77456135 20.561413 4.0699377 128.0 +0.89688116 20.469021 4.052803 128.0 +1.0205477 20.424911 4.0452948 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.8965255 20.361275 4.0451021 128.0 +1.3829834 13.925963 2.7786927 128.0 +1.4744853 13.974792 2.7900515 128.0 +1.6218086 14.516479 2.8988264 128.0 +1.7339674 14.702134 2.9375234 128.0 +1.8677025 15.041788 3.0068314 128.0 +1.8865764 14.467625 2.8955536 128.0 +2.0440388 14.958428 2.9950874 128.0 +2.8265126 19.776442 3.9524992 128.0 +3.1468344 21.092253 4.2170243 128.0 +2.4238386 15.592167 3.1288903 128.0 +2.2600386 13.973816 2.8102663 128.0 +0 0 0 128.0 +2.4401174 13.995297 2.8202775 128.0 +2.5564923 14.14905 2.8539689 128.0 +2.603195 13.918966 2.811229 128.0 +2.6960068 13.941268 2.8189299 128.0 +2.7763059 13.898482 2.8137317 128.0 +3.3261192 16.133928 3.2650032 128.0 +2.9403257 13.833611 2.8077636 128.0 +3.0753374 14.044406 2.8537762 128.0 +3.617564 16.047955 3.2605753 128.0 +0 0 0 128.0 +3.7514098 15.738901 3.2074392 128.0 +0 0 0 128.0 +3.6832068 14.653408 2.9973977 128.0 +3.4975333 13.562525 2.781003 128.0 +3.545553 13.407996 2.75405 128.0 +3.9707911 14.651321 3.0112593 128.0 +4.0740061 14.674902 3.0210779 128.0 +4.3190885 15.195192 3.1323557 128.0 +4.3763289 15.044974 3.1071353 128.0 +4.4817176 15.062043 3.1161838 128.0 +4.6126208 15.160996 3.1421742 128.0 +4.537394 14.591752 3.0310891 128.0 +4.6509147 14.639388 3.0466833 128.0 +4.9108968 15.135126 3.1548808 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.208961 15.269977 6.3262949 128.0 +28.192163 15.037952 6.3018446 128.0 +28.224836 14.833645 6.288753 128.0 +28.222078 14.611909 6.2681532 128.0 +28.205427 14.384526 6.2448583 128.0 +28.21862 14.173755 6.2284937 128.0 +28.191589 13.944223 6.2036586 128.0 +28.18663 13.727159 6.1840215 128.0 +28.207502 13.523832 6.1703525 128.0 +28.170145 13.293967 6.144362 128.0 +28.150616 13.074163 6.1226068 128.0 +28.162476 12.870193 6.107975 128.0 +28.144253 12.653694 6.0871825 128.0 +28.14867 12.448621 6.0715885 128.0 +28.130938 12.234969 6.0515661 128.0 +28.116156 12.023935 6.0325065 128.0 +28.115225 11.820009 6.0167198 128.0 +28.091087 11.607555 5.9963126 128.0 +28.0945 11.407657 5.9820657 128.0 +28.108368 11.21288 5.9703221 128.0 +28.092581 11.007268 5.95261 128.0 +28.079912 10.804034 5.9358606 128.0 +28.077744 10.605879 5.9216137 128.0 +28.065002 10.404746 5.9054422 128.0 +28.043476 10.201488 5.8877301 128.0 +28.034378 10.003833 5.8729057 128.0 +28.021133 9.8057022 5.8575039 128.0 +27.99909 9.6055641 5.8405623 128.0 +27.998903 9.4138842 5.828433 128.0 +28.000217 9.2234907 5.8168821 128.0 +27.999315 9.0331345 5.8051381 128.0 +27.989649 8.8407726 5.7918539 128.0 +27.95149 8.6404676 5.7729869 128.0 +27.956076 8.4543123 5.7631683 128.0 +27.95661 8.2675934 5.7527723 128.0 +27.916313 8.0697422 5.7342901 128.0 +27.919973 7.8854985 5.725049 128.0 +27.902559 7.6960359 5.7117648 128.0 +27.92083 7.5170321 5.7059894 128.0 +27.907583 7.3301182 5.6940527 128.0 +27.889292 7.1426768 5.6813464 128.0 +27.892607 6.9614382 5.6732607 128.0 +27.88998 6.7792697 5.6642122 128.0 +27.861341 6.5915232 5.6501579 128.0 +27.859182 6.4107642 5.6416869 128.0 +27.84724 6.228353 5.6314831 128.0 +27.845615 6.0488296 5.62359 128.0 +27.840918 5.8691559 5.6153116 128.0 +27.812952 5.6852489 5.6026049 128.0 +27.800144 5.5051465 5.5931716 128.0 +27.796778 5.3274469 5.5858555 128.0 +27.802891 5.1519623 5.5806575 128.0 +27.793409 4.9740114 5.5725718 128.0 +27.787628 4.797205 5.5654483 128.0 +27.764267 4.6179214 5.5550518 128.0 +27.761072 4.4425154 5.5488915 128.0 +27.752893 4.2667265 5.5419607 128.0 +27.761076 4.0937815 5.5384951 128.0 +27.752636 3.9187021 5.5319495 128.0 +27.752819 3.7451928 5.527329 128.0 +27.732452 3.5693245 5.518858 128.0 +27.706104 3.3932509 5.5094242 128.0 +27.696186 3.2196741 5.5034561 128.0 +27.685183 3.0463469 5.497488 128.0 +27.684809 2.8744919 5.4938302 128.0 +27.689228 2.7033279 5.4913273 128.0 +27.676956 2.5307889 5.485744 128.0 +27.668497 2.3589191 5.4811234 128.0 +27.653103 2.1867845 5.475348 128.0 +27.650341 2.0159261 5.4722676 128.0 +27.639671 1.8447267 5.4678397 128.0 +27.626961 1.6736751 5.4632192 128.0 +27.612215 1.5027956 5.458406 128.0 +27.618956 1.3332473 5.4580212 128.0 +27.614851 1.1632605 5.4557109 128.0 +27.60774 0.9933036 5.4530153 128.0 +27.604486 0.82362396 5.4512825 128.0 +27.600191 0.65402168 5.4495502 128.0 +27.575232 0.48415941 5.4439669 128.0 +27.575722 0.31492952 5.4435821 128.0 +27.575172 0.14571187 5.4431968 128.0 +27.566715 -0.023481054 5.4414639 128.0 +27.560165 -0.19258541 5.440309 128.0 +27.548653 -0.36155859 5.4383836 128.0 +27.537085 -0.53041667 5.4366512 128.0 +27.52154 -0.69907153 5.434341 128.0 +27.530464 -0.86836106 5.437036 128.0 +27.543249 -1.0379714 5.4406939 128.0 +27.524597 -1.2064379 5.4383836 128.0 +27.521578 -1.3755481 5.4393463 128.0 +27.523396 -1.5449969 5.4414639 128.0 +27.49577 -1.7127492 5.4379988 128.0 +27.4867 -1.881562 5.4383836 128.0 +27.48736 -2.0511317 5.4408865 128.0 +27.478168 -2.2200685 5.4416566 128.0 +27.442522 -2.3867581 5.4374213 128.0 +27.447878 -2.5570097 5.4414639 128.0 +19.407928 -1.9278613 3.8595111 128.0 +27.424192 -2.8946753 5.4433894 128.0 +19.336973 -2.1607568 3.8504624 128.0 +27.406096 -3.2332947 5.4472399 128.0 +27.401321 -3.4033303 5.4503202 128.0 +27.38187 -3.5716515 5.4507051 128.0 +27.371105 -3.7411914 5.4530153 128.0 +27.355406 -3.9101782 5.4545555 128.0 +27.355162 -4.0815754 5.4593687 128.0 +27.33736 -4.2505531 5.4609089 128.0 +18.961611 -3.0671592 3.8015621 128.0 +18.904694 -3.1771026 3.7940536 128.0 +17.824377 -3.1080544 3.5828571 128.0 +18.984987 -3.4306726 3.8181188 128.0 +17.68651 -3.3081441 3.5632198 128.0 +0 -0 0 128.0 +19.777925 -3.9512682 3.990041 128.0 +19.678347 -4.0570893 3.9750242 128.0 +18.45233 -3.9224334 3.7341793 128.0 +18.489264 -4.0490198 3.7465007 128.0 +18.422909 -4.1531096 3.7382224 128.0 +19.679916 -4.5636315 3.9965868 128.0 +19.69068 -4.6936307 4.0044799 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9518347 -2.2596498 1.654942 128.0 +7.9434733 -2.3100436 1.6560972 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0134478 -2.5453031 1.6826652 128.0 +7.9855456 -2.5904868 1.6801624 128.0 +7.9732265 -2.640671 1.6809325 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.989122 -7.0330095 4.1904564 128.0 +19.942822 -7.1545339 4.1898789 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +21.100204 -8.1596746 4.4715385 128.0 +20.448051 -8.0520191 4.3446665 128.0 +20.463839 -8.2036285 4.3585281 128.0 +18.919456 -7.7194958 4.0420218 128.0 +20.564629 -8.5384321 4.4016528 128.0 +20.509138 -8.6633081 4.4010754 128.0 +18.713755 -8.0404758 4.0291228 128.0 +18.599327 -8.1268568 4.0152612 128.0 +0 -0 0 128.0 +19.304846 -8.7188568 4.1889162 128.0 +19.359783 -8.8870964 4.2124038 128.0 +19.320896 -9.0131874 4.2158694 128.0 +19.314884 -9.1551075 4.2266502 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.1667295 -2.165252 0.95435458 128.0 +4.1611757 -2.1949003 0.95608729 128.0 +4.1528196 -2.2231715 0.95724243 128.0 +4.149446 -2.2542346 0.95955271 128.0 +4.1484251 -2.2867618 0.96244055 128.0 +4.1445918 -2.3179233 0.96475077 128.0 +4.1328516 -2.3447638 0.96532834 128.0 +4.1192369 -2.370568 0.96552086 128.0 +4.1630821 -2.429945 0.97880489 128.0 +4.1962199 -2.4839473 0.98977864 128.0 +4.1573453 -2.4955013 0.98438805 128.0 +4.0966964 -2.4934022 0.97399187 128.0 +4.0687957 -2.5107594 0.97110403 128.0 +4.9716082 -3.1104605 1.1836482 128.0 +4.0177927 -2.547883 0.96648347 128.0 +4.8769407 -3.1351409 1.1705568 128.0 +3.1756678 -2.0686388 0.77665681 128.0 +3.1580024 -2.0848401 0.77550173 128.0 +3.159013 -2.1134584 0.77877456 128.0 +3.1874006 -2.1608977 0.78859317 128.0 +3.1805511 -2.1848617 0.79013336 128.0 +3.2057366 -2.2312555 0.7993744 128.0 +4.2912316 -3.0265319 1.0633221 128.0 +4.4058962 -3.1481061 1.0954732 128.0 +3.1029253 -2.2455673 0.78455025 128.0 +3.0487354 -2.2349629 0.77473164 128.0 +3.0136976 -2.2378256 0.76953351 128.0 +3.0022621 -2.2580454 0.77011108 128.0 +2.8221216 -2.1497147 0.72910392 128.0 +3.0527782 -2.3552833 0.78955579 128.0 +2.8009403 -2.1884153 0.73045158 128.0 +3.3644609 -2.66242 0.87484306 128.0 +3.3932307 -2.7192311 0.88620186 128.0 +2.7921798 -2.2655795 0.73853749 128.0 +2.7979336 -2.2988727 0.74354303 128.0 +3.6231489 -3.0147865 0.95782 128.0 +3.8176641 -3.216579 1.0124962 128.0 +3.315686 -2.8284087 0.88812703 128.0 +3.304951 -2.8544748 0.88985974 128.0 +3.2977133 -2.8837461 0.89255506 128.0 +3.2006264 -2.8336527 0.87176269 128.0 +3.1298504 -2.8054101 0.85770857 128.0 +3.3835623 -3.0706096 0.9295193 128.0 +4.2142458 -3.8722844 1.1559252 128.0 +4.2421279 -3.9462025 1.1697867 128.0 +4.0842729 -3.8463237 1.1337851 128.0 +3.9881656 -3.8022299 1.1141478 128.0 +2.5550308 -2.4654324 0.72968149 128.0 +2.4998565 -2.4419649 0.71870774 128.0 +2.4848258 -2.4572577 0.71870774 128.0 +2.4662354 -2.4689856 0.71774513 128.0 +2.3993659 -2.4316661 0.70330596 128.0 +3.4751003 -3.5661485 1.0099934 128.0 +3.4456694 -3.5796256 1.0078757 128.0 +4.0732813 -4.2842631 1.1928893 128.0 +2.4813521 -2.64149 0.7441206 128.0 +3.0722728 -3.3114517 0.91931564 128.0 +2.538228 -2.7694306 0.77011108 128.0 +2.5152621 -2.7784035 0.76837838 128.0 +2.2621205 -2.5296392 0.69887793 128.0 +2.2407122 -2.5368502 0.69714528 128.0 +2.2805603 -2.6141632 0.71370214 128.0 +2.3387506 -2.7143669 0.73603469 128.0 +3.5445297 -4.1661687 1.1062545 128.0 +3.5069087 -4.173562 1.1025965 128.0 +3.192421 -3.8468192 1.0138439 128.0 +2.3168271 -2.8263597 0.75008881 128.0 +3.3795013 -4.1756101 1.0870023 128.0 +1.666422 -2.0840647 0.55660421 128.0 +1.7642169 -2.2344675 0.59164321 128.0 +1.763137 -2.2615075 0.5956862 128.0 +2.0669081 -2.6853077 0.69791538 128.0 +2.4266617 -3.193398 0.8199743 128.0 +3.2035038 -4.2704773 1.0804565 128.0 +3.2379608 -4.3720784 1.1004788 128.0 +3.2186003 -4.4021635 1.1029816 128.0 +1.5167984 -2.1004529 0.54139501 128.0 +2.1493928 -3.0161462 0.7597149 128.0 +1.4756719 -2.0972328 0.53619689 128.0 +1.4985762 -2.1578474 0.5485183 128.0 +2.4710743 -3.6065767 0.89082235 128.0 +1.4912138 -2.2045314 0.55525655 128.0 +2.9051988 -4.3542466 1.0600492 128.0 +2.8541529 -4.335103 1.0513856 128.0 +1.9495008 -3.0003088 0.73507208 128.0 +1.9606969 -3.0584862 0.7458533 128.0 +1.9125357 -3.0240064 0.73507208 128.0 +2.7759767 -4.4504738 1.0621669 128.0 +1.886077 -3.0648019 0.73911506 128.0 +1.8667274 -3.0754781 0.73892254 128.0 +1.8463103 -3.0843477 0.73834497 128.0 +1.825356 -3.0922377 0.73757488 128.0 +1.804868 -3.1008348 0.73699731 128.0 +1.1150951 -1.9422154 0.47247213 128.0 +1.1070203 -1.9558549 0.47401232 128.0 +1.085923 -1.946324 0.47035438 128.0 +1.0867147 -1.9761733 0.47555247 128.0 +1.5398082 -2.8423386 0.66730434 128.0 +1.5338839 -2.873379 0.67211741 128.0 +1.4975085 -2.847122 0.66422403 128.0 +1.4773039 -2.8510282 0.66306889 128.0 +1.4709272 -2.8818939 0.66788191 128.0 +1.5078281 -2.9996016 0.69175464 128.0 +1.0504521 -2.1212862 0.49749997 128.0 +1.0301129 -2.1126935 0.49422711 128.0 +1.042158 -2.1711814 0.50558591 128.0 +1.0401229 -2.2014964 0.51078397 128.0 +1.0067563 -2.1651168 0.50154293 128.0 +1.0040563 -2.194459 0.50654852 128.0 +1.0155185 -2.2560692 0.51848489 128.0 +1.1663524 -2.6347048 0.59838152 128.0 +1.1904726 -2.7344995 0.61821127 128.0 +1.1829312 -2.763407 0.62283176 128.0 +0.92067808 -2.1871364 0.49865511 128.0 +0.91248673 -2.2054412 0.5013504 128.0 +0.86719108 -2.1328063 0.48479354 128.0 +0.85408807 -2.1380873 0.48479354 128.0 +1.4176204 -3.6152184 0.79494643 128.0 +1.4066862 -3.653156 0.80110711 128.0 +0.85376722 -2.2571797 0.50654852 128.0 +1.3699362 -3.6922259 0.80572766 128.0 +1.349268 -3.7060952 0.8068828 128.0 +1.3495857 -3.7790003 0.82035929 128.0 +1.2278513 -3.5056355 0.76183265 128.0 +0.88123721 -2.5654087 0.56526774 128.0 +1.1334575 -3.3678966 0.73025906 128.0 +1.3568203 -4.1157598 0.88331401 128.0 +0.96852827 -2.9986508 0.65132505 128.0 +0.96961492 -3.0662956 0.66403151 128.0 +0.96671975 -3.1237516 0.67462021 128.0 +0.73565996 -2.4289119 0.53099883 128.0 +1.2527479 -4.2326064 0.89910078 128.0 +1.2243013 -4.231729 0.89736813 128.0 +0.90016824 -3.1833653 0.68212855 128.0 +0.91088033 -3.2985625 0.7044611 128.0 +0.62943405 -2.3337851 0.50731862 128.0 +0 -0 0 128.0 +0.76700383 -2.990608 0.63881111 128.0 +0.727732 -2.9114733 0.62186915 128.0 +0.70684129 -2.9034879 0.61936641 128.0 +1.7956061 -7.5860276 1.5625315 128.0 +0.77170599 -3.3489766 0.70734894 128.0 +0.65584755 -2.9274983 0.62167662 128.0 +0.63745588 -2.9295495 0.62129158 128.0 +0.90583348 -4.2920847 0.8937102 128.0 +0.68908906 -3.3659451 0.70715642 128.0 +0.82088685 -4.1401968 0.86117399 128.0 +0.61449128 -3.2006712 0.67250246 128.0 +0.79432881 -4.2811813 0.88735694 128.0 +0.756984 -4.2241535 0.87503558 128.0 +1.4532217 -8.4129076 1.7080781 128.0 +1.4025395 -8.427474 1.7092333 128.0 +1.2940658 -8.0812778 1.6387702 128.0 +1.2610027 -8.1967258 1.6601402 128.0 +0.42153633 -2.8513172 0.59857404 128.0 +0.39786091 -2.8101254 0.58991051 128.0 +0.38166037 -2.8202937 0.59145069 128.0 +0.36146805 -2.8001971 0.58702272 128.0 +0.32710764 -2.6621034 0.55929953 128.0 +0.31450504 -2.6962266 0.56565273 128.0 +0.44429594 -4.0285649 0.82825273 128.0 +0.26903582 -2.5808051 0.5421651 128.0 +0.25481552 -2.5990102 0.54543793 128.0 +0.37524828 -4.0927391 0.83941901 128.0 +0.35262817 -4.1242971 0.84519464 128.0 +0 -0 0 128.0 +0.22026549 -3.0067258 0.62456447 128.0 +0.17105308 -2.5468566 0.53388661 128.0 +0.15488897 -2.5390427 0.53215396 128.0 +0.13930678 -2.5399454 0.53215396 128.0 +0.12315207 -2.5289905 0.52984369 128.0 +0.10874612 -2.55617 0.53504175 128.0 +0.097817309 -2.6891782 0.56103224 128.0 +0.083477534 -2.7623112 0.57527888 128.0 +0.066271484 -2.7519801 0.57316113 128.0 +0.049831212 -2.7778447 0.57816666 128.0 +0.032875054 -2.785948 0.57970685 128.0 +0.015821325 -2.7939475 0.58124703 128.0 +-0.0013319679 -2.8047862 0.58336478 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.054398123 -2.8788509 0.59799647 128.0 +-0.074033201 -2.9559598 0.61320567 128.0 +-0.09232413 -2.9603541 0.61416829 128.0 +-0.15288396 -4.0834937 0.83479846 128.0 +-0.17802295 -4.0844393 0.8351835 128.0 +-0.20313028 -4.0842505 0.83537602 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.3976498 -3.6839237 0.80611271 128.0 +-1.4188116 -3.6716177 0.80534261 128.0 +-1.4474266 -3.6783645 0.80861551 128.0 +-1.4747168 -3.6812546 0.81111825 128.0 +-1.4917152 -3.6585083 0.80823046 128.0 +-1.4994582 -3.6139424 0.80072206 128.0 +-1.5132031 -3.5847871 0.79648662 128.0 +-1.5394323 -3.5853522 0.79860431 128.0 +-1.5782995 -3.6145036 0.8068828 128.0 +-1.5793295 -3.5572236 0.79667914 128.0 +-1.6205164 -3.5903919 0.80592018 128.0 +-1.6462011 -3.588407 0.80765289 128.0 +-1.6656988 -3.5729032 0.80649775 128.0 +-1.6674136 -3.5200536 0.79725671 128.0 +-3.9383912 -8.1804905 1.8143502 128.0 +-1.6807317 -3.4385049 0.78397268 128.0 +-1.6223371 -3.268183 0.74893367 128.0 +-1.6335201 -3.2406447 0.74508321 128.0 +-1.6524788 -3.2288139 0.74469817 128.0 +-1.6736175 -3.2212255 0.74527574 128.0 +-1.7130466 -3.2482126 0.75355422 128.0 +-4.6946917 -8.7667761 1.9841546 128.0 +-4.6710677 -8.5955505 1.9523885 128.0 +-4.7673225 -8.6457796 1.9701005 128.0 +-1.9590058 -3.5031981 0.82055181 128.0 +-1.9223312 -3.3887067 0.79744923 128.0 +-1.9283978 -3.351336 0.79167354 128.0 +-1.9553583 -3.3504562 0.79417634 128.0 +-2.0483892 -3.4608212 0.822092 128.0 +-4.5401993 -7.5618076 1.7635244 128.0 +-5.0703621 -8.3283405 1.9460353 128.0 +-4.6749253 -7.5739908 1.7793112 128.0 +-4.7041292 -7.517714 1.772958 128.0 +-4.6755147 -7.3710504 1.7456199 128.0 +-5.1012416 -7.93399 1.8836582 128.0 +-5.0935626 -7.8162231 1.8634434 128.0 +-0 -0 0 128.0 +-5.1940093 -7.760468 1.8651761 128.0 +-5.2327147 -7.7154589 1.8620957 128.0 +-5.372788 -7.8182535 1.8942468 128.0 +-5.5182419 -7.9252515 1.9277457 128.0 +-5.6697335 -8.0371675 1.9627846 128.0 +-5.7035341 -7.9806738 1.9575865 128.0 +-5.6954155 -7.8668437 1.9385269 128.0 +-5.7046905 -7.7787366 1.9256279 128.0 +-5.730073 -7.7136559 1.9183121 128.0 +-5.9348469 -7.8876934 1.9697155 128.0 +-6.0140672 -7.8917112 1.9797266 128.0 +-5.9622335 -7.7249432 1.9475754 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.6291275 -9.3804913 2.6704955 128.0 +-9.715497 -9.3491259 2.6783888 128.0 +-9.7193317 -9.238636 2.6639497 128.0 +-0 -0 0 128.0 +-9.6607199 -8.9598694 2.6181295 128.0 +-9.5816441 -8.7778063 2.5825129 128.0 +-10.451052 -9.4568548 2.7983301 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.515502 -8.0936995 2.4839416 128.0 +-9.5687418 -8.0383167 2.4849043 128.0 +-10.399595 -8.6278725 2.6841645 128.0 +-10.393128 -8.5153952 2.6691477 128.0 +-9.8157835 -7.9422927 2.5103171 128.0 +-9.8091316 -7.8378158 2.4964557 128.0 +-11.125926 -8.7784758 2.8135393 128.0 +-11.361503 -8.8517551 2.8587818 128.0 +-11.264705 -8.6658115 2.8214326 128.0 +-11.355176 -8.6250162 2.8306737 128.0 +-10.278115 -7.7080717 2.5536346 128.0 +-10.400933 -7.700911 2.5721166 128.0 +-11.118252 -8.1267805 2.7349904 128.0 +-11.075593 -7.9918089 2.7126577 128.0 +-11.124421 -7.9236999 2.7126577 128.0 +-11.231435 -7.8964877 2.7267118 128.0 +-11.432861 -7.9337068 2.7632911 128.0 +-11.085403 -7.5922933 2.6691477 128.0 +-0 -0 0 128.0 +-11.050379 -7.3707528 2.6391144 128.0 +-0 -0 0 128.0 +-11.083209 -7.1977201 2.6258304 128.0 +-11.092461 -7.1073475 2.6177444 128.0 +-11.174849 -7.0637913 2.6267929 128.0 +-16.404156 -10.228343 3.8258197 128.0 +-16.418961 -10.098197 3.814846 128.0 +-16.589685 -10.063417 3.8398738 128.0 +-16.4608 -9.8475924 3.7963638 128.0 +-0 -0 0 128.0 +-16.609245 -9.6616259 3.8029096 128.0 +-16.318346 -9.3589029 3.723783 128.0 +-16.508726 -9.3339338 3.7538166 128.0 +-16.448252 -9.1670227 3.7274411 128.0 +-16.558378 -9.0956869 3.7395699 128.0 +-0 -0 0 128.0 +-7.0337224 -3.7528515 1.5971855 128.0 +-7.0974436 -3.7310774 1.606234 128.0 +-7.1393752 -3.6973834 1.6104695 128.0 +-6.6216784 -3.37801 1.4914908 128.0 +-6.6370192 -3.3346741 1.4903357 128.0 +-7.1446509 -3.5348923 1.596993 128.0 +-7.0029902 -3.4115071 1.5613763 128.0 +-7.0273304 -3.3701701 1.5621464 128.0 +-7.2848272 -3.4387975 1.6135498 128.0 +-7.0726085 -3.2857468 1.563109 128.0 +-7.3148751 -3.3438406 1.611047 128.0 +-7.34868 -3.3049297 1.6139349 128.0 +-0 -0 0 128.0 +-7.2402029 -3.1499298 1.5821687 128.0 +-7.2693191 -3.1096892 1.5842865 128.0 +-7.5895 -3.1916573 1.6483963 128.0 +-7.2361917 -2.9910216 1.5692698 128.0 +-6.8234406 -2.7715919 1.4780143 128.0 +-7.7791243 -3.1041343 1.676312 128.0 +-7.3978343 -2.8995593 1.5919874 128.0 +-6.9777079 -2.6856923 1.4999619 128.0 +-7.3998113 -2.7960763 1.5850565 128.0 +-7.1656389 -2.657505 1.5324981 128.0 +-7.1882653 -2.6158354 1.5338458 128.0 +-8.1986475 -2.9265027 1.7409993 128.0 +-7.3615379 -2.5770123 1.5633016 128.0 +-8.2283735 -2.8237619 1.7398442 128.0 +-8.1274166 -2.7335083 1.7153939 128.0 +-8.2316484 -2.7124441 1.7334911 128.0 +-22.478064 -7.2521124 4.6669483 128.0 +-21.552715 -6.8078952 4.4674954 128.0 +-21.623144 -6.684505 4.4734635 128.0 +-0 -0 0 128.0 +-12.850449 -3.8009193 2.6622169 128.0 +-12.892384 -3.7274482 2.6660674 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.266141 -3.3030555 2.5253339 128.0 +-12.377292 -3.2516577 2.5438159 128.0 +-12.559566 -3.2172759 2.5767372 128.0 +-12.127777 -3.0275366 2.4854817 128.0 +-12.314901 -2.9940825 2.5195582 128.0 +-13.877181 -3.2837138 2.8308661 128.0 +-13.856903 -3.1892624 2.8227804 128.0 +-12.756728 -2.8538415 2.5977221 128.0 +-12.796055 -2.780304 2.6021502 128.0 +-14.326144 -3.0206845 2.9055648 128.0 +-0 -0 0 128.0 +-17.780355 -3.5214019 3.5892103 128.0 +-12.848867 -2.4632196 2.5998399 128.0 +-17.888805 -3.3152783 3.6024942 128.0 +-12.340092 -2.2090931 2.4926052 128.0 +-17.648682 -3.0472717 3.5468554 128.0 +-17.681566 -2.9413385 3.5497432 128.0 +-16.848526 -2.6966839 3.3807089 128.0 +-19.048977 -2.928961 3.8142684 128.0 +-12.960258 -1.9118161 2.6033053 128.0 +-18.200247 -2.5703037 3.639266 128.0 +-16.947557 -2.2875047 3.3882172 128.0 +-12.920258 -1.6635444 2.588866 128.0 +-12.94191 -1.5856669 2.5911763 128.0 +-12.31392 -1.4321479 2.4652669 128.0 +-12.262 -1.3499123 2.4533308 128.0 +-13.569175 -1.40948 2.7095773 128.0 +-13.435953 -1.3123746 2.6816616 128.0 +-18.009323 -1.6471906 3.5811243 128.0 +-18.051355 -1.5394059 3.5874774 128.0 +-13.455877 -1.0646857 2.6812766 128.0 +-13.540452 -0.98780698 2.6966784 128.0 +-13.482615 -0.90046078 2.6841645 128.0 +-13.585837 -0.82364583 2.7034166 128.0 +-13.611212 -0.7413882 2.7074597 128.0 +-13.658631 -0.65993744 2.7159307 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-22.104933 13.053596 4.7448764 128.0 +-21.937504 13.136936 4.7262831 128.0 +-20.871149 12.673018 4.5147147 128.0 +-0 0 0 128.0 +-20.53216 12.814661 4.4753613 128.0 +-0 0 0 128.0 +-22.256115 14.273046 4.8858619 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-18.67576 12.468023 4.1545787 128.0 +-0 0 0 128.0 +-22.31811 15.29882 4.9994082 128.0 +-0 0 0 128.0 +-22.109385 15.557961 4.9950757 128.0 +-19.377745 13.814364 4.4009876 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-19.289299 14.294021 4.4396186 128.0 +-19.465544 14.610491 4.5002728 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.405643 12.792651 3.8514872 128.0 +-16.854061 13.309397 3.9747818 128.0 +-16.07305 12.85357 3.8105092 128.0 +-15.968654 12.931524 3.8045521 128.0 +-16.61459 13.62423 3.9767675 128.0 +-16.549599 13.741627 3.9812803 128.0 +-16.447655 13.828357 3.9771285 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.108416 14.769099 4.0442815 128.0 +-0 0 0 128.0 +-15.891557 14.933333 4.0356169 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.114628 13.761519 3.6512914 128.0 +-14.085925 13.90314 3.6657329 128.0 +-15.950619 15.937958 4.1717281 128.0 +-14.262076 14.426776 3.7565341 128.0 +-14.189779 14.530904 3.7608666 128.0 +-14.187758 14.708307 3.783973 128.0 +-14.402572 15.115515 3.8652067 128.0 +-0 0 0 128.0 +-12.949559 13.928955 3.523845 128.0 +-0 0 0 128.0 +-12.730736 14.035093 3.5110281 128.0 +-12.636502 14.104153 3.5088618 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-13.979698 16.193384 3.9596181 128.0 +-13.869864 16.266882 3.9567299 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-12.108291 14.927966 3.5610318 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-12.588271 16.117241 3.7866807 128.0 +-0 0 0 128.0 +-12.061206 15.839338 3.6872149 128.0 +-9.7041101 12.907568 2.9970901 128.0 +-11.489558 15.479124 3.5713215 128.0 +-10.473453 14.292663 3.2853792 128.0 +-0 0 0 128.0 +-10.293841 14.415309 3.284296 128.0 +-9.4979782 13.47491 3.0590081 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.0644569 13.736111 3.0537732 128.0 +-8.6418772 13.272204 2.9400461 128.0 +-8.830883 13.746182 3.0319302 128.0 +-9.4593239 14.924952 3.2763531 128.0 +-9.7701244 15.626538 3.415714 128.0 +-8.1627932 13.23584 2.8873343 128.0 +-0 0 0 128.0 +-10.162426 16.939823 3.6588733 128.0 +-10.053286 16.993395 3.657068 128.0 +-8.3598757 14.331028 3.0783236 128.0 +-8.2198029 14.291677 3.0591886 128.0 +-8.0383205 14.176715 3.0243485 128.0 +-0 0 0 128.0 +-8.0270147 14.57064 3.086447 128.0 +-7.9355822 14.61616 3.0857248 128.0 +-8.3366747 15.582118 3.2767141 128.0 +-9.1527672 17.362679 3.6355863 128.0 +-8.1294165 15.653571 3.2705765 128.0 +-8.0820436 15.798601 3.2902532 128.0 +-7.6220303 15.127634 3.1422274 128.0 +-7.5002108 15.115967 3.1303132 128.0 +-7.4232955 15.194401 3.1369925 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-17.409882 37.969414 7.6996136 128.0 +-0 0 0 128.0 +-6.7417083 15.193022 3.0839198 128.0 +-0 0 0 128.0 +-6.5566988 15.279128 3.0848224 128.0 +-0 0 0 128.0 +-6.3690834 15.359347 3.0850029 128.0 +-0 0 0 128.0 +-6.1867018 15.452785 3.0882523 128.0 +-6.3538384 16.156813 3.2196701 128.0 +-6.0370035 15.632139 3.1088314 128.0 +-6.1523013 16.22621 3.218226 128.0 +-5.8309956 15.668173 3.1016107 128.0 +-5.7418332 15.723058 3.1054015 128.0 +-5.6382837 15.738548 3.1016107 128.0 +-5.4656377 15.556634 3.0595496 128.0 +-5.3181844 15.439228 3.0303056 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.3951669 13.855054 2.7010386 128.0 +-4.2619448 13.726771 2.671253 128.0 +-4.1636295 13.706551 2.6624076 128.0 +-4.1472397 13.960007 2.7060931 128.0 +-0 0 0 128.0 +-4.1694989 14.693007 2.8364279 128.0 +-3.8041937 13.725932 2.6474245 128.0 +-3.8267732 14.143978 2.7225204 128.0 +-3.6417458 13.795357 2.6519375 128.0 +-0 0 0 128.0 +-3.5078497 13.981153 2.6788347 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.5348995 15.274692 2.9108019 128.0 +-3.3197737 14.756808 2.80935 128.0 +-3.3473995 15.317882 2.9109824 128.0 +-3.0153582 14.216253 2.7004972 128.0 +-3.0111179 14.638149 2.7761345 128.0 +-2.6589663 13.340646 2.5299065 128.0 +-2.5945778 13.447491 2.5468752 128.0 +-0 0 0 128.0 +-5.9235001 32.860924 6.1615906 128.0 +-5.7224317 32.900528 6.1623125 128.0 +-2.3818302 14.211361 2.6779323 128.0 +-5.1446919 31.892385 5.9622974 128.0 +-2.1731997 14.019857 2.6371348 128.0 +-4.7212415 31.740059 5.9227638 128.0 +-4.5222368 31.73922 5.9173484 128.0 +-4.3275361 31.767344 5.9175286 128.0 +-4.1217566 31.710394 5.9021845 128.0 +-3.9359264 31.806345 5.9153624 128.0 +-3.6641123 31.178339 5.7949562 128.0 +-3.4779599 31.247156 5.8036213 128.0 +-3.2949047 31.351053 5.8189654 128.0 +-3.0913429 31.25812 5.7982059 128.0 +-2.8988528 31.269644 5.7969418 128.0 +-2.8646481 33.109474 6.1327076 128.0 +-2.6612806 33.124466 6.1323466 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.75478524 20.715277 3.8377676 128.0 +0.88263041 20.727943 3.841017 128.0 +1.0030507 20.583618 3.8155639 128.0 +1.1317551 20.621271 3.8236873 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.5979046 21.779955 4.0413933 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.1071398 20.204376 3.7615886 128.0 +1.5519289 14.04377 2.6264842 128.0 +1.6844698 14.431599 2.6999555 128.0 +1.7889481 14.550829 2.7239647 128.0 +1.9612192 15.182413 2.8429267 128.0 +2.0557914 15.180815 2.8449123 128.0 +2.1506937 15.180575 2.847259 128.0 +2.2386184 15.132066 2.8407605 128.0 +2.3402681 15.175398 2.8514111 128.0 +2.2541158 14.043934 2.6438141 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.5346437 14.12495 2.6671011 128.0 +2.7351515 14.722229 2.7815502 128.0 +2.7053752 14.080226 2.6647544 128.0 +2.786166 14.035383 2.6595192 128.0 +2.8819056 14.065238 2.6683648 128.0 +2.9764898 14.086745 2.675766 128.0 +3.0647511 14.076867 2.6773906 128.0 +0 0 0 128.0 +3.7017839 16.052805 3.0568419 128.0 +3.7900033 15.986722 3.0487185 128.0 +0 0 0 128.0 +3.8806803 15.518209 2.9691095 128.0 +3.4678721 13.51437 2.5939908 128.0 +3.5329592 13.425303 2.5811739 128.0 +3.9717824 14.725271 2.8324566 128.0 +0 0 0 128.0 +4.2568755 15.045476 2.9030395 128.0 +4.2465305 14.664785 2.8353448 128.0 +4.5627007 15.402339 2.9815655 128.0 +4.4256001 14.609687 2.8349838 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.322584 15.37766 5.9482169 128.0 +28.202198 15.088976 5.9036288 128.0 +28.214207 14.873447 5.8870211 128.0 +28.223759 14.657888 5.8702326 128.0 +28.236111 14.445013 5.8543472 128.0 +28.231106 14.224573 5.8352122 128.0 +28.177765 13.981569 5.8065095 128.0 +28.172001 13.763938 5.7879162 128.0 +28.181469 13.555005 5.7727523 128.0 +28.18766 13.345634 5.7572279 128.0 +28.134396 13.109696 5.7299695 128.0 +28.123112 12.895004 5.7115564 128.0 +28.132669 12.691057 5.6976566 128.0 +28.132694 12.48389 5.6821318 128.0 +28.12583 12.274839 5.665524 128.0 +28.086731 12.053157 5.6427784 128.0 +28.086756 11.849624 5.6281567 128.0 +28.065355 11.638256 5.6095629 128.0 +28.077034 11.441704 5.5978293 128.0 +28.04353 11.227899 5.5774307 128.0 +28.059721 11.035096 5.5671411 128.0 +28.045244 10.831179 5.551075 128.0 +28.059673 10.639363 5.540966 128.0 +28.058979 10.442634 5.5281491 128.0 +27.999649 10.225394 5.5041399 128.0 +27.986862 10.026528 5.4895177 128.0 +27.994965 9.836031 5.4792285 128.0 +27.993414 9.6429291 5.4673142 128.0 +27.984026 9.4480143 5.4541359 128.0 +27.98918 9.2588301 5.4440269 128.0 +27.948153 9.0553865 5.4252529 128.0 +27.9685 8.8727245 5.4185739 128.0 +27.943512 8.676445 5.4034104 128.0 +27.949169 8.4905291 5.3943844 128.0 +27.945112 8.3023481 5.3837337 128.0 +27.923744 8.1098747 5.3700142 128.0 +27.926615 7.9252272 5.3611689 128.0 +27.920692 7.7387481 5.3508792 128.0 +27.907837 7.5510993 5.3395066 128.0 +27.89278 7.3636494 5.3279533 128.0 +27.878382 7.1771593 5.316761 128.0 +27.867517 6.9923205 5.3064713 128.0 +27.855436 6.8078861 5.2961817 128.0 +27.845972 6.6247745 5.2866144 128.0 +27.847767 6.4449186 5.2793937 128.0 +27.843607 6.2642112 5.2712703 128.0 +27.844044 6.0850577 5.2642298 128.0 +27.824089 5.9020534 5.2535791 128.0 +27.799086 5.71873 5.2422066 128.0 +27.792175 5.539782 5.2344441 128.0 +27.779287 5.3602028 5.2257795 128.0 +27.775879 5.1829753 5.2191 128.0 +27.764568 5.0047703 5.2111573 128.0 +27.777311 4.8312821 5.2079082 128.0 +27.7589 4.6527848 5.1990623 128.0 +27.757797 4.4776726 5.1936469 128.0 +27.750731 4.3019953 5.1873288 128.0 +27.741581 4.1264291 5.18083 128.0 +27.74106 3.9525247 5.1761365 128.0 +27.731655 3.77772 5.1699991 128.0 +27.728954 3.6041942 5.1653056 128.0 +27.708572 3.4287901 5.1575432 128.0 +27.699785 3.2552645 5.1521277 128.0 +27.701641 3.0832818 5.1488781 128.0 +27.690693 2.9101653 5.1434627 128.0 +27.687473 2.7381704 5.1396718 128.0 +27.67927 2.5659616 5.135159 128.0 +27.660196 2.3931088 5.1288404 128.0 +27.656712 2.221926 5.1255913 128.0 +27.652168 2.0508759 5.1223421 128.0 +27.64068 1.879565 5.1180096 128.0 +27.624207 1.7082294 5.1129551 128.0 +27.620419 1.5379326 5.1104279 128.0 +27.620495 1.3679899 5.1088028 128.0 +27.613628 1.1978484 5.1060953 128.0 +27.607681 1.0279158 5.1037483 128.0 +27.602654 0.85816264 5.1017628 128.0 +27.587734 0.68828887 5.0981522 128.0 +27.575705 0.51870453 5.095264 128.0 +27.566566 0.34934372 5.0930977 128.0 +27.568192 0.18019187 5.0930977 128.0 +27.568777 0.011033243 5.0930977 128.0 +27.558491 -0.15806952 5.0912929 128.0 +27.547167 -0.32704565 5.0894876 128.0 +27.531857 -0.49583566 5.0871406 128.0 +27.519447 -0.66454506 5.085516 128.0 +27.514851 -0.83338869 5.085516 128.0 +27.52298 -1.0027021 5.0880432 128.0 +27.543825 -1.1727322 5.0930977 128.0 +27.51548 -1.3407109 5.0893068 128.0 +27.521467 -1.5103257 5.0920148 128.0 +27.51659 -1.6794653 5.0929174 128.0 +27.493992 -1.8474813 5.0907512 128.0 +27.476252 -2.0157146 5.0896678 128.0 +27.464348 -2.1843457 5.0898485 128.0 +27.461206 -2.3537467 5.0918341 128.0 +27.459961 -2.5234609 5.0943613 128.0 +27.43515 -2.6910405 5.0927367 128.0 +27.424969 -2.8600428 5.0940003 128.0 +27.431345 -3.0309656 5.0985136 128.0 +27.429815 -3.2012763 5.1017628 128.0 +27.417467 -3.3704822 5.1032071 128.0 +27.405048 -3.539783 5.1048317 128.0 +27.375015 -3.7068148 5.1033874 128.0 +27.355652 -3.8752668 5.1041093 128.0 +27.338169 -4.0440521 5.1053729 128.0 +27.30798 -4.2109704 5.1044707 128.0 +18.099442 -2.904928 3.3976619 128.0 +17.999781 -3.0023379 3.3824985 128.0 +19.395025 -3.3574755 3.6458759 128.0 +19.067167 -3.4213567 3.5886512 128.0 +18.734432 -3.4804447 3.530524 128.0 +0 -0 0 128.0 +19.735138 -3.9174616 3.7260263 128.0 +18.686466 -3.8286426 3.5341344 128.0 +19.707712 -4.1640234 3.7301784 128.0 +0 -0 0 128.0 +18.517811 -4.1506553 3.516263 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9501181 -2.2495515 1.5496875 128.0 +7.941834 -2.2999315 1.5507706 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +8.0686769 -2.5528789 1.5865134 128.0 +7.9602036 -2.5724013 1.568642 128.0 +7.9638853 -2.6276667 1.572433 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.945431 -7.2660003 3.929291 128.0 +0 -0 0 128.0 +21.082916 -7.9747462 4.1702838 128.0 +20.999628 -8.0908747 4.1636047 128.0 +0 -0 0 128.0 +20.373552 -8.1381817 4.0598063 128.0 +19.020294 -7.7333145 3.8016639 128.0 +20.190353 -8.3537416 4.0435596 128.0 +0 -0 0 128.0 +18.819572 -8.0584898 3.7906523 128.0 +18.74362 -8.162425 3.7854171 128.0 +19.053825 -8.4369631 3.8578053 128.0 +19.242962 -8.6623173 3.9063649 128.0 +19.284256 -8.8236036 3.9254999 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.9597981 -2.1462228 0.8599239 128.0 +3.9405215 -2.1671619 0.85866022 128.0 +4.1564894 -2.319242 0.90685886 128.0 +3.8656945 -2.188226 0.84855115 128.0 +3.7575116 -2.1575489 0.82851356 128.0 +3.7476022 -2.1825435 0.82923561 128.0 +3.7341399 -2.2054973 0.82923561 128.0 +4.3205123 -2.5876415 0.95758474 128.0 +3.7025902 -2.2486026 0.82833302 128.0 +3.7465167 -2.3068569 0.84078884 128.0 +3.2883892 -2.0527606 0.74475265 128.0 +3.2316785 -2.0450284 0.73518515 128.0 +3.2198975 -2.0653501 0.73536569 128.0 +3.2112877 -2.0877483 0.73626828 128.0 +3.1910245 -2.1025434 0.73464358 128.0 +3.3359447 -2.2274816 0.7694838 128.0 +3.3433957 -2.2622375 0.77417731 128.0 +3.3221505 -2.2777047 0.77255261 128.0 +3.3105357 -2.2997293 0.77309418 128.0 +3.2971668 -2.3205652 0.77327472 128.0 +4.0621414 -2.8962772 0.94891983 128.0 +4.3249722 -3.1238446 1.0124626 128.0 +2.9736712 -2.1758661 0.70955145 128.0 +2.9610546 -2.1946568 0.70973194 128.0 +2.9200001 -2.1921194 0.70341378 128.0 +4.4819093 -3.4076154 1.0666183 128.0 +2.8663819 -2.207386 0.69727612 128.0 +2.8341682 -2.210417 0.69294369 128.0 +2.800482 -2.2119172 0.68825018 128.0 +3.4659157 -2.7720788 0.8478291 128.0 +3.5459177 -2.8719032 0.87075502 128.0 +3.062 -2.5113053 0.76009679 128.0 +4.2330837 -3.5152376 1.0431508 128.0 +3.6257107 -3.0487161 0.90270692 128.0 +3.606936 -3.0709057 0.90270692 128.0 +4.1706429 -3.5951278 1.0438728 128.0 +4.0877361 -3.5676219 1.0290704 128.0 +3.2726502 -2.8919156 0.83483171 128.0 +3.9498129 -3.5335817 1.0059639 128.0 +3.5350978 -3.20189 0.90866405 128.0 +3.4820354 -3.192945 0.90036017 128.0 +3.4263337 -3.1807942 0.89133424 128.0 +3.2849002 -3.0872576 0.86064595 128.0 +3.3478477 -3.1853158 0.88140565 128.0 +3.9998569 -3.8525963 1.0525378 128.0 +2.4605813 -2.3994794 0.66406059 128.0 +2.4549124 -2.4235141 0.66640735 128.0 +2.4942665 -2.4927573 0.68048787 128.0 +2.4733922 -2.5024192 0.67904371 128.0 +2.4875407 -2.547807 0.68680602 128.0 +2.5182955 -2.6111588 0.6990813 128.0 +4.1197886 -4.324131 1.129439 128.0 +2.4590979 -2.6132169 0.69186056 128.0 +3.10202 -3.3370714 0.8694914 128.0 +4.1392903 -4.5078955 1.1565168 128.0 +2.5381203 -2.7986395 0.72670072 128.0 +0 -0 0 128.0 +3.3770494 -3.8165646 0.9685964 128.0 +2.2524989 -2.5775473 0.66153336 128.0 +3.6596911 -4.2396488 1.0612028 128.0 +3.3611095 -3.9424436 0.98412102 128.0 +3.3748698 -4.0081329 0.9949522 128.0 +3.4319746 -4.1270723 1.0184197 128.0 +3.2036939 -3.9010358 0.95975095 128.0 +1.6449211 -2.0285172 0.51260507 128.0 +1.6367477 -2.0439458 0.51386869 128.0 +1.6241755 -2.0539503 0.51386869 128.0 +1.6145694 -2.0677531 0.51477128 128.0 +1.7862597 -2.3167262 0.57019067 128.0 +1.8178942 -2.3878965 0.58409065 128.0 +1.8168029 -2.4170876 0.58824259 128.0 +2.1706829 -2.9249547 0.70178908 128.0 +2.1387415 -2.919178 0.69745666 128.0 +2.1271312 -2.9410121 0.69944239 128.0 +2.1039009 -2.9468048 0.69781768 128.0 +1.5224984 -2.1605639 0.51838166 128.0 +1.4968544 -2.1521027 0.51441026 128.0 +1.5576721 -2.2690847 0.53841931 128.0 +1.7031869 -2.5139072 0.59058934 128.0 +1.7074139 -2.5537434 0.59708798 128.0 +1.9490459 -2.9541101 0.68283463 128.0 +1.5745091 -2.4187241 0.56296986 128.0 +1.9487993 -3.0340762 0.6951099 128.0 +1.952261 -3.0808682 0.70269173 128.0 +1.914027 -3.0619323 0.6960125 128.0 +1.8972685 -3.0769675 0.69673455 128.0 +1.1852036 -1.9490947 0.45195061 128.0 +1.8629086 -3.1059222 0.69799823 128.0 +1.8157699 -3.0698893 0.68788916 128.0 +1.8003685 -3.08692 0.68915278 128.0 +1.1198494 -1.9477531 0.44563243 128.0 +1.0976889 -1.9366202 0.44184154 128.0 +1.1021019 -1.9725099 0.44797918 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.5320383 -2.9507058 0.64348143 128.0 +1.5416784 -3.0143399 0.65467364 128.0 +1.4965984 -2.9710407 0.64384246 128.0 +1.5806429 -3.186337 0.68608397 128.0 +0 -0 0 128.0 +1.4877031 -3.0938122 0.66333854 128.0 +0.9594034 -2.0272362 0.44491038 128.0 +0.96065587 -2.0625052 0.4508675 128.0 +1.4157456 -3.0884855 0.65683985 128.0 +1.3789718 -3.0576656 0.64889699 128.0 +1.3741479 -3.0975351 0.65521514 128.0 +1.3677057 -3.1347551 0.66099179 128.0 +1.0167961 -2.3702934 0.50664788 128.0 +1.3692803 -3.2464557 0.6799463 128.0 +0.89796042 -2.1663587 0.46368435 128.0 +0.88799167 -2.1800253 0.46530902 128.0 +0 -0 0 128.0 +1.1801201 -3.0017376 0.62524897 128.0 +1.3679187 -3.542918 0.73031116 128.0 +0.83596736 -2.2057595 0.46621162 128.0 +0.8227604 -2.2117691 0.46639213 128.0 +1.4613956 -4.0026464 0.81533563 128.0 +1.3671432 -3.8170912 0.77742666 128.0 +1.1849091 -3.3734932 0.6895138 128.0 +0.89349049 -2.5949011 0.53697515 128.0 +1.3447912 -3.9841878 0.80504608 128.0 +1.3274244 -4.0138416 0.80919802 128.0 +0.97048563 -2.9964073 0.61134905 128.0 +0.90538478 -2.8551147 0.58300751 128.0 +0.93626714 -3.0165451 0.61297369 128.0 +0.75391626 -2.4829822 0.50953621 128.0 +0.73250401 -2.466819 0.50556481 128.0 +0.86028296 -2.9633718 0.59961528 128.0 +0.84745455 -2.9875185 0.60322565 128.0 +0.86956698 -3.1386287 0.63102561 128.0 +0.81972086 -3.0309231 0.6095438 128.0 +0.79960161 -3.03019 0.60846072 128.0 +0.7751081 -3.0121789 0.60412824 128.0 +0.74296623 -2.9625003 0.59383863 128.0 +0.71333194 -2.9201865 0.58499324 128.0 +0.70701116 -2.9733083 0.59419972 128.0 +0.68697971 -2.9699247 0.59275556 128.0 +0.67241395 -2.990397 0.59582436 128.0 +0.92727238 -4.2445846 0.83067977 128.0 +0.88141221 -4.1568646 0.81316942 128.0 +0.66145527 -3.2171042 0.63608015 128.0 +0.65920097 -3.3088803 0.65250736 128.0 +0.80605316 -4.1791444 0.81443304 128.0 +0.77913219 -4.1772437 0.81316942 128.0 +0.76133883 -4.2255039 0.82129276 128.0 +1.4650716 -8.4249887 1.6027602 128.0 +1.5138397 -9.0333023 1.714321 128.0 +1.3133252 -8.14326 1.5471603 128.0 +0.43875948 -2.8326023 0.55935949 128.0 +0.4356983 -2.931555 0.57723087 128.0 +0.39966476 -2.8075876 0.55376339 128.0 +0.36092088 -2.6521068 0.52451932 128.0 +0.34210524 -2.6347642 0.52090895 128.0 +0.32895228 -2.6612167 0.52542192 128.0 +0.33707225 -2.8712537 0.56387246 128.0 +0.3184689 -2.86447 0.56224781 128.0 +0.31456143 -2.9964685 0.58625686 128.0 +0.30662528 -3.1040521 0.60575294 128.0 +0.29165962 -3.1499467 0.61387628 128.0 +0.27385274 -3.1693153 0.61712563 128.0 +0.29087606 -3.6248665 0.70070601 128.0 +0.20059578 -2.7094638 0.53192061 128.0 +0.25511476 -3.7567141 0.72435403 128.0 +0 -0 0 128.0 +0.20636949 -3.7124233 0.71568906 128.0 +0.13520984 -2.7371473 0.53625304 128.0 +0.12421154 -2.8715653 0.56080365 128.0 +0.10596725 -2.8555644 0.55773485 128.0 +0.088780195 -2.8669748 0.55972052 128.0 +0.071285278 -2.8713987 0.56044263 128.0 +0.053646855 -2.8707986 0.56026208 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +-0 -0 0 128.0 +-0.034847755 -2.9055159 0.5665803 128.0 +-0.052975852 -2.9219654 0.5696491 128.0 +-0.098953113 -4.0838284 0.7830227 128.0 +-0.12487228 -4.1116548 0.78825778 128.0 +-0.14866677 -4.0714946 0.78103703 128.0 +-0.17657398 -4.1392932 0.79367334 128.0 +-0.19967186 -4.0909767 0.78500843 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.28134209 -2.6943617 0.53047645 128.0 +-0.29927316 -2.7052939 0.5328232 128.0 +-0.31757694 -2.7180607 0.53553098 128.0 +-0.33244875 -2.7014177 0.5328232 128.0 +-0.34876609 -2.697376 0.53246218 128.0 +-0.36649802 -2.7039573 0.53408682 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.3981568 -3.4993386 0.72489554 128.0 +-1.4125637 -3.473382 0.72146571 128.0 +-1.4522743 -3.5091834 0.73031116 128.0 +-0 -0 0 128.0 +-1.5072296 -3.5191269 0.73590726 128.0 +-1.54136 -3.5386696 0.74168384 128.0 +-1.5606546 -3.5237491 0.74060071 128.0 +-1.5883024 -3.5275602 0.74330848 128.0 +-1.6307873 -3.5633626 0.75251502 128.0 +-1.652621 -3.5532892 0.75251502 128.0 +-1.6550649 -3.5021737 0.74421114 128.0 +-3.9382207 -8.203969 1.7034899 128.0 +-4.0764179 -8.3600044 1.7403158 128.0 +-1.6262821 -3.2833719 0.70576054 128.0 +-1.6327002 -3.2460907 0.70016444 128.0 +-1.654376 -3.2395155 0.70088649 128.0 +-1.6710539 -3.2231908 0.69962287 128.0 +-1.7004167 -3.2311563 0.70341378 128.0 +-4.2590551 -7.9752455 1.6926587 128.0 +-4.6340613 -8.5508394 1.8183 128.0 +-1.8994056 -3.4535625 0.75666696 128.0 +-1.942603 -3.4813547 0.76497084 128.0 +-1.9140297 -3.3812022 0.74637735 128.0 +-1.9357197 -3.3711004 0.74673837 128.0 +-2.0068493 -3.445858 0.76515132 128.0 +-2.0529609 -3.4758258 0.77417731 128.0 +-5.0151362 -8.3743525 1.8247987 128.0 +-5.0674472 -8.3451042 1.8251598 128.0 +-0 -0 0 128.0 +-4.9997067 -8.0102749 1.7663105 128.0 +-5.040349 -7.9661479 1.7634223 128.0 +-0 -0 0 128.0 +-5.1168218 -7.8715324 1.756382 128.0 +-5.1693525 -7.846559 1.7578261 128.0 +-5.2294154 -7.8326898 1.7617975 128.0 +-5.3402042 -7.8933277 1.7823768 128.0 +-5.3957653 -7.8709588 1.7847235 128.0 +-5.4473257 -7.8425498 1.7858065 128.0 +-5.5400591 -7.8725247 1.8000675 128.0 +-5.6876035 -7.9777398 1.8314779 128.0 +-5.6944103 -7.8844824 1.8183 128.0 +-5.7200332 -7.8184342 1.8112597 128.0 +-5.7626281 -7.7760773 1.8096352 128.0 +-5.9129663 -7.8774486 1.8410454 128.0 +-5.9147615 -7.7799444 1.826965 128.0 +-0 -0 0 128.0 +-5.9989018 -7.6928134 1.8237156 128.0 +-6.0411143 -7.6496849 1.8222715 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.6610775 -9.2052031 2.48243 128.0 +-9.7016211 -9.1309195 2.4784586 128.0 +-9.7978039 -9.1087246 2.4885676 128.0 +-9.7368746 -8.9413233 2.4595041 128.0 +-9.642211 -8.7459412 2.4224975 128.0 +-10.401868 -9.3193302 2.596518 128.0 +-10.486107 -9.2794485 2.6031973 128.0 +-0 -0 0 128.0 +-9.3893738 -8.1055984 2.3098536 128.0 +-10.700041 -9.1231518 2.6140285 128.0 +-9.5754051 -8.0632601 2.3307939 128.0 +-9.5271502 -7.9232216 2.3075068 128.0 +-10.407844 -8.5482082 2.5051754 128.0 +-10.998626 -8.9210119 2.6324413 128.0 +-10.911908 -8.7402134 2.5992258 128.0 +-10.21706 -8.0812101 2.4241223 128.0 +-11.128413 -8.6916227 2.6248596 128.0 +-10.093489 -7.7840295 2.3726742 128.0 +-10.166883 -7.7416148 2.3786314 128.0 +-10.387935 -7.8097138 2.4185262 128.0 +-10.348783 -7.6813412 2.398669 128.0 +-11.080383 -8.1194315 2.5544572 128.0 +-11.078993 -8.0143948 2.5429039 128.0 +-11.250424 -8.03372 2.5705233 128.0 +-11.176507 -7.8778348 2.5429039 128.0 +-0 -0 0 128.0 +-10.921257 -7.4990053 2.4647391 128.0 +-11.002076 -7.4555798 2.4725015 128.0 +-0 -0 0 128.0 +-11.034453 -7.2815413 2.4596846 128.0 +-11.055021 -7.1981335 2.4544494 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.516806 -9.7713232 3.5554357 128.0 +-16.65546 -9.7158871 3.5722241 128.0 +-16.59881 -9.546814 3.5476735 128.0 +-16.448311 -9.3264084 3.5036268 128.0 +-16.536135 -9.2425833 3.5101254 128.0 +-16.564106 -9.1252832 3.5041683 128.0 +-0 -0 0 128.0 +-16.683514 -8.9259691 3.5059736 128.0 +-17.071205 -8.9991083 3.5751123 128.0 +-17.123482 -8.8928318 3.5745709 128.0 +-16.267941 -8.322156 3.3870113 128.0 +-6.6443696 -3.3475056 1.3987736 128.0 +-7.3097243 -3.6266975 1.5309136 128.0 +-7.0022082 -3.4207249 1.4635799 128.0 +-7.0257244 -3.3789747 1.4641215 128.0 +-7.2303405 -3.4229283 1.5014889 128.0 +-18.79384 -8.7571621 3.8386703 128.0 +-19.02335 -8.7224426 3.8742325 128.0 +-19.088167 -8.6108112 3.8765793 128.0 +-17.53858 -7.7825861 3.5548942 128.0 +-17.462503 -7.6209245 3.530163 128.0 +-17.614685 -7.5590167 3.5512838 128.0 +-20.77087 -8.7629862 4.1708255 128.0 +-7.4068489 -3.071188 1.5049188 128.0 +-7.6459775 -3.1155107 1.5486044 128.0 +-6.9463396 -2.7808137 1.4065359 128.0 +-6.9889007 -2.748219 1.4115903 128.0 +-7.9470057 -3.0688605 1.5968031 128.0 +-7.1738458 -2.7197874 1.4413761 128.0 +-7.204226 -2.6808643 1.4440838 128.0 +-8.1647511 -2.981447 1.6285744 128.0 +-8.1134453 -2.9064126 1.6150354 128.0 +-8.0800886 -2.8386419 1.6051069 128.0 +-8.2545137 -2.8431492 1.6356146 128.0 +-7.2224979 -2.438163 1.43235 128.0 +-22.538584 -7.4556904 4.390337 128.0 +-21.624836 -7.0064964 4.2053046 128.0 +-23.118702 -7.3341031 4.4847484 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.9547 -3.7622046 2.5091467 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.660972 -3.4254904 2.4405496 128.0 +-12.704576 -3.3537652 2.4448819 128.0 +-12.664907 -3.2602987 2.4335093 128.0 +-12.636019 -3.1703184 2.4243028 128.0 +-16.910793 -4.1328492 3.2283351 128.0 +-16.954971 -4.0335617 3.2319455 128.0 +-17.942434 -4.1523442 3.4133673 128.0 +-12.758956 -2.870271 2.4335093 128.0 +-13.989931 -3.057169 2.661505 128.0 +-14.05461 -2.9810681 2.6701698 128.0 +-18.308683 -3.7662604 3.4639125 128.0 +-0 -0 0 128.0 +-14.13897 -2.7280135 2.676127 128.0 +-14.371058 -2.6814437 2.7163827 128.0 +-12.469694 -2.2475345 2.3587744 128.0 +-12.558833 -2.1841269 2.3728549 128.0 +-12.579759 -2.1083272 2.374299 128.0 +-12.607023 -2.0334492 2.3770068 128.0 +-16.757868 -2.597693 3.1456573 128.0 +-12.877163 -1.9152035 2.4226782 128.0 +-17.055286 -2.4298704 3.1951196 128.0 +-12.58686 -1.7144163 2.3647316 128.0 +-12.52594 -1.6278967 2.3515537 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-17.862766 -1.9880425 3.331953 128.0 +-17.904953 -1.8815885 3.3375492 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-20.598967 -1.7820833 3.8280196 128.0 +-25.183134 -2.0231645 4.6701417 128.0 +-19.674702 -1.4590977 3.6541798 128.0 +-19.836367 -1.3487604 3.6823406 128.0 +-19.092291 -1.1805097 3.5440631 128.0 +-0 -0 0 128.0 +-24.665535 -1.2215942 4.5658016 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-22.218649 13.337729 4.4677916 128.0 +-21.749096 13.238049 4.3902073 128.0 +-0 0 0 128.0 +-20.540514 12.850427 4.1793804 128.0 +-22.339108 14.167235 4.5598807 128.0 +-0 0 0 128.0 +-19.238483 12.534328 3.9624817 128.0 +-18.988485 12.538073 3.927063 128.0 +-18.875971 12.630774 3.9198105 128.0 +-21.026838 14.257747 4.3805933 128.0 +-22.2875 15.313128 4.6605716 128.0 +-0 0 0 128.0 +-21.134573 14.905983 4.4588523 128.0 +-19.455629 13.901275 4.1250715 128.0 +-0 0 0 128.0 +-20.837545 15.278487 4.4548044 128.0 +-19.740065 14.660809 4.240942 128.0 +-0 0 0 128.0 +-20.577875 15.678567 4.4602017 128.0 +-19.611223 15.133081 4.2721443 128.0 +-19.734674 15.422476 4.3192005 128.0 +-20.029203 15.851587 4.4042063 128.0 +-16.174465 12.96277 3.5802951 128.0 +-16.016562 12.998412 3.5630915 128.0 +-15.909851 13.074538 3.5571885 128.0 +-15.833874 13.175696 3.5582004 128.0 +-16.281862 13.718478 3.6766007 128.0 +-15.617757 13.323586 3.5462253 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-35.261654 31.611563 8.1368523 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-15.84892 14.74256 3.7373188 128.0 +-0 0 0 128.0 +-15.741717 15.00736 3.7550282 128.0 +-15.646501 15.100928 3.7543535 128.0 +-14.251448 13.92429 3.442836 128.0 +-14.127902 13.97404 3.4337282 128.0 +-14.07811 14.096733 3.4424987 128.0 +-15.572292 15.785621 3.8277214 128.0 +-14.130367 14.500697 3.4979882 128.0 +-14.587942 15.155271 3.6329174 128.0 +-13.372724 14.064371 3.3542888 128.0 +-13.303719 14.164842 3.3586738 128.0 +-13.182367 14.20935 3.3500721 128.0 +-13.716867 14.968743 3.507602 128.0 +-13.33308 14.730338 3.4332223 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.071623 16.133614 3.6966715 128.0 +-13.943417 16.186045 3.6890817 128.0 +-0 0 0 128.0 +-13.765931 16.382347 3.6949847 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-12.256024 15.142687 3.3669384 128.0 +-12.13765 15.186034 3.3600233 128.0 +-12.078436 15.303554 3.3694682 128.0 +-12.473236 16.00481 3.505578 128.0 +-10.691784 13.893707 3.0333261 128.0 +-10.599773 13.950416 3.0314708 128.0 +-0 0 0 128.0 +-11.679576 15.769832 3.3913941 128.0 +-9.7350397 13.314032 2.8557255 128.0 +-9.6768131 13.406284 2.8626406 128.0 +-10.192023 14.304319 3.0388918 128.0 +-10.078547 14.330304 3.0313022 128.0 +-9.3665857 13.493059 2.8440878 128.0 +-9.2797184 13.544585 2.8429074 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.9681473 13.804612 2.8503284 128.0 +-8.8338137 13.782201 2.8346429 128.0 +-9.4269876 14.908382 3.0517101 128.0 +-8.3609638 13.40365 2.7366507 128.0 +-8.1933451 13.316177 2.7088215 128.0 +-9.5431499 15.725716 3.1810734 128.0 +-9.8660603 16.485147 3.3208938 128.0 +-9.8203268 16.639603 3.3396151 128.0 +-8.3260851 14.307261 2.866014 128.0 +-8.2018461 14.294812 2.853533 128.0 +-8.6142416 15.229437 3.0274229 128.0 +-8.0363674 14.413325 2.8572435 128.0 +-8.0080585 14.572075 2.8786635 128.0 +-9.108285 16.818167 3.3062203 128.0 +-8.2550669 15.468431 3.0336633 128.0 +-8.9324036 16.988001 3.3176892 128.0 +-8.8710632 17.125637 3.3337121 128.0 +-7.6737576 15.039146 2.9225154 128.0 +-0 0 0 128.0 +-18.303068 36.988628 7.0951991 128.0 +-0 0 0 128.0 +-7.1442285 14.893217 2.8599422 128.0 +-0 0 0 128.0 +-8.0465517 17.316439 3.300823 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-7.7463884 17.506685 3.3092561 128.0 +-6.6580615 15.299735 2.8886147 128.0 +-16.395626 38.321285 7.1656995 128.0 +-6.4881511 15.423901 2.8967104 128.0 +-0 0 0 128.0 +-6.2857757 15.47131 2.8909757 128.0 +-6.4935927 16.268509 3.0307961 128.0 +-6.4404116 16.427347 3.0527222 128.0 +-6.0233035 15.645101 2.9021075 128.0 +-5.9425244 15.722334 2.9095285 128.0 +-5.8336024 15.725231 2.9034567 128.0 +-5.7407122 15.770918 2.9053121 128.0 +-5.6448298 15.808631 2.905818 128.0 +-4.6667237 13.32648 2.449589 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.618381 14.610932 2.6555245 128.0 +-4.5114603 14.583437 2.6455734 128.0 +-4.1732688 13.78911 2.4986694 128.0 +-0 0 0 128.0 +-3.9837501 13.770163 2.486357 128.0 +-3.9613667 14.014407 2.5254865 128.0 +-3.7934926 13.742001 2.4728642 128.0 +-3.7265351 13.829737 2.484333 128.0 +-3.9703002 15.103077 2.705617 128.0 +-3.8988414 15.210224 2.7202904 128.0 +-3.8042459 15.229079 2.7194471 128.0 +-3.7125938 15.259796 2.7207963 128.0 +-0 0 0 128.0 +-3.5151005 15.260983 2.7132068 128.0 +-3.2821152 14.659927 2.6040828 128.0 +-4.1539197 19.104649 3.3789134 128.0 +-3.0297434 14.356721 2.544208 128.0 +-2.7646096 13.509792 2.3930874 128.0 +-2.6799388 13.517799 2.3915694 128.0 +-3.6576383 19.064346 3.3551321 128.0 +-2.7794788 14.982074 2.640851 128.0 +-2.6089542 14.5603 2.564616 128.0 +-2.5064752 14.500274 2.5514605 128.0 +-2.3415482 14.059374 2.4723582 128.0 +-3.0768898 19.203583 3.3613725 128.0 +-4.9067411 31.879986 5.5527902 128.0 +-2.1950588 14.863604 2.6044202 128.0 +-0 0 0 128.0 +-1.9254075 14.244731 2.4931035 128.0 +-1.9907489 15.442099 2.6976898 128.0 +-3.8371549 31.286627 5.4271374 128.0 +-3.6435163 31.295876 5.4247761 128.0 +-0 0 0 128.0 +-3.2584798 31.331367 5.4235954 128.0 +-3.0656934 31.345867 5.4227524 128.0 +-2.8715034 31.344456 5.4193792 128.0 +-2.6718273 31.276043 5.4047055 128.0 +-2.5020535 31.571888 5.452774 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.186609 35.995701 6.2041607 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.0317845 20.721964 3.5836682 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.9871548 21.374018 3.7066224 128.0 +0 0 0 128.0 +2.1111374 20.037439 3.481122 128.0 +2.2413714 20.089741 3.4924223 128.0 +1.6877978 14.3324 2.5028858 128.0 +1.7459745 14.082122 2.4615638 128.0 +1.8770516 14.414215 2.5207641 128.0 +2.0810797 15.249148 2.6669934 128.0 +2.1743288 15.23414 2.6666563 128.0 +2.2488699 15.093775 2.6447301 128.0 +0 0 0 128.0 +2.2640588 14.014153 2.4625759 128.0 +2.5653329 15.282146 2.6850402 128.0 +2.6346874 15.126287 2.660753 128.0 +2.5794351 14.2902 2.518234 128.0 +2.7730219 14.840905 2.6169009 128.0 +2.9921658 15.486527 2.732434 128.0 +2.8327703 14.193903 2.5101383 128.0 +2.8657033 13.913668 2.4642625 128.0 +3.2068653 15.100051 2.6749206 128.0 +3.3053582 15.107051 2.6796432 128.0 +3.6150792 16.049976 2.8486419 128.0 +3.718833 16.050539 2.8526897 128.0 +3.8151913 16.018787 2.8511717 128.0 +3.8981783 15.932845 2.8402088 128.0 +3.8315787 15.254748 2.7248442 128.0 +3.4915702 13.549174 2.4276628 128.0 +3.5582671 13.465554 2.4166999 128.0 +4.0212517 14.847703 2.6656442 128.0 +4.1212416 14.855042 2.6713786 128.0 +4.223897 14.870245 2.6786311 128.0 +4.2911162 14.761704 2.6639576 128.0 +4.3585682 14.657626 2.6501274 128.0 +4.4650583 14.685302 2.6599097 128.0 +4.5580077 14.667041 2.6615963 128.0 +4.6819296 14.745893 2.6808238 128.0 +4.7878304 14.764705 2.6894255 128.0 +4.9238844 14.872598 2.7142186 128.0 +5.0301971 14.886927 2.7223144 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.26977 15.309267 5.534575 128.0 +28.210119 15.053852 5.5048904 128.0 +28.242632 14.849284 5.4934216 128.0 +28.223806 14.619048 5.4723387 128.0 +28.255028 14.416031 5.4612069 128.0 +28.218765 14.179993 5.4374261 128.0 +28.195694 13.952375 5.416512 128.0 +28.171782 13.726008 5.3957663 128.0 +28.161264 13.507709 5.3778882 128.0 +28.187462 13.30815 5.3672628 128.0 +28.130928 13.070987 5.341289 128.0 +28.142471 12.866986 5.3284707 128.0 +28.135492 12.655656 5.3124475 128.0 +28.115265 12.439713 5.2942324 128.0 +28.097065 12.226068 5.2766914 128.0 +28.1054 12.025136 5.264379 128.0 +28.091431 11.815774 5.2481875 128.0 +28.081421 11.609297 5.2330084 128.0 +28.083635 11.408953 5.2203588 128.0 +28.045084 11.19331 5.2004566 128.0 +28.05267 10.997277 5.1893249 128.0 +28.060747 10.802281 5.1785307 128.0 +28.052738 10.602026 5.1650376 128.0 +28.035936 10.399535 5.1501956 128.0 +28.02512 10.200347 5.1367025 128.0 +27.988781 9.9930687 5.1188245 128.0 +27.986309 9.7989969 5.1073556 128.0 +28.003023 9.6123734 5.099597 128.0 +28.012896 9.4240274 5.0908265 128.0 +27.977514 9.2214231 5.0741291 128.0 +27.964155 9.0271788 5.0616484 128.0 +27.968266 8.839385 5.0525403 128.0 +27.952293 8.6460581 5.0400596 128.0 +27.946325 8.4566851 5.0296025 128.0 +27.935308 8.2665939 5.0184708 128.0 +27.928692 8.078599 5.0083513 128.0 +27.91703 7.889926 4.9975567 128.0 +27.894606 7.6990786 4.985076 128.0 +27.898491 7.5162387 4.9774861 128.0 +27.901186 7.3336415 4.9698963 128.0 +27.883596 7.1464009 4.9589334 128.0 +27.874323 6.9620414 4.949657 128.0 +27.869587 6.7794628 4.9413924 128.0 +27.86462 6.5974317 4.9332967 128.0 +27.864235 6.4170446 4.9262133 128.0 +27.840563 6.2319593 4.9152503 128.0 +27.824339 6.0492911 4.9058051 128.0 +27.82139 5.8701091 4.89889 128.0 +27.815361 5.6907959 4.8916373 128.0 +27.800444 5.5102453 4.8830357 128.0 +27.806627 5.3343625 4.8783131 128.0 +27.79813 5.156096 4.8712296 128.0 +27.791405 4.9786558 4.8646517 128.0 +27.76898 4.798975 4.8555441 128.0 +27.762901 4.6226707 4.849472 128.0 +27.772251 4.4492722 4.8462677 128.0 +27.758112 4.2724848 4.8391838 128.0 +27.7409 4.0957513 4.8317628 128.0 +27.733301 3.920907 4.8261967 128.0 +27.73144 3.7472343 4.8218117 128.0 +27.721649 3.5728505 4.816246 128.0 +27.718592 3.3996875 4.8120294 128.0 +27.716412 3.2269247 4.8081503 128.0 +27.697479 3.0525894 4.8015723 128.0 +27.676474 2.8785067 4.794826 128.0 +27.664185 2.7057555 4.7897658 128.0 +27.665543 2.5346119 4.7872362 128.0 +27.658968 2.3629668 4.7835255 128.0 +27.652311 2.1915755 4.7799835 128.0 +27.645576 2.020427 4.7766104 128.0 +27.635817 1.8493118 4.7729001 128.0 +27.630903 1.6787511 4.7702012 128.0 +27.631824 1.5086962 4.7686834 128.0 +27.627764 1.3385026 4.7664909 128.0 +27.620684 1.1683325 4.7639608 128.0 +27.601723 0.99790823 4.7595758 128.0 +27.60437 0.82843989 4.7590694 128.0 +27.594152 0.65869486 4.7565398 128.0 +27.582891 0.48910645 4.7540097 128.0 +27.576504 0.31974933 4.752492 128.0 +27.57696 0.15053171 4.7523232 128.0 +27.577366 -0.01868017 4.7523232 128.0 +27.556032 -0.18774945 4.7487812 128.0 +27.547462 -0.3567369 4.7476006 128.0 +27.533915 -0.52555084 4.7457452 128.0 +27.5282 -0.69443607 4.7454081 128.0 +27.516525 -0.86311626 4.7442274 128.0 +27.505787 -1.0317533 4.7433844 128.0 +27.498938 -1.2005062 4.7433844 128.0 +27.49893 -1.3696065 4.7447333 128.0 +27.487057 -1.5381457 4.7442274 128.0 +27.488907 -1.707508 4.7462516 128.0 +27.469061 -1.8755399 4.7447333 128.0 +27.494389 -2.0468338 4.7511425 128.0 +27.475416 -2.2150223 4.7501307 128.0 +27.460325 -2.3834813 4.7499619 128.0 +27.437332 -2.5511994 4.7486129 128.0 +27.455492 -2.7229099 4.7545156 128.0 +27.448071 -2.8923557 4.7562022 128.0 +27.411194 -3.0586417 4.7529979 128.0 +27.402679 -3.228045 4.7548532 128.0 +27.38529 -3.396488 4.7553592 128.0 +27.372732 -3.5656033 4.7568769 128.0 +18.774715 -2.5624943 3.2758613 128.0 +27.385462 -3.9096012 4.7669969 128.0 +27.368755 -4.0787244 4.7683458 128.0 +27.350033 -4.2476382 4.7695265 128.0 +0 -0 0 128.0 +18.124453 -3.0426772 3.1782062 128.0 +18.047178 -3.1436768 3.1680865 128.0 +19.031485 -3.4356506 3.3426511 128.0 +18.991636 -3.5489197 3.3394465 128.0 +0 -0 0 128.0 +18.765902 -3.7456198 3.3079069 128.0 +17.949013 -3.6971834 3.1692672 128.0 +17.971304 -3.8168743 3.1771944 128.0 +18.03228 -3.9456184 3.1920364 128.0 +25.662777 -5.7809763 4.53475 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.104269 -4.4296103 3.2227328 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9478431 -2.2570186 1.4472342 128.0 +7.932898 -2.3054678 1.4470655 128.0 +0 -0 0 128.0 +31.629576 -9.618372 5.6904178 128.0 +0 -0 0 128.0 +7.9744492 -2.5313807 1.4651122 128.0 +7.9709554 -2.5842168 1.4673048 128.0 +7.9334278 -2.6259503 1.4634256 128.0 +0 -0 0 128.0 +24.72106 -8.5232706 4.5079327 128.0 +0 -0 0 128.0 +20.59716 -7.3852663 3.7776289 128.0 +19.891394 -7.2702169 3.6573732 128.0 +19.917532 -7.4186263 3.6703603 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.772738 -8.1757097 3.8533578 128.0 +20.408358 -8.1772518 3.795507 128.0 +19.124775 -7.7993932 3.5676453 128.0 +20.39933 -8.4656191 3.8127105 128.0 +20.382416 -8.6055822 3.8192883 128.0 +18.864765 -8.1014719 3.5465627 128.0 +0 -0 0 128.0 +18.74411 -8.3235588 3.5428522 128.0 +19.225409 -8.6789379 3.6428685 128.0 +19.238087 -8.8271608 3.6553493 128.0 +19.171947 -8.9396219 3.6531568 128.0 +0 -0 0 128.0 +19.172707 -9.2280865 3.6744082 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.9867043 -2.009022 0.7973817 128.0 +3.9725473 -2.032548 0.79704434 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.8262239 -2.1388941 0.78355145 128.0 +3.8267441 -2.1701145 0.78625005 128.0 +3.8680298 -2.2250233 0.79704434 128.0 +3.7828004 -2.2069724 0.78287679 128.0 +3.7149045 -2.198004 0.77208245 128.0 +3.7047281 -2.2227862 0.77275711 128.0 +3.717962 -2.2618768 0.77815425 128.0 +3.7283382 -2.29966 0.78304547 128.0 +3.7158287 -2.3235388 0.78338277 128.0 +13.50516 -8.5642862 2.769877 128.0 +4.1969414 -2.6967764 0.88710958 128.0 +4.1885738 -2.7278585 0.88879615 128.0 +4.1972547 -2.7703459 0.89402467 128.0 +4.2432528 -2.8382592 0.90701163 128.0 +4.2559419 -2.8847108 0.91325206 128.0 +4.2519717 -2.9202602 0.91611934 128.0 +3.3101707 -2.3031361 0.723508 128.0 +3.2355669 -2.280793 0.7108584 128.0 +3.0787618 -2.1985965 0.68083662 128.0 +3.0532372 -2.2087765 0.6783067 128.0 +3.0555243 -2.2391264 0.68167996 128.0 +3.0306499 -2.2496045 0.67931867 128.0 +2.9907968 -2.2486026 0.67375284 128.0 +2.9408791 -2.2394311 0.66599447 128.0 +2.9473712 -2.2730911 0.67037964 128.0 +2.8844416 -2.2528934 0.65975398 128.0 +2.8527875 -2.2564797 0.65587473 128.0 +2.7919729 -2.2363374 0.64558643 128.0 +2.8769236 -2.3335574 0.66734374 128.0 +2.886157 -2.3705676 0.67257226 128.0 +4.3557572 -3.6234088 1.00298 128.0 +2.9563439 -2.4896464 0.69483554 128.0 +2.9402623 -2.5070996 0.69466686 128.0 +4.2845945 -3.6997485 1.0021366 128.0 +3.9702344 -3.4709442 0.93585271 128.0 +3.304646 -2.9247713 0.78861129 128.0 +3.9640372 -3.5523024 0.94428575 128.0 +4.0370479 -3.6626787 0.96621174 128.0 +3.4933872 -3.2085249 0.84511286 128.0 +3.4656959 -3.2225146 0.84325761 128.0 +2.4140322 -2.2719388 0.60072249 128.0 +2.4107471 -2.2969108 0.60325241 128.0 +2.3788781 -2.2945461 0.59903586 128.0 +2.3816738 -2.3256326 0.60308373 128.0 +2.4094038 -2.381794 0.61320341 128.0 +3.6727753 -3.6764059 0.92269713 128.0 +3.5684707 -3.6160672 0.90279508 128.0 +4.2712235 -4.38199 1.0805641 128.0 +4.2367373 -4.4003034 1.0787089 128.0 +3.6215153 -3.8075802 0.93264812 128.0 +2.6352131 -2.8044097 0.69196832 128.0 +2.6159449 -2.8183584 0.69146234 128.0 +2.9015799 -3.1650236 0.76820326 128.0 +3.5931232 -3.9683912 0.94951427 128.0 +3.4524319 -3.8602939 0.91966122 128.0 +3.4064991 -3.8562832 0.91392672 128.0 +2.9137311 -3.3392794 0.79181588 128.0 +2.3579795 -2.7357368 0.65148956 128.0 +2.595345 -3.0489552 0.71861678 128.0 +2.36164 -2.8089921 0.66144061 128.0 +1.6608073 -1.999657 0.47827429 128.0 +1.6485063 -2.00981 0.47827429 128.0 +1.6435841 -2.0290816 0.48029822 128.0 +1.6797159 -2.0999579 0.49362248 128.0 +1.6551974 -2.0955236 0.4904179 128.0 +1.6629076 -2.1320748 0.4961524 128.0 +1.6660231 -2.1633303 0.50070626 128.0 +1.657488 -2.179791 0.50205553 128.0 +2.2526784 -3.001296 0.67560816 128.0 +3.2742536 -4.4194965 0.97464484 128.0 +2.2255673 -3.0422409 0.67847538 128.0 +2.188977 -3.0310624 0.67324686 128.0 +1.7242435 -2.4182632 0.54169101 128.0 +1.6526749 -2.3481693 0.52482486 128.0 +1.4437765 -2.0780942 0.46646798 128.0 +1.4610786 -2.1308255 0.47557572 128.0 +1.4269991 -2.1087203 0.46916658 128.0 +1.745528 -2.6143277 0.57137537 128.0 +1.8221325 -2.7657719 0.60021651 128.0 +1.9909012 -3.0629048 0.65857333 128.0 +1.807201 -2.8177996 0.60628831 128.0 +1.9505311 -3.0829399 0.65773004 128.0 +1.9279265 -3.0889957 0.65654939 128.0 +1.927013 -3.1301508 0.66245258 128.0 +2.2902298 -3.7722433 0.78861129 128.0 +2.3060124 -3.851352 0.80159819 128.0 +2.2793322 -3.8603354 0.80058622 128.0 +2.2496541 -3.8640251 0.79856229 128.0 +1.1292011 -1.9660244 0.42143539 128.0 +1.1248801 -1.9866437 0.42413399 128.0 +1.0997106 -1.9702631 0.4195801 128.0 +1.1080106 -2.0141199 0.42683256 128.0 +0 -0 0 128.0 +1.1175482 -2.091917 0.4393135 128.0 +1.6849127 -3.2023866 0.6526702 128.0 +1.6892569 -3.259053 0.66160923 128.0 +1.6553421 -3.2421384 0.65638071 128.0 +0.9955101 -1.9786743 0.41249633 128.0 +0.98990732 -1.997997 0.41502625 128.0 +1.4805536 -3.0363529 0.61151683 128.0 +1.4474026 -3.0151629 0.60578233 128.0 +1.4074144 -2.978529 0.5971806 128.0 +0.96175677 -2.0672781 0.423628 128.0 +0.9392184 -2.051626 0.4195801 128.0 +0.93793291 -2.0825205 0.42430264 128.0 +1.3291084 -3.0013547 0.59515667 128.0 +0.97522628 -2.2384863 0.45128846 128.0 +0.96728826 -2.2580216 0.45381838 128.0 +0.95074022 -2.2575541 0.45263776 128.0 +1.3612369 -3.2899468 0.64271915 128.0 +0.91591692 -2.2517002 0.44943318 128.0 +1.344874 -3.3668244 0.65385079 128.0 +1.5723934 -4.0082207 0.77022719 128.0 +0.86440116 -2.2424209 0.44471067 128.0 +1.1279728 -2.9816241 0.57896513 128.0 +1.4483055 -3.901557 0.74560261 128.0 +1.4149004 -3.8844354 0.74088013 128.0 +1.3837487 -3.8726215 0.73716956 128.0 +1.1619391 -3.3154104 0.63462341 128.0 +1.1319749 -3.2945089 0.62956357 128.0 +0.88704842 -2.6334131 0.50897068 128.0 +1.3305594 -4.0336661 0.7602762 128.0 +0.93035668 -2.8786058 0.55113602 128.0 +0.77902508 -2.4613218 0.47523838 128.0 +0.75400621 -2.4340389 0.46950391 128.0 +0 -0 0 128.0 +1.1751598 -3.9676688 0.74155474 128.0 +1.151888 -3.9785922 0.7422294 128.0 +0.88381213 -3.1233702 0.58891618 128.0 +0.88114995 -3.1885943 0.59954184 128.0 +0.83926409 -3.1111388 0.58486831 128.0 +0.83093143 -3.157222 0.59212077 128.0 +0.77484232 -3.0190375 0.56682152 128.0 +0.75534803 -3.0199099 0.56614691 128.0 +0.7335428 -3.0110791 0.56378561 128.0 +0.72595215 -3.0615633 0.57188135 128.0 +0.71157646 -3.0851707 0.57525462 128.0 +0.50663954 -2.258415 0.42953113 128.0 +0.48293254 -2.2162116 0.42160407 128.0 +0.47868371 -2.2634978 0.42936248 128.0 +0.69984496 -3.4155502 0.63006955 128.0 +1.655265 -8.3469639 1.4895681 128.0 +1.6030896 -8.3521233 1.4887248 128.0 +0.7213257 -3.8833544 0.70934045 128.0 +0.6872319 -3.8304634 0.6993894 128.0 +0.66841441 -3.861804 0.70411193 128.0 +0.65134215 -3.9056969 0.71102703 128.0 +0.63095027 -3.9320049 0.71490628 128.0 +0.40368822 -2.6157506 0.48637003 128.0 +0.38935781 -2.6298797 0.48839396 128.0 +0.37348971 -2.6341712 0.48873129 128.0 +0.35824335 -2.6432509 0.48991191 128.0 +0.37174293 -2.8761113 0.52971601 128.0 +0.35648751 -2.8979051 0.53308922 128.0 +0.33345801 -2.855001 0.52533084 128.0 +0.2586188 -2.3367479 0.43577161 128.0 +0.24346051 -2.3304477 0.43442231 128.0 +0.2281975 -2.3220878 0.43273571 128.0 +0.2142148 -2.3263888 0.4332417 128.0 +0.19960088 -2.3237312 0.43256703 128.0 +0.26527399 -3.3340383 0.60578233 128.0 +0.25622839 -3.491909 0.63259947 128.0 +0.22401138 -3.3321252 0.60493898 128.0 +0.20308375 -3.3255661 0.60358971 128.0 +0.18106377 -3.2972233 0.59852988 128.0 +0.16035242 -3.2884271 0.59684324 128.0 +0.14062974 -3.3001819 0.59869856 128.0 +0.11045332 -3.0261586 0.551642 128.0 +0.093329854 -3.0750556 0.55990642 128.0 +0.07408423 -3.0598042 0.55720782 128.0 +0.057696622 -3.1952174 0.58031446 128.0 +0 -0 0 128.0 +0.017120764 -2.9443417 0.53730577 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.074673392 -3.9648466 0.71203899 128.0 +-0.099522702 -3.9850063 0.71558088 128.0 +-0 -0 0 128.0 +-0.08727444 -2.3553133 0.43678358 128.0 +-0.1014235 -2.3478403 0.43560296 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.19631267 -2.651288 0.48839396 128.0 +-0.21828285 -2.7207723 0.50053757 128.0 +-0.23565528 -2.7272375 0.5018869 128.0 +-0.25256747 -2.7277031 0.50222421 128.0 +-0.26959154 -2.7290447 0.50273019 128.0 +-0.28509152 -2.7155762 0.50070626 128.0 +-0.30393559 -2.7333674 0.50407946 128.0 +-0.31966329 -2.722641 0.50256151 128.0 +-0.33429995 -2.7039995 0.49969429 128.0 +-0.35559744 -2.7380614 0.50593477 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4003394 -3.4975095 0.67813808 128.0 +-1.419912 -3.484288 0.67729473 128.0 +-1.4473102 -3.4900758 0.67999333 128.0 +-1.469081 -3.4820375 0.68016201 128.0 +-1.4841948 -3.4584672 0.67746341 128.0 +-0 -0 0 128.0 +-1.5301245 -3.448101 0.67898136 128.0 +-0 -0 0 128.0 +-1.6344002 -3.5643373 0.70444924 128.0 +-1.6524905 -3.5462019 0.70293128 128.0 +-1.6856143 -3.5600455 0.70748514 128.0 +-4.0259156 -8.3659573 1.622136 128.0 +-4.0611525 -8.3083344 1.6158955 128.0 +-1.667124 -3.359798 0.6752708 128.0 +-1.6557541 -3.2861378 0.66312718 128.0 +-1.6736404 -3.2715294 0.6622839 128.0 +-1.6964099 -3.2664461 0.66329587 128.0 +-1.7417166 -3.3039243 0.67257226 128.0 +-4.1222672 -7.7013693 1.5281916 128.0 +-4.5534477 -8.3826523 1.6658193 128.0 +-1.8636268 -3.3826551 0.69432956 128.0 +-1.9084066 -3.4141684 0.7027626 128.0 +-1.920077 -3.3861063 0.69955808 128.0 +-1.9531102 -3.395618 0.70377457 128.0 +-2.0166452 -3.4567764 0.71827948 128.0 +-4.9548154 -8.3713741 1.6980337 128.0 +-5.0091319 -8.3458843 1.6990457 128.0 +-5.0182204 -8.2459526 1.6852154 128.0 +-4.9936585 -8.0933819 1.6607594 128.0 +-5.0463614 -8.0676022 1.6617714 128.0 +-5.170207 -8.1538506 1.6855527 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.5096431 -8.2350368 1.7288986 128.0 +-5.5490041 -8.1847601 1.7255255 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.7276936 -8.1223125 1.7341272 128.0 +-5.6473365 -7.9049697 1.6958411 128.0 +-5.7997708 -8.0138874 1.7262001 128.0 +-5.3359089 -7.2786646 1.5777781 128.0 +-5.3775311 -7.2418308 1.5769347 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.6492443 -9.2886229 2.3252854 128.0 +-0 -0 0 128.0 +-9.7380743 -9.1465702 2.319551 128.0 +-9.8099108 -9.1013937 2.3232615 128.0 +-9.8125191 -8.9924202 2.3109493 128.0 +-9.9449768 -9.0021524 2.3288274 128.0 +-9.7134323 -8.6847649 2.2630494 128.0 +-9.7384605 -8.6002102 2.2566402 128.0 +-9.8036757 -8.5513077 2.2595074 128.0 +-9.3891954 -8.0889435 2.1540942 128.0 +-9.9837017 -8.4948645 2.2765422 128.0 +-10.690684 -8.9838142 2.4229405 128.0 +-9.6897211 -8.0418921 2.1881638 128.0 +-9.8250322 -8.0528831 2.2072225 128.0 +-10.931623 -8.8481379 2.4399753 128.0 +-11.025747 -8.8128948 2.4487455 128.0 +-11.002239 -8.6840143 2.4318795 128.0 +-11.244246 -8.763566 2.4728642 128.0 +-11.252498 -8.6595449 2.4630818 128.0 +-11.311698 -8.595108 2.464431 128.0 +-10.421956 -7.8187628 2.2628808 128.0 +-11.016299 -8.1594181 2.3792572 128.0 +-10.316601 -7.5436864 2.2203779 128.0 +-10.324329 -7.4525552 2.2122822 128.0 +-10.353807 -7.3776274 2.208909 128.0 +-10.444033 -7.3457098 2.218354 128.0 +-10.948033 -7.6001539 2.3139851 128.0 +-10.956242 -7.5066538 2.3060579 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.520636 -9.6139441 3.3041964 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.662083 -9.2899866 3.2977872 128.0 +-16.54859 -9.0940676 3.2645609 128.0 +-0 -0 0 128.0 +-16.613722 -8.8661776 3.2557905 128.0 +-16.753311 -8.809021 3.2723193 128.0 +-16.848183 -8.7273645 3.2802463 128.0 +-16.322805 -8.3286343 3.1690986 128.0 +-16.405308 -8.2442541 3.1751704 128.0 +-6.7482843 -3.3403218 1.3219187 128.0 +-6.9937253 -3.4085026 1.3647587 128.0 +-7.0225062 -3.3693621 1.3662766 128.0 +-7.1553574 -3.3792286 1.3875279 128.0 +-7.266242 -3.377207 1.4045628 128.0 +-7.1577401 -3.2735448 1.3802755 128.0 +-7.2675848 -3.269995 1.3971417 128.0 +-6.9954586 -3.0961335 1.3424953 128.0 +-6.9302683 -3.0165799 1.3268099 128.0 +-7.9382463 -3.3973629 1.5109881 128.0 +-7.814477 -3.2878325 1.4841709 128.0 +-6.9272323 -2.8647828 1.3161842 128.0 +-21.324978 -8.663559 3.9720955 128.0 +-7.8874035 -3.1489167 1.4867009 128.0 +-7.7368035 -3.0339141 1.4554986 128.0 +-7.1785073 -2.7643785 1.3497478 128.0 +-7.2036328 -2.7234159 1.3512658 128.0 +-7.9613819 -2.9540589 1.4865322 128.0 +-8.0293751 -2.9233558 1.4956399 128.0 +-7.1597118 -2.5572195 1.3343996 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-22.639164 -7.6164479 4.1206861 128.0 +-21.734346 -7.1639433 3.9493263 128.0 +-0 -0 0 128.0 +-27.895897 -8.8165159 5.0395536 128.0 +-0 -0 0 128.0 +-27.651974 -8.3676262 4.9769802 128.0 +-27.802038 -8.2271624 4.9946895 128.0 +-12.97858 -3.7548132 2.3453562 128.0 +-13.006118 -3.6764476 2.3461995 128.0 +-29.331244 -8.0955362 5.2400918 128.0 +-13.015991 -3.5073364 2.3401277 128.0 +-12.801801 -3.3655252 2.2984684 128.0 +-12.774469 -3.2746778 2.2900352 128.0 +-12.754157 -3.1862035 2.2829514 128.0 +-17.132206 -4.1679888 3.0505295 128.0 +-17.12101 -4.0541611 3.0441203 128.0 +-12.779906 -2.9438238 2.2775543 128.0 +-12.777529 -2.8608317 2.2740123 128.0 +-17.801464 -3.8706503 3.1507144 128.0 +-13.943936 -2.9426668 2.4720209 128.0 +-14.024499 -2.8698924 2.4829838 128.0 +-17.949944 -3.5582304 3.1647134 128.0 +-17.927877 -3.4396698 3.1571236 128.0 +-0 -0 0 128.0 +-12.620799 -2.2615881 2.2274618 128.0 +-13.416322 -2.3191955 2.3632343 128.0 +-12.805114 -2.132761 2.2547851 128.0 +-12.824772 -2.0552411 2.2559657 128.0 +-13.263844 -2.0421705 2.3298392 128.0 +-18.017107 -2.6605167 3.1498711 128.0 +-17.216202 -2.4344597 3.0087016 128.0 +-17.289425 -2.3366942 3.0188212 128.0 +-17.288773 -2.2286749 3.0162911 128.0 +-13.690062 -1.6796857 2.3935933 128.0 +-17.893448 -2.0836902 3.1159701 128.0 +-22.218739 -2.4490011 3.8584177 128.0 +-23.329424 -2.4265747 4.0469813 128.0 +-17.528522 -1.7148474 3.0471563 128.0 +-20.407835 -1.8699977 3.5401535 128.0 +-20.388481 -1.7421428 3.5349252 128.0 +-20.022451 -1.5871984 3.4703279 128.0 +-19.021233 -1.3904996 3.2969439 128.0 +-0 -0 0 128.0 +-23.172037 -1.4080368 4.0058279 128.0 +-0 -0 0 128.0 +-18.195065 -0.88191104 3.1505458 128.0 +-24.721447 -1.0458204 4.2674217 128.0 +-18.635962 -0.6741432 3.2244194 128.0 +-23.169842 -0.69554317 3.9999247 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-23.522593 -0.5868091 3.7730711 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.080421 13.613082 5.8658638 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.683092 13.348796 4.0802255 128.0 +-20.567739 12.836866 3.886704 128.0 +-22.071825 13.964481 4.1844411 128.0 +-0 0 0 128.0 +-22.945465 14.914599 4.3828278 128.0 +-19.539709 12.872154 3.7521966 128.0 +-19.137552 12.776306 3.6905146 128.0 +-19.054708 12.890725 3.6897297 128.0 +-22.28009 15.272758 4.3264823 128.0 +-20.911627 14.524123 4.0799112 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-19.615908 14.166474 3.8790133 128.0 +-20.737799 15.171143 4.1171088 128.0 +-21.867098 16.204191 4.3589711 128.0 +-20.978176 15.745808 4.2021766 128.0 +-21.712202 16.50598 4.3680744 128.0 +-20.017265 15.412215 4.048521 128.0 +-0 0 0 128.0 +-18.907373 14.930804 3.8623765 128.0 +-0 0 0 128.0 +-37.959785 30.739395 7.7962112 128.0 +-15.980103 13.10396 3.3179114 128.0 +-15.913074 13.213121 3.3207364 128.0 +-15.840016 13.317505 3.322463 128.0 +-15.81591 13.463739 3.3345482 128.0 +-15.875886 13.683681 3.364526 128.0 +-15.883153 13.860705 3.383831 128.0 +-35.712296 31.552368 7.6069274 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-15.699103 14.934933 3.4772172 128.0 +-15.536033 14.962471 3.4615221 128.0 +-15.32301 14.939625 3.4346833 128.0 +-0 0 0 128.0 +-14.054945 14.043856 3.1912515 128.0 +-13.901853 14.062407 3.1761842 128.0 +-13.98298 14.31914 3.2143233 128.0 +-14.544867 15.078503 3.3631134 128.0 +-0 0 0 128.0 +-13.436132 14.275646 3.1491885 128.0 +-0 0 0 128.0 +-13.230543 14.407447 3.1422825 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.919446 16.859144 3.6114109 128.0 +-14.048764 16.072943 3.426208 128.0 +-14.823732 17.171034 3.6387205 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-12.479717 15.194354 3.1584485 128.0 +-12.399939 15.287516 3.1619015 128.0 +-0 0 0 128.0 +-12.557576 15.876168 3.2505791 128.0 +-12.608868 16.14361 3.2890322 128.0 +-12.463133 16.160456 3.276947 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.7850008 13.526506 2.6868091 128.0 +-9.6524591 13.517172 2.6733112 128.0 +-10.00349 14.19205 2.7930653 128.0 +-9.8914032 14.217492 2.7861593 128.0 +-9.2695208 13.499601 2.6361136 128.0 +-9.1815281 13.548866 2.634701 128.0 +-9.1388483 13.665697 2.6463156 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.8734818 13.812488 2.6427057 128.0 +-8.7457371 13.799107 2.6299925 128.0 +-8.424242 13.474009 2.5590503 128.0 +-8.2724562 13.413647 2.5381758 128.0 +-8.2639074 13.585654 2.5607769 128.0 +-8.1590519 13.600535 2.5541849 128.0 +-9.7394648 16.462957 3.0735378 128.0 +-8.2816687 14.196969 2.6456876 128.0 +-8.2736797 14.385348 2.6709569 128.0 +-8.5423346 15.065565 2.7860024 128.0 +-8.1182098 14.52459 2.6780198 128.0 +-9.0954914 16.510031 3.0292773 128.0 +-8.179697 15.065759 2.758065 128.0 +-0 0 0 128.0 +-7.93571 15.054049 2.7381322 128.0 +-7.7981262 15.015691 2.722594 128.0 +-7.7251868 15.101063 2.7293429 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.9502802 14.45039 2.5819654 128.0 +-17.552656 37.073128 6.5523701 128.0 +-8.0835028 17.348164 3.0752642 128.0 +-8.0020142 17.452198 3.0848382 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-6.8435025 15.681227 2.7527287 128.0 +-6.6303096 15.450654 2.7056432 128.0 +-6.6083241 15.663934 2.7354641 128.0 +-6.6785479 16.105587 2.8045228 128.0 +-6.3526173 15.589285 2.7089391 128.0 +-6.2641859 15.646307 2.7120781 128.0 +-6.1572199 15.656877 2.7073696 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-5.1965852 13.963604 2.4014709 128.0 +-5.012218 13.725273 2.355798 128.0 +-4.9192462 13.731596 2.3517172 128.0 +-0 0 0 128.0 +-4.6519384 13.5052 2.3036902 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.7286015 14.594762 2.4717853 128.0 +-4.633585 14.606557 2.4689603 128.0 +-4.5570531 14.677156 2.476023 128.0 +-4.5599232 15.011009 2.5268753 128.0 +-4.1158566 13.854378 2.330529 128.0 +-4.0872397 14.073796 2.362704 128.0 +-4.1979117 14.793122 2.4774356 128.0 +-3.8276978 13.810728 2.3112237 128.0 +-3.9918132 14.753911 2.462682 128.0 +-3.9710422 15.04263 2.5061576 128.0 +-3.8727579 15.043759 2.5023909 128.0 +-3.7337472 14.881404 2.4719422 128.0 +-0 0 0 128.0 +-3.5033011 14.726258 2.4392962 128.0 +-3.5003951 15.12561 2.5009782 128.0 +-3.2789664 14.575437 2.4079061 128.0 +-3.1397064 14.367581 2.3708653 128.0 +-2.90065 13.675521 2.2553492 128.0 +-0 0 0 128.0 +-2.837451 14.236009 2.3405738 128.0 +-2.7902796 14.46164 2.3743184 128.0 +-2.6634455 14.274611 2.3413584 128.0 +-2.5710773 14.264442 2.3371208 128.0 +-2.4642098 14.169028 2.3192284 128.0 +-2.5333128 15.115042 2.469274 128.0 +-2.4715078 15.322376 2.5001936 128.0 +-2.3328092 15.049348 2.4538929 128.0 +-2.2616403 15.205999 2.4768078 128.0 +-2.1905868 15.376027 2.50192 128.0 +-4.2595577 31.268377 5.0487738 128.0 +-1.9156718 14.7397 2.3958209 128.0 +-3.8777092 31.335938 5.0515985 128.0 +-0 0 0 128.0 +-3.5109055 31.543118 5.0774956 128.0 +-3.3077965 31.473705 5.063056 128.0 +-3.1223922 31.572033 5.0756121 128.0 +-2.9230492 31.530611 5.0660381 128.0 +-2.7343791 31.604036 5.0749846 128.0 +-2.5416744 31.635971 5.0774956 128.0 +-2.3479502 31.656879 5.0784373 128.0 +-0 0 0 128.0 +-2.2217679 35.926846 5.7541142 128.0 +-1.7774844 31.921532 5.1145363 128.0 +-1.5824637 31.949593 5.1173615 128.0 +-1.3924747 32.098808 5.1396484 128.0 +-1.1954939 32.10675 5.1396484 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.2588481 20.623518 3.3172836 128.0 +0 0 0 128.0 +1.5031663 20.488321 3.2984493 128.0 +1.6275994 20.462961 3.2959383 128.0 +0 0 0 128.0 +1.8410885 20.03331 3.2308033 128.0 +1.9819053 20.204454 3.2599962 128.0 +2.087404 20.015102 3.231745 128.0 +2.2069216 19.972467 3.2270365 128.0 +2.3079083 19.774132 3.1975296 128.0 +2.4353416 19.809591 3.205534 128.0 +4.2000742 32.517609 5.2443352 128.0 +1.9220343 14.192905 2.3098114 128.0 +2.0414953 14.409661 2.3465378 128.0 +4.7545533 32.141697 5.1972499 128.0 +2.3188541 15.036515 2.4515386 128.0 +2.2484848 14.008844 2.2884657 128.0 +5.6703024 33.997036 5.5111527 128.0 +2.5831068 14.92122 2.440238 128.0 +2.6814148 14.943001 2.4463592 128.0 +2.6500413 14.264048 2.3393183 128.0 +2.8729711 14.952615 2.4534221 128.0 +2.9819689 15.021889 2.4675477 128.0 +3.2570343 15.896322 2.6124139 128.0 +3.3675761 15.93788 2.6224589 128.0 +0 0 0 128.0 +3.260524 14.546176 2.4027267 128.0 +3.6692457 15.911688 2.628737 128.0 +3.7781987 15.936923 2.6365845 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.4803624 13.56305 2.2589591 128.0 +3.5393922 13.449751 2.2438917 128.0 +4.0114594 14.872388 2.4816732 128.0 +4.099483 14.83607 2.4797897 128.0 +4.4076676 15.578486 2.6066067 128.0 +4.2696991 14.744803 2.4731979 128.0 +4.3934698 14.831013 2.4918752 128.0 +4.5310545 14.957844 2.5174582 128.0 +4.6934342 15.158069 2.5554404 128.0 +0 0 0 128.0 +4.8660369 15.058922 2.5486915 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.84934 18.331102 3.202709 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +8.1604261 17.834789 3.1506009 128.0 +8.2393074 17.719009 3.1391435 128.0 +8.2862787 17.537748 3.1162286 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +23.842329 14.503205 4.4686804 128.0 +0 0 0 128.0 +23.896112 14.137117 4.4460793 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.203758 15.089809 5.1170473 128.0 +28.199717 14.865808 5.0997829 128.0 +28.212397 14.651986 5.085814 128.0 +28.219999 14.43677 5.0712175 128.0 +28.179283 14.198461 5.0483027 128.0 +28.191561 13.988414 5.0351186 128.0 +28.156179 13.756208 5.0137734 128.0 +28.158176 13.543801 4.9993339 128.0 +28.150597 13.328086 4.9834819 128.0 +28.126213 13.105884 4.9649615 128.0 +28.131588 12.898891 4.9519343 128.0 +28.125584 12.68786 4.937181 128.0 +28.122562 12.479394 4.9232125 128.0 +28.103565 12.265122 4.9067326 128.0 +28.101151 12.059344 4.8933916 128.0 +28.095451 11.853292 4.8797369 128.0 +28.072777 11.641334 4.8634138 128.0 +28.076914 11.441655 4.8519564 128.0 +28.041153 11.226947 4.8339067 128.0 +28.026794 11.022146 4.8197813 128.0 +28.035858 10.827554 4.8098931 128.0 +28.02512 10.626262 4.7968664 128.0 +28.006493 10.4231 4.7827406 128.0 +27.997561 10.224632 4.7704983 128.0 +28.001198 10.031665 4.7606106 128.0 +27.990479 9.8344545 4.7485251 128.0 +27.974659 9.6364679 4.7358122 128.0 +27.959341 9.4396791 4.723413 128.0 +27.977354 9.2549181 4.7168207 128.0 +27.966909 9.0614643 4.7056775 128.0 +27.966442 8.8720713 4.6964173 128.0 +27.944899 8.6768761 4.6838613 128.0 +27.922016 8.4822798 4.6713052 128.0 +27.924309 8.2961674 4.6631436 128.0 +27.912092 8.1064901 4.6527848 128.0 +27.88435 7.9132318 4.6400714 128.0 +27.886698 7.7293253 4.6325378 128.0 +27.893559 7.547236 4.625946 128.0 +27.88205 7.360816 4.616529 128.0 +27.874086 7.1760535 4.6078963 128.0 +27.852455 6.9885411 4.5972238 128.0 +27.861235 6.8093033 4.5917306 128.0 +27.86598 6.6295352 4.5857663 128.0 +27.84263 6.4437304 4.5754075 128.0 +27.825762 6.2601962 4.5663042 128.0 +27.826021 6.0811186 4.560183 128.0 +27.819334 5.9010444 4.5531206 128.0 +27.801815 5.7192917 4.544488 128.0 +27.792801 5.539907 4.537425 128.0 +27.78845 5.3619709 4.5313044 128.0 +27.789761 5.1855659 4.5262818 128.0 +27.775373 5.0067186 4.5189052 128.0 +27.770544 4.8301048 4.5132546 128.0 +27.74901 4.6511269 4.5050931 128.0 +27.739 4.4746404 4.4989719 128.0 +27.731777 4.299057 4.4934788 128.0 +27.742002 4.126492 4.4909678 128.0 +27.725737 3.950341 4.4843755 128.0 +27.72401 3.7766786 4.4802947 128.0 +27.716301 3.6025493 4.4754295 128.0 +27.721222 3.4303555 4.4727612 128.0 +27.708399 3.2562771 4.4674249 128.0 +27.698412 3.0829222 4.4627161 128.0 +27.686359 2.9097097 4.4578509 128.0 +27.685019 2.7379274 4.4548688 128.0 +27.677694 2.5658157 4.4511018 128.0 +27.673239 2.3942373 4.4479628 128.0 +27.663782 2.2224941 4.4441962 128.0 +27.653261 2.050957 4.4404292 128.0 +27.638721 1.8794317 4.4361916 128.0 +27.634947 1.7088938 4.4338374 128.0 +27.621246 1.5379786 4.4300704 128.0 +27.624245 1.3681757 4.4291286 128.0 +27.631132 1.198608 4.4289718 128.0 +27.621189 1.028419 4.4263034 128.0 +27.600327 0.85809028 4.4220657 128.0 +27.596188 0.68849987 4.4206533 128.0 +27.591005 0.5189926 4.419241 128.0 +27.578857 0.34949967 4.4168863 128.0 +27.56567 0.18017535 4.4145322 128.0 +27.569218 0.011033426 4.4150028 128.0 +27.558891 -0.15807182 4.4134336 128.0 +27.547527 -0.32704991 4.4118638 128.0 +27.533154 -0.495859 4.4099808 128.0 +27.535515 -0.66493285 4.4109221 128.0 +27.522034 -0.83360612 4.4095097 128.0 +27.512453 -1.0023187 4.4088821 128.0 +27.520584 -1.171743 4.4112363 128.0 +27.509918 -1.3404399 4.4107652 128.0 +27.4923 -1.5087254 4.4093528 128.0 +27.485483 -1.6775671 4.4098234 128.0 +27.477629 -1.8463819 4.4102945 128.0 +27.474646 -2.0155969 4.4117069 128.0 +27.491297 -2.1864889 4.4164157 128.0 +27.468506 -2.354372 4.4150028 128.0 +27.459444 -2.5234137 4.4159446 128.0 +27.432632 -2.6907938 4.4142184 128.0 +17.863907 -1.8630953 2.888021 128.0 +27.423069 -3.0300515 4.4182992 128.0 +27.398075 -3.1975722 4.4173574 128.0 +19.301832 -2.3729291 3.124233 128.0 +27.367546 -3.5349395 4.4190836 128.0 +18.847492 -2.552238 3.056273 128.0 +27.381756 -3.8789644 4.428658 128.0 +27.360371 -4.0473361 4.4291286 128.0 +27.334045 -4.2149897 4.4289718 128.0 +26.264278 -4.2151895 4.2610335 128.0 +25.288122 -4.2178612 4.1080055 128.0 +18.257132 -3.1605179 2.9782681 128.0 +18.996593 -3.4086943 3.1008472 128.0 +19.035522 -3.5363741 3.1105783 128.0 +18.237568 -3.5040483 2.9850171 128.0 +18.208942 -3.6145401 2.9839184 128.0 +19.427738 -3.980505 3.1852872 128.0 +20.24651 -4.2778544 3.3223059 128.0 +20.087673 -4.3732243 3.3008037 128.0 +18.341223 -4.1110783 3.020802 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.003475 -5.0022054 3.3105347 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.6965175 -2.126888 1.3026528 128.0 +7.9503589 -2.2496195 1.3467562 128.0 +7.9354572 -2.298085 1.3465993 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9218669 -2.5064366 1.354133 128.0 +7.9871588 -2.5811105 1.3676308 128.0 +7.9111462 -2.6102684 1.3575859 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.605408 -7.3635182 3.5111189 128.0 +20.557055 -7.4887981 3.510648 128.0 +19.798727 -7.3504748 3.3899522 128.0 +19.732008 -7.4637833 3.3863423 128.0 +19.609348 -7.5552464 3.3733153 128.0 +0 -0 0 128.0 +19.426193 -7.7597799 3.3580909 128.0 +19.256535 -7.8293605 3.3372164 128.0 +20.264906 -8.3845863 3.5189664 128.0 +20.234924 -8.5179672 3.5227332 128.0 +18.918505 -8.1008501 3.3042567 128.0 +19.040483 -8.2916956 3.3340774 128.0 +20.085545 -8.8937807 3.5246167 128.0 +19.311937 -8.6933651 3.3993692 128.0 +19.321995 -8.8408709 3.4105129 128.0 +3.9260204 -1.8259312 0.721775 128.0 +3.9192076 -1.8520958 0.72255975 128.0 +3.9184539 -1.881237 0.7244432 128.0 +3.9290299 -1.9160651 0.72836697 128.0 +3.9552562 -1.958982 0.73511589 128.0 +4.098453 -2.0613005 0.76273936 128.0 +3.960825 -2.0226402 0.74045223 128.0 +3.9053752 -2.0246363 0.73276162 128.0 +4.0738015 -2.1437478 0.76525062 128.0 +4.0143981 -2.1440487 0.7569322 128.0 +4.0541339 -2.1973424 0.7665062 128.0 +0 -0 0 128.0 +3.7543223 -2.0948842 0.71690953 128.0 +3.9562738 -2.2394891 0.75614744 128.0 +3.9056284 -2.242579 0.74939853 128.0 +5.2641764 -3.0655873 1.0017767 128.0 +3.7774665 -2.231082 0.73087823 128.0 +3.9475718 -2.3643196 0.76493669 128.0 +3.9431205 -2.3946478 0.76682013 128.0 +3.9418092 -2.4270811 0.76933134 128.0 +3.8581409 -2.408345 0.75646132 128.0 +3.5703764 -2.2593098 0.70513815 128.0 +3.5190356 -2.2571838 0.69807535 128.0 +3.5423822 -2.3029537 0.70513815 128.0 +3.5158138 -2.3164966 0.70278388 128.0 +3.4358225 -2.294158 0.69022775 128.0 +3.4028668 -2.302469 0.68661785 128.0 +3.4579163 -2.3707678 0.69995874 128.0 +3.4627721 -2.4054615 0.70372558 128.0 +3.0432959 -2.1419265 0.62509286 128.0 +3.2745683 -2.3348372 0.67280614 128.0 +3.2457685 -2.3444779 0.669981 128.0 +3.2560318 -2.3824258 0.67484647 128.0 +3.2159603 -2.383544 0.66982406 128.0 +3.3837357 -2.5401793 0.70607984 128.0 +3.3900998 -2.5776286 0.71047449 128.0 +3.3679597 -2.5935614 0.70921892 128.0 +3.2982433 -2.5722754 0.69838923 128.0 +3.0777752 -2.4308832 0.65695399 128.0 +2.9316778 -2.344867 0.63027221 128.0 +2.8581359 -2.3149545 0.61818695 128.0 +2.8293676 -2.32055 0.61520487 128.0 +2.9472866 -2.4476416 0.64251447 128.0 +2.9412842 -2.4733062 0.64439785 128.0 +3.4284112 -2.9189374 0.74924153 128.0 +4.1607723 -3.5866208 0.90666401 128.0 +3.794903 -3.3120856 0.83415234 128.0 +3.3185933 -2.9325063 0.73747015 128.0 +2.5107055 -2.24632 0.5690611 128.0 +2.4829662 -2.2490876 0.56607902 128.0 +3.51156 -3.2200139 0.79083371 128.0 +4.0954294 -3.801836 0.92173135 128.0 +3.9899769 -3.7497959 0.90383887 128.0 +2.4441962 -2.3256819 0.56984586 128.0 +3.3631885 -3.2394547 0.77576637 128.0 +3.3517339 -3.2683032 0.77764976 128.0 +3.4792264 -3.4344957 0.81060964 128.0 +3.6732662 -3.6707797 0.85895073 128.0 +2.4800227 -2.5091257 0.59433031 128.0 +3.1490738 -3.2252173 0.75002629 128.0 +2.5539517 -2.6481221 0.61834389 128.0 +3.7667043 -3.9535825 0.90148461 128.0 +3.1426489 -3.3394485 0.76242548 128.0 +2.7542608 -2.963026 0.67657298 128.0 +3.7099938 -4.0404305 0.90540838 128.0 +2.6533291 -2.925647 0.66134864 128.0 +3.3807001 -3.7737803 0.83886093 128.0 +3.3535538 -3.7900152 0.83791918 128.0 +3.3334854 -3.8142388 0.83870393 128.0 +2.5710502 -2.9786685 0.65899438 128.0 +2.5347829 -2.973346 0.65459973 128.0 +1.7530928 -2.0823388 0.46625781 128.0 +1.7762793 -2.136337 0.47520405 128.0 +1.7512275 -2.1326954 0.47222197 128.0 +1.6671832 -2.0559626 0.45432949 128.0 +1.6483623 -2.0584455 0.45275998 128.0 +1.6344755 -2.0669715 0.45244607 128.0 +1.6181145 -2.0722916 0.45150438 128.0 +1.6192409 -2.1001682 0.45511425 128.0 +1.635044 -2.147779 0.46264794 128.0 +1.6396396 -2.1814525 0.46735647 128.0 +1.6209258 -2.184335 0.46594393 128.0 +1.6308433 -2.2261038 0.47222197 128.0 +1.6553588 -2.2888801 0.48258078 128.0 +1.6694068 -2.3383758 0.49027142 128.0 +1.6624244 -2.3590689 0.49231178 128.0 +1.6930416 -2.4340804 0.50486791 128.0 +1.7954767 -2.6153917 0.53782773 128.0 +1.4458559 -2.1341925 0.44334289 128.0 +1.3717917 -2.0518999 0.42592126 128.0 +1.3542799 -2.0528598 0.42450869 128.0 +1.319563 -2.0271988 0.41807368 128.0 +1.3065656 -2.0344265 0.41791672 128.0 +1.2898284 -2.0357318 0.41666111 128.0 +2.094105 -3.3499391 0.66150558 128.0 +2.370575 -3.8443828 0.75143886 128.0 +1.8475308 -3.037883 0.59872496 128.0 +2.3227117 -3.8723369 0.75128192 128.0 +2.3416524 -3.958765 0.76462281 128.0 +2.2839751 -3.9159038 0.75410706 128.0 +2.2589197 -3.9281321 0.75379312 128.0 +1.1216472 -1.9788715 0.39515874 128.0 +1.1104476 -1.9874407 0.39547265 128.0 +2.2086315 -4.0097017 0.76116985 128.0 +2.1797457 -4.0153666 0.75975728 128.0 +1.0648248 -1.9909985 0.39249057 128.0 +1.0470616 -1.9870111 0.39060715 128.0 +1.0343945 -1.9925219 0.39045021 128.0 +1.0293461 -2.0128989 0.39296141 128.0 +1.6862491 -3.3474236 0.62933052 128.0 +1.665678 -3.357707 0.62933052 128.0 +1.6424428 -3.3625402 0.62838882 128.0 +1.0104599 -2.101634 0.40426195 128.0 +1.0178316 -2.1506398 0.41179562 128.0 +1.0158792 -2.1810148 0.4160333 128.0 +1.0065939 -2.1961844 0.41760284 128.0 +1.0036588 -2.2257254 0.42168358 128.0 +1.0320454 -2.3266268 0.43816349 128.0 +1.01854 -2.3347259 0.4384774 128.0 +0.97420496 -2.2710493 0.42639211 128.0 +1.3284206 -3.149611 0.57690871 128.0 +0.94928885 -2.2901316 0.42764774 128.0 +0.93447357 -2.2940838 0.42733383 128.0 +0.90936691 -2.2722692 0.42262527 128.0 +0.88926256 -2.2621818 0.4199571 128.0 +0.9354983 -2.4232924 0.44648191 128.0 +0.92166209 -2.4317572 0.44695279 128.0 +1.065531 -2.8640585 0.51930743 128.0 +1.0455658 -2.864049 0.5182088 128.0 +0 -0 0 128.0 +1.1776365 -3.3527949 0.59841108 128.0 +1.1470704 -3.3310113 0.59354556 128.0 +0.91841215 -2.7213535 0.49011445 128.0 +0.90790057 -2.7456903 0.4932535 128.0 +0.97597045 -3.0133345 0.53704298 128.0 +0.93028516 -2.9336019 0.52276039 128.0 +0.78047526 -2.514823 0.45213217 128.0 +0.96254003 -3.1696978 0.56011486 128.0 +1.1498102 -3.8713725 0.67547429 128.0 +0.94836199 -3.2666283 0.57424051 128.0 +0.87976593 -3.1013703 0.54598922 128.0 +0.87179941 -3.1466825 0.55258119 128.0 +0.85608673 -3.165319 0.55477852 128.0 +0.82202661 -3.1151288 0.54567534 128.0 +0.78861517 -3.064642 0.53657216 128.0 +0.54337144 -2.1670723 0.38872373 128.0 +0.51435387 -2.1060882 0.37820798 128.0 +0.50256443 -2.1140084 0.37899274 128.0 +0.50094104 -2.1661229 0.38699725 128.0 +0.48568946 -2.1604843 0.38558471 128.0 +0.46841732 -2.145092 0.38260263 128.0 +0.45955032 -2.1682138 0.38589859 128.0 +0.7290355 -3.5455928 0.60892683 128.0 +0.72966301 -3.6623511 0.62713319 128.0 +0.71578538 -3.7113662 0.63435298 128.0 +0.69789106 -3.7419012 0.63859069 128.0 +0.68192661 -3.7849905 0.64486873 128.0 +0.6602127 -3.7978604 0.6462813 128.0 +0.65893888 -3.9333322 0.66746974 128.0 +0.63778061 -3.9558263 0.67045182 128.0 +0.61243695 -3.9528334 0.66935319 128.0 +0.4210569 -2.8331316 0.48885885 128.0 +0.38025939 -2.6714032 0.46249098 128.0 +0.42625383 -3.1316552 0.53594434 128.0 +0.37329277 -2.8746798 0.49435216 128.0 +0.48628697 -3.9325149 0.66338903 128.0 +0.45257983 -3.8540137 0.65036201 128.0 +0 -0 0 128.0 +0.27000886 -2.5726013 0.44475546 128.0 +0.22865242 -2.3157303 0.40347719 128.0 +0.2126155 -2.2974219 0.40033814 128.0 +0.21026437 -2.4344656 0.42199746 128.0 +0.18962739 -2.3648307 0.41069695 128.0 +0.17365228 -2.3462517 0.40755793 128.0 +0.22861473 -3.3670895 0.57000285 128.0 +0.20630418 -3.3418143 0.56576514 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.12249351 -2.8319731 0.48415029 128.0 +0.10879055 -2.9313636 0.49984547 128.0 +0.088161476 -2.8470829 0.48634762 128.0 +0.07096155 -2.8584306 0.48807409 128.0 +0.073440395 -3.9222758 0.65711099 128.0 +0 -0 0 128.0 +0.015521063 -2.4296529 0.41980016 128.0 +0.00058854802 -2.3714337 0.41054001 128.0 +-0.014024462 -2.382256 0.41226646 128.0 +-0.028606316 -2.3791625 0.41179562 128.0 +-0.043239582 -2.3809171 0.41210952 128.0 +-0.057919286 -2.383569 0.41258037 128.0 +-0.072573386 -2.384156 0.41273734 128.0 +-0.087416574 -2.3895874 0.41367903 128.0 +-0.17880584 -4.1917305 0.70042962 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.16004911 -2.6164074 0.45024875 128.0 +-0.18166083 -2.6981485 0.4634327 128.0 +-0.19936885 -2.7127426 0.46594393 128.0 +-0.2158536 -2.7094991 0.46563002 128.0 +-0.23416123 -2.7278037 0.46876904 128.0 +-0.25134614 -2.7312329 0.4695538 128.0 +-0.26607564 -2.7089984 0.46625781 128.0 +-0.28177091 -2.6984744 0.46484527 128.0 +-0.29647949 -2.6800067 0.46217707 128.0 +-0.31188789 -2.6693087 0.46076453 128.0 +-0.3310318 -2.6898899 0.46437439 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4558531 -3.3991375 0.62132597 128.0 +-0 -0 0 128.0 +-1.5498358 -3.4993148 0.64188665 128.0 +-0 -0 0 128.0 +-1.6349833 -3.5725336 0.65805268 128.0 +-1.6527092 -3.553479 0.65648317 128.0 +-1.6765913 -3.5477362 0.65726793 128.0 +-1.7162772 -3.5747769 0.6638599 128.0 +-0 -0 0 128.0 +-1.6451942 -3.3215649 0.62273854 128.0 +-1.6535648 -3.2875845 0.61850089 128.0 +-1.6755023 -3.280895 0.6191287 128.0 +-1.6896938 -3.2591538 0.61708832 128.0 +-1.7271336 -3.2819374 0.62305248 128.0 +-0 -0 0 128.0 +-4.6925631 -8.6587982 1.5988206 128.0 +-1.9019305 -3.4581542 0.66087782 128.0 +-1.9043486 -3.4127827 0.65475667 128.0 +-1.9223346 -3.3958766 0.65381497 128.0 +-1.9726369 -3.4354076 0.66323209 128.0 +-2.021508 -3.4710336 0.67202139 128.0 +-4.9493356 -8.3807135 1.5804572 128.0 +-4.6470218 -7.759613 1.4710619 128.0 +-4.9344292 -8.126029 1.5445153 128.0 +-4.8526907 -7.8819804 1.5046496 128.0 +-0 -0 0 128.0 +-5.1217122 -8.0947523 1.5559727 128.0 +-5.2992358 -8.2626963 1.5936412 128.0 +-5.3848195 -8.2838488 1.603843 128.0 +-5.4018626 -8.1995182 1.594112 128.0 +-5.522809 -8.2721786 1.6143588 128.0 +-5.4467392 -8.0508108 1.5784168 128.0 +-0 -0 0 128.0 +-5.5789275 -8.0320339 1.5878339 128.0 +-5.6104875 -7.9726133 1.5829685 128.0 +-5.6822324 -7.9702053 1.5892465 128.0 +-5.3447881 -7.4003539 1.4844028 128.0 +-5.3609395 -7.3275652 1.4765552 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.5512023 -7.209445 1.4796942 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.6996593 -9.1290741 2.1505053 128.0 +-9.7294531 -9.0451775 2.144855 128.0 +-9.776041 -8.9772921 2.1429718 128.0 +-9.8865347 -8.9675674 2.1549001 128.0 +-9.9501991 -8.9146442 2.1567836 128.0 +-9.8597527 -8.7251387 2.1260209 128.0 +-9.8350277 -8.5962305 2.1095409 128.0 +-9.5160522 -8.2149639 2.0315361 128.0 +-9.552001 -8.1442451 2.028554 128.0 +-9.5587339 -8.0492201 2.0196078 128.0 +-9.6535015 -8.0283089 2.0290248 128.0 +-9.8430042 -8.0842648 2.057904 128.0 +-10.868816 -8.8157177 2.2577033 128.0 +-10.828666 -8.6735344 2.2385552 128.0 +-10.963787 -8.6718731 2.255192 128.0 +-10.980988 -8.5764732 2.2479722 128.0 +-10.994304 -8.478776 2.2401247 128.0 +-10.36254 -7.8906078 2.1035769 128.0 +-10.837027 -8.1473656 2.1883307 128.0 +-0 -0 0 128.0 +-10.274212 -7.5286541 2.057904 128.0 +-10.306611 -7.4556298 2.0552359 128.0 +-10.441376 -7.4559579 2.0726573 128.0 +-10.851789 -7.6489415 2.1435995 128.0 +-10.797182 -7.5117068 2.1239805 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.609509 -9.1502972 3.0473268 128.0 +-16.671415 -9.0515089 3.0484254 128.0 +-0 -0 0 128.0 +-16.886948 -8.9019718 3.0674167 128.0 +-16.812412 -8.7312746 3.0443447 128.0 +-16.353081 -8.3657131 2.952842 128.0 +-16.381174 -8.2536602 2.9487612 128.0 +-6.7991123 -3.373328 1.2398722 128.0 +-6.8285561 -3.3358815 1.2414417 128.0 +-7.0144362 -3.3735452 1.2706348 128.0 +-7.1555066 -3.3874962 1.2918233 128.0 +-7.1949558 -3.3522873 1.2951192 128.0 +-16.730425 -7.6710553 2.9586492 128.0 +-16.690756 -7.5292673 2.9435818 128.0 +-18.711777 -8.3032103 3.2869918 128.0 +-16.796377 -7.3301997 2.9460931 128.0 +-7.5476103 -3.2386723 1.3389087 128.0 +-7.2033668 -3.0387363 1.2761281 128.0 +-7.2127538 -2.9906969 1.2745585 128.0 +-7.8794036 -3.210638 1.3858372 128.0 +-7.1269708 -2.8531363 1.2536839 128.0 +-7.1572104 -2.8144128 1.2558813 128.0 +-7.2102742 -2.7843208 1.2620025 128.0 +-7.9345841 -3.0082474 1.3822273 128.0 +-7.9621487 -2.9629498 1.3837968 128.0 +-8.021925 -2.9292853 1.3908597 128.0 +-8.1327209 -2.9133184 1.4065548 128.0 +-0 -0 0 128.0 +-23.050972 -7.9403257 3.9082062 128.0 +-22.62579 -7.6388774 3.8287888 128.0 +-22.215609 -7.3488455 3.7523534 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-13.145429 -4.0814295 2.2211337 128.0 +-0 -0 0 128.0 +-13.474749 -4.0030651 2.2675912 128.0 +-13.517077 -3.925544 2.2705734 128.0 +-13.000311 -3.6891077 2.181268 128.0 +-13.510936 -3.7446003 2.2617841 128.0 +-12.339144 -3.338408 2.0651238 128.0 +-12.401411 -3.273726 2.0720296 128.0 +-12.729231 -3.2768598 2.1225681 128.0 +-12.646602 -3.1729739 2.1057742 128.0 +-13.746078 -3.3593445 2.2825017 128.0 +-13.406137 -3.1892147 2.2236447 128.0 +-12.761556 -2.953238 2.1153483 128.0 +-17.210663 -3.8718739 2.8371687 128.0 +-13.6044 -2.972909 2.2467167 128.0 +-13.810776 -2.9293423 2.2773223 128.0 +-12.666706 -2.605531 2.0888233 128.0 +-0 -0 0 128.0 +-22.573317 -4.3555999 3.6872184 128.0 +-12.697957 -2.3692193 2.0864692 128.0 +-12.782235 -2.3038769 2.0977697 128.0 +-0 -0 0 128.0 +-13.523499 -2.2665248 2.2128153 128.0 +-13.550801 -2.1857057 2.2150126 128.0 +-13.585428 -2.1058471 2.2184653 128.0 +-13.585395 -2.0205598 2.2164252 128.0 +-17.41264 -2.4807909 2.8288503 128.0 +-19.601908 -2.6701357 3.1775966 128.0 +-20.211418 -2.6269612 3.2727094 128.0 +-17.847404 -2.2083809 2.8916309 128.0 +-17.73605 -2.0841887 2.8716979 128.0 +-22.341146 -2.4865646 3.6060746 128.0 +-0 -0 0 128.0 +-17.608261 -1.7412361 2.845644 128.0 +-20.258028 -1.8778814 3.2669022 128.0 +-0 -0 0 128.0 +-18.993877 -1.5258343 3.0619233 128.0 +-23.295078 -1.7276616 3.7459183 128.0 +-24.577301 -1.6712115 3.9485428 128.0 +-24.611736 -1.5219008 3.9524667 128.0 +-18.624269 -1.0368893 2.998044 128.0 +-18.376778 -0.91003424 2.9577074 128.0 +-0 -0 0 128.0 +-18.686584 -0.69562948 3.0054207 128.0 +-23.907478 -0.7432273 3.8349099 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.825523 13.216201 5.4878278 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.529678 14.579529 5.5218735 128.0 +-34.483212 14.809868 5.5288272 128.0 +-34.402569 15.025928 5.5305657 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.636742 13.352291 3.7565801 128.0 +-21.686935 13.567721 3.7794702 128.0 +-20.729282 13.146201 3.6279316 128.0 +-21.266623 13.670705 3.7355733 128.0 +-21.221302 13.826324 3.7423823 128.0 +-22.148329 14.624746 3.9199982 128.0 +-19.53371 13.070947 3.475234 128.0 +-19.529299 13.242204 3.4887075 128.0 +-21.960194 15.088223 3.9350653 128.0 +-21.893997 15.241342 3.939846 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-19.673346 14.240005 3.5898297 128.0 +-19.708479 14.450556 3.6121404 128.0 +-0 0 0 128.0 +-19.524921 14.687753 3.6112711 128.0 +-20.175007 15.371587 3.7475977 128.0 +-19.242163 14.848266 3.5925822 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-37.971275 30.818068 7.1943021 128.0 +-0 0 0 128.0 +-36.245609 30.162695 6.9381642 128.0 +-15.931821 13.423514 3.0842185 128.0 +-15.834854 13.508815 3.0814657 128.0 +-15.771884 13.623186 3.0853775 128.0 +-15.591922 13.635673 3.0666885 128.0 +-15.814636 14.002654 3.1266665 128.0 +-15.618649 14.001014 3.1050804 128.0 +-15.196157 13.791348 3.038583 128.0 +-15.093035 13.867594 3.0349612 128.0 +-14.995345 13.948484 3.0324984 128.0 +-14.878504 14.011062 3.0262687 128.0 +-14.798698 14.108236 3.0275726 128.0 +-15.636627 15.091398 3.2157643 128.0 +-0 0 0 128.0 +-15.507233 15.338511 3.227499 128.0 +-0 0 0 128.0 +-14.012245 14.204035 2.9552803 128.0 +-13.897898 14.262107 2.9496303 128.0 +-13.847863 14.386324 2.9575982 128.0 +-14.409719 15.155132 3.0958083 128.0 +-0 0 0 128.0 +-14.038956 15.132784 3.0562577 128.0 +-13.722581 14.974979 3.0078697 128.0 +-14.669514 16.207001 3.2345979 128.0 +-0 0 0 128.0 +-14.00324 15.857704 3.1314473 128.0 +-14.617786 16.75988 3.2900848 128.0 +-13.08371 15.187954 2.9690433 128.0 +-12.990913 15.268702 2.9691882 128.0 +-13.663321 16.26022 3.1436169 128.0 +-13.584775 16.369638 3.1485426 128.0 +-12.576591 15.345286 2.9389095 128.0 +-12.686981 15.675213 2.9865732 128.0 +-12.669628 15.851701 3.0051169 128.0 +-12.627291 15.999046 3.0181558 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-14.729075 19.385767 3.5986671 128.0 +-0 0 0 128.0 +-24.875486 33.589256 6.1538148 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.8526936 13.828008 2.519933 128.0 +-9.8268528 13.972377 2.5349998 128.0 +-9.7082119 13.985266 2.5265973 128.0 +-9.6484985 14.082936 2.5334063 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.0225821 13.703602 2.4361956 128.0 +-0 0 0 128.0 +-9.560586 14.916265 2.6280093 128.0 +-8.7862635 13.894955 2.4409766 128.0 +-9.3354559 14.96614 2.6165643 128.0 +-8.3594942 13.586256 2.3695536 128.0 +-8.3196011 13.709195 2.3818679 128.0 +-8.2332945 13.756589 2.3812883 128.0 +-9.4460802 16.005388 2.755064 128.0 +-9.3700876 16.101532 2.7615833 128.0 +-8.2790213 14.429341 2.4696617 128.0 +-8.2424459 14.572023 2.4851632 128.0 +-9.0730867 16.273005 2.761873 128.0 +-8.1001692 14.739713 2.4964633 128.0 +-0 0 0 128.0 +-7.9596701 14.914824 2.5092123 128.0 +-7.9214144 15.064976 2.5260177 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.2922421 16.500814 2.737824 128.0 +-7.070148 14.286421 2.367815 128.0 +-8.2446995 16.920664 2.7898338 128.0 +-7.2344661 15.081365 2.48299 128.0 +-8.1010637 17.157463 2.8119996 128.0 +-0 0 0 128.0 +-9.0475521 19.787825 3.2196758 128.0 +-7.0159926 15.596367 2.5378973 128.0 +-6.911356 15.619216 2.5347102 128.0 +-6.8426261 15.723932 2.5447066 128.0 +-6.6603975 15.565489 2.5128341 128.0 +-6.5382962 15.54313 2.5028379 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-13.117701 34.076141 5.3801861 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.8800879 13.935933 2.1958492 128.0 +-0 0 0 128.0 +-4.5888319 13.6384 2.1407969 128.0 +-4.4920545 13.626831 2.1347122 128.0 +-4.405622 13.645663 2.1334083 128.0 +-4.572547 14.465891 2.2552476 128.0 +-4.602685 14.878403 2.3142116 128.0 +-4.4084377 14.566373 2.2622015 128.0 +-4.2330756 14.302818 2.2178702 128.0 +-4.0341773 13.944522 2.1593409 128.0 +-3.9525752 13.983295 2.161514 128.0 +-3.8385372 13.905228 2.1460125 128.0 +-3.7606075 13.956225 2.1502137 128.0 +-3.9236245 14.925467 2.2934945 128.0 +-3.8511274 15.024023 2.3047948 128.0 +-4.9167442 19.684027 3.0045376 128.0 +-0 0 0 128.0 +-3.2928972 13.905183 2.1261647 128.0 +-3.473933 15.08219 2.3000138 128.0 +-3.2462659 14.499743 2.2094674 128.0 +-3.1353786 14.418835 2.1944005 128.0 +-2.923697 13.854012 2.1070414 128.0 +-2.9433298 14.383522 2.1835349 128.0 +-6.1977735 31.269936 4.7014503 128.0 +-3.6844945 19.20437 2.8970408 128.0 +-2.6347797 14.201775 2.1487651 128.0 +-5.6204486 31.374823 4.7008705 128.0 +-2.5785599 14.917491 2.2504668 128.0 +-5.2233105 31.371159 4.6904397 128.0 +-2.4220631 15.115078 2.2752404 128.0 +-2.2189705 14.412825 2.1690476 128.0 +-2.2346618 15.131916 2.2735019 128.0 +-2.0712912 14.646668 2.1997609 128.0 +-4.2511306 31.46171 4.6823268 128.0 +-4.1004877 31.816931 4.7310047 128.0 +-3.8469059 31.366158 4.6608853 128.0 +-3.6660416 31.489418 4.6756625 128.0 +-0 0 0 128.0 +-3.3180168 31.904043 4.7304249 128.0 +-3.1080425 31.779041 4.7091284 128.0 +-2.9295037 31.977829 4.7356405 128.0 +-2.9004226 33.953125 5.0233607 128.0 +-2.6931293 33.984093 5.0253892 128.0 +-2.4655275 33.739456 4.9871421 128.0 +-2.1272087 31.791306 4.699132 128.0 +-1.9373176 31.889685 4.7117362 128.0 +-1.7256548 31.608528 4.6688533 128.0 +-1.5469843 31.934776 4.7152133 128.0 +-1.3537642 32.008911 4.7247748 128.0 +-1.1587282 32.05518 4.7304249 128.0 +-1.0688391 35.626064 5.252552 128.0 +-0 0 0 128.0 +-0.67108774 37.870327 5.5796781 128.0 +-0.43772417 37.788643 5.5672188 128.0 +-0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.5250423 20.489378 3.0422049 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.8998184 20.435175 3.0388727 128.0 +1.9855076 20.02338 2.9800539 128.0 +2.1165261 20.088556 2.9914989 128.0 +2.2071464 19.783138 2.9484713 128.0 +2.3462093 19.919569 2.9706371 128.0 +4.0382419 32.557838 4.8374872 128.0 +4.237042 32.525578 4.836473 128.0 +1.9595994 14.359505 2.155864 128.0 +2.0320041 14.237505 2.1396379 128.0 +2.1464605 14.406796 2.1665847 128.0 +5.2643995 33.895004 5.0562472 128.0 +2.5123973 15.55052 2.3402889 128.0 +2.5259922 15.047894 2.2679965 128.0 +5.5864115 32.065086 4.79953 128.0 +5.7770758 31.997099 4.7946043 128.0 +2.6634626 14.254808 2.1571679 128.0 +2.8858876 14.936684 2.2613325 128.0 +2.8029315 14.044456 2.1308007 128.0 +3.2462828 15.760698 2.3899808 128.0 +3.3509469 15.778229 2.3956308 128.0 +3.1466501 14.381944 2.1894748 128.0 +0 0 0 128.0 +3.6548791 15.774602 2.404758 128.0 +3.3429649 14.036685 2.1465919 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5081463 13.613476 2.0922642 128.0 +3.5455894 13.417594 2.065897 128.0 +4.1605773 15.36198 2.3641932 128.0 +4.1436324 14.935726 2.3033459 128.0 +4.205451 14.805325 2.2874098 128.0 +4.4652901 15.360703 2.3760729 128.0 +4.53689 15.257144 2.3644829 128.0 +4.5826287 15.071877 2.3404338 128.0 +4.4993854 14.478453 2.253799 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.769031 18.401329 2.9584675 128.0 +7.8888221 18.369677 2.9610753 128.0 +7.971683 18.252922 2.9502096 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +8.5719004 18.092794 2.9652767 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +22.881422 13.884965 3.9527397 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +24.054657 13.800767 4.0944271 128.0 +0 0 0 128.0 +24.267141 13.529593 4.1019602 128.0 +24.360107 13.386156 4.1036987 128.0 +24.405241 13.216645 4.0976143 128.0 +28.195927 15.046278 4.7133298 128.0 +28.203642 14.828787 4.6994219 128.0 +28.236111 14.62542 4.6898603 128.0 +28.183416 14.379498 4.6665354 128.0 +28.199503 14.170314 4.6548004 128.0 +28.200785 13.954894 4.6408925 128.0 +28.19426 13.736959 4.6259708 128.0 +28.15044 13.502517 4.6052537 128.0 +28.150442 13.290674 4.5919251 128.0 +28.152498 13.081009 4.5791764 128.0 +28.146744 12.86894 4.565413 128.0 +28.106964 12.642825 4.5464349 128.0 +28.105288 12.435299 4.5338306 128.0 +28.095774 12.225507 4.5202127 128.0 +28.093845 12.020193 4.5080428 128.0 +28.09137 11.815748 4.4960184 128.0 +28.094759 11.614811 4.4851527 128.0 +28.075661 11.405714 4.4709554 128.0 +28.068842 11.202791 4.4589305 128.0 +28.054144 10.997854 4.4458919 128.0 +28.039837 10.794232 4.4331431 128.0 +28.0389 10.596797 4.4227118 128.0 +28.038454 10.400469 4.412571 128.0 +28.018991 10.198117 4.3996768 128.0 +28.014877 10.002384 4.3893909 128.0 +28.01689 9.8097029 4.3802638 128.0 +27.990454 9.6080589 4.3669353 128.0 +27.979483 9.4127884 4.3562145 128.0 +27.977509 9.2214212 4.3470879 128.0 +27.962 9.0264826 4.3360772 128.0 +27.961195 8.8371506 4.3275294 128.0 +27.942106 8.6429071 4.3163743 128.0 +27.945366 8.4563951 4.3088408 128.0 +27.94644 8.2698879 4.3011627 128.0 +27.927271 8.0781879 4.2905865 128.0 +27.908709 7.8875747 4.2803006 128.0 +27.902214 7.7011786 4.2720428 128.0 +27.899261 7.5164461 4.2645092 128.0 +27.897009 7.3325434 4.2572656 128.0 +27.899302 7.1504259 4.2508912 128.0 +27.854334 6.9570494 4.2375627 128.0 +27.843618 6.7731471 4.2295947 128.0 +27.861546 6.596704 4.2261176 128.0 +27.870644 6.41852 4.2214818 128.0 +27.891155 6.2432823 4.218729 128.0 +27.915403 6.0690856 4.2167006 128.0 +27.957926 5.898911 4.2175698 128.0 +27.993593 5.7272534 4.2175698 128.0 +28.033062 5.5563416 4.2182946 128.0 +28.120073 5.3944802 4.2262626 128.0 +28.128323 5.2173266 4.2226405 128.0 +28.137403 5.0406246 4.2193084 128.0 +28.208754 4.8749571 4.2253933 128.0 +28.248871 4.7035666 4.2269869 128.0 +28.278177 4.5303025 4.2271318 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.458664 4.023427 4.2421985 128.0 +28.498505 3.8508518 4.2445168 128.0 +28.542204 3.6785707 4.2475591 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +23.718376 -0.88952422 3.5091348 128.0 +31.534527 -1.3768581 4.6555252 128.0 +31.509672 -1.5695363 4.6532068 128.0 +25.026714 -1.4003624 3.7039907 128.0 +25.147018 -1.5619384 3.7229693 128.0 +0 -0 0 128.0 +19.299397 -1.4364026 2.8674865 128.0 +25.081461 -2.0219231 3.7181883 128.0 +25.061684 -2.1751826 3.7171743 128.0 +30.457579 -2.83216 4.5126791 128.0 +19.224857 -1.9062793 2.8625607 128.0 +18.008385 -1.8972375 2.6852345 128.0 +27.40601 -3.058063 4.0715365 128.0 +27.404417 -3.2282498 4.0741444 128.0 +27.405695 -3.3990197 4.0773315 128.0 +27.387266 -3.5674975 4.0777664 128.0 +27.375645 -3.7369478 4.07936 128.0 +27.366894 -3.9069495 4.081533 128.0 +27.36883 -4.0787349 4.0854445 128.0 +27.329599 -4.2444639 4.0834165 128.0 +17.726768 -2.864166 2.6630688 128.0 +0 -0 0 128.0 +18.523706 -3.2267153 2.7869363 128.0 +19.05662 -3.4401898 2.869225 128.0 +19.158674 -3.5801442 2.887624 128.0 +19.584192 -3.7841957 2.954411 128.0 +25.752081 -5.1404867 3.878854 128.0 +20.190418 -4.1590233 3.0522013 128.0 +18.452394 -3.9190838 2.7959185 128.0 +0 -0 0 128.0 +17.566038 -3.9566686 2.6703126 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.131296 -4.9257026 3.0684271 128.0 +30.965557 -7.7789545 4.708694 128.0 +20.159397 -5.195591 3.0820453 128.0 +20.235233 -5.3477626 3.0984161 128.0 +0 -0 0 128.0 +25.30224 -7.0204697 3.8785641 128.0 +7.9668097 -2.2624078 1.246488 128.0 +7.9242749 -2.3029606 1.2421417 128.0 +0 -0 0 128.0 +31.390017 -9.5455141 4.8377767 128.0 +30.667568 -9.5317583 4.7360749 128.0 +8.0464334 -2.5542421 1.2699577 128.0 +7.9920211 -2.5910497 1.2640178 128.0 +7.9318256 -2.6254196 1.2572087 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.602566 -7.2448449 3.2315555 128.0 +20.585665 -7.381144 3.2359018 128.0 +20.511179 -7.4967852 3.2314107 128.0 +24.173601 -9.0041399 3.8109078 128.0 +19.690536 -7.4719648 3.1175394 128.0 +19.707998 -7.61726 3.1275358 128.0 +19.533834 -7.6880288 3.1075432 128.0 +20.577408 -8.244998 3.2796538 128.0 +20.576818 -8.3916559 3.287622 128.0 +19.249193 -7.9882469 3.0853775 128.0 +20.217068 -8.5357609 3.2470572 128.0 +19.009708 -8.1637268 3.0630667 128.0 +19.22493 -8.3962603 3.105515 128.0 +19.411777 -8.6200914 3.1437616 128.0 +19.390985 -8.7536955 3.1489773 128.0 +19.391764 -8.8976851 3.1578145 128.0 +3.9865742 -1.8578598 0.67785639 128.0 +3.7444093 -1.7729745 0.64047879 128.0 +3.8324201 -1.8435539 0.65655982 128.0 +3.75437 -1.8344373 0.64569426 128.0 +3.7660847 -1.8688811 0.64946097 128.0 +3.7987206 -1.9142294 0.65670472 128.0 +3.7340598 -1.9104468 0.64801228 128.0 +3.6959288 -1.9196333 0.64366603 128.0 +3.5974426 -1.8965676 0.62932348 128.0 +3.6563926 -1.9564365 0.64105827 128.0 +3.6121514 -1.9613563 0.63569796 128.0 +3.8911874 -2.1439972 0.6843757 128.0 +3.562768 -1.9915274 0.63149661 128.0 +3.568553 -2.0236053 0.63453895 128.0 +3.67098 -2.1116045 0.65395212 128.0 +4.7380409 -2.7646248 0.83707321 128.0 +4.7337599 -2.8012061 0.83924633 128.0 +4.7266626 -2.8363106 0.84098482 128.0 +3.8623078 -2.349745 0.69582075 128.0 +3.8074014 -2.3484557 0.68886679 128.0 +3.6419368 -2.2773061 0.66278946 128.0 +3.525121 -2.2344251 0.64496988 128.0 +3.4763882 -2.2335398 0.6388852 128.0 +3.3250053 -2.1651604 0.61483604 128.0 +3.4082601 -2.2493153 0.63178635 128.0 +3.4437325 -2.3032036 0.64047879 128.0 +3.4991429 -2.3714943 0.65279311 128.0 +3.4820793 -2.3912389 0.65235847 128.0 +3.508755 -2.4413919 0.65974706 128.0 +3.5228167 -2.4834068 0.66496253 128.0 +3.5340786 -2.5239594 0.66974342 128.0 +3.6171086 -2.6169605 0.68756294 128.0 +3.6041746 -2.6414459 0.68814242 128.0 +3.6014025 -2.6735406 0.69060528 128.0 +3.5991623 -2.7062955 0.69321305 128.0 +2.9402895 -2.2389817 0.57499564 128.0 +3.2069225 -2.4733946 0.62686062 128.0 +4.0960112 -3.199816 0.79491478 128.0 +3.1328819 -2.478174 0.61874765 128.0 +3.0535367 -2.4459879 0.60672307 128.0 +3.9188781 -3.179265 0.77274901 128.0 +4.0154858 -3.2987452 0.79476994 128.0 +3.82481 -3.1815455 0.76231807 128.0 +3.9898355 -3.3605247 0.79766738 128.0 +3.6176252 -3.0850284 0.73001111 128.0 +3.4241679 -2.9564583 0.69625539 128.0 +3.810374 -3.3311248 0.77492213 128.0 +3.3261466 -2.9438107 0.6842308 128.0 +3.8951886 -3.4905777 0.79969567 128.0 +2.4296334 -2.2036939 0.51414841 128.0 +2.402952 -2.2065098 0.51154065 128.0 +2.3900924 -2.2218864 0.51168555 128.0 +3.5576911 -3.3490446 0.74927938 128.0 +3.4898112 -3.3257475 0.73971766 128.0 +4.3065476 -4.1552014 0.91008985 128.0 +7.9835644 -7.7995706 1.6680722 128.0 +3.4469965 -3.4082079 0.74362928 128.0 +2.4898667 -2.4917929 0.54964262 128.0 +2.5488777 -2.5823972 0.56514418 128.0 +2.532294 -2.5972795 0.56499928 128.0 +2.5286601 -2.6256006 0.56760705 128.0 +2.4143302 -2.5378048 0.54674512 128.0 +2.2652776 -2.4104815 0.51820487 128.0 +2.2437155 -2.4170816 0.51675612 128.0 +2.2047787 -2.4045403 0.51154065 128.0 +2.1674092 -2.3930805 0.50661492 128.0 +2.0643208 -2.3074863 0.48720178 128.0 +2.0756643 -2.3490357 0.49285188 128.0 +3.4522681 -3.9567995 0.80273801 128.0 +2.9862368 -3.4651227 0.70364398 128.0 +1.9057719 -2.2383783 0.46431166 128.0 +1.8449011 -2.1939707 0.45359096 128.0 +1.8219268 -2.1938279 0.45141783 128.0 +1.718749 -2.0955267 0.43070081 128.0 +1.7338687 -2.1406448 0.43722016 128.0 +1.7145241 -2.1435137 0.43577141 128.0 +1.6933712 -2.1438961 0.43388805 128.0 +1.6400447 -2.1027353 0.42432633 128.0 +1.6391793 -2.1284425 0.42722383 128.0 +1.6314756 -2.1455512 0.42852771 128.0 +1.5885944 -2.1159449 0.42128399 128.0 +1.6509532 -2.2274325 0.43982789 128.0 +2.3514285 -3.2143993 0.61700916 128.0 +2.3195012 -3.2119181 0.61396682 128.0 +1.8261119 -2.5612538 0.4944455 128.0 +1.9253304 -2.735903 0.52371013 128.0 +1.7702843 -2.5485177 0.48821589 128.0 +1.542686 -2.2499571 0.43330854 128.0 +1.7383226 -2.5692303 0.48807102 128.0 +1.4770703 -2.2119253 0.42331222 128.0 +1.5483431 -2.3498726 0.4459126 128.0 +2.3811636 -3.6637268 0.67365503 128.0 +2.3575706 -3.6766024 0.67336524 128.0 +1.299143 -2.0526454 0.38955653 128.0 +1.2765752 -2.0446267 0.3868039 128.0 +1.2655609 -2.0549493 0.38723853 128.0 +1.2529281 -2.062676 0.38723853 128.0 +1.628412 -2.7189958 0.49792248 128.0 +1.5890697 -2.6905899 0.49140313 128.0 +1.5745212 -2.7037103 0.49198264 128.0 +2.240304 -3.9028602 0.69277841 128.0 +2.1617615 -3.8200719 0.67655247 128.0 +1.1366514 -2.0365281 0.37535882 128.0 +2.1466444 -3.904413 0.68625909 128.0 +2.0891957 -3.8557355 0.675973 128.0 +2.0734165 -3.883322 0.67843586 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.0277236 -2.0427864 0.3686946 128.0 +1.0796732 -2.1794178 0.38999113 128.0 +1.0957479 -2.2464879 0.39984259 128.0 +1.0742413 -2.2371104 0.39723486 128.0 +1.0300815 -2.1792371 0.3868039 128.0 +1.0546287 -2.2671738 0.39998746 128.0 +1.0349383 -2.261004 0.39795923 128.0 +1.0190163 -2.2627997 0.39723486 128.0 +1.0135194 -2.2880116 0.4002772 128.0 +0.99867183 -2.2923729 0.39998746 128.0 +0.99470598 -2.3221095 0.4037542 128.0 +0.98158985 -2.3309054 0.40418881 128.0 +0.95933145 -2.317682 0.40114644 128.0 +1.2735229 -3.1320603 0.5289256 128.0 +1.2586818 -3.1508434 0.53066409 128.0 +1.3032383 -3.3215609 0.55630684 128.0 +0.88403666 -2.2934334 0.39375788 128.0 +0.86679995 -2.2904844 0.392454 128.0 +0.85754651 -2.3087478 0.39448223 128.0 +1.1025604 -3.0261867 0.50545597 128.0 +1.1179032 -3.1279435 0.52023315 128.0 +1.0326474 -2.9461014 0.49096853 128.0 +1.1093063 -3.2284617 0.53370643 128.0 +2.8818982 -8.5638781 1.3568822 128.0 +0.93457723 -2.8321075 0.47054124 128.0 +0.97219235 -3.0082211 0.4967635 128.0 +0.9605732 -3.0358295 0.50009561 128.0 +1.1950994 -3.8602746 0.62555677 128.0 +0.95906413 -3.1657701 0.51820487 128.0 +1.104687 -3.7294846 0.60339099 128.0 +1.0375241 -3.5831628 0.5800662 128.0 +0.90977824 -3.2152605 0.5231306 128.0 +0.87634557 -3.1711848 0.51559716 128.0 +0.87256968 -3.2347813 0.52443451 128.0 +0.81950861 -3.1137562 0.50531107 128.0 +0.81905401 -3.1915705 0.51632154 128.0 +0.52401066 -2.0935302 0.34986097 128.0 +0.51045364 -2.0938218 0.34942633 128.0 +0.49622902 -2.0911374 0.34855708 128.0 +0.49071521 -2.1259623 0.35333794 128.0 +0.47960618 -2.1376233 0.3546418 128.0 +0.47026393 -2.1579294 0.35724956 128.0 +0.73782969 -3.4919715 0.55645168 128.0 +1.7183243 -8.394702 1.2885015 128.0 +1.6598591 -8.3701468 1.2832861 128.0 +1.5691445 -8.1751366 1.2527176 128.0 +1.5698285 -8.4589586 1.2935721 128.0 +1.3582871 -7.5772653 1.1610122 128.0 +1.3885844 -8.0300589 1.2270749 128.0 +1.3448107 -8.0716124 1.2320006 128.0 +1.3212343 -8.2418938 1.2560496 128.0 +0.42914757 -2.7812047 0.4459126 128.0 +0.40051612 -2.705478 0.43432269 128.0 +0.41090953 -2.8989286 0.46257317 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.32424635 -2.6349425 0.42258784 128.0 +0.30281088 -2.5916729 0.41592363 128.0 +0.26165712 -2.3643267 0.38216794 128.0 +0.24714497 -2.3658876 0.38216794 128.0 +0.23310487 -2.3722835 0.38289228 128.0 +0.21448407 -2.3293293 0.37637296 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.1184784 -2.7759719 0.44069713 128.0 +0.097301111 -2.6619451 0.42389172 128.0 +0.081232645 -2.6713932 0.42519557 128.0 +0 -0 0 128.0 +0.045749377 -2.5198374 0.40288496 128.0 +0 -0 0 128.0 +0.022604642 -3.9568696 0.61324245 128.0 +-0.00055414706 -2.4005291 0.38535514 128.0 +-0.015222455 -2.3915758 0.38405129 128.0 +-0.029793767 -2.3835223 0.38289228 128.0 +-0.044929191 -2.4100049 0.3868039 128.0 +-0.059415925 -2.3978143 0.38506541 128.0 +-0.07422071 -2.4003716 0.38550004 128.0 +-0.09596543 -2.5867453 0.41288128 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.1640223 -2.6576769 0.42374685 128.0 +-0.18599163 -2.7395408 0.43591627 128.0 +-0.20404711 -2.7551222 0.43837914 128.0 +-0.22206211 -2.7676258 0.4404074 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0.27667972 -2.8004849 0.4459126 128.0 +-0.29167959 -2.7780707 0.44287026 128.0 +-0.30828097 -2.7722952 0.44229075 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.9773967 -8.9583473 1.4690149 128.0 +-4.0343251 -8.938283 1.4697393 128.0 +-1.6270218 -3.548259 0.60541922 128.0 +-1.6437446 -3.5274482 0.60368073 128.0 +-1.6640866 -3.5146136 0.60324609 128.0 +-1.7143747 -3.5640693 0.61295265 128.0 +-4.365716 -8.9312124 1.4894421 128.0 +-1.6809691 -3.3876784 0.58759969 128.0 +-1.6772212 -3.3287089 0.57963157 128.0 +-1.6809303 -3.285768 0.57427126 128.0 +-1.6978655 -3.2692466 0.57325715 128.0 +-1.7525201 -3.3244019 0.58412272 128.0 +-4.6116252 -8.6153097 1.4646686 128.0 +-1.8848282 -3.4713089 0.61222833 128.0 +-1.9037037 -3.4553461 0.61150396 128.0 +-1.9065144 -3.4107857 0.60599869 128.0 +-1.9254534 -3.395581 0.60541922 128.0 +-1.9546431 -3.3982811 0.60788208 128.0 +-1.9924184 -3.4152765 0.61280781 128.0 +-4.8895893 -8.2612019 1.4394605 128.0 +-4.9865322 -8.3082409 1.4526441 128.0 +-5.0775466 -8.3434114 1.4639443 128.0 +-5.1405978 -8.3314648 1.4672765 128.0 +-5.2005439 -8.3140259 1.4697393 128.0 +-5.3097548 -8.3738708 1.4856755 128.0 +-5.2818451 -8.2179537 1.464234 128.0 +-5.407794 -8.3014488 1.4845164 128.0 +-5.4046497 -8.1863708 1.4701738 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.5151935 -8.0284176 1.4600327 128.0 +-5.2375827 -7.5250707 1.3762953 128.0 +-5.2842274 -7.4936004 1.3764402 128.0 +-5.332984 -7.4650612 1.3771646 128.0 +-5.3937736 -7.4530368 1.3809314 128.0 +-5.4206796 -7.3942676 1.3762953 128.0 +-5.5568061 -7.4831915 1.3986059 128.0 +-5.5758491 -7.4133744 1.3920866 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.0835943 -8.4276543 1.848151 128.0 +-9.1519136 -8.3871336 1.851483 128.0 +-9.2134743 -8.3401155 1.8535112 128.0 +-9.2836542 -8.3005714 1.857278 128.0 +-10.039772 -8.8662548 1.9950534 128.0 +-9.3616991 -8.1658611 1.8527869 128.0 +-9.9169159 -8.5434952 1.9504322 128.0 +-10.682088 -9.088995 2.0874832 128.0 +-9.8285923 -8.2594872 1.9136341 128.0 +-9.7762918 -8.1137266 1.8940761 128.0 +-10.437372 -8.5546808 2.0098307 128.0 +-10.666569 -8.6336384 2.0431516 128.0 +-11.018473 -8.8070812 2.0992181 128.0 +-11.017158 -8.6957874 2.088932 128.0 +-10.813533 -8.4279327 2.0412683 128.0 +-10.825833 -8.331255 2.0340247 128.0 +-10.426874 -7.9228964 1.9513015 128.0 +-11.031737 -8.2761478 2.053148 128.0 +-10.359512 -7.6730442 1.9214573 128.0 +-10.364064 -7.5783858 1.913779 128.0 +-10.765799 -7.7711654 1.9779583 128.0 +-0 -0 0 128.0 +-10.759991 -7.5678926 1.9599938 128.0 +-10.870439 -7.5462976 1.971439 128.0 +-10.870008 -7.4475827 1.9631811 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.59803 -8.9890814 2.797657 128.0 +-0 -0 0 128.0 +-16.732489 -8.7980738 2.8018584 128.0 +-16.791428 -8.6979694 2.8027277 128.0 +-16.402031 -8.3690519 2.7300007 128.0 +-16.964094 -8.5250196 2.8137381 128.0 +-6.4007287 -3.1683533 1.0795928 128.0 +-6.8576856 -3.342227 1.1508709 128.0 +-6.8976912 -3.3094995 1.1540582 128.0 +-7.1156092 -3.3604643 1.1860754 128.0 +-6.4927082 -3.0178216 1.0822005 128.0 +-16.567181 -7.5751929 2.7011707 128.0 +-16.705393 -7.5147934 2.7159479 128.0 +-7.5452094 -3.3393478 1.2419969 128.0 +-7.540153 -3.2819352 1.2379404 128.0 +-7.1244035 -3.0491905 1.1685456 128.0 +-0 -0 0 128.0 +-7.3057613 -3.0212555 1.1914357 128.0 +-7.1655717 -2.9119513 1.1663725 128.0 +-7.1759524 -2.8649955 1.1652135 128.0 +-7.8262663 -3.0689814 1.2647421 128.0 +-7.8837328 -3.0358307 1.2708268 128.0 +-7.9744062 -3.0146813 1.282127 128.0 +-7.9296703 -2.9422975 1.2722756 128.0 +-7.959662 -2.8979855 1.274159 128.0 +-7.2728148 -2.5975966 1.164634 128.0 +-7.2727408 -2.5473645 1.1621711 128.0 +-22.319126 -7.6615591 3.4889972 128.0 +-7.2396817 -2.4364741 1.1523197 128.0 +-7.2507362 -2.3907676 1.1517402 128.0 +-7.2426705 -2.3389387 1.1482632 128.0 +-22.774033 -7.1979737 3.5310106 128.0 +-7.4267979 -2.298121 1.1721674 128.0 +-7.4436002 -2.2533672 1.1726021 128.0 +-13.294252 -3.9346662 2.0638688 128.0 +-13.267769 -3.8384504 2.0561905 128.0 +-13.03113 -3.6835155 2.0166397 128.0 +-13.213724 -3.6477082 2.0409787 128.0 +-13.500502 -3.6378491 2.0811088 128.0 +-13.530225 -3.5569549 2.0822678 128.0 +-12.781177 -3.2763965 1.9657888 128.0 +-12.711762 -3.1756165 1.9523156 128.0 +-0 -0 0 128.0 +-12.741109 -3.0173333 1.9510117 128.0 +-12.800844 -2.9486451 1.9572413 128.0 +-17.11932 -3.8325305 2.6025114 128.0 +-13.470333 -2.9292059 2.0522788 128.0 +-17.550383 -3.703445 2.6601713 128.0 +-13.354042 -2.7327511 2.0296783 128.0 +-12.741625 -2.5261288 1.9357998 128.0 +-13.611043 -2.6117232 2.0631444 128.0 +-22.541164 -4.181241 3.3906276 128.0 +-18.128094 -3.2479489 2.7304354 128.0 +-18.055056 -3.1206524 2.7166724 128.0 +-23.357059 -3.8892636 3.5008769 128.0 +-16.748619 -2.6836958 2.5174701 128.0 +-17.741732 -2.7312083 2.6621995 128.0 +-19.533781 -2.8843784 2.9250016 128.0 +-17.673002 -2.499022 2.6472776 128.0 +-18.772486 -2.5370307 2.8075085 128.0 +-17.825987 -2.2978899 2.6655316 128.0 +-17.659046 -2.1663125 2.6388748 128.0 +-17.783064 -2.0708432 2.6552455 128.0 +-22.515249 -2.4816675 3.3504975 128.0 +-18.830648 -1.9588691 2.8059149 128.0 +-20.077196 -1.9640173 2.9875872 128.0 +-18.922241 -1.7339566 2.816056 128.0 +-19.860222 -1.697035 2.9523828 128.0 +-19.84856 -1.5734241 2.9491956 128.0 +-24.646885 -1.8014007 3.6522706 128.0 +-18.528658 -1.240274 2.7528908 128.0 +-18.452957 -1.121524 2.7407215 128.0 +-23.645403 -1.2912074 3.5011666 128.0 +-18.72624 -0.90762269 2.7789683 128.0 +-23.687147 -1.0021144 3.505223 128.0 +-23.723503 -0.85786086 3.5097141 128.0 +-23.701618 -0.71147978 3.5058026 128.0 +-23.706526 -0.56605953 3.5059476 128.0 +-23.831236 -0.42274091 3.523767 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-22.477659 -0.56464684 3.0501451 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.971619 13.220984 5.0491567 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.996078 13.572515 4.9442601 128.0 +-33.944298 13.793916 4.9489136 128.0 +-0 0 0 128.0 +-34.721657 14.608775 5.0870466 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.17337 15.628646 5.0746827 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.535372 13.435551 3.4388859 128.0 +-20.793283 13.150518 3.3342557 128.0 +-20.75893 13.30781 3.3417008 128.0 +-21.91107 14.236826 3.539129 128.0 +-22.014517 14.496916 3.5698402 128.0 +-21.965548 14.658679 3.5763547 128.0 +-19.766808 13.367425 3.2349432 128.0 +-28.079525 19.240885 4.6000571 128.0 +-21.720503 15.080293 3.5810077 128.0 +-20.854191 14.669294 3.454175 128.0 +-20.765404 14.798127 3.4544411 128.0 +-19.796677 14.291767 3.3092613 128.0 +-0 0 0 128.0 +-21.142569 15.661596 3.5634587 128.0 +-19.661861 14.752478 3.3313308 128.0 +-19.478643 14.802681 3.3157759 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-36.459812 30.262308 6.3899407 128.0 +-0 0 0 128.0 +-36.364986 30.945103 6.4391317 128.0 +-0 0 0 128.0 +-15.848733 13.825802 2.8552427 128.0 +-15.625427 13.800753 2.8305144 128.0 +-15.657928 14.001411 2.8516531 128.0 +-15.588621 14.112522 2.8547111 128.0 +-15.316875 14.038482 2.821075 128.0 +-15.247886 14.148379 2.8242657 128.0 +-15.909189 14.944678 2.9620004 128.0 +-15.876085 15.09802 2.9729021 128.0 +-15.561802 14.982058 2.9316881 128.0 +-15.518556 15.124992 2.9408615 128.0 +-0 0 0 128.0 +-15.216076 15.198721 2.918925 128.0 +-14.212338 14.371452 2.7452946 128.0 +-14.01446 14.346371 2.7242887 128.0 +-14.321213 14.841472 2.800601 128.0 +-14.298262 15.000807 2.8138957 128.0 +-14.070065 14.943937 2.7873061 128.0 +-0 0 0 128.0 +-14.399239 15.674562 2.8891447 128.0 +-0 0 0 128.0 +-14.163466 15.802848 2.880636 128.0 +-14.04587 15.86645 2.8765144 128.0 +-0 0 0 128.0 +-13.856585 16.04512 2.8778439 128.0 +-13.045848 15.29509 2.7306702 128.0 +-12.908331 15.323306 2.7216296 128.0 +-12.851466 15.447174 2.7294736 128.0 +-12.791678 15.568622 2.7369187 128.0 +-26.220133 32.313801 5.6160483 128.0 +-15.201451 18.971331 3.2950358 128.0 +-14.867661 18.789886 3.248105 128.0 +-25.667887 32.851089 5.6262856 128.0 +-25.135271 32.57951 5.5536957 128.0 +-25.288046 33.196712 5.6318693 128.0 +-0 0 0 128.0 +-25.055441 33.742458 5.6716208 128.0 +-24.796362 33.825218 5.6599212 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.7694149 14.036939 2.3281026 128.0 +-9.6735611 14.08273 2.3258424 128.0 +-9.6153336 14.18366 2.3326228 128.0 +-21.490816 32.123016 5.2184 128.0 +-21.291124 32.250969 5.2178679 128.0 +-21.11231 32.410896 5.2226543 128.0 +-0 0 0 128.0 +-8.7893486 13.862568 2.2358363 128.0 +-8.6930866 13.898591 2.2330444 128.0 +-9.3638268 15.177262 2.4262185 128.0 +-8.4049139 13.812029 2.2028651 128.0 +-20.081013 33.459206 5.2685213 128.0 +-9.2908611 15.698455 2.480993 128.0 +-9.2583075 15.864736 2.4980106 128.0 +-9.1533747 15.90836 2.4960163 128.0 +-8.2721634 14.583179 2.2830331 128.0 +-8.2226763 14.705462 2.2940676 128.0 +-8.1232004 14.739146 2.2915418 128.0 +-8.0524797 14.825291 2.2971256 128.0 +-7.959023 14.870051 2.2964609 128.0 +-8.621273 16.34758 2.5131667 128.0 +-9.6029062 18.482807 2.8279884 128.0 +-7.3168445 14.29674 2.1883738 128.0 +-7.4453621 14.770607 2.2528536 128.0 +-8.2694902 16.658989 2.5288546 128.0 +-0 0 0 128.0 +-7.3114691 15.194511 2.295929 128.0 +-7.2100387 15.22207 2.2934029 128.0 +-7.1466541 15.3307 2.3029752 128.0 +-7.1061764 15.491374 2.3202586 128.0 +-7.001204 15.513004 2.3170679 128.0 +-6.8708968 15.476861 2.3055012 128.0 +-6.7520065 15.464231 2.2975245 128.0 +-0 0 0 128.0 +-7.2832637 17.255259 2.5464036 128.0 +-13.835594 33.347542 4.8769884 128.0 +-0 0 0 128.0 +-13.524101 33.761391 4.9126186 128.0 +-13.37766 33.99868 4.9349537 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.8287835 14.010626 2.0219223 128.0 +-4.7341599 14.014639 2.018333 128.0 +-0 0 0 128.0 +-4.4670639 13.779408 1.9771188 128.0 +-4.6901097 14.775786 2.113524 128.0 +-4.5243683 14.562931 2.079622 128.0 +-4.1530023 13.663004 1.9495986 128.0 +-4.3037992 14.477702 2.0600786 128.0 +-4.0475368 13.928033 1.9796449 128.0 +-3.9701228 13.981209 1.9836333 128.0 +-0 0 0 128.0 +-3.7961805 14.021222 1.9825697 128.0 +-3.7174182 14.07204 1.9864253 128.0 +-3.8261104 14.851851 2.0913215 128.0 +-3.7295985 14.853899 2.0883965 128.0 +-4.853498 19.84425 2.7744102 128.0 +-0 0 0 128.0 +-3.4629357 14.951896 2.0927839 128.0 +-3.2644415 14.499075 2.0276392 128.0 +-3.038388 13.892387 1.9416217 128.0 +-3.1072659 14.636933 2.0411999 128.0 +-0 0 0 128.0 +-3.825897 19.177074 2.6571498 128.0 +-2.7478507 14.228436 1.9779166 128.0 +-3.7518828 20.087734 2.7752078 128.0 +-2.6339376 14.598562 2.0239167 128.0 +-2.5325816 14.547075 2.0147433 128.0 +-5.2531867 31.307142 4.2922816 128.0 +-5.0600429 31.332916 4.2914839 128.0 +-4.8705807 31.381983 4.2940097 128.0 +-2.1892703 14.701898 2.0279052 128.0 +-4.6718521 32.748291 4.4713631 128.0 +-3.7066908 27.174856 3.7130256 128.0 +-4.1326084 31.750546 4.3289752 128.0 +-3.9421015 31.810715 4.3337612 128.0 +-3.7575002 31.924862 4.3459926 128.0 +-3.5578082 31.913826 4.3414726 128.0 +-0 0 0 128.0 +-3.1945429 32.244064 4.3804264 128.0 +-2.986186 32.150558 4.3652701 128.0 +-2.7751589 32.010288 4.3439984 128.0 +-2.5724101 31.948668 4.3334956 128.0 +-2.6947768 36.246563 4.9095607 128.0 +-2.3845305 34.974964 4.7364621 128.0 +-2.1759579 35.086868 4.7496238 128.0 +-1.7970854 32.172382 4.3563628 128.0 +-1.7792319 35.794949 4.8414912 128.0 +-1.5579685 35.768555 4.8365722 128.0 +-1.3402466 35.824982 4.8429537 128.0 +-1.1275611 36.061371 4.8736649 128.0 +-0.90821421 36.144894 4.8840346 128.0 +-0.68634093 36.145821 4.883503 128.0 +-0.48211867 37.515999 5.0668387 128.0 +-0.25155583 37.464729 5.0596595 128.0 +-0.021658994 37.443764 5.0567346 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.7387241 20.326189 2.7705545 128.0 +3.1655121 34.513851 4.6831498 128.0 +3.3735559 34.456295 4.6780977 128.0 +2.0988176 20.158644 2.7527397 128.0 +2.1926954 19.875456 2.7163117 128.0 +3.801544 32.623219 4.4397211 128.0 +2.4463336 19.927719 2.7272134 128.0 +2.6813946 20.787186 2.8455374 128.0 +4.3020468 31.813046 4.3402758 128.0 +4.4870319 31.714411 4.3305707 128.0 +4.6699557 31.607843 4.3199348 128.0 +2.202723 14.299891 1.9748588 128.0 +5.0694032 31.622532 4.330039 128.0 +2.3599598 14.163265 1.9601015 128.0 +2.6045432 15.060692 2.0842752 128.0 +5.7639198 32.156036 4.4161892 128.0 +2.6479282 14.266522 1.9804425 128.0 +2.7182288 14.160458 1.9682113 128.0 +2.9378941 14.813354 2.0598128 128.0 +3.0058758 14.683384 2.0445237 128.0 +3.3151503 15.70327 2.1869113 128.0 +3.1881545 14.656045 2.0459862 128.0 +0 0 0 128.0 +3.2927783 14.290336 2.0011826 128.0 +3.4180927 14.428995 2.023119 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.4874129 13.600379 1.917425 128.0 +3.5420654 13.469451 1.9022689 128.0 +4.1353183 15.342278 2.1655066 128.0 +4.1470785 15.018538 2.1240268 128.0 +4.1914263 14.823997 2.1004949 128.0 +4.34126 15.001742 2.1289458 128.0 +4.4757071 15.118326 2.1490211 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +4.684423 14.206776 2.0406682 128.0 +4.7715058 14.177765 2.0406682 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.7223105 18.673372 2.7446296 128.0 +7.845583 18.64665 2.7476876 128.0 +7.9625788 18.604538 2.7486181 128.0 +8.0734196 18.548059 2.7475545 128.0 +8.2203684 18.573399 2.7585893 128.0 +0 0 0 128.0 +8.4155226 18.400818 2.7482193 128.0 +8.5249271 18.341646 2.7471557 128.0 +8.6110687 18.233427 2.7389131 128.0 +8.7163534 18.166843 2.7369187 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +34.10363 50.431145 8.2004318 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +14.455091 19.766214 3.3188336 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +38.957561 39.002922 7.4286661 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +22.97711 14.568593 3.683511 128.0 +23.058506 14.422604 3.6823144 128.0 +0 0 0 128.0 +23.906013 14.547659 3.7878754 128.0 +23.014139 13.812115 3.6344531 128.0 +24.007677 14.208776 3.776176 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +24.477367 13.490537 3.7830894 128.0 +24.5292 13.323534 3.7784362 128.0 +28.134594 15.059117 4.3146167 128.0 +28.184385 14.864011 4.3082352 128.0 +28.17128 14.636872 4.2925472 128.0 +28.174978 14.419939 4.2796516 128.0 +28.20717 14.218682 4.2712755 128.0 +28.224638 14.010964 4.2609057 128.0 +28.170277 13.769183 4.2400327 128.0 +28.135452 13.538915 4.2223506 128.0 +28.137381 13.327838 4.2103853 128.0 +28.132393 13.114737 4.1976223 128.0 +28.137562 12.907571 4.1865878 128.0 +28.142155 12.701245 4.1756859 128.0 +28.156149 12.500177 4.1663795 128.0 +28.072456 12.257376 4.1429806 128.0 +28.12528 12.07551 4.1397896 128.0 +28.164146 11.888063 4.134738 128.0 +28.239307 11.716166 4.1351366 128.0 +0 0 0 128.0 +28.461 11.40081 4.1467032 128.0 +0 0 0 128.0 +28.592291 11.04819 4.1457725 128.0 +28.667883 10.875708 4.1469688 128.0 +0 0 0 128.0 +28.747986 10.50438 4.139657 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +31.969593 -0.37390852 4.3227267 128.0 +0 -0 0 128.0 +31.955662 -0.76603025 4.3217959 128.0 +0 -0 0 128.0 +24.487577 -0.88788468 3.3209608 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +24.922321 -1.3633667 3.382117 128.0 +25.328001 -1.5414827 3.4378223 128.0 +30.942961 -2.0737658 4.1940327 128.0 +18.403631 -1.3470325 2.5093112 128.0 +18.371307 -1.4580483 2.5061204 128.0 +25.213417 -2.156687 3.4285161 128.0 +19.593655 -1.7972465 2.6733694 128.0 +19.954134 -1.9538424 2.723491 128.0 +27.41312 -2.8539736 3.7311065 128.0 +27.40593 -3.023319 3.732569 128.0 +27.414427 -3.1946335 3.7362914 128.0 +19.348295 -2.3752151 2.6489069 128.0 +18.067278 -2.3305988 2.4776695 128.0 +27.390266 -3.7040145 3.7416093 128.0 +27.366043 -3.8718696 3.7414765 128.0 +27.381969 -4.0456505 3.7469275 128.0 +18.7883 -2.893981 2.584028 128.0 +0 -0 0 128.0 +25.281086 -4.2121553 3.4719901 128.0 +19.699688 -3.406671 2.71578 128.0 +18.979902 -3.4022834 2.620589 128.0 +17.494017 -3.2468739 2.4207675 128.0 +26.001348 -4.9908576 3.5855281 128.0 +18.657402 -3.7001696 2.5854905 128.0 +17.661415 -3.6154344 2.4522762 128.0 +0 -0 0 128.0 +20.103741 -4.3730497 2.7938206 128.0 +20.113281 -4.5045519 2.7988727 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +38.055622 -9.2613182 5.2877989 128.0 +30.853674 -7.7095404 4.2999926 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +30.587347 -8.4456768 4.2905531 128.0 +7.9599328 -2.2508307 1.1436656 128.0 +7.9231229 -2.2930179 1.1404748 128.0 +7.9431167 -2.3517177 1.1452609 128.0 +7.9769168 -2.415056 1.1520413 128.0 +7.9922466 -2.4733307 1.1562957 128.0 +7.9873157 -2.5256102 1.1577581 128.0 +7.9773273 -2.5763993 1.1585559 128.0 +7.9519558 -2.6221952 1.1572263 128.0 +0 -0 0 128.0 +20.838465 -7.1555982 2.9895205 128.0 +20.527575 -7.1899552 2.9516304 128.0 +20.429869 -7.2967739 2.9440522 128.0 +20.415445 -7.4331813 2.9484396 128.0 +20.374098 -7.5600319 2.9491043 128.0 +0 -0 0 128.0 +20.094807 -7.7382531 2.9225147 128.0 +19.646488 -7.7043753 2.864815 128.0 +19.655914 -7.8475623 2.8730578 128.0 +20.433781 -8.3038292 2.9927113 128.0 +19.34656 -8.0006895 2.8423467 128.0 +19.23407 -8.0927267 2.8331733 128.0 +19.331663 -8.2737656 2.8547111 128.0 +20.112061 -8.7541466 2.9763587 128.0 +19.515076 -8.6371222 2.8967226 128.0 +19.487925 -8.7684946 2.9005783 128.0 +19.750126 -9.032589 2.947243 128.0 +19.421995 -9.0270329 2.9069598 128.0 +19.352798 -9.1396847 2.9049654 128.0 +3.7396672 -1.7946221 0.59046751 128.0 +3.7383857 -1.8223107 0.59192991 128.0 +3.7440109 -1.8535682 0.59445596 128.0 +3.7688751 -1.8947551 0.5999068 128.0 +0 -0 0 128.0 +3.7470999 -1.9417742 0.6001727 128.0 +3.7316058 -1.9628842 0.59964091 128.0 +3.6477935 -1.9474747 0.58873916 128.0 +3.5033092 -1.8980684 0.56853104 128.0 +3.6522832 -2.0078461 0.59312648 128.0 +3.6710572 -2.047596 0.59791261 128.0 +3.6955183 -2.0910671 0.60362935 128.0 +5.1491642 -2.9552705 0.83043927 128.0 +4.9621844 -2.8885925 0.80424845 128.0 +4.9469275 -2.9204969 0.80464727 128.0 +3.9067163 -2.3389318 0.6448434 128.0 +3.8770404 -2.3536024 0.64245027 128.0 +3.7814922 -2.3274813 0.62968725 128.0 +3.7654579 -2.3495913 0.62942135 128.0 +3.7459443 -2.3694727 0.62862366 128.0 +3.6420541 -2.3351803 0.61439818 128.0 +3.7024565 -2.4060829 0.62636358 128.0 +3.7621229 -2.477813 0.63832891 128.0 +3.8095038 -2.5426621 0.64843297 128.0 +3.8012197 -2.5709856 0.64962953 128.0 +0 -0 0 128.0 +3.8426569 -2.6683099 0.66159487 128.0 +3.7767615 -2.6570544 0.653485 128.0 +3.7676516 -2.6853549 0.65468156 128.0 +3.7294061 -2.6927588 0.65109193 128.0 +3.4928052 -2.5547042 0.61453116 128.0 +3.4085717 -2.5253525 0.60309756 128.0 +3.4944894 -2.6223562 0.62011498 128.0 +4.1001639 -3.1162896 0.72487825 128.0 +3.5555122 -2.7369773 0.63593584 128.0 +4.1562004 -3.2400966 0.74096501 128.0 +4.2148147 -3.3275611 0.7543928 128.0 +4.3584418 -3.4845579 0.78257787 128.0 +3.5296423 -2.8577073 0.64324796 128.0 +3.7427635 -3.0684323 0.68326545 128.0 +3.2998326 -2.7393909 0.60934615 128.0 +4.4529552 -3.742873 0.81435251 128.0 +3.5754452 -3.0430269 0.66385496 128.0 +3.8029912 -3.277102 0.70746207 128.0 +4.3773317 -3.8189909 0.81328893 128.0 +3.3568811 -2.9652941 0.63487226 128.0 +2.423209 -2.1672981 0.47014922 128.0 +2.3540227 -2.1315734 0.46004516 128.0 +2.3679342 -2.1707547 0.46496424 128.0 +2.322602 -2.1555815 0.45911452 128.0 +2.318723 -2.1786134 0.46084285 128.0 +2.3225489 -2.2091918 0.4640336 128.0 +2.3882058 -2.2997015 0.47879088 128.0 +2.3343022 -2.2755735 0.47134575 128.0 +2.3689768 -2.3378847 0.48051921 128.0 +2.5782835 -2.5758092 0.52292973 128.0 +2.5777626 -2.6070845 0.52585459 128.0 +2.5658729 -2.627106 0.52665228 128.0 +2.338418 -2.4238462 0.48583713 128.0 +2.3330753 -2.4481928 0.48769841 128.0 +2.3078182 -2.4516382 0.48570418 128.0 +2.2913818 -2.4643011 0.48543829 128.0 +2.3171198 -2.5228369 0.49354815 128.0 +2.2356594 -2.4643431 0.48038626 128.0 +2.102747 -2.3466406 0.45672145 128.0 +2.0541461 -2.3209095 0.44980812 128.0 +2.0189896 -2.3095942 0.44555378 128.0 +1.9905281 -2.3054366 0.44262892 128.0 +2.6407723 -3.0965574 0.57996458 128.0 +2.6664219 -3.1657627 0.58927095 128.0 +1.8710535 -2.2494948 0.42654216 128.0 +1.855328 -2.2586358 0.42614332 128.0 +1.8351893 -2.2622812 0.42481384 128.0 +1.7977225 -2.2441082 0.41976181 128.0 +1.6781372 -2.121413 0.39689469 128.0 +1.7334347 -2.2191408 0.41178489 128.0 +1.6313933 -2.1151662 0.39237443 128.0 +1.6105764 -2.114887 0.3906461 128.0 +2.3547695 -3.1314745 0.55962348 128.0 +2.3361015 -3.1466599 0.5597564 128.0 +2.3085463 -3.149744 0.55789512 128.0 +2.2862711 -3.1598351 0.55723041 128.0 +2.6897213 -3.7657535 0.65481448 128.0 +1.9571664 -2.7761779 0.48969263 128.0 +2.6376452 -3.7903421 0.653485 128.0 +1.9448376 -2.831847 0.49487764 128.0 +1.4480084 -2.1365705 0.38027614 128.0 +1.4023551 -2.096813 0.37243217 128.0 +2.0589311 -3.1194401 0.53542686 128.0 +1.5139256 -2.3248024 0.40620106 128.0 +1.3731676 -2.1372783 0.37482527 128.0 +1.3085457 -2.0644708 0.36192927 128.0 +1.3063656 -2.0892665 0.36458823 128.0 +1.3075732 -2.1200173 0.36817783 128.0 +1.2986623 -2.134774 0.36924142 128.0 +1.6440971 -2.7401216 0.46270412 128.0 +2.2562535 -3.812906 0.62835777 128.0 +2.2188275 -3.8027101 0.62463522 128.0 +2.2087991 -3.8394475 0.62822485 128.0 +2.2272556 -3.9270666 0.63965839 128.0 +1.7576008 -3.1439388 0.51721293 128.0 +2.1315339 -3.8681695 0.62649649 128.0 +0 -0 0 128.0 +1.0591152 -1.9795024 0.33520666 128.0 +1.0585082 -2.0078804 0.33853036 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1383092 -2.3296888 0.38187152 128.0 +1.0694116 -2.2232065 0.36498708 128.0 +1.0633874 -2.2458494 0.36738014 128.0 +1.0433054 -2.2388573 0.36538592 128.0 +1.0423595 -2.2731433 0.36950731 128.0 +1.0247226 -2.2713659 0.36831078 128.0 +1.016397 -2.2902927 0.37017205 128.0 +1.020569 -2.3382683 0.3762877 128.0 +1.0089396 -2.3508613 0.37721834 128.0 +0.99526691 -2.358834 0.37748423 128.0 +0 -0 0 128.0 +0.97298104 -2.3873899 0.3798773 128.0 +1.6051421 -4.007997 0.61320168 128.0 +1.3018038 -3.3094511 0.51109731 128.0 +1.1882319 -3.076082 0.47639781 128.0 +1.1844524 -3.123162 0.48211458 128.0 +0.85813159 -2.3055835 0.36405644 128.0 +0.85893601 -2.3517659 0.36990616 128.0 +0 -0 0 128.0 +1.1136951 -3.1690547 0.4846406 128.0 +1.0661304 -3.0943074 0.47307408 128.0 +1.0198432 -3.0200379 0.46164054 128.0 +0.91533279 -2.766546 0.42494678 128.0 +0.96467119 -2.9766998 0.4537966 128.0 +0.95838362 -3.0203497 0.45911452 128.0 +0.80338019 -2.5870023 0.39742649 128.0 +0.96592844 -3.1788659 0.47972152 128.0 +0.75801593 -2.551065 0.39104494 128.0 +0.96778411 -3.3313377 0.49939787 128.0 +0.91510439 -3.2237561 0.48357701 128.0 +0.86351764 -3.1147027 0.4676232 128.0 +0.83765483 -3.0950689 0.46416655 128.0 +0.80953401 -3.0656536 0.45938042 128.0 +0.78798819 -3.0600057 0.45791799 128.0 +0.85054576 -3.3887336 0.50272155 128.0 +0.84480804 -3.4555042 0.51123029 128.0 +0.51205629 -2.1522467 0.33081934 128.0 +0.50152457 -2.166935 0.33241472 128.0 +0.49017861 -2.1786735 0.33361128 128.0 +0.47616592 -2.1787355 0.33321244 128.0 +0.46031836 -2.1699822 0.33161703 128.0 +0.43979883 -2.1378186 0.32683089 128.0 +0.42609137 -2.1375608 0.32643205 128.0 +0.43702686 -2.2646966 0.34344944 128.0 +0.40401387 -2.1650369 0.32948986 128.0 +0.51568717 -2.8599877 0.4238832 128.0 +0.48928791 -2.8123236 0.4169699 128.0 +0.43511698 -2.5953453 0.3870565 128.0 +0.42345071 -2.6243842 0.3906461 128.0 +0.40962008 -2.641624 0.39264032 128.0 +0.41559649 -2.7930949 0.41284847 128.0 +1.2067389 -8.4609671 1.1804923 128.0 +1.1531932 -8.4564276 1.1788969 128.0 +1.0932238 -8.4014263 1.1705211 128.0 +1.0170286 -8.2092886 1.1436656 128.0 +0.96385735 -8.1917505 1.1404748 128.0 +0.27033642 -2.4282515 0.36179632 128.0 +0.87145787 -8.2808304 1.1509777 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.24333028 -3.9293487 0.56214947 128.0 +0.21822049 -3.9129553 0.5597564 128.0 +0.19612633 -3.9528267 0.56494141 128.0 +0.11789995 -2.7152359 0.39862302 128.0 +0.094899423 -2.5465448 0.37588885 128.0 +0.078714579 -2.5292478 0.37349579 128.0 +0.062994674 -2.5217566 0.37243217 128.0 +0.046823677 -2.4854307 0.36751309 128.0 +0.031763677 -2.5005369 0.36950731 128.0 +0.016193455 -2.4669874 0.36498708 128.0 +0.0010460755 -2.450191 0.36272696 128.0 +-0.013955048 -2.4442048 0.36192927 128.0 +-0.028396361 -2.3965025 0.35554776 128.0 +-0.04304751 -2.3933103 0.35514891 128.0 +-0.057589337 -2.3870559 0.35435122 128.0 +-0.07649906 -2.5283241 0.37336284 128.0 +-0.095493145 -2.623883 0.38625881 128.0 +-0.11415159 -2.6836519 0.39436868 128.0 +-0.13114455 -2.6937904 0.39583111 128.0 +-0.14669667 -2.6751215 0.39343804 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-4.0849276 -8.9313383 1.3514639 128.0 +-1.6362276 -3.5196328 0.55470437 128.0 +-1.6577928 -3.5095267 0.55470437 128.0 +-1.6801531 -3.501076 0.55497026 128.0 +-4.2737918 -8.7687054 1.3425564 128.0 +-1.6952918 -3.4242332 0.54659456 128.0 +-1.6735412 -3.328753 0.53383148 128.0 +-1.6907808 -3.312242 0.53290087 128.0 +-1.7074251 -3.294765 0.53183728 128.0 +-1.7497528 -3.3263328 0.5382188 128.0 +-1.8676695 -3.4982767 0.56600499 128.0 +-1.876354 -3.4632208 0.56241536 128.0 +-1.8803824 -3.4203739 0.55762923 128.0 +-1.8974724 -3.4018466 0.55656564 128.0 +-1.9290463 -3.4091182 0.5594905 128.0 +-1.9558475 -3.4075334 0.56108588 128.0 +-4.8260121 -8.2909212 1.3208858 128.0 +-4.8893886 -8.2824917 1.3242095 128.0 +-4.9441891 -8.2591381 1.325273 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.1756401 -8.2953901 1.3456142 128.0 +-5.2253823 -8.2618017 1.3453482 128.0 +-5.2524428 -8.1928701 1.3394985 128.0 +-5.2945142 -8.1480207 1.3375043 128.0 +-5.344955 -8.116209 1.3376373 128.0 +-5.3897033 -8.07584 1.3364407 128.0 +-5.4236088 -8.0196295 1.3327181 128.0 +-0 -0 0 128.0 +-5.4300456 -7.8205771 1.3111806 128.0 +-5.3752899 -7.6411924 1.2872498 128.0 +-5.4295516 -7.6185594 1.2889782 128.0 +-5.4228244 -7.5111694 1.2767469 128.0 +-5.4758306 -7.4873548 1.2783422 128.0 +-5.4709339 -7.3851218 1.2669088 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.2479601 -8.4953012 1.7185344 128.0 +-9.3013802 -8.4397287 1.7188002 128.0 +-9.3168259 -8.3500834 1.7122858 128.0 +-9.4925585 -8.4031305 1.734621 128.0 +-9.5178261 -8.3218927 1.7299678 128.0 +-9.9145079 -8.5619793 1.791257 128.0 +-9.6825733 -8.2584972 1.7411355 128.0 +-10.629019 -8.9537115 1.8982805 128.0 +-9.8471889 -8.1923027 1.7523032 128.0 +-10.432549 -8.5715466 1.845234 128.0 +-10.625788 -8.6216564 1.8695636 128.0 +-10.932952 -8.7601995 1.9133036 128.0 +-10.992716 -8.6978712 1.9143672 128.0 +-10.841258 -8.470377 1.8795347 128.0 +-10.52578 -8.1203575 1.817315 128.0 +-10.416935 -7.9348989 1.7905923 128.0 +-10.402851 -7.8237681 1.7800894 128.0 +-10.563655 -7.8436952 1.7989681 128.0 +-10.7123 -7.8525643 1.8157196 128.0 +-0 -0 0 128.0 +-10.759469 -7.6859484 1.8077426 128.0 +-10.784556 -7.6043634 1.8041531 128.0 +-10.848096 -7.5499372 1.806945 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.560184 -8.994854 2.5619588 128.0 +-16.92527 -9.0591164 2.6091554 128.0 +-16.704386 -8.8094521 2.5672767 128.0 +-16.760763 -8.7081614 2.5676754 128.0 +-16.501553 -8.445302 2.5206118 128.0 +-16.36632 -8.2497549 2.4925597 128.0 +-16.460131 -8.1707726 2.4990742 128.0 +-6.9751177 -3.408994 1.0754631 128.0 +-6.8923049 -3.3162773 1.0600411 128.0 +-6.9483519 -3.2908959 1.065359 128.0 +-7.1040573 -3.3114362 1.0854342 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.993505 -3.1045032 1.0604399 128.0 +-0 -0 0 128.0 +-7.5410814 -3.2374258 1.134891 128.0 +-7.117034 -3.003772 1.0702782 128.0 +-7.1188526 -2.9532092 1.067885 128.0 +-7.1634545 -2.920325 1.0717405 128.0 +-7.7148652 -3.0900824 1.1488506 128.0 +-7.716157 -3.0357914 1.1463245 128.0 +-7.73279 -2.9876745 1.1460587 128.0 +-7.2023849 -2.7320437 1.0673532 128.0 +-7.2171555 -2.6871076 1.0670873 128.0 +-7.2325764 -2.6424334 1.0669544 128.0 +-7.2785096 -2.6087077 1.0712087 128.0 +-22.466074 -7.8977752 3.2284288 128.0 +-22.546906 -7.7710814 3.2330821 128.0 +-22.615761 -7.6398859 3.2361398 128.0 +-22.686676 -7.5090718 3.2395964 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-28.253899 -8.7782288 4.0027199 128.0 +-28.211452 -8.5755863 3.9892921 128.0 +-28.157139 -8.3706884 3.974402 128.0 +-0 -0 0 128.0 +-28.922274 -8.2132492 4.0670671 128.0 +-13.04069 -3.616704 1.8493555 128.0 +-13.325721 -3.6078565 1.8859162 128.0 +-13.565129 -3.5834925 1.9160956 128.0 +-12.778728 -3.2919786 1.8041531 128.0 +-12.785229 -3.2101283 1.8022918 128.0 +-12.728628 -3.1130157 1.7917888 128.0 +-12.804376 -3.0484006 1.7996328 128.0 +-0 -0 0 128.0 +-13.293335 -2.9929376 1.8618526 128.0 +-13.02679 -2.8490489 1.8227658 128.0 +-12.695971 -2.6951663 1.7750374 128.0 +-17.647594 -3.6334617 2.4509468 128.0 +-13.30252 -2.6537776 1.8536098 128.0 +-13.301037 -2.5687215 1.8512168 128.0 +-17.789427 -3.3225708 2.4615827 128.0 +-13.319853 -2.4031918 1.8496214 128.0 +-18.013407 -3.1361506 2.4867098 128.0 +-17.171171 -2.8810575 2.3695824 128.0 +-18.062277 -2.9167585 2.4883053 128.0 +-19.732073 -3.0623295 2.7125893 128.0 +-19.643639 -2.9252837 2.6980977 128.0 +-17.758696 -2.5332615 2.440311 128.0 +-17.840683 -2.4333582 2.4493513 128.0 +-17.994841 -2.342011 2.46823 128.0 +-17.929201 -2.2216783 2.4574614 128.0 +-18.952415 -2.2305033 2.5938663 128.0 +-18.868227 -2.1032991 2.5807045 128.0 +-18.836422 -1.9828162 2.5747218 128.0 +-19.892717 -1.9706947 2.7155139 128.0 +-19.870882 -1.8454813 2.7109938 128.0 +-0 -0 0 128.0 +-23.094885 -1.8594199 3.1420124 128.0 +-18.522675 -1.3768868 2.5255308 128.0 +-18.56835 -1.2657702 2.5305829 128.0 +-18.518393 -1.1482543 2.522872 128.0 +-0 -0 0 128.0 +-23.784489 -1.1821038 3.2284288 128.0 +-23.821001 -1.0374368 3.2324173 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.190346 8.8730946 6.1095753 128.0 +-49.306721 9.2068272 6.1308112 128.0 +-49.370159 9.5325336 6.1457725 128.0 +-49.388622 9.8508196 6.1554251 128.0 +-49.450729 10.179098 6.1707482 128.0 +-49.461143 10.497996 6.1799183 128.0 +-49.448166 10.812738 6.1864338 128.0 +-49.583294 11.161511 6.2116508 128.0 +-49.553528 11.474721 6.216598 128.0 +-49.610626 11.809136 6.232645 128.0 +-49.631733 12.136429 6.2444696 128.0 +-49.69305 12.475061 6.2616029 128.0 +-49.719391 12.806481 6.2746339 128.0 +-49.766563 13.144778 6.2905602 128.0 +-49.70797 13.456119 6.2934561 128.0 +-0 0 0 128.0 +-49.297501 13.996497 6.2629299 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.876663 13.474014 4.5786843 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.967323 13.846498 4.4926562 128.0 +-0 0 0 128.0 +-33.975018 14.338329 4.5164251 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.306 15.480584 4.6088481 128.0 +-34.161644 15.668441 4.6023331 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-22.116348 13.642966 3.1927016 128.0 +-21.761213 13.608914 3.1538501 128.0 +-21.237984 13.463653 3.090626 128.0 +-20.744932 13.330202 3.0313835 128.0 +-21.416365 13.948106 3.1406984 128.0 +-21.655964 14.294179 3.1881166 128.0 +-20.094231 13.440985 2.9726238 128.0 +-19.886482 13.479362 2.954284 128.0 +-21.640392 14.862921 3.2251582 128.0 +-21.562639 15.005064 3.2272093 128.0 +-0 0 0 128.0 +-20.535986 14.667871 3.1016057 128.0 +-19.827959 14.346659 3.0089414 128.0 +-20.281586 14.865369 3.090626 128.0 +-20.240999 15.027409 3.0983479 128.0 +-0 0 0 128.0 +-28.060204 21.372255 4.321444 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.48867 32.439667 6.3401504 128.0 +-38.434147 31.182636 6.0498505 128.0 +-37.305557 30.648432 5.9025288 128.0 +-36.737522 30.561226 5.8425622 128.0 +-0 0 0 128.0 +-22.864954 19.500032 3.6867905 128.0 +-22.429319 19.367462 3.6361146 128.0 +-36.022034 31.493464 5.8499222 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-15.486316 14.224005 2.5900216 128.0 +-15.366035 14.288339 2.5845921 128.0 +-15.387214 14.485105 2.6028111 128.0 +-39.011269 37.180782 6.5844798 128.0 +-15.416895 14.874112 2.6380429 128.0 +-15.369367 15.011436 2.6455235 128.0 +-0 0 0 128.0 +-32.464771 32.498547 5.617538 128.0 +-32.191544 32.62294 5.6048689 128.0 +-14.069949 14.433651 2.4842057 128.0 +-14.260657 14.810049 2.5331924 128.0 +-14.161306 14.888639 2.5317445 128.0 +-31.279287 33.294609 5.5867705 128.0 +-30.729362 33.114067 5.5251145 128.0 +-14.23499 15.52878 2.5947273 128.0 +-14.135442 15.611417 2.5940032 128.0 +-13.300241 14.871304 2.4592299 128.0 +-0 0 0 128.0 +-27.844465 31.915171 5.1822085 128.0 +-13.087111 15.186544 2.4709334 128.0 +-13.018772 15.296043 2.4756391 128.0 +-12.932337 15.384756 2.477087 128.0 +-15.202024 18.312141 2.9270155 128.0 +-16.790483 20.480185 3.2531505 128.0 +-25.83951 31.916174 5.0254755 128.0 +-0 0 0 128.0 +-15.09127 19.114475 2.9943421 128.0 +-24.946777 32.000408 4.965992 128.0 +-14.87979 19.329695 2.9991682 128.0 +-24.560013 32.314407 4.9675603 128.0 +-24.454218 32.588364 4.986383 128.0 +-24.657393 33.282604 5.0687914 128.0 +-0 0 0 128.0 +-22.518396 31.188242 4.7098379 128.0 +-22.307592 31.299149 4.7058563 128.0 +-22.116838 31.437872 4.7062182 128.0 +-21.861811 31.484106 4.6930666 128.0 +-21.683928 31.640583 4.696445 128.0 +-9.6652145 14.289316 2.1310439 128.0 +-9.521698 14.264956 2.1188574 128.0 +-9.5355434 14.477318 2.1412997 128.0 +-9.4643822 14.563023 2.1452813 128.0 +-21.089981 32.894218 4.7835593 128.0 +-9.2754068 14.662968 2.1431096 128.0 +-8.713912 13.964141 2.0348804 128.0 +-8.6270256 14.015655 2.0346391 128.0 +-8.4764776 13.962251 2.019557 128.0 +-9.1289568 15.247319 2.194268 128.0 +-9.0877123 15.391951 2.2068162 128.0 +-20.040644 34.426624 4.8759823 128.0 +-8.3481913 14.54404 2.0725253 128.0 +-8.2583046 14.594126 2.0724046 128.0 +-8.109129 14.537885 2.057564 128.0 +-7.8638849 14.30377 2.01823 128.0 +-8.7618418 16.171642 2.269799 128.0 +-8.6596441 16.219845 2.2690749 128.0 +-7.6135917 14.473331 2.0219703 128.0 +-8.510643 16.422726 2.2824678 128.0 +-7.5712428 14.831813 2.0582879 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-9.1540852 18.77898 2.5734916 128.0 +-7.3376689 15.289708 2.0955708 128.0 +-7.2441387 15.33534 2.0956914 128.0 +-17.568722 37.794498 5.1000414 128.0 +-7.6185937 16.654436 2.260267 128.0 +-7.6152463 16.920849 2.2895865 128.0 +-7.5241356 16.996304 2.2934477 128.0 +-7.414556 17.030319 2.2918792 128.0 +-7.366169 17.206909 2.3092537 128.0 +-0 0 0 128.0 +-13.91704 33.647541 4.4599581 128.0 +-13.347781 32.84024 4.3429213 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.6437559 14.078893 1.836159 128.0 +-4.6088414 14.266768 1.85655 128.0 +-4.3856401 13.866012 1.8018925 128.0 +-4.3940945 14.195175 1.840382 128.0 +-0 0 0 128.0 +-4.0758433 13.762584 1.7788471 128.0 +-3.9344723 13.590899 1.7539918 128.0 +-3.9749861 14.05324 1.8093733 128.0 +-3.8197148 13.82762 1.7778819 128.0 +-0 0 0 128.0 +-3.7115986 14.108665 1.8074427 128.0 +-3.7628005 14.668697 1.8748897 128.0 +-3.6065373 14.426663 1.8417093 128.0 +-3.5177143 14.447556 1.8415885 128.0 +-3.4374666 14.504609 1.8460529 128.0 +-3.2418516 14.063038 1.788379 128.0 +-3.2197251 14.369398 1.8240933 128.0 +-3.1755996 14.591615 1.8493105 128.0 +-2.9342566 13.892076 1.7600247 128.0 +-3.9494147 19.284948 2.4268939 128.0 +-2.8240094 14.231813 1.7977902 128.0 +-2.8013873 14.586186 1.8395374 128.0 +-2.7946303 15.049143 1.8946775 128.0 +-2.7102962 15.110954 1.9002277 128.0 +-2.5752311 14.882757 1.8700635 128.0 +-2.4510658 14.701461 1.8458115 128.0 +-5.0912061 31.744793 3.9419792 128.0 +-4.8869567 31.714605 3.9344985 128.0 +-0 0 0 128.0 +-4.4978189 31.775135 3.9348605 128.0 +-3.7045236 27.379257 3.3923881 128.0 +-4.1058993 31.81514 3.9332919 128.0 +-3.9004457 31.756969 3.9231567 128.0 +-3.71402 31.85327 3.9320853 128.0 +-0 0 0 128.0 +-3.3443418 32.102806 3.9573026 128.0 +-3.1356881 32.004166 3.9428236 128.0 +-2.9364436 31.992157 3.9390833 128.0 +-2.7423732 32.036278 3.9423411 128.0 +-2.5419798 32.005001 3.9365497 128.0 +-2.3683863 32.33186 3.9745564 128.0 +-2.3541148 35.092358 4.3091373 128.0 +-2.1368172 35.074436 4.3052764 128.0 +-1.9237885 35.127525 4.3102231 128.0 +-1.7057092 35.087109 4.3039489 128.0 +-1.489082 35.06617 4.3002086 128.0 +-1.27364 35.067703 4.2993641 128.0 +-1.0837481 35.914295 4.4014397 128.0 +-0.86436224 35.961948 4.406507 128.0 +-0.66900736 37.383919 4.578805 128.0 +-0.44174156 37.56897 4.6008849 128.0 +-0.21156955 37.634502 4.6086068 128.0 +0.01707652 33.456844 4.1007633 128.0 +0.22207171 33.41243 4.0954542 128.0 +0.42818928 33.496796 4.1059513 128.0 +0.63194519 33.400242 4.0946097 128.0 +0.83674884 33.390774 4.0940065 128.0 +1.0439395 33.459427 4.103056 128.0 +0 0 0 128.0 +1.8154525 41.738148 5.1121073 128.0 +2.0655594 41.606255 5.0975075 128.0 +2.3473713 42.06855 5.1554227 128.0 +2.6028142 42.01075 5.1502347 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.789875 43.744068 5.3710361 128.0 +0 0 0 128.0 +1.9901762 20.106121 2.4899974 128.0 +2.1099751 20.059965 2.4858949 128.0 +2.2171874 19.904573 2.4685204 128.0 +2.322341 19.746655 2.4509046 128.0 +3.9592454 31.966764 3.9493392 128.0 +4.1518569 31.915289 3.9460814 128.0 +4.3488145 31.898066 3.9471674 128.0 +4.5200663 31.699783 3.9261732 128.0 +4.7494278 31.906118 3.9550102 128.0 +5.0256329 32.395302 4.0188375 128.0 +2.3019233 14.264192 1.7904302 128.0 +2.3861187 14.230219 1.788017 128.0 +2.4704945 14.198684 1.7859658 128.0 +2.7175989 15.070305 1.8955221 128.0 +2.6645939 14.274639 1.7992381 128.0 +2.9220932 15.138164 1.908191 128.0 +6.3195586 31.686239 3.9614048 128.0 +3.0319791 14.733634 1.8625828 128.0 +3.3319581 15.702318 1.9852906 128.0 +3.4212441 15.649575 1.9813089 128.0 +3.2599297 14.485512 1.8389341 128.0 +3.4215391 14.779544 1.8781475 128.0 +3.7475746 15.747155 2.0016999 128.0 +0 0 0 128.0 +9.8092604 39.07515 4.9310017 128.0 +3.4981906 13.584654 1.7392718 128.0 +3.5457313 13.427606 1.7222592 128.0 +4.0579 14.993335 1.9221872 128.0 +4.2270188 15.246521 1.9572983 128.0 +4.2613792 15.012119 1.9309951 128.0 +4.2830524 14.743561 1.9003483 128.0 +0 0 0 128.0 +4.2549391 14.003192 1.8131136 128.0 +0 0 0 128.0 +4.5270653 14.266892 1.8535335 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.9109302 18.74649 2.5073719 128.0 +8.0371637 18.724051 2.5108709 128.0 +0 0 0 128.0 +8.3134565 18.730167 2.5249877 128.0 +0 0 0 128.0 +8.5248814 18.58794 2.5197995 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +33.355286 49.206917 7.2596745 128.0 +0 0 0 128.0 +34.012188 48.873741 7.2714987 128.0 +34.493343 48.922119 7.3098679 128.0 +34.634773 48.48822 7.2768078 128.0 +34.933384 48.277206 7.2771697 128.0 +15.387106 20.993347 3.1978898 128.0 +14.670565 19.760399 3.0255921 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +18.378578 20.763559 3.4045746 128.0 +18.51226 20.657793 3.405781 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.033295 19.727383 3.3660851 128.0 +0 0 0 128.0 +38.645 39.081192 6.7145476 128.0 +39.023834 38.982944 6.7385583 128.0 +39.353447 38.83271 6.7541232 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +25.094265 19.316854 3.8833401 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +23.30426 14.541416 3.3729625 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +23.285664 13.747619 3.3209596 128.0 +24.221508 14.100378 3.4407716 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +24.538506 13.489751 3.4377551 128.0 +24.650492 13.355008 3.4418573 128.0 +28.157841 15.032268 3.913866 128.0 +28.183653 14.824554 3.9048169 128.0 +28.194757 14.610241 3.8939579 128.0 +28.198992 14.393644 3.8823748 128.0 +28.152851 14.153025 3.8641555 128.0 +28.197348 13.959317 3.8584847 128.0 +28.40383 13.845189 3.8748941 128.0 +28.724525 13.784019 3.9067473 128.0 +28.988983 13.69272 3.9309993 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.013781 13.728511 4.1566272 128.0 +31.016426 13.502692 4.1458888 128.0 +0 0 0 128.0 +30.857712 12.985534 4.1034179 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +32.540913 -0.41593677 3.9897592 128.0 +32.446434 -0.61386538 3.9786587 128.0 +32.074875 -0.80372721 3.9340158 128.0 +32.494999 -1.0138153 3.9857774 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +24.561899 -1.5212673 3.0253508 128.0 +25.415728 -1.7308002 3.1305633 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +25.318247 -2.1930132 3.1230826 128.0 +25.362633 -2.3537366 3.1302013 128.0 +18.475163 -1.8286426 2.2907932 128.0 +27.460333 -2.8888052 3.390337 128.0 +27.426304 -3.0554848 3.3884065 128.0 +19.673698 -2.3137565 2.4419758 128.0 +19.738928 -2.4443147 2.4517491 128.0 +27.400854 -3.5644073 3.3927503 128.0 +27.392239 -3.7343466 3.3944395 128.0 +27.377653 -3.9036133 3.3955252 128.0 +18.663633 -2.7777085 2.3277142 128.0 +27.318861 -4.2379155 3.3944395 128.0 +19.038763 -3.0728302 2.3782692 128.0 +19.942759 -3.3444724 2.4920485 128.0 +18.62603 -3.2411997 2.3321784 128.0 +18.855885 -3.4005442 2.3630664 128.0 +19.123508 -3.5701194 2.3987808 128.0 +18.828329 -3.6346905 2.3649969 128.0 +18.792044 -3.7474318 2.3633077 128.0 +18.070581 -3.7189479 2.2766764 128.0 +18.136761 -3.8487208 2.2877767 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +18.117002 -4.1944494 2.2945335 128.0 +38.170864 -9.0857782 4.8033466 128.0 +36.456802 -8.9144487 4.5959382 128.0 +31.852129 -7.9958 4.0258355 128.0 +31.259327 -8.051178 3.9576645 128.0 +0 -0 0 128.0 +31.604692 -8.5550575 4.0138903 128.0 +0 -0 0 128.0 +7.9445739 -2.2545943 1.0380154 128.0 +7.9448895 -2.3074539 1.0398252 128.0 +25.744463 -7.651371 3.2986381 128.0 +31.690216 -9.6307755 4.0599813 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9638577 -2.5803814 1.0517702 128.0 +7.9478745 -2.6291981 1.0517702 128.0 +0 -0 0 128.0 +24.707998 -8.5139446 3.2106793 128.0 +24.713358 -8.6858006 3.2181599 128.0 +20.452555 -7.3293829 2.674964 128.0 +20.392281 -7.4492888 2.6730335 128.0 +0 -0 0 128.0 +20.272413 -7.6887622 2.6695344 128.0 +24.904766 -9.6211805 3.2793329 128.0 +0 -0 0 128.0 +19.634439 -7.8631358 2.6049831 128.0 +19.530668 -7.9609771 2.5977437 128.0 +19.45578 -8.070014 2.5943654 128.0 +19.351936 -8.1664667 2.5872464 128.0 +20.107836 -8.631238 2.693907 128.0 +19.679674 -8.5908089 2.6441965 128.0 +19.526787 -8.6670933 2.6309242 128.0 +19.575483 -8.8328867 2.6445584 128.0 +19.665285 -9.0190535 2.6638634 128.0 +3.6715147 -1.7101536 0.52655196 128.0 +3.6681294 -1.7360488 0.5275172 128.0 +3.6636701 -1.7615362 0.5283618 128.0 +3.6715217 -1.7931368 0.53089559 128.0 +3.7449222 -1.8575605 0.54235798 128.0 +3.6217606 -1.8242059 0.52715522 128.0 +3.5504079 -1.8156419 0.51895058 128.0 +3.4837036 -1.8085604 0.5113492 128.0 +3.5375187 -1.8641677 0.5202778 128.0 +3.5548964 -1.9012966 0.52425945 128.0 +3.5309505 -1.9164401 0.52257025 128.0 +3.6278012 -1.9979615 0.53765237 128.0 +3.8849401 -2.170851 0.5751766 128.0 +3.8430526 -2.1784854 0.57119489 128.0 +3.7762661 -2.1713314 0.56371421 128.0 +3.7225747 -2.1709459 0.5580433 128.0 +3.7219985 -2.2013299 0.5598532 128.0 +4.86518 -2.9183185 0.72382551 128.0 +4.7810354 -2.907866 0.7144143 128.0 +13.950861 -8.6053934 2.0265551 128.0 +4.7239504 -2.9531579 0.71139789 128.0 +4.6831045 -2.9677362 0.70814019 128.0 +4.7332864 -3.0404232 0.71803403 128.0 +4.6305289 -3.0146875 0.70584768 128.0 +4.4943023 -2.965385 0.68871444 128.0 +3.8109963 -2.5480247 0.59146523 128.0 +4.4279928 -3.0002611 0.68437082 128.0 +3.9209998 -2.6918335 0.61233878 128.0 +3.9060388 -2.7169757 0.61258012 128.0 +3.8730683 -2.7294507 0.61016697 128.0 +3.8425157 -2.7433548 0.60811585 128.0 +3.3615761 -2.4310913 0.53849697 128.0 +3.3441939 -2.4499111 0.53813499 128.0 +3.3179405 -2.4620996 0.5364458 128.0 +3.4495444 -2.5927942 0.55876726 128.0 +4.3527751 -3.3140783 0.6992116 128.0 +4.2781253 -3.2988858 0.69088626 128.0 +4.3188186 -3.3727446 0.70029747 128.0 +4.1758199 -3.3024764 0.6813544 128.0 +4.4281702 -3.5465291 0.72382551 128.0 +3.6824772 -2.9863272 0.61052895 128.0 +4.5614972 -3.7461734 0.75169724 128.0 +3.6577635 -3.0414498 0.61245948 128.0 +3.703567 -3.1181972 0.62271529 128.0 +4.3973584 -3.7489774 0.73661512 128.0 +3.7852347 -3.2672207 0.64202034 128.0 +2.5073633 -2.1906981 0.43895525 128.0 +2.4886711 -2.201436 0.43811065 128.0 +2.5024688 -2.2411783 0.44257495 128.0 +3.9788682 -3.6086092 0.68714595 128.0 +2.4718535 -2.2690325 0.4420923 128.0 +2.4586112 -2.284833 0.44221297 128.0 +2.4705653 -2.3243725 0.4465566 128.0 +2.424639 -2.3093526 0.4412477 128.0 +2.3461306 -2.2621503 0.4303886 128.0 +3.5280545 -3.4446292 0.63357437 128.0 +2.3407812 -2.3131068 0.43424964 128.0 +2.3510985 -2.3520072 0.4384726 128.0 +3.632086 -3.6792798 0.66265261 128.0 +3.1971745 -3.2785232 0.59086192 128.0 +3.1873255 -3.3088057 0.59267175 128.0 +4.2827477 -4.5015264 0.78946275 128.0 +2.8705294 -3.0539234 0.5436852 128.0 +2.8719938 -3.0933094 0.54730487 128.0 +2.9005833 -3.1628311 0.55587149 128.0 +3.3828092 -3.7347031 0.64672595 128.0 +2.0350592 -2.273958 0.40517136 128.0 +2.015811 -2.2804499 0.40420613 128.0 +1.9900336 -2.2793109 0.40203431 128.0 +1.9721227 -2.2869666 0.40131035 128.0 +1.9548361 -2.2952442 0.4007071 128.0 +3.5304739 -4.1986508 0.70102143 128.0 +3.4019308 -4.0964937 0.68147504 128.0 +2.6039016 -3.174547 0.53330874 128.0 +2.5762539 -3.1804342 0.53174019 128.0 +2.5951228 -3.2442551 0.53922087 128.0 +2.5942357 -3.2842712 0.54296124 128.0 +2.6869423 -3.4449675 0.5652827 128.0 +2.6239746 -3.4071107 0.55695742 128.0 +2.5916071 -3.4081302 0.55466497 128.0 +3.2379375 -4.3132715 0.68980038 128.0 +2.3687699 -3.1955919 0.517744 128.0 +2.3497036 -3.2108676 0.51786464 128.0 +2.6460648 -3.663065 0.58350188 128.0 +2.6004937 -3.6468956 0.57867563 128.0 +2.5814948 -3.667655 0.57939953 128.0 +1.7368686 -2.4994464 0.40420613 128.0 +2.2259755 -3.246222 0.51267642 128.0 +1.3440335 -1.9852556 0.32565865 128.0 +1.3373375 -2.0017221 0.32686523 128.0 +1.328306 -2.0148644 0.32758915 128.0 +1.3272766 -2.0404572 0.33012295 128.0 +1.3158032 -2.0502341 0.33036426 128.0 +1.283565 -2.0272274 0.32589996 128.0 +1.322073 -2.1167593 0.33760366 128.0 +2.3127112 -3.7556455 0.57035029 128.0 +1.6926237 -2.7862427 0.43050927 128.0 +1.6092111 -2.6858497 0.41482392 128.0 +1.3020242 -2.2032778 0.34532568 128.0 +1.2749971 -2.1880612 0.34206796 128.0 +1.268465 -2.2078969 0.34375715 128.0 +1.2558714 -2.2173665 0.34399846 128.0 +1.2388577 -2.2189617 0.34315386 128.0 +1.2218717 -2.220432 0.34230927 128.0 +1.1571578 -2.1336198 0.32927835 128.0 +1.6694865 -3.1250041 0.46489641 128.0 +1.0398555 -1.974578 0.305509 128.0 +1.0245233 -1.9747515 0.3046644 128.0 +1.0047154 -1.9659694 0.30261326 128.0 +0.99976707 -1.9862883 0.30454376 128.0 +1.0443712 -2.1071515 0.32010844 128.0 +1.5107099 -3.0968857 0.45307207 128.0 +1.0562254 -2.1985688 0.33072624 128.0 +0 -0 0 128.0 +1.0572007 -2.2716782 0.33881024 128.0 +1.4057637 -3.0707378 0.44474676 128.0 +1.4471831 -3.2132852 0.46260393 128.0 +1.0682431 -2.4105761 0.35473689 128.0 +1.0367912 -2.3788569 0.34966934 128.0 +1.0815489 -2.5238907 0.36800915 128.0 +1.0156062 -2.4106157 0.35220313 128.0 +1.0023133 -2.4204712 0.35268575 128.0 +0.98557395 -2.4219775 0.35208246 128.0 +0.97363919 -2.4353547 0.35304773 128.0 +1.3058934 -3.326633 0.46863675 128.0 +1.2843866 -3.331804 0.4682748 128.0 +1.5345937 -4.0555286 0.56130105 128.0 +1.5055362 -4.0537004 0.5598532 128.0 +1.1151729 -3.0591893 0.43002665 128.0 +0 -0 0 128.0 +1.1710782 -3.3396542 0.46441379 128.0 +1.1425039 -3.3233051 0.46139738 128.0 +1.0714262 -3.1797192 0.4420923 128.0 +1.0217407 -3.0947857 0.4303886 128.0 +0.97100329 -3.002753 0.41784033 128.0 +0.93370563 -2.9490247 0.41023895 128.0 +0.78030342 -2.5175211 0.35461625 128.0 +0.74930865 -2.4709558 0.34810078 128.0 +0.71835166 -2.4222033 0.34134403 128.0 +0.71423841 -2.4637544 0.34604964 128.0 +0.6969468 -2.4604485 0.34508437 128.0 +0.67760873 -2.4493685 0.34315386 128.0 +0 -0 0 128.0 +0.80883497 -3.0709713 0.42025346 128.0 +0.78948349 -3.0739532 0.42001215 128.0 +2.0637798 -8.2533464 1.0683002 128.0 +2.000422 -8.213769 1.0617847 128.0 +0.549236 -2.3132668 0.32324553 128.0 +0.53882122 -2.3330381 0.3252967 128.0 +0 -0 0 128.0 +0.74417675 -3.4152107 0.4591049 128.0 +0.48819882 -2.3066235 0.3208324 128.0 +0.47722211 -2.3251359 0.32276291 128.0 +0.4619807 -2.3231516 0.32215962 128.0 +0.44472292 -2.3103442 0.32022911 128.0 +0.47383824 -2.546299 0.34906605 128.0 +0.46766517 -2.6019225 0.35558149 128.0 +0.4873881 -2.8111374 0.38104007 128.0 +0.47894153 -2.8669515 0.38755551 128.0 +0.46558464 -2.8963008 0.39081323 128.0 +1.337751 -8.6759396 1.1012394 128.0 +1.3033572 -8.8116474 1.1169249 128.0 +1.1570457 -8.1678162 1.0369295 128.0 +1.1079717 -8.1826315 1.0378947 128.0 +0 -0 0 128.0 +0.30277205 -2.456269 0.33506986 128.0 +0.28493664 -2.4344161 0.33217412 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.22048163 -2.3902597 0.32602063 128.0 +0.20403388 -2.3707969 0.32348683 128.0 +0.1898759 -2.3769522 0.32409012 128.0 +0.17521514 -2.3770826 0.32396945 128.0 +0.16135685 -2.389008 0.3252967 128.0 +0.23876226 -3.9020042 0.50941873 128.0 +0.21318798 -3.8736596 0.505799 128.0 +0.18989733 -3.88481 0.50700557 128.0 +0.11812375 -2.7562397 0.36957768 128.0 +0.14285839 -3.9047046 0.50917739 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.015123528 -2.4956598 0.33760366 128.0 +-0.00018604747 -2.4887569 0.33675906 128.0 +-0.015251162 -2.457936 0.33301872 128.0 +-0.031655706 -2.561028 0.34556702 128.0 +-0.047087081 -2.5458977 0.34375715 128.0 +-0.061512176 -2.4979265 0.33796564 128.0 +-0.076590069 -2.4895644 0.33700037 128.0 +-0.09138228 -2.4761517 0.33543184 128.0 +-0.10618545 -2.4666185 0.33434594 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6447259 -3.5311546 0.50772953 128.0 +-1.6574384 -3.5021563 0.50519574 128.0 +-1.6784656 -3.4910259 0.50507504 128.0 +-1.676316 -3.4325001 0.49855962 128.0 +-1.6792501 -3.3856936 0.49361268 128.0 +-1.6865884 -3.3487325 0.48999298 128.0 +-1.695798 -3.3162284 0.48697656 128.0 +-1.7151988 -3.3039989 0.48673525 128.0 +-1.7743357 -3.367171 0.49687043 128.0 +-1.8296268 -3.4209871 0.505799 128.0 +-1.8865913 -3.4759936 0.51496893 128.0 +-1.886323 -3.4252288 0.50953937 128.0 +-1.9092422 -3.4170558 0.51002198 128.0 +-1.9438864 -3.4294536 0.51340038 128.0 +-1.995091 -3.4699488 0.52076042 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.1757789 -8.3917398 1.2326345 128.0 +-5.1418962 -8.2234783 1.2130882 128.0 +-5.1736541 -8.1624298 1.2088652 128.0 +-5.2413507 -8.1580896 1.2128469 128.0 +-5.2772226 -8.1041489 1.2097098 128.0 +-5.2661448 -7.9796562 1.1963168 128.0 +-5.2200704 -7.8052773 1.1755639 128.0 +-5.2338867 -7.7229776 1.1682039 128.0 +-5.2671242 -7.6702609 1.1651875 128.0 +-5.3044491 -7.6239467 1.1631364 128.0 +-5.3436923 -7.580709 1.1615678 128.0 +-5.4414601 -7.6196699 1.1723062 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.4585447 -8.5649128 1.5851932 128.0 +-9.5582781 -8.5490656 1.5929152 128.0 +-9.5726089 -8.4567404 1.5867617 128.0 +-9.6018772 -8.3782673 1.583142 128.0 +-9.9200754 -8.5492306 1.6259751 128.0 +-10.502296 -8.9391994 1.7105554 128.0 +-10.360888 -8.7098017 1.6794261 128.0 +-9.9054241 -8.2237949 1.5990688 128.0 +-10.36335 -8.4970407 1.6631374 128.0 +-10.674534 -8.6431646 1.703678 128.0 +-10.878564 -8.6983786 1.7272061 128.0 +-10.918486 -8.6210089 1.7251549 128.0 +-10.690109 -8.3347511 1.6818392 128.0 +-10.40043 -8.0068216 1.6295948 128.0 +-10.453315 -7.945858 1.6301981 128.0 +-10.663853 -8.0031109 1.6548121 128.0 +-10.669684 -7.9056182 1.6482966 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.56966 -8.977457 2.3248184 128.0 +-16.642824 -8.8854351 2.327352 128.0 +-16.708452 -8.7891569 2.3289206 128.0 +-6.8321691 -3.5413611 0.96960306 128.0 +-16.441038 -8.3925667 2.2778828 128.0 +-6.8591475 -3.449228 0.96743125 128.0 +-17.111282 -8.4715881 2.3549826 128.0 +-6.9759154 -3.4013298 0.97756642 128.0 +-6.9805441 -3.3507323 0.97539461 128.0 +-7.0270033 -3.3201318 0.97889364 128.0 +-7.0895524 -3.2966185 0.98456448 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.5593343 -3.3471715 1.0391014 128.0 +-7.0727496 -3.0800374 0.97189558 128.0 +-7.0887775 -3.0354099 0.9715336 128.0 +-7.1228237 -2.9984021 0.97358477 128.0 +-7.551137 -3.124227 1.0275183 128.0 +-7.4901557 -3.0453188 1.0170212 128.0 +-7.3187838 -2.9234738 0.99216586 128.0 +-7.4262285 -2.9136682 1.0038695 128.0 +-7.1493802 -2.7545969 0.96550077 128.0 +-7.0965071 -2.6843469 0.95645154 128.0 +-7.0895772 -2.6321189 0.95343512 128.0 +-7.0962663 -2.5851722 0.95222855 128.0 +-7.0456209 -2.5178733 0.94366193 128.0 +-22.45948 -7.8685021 2.9267743 128.0 +-22.256659 -7.6444588 2.8945589 128.0 +-0 -0 0 128.0 +-28.399431 -9.3659611 3.6689332 128.0 +-27.728039 -8.9563084 3.575907 128.0 +-26.41004 -8.3520432 3.4009547 128.0 +-26.457945 -8.1889563 3.4005928 128.0 +-28.206484 -8.5407696 3.6163268 128.0 +-28.138424 -8.3320293 3.601124 128.0 +-29.314226 -8.4848566 3.743499 128.0 +-28.674141 -8.1092701 3.6561437 128.0 +-13.068814 -3.6101706 1.6822011 128.0 +-13.07826 -3.5265553 1.6806326 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.760542 -3.1901612 1.6329732 128.0 +-12.776982 -3.1110997 1.6326113 128.0 +-0 -0 0 128.0 +-13.096663 -3.0191624 1.667843 128.0 +-12.801085 -2.8684471 1.6287502 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-17.935087 -3.6730568 2.2594225 128.0 +-17.634985 -3.4990127 2.219485 128.0 +-17.654173 -3.3903663 2.2192438 128.0 +-13.512884 -2.5094683 1.7047639 128.0 +-17.728647 -3.1795986 2.2234669 128.0 +-18.018776 -3.1176205 2.2568886 128.0 +-18.107088 -3.0185859 2.2654552 128.0 +-17.975304 -2.8833802 2.2469947 128.0 +-13.426523 -2.0695989 1.6854589 128.0 +-13.476287 -1.992691 1.6900438 128.0 +-17.939819 -2.5399239 2.2364976 128.0 +-0 -0 0 128.0 +-18.876392 -2.4365711 2.3476224 128.0 +-23.61055 -2.9001913 2.9255676 128.0 +-19.913568 -2.3223197 2.4710541 128.0 +-19.881069 -2.1949713 2.4653833 128.0 +-19.791477 -2.0622485 2.4528351 128.0 +-23.406876 -2.2936633 2.8928697 128.0 +-24.81534 -2.2779737 3.0631163 128.0 +-18.57193 -1.5902905 2.2998424 128.0 +-18.567484 -1.4752055 2.2981532 128.0 +-19.936506 -1.4608473 2.4639354 128.0 +-19.970848 -1.3402183 2.4670725 128.0 +-23.90547 -1.4567512 2.9452348 128.0 +-23.979378 -1.3136232 2.953198 128.0 +-0 -0 0 128.0 +-22.821383 -0.96951759 2.8105819 128.0 +-22.792181 -0.82821006 2.8063591 128.0 +-22.750198 -0.68693852 2.800688 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.173691 8.8140945 5.5056729 128.0 +-49.334682 9.1557369 5.5297327 128.0 +-49.331268 9.4685822 5.5357203 128.0 +-49.405827 9.7975845 5.5506349 128.0 +-49.401264 10.11211 5.5569491 128.0 +-49.422905 10.432901 5.5664206 128.0 +-49.487148 10.764058 5.5808997 128.0 +-49.526875 11.091397 5.5928755 128.0 +-49.582844 11.42387 5.6069193 128.0 +-49.610481 11.751259 5.6180234 128.0 +-49.627266 12.077301 5.6281481 128.0 +-49.665066 12.409774 5.6408854 128.0 +-49.748791 12.755508 5.6590662 128.0 +-49.705158 13.069875 5.6630945 128.0 +-49.822708 13.42816 5.6856298 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.907993 14.441598 5.7244954 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-35.638706 13.72368 4.216907 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.648773 15.334766 4.1841378 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-57.558662 26.751484 6.9857183 128.0 +-57.432983 27.122831 6.9905081 128.0 +-57.145386 27.417103 6.9759202 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-56.904232 29.040356 7.0311155 128.0 +-56.815884 29.436068 7.0423288 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.56723 13.639976 2.8291807 128.0 +-0 0 0 128.0 +-20.790556 13.50879 2.7498169 128.0 +-21.57984 14.210683 2.8642359 128.0 +-0 0 0 128.0 +-20.19006 13.653643 2.7037661 128.0 +-0 0 0 128.0 +-21.498138 14.925913 2.9007063 128.0 +-27.757793 19.52528 3.7511744 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-20.222666 14.788885 2.7782311 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-41.104141 31.636026 5.715024 128.0 +-40.923363 31.89864 5.7169833 128.0 +-40.637917 32.078926 5.7045727 128.0 +-0 0 0 128.0 +-38.202206 30.924664 5.417273 128.0 +-0 0 0 128.0 +-36.947075 30.666742 5.293056 128.0 +-21.728539 18.261623 3.142935 128.0 +-0 0 0 128.0 +-22.451698 19.344439 3.2801075 128.0 +-37.653824 32.846966 5.5067616 128.0 +-37.318203 32.959599 5.4872746 128.0 +-36.681026 32.799675 5.4234786 128.0 +-36.532875 33.072826 5.4314256 128.0 +-0 0 0 128.0 +-15.677733 14.547215 2.37673 128.0 +-15.359224 14.428074 2.3423281 128.0 +-14.681884 13.962385 2.2533839 128.0 +-15.27411 14.705094 2.3564808 128.0 +-15.077523 14.69516 2.3402596 128.0 +-0 0 0 128.0 +-14.6513 14.634612 2.3023739 128.0 +-14.557734 14.720701 2.3018296 128.0 +-14.069798 14.403018 2.2395577 128.0 +-14.230346 14.747307 2.2788587 128.0 +-13.721211 14.395426 2.21245 128.0 +-13.665334 14.514086 2.2176754 128.0 +-31.642708 34.023155 5.1230059 128.0 +-14.124402 15.375395 2.3209903 128.0 +-14.037143 15.469869 2.3221877 128.0 +-15.778446 17.604689 2.6235313 128.0 +-13.355353 15.086461 2.241082 128.0 +-13.24094 15.143429 2.2374892 128.0 +-13.164665 15.24395 2.24032 128.0 +-0 0 0 128.0 +-17.006336 20.187796 2.9253101 128.0 +-27.300606 32.814018 4.7093115 128.0 +-16.736494 20.369625 2.9217176 128.0 +-0 0 0 128.0 +-15.059933 18.794724 2.672086 128.0 +-14.960365 18.907043 2.6749165 128.0 +-15.035639 19.243654 2.7089918 128.0 +-14.923351 19.34342 2.7100804 128.0 +-24.417732 32.054237 4.4474869 128.0 +-24.693823 32.832649 4.5337095 128.0 +-24.49605 32.989136 4.5344715 128.0 +-24.365459 33.237427 4.5478621 128.0 +-24.138914 33.355705 4.543725 128.0 +-0 0 0 128.0 +-22.338001 31.678562 4.279614 128.0 +-23.637268 33.961628 4.5660429 128.0 +-23.450953 34.138802 4.5703974 128.0 +-23.304073 34.375027 4.5826998 128.0 +-0 0 0 128.0 +-9.4657326 14.338724 1.9161143 128.0 +-9.4160957 14.455672 1.9238439 128.0 +-9.2772369 14.435406 1.9137193 128.0 +-9.2390585 14.571813 1.9240617 128.0 +-19.876472 31.777735 4.1393938 128.0 +-8.6529293 14.025068 1.8392543 128.0 +-9.1630621 15.057845 1.9648867 128.0 +-8.4730072 14.118264 1.8377302 128.0 +-9.0464478 15.285498 1.9796926 128.0 +-8.9900656 15.405108 1.9878576 128.0 +-8.3891878 14.580286 1.8767045 128.0 +-8.2608185 14.563181 1.868104 128.0 +-8.7874632 15.715472 2.0063651 128.0 +-17.765429 32.233513 4.0652552 128.0 +-8.6357021 15.898993 2.0159452 128.0 +-7.7775559 14.531032 1.8394721 128.0 +-17.079142 32.38448 4.0441351 128.0 +-7.6994829 14.819441 1.8634228 128.0 +-9.6863127 18.926279 2.3629041 128.0 +-8.7842579 17.42664 2.1717339 128.0 +-7.5429749 15.195494 1.8923813 128.0 +-9.6108818 19.663111 2.4313812 128.0 +-9.8348885 20.438301 2.5184748 128.0 +-9.29737 19.628645 2.4130917 128.0 +-7.7293577 16.580614 2.0379364 128.0 +-7.6797009 16.741571 2.0516536 128.0 +-17.059626 37.798691 4.5761676 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-16.056255 37.396572 4.4915781 128.0 +-14.200938 33.643406 4.033793 128.0 +-0 0 0 128.0 +-13.796021 33.837234 4.0364056 128.0 +-13.564851 33.863113 4.0295467 128.0 +-13.385934 34.019711 4.0382562 128.0 +-0 0 0 128.0 +-12.974152 34.199074 4.0403247 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.664577 14.695354 1.7229844 128.0 +-4.4061985 14.182604 1.6609304 128.0 +-4.2404523 13.950678 1.6313186 128.0 +-0 0 0 128.0 +-4.0556202 13.955846 1.6260929 128.0 +-4.2881856 15.101185 1.7536849 128.0 +-3.8941514 14.040963 1.6302299 128.0 +-3.7980516 14.028132 1.6260929 128.0 +-3.724601 14.099227 1.6315362 128.0 +-3.6558766 14.191123 1.6393747 128.0 +-3.6801007 14.656785 1.6894535 128.0 +-0 0 0 128.0 +-9.303525 39.074623 4.4334431 128.0 +-3.2856467 14.186506 1.62925 128.0 +-3.2371895 14.37805 1.6485195 128.0 +-3.0813582 14.088834 1.6138998 128.0 +-3.0398595 14.319454 1.6376328 128.0 +-2.9918361 14.53159 1.6592973 128.0 +-2.9887812 14.981528 1.7075254 128.0 +-2.8687105 14.854158 1.6913042 128.0 +-3.6908813 19.761164 2.236074 128.0 +-3.4361041 19.043877 2.1537707 128.0 +-3.3203819 19.071457 2.1545327 128.0 +-0 0 0 128.0 +-3.1623304 19.582792 2.2068977 128.0 +-4.935914 31.8029 3.5591333 128.0 +-4.7305779 31.764748 3.5516214 128.0 +-3.940701 27.623581 3.0903525 128.0 +-4.3322234 31.760326 3.5449805 128.0 +-4.1397023 31.805038 3.547049 128.0 +-4.0102501 32.360584 3.6056194 128.0 +-3.8610027 32.804157 3.6518877 128.0 +-3.5970829 32.266083 3.5900514 128.0 +-3.432966 32.609829 3.6255419 128.0 +-0 0 0 128.0 +-2.9891362 32.182316 3.5741568 128.0 +-2.8034632 32.33672 3.5891805 128.0 +-2.604996 32.353313 3.5891805 128.0 +-2.4059148 32.361748 3.5884185 128.0 +-0 0 0 128.0 +-2.1559336 34.764042 3.8490458 128.0 +-1.9382043 34.698208 3.8404453 128.0 +-1.7269912 34.744198 3.8442554 128.0 +-1.5126907 34.729309 3.8415339 128.0 +-1.3197895 35.278328 3.9007576 128.0 +-1.1254904 35.995171 3.9784884 128.0 +-0.90648061 36.075928 3.9866533 128.0 +-0.68901455 36.286545 4.0091887 128.0 +-0.43817535 34.099369 3.7692463 128.0 +-0.22248633 33.142174 3.6641898 128.0 +-0.019068202 33.045498 3.6535208 128.0 +0.18345843 33.002251 3.6488395 128.0 +0.38596457 33.001495 3.6489484 128.0 +0.5896374 33.065098 3.6562424 128.0 +0.79403377 33.124458 3.6632099 128.0 +0.99101609 32.911301 3.6404567 128.0 +1.19949 33.0854 3.6602705 128.0 +1.4077799 33.202557 3.6739876 128.0 +0 0 0 128.0 +2.2460692 41.062817 4.5382819 128.0 +2.5032361 41.134586 4.5477533 128.0 +2.7641592 41.246399 4.5617971 128.0 +0 0 0 128.0 +2.1728153 27.379786 3.0424509 128.0 +2.3638132 27.635338 3.0720627 128.0 +0 0 0 128.0 +3.3655202 34.374214 3.8170388 128.0 +2.0785728 19.964161 2.2326992 128.0 +2.2037561 19.975733 2.2354209 128.0 +3.8043902 32.647648 3.6341424 128.0 +2.5269549 20.584562 2.3057489 128.0 +4.1125541 31.883734 3.5552139 128.0 +4.3011851 31.806675 3.5495529 128.0 +4.5312161 32.026733 3.5768785 128.0 +4.7073045 31.860653 3.5616372 128.0 +0 0 0 128.0 +5.069294 31.621851 3.5418234 128.0 +5.186286 31.128315 3.4905469 128.0 +2.4631982 14.243241 1.6174924 128.0 +5.5726233 31.088747 3.4934864 128.0 +2.6503141 14.27938 1.6250043 128.0 +2.8862779 15.03603 1.7112268 128.0 +6.2804308 31.669306 3.5703466 128.0 +3.008981 14.698554 1.677587 128.0 +3.0387526 14.393863 1.6455802 128.0 +0 0 0 128.0 +8.6171751 38.478222 4.3528814 128.0 +8.8408365 38.371346 4.3468938 128.0 +3.5400052 14.943693 1.7163436 128.0 +9.1848259 37.741295 4.2884326 128.0 +3.8744485 15.504775 1.784712 128.0 +3.482909 13.582811 1.5701354 128.0 +3.5328183 13.434283 1.5557649 128.0 +10.146045 37.644653 4.304327 128.0 +10.343237 37.459995 4.2905006 128.0 +10.789514 38.162033 4.3777032 128.0 +4.0946469 14.149461 1.6476486 128.0 +11.392443 38.484276 4.4299593 128.0 +4.3742456 14.449223 1.6878204 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +8.0682592 18.851473 2.2801652 128.0 +0 0 0 128.0 +8.3170919 18.791948 2.2850642 128.0 +0 0 0 128.0 +24.775953 54.175301 6.5586333 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +33.505817 50.881725 6.7065835 128.0 +0 0 0 128.0 +0 0 0 128.0 +33.736034 49.23381 6.5708265 128.0 +34.077744 49.083858 6.5785561 128.0 +0 0 0 128.0 +0 0 0 128.0 +14.9857 20.757931 2.8383255 128.0 +14.545374 19.889671 2.7330513 128.0 +29.440413 39.744041 5.4512396 128.0 +29.758295 39.662045 5.464848 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.902716 38.919674 5.5458446 128.0 +32.140285 38.722424 5.5457358 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +36.360596 41.681709 6.0921388 128.0 +0 0 0 128.0 +0 0 0 128.0 +18.665415 20.617914 3.0803366 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +18.986423 19.721273 3.0325441 128.0 +0 0 0 128.0 +0 0 0 128.0 +38.97448 39.019859 6.0743933 128.0 +39.519913 39.083344 6.1216416 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +43.907558 37.919525 6.3881478 128.0 +44.05999 37.581665 6.3767166 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +23.905628 15.993129 3.1844134 128.0 +24.02405 15.859838 3.187135 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +23.440912 14.462457 3.0509427 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +25.851875 14.455627 3.2782567 128.0 +24.625511 13.572187 3.1138678 128.0 +0 0 0 128.0 +28.17663 15.081618 3.5345292 128.0 +28.186867 14.865319 3.5244048 128.0 +28.177872 14.640298 3.5121026 128.0 +28.183992 14.424554 3.5018692 128.0 +28.147699 14.188704 3.4866278 128.0 +28.183477 13.990531 3.4804225 128.0 +28.325054 13.844839 3.4872811 128.0 +28.738207 13.828973 3.5272353 128.0 +28.930323 13.703444 3.5402992 128.0 +30.741903 14.331277 3.7491059 128.0 +30.824741 14.140306 3.7485616 128.0 +0 0 0 128.0 +30.916901 13.725881 3.7390902 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.029688 13.09765 3.7230866 128.0 +31.513462 13.074626 3.7709882 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +32.70829 -0.58327883 3.6171591 128.0 +32.466583 -0.77827156 3.59114 128.0 +32.109459 -0.96688098 3.5526011 128.0 +33.016853 -1.1970057 3.6527586 128.0 +0 -0 0 128.0 +35.59211 -1.7279104 3.93701 128.0 +0 -0 0 128.0 +18.598263 -1.1320111 2.0750599 128.0 +18.599892 -1.2467047 2.0760398 128.0 +25.432592 -1.8613571 2.8272212 128.0 +25.434566 -2.0184743 2.8287454 128.0 +24.81159 -2.1223223 2.7616832 128.0 +25.036667 -2.2964013 2.7879202 128.0 +0 -0 0 128.0 +27.477398 -2.8606648 3.0599785 128.0 +27.436604 -3.0267024 3.0574746 128.0 +18.611103 -2.1689007 2.0864909 128.0 +27.405289 -3.3641326 3.0583456 128.0 +19.366869 -2.4982116 2.1730402 128.0 +19.372849 -2.6199279 2.1754353 128.0 +25.299345 -3.579494 2.8327734 128.0 +18.38044 -2.7158179 2.0692899 128.0 +27.366814 -4.2151546 3.066946 128.0 +18.287819 -2.9318869 2.0628669 128.0 +20.294304 -3.3813727 2.287677 128.0 +19.009592 -3.2873466 2.1472387 128.0 +18.983192 -3.4028733 2.1465855 128.0 +19.108561 -3.5464942 2.1629155 128.0 +20.102705 -3.8587275 2.2762458 128.0 +18.208466 -3.611145 2.0674393 128.0 +18.194729 -3.7245963 2.068419 128.0 +18.193903 -3.840889 2.0709231 128.0 +18.192335 -3.9573116 2.073427 128.0 +37.428646 -8.3821344 4.2350874 128.0 +37.12756 -8.5542784 4.207109 128.0 +37.866585 -8.969573 4.2962708 128.0 +0 -0 0 128.0 +37.647579 -9.407073 4.2842956 128.0 +31.500662 -8.076869 3.5959301 128.0 +31.29669 -8.2295561 3.5785115 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9643154 -2.2520697 0.94088483 128.0 +7.9551215 -2.3022768 0.9414292 128.0 +0 -0 0 128.0 +25.779713 -7.8040252 2.9843161 128.0 +32.002747 -9.9025221 3.7032728 128.0 +0 -0 0 128.0 +7.9687304 -2.5736232 0.95155382 128.0 +7.9839435 -2.6327417 0.95514643 128.0 +0 -0 0 128.0 +24.935337 -8.5623159 2.9218266 128.0 +26.873146 -9.4124146 3.152842 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.259144 -7.5173793 2.4010074 128.0 +25.044046 -9.4679956 2.9666796 128.0 +20.149599 -7.7593517 2.3991566 128.0 +19.664797 -7.711555 2.3477714 128.0 +19.753744 -7.8866186 2.3638837 128.0 +0 -0 0 128.0 +19.547079 -8.0836086 2.3510375 128.0 +19.444885 -8.1814222 2.3448322 128.0 +20.009361 -8.563798 2.4180994 128.0 +0 -0 0 128.0 +19.555521 -8.6550217 2.3765123 128.0 +19.773098 -8.896801 2.4090636 128.0 +3.69098 -1.6884003 0.47896269 128.0 +19.644402 -9.1303988 2.4068861 128.0 +19.588009 -9.250762 2.4068861 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +5.1218171 -2.6539986 0.66621375 128.0 +5.1071959 -2.686301 0.66643149 128.0 +5.0669394 -2.7049494 0.66349202 128.0 +5.0790906 -2.7516127 0.66708463 128.0 +3.4409103 -1.8916698 0.46448341 128.0 +3.9275801 -2.190644 0.52697301 128.0 +3.9850113 -2.2548378 0.53590006 128.0 +3.7564168 -2.1560519 0.50879222 128.0 +4.8943543 -2.8491132 0.65467381 128.0 +4.8690758 -2.8745432 0.65369403 128.0 +4.7941999 -2.8701587 0.64639997 128.0 +4.7391081 -2.8768275 0.64160979 128.0 +4.6875033 -2.8850129 0.63725513 128.0 +4.6604357 -2.907933 0.63605762 128.0 +4.6618285 -2.9486945 0.63856155 128.0 +3.8486221 -2.4675987 0.53513801 128.0 +3.9401045 -2.5604908 0.54907298 128.0 +3.8354857 -2.5261221 0.53742421 128.0 +3.7934542 -2.5319517 0.53394049 128.0 +3.8824253 -2.6258996 0.54776657 128.0 +3.8006384 -2.6047213 0.5390572 128.0 +3.7870343 -2.6296933 0.53938383 128.0 +3.1756659 -2.2342446 0.45969325 128.0 +4.5203018 -3.2217011 0.64237189 128.0 +4.3126545 -3.1138074 0.61700588 128.0 +3.8168433 -2.791666 0.55233896 128.0 +3.7525139 -2.7801235 0.54591584 128.0 +4.2084908 -3.1580603 0.61069161 128.0 +4.1914086 -3.1856279 0.61101824 128.0 +4.1899014 -3.2252307 0.61352217 128.0 +4.174737 -3.2545455 0.61417538 128.0 +4.2350554 -3.3435388 0.62538862 128.0 +4.246295 -3.3949099 0.62985218 128.0 +4.0044093 -3.2420247 0.59871626 128.0 +3.9329326 -3.224313 0.5914222 128.0 +3.8480575 -3.1944199 0.58216852 128.0 +3.6602044 -3.0766289 0.55810893 128.0 +3.5693371 -3.0378292 0.54776657 128.0 +3.6131368 -3.1135275 0.55680251 128.0 +3.3699851 -2.9402554 0.52425134 128.0 +2.542733 -2.2462466 0.40602189 128.0 +2.5363126 -2.2684321 0.40711057 128.0 +2.5186613 -2.2806163 0.40656623 128.0 +4.01792 -3.6829698 0.63137633 128.0 +2.5072448 -2.3269033 0.40907016 128.0 +3.5123417 -3.2998269 0.56224585 128.0 +3.5107572 -3.3391266 0.56507641 128.0 +2.4331958 -2.343014 0.4043889 128.0 +2.298465 -2.2406466 0.38599038 128.0 +2.3059018 -2.2756522 0.38925639 128.0 +2.3305779 -2.3283951 0.39524406 128.0 +2.3043642 -2.330636 0.39339334 128.0 +2.2705703 -2.3248215 0.39034507 128.0 +2.8326366 -2.9359992 0.48124892 128.0 +2.9304798 -3.0749266 0.49964741 128.0 +2.9108758 -3.0921259 0.49953854 128.0 +2.937206 -3.1586981 0.5068326 128.0 +2.9735873 -3.2374203 0.51586854 128.0 +2.0578773 -2.2684226 0.36987808 128.0 +2.0399389 -2.2765653 0.36922488 128.0 +2.0213194 -2.2838295 0.36846283 128.0 +2.0000703 -2.2879574 0.36726528 128.0 +1.9742987 -2.2866447 0.36530569 128.0 +1.9370072 -2.2714889 0.36138648 128.0 +2.8568132 -3.3917646 0.52011436 128.0 +2.8531139 -3.429862 0.52305377 128.0 +1.8399649 -2.2399383 0.35191506 128.0 +1.8499875 -2.2805181 0.35605201 128.0 +3.8710866 -4.8315692 0.71248215 128.0 +3.2917712 -4.1606693 0.61548173 128.0 +1.837687 -2.3525658 0.36138648 128.0 +3.2277141 -4.1842232 0.61319554 128.0 +2.5845418 -3.3934283 0.501607 128.0 +2.7459135 -3.651525 0.53481138 128.0 +2.7199006 -3.6635165 0.53415823 128.0 +1.8369473 -2.5064392 0.37477711 128.0 +1.8471763 -2.5530963 0.37956724 128.0 +1.4015644 -1.9625921 0.29857028 128.0 +2.4028928 -3.4082694 0.4911558 128.0 +2.4131677 -3.467823 0.49714348 128.0 +2.3957841 -3.4883001 0.49790552 128.0 +2.7904644 -4.1167397 0.57912022 128.0 +2.3494804 -3.5124803 0.49725235 128.0 +1.606596 -2.4342756 0.35387465 128.0 +1.3279381 -2.0392871 0.30096537 128.0 +1.3218497 -2.0574317 0.30227175 128.0 +1.3001513 -2.0512319 0.30042103 128.0 +1.3160069 -2.1046803 0.30629984 128.0 +2.6361797 -4.2733684 0.58434582 128.0 +2.6099093 -4.289463 0.58434582 128.0 +1.7297647 -2.8828588 0.40264702 128.0 +2.2127838 -3.7394602 0.51031637 128.0 +0 -0 0 128.0 +1.2232703 -2.1267064 0.3031427 128.0 +0 -0 0 128.0 +1.1800995 -2.1111908 0.29933235 128.0 +1.1464906 -2.0809572 0.29465109 128.0 +1.1374962 -2.0949407 0.295522 128.0 +1.118522 -2.0904877 0.29410675 128.0 +0 -0 0 128.0 +1.06941 -2.0590694 0.28855455 128.0 +1.0431687 -2.0390458 0.28528854 128.0 +1.0342174 -2.0525093 0.28615946 128.0 +1.0631526 -2.1425123 0.29639295 128.0 +1.5402156 -3.1519198 0.41865045 128.0 +1.0372117 -2.1562932 0.29650182 128.0 +1.5056762 -3.1795669 0.41973913 128.0 +1.0824964 -2.3229232 0.31511804 128.0 +1.0806575 -2.3566272 0.31838405 128.0 +1.457528 -3.2302999 0.42256966 128.0 +1.0778756 -2.428766 0.3254604 128.0 +0 -0 0 128.0 +1.0503428 -2.4472909 0.32611361 128.0 +1.3546189 -3.2101481 0.41603765 128.0 +1.3448009 -3.2422717 0.41886818 128.0 +1.3361408 -3.2780766 0.42213419 128.0 +1.3237643 -3.3055916 0.42442039 128.0 +1.299089 -3.3025515 0.423114 128.0 +1.278442 -3.3095334 0.42300513 128.0 +1.5218604 -4.0125198 0.50443757 128.0 +1.4857638 -3.9910405 0.50084496 128.0 +0 -0 0 128.0 +1.1468567 -3.2004843 0.40678397 128.0 +1.1341208 -3.2271545 0.40907016 128.0 +1.1259595 -3.2678852 0.41298938 128.0 +0 -0 0 128.0 +1.0317321 -3.1181962 0.39415541 128.0 +0.97364455 -3.0043771 0.38032931 128.0 +0.9181971 -2.8937566 0.36693868 128.0 +0.8644402 -2.7835226 0.35365692 128.0 +0.80484396 -2.6489654 0.33765349 128.0 +0.94607788 -3.1836321 0.39818347 128.0 +0.74786294 -2.5746412 0.3280732 128.0 +0.89091629 -3.1385839 0.39176032 128.0 +0.83178771 -3.0003076 0.37543032 128.0 +2.2981727 -8.4889183 0.99760449 128.0 +0.66693252 -2.5259049 0.32056141 128.0 +0.78683758 -3.0555398 0.38000271 128.0 +0.77848482 -3.1017675 0.384684 128.0 +2.0827749 -8.5166903 0.99466509 128.0 +0.58609223 -2.4631827 0.31174317 128.0 +0.56782699 -2.4531748 0.31021905 128.0 +0.9639551 -4.2826977 0.5152154 128.0 +0.73756319 -3.3737595 0.41266277 128.0 +0.72283548 -3.4064207 0.41581991 128.0 +0.57521528 -2.7954578 0.34701604 128.0 +0.55785733 -2.7979598 0.34690717 128.0 +0.54482633 -2.8228025 0.34930226 128.0 +0.81661934 -4.3739057 0.52174741 128.0 +1.4867004 -8.2409906 0.95155382 128.0 +0.51085085 -2.9361608 0.36084214 128.0 +0.49414137 -2.9470828 0.36171308 128.0 +1.3788197 -8.539772 0.9818188 128.0 +1.2812643 -8.2573128 0.9495942 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1395372 -8.3563223 0.95808583 128.0 +1.0851628 -8.3394995 0.95547301 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.26870921 -2.4136572 0.30042103 128.0 +0.25555959 -2.431078 0.30216289 128.0 +0 -0 0 128.0 +0.35075349 -3.7801521 0.45022184 128.0 +0.20484301 -2.3670366 0.29465109 128.0 +0.19215053 -2.3910384 0.29715502 128.0 +0.1788763 -2.4110076 0.29922348 128.0 +0.16272672 -2.3922246 0.29704615 128.0 +0.15050687 -2.4328642 0.30140084 128.0 +0.13635258 -2.4476368 0.30292496 128.0 +0.12883446 -2.5993376 0.31947273 128.0 +0.11058958 -2.5474441 0.31370279 128.0 +0.096109055 -2.5788689 0.31707767 128.0 +0.079817437 -2.5645065 0.31544465 128.0 +0 -0 0 128.0 +0.050078202 -2.6567297 0.3254604 128.0 +0.031807121 -2.5039148 0.3086949 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +-0.014061082 -2.4633205 0.30423138 128.0 +-0.029140629 -2.4602058 0.30390477 128.0 +-0.043226041 -2.4033284 0.29769936 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6550375 -3.5036924 0.45882234 128.0 +-1.6730647 -3.4863014 0.4579514 128.0 +-1.6778764 -3.4420135 0.45381445 128.0 +-1.6725072 -3.3781996 0.44728243 128.0 +-1.6815971 -3.3447809 0.4444519 128.0 +-1.6948589 -3.3202331 0.44271004 128.0 +-1.7106267 -3.3009448 0.44162136 128.0 +-1.7535205 -3.3334973 0.44695583 128.0 +-1.8464936 -3.4586031 0.4638302 128.0 +-1.8686273 -3.4489563 0.46404794 128.0 +-1.886403 -3.4313276 0.46328586 128.0 +-1.9117789 -3.4275019 0.46426567 128.0 +-1.9401156 -3.4286852 0.46589866 128.0 +-4.8411069 -8.4354916 1.0996127 128.0 +-0 -0 0 128.0 +-4.9841776 -8.4430761 1.1082132 128.0 +-0 -0 0 128.0 +-5.0889592 -8.3838263 1.1085398 128.0 +-0 -0 0 128.0 +-5.13095 -8.2237558 1.0960201 128.0 +-5.1722813 -8.1778355 1.0941694 128.0 +-5.1762257 -8.0739746 1.0848068 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-5.2312651 -7.838418 1.0665172 128.0 +-5.2725801 -7.7962909 1.0652108 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.6962147 -8.7980089 1.4683448 128.0 +-9.7411327 -8.7303867 1.4670385 128.0 +-9.8548059 -8.7238245 1.4758567 128.0 +-10.066046 -8.8012581 1.4988276 128.0 +-10.314712 -8.907609 1.5270241 128.0 +-9.9857302 -8.5170832 1.4718286 128.0 +-0 -0 0 128.0 +-9.8174562 -8.1675653 1.433072 128.0 +-10.009475 -8.2239218 1.4532124 128.0 +-10.589272 -8.5920258 1.5278951 128.0 +-10.533966 -8.4404869 1.5127625 128.0 +-10.56607 -8.3602724 1.5100409 128.0 +-10.347713 -8.0847425 1.4725907 128.0 +-10.406569 -8.0283842 1.4738971 128.0 +-0 -0 0 128.0 +-10.412947 -7.8313608 1.4613774 128.0 +-11.048991 -8.2040882 1.5416123 128.0 +-0 -0 0 128.0 +-10.705117 -7.7467651 1.4816266 128.0 +-0 -0 0 128.0 +-10.815624 -7.6262708 1.483804 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.608984 -8.8898191 2.0975955 128.0 +-16.653545 -8.7826395 2.0963979 128.0 +-16.699183 -8.6761656 2.095418 128.0 +-16.449472 -8.4186459 2.0581856 128.0 +-16.325064 -8.2289581 2.0366299 128.0 +-16.528393 -8.2046595 2.0553551 128.0 +-6.96982 -3.4064045 0.88405633 128.0 +-6.9825282 -3.359695 0.88307655 128.0 +-6.9850445 -3.3082767 0.88089919 128.0 +-7.0989118 -3.3090374 0.89222133 128.0 +-7.1516089 -3.2803385 0.89614058 128.0 +-7.1951594 -3.2470276 0.89897108 128.0 +-7.0759406 -3.1411026 0.88231444 128.0 +-7.0868821 -3.0940461 0.88133466 128.0 +-7.17698 -3.0810943 0.8898263 128.0 +-7.4540086 -3.1460137 0.92052674 128.0 +-7.4373631 -3.0853605 0.91628093 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.629528 -2.947772 0.9302159 128.0 +-21.321993 -8.0887947 2.5319743 128.0 +-22.824463 -8.4989719 2.7018065 128.0 +-21.939705 -8.0165663 2.592613 128.0 +-22.295406 -7.9918199 2.6283214 128.0 +-22.416235 -7.8802538 2.6367042 128.0 +-7.014853 -2.41747 0.84704161 128.0 +-22.50654 -7.6029878 2.6361599 128.0 +-22.559374 -7.4669337 2.6369219 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-26.728428 -8.3042564 3.099715 128.0 +-28.244497 -8.5856304 3.2674789 128.0 +-28.297598 -8.4124479 3.2675877 128.0 +-0 -0 0 128.0 +-28.622461 -8.1281052 3.2930624 128.0 +-29.21492 -8.1029749 3.35479 128.0 +-13.031208 -3.5281098 1.5129802 128.0 +-0 -0 0 128.0 +-33.868992 -8.7258024 3.8648314 128.0 +-12.775781 -3.2077558 1.4770542 128.0 +-12.801016 -3.1307218 1.4777074 128.0 +-12.83449 -3.0555711 1.4793404 128.0 +-12.914976 -2.9911189 1.4863079 128.0 +-0 -0 0 128.0 +-18.333494 -4.0098276 2.089757 128.0 +-34.431213 -7.3099308 3.8893263 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-25.295584 -4.8854961 2.855962 128.0 +-17.893822 -3.3420711 2.0280294 128.0 +-17.985403 -3.2451003 2.0359766 128.0 +-18.167543 -3.1629896 2.0540485 128.0 +-18.122887 -3.0407629 2.0469723 128.0 +-19.576904 -3.1613796 2.2062445 128.0 +-19.528154 -3.030678 2.1987326 128.0 +-17.971279 -2.6762056 2.024328 128.0 +-18.832695 -2.6864908 2.1178446 128.0 +-18.833067 -2.5687351 2.1161027 128.0 +-23.69437 -3.083926 2.6512923 128.0 +-23.818403 -2.9515643 2.662941 128.0 +-19.646217 -2.3121715 2.2009101 128.0 +-19.697577 -2.1957667 2.2050469 128.0 +-23.499952 -2.4738216 2.6223338 128.0 +-18.485535 -1.8312622 2.0688546 128.0 +-18.616188 -1.7289281 2.0820274 128.0 +-19.936666 -1.7282758 2.2260582 128.0 +-19.937979 -1.605196 2.2250786 128.0 +-19.986115 -1.4857033 2.2293243 128.0 +-23.639547 -1.6115731 2.62941 128.0 +-23.014015 -1.4271072 2.5597353 128.0 +-22.887356 -1.2783275 2.5449293 128.0 +-22.882856 -1.137277 2.543623 128.0 +-22.843719 -0.99485862 2.538615 128.0 +-0 -0 0 128.0 +-22.813471 -0.71318197 2.5341516 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.16497 8.8685169 4.8715057 128.0 +-49.35228 9.2153358 4.8954048 128.0 +-49.32901 9.5245867 4.8987775 128.0 +-49.394581 9.8520088 4.9111123 128.0 +-49.466763 10.182399 4.9243145 128.0 +-49.421852 10.489655 4.9261456 128.0 +-49.50922 10.826091 4.9412751 128.0 +-49.536053 11.150875 4.950623 128.0 +-49.625729 11.491442 4.9664268 128.0 +-49.627872 11.813242 4.9737511 128.0 +-49.66951 12.145668 4.9852185 128.0 +-49.750443 12.48947 5.0008302 128.0 +-49.766369 12.818583 5.0101776 128.0 +-49.730083 13.135141 5.014514 128.0 +-49.74847 13.467083 5.0245361 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.923733 14.486938 3.695251 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.66758 15.134483 3.6969855 128.0 +-0 0 0 128.0 +-57.826153 26.094934 6.1768923 128.0 +-35.176559 16.133978 3.7814994 128.0 +-0 0 0 128.0 +-56.627186 26.819172 6.100955 128.0 +-56.485779 27.177778 6.1035566 128.0 +-56.537048 27.630938 6.1271667 128.0 +-0 0 0 128.0 +-56.269264 28.360733 6.1353579 128.0 +-56.171276 28.744911 6.1437416 128.0 +-55.995609 29.089949 6.1439347 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.886375 14.254247 2.5634215 128.0 +-21.158049 13.965493 2.4891224 128.0 +-21.940622 14.676162 2.5903077 128.0 +-21.872404 14.82559 2.5929096 128.0 +-20.085985 13.795231 2.3938155 128.0 +-21.743561 15.130976 2.5993662 128.0 +-19.964806 14.075665 2.399694 128.0 +-19.902361 14.21526 2.402585 128.0 +-20.117151 14.555927 2.4387226 128.0 +-20.399944 14.952129 2.4834368 128.0 +-20.731363 15.391502 2.5345113 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-39.839108 31.124235 4.9293256 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-39.382446 32.354786 4.9693179 128.0 +-36.927437 30.719221 4.6852283 128.0 +-0 0 0 128.0 +-35.395061 30.186991 4.538558 128.0 +-23.653843 20.42491 3.0603857 128.0 +-22.425817 19.60593 2.9186299 128.0 +-36.930668 32.689892 4.8097343 128.0 +-21.056126 18.869253 2.7720559 128.0 +-36.542213 33.154671 4.811758 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-15.276191 14.558417 2.0777321 128.0 +-15.188724 14.65395 2.078021 128.0 +-14.453432 14.116734 1.9907128 128.0 +-32.069229 31.711004 4.4011388 128.0 +-0 0 0 128.0 +-14.223998 14.413682 1.995242 128.0 +-14.077626 14.441527 1.9872435 128.0 +-13.975633 14.51401 1.9854126 128.0 +-29.834373 31.368567 4.2259436 128.0 +-29.701309 31.614876 4.2344241 128.0 +-14.273466 15.380214 2.0661681 128.0 +-14.081979 15.361844 2.0522912 128.0 +-0 0 0 128.0 +-13.483031 15.07571 1.9928328 128.0 +-15.726168 17.802759 2.3344536 128.0 +-27.255968 31.240601 4.0486283 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-27.43457 32.639156 4.1627269 128.0 +-0 0 0 128.0 +-15.320852 18.687443 2.374253 128.0 +-16.569324 20.465256 2.584044 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-24.663654 32.040752 3.9493706 128.0 +-0 0 0 128.0 +-23.329515 31.089464 3.7978816 128.0 +-23.014484 31.064871 3.777741 128.0 +-23.03849 31.499548 3.8130114 128.0 +-22.802248 31.581406 3.8059766 128.0 +-22.582043 31.684248 3.80164 128.0 +-0 0 0 128.0 +-23.901943 34.422379 4.0919938 128.0 +-23.752174 34.658707 4.1025939 128.0 +-0 0 0 128.0 +-23.323412 34.945091 4.1023049 128.0 +-21.951807 33.331055 3.8986814 128.0 +-0 0 0 128.0 +-9.2569675 14.436951 1.6950589 128.0 +-9.212369 14.563299 1.7030574 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.5734663 14.122035 1.634155 128.0 +-8.4902325 14.180353 1.6348296 128.0 +-19.084608 32.326332 3.6691356 128.0 +-8.4537792 14.520896 1.6614269 128.0 +-8.8337011 15.390021 1.7526864 128.0 +-8.7704716 15.499377 1.7588539 128.0 +-8.7610149 15.706766 1.7759109 128.0 +-8.6956406 15.816923 1.7821747 128.0 +-7.9275703 14.631601 1.6458155 128.0 +-17.453516 32.693626 3.6227829 128.0 +-17.230806 32.758698 3.6182537 128.0 +-7.7530689 14.960632 1.6660526 128.0 +-7.6733437 15.031859 1.6686544 128.0 +-7.5832005 15.083106 1.6691363 128.0 +-9.4978809 19.184553 2.1072204 128.0 +-9.591054 19.67552 2.153862 128.0 +-9.4270878 19.64426 2.1442251 128.0 +-7.7140465 16.33028 1.7832347 128.0 +-16.076323 34.583755 3.727052 128.0 +-0 0 0 128.0 +-17.820328 39.60006 4.2389531 128.0 +-0 0 0 128.0 +-16.290606 37.421021 3.9860864 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.4513168 20.431736 2.1753519 128.0 +-8.3261652 20.484129 2.1754482 128.0 +-13.250509 33.183208 3.4940367 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-11.750396 37.966431 3.8824918 128.0 +-4.3772373 14.454158 1.4968323 128.0 +-4.3031592 14.530373 1.5018433 128.0 +-4.0744634 14.074622 1.4532744 128.0 +-3.9376521 13.921208 1.4353501 128.0 +-3.8807735 14.048727 1.4457577 128.0 +-3.7983849 14.08669 1.4472033 128.0 +-3.5594802 13.530237 1.3891903 128.0 +-3.6408098 14.192983 1.4532744 128.0 +-3.6535623 14.614833 1.4931703 128.0 +-3.7671983 15.47256 1.5764313 128.0 +-3.644655 15.379159 1.5648673 128.0 +-3.2949762 14.293576 1.4548162 128.0 +-3.2100387 14.326152 1.456069 128.0 +-3.2727253 15.038067 1.5246823 128.0 +-3.1082206 14.716035 1.4908575 128.0 +-2.9196448 14.255071 1.443445 128.0 +-3.8652444 19.481417 1.9575624 128.0 +-3.7627125 19.593719 1.9663318 128.0 +-5.0660415 27.285955 2.7215595 128.0 +-3.5005553 19.518892 1.9545752 128.0 +-5.5263901 31.94595 3.1735203 128.0 +-5.3139086 31.881077 3.1638837 128.0 +-4.3977213 27.419754 2.723294 128.0 +-4.5240064 29.358614 2.9106314 128.0 +-4.7148318 31.896685 3.1563671 128.0 +-4.1746869 29.491749 2.9184372 128.0 +-4.2970395 31.7598 3.1375756 128.0 +-0 0 0 128.0 +-3.9916432 32.499714 3.2048397 128.0 +-3.4792821 29.839401 2.9432034 128.0 +-3.5998354 32.612534 3.2112963 128.0 +-3.4004858 32.64193 3.2120671 128.0 +-3.2155609 32.819687 3.2273896 128.0 +-3.0127585 32.823929 3.225944 128.0 +-0 0 0 128.0 +-2.8344634 35.689247 3.5008788 128.0 +-2.6625221 36.349228 3.5633247 128.0 +-2.3870988 35.58429 3.4875803 128.0 +-0 0 0 128.0 +-1.9510067 35.624821 3.4889293 128.0 +-1.6940806 34.84774 3.4125104 128.0 +-1.4914089 35.12101 3.4380476 128.0 +-1.2869631 35.434868 3.4676323 128.0 +-1.0708641 35.48687 3.4719687 128.0 +-0.86189002 35.858952 3.5074317 128.0 +-0.60486859 33.793579 3.3069885 128.0 +-0.40331617 34.292301 3.3549793 128.0 +-0.18507691 32.895691 3.2195837 128.0 +0.016831543 33.007687 3.230377 128.0 +0.21920298 32.983074 3.2280641 128.0 +0.42148989 32.97414 3.2273896 128.0 +0.62354338 32.957001 3.2260404 128.0 +0 0 0 128.0 +1.0332433 33.116989 3.2425191 128.0 +0 0 0 128.0 +1.4513342 33.372295 3.2687309 128.0 +1.664421 33.530766 3.285017 128.0 +1.8636394 33.403648 3.273742 128.0 +2.5202339 40.678463 3.9805934 128.0 +1.8829477 27.648407 2.7177048 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.1854582 34.320351 3.3717473 128.0 +3.3933351 34.273415 3.3691452 128.0 +2.1013374 19.977892 1.9795341 128.0 +3.6843455 33.068836 3.2561069 128.0 +3.7922683 32.238968 3.1774714 128.0 +3.9911129 32.223984 3.1783388 128.0 +4.2125216 32.381489 3.1961665 128.0 +4.4326501 32.512825 3.2115853 128.0 +4.4958773 31.530188 3.1182058 128.0 +4.6842747 31.468534 3.1149292 128.0 +4.882463 31.472643 3.1182058 128.0 +5.078815 31.462727 3.1202295 128.0 +5.279182 31.475145 3.1245661 128.0 +5.4349976 31.22839 3.1035581 128.0 +2.5813613 14.315136 1.4429631 128.0 +2.6724377 14.316639 1.4446977 128.0 +2.8613875 14.8238 1.4963504 128.0 +6.2497854 31.336464 3.1283243 128.0 +3.0061541 14.608189 1.4786189 128.0 +7.0709863 33.316681 3.3321404 128.0 +7.4590092 34.112793 3.4154015 128.0 +3.4111657 15.157281 1.5388482 128.0 +3.543179 15.30479 1.555616 128.0 +3.63218 15.262427 1.5535923 128.0 +3.6325998 14.858913 1.5156238 128.0 +3.8431952 15.312279 1.5631326 128.0 +3.5082722 13.62379 1.3967069 128.0 +3.543247 13.4182 1.3783009 128.0 +4.1124282 15.194749 1.5586997 128.0 +3.9454415 14.231185 1.464453 128.0 +4.2297974 14.900893 1.5343189 128.0 +4.2431016 14.606076 1.5072398 128.0 +4.349659 14.637012 1.5130218 128.0 +4.4451771 14.629093 1.5149492 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.9138594 20.485882 2.1608968 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.8688173 18.970795 2.023092 128.0 +7.9676547 18.88089 2.0187554 128.0 +8.114768 18.904816 2.0264649 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.144136 31.902866 3.6368525 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +32.686779 50.865173 5.8884659 128.0 +32.840183 50.420952 5.8604231 128.0 +33.146748 50.215179 5.8600378 128.0 +32.371719 48.392654 5.6715441 128.0 +0 0 0 128.0 +33.851849 49.285599 5.8235145 128.0 +0 0 0 128.0 +33.586292 47.635696 5.6777115 128.0 +14.88233 20.836212 2.513696 128.0 +14.663877 20.266329 2.4565504 128.0 +14.579053 19.890987 2.4223402 128.0 +0 0 0 128.0 +29.889103 39.744995 4.8493414 128.0 +14.563346 19.12122 2.3617253 128.0 +30.341755 39.332661 4.8441377 128.0 +30.548206 39.101826 4.8387408 128.0 +0 0 0 128.0 +30.711447 38.331741 4.7900758 128.0 +30.882101 38.06374 4.7802463 128.0 +31.160568 37.928905 4.7871847 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +36.082199 41.784988 5.379745 128.0 +36.391632 41.624252 5.3876472 128.0 +36.835693 41.614071 5.4153042 128.0 +37.126873 41.428036 5.4206042 128.0 +37.474678 41.303387 5.4341922 128.0 +0 0 0 128.0 +0 0 0 128.0 +38.444878 40.836334 5.4647403 128.0 +0 0 0 128.0 +19.043331 19.737783 2.6900475 128.0 +39.228279 40.160931 5.4700408 128.0 +38.650219 39.086468 5.356617 128.0 +38.802704 38.762054 5.3447638 128.0 +19.230791 18.977163 2.6504407 128.0 +0 0 0 128.0 +39.644413 38.171043 5.3628807 128.0 +0 0 0 128.0 +0 0 0 128.0 +44.073734 40.899242 5.8559904 128.0 +0 0 0 128.0 +44.370876 40.172939 5.8296819 128.0 +43.519932 38.919289 5.6872516 128.0 +43.423702 38.356323 5.6440792 128.0 +43.664986 38.095047 5.6449466 128.0 +44.191986 38.0798 5.6825299 128.0 +44.292156 37.695034 5.6656656 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +18.469414 14.582032 2.3129637 128.0 +0 0 0 128.0 +0 0 0 128.0 +25.233669 19.178741 3.1032689 128.0 +0 0 0 128.0 +25.483118 18.87949 3.1051962 128.0 +0 0 0 128.0 +0 0 0 128.0 +25.809288 18.3951 3.1031725 128.0 +0 0 0 128.0 +26.876835 18.66284 3.2026231 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +24.130493 15.892711 2.8320923 128.0 +24.19417 15.722656 2.8282378 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +24.036156 14.79394 2.7672374 128.0 +23.756351 14.421511 2.7253177 128.0 +24.105722 14.431914 2.754806 128.0 +23.840681 14.075263 2.7151029 128.0 +24.299934 14.146029 2.7569261 128.0 +24.106571 13.83614 2.7257032 128.0 +25.754696 14.572652 2.8996456 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.178577 15.043337 3.1272643 128.0 +28.182257 14.82382 3.1176276 128.0 +28.195797 14.61078 3.1092436 128.0 +28.179417 14.383653 3.0977759 128.0 +28.178211 14.165773 3.0881393 128.0 +28.184317 13.952868 3.0794663 128.0 +28.395557 13.841157 3.0930541 128.0 +28.680965 13.763117 3.1146402 128.0 +28.987177 13.691868 3.1384428 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.108519 13.316331 3.3108432 128.0 +31.217165 13.136783 3.3137343 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +32.511108 12.065789 3.3920805 128.0 +36.643612 13.34409 3.810313 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +32.77787 -0.62014788 3.2086942 128.0 +32.764492 -0.8210327 3.2078271 128.0 +37.267548 -1.1628867 3.644562 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +31.332573 -1.7480181 3.0729134 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +25.46649 -1.8913125 2.5070467 128.0 +30.530182 -2.4560628 3.0000598 128.0 +25.446321 -2.2041128 2.5075285 128.0 +30.664246 -2.8459899 3.0162497 128.0 +25.429243 -2.5173895 2.5086849 128.0 +27.429701 -2.8855815 2.7049844 128.0 +27.432253 -3.0561478 2.7070081 128.0 +27.414961 -3.2246442 2.7072008 128.0 +27.408489 -3.3945117 2.70855 128.0 +27.38221 -3.561981 2.7080681 128.0 +27.367727 -3.731004 2.7088392 128.0 +19.318449 -2.7541521 1.9239304 128.0 +27.387812 -4.0766816 2.7154884 128.0 +27.360315 -4.244348 2.7152956 128.0 +18.521622 -2.989332 1.8510771 128.0 +18.831776 -3.1580904 1.8833599 128.0 +0 -0 0 128.0 +19.083504 -3.4416084 1.9120773 128.0 +19.167698 -3.5783718 1.922485 128.0 +18.394821 -3.5509768 1.8484751 128.0 +37.693897 -7.5179625 3.7559621 128.0 +37.761124 -7.7725883 3.7672369 128.0 +37.611458 -7.9826455 3.7572148 128.0 +0 -0 0 128.0 +37.489304 -8.4387856 3.7550948 128.0 +38.166992 -8.8377542 3.8276591 128.0 +38.142063 -9.0789223 3.8306465 128.0 +0 -0 0 128.0 +37.78064 -9.484252 3.8059766 128.0 +31.417963 -8.0920429 3.1757369 128.0 +31.394667 -8.2917852 3.1784351 128.0 +31.403725 -8.5006495 3.1845062 128.0 +31.304935 -8.6804113 3.1798806 128.0 +7.974371 -2.2630548 0.83720058 128.0 +7.9393072 -2.3058317 0.8350805 128.0 +31.553928 -9.3782463 3.2217038 128.0 +0 -0 0 128.0 +32.214005 -10.006304 3.3005321 128.0 +0 -0 0 128.0 +7.9680457 -2.5817389 0.84558451 128.0 +7.9501643 -2.629956 0.84539181 128.0 +25.223816 -8.5189247 2.6122794 128.0 +0 -0 0 128.0 +26.709957 -9.3876295 2.7757177 128.0 +25.186419 -9.0260992 2.6249998 128.0 +25.174501 -9.1965246 2.629529 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +20.003086 -7.7273216 2.110786 128.0 +0 -0 0 128.0 +24.267952 -9.7190475 2.5656378 128.0 +19.638098 -8.0047741 2.0878506 128.0 +19.745825 -8.190341 2.1043293 128.0 +19.494371 -8.2265835 2.083225 128.0 +19.929192 -8.5545444 2.1343958 128.0 +19.879065 -8.6778612 2.1346848 128.0 +19.638947 -8.7168846 2.1149297 128.0 +19.629547 -8.8572845 2.1196516 128.0 +19.876099 -9.1157522 2.1517417 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +5.0937438 -2.7652435 0.59580147 128.0 +5.1786733 -2.8526547 0.60707635 128.0 +0 -0 0 128.0 +4.9173107 -2.7878191 0.58192462 128.0 +0 -0 0 128.0 +3.8012543 -2.2168591 0.460695 128.0 +3.8209872 -2.2599118 0.46445331 128.0 +3.8036349 -2.2812657 0.46406785 128.0 +3.8728948 -2.3552668 0.47351182 128.0 +3.8685355 -2.3852575 0.4746682 128.0 +13.600703 -8.5050182 1.5877062 128.0 +4.5812507 -2.9031599 0.55976021 128.0 +4.5641885 -2.9317534 0.55985659 128.0 +4.0081658 -2.6093125 0.49769992 128.0 +4.0419207 -2.6667581 0.50348192 128.0 +4.0436821 -2.7036841 0.505602 128.0 +3.9718163 -2.6910253 0.49914542 128.0 +3.2644155 -2.240839 0.41800445 128.0 +3.208122 -2.2312613 0.41299337 128.0 +3.2033191 -2.2572134 0.41405341 128.0 +3.1602511 -2.2559981 0.41058421 128.0 +3.1366727 -2.2683444 0.40942779 128.0 +3.1315258 -2.2940209 0.41048783 128.0 +4.3808408 -3.2512989 0.56284398 128.0 +4.301147 -3.2332489 0.55561644 128.0 +3.743592 -2.8500576 0.49018329 128.0 +4.0318122 -3.1088674 0.52757365 128.0 +4.1099191 -3.2095344 0.53952318 128.0 +4.5249252 -3.5786936 0.59319955 128.0 +4.5098724 -3.6119919 0.59406686 128.0 +4.4582534 -3.6157651 0.59040487 128.0 +4.5721087 -3.7548916 0.60746187 128.0 +4.4778214 -3.7236741 0.59849972 128.0 +3.7781322 -3.1810079 0.51282954 128.0 +3.7153761 -3.1673133 0.50733662 128.0 +3.5783525 -3.0885661 0.49230337 128.0 +3.7923739 -3.3142171 0.52227348 128.0 +3.9068644 -3.4568372 0.53971589 128.0 +3.3133521 -2.9679046 0.46532062 128.0 +2.5373011 -2.300616 0.36625543 128.0 +2.5282681 -2.3208547 0.36692998 128.0 +2.543864 -2.3641152 0.37088102 128.0 +2.5322089 -2.3824086 0.37126651 128.0 +3.5147178 -3.3483279 0.50463831 128.0 +3.964699 -3.8239048 0.56795138 128.0 +3.5039809 -3.4211137 0.50878209 128.0 +2.332139 -2.3045607 0.35208949 128.0 +2.2947412 -2.2955883 0.34890938 128.0 +2.2785153 -2.3074999 0.34862027 128.0 +2.3039138 -2.3620656 0.35411319 128.0 +2.3390825 -2.4277837 0.36105162 128.0 +2.2102761 -2.3223627 0.34505469 128.0 +2.9524493 -3.1411259 0.45202199 128.0 +2.9737422 -3.2029595 0.45780399 128.0 +3.0885425 -3.3678966 0.47707739 128.0 +3.0023522 -3.3144732 0.46763343 128.0 +2.9288793 -3.2734766 0.45992407 128.0 +2.592454 -2.9333017 0.41366795 128.0 +2.5076644 -2.8726497 0.40383852 128.0 +1.8993939 -2.2025607 0.316241 128.0 +1.889069 -2.2179637 0.31672281 128.0 +1.8658179 -2.2180839 0.31527731 128.0 +1.8496299 -2.2264271 0.31489184 128.0 +1.8390892 -2.2415829 0.31537369 128.0 +1.8284318 -2.2566934 0.31585553 128.0 +1.8226304 -2.2779765 0.3171083 128.0 +1.8265043 -2.3117731 0.31990293 128.0 +2.8336134 -3.6331205 0.48073933 128.0 +1.8241036 -2.3679295 0.3240467 128.0 +2.1919756 -2.8822904 0.38523972 128.0 +1.8851136 -2.5103531 0.3385981 128.0 +2.1925824 -2.9577596 0.39111808 128.0 +2.2501893 -3.0747976 0.40354943 128.0 +1.8420826 -2.5494685 0.33917633 128.0 +1.8177396 -2.5485649 0.33773082 128.0 +2.7532964 -3.9118774 0.49779627 128.0 +2.5810778 -3.7153065 0.47264451 128.0 +1.465564 -2.1365781 0.28549993 128.0 +1.5053989 -2.2238574 0.29465479 128.0 +2.3382058 -3.5013974 0.44228894 128.0 +2.3451447 -3.5589049 0.44730002 128.0 +2.3671925 -3.6408315 0.45510572 128.0 +2.6794841 -4.177319 0.51514232 128.0 +1.3986987 -2.2092628 0.28781274 128.0 +1.4119873 -2.2608709 0.29272747 128.0 +1.4074786 -2.2847505 0.29446205 128.0 +1.6816261 -2.7681248 0.3482348 128.0 +1.6743232 -2.7946172 0.35006577 128.0 +1.7208996 -2.9128373 0.36220801 128.0 +1.6003455 -2.7469954 0.34245279 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1133974 -2.0230923 0.25822809 128.0 +1.133202 -2.0893981 0.26478106 128.0 +1.129266 -2.1129954 0.26661202 128.0 +1.1176697 -2.1225274 0.26690111 128.0 +1.0959247 -2.1125541 0.26507014 128.0 +1.6055585 -3.1432056 0.37637395 128.0 +1.5746191 -3.1298759 0.37386841 128.0 +1.5549433 -3.1385865 0.37377205 128.0 +1.5347838 -3.1462789 0.37357932 128.0 +1.0839999 -2.2564533 0.27701965 128.0 +1.5024347 -3.1783764 0.37502483 128.0 +1.4820652 -3.1857302 0.37483206 128.0 +1.8243241 -3.9858761 0.45905676 128.0 +1.0989567 -2.4394062 0.29369113 128.0 +1.4259952 -3.2188416 0.37550664 128.0 +1.0772812 -2.4718735 0.29571483 128.0 +1.0648354 -2.4848423 0.2963894 128.0 +1.0673264 -2.5335314 0.30082229 128.0 +1.0407293 -2.5133588 0.29802763 128.0 +1.0267869 -2.5233858 0.2984131 128.0 +1.0031645 -2.5093019 0.29629302 128.0 +0.99210978 -2.5265296 0.29744944 128.0 +1.2759948 -3.3100135 0.37810856 128.0 +1.2655171 -3.3438492 0.38080683 128.0 +1.4929181 -4.0196977 0.44980556 128.0 +1.2148521 -3.3329396 0.37810856 128.0 +1.1883521 -3.3234589 0.37637395 128.0 +1.1738603 -3.3475966 0.37810856 128.0 +1.1251721 -3.272836 0.36972463 128.0 +1.0441091 -3.0985553 0.35122219 128.0 +0 -0 0 128.0 +0.97541642 -3.0164175 0.34158549 128.0 +0.9664923 -3.0527148 0.34466922 128.0 +0.92802799 -2.9948802 0.33821264 128.0 +0.89838612 -2.9633651 0.33445433 128.0 +0.93076521 -3.1396585 0.351704 128.0 +0.90677917 -3.1290567 0.35006577 128.0 +0.90733314 -3.2044804 0.35710058 128.0 +0.91838777 -3.3212819 0.36827913 128.0 +0.8925513 -3.3066726 0.36625543 128.0 +0.82262683 -3.1234145 0.3473675 128.0 +0.80146849 -3.1206901 0.34659657 128.0 +1.0402792 -4.1578269 0.44961283 128.0 +1.0265173 -4.2124872 0.45443115 128.0 +2.0832169 -8.7882643 0.90909034 128.0 +2.0341711 -8.8222198 0.91121042 128.0 +0.65445769 -2.9165268 0.3240467 128.0 +0.64522499 -2.9603641 0.32799774 128.0 +1.7735649 -8.3946028 0.86533976 128.0 +0.74020922 -3.6096878 0.39140719 128.0 +1.6574422 -8.3503208 0.85888314 128.0 +1.6011077 -8.3339415 0.85628122 128.0 +1.5374073 -8.276083 0.84963191 128.0 +1.4881781 -8.294178 0.85049921 128.0 +0.52599859 -3.0343778 0.33281609 128.0 +1.4068986 -8.435524 0.86264145 128.0 +1.3782774 -8.5884676 0.87680739 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.58441126 -4.1213379 0.43766332 128.0 +0.56191391 -4.1455598 0.43968701 128.0 +0.53621197 -4.146955 0.43949428 128.0 +0.5056619 -4.1086745 0.43544689 128.0 +0.47133824 -4.033596 0.42783388 128.0 +0.41699472 -3.768301 0.40171844 128.0 +0.3946898 -3.7787085 0.40248939 128.0 +0.3713026 -3.779078 0.40229666 128.0 +0.22588345 -2.4491355 0.27277949 128.0 +0.20592988 -2.3929555 0.26719022 128.0 +0.19140065 -2.3961585 0.26738295 128.0 +0.1777847 -2.412178 0.26882845 128.0 +0.25766918 -3.8254344 0.40586224 128.0 +0.23352647 -3.816015 0.4048022 128.0 +0 -0 0 128.0 +0.13205652 -2.6941831 0.29581121 128.0 +0.11126103 -2.5945032 0.28607813 128.0 +0.095952958 -2.6120467 0.28771639 128.0 +0.0786044 -2.5688112 0.28347623 128.0 +0.063724712 -2.6060622 0.28704181 128.0 +0.047981907 -2.6203368 0.28839093 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6494948 -3.4853845 0.40798229 128.0 +-1.6574711 -3.4473932 0.40499493 128.0 +-1.6755332 -3.4308984 0.40432036 128.0 +-1.6850471 -3.3973725 0.40181482 128.0 +-1.6816691 -3.338973 0.39661101 128.0 +-1.6989509 -3.3223891 0.39593643 128.0 +-1.7243524 -3.3216178 0.39699647 128.0 +-1.7799869 -3.3778872 0.40432036 128.0 +-1.8448298 -3.4493926 0.41337886 128.0 +-1.8616846 -3.4301362 0.41251156 128.0 +-1.8841377 -3.4212637 0.41280064 128.0 +-1.9099523 -3.4183261 0.41376433 128.0 +-1.9613376 -3.4602201 0.41973907 128.0 +-0 -0 0 128.0 +-4.9022655 -8.4031124 0.97654718 128.0 +-4.9704623 -8.4011421 0.97972727 128.0 +-5.0208931 -8.3687782 0.97953457 128.0 +-5.0219603 -8.2553339 0.97018695 128.0 +-5.0568414 -8.1989517 0.96729594 128.0 +-5.1920295 -8.3036346 0.98281103 128.0 +-5.2423487 -8.2707796 0.98271465 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.064565 -9.0018129 1.3419706 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.122234 -8.7234211 1.3283828 128.0 +-9.978487 -8.4934263 1.3033274 128.0 +-10.034986 -8.4358826 1.3039056 128.0 +-10.36074 -8.6017418 1.338405 128.0 +-10.040761 -8.2325935 1.2917634 128.0 +-10.491819 -8.4952459 1.3416815 128.0 +-10.531308 -8.4207649 1.3401396 128.0 +-10.456999 -8.2566919 1.3246245 128.0 +-10.401487 -8.1097612 1.311615 128.0 +-10.527561 -8.1046762 1.3209625 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.640414 -7.5846071 1.2997619 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.464136 -9.051403 1.8536789 128.0 +-0 -0 0 128.0 +-16.584507 -8.8543053 1.8548354 128.0 +-16.667595 -8.7676678 1.8580154 128.0 +-0 -0 0 128.0 +-16.457434 -8.4009352 1.8236125 128.0 +-16.670527 -8.381156 1.8411512 128.0 +-0 -0 0 128.0 +-6.9980912 -3.4121382 0.78843892 128.0 +-6.9982562 -3.3592308 0.78622252 128.0 +-7.0115361 -3.3128266 0.78545153 128.0 +-7.013679 -3.2613513 0.78352422 128.0 +-7.0435152 -3.2228088 0.78458428 128.0 +-7.0631571 -3.1795299 0.78458428 128.0 +-7.0852642 -3.1373398 0.78487337 128.0 +-7.4064612 -3.2253017 0.81677079 128.0 +-7.4087262 -3.1723542 0.81493986 128.0 +-7.4161253 -3.1218171 0.81368709 128.0 +-0 -0 0 128.0 +-7.4382005 -3.024204 0.81204885 128.0 +-7.4510703 -2.9762926 0.81147063 128.0 +-7.5470295 -2.9610436 0.81956547 128.0 +-7.606854 -2.9307773 0.82390195 128.0 +-21.53418 -8.1430387 2.263624 128.0 +-22.121243 -8.2102165 2.3191311 128.0 +-0 -0 0 128.0 +-7.603375 -2.717098 0.81638533 128.0 +-22.552311 -7.9010196 2.3482339 128.0 +-22.599424 -7.7621694 2.3481376 128.0 +-22.640024 -7.6211333 2.3474631 128.0 +-0 -0 0 128.0 +-28.432882 -9.1839457 2.9274957 128.0 +-27.817732 -8.7971535 2.8593643 128.0 +-27.319691 -8.4556341 2.8034713 128.0 +-28.216053 -8.5436678 2.8889489 128.0 +-0 -0 0 128.0 +-28.687832 -8.3035765 2.9261465 128.0 +-28.738241 -8.1273956 2.9261465 128.0 +-29.200127 -8.0648355 2.9675844 128.0 +-12.996867 -3.5046151 1.3379232 128.0 +-13.009463 -3.4225235 1.3370558 128.0 +-0 -0 0 128.0 +-12.797483 -3.199393 1.3118078 128.0 +-12.819775 -3.1215153 1.3120968 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-18.116335 -3.9424014 1.8296835 128.0 +-18.13434 -3.8299339 1.8291054 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-19.611546 -3.6415086 1.96585 128.0 +-18.17079 -3.2588663 1.8219743 128.0 +-18.277733 -3.1624084 1.8305509 128.0 +-18.164249 -3.0281112 1.8175414 128.0 +-19.703852 -3.1605387 1.9667174 128.0 +-18.142 -2.7960386 1.8118557 128.0 +-18.216909 -2.6932538 1.8175414 128.0 +-24.202427 -3.4261725 2.4012358 128.0 +-24.693489 -3.3412442 2.4472029 128.0 +-23.991909 -3.0965636 2.3767586 128.0 +-19.614183 -2.4094992 1.9479258 128.0 +-19.648373 -2.2914083 1.9498532 128.0 +-23.485865 -2.5927455 2.3223114 128.0 +-23.363722 -2.4342597 2.3089163 128.0 +-18.429152 -1.8061414 1.8274672 128.0 +-24.6437 -2.2622256 2.4306278 128.0 +-25.913628 -2.2184861 2.5527246 128.0 +-23.714092 -1.8837832 2.3378265 128.0 +-23.133562 -1.694923 2.2803917 128.0 +-23.092878 -1.5495503 2.2754769 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.183647 8.8158789 4.2746429 128.0 +-49.28244 9.1460419 4.2879167 128.0 +-49.380005 9.4779358 4.3012753 128.0 +-49.371746 9.7908258 4.3056717 128.0 +-49.433739 10.118757 4.3163247 128.0 +-49.470165 10.442878 4.3249488 128.0 +-49.521996 10.771637 4.3350945 128.0 +-49.52206 11.09032 4.3409281 128.0 +-49.566685 11.420146 4.3508201 128.0 +-49.665356 11.764257 4.3656158 128.0 +-49.617409 12.074903 4.3678141 128.0 +-49.744427 12.429604 4.3854847 128.0 +-49.735752 12.752166 4.3914876 128.0 +-49.805939 13.096374 4.404592 128.0 +-49.732338 13.403805 4.4052687 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.9743 13.509734 3.6956623 128.0 +-40.899136 13.763754 3.6964231 128.0 +-40.873283 14.034833 3.7017496 128.0 +-40.781696 14.283716 3.7013268 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-36.704685 13.876146 3.3644054 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-35.157673 14.036253 3.246969 128.0 +-0 0 0 128.0 +-34.986462 14.468158 3.2473073 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-34.856747 15.171727 3.2604966 128.0 +-0 0 0 128.0 +-57.944756 26.071098 5.4262633 128.0 +-34.413002 15.738235 3.2457008 128.0 +-56.453014 26.237621 5.317028 128.0 +-56.298168 26.58692 5.3177042 128.0 +-56.128582 26.929274 5.3171968 128.0 +-56.032158 27.307213 5.323792 128.0 +-55.888554 27.662882 5.326159 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.353218 18.332275 3.2642167 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-56.922161 34.072735 5.6639261 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-52.169712 32.993538 5.2724714 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-20.849678 13.729876 2.1530945 128.0 +-21.263988 14.19051 2.2039921 128.0 +-0 0 0 128.0 +-20.231756 13.863505 2.1158938 128.0 +-20.100475 13.955563 2.1111591 128.0 +-21.061735 14.815281 2.2198026 128.0 +-20.066465 14.300056 2.1256168 128.0 +-20.400875 14.72794 2.1698351 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-20.750399 15.569189 2.2360356 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-41.093483 32.438538 4.4771338 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-37.843143 31.020292 4.1867981 128.0 +-37.047916 30.750439 4.1201749 128.0 +-0 0 0 128.0 +-35.569702 30.268364 3.9978347 128.0 +-21.749407 18.739359 2.4708238 128.0 +-22.498274 19.626373 2.5681379 128.0 +-37.048405 32.721313 4.2289872 128.0 +-0 0 0 128.0 +-36.78664 33.302555 4.2453051 128.0 +-35.935917 32.935871 4.1709876 128.0 +-0 0 0 128.0 +-15.447275 14.510783 1.8331672 128.0 +-0 0 0 128.0 +-15.086431 14.524413 1.8117766 128.0 +-0 0 0 128.0 +-14.492828 14.299758 1.762401 128.0 +-14.421734 14.405314 1.7644302 128.0 +-14.267912 14.427646 1.7565672 128.0 +-14.183294 14.519197 1.7570745 128.0 +-14.103626 14.615989 1.7582581 128.0 +-29.519476 30.969303 3.6651406 128.0 +-14.167738 15.047674 1.7885262 128.0 +-14.062926 15.121189 1.7870042 128.0 +-13.771692 14.991461 1.7621473 128.0 +-0 0 0 128.0 +-27.673754 30.876343 3.5530307 128.0 +-27.600683 31.177618 3.5679955 128.0 +-15.459797 17.680996 2.0277107 128.0 +-27.52211 31.868408 3.6077328 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-26.006786 31.258938 3.4851391 128.0 +-0 0 0 128.0 +-16.523836 20.364277 2.260047 128.0 +-15.343698 19.148848 2.1169083 128.0 +-25.157007 31.793215 3.4749088 128.0 +-15.343751 19.637983 2.1494591 128.0 +-25.211111 32.677807 3.5368822 128.0 +-23.56642 30.936703 3.3347292 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-23.129068 31.550877 3.3542597 128.0 +-22.931536 31.687357 3.3537524 128.0 +-22.763897 31.865572 3.3577261 128.0 +-0 0 0 128.0 +-23.600088 33.908211 3.5402641 128.0 +-23.363941 34.012135 3.5361211 128.0 +-23.102247 34.077328 3.5281737 128.0 +-23.529343 35.170002 3.6253188 128.0 +-21.920347 33.204067 3.4108219 128.0 +-34.679203 53.237862 5.4260097 128.0 +-34.316334 53.394325 5.4204292 128.0 +-20.808161 32.817635 3.3320239 128.0 +-9.1331596 14.602147 1.4962457 128.0 +-19.802177 32.095314 3.2347941 128.0 +-0 0 0 128.0 +-8.5495348 14.245773 1.4445872 128.0 +-8.9035006 15.043977 1.5181435 128.0 +-8.4433832 14.468377 1.4562548 128.0 +-8.4120941 14.620096 1.4660623 128.0 +-8.3010883 14.634169 1.4624268 128.0 +-18.438381 32.974251 3.240459 128.0 +-10.295351 18.680185 1.8446656 128.0 +-8.004632 14.737204 1.4578612 128.0 +-7.953084 14.858956 1.4648787 128.0 +-7.8715229 14.925984 1.4666542 128.0 +-7.8266506 15.06419 1.4752779 128.0 +-16.640186 32.512962 3.1339293 128.0 +-8.0089912 15.888705 1.5446068 128.0 +-7.9596429 16.03483 1.5538225 128.0 +-9.5479498 19.534361 1.8797528 128.0 +-14.963616 31.096052 2.9629743 128.0 +-0 0 0 128.0 +-14.519845 31.146387 2.9507148 128.0 +-14.51667 31.645161 2.9890149 128.0 +-14.358707 31.814468 2.9965396 128.0 +-14.187082 31.955704 3.0015278 128.0 +-8.851491 20.272406 1.9117962 128.0 +-8.7269354 20.326336 1.9117962 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-13.74491 33.711884 3.1239526 128.0 +-13.420712 33.503296 3.0972357 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-4.2587996 14.654939 1.3297719 128.0 +-4.0397711 14.226458 1.2896963 128.0 +-3.9840956 14.365237 1.2997575 128.0 +-3.8130615 14.083565 1.2728715 128.0 +-3.6464005 13.803237 1.2462391 128.0 +-3.8689122 15.017977 1.3507396 128.0 +-3.6034176 14.351413 1.2903727 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.3242543 14.353183 1.2849617 128.0 +-3.3155789 14.726174 1.3156525 128.0 +-3.1898136 14.584657 1.3016176 128.0 +-4.1627145 19.608027 1.735684 128.0 +-3.1225317 15.166303 1.3487105 128.0 +-3.9009187 19.553078 1.7266375 128.0 +-3.8022232 19.687197 1.7361913 128.0 +-3.6250012 19.408478 1.7101507 128.0 +-4.9281535 27.312273 2.3897429 128.0 +-4.6890278 26.931667 2.3544021 128.0 +-4.5382013 27.046408 2.3618422 128.0 +-3.1750858 19.661768 1.7247773 128.0 +-4.916924 31.680557 2.7551568 128.0 +-4.7393236 31.823469 2.7648797 128.0 +-0 0 0 128.0 +-4.2932248 31.474447 2.7302153 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.8209047 32.463509 2.8084216 128.0 +-3.3548877 30.093817 2.6041551 128.0 +-2.7580588 26.199614 2.2701929 128.0 +-3.6572714 36.914024 3.1823747 128.0 +-3.4267392 36.893108 3.1787393 128.0 +-0 0 0 128.0 +-2.1680055 26.926842 2.3270087 128.0 +-2.0022273 26.932682 2.3264167 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.0227957 36.212273 3.1122849 128.0 +-1.8322293 36.860924 3.1663954 128.0 +-1.5655987 35.943687 3.0875971 128.0 +-1.3423028 35.879932 3.0814252 128.0 +-0.84262997 26.951986 2.3228657 128.0 +-0 0 0 128.0 +-0.62224817 32.772358 2.8161154 128.0 +-0.3484396 27.122343 2.3363934 128.0 +-0.22552204 33.593578 2.8853598 128.0 +-0 0 0 128.0 +0.18052746 32.473858 2.7903285 128.0 +0.41778681 35.725224 3.0663757 128.0 +0.59458828 33.342918 2.8644764 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.97238076 26.818995 2.3119593 128.0 +1.1421533 26.935968 2.322443 128.0 +1.3201605 27.191198 2.3447635 128.0 +1.8520793 33.858585 2.9120767 128.0 +0 0 0 128.0 +2.0660541 30.827871 2.6564898 128.0 +2.1320636 29.132174 2.5133512 128.0 +0 0 0 128.0 +1.7086952 19.975061 1.7359376 128.0 +3.1591237 34.444191 2.969738 128.0 +3.3709922 34.430107 2.9702454 128.0 +2.0787637 19.965994 1.7381359 128.0 +2.1944604 19.891459 1.7328939 128.0 +2.3560252 20.217094 1.7618937 128.0 +3.9715476 32.354069 2.8007278 128.0 +4.1591597 32.24509 2.7935412 128.0 +4.4049997 32.57444 2.8239784 128.0 +4.7165885 33.337063 2.8917007 128.0 +4.9094019 33.228638 2.884937 128.0 +5.1192636 33.237282 2.888319 128.0 +5.3500757 33.373482 2.9027765 128.0 +5.2925968 31.766447 2.767416 128.0 +5.4673796 31.617516 2.7574396 128.0 +5.6176815 31.340137 2.7364717 128.0 +2.6702423 14.386765 1.2764224 128.0 +2.7669194 14.414145 1.2802271 128.0 +2.9057031 14.651017 1.3022094 128.0 +6.4500532 31.510094 2.7639496 128.0 +8.071084 38.234028 3.3505397 128.0 +8.3042603 38.177944 3.3500323 128.0 +8.524642 38.065014 3.3447058 128.0 +3.455539 14.996788 1.3406785 128.0 +3.5392246 14.940398 1.3376348 128.0 +3.6244693 14.89226 1.3353519 128.0 +3.7882404 15.15975 1.3607162 128.0 +3.4859815 13.594796 1.2256939 128.0 +3.5239761 13.400655 1.21056 128.0 +3.9826291 14.775736 1.3333229 128.0 +4.0641999 14.718364 1.3304483 128.0 +10.450277 36.962124 3.2940619 128.0 +10.793475 37.300266 3.3296564 128.0 +11.106142 37.517105 3.3547671 128.0 +11.314482 37.376724 3.3484259 128.0 +11.846974 38.287048 3.4355097 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.9044762 20.156782 1.8719745 128.0 +8.1510315 20.416059 1.9001287 128.0 +0 0 0 128.0 +8.2825346 20.02813 1.8738345 128.0 +8.0478363 19.127373 1.7956281 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +18.97023 31.691463 3.1688473 128.0 +19.22068 31.667315 3.1780629 128.0 +0 0 0 128.0 +31.796783 50.966972 5.1320381 128.0 +32.097729 50.753227 5.1302629 128.0 +32.345623 50.457176 5.1203709 128.0 +0 0 0 128.0 +32.69276 49.647007 5.0787735 128.0 +0 0 0 128.0 +32.407032 47.922249 4.9435821 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +14.652793 20.561457 2.1771905 128.0 +14.612461 20.240911 2.1530945 128.0 +14.615807 19.985987 2.1357625 128.0 +0 0 0 128.0 +14.648274 19.522976 2.1058326 128.0 +30.071188 39.570938 4.2519841 128.0 +15.038074 19.538366 2.1268849 128.0 +15.214032 19.518028 2.1346633 128.0 +30.714823 38.909828 4.2410774 128.0 +30.832914 38.570419 4.2247601 128.0 +30.904741 38.177593 4.2026086 128.0 +31.123886 37.969524 4.200664 128.0 +31.18318 37.569286 4.1776671 128.0 +31.420164 37.385635 4.178597 128.0 +31.730331 37.287758 4.18925 128.0 +0 0 0 128.0 +0 0 0 128.0 +36.533829 41.365154 4.7176714 128.0 +0 0 0 128.0 +43.847591 48.435078 5.5785332 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.094419 19.833452 2.3708887 128.0 +0 0 0 128.0 +39.388332 39.921135 4.793426 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.987881 19.287409 2.3916874 128.0 +0 0 0 128.0 +0 0 0 128.0 +20.973562 19.505928 2.4651592 128.0 +0 0 0 128.0 +0 0 0 128.0 +44.331745 39.733749 5.0862136 128.0 +43.678688 38.667747 4.9846721 128.0 +43.88662 38.374088 4.9814591 128.0 +44.104664 38.089752 4.979599 128.0 +0 0 0 128.0 +44.573334 37.549503 4.9801064 128.0 +18.117117 15.072847 2.034559 128.0 +18.189245 14.944953 2.0323608 128.0 +18.289114 14.839971 2.0332909 128.0 +18.312954 14.673886 2.0260198 128.0 +18.519073 14.65337 2.0386174 128.0 +18.62748 14.554187 2.0406466 128.0 +18.716433 14.439617 2.0406466 128.0 +18.834799 14.347448 2.0438592 128.0 +0 0 0 128.0 +25.542898 18.966742 2.7343581 128.0 +0 0 0 128.0 +0 0 0 128.0 +20.974356 14.983342 2.2220008 128.0 +21.107428 14.88365 2.2263126 128.0 +21.035606 14.640582 2.2094877 128.0 +20.909863 14.363417 2.1873362 128.0 +20.998425 14.235405 2.1874208 128.0 +21.297388 14.248135 2.209065 128.0 +21.29294 14.056801 2.1997647 128.0 +0 0 0 128.0 +24.19142 15.547477 2.4748821 128.0 +0 0 0 128.0 +25.066343 15.678504 2.5435345 128.0 +25.119675 15.498244 2.5393071 128.0 +0 0 0 128.0 +23.960651 14.38019 2.4059758 128.0 +23.889801 14.139009 2.3903346 128.0 +24.422749 14.252822 2.4342148 128.0 +0 0 0 128.0 +0 0 0 128.0 +24.728792 13.827611 2.4388649 128.0 +24.872511 13.708324 2.4446142 128.0 +0 0 0 128.0 +25.859367 13.841259 2.5235813 128.0 +28.16218 14.852299 2.7363873 128.0 +28.151983 14.626847 2.7267487 128.0 +28.165808 14.415246 2.7195623 128.0 +28.166531 14.198197 2.7112765 128.0 +28.170118 13.983899 2.7034137 128.0 +28.294779 13.83004 2.7071338 128.0 +28.648466 13.785788 2.7324979 128.0 +28.945034 13.710412 2.7524512 128.0 +0 0 0 128.0 +30.720474 14.092473 2.9026921 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.049744 13.331165 2.9020157 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.144571 12.254601 2.8747067 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +37.829212 -0.90675598 3.2456162 128.0 +36.641716 -1.1033003 3.1453431 128.0 +31.883459 -1.1559289 2.7419674 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +31.468758 -1.7213827 2.7089939 128.0 +31.774874 -1.9337434 2.7359645 128.0 +0 -0 0 128.0 +31.714962 -2.3210521 2.7330899 128.0 +31.443853 -2.4952741 2.7112765 128.0 +30.686333 -2.6247387 2.6481197 128.0 +30.856194 -2.8300843 2.6640146 128.0 +19.445843 -1.9040824 1.6927339 128.0 +19.435774 -2.0235703 1.692903 128.0 +27.421566 -3.0250437 2.3757079 128.0 +27.405458 -3.1935883 2.3759615 128.0 +27.392269 -3.3625348 2.3765533 128.0 +27.39385 -3.5334787 2.3784981 128.0 +27.368692 -3.7010972 2.3782444 128.0 +25.241058 -3.5712483 2.1979048 128.0 +27.382328 -4.0457029 2.3834863 128.0 +27.336308 -4.2104568 2.3817108 128.0 +18.669704 -2.9931021 1.6392154 128.0 +18.553682 -3.0913904 1.6308452 128.0 +18.530437 -3.2044964 1.630507 128.0 +18.590851 -3.3325515 1.6374398 128.0 +19.160809 -3.55619 1.688422 128.0 +19.138626 -3.6736917 1.688422 128.0 +18.323063 -3.6338701 1.6198541 128.0 +37.874786 -7.7528119 3.3151989 128.0 +19.299799 -4.0743279 1.7085443 128.0 +37.813797 -8.2250576 3.3184116 128.0 +37.58857 -8.4179478 3.3032777 128.0 +37.590584 -8.6609554 3.3080122 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +37.392895 -9.3434372 3.3052223 128.0 +37.52211 -9.6207085 3.3216245 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +31.50182 -8.6981659 2.8078299 128.0 +7.9534888 -2.2490087 0.73616445 128.0 +7.9194393 -2.2919519 0.73438895 128.0 +7.8736978 -2.3311684 0.73159891 128.0 +31.873966 -9.648778 2.8605874 128.0 +25.768679 -7.9736123 2.3236268 128.0 +31.557447 -9.9773188 2.8431706 128.0 +7.979105 -2.5769732 0.74631011 128.0 +7.9621964 -2.6255717 0.7462256 128.0 +25.407524 -8.5505323 2.3095074 128.0 +0 -0 0 128.0 +25.261185 -8.8478451 2.3059564 128.0 +0 -0 0 128.0 +24.622635 -8.9649143 2.2582715 128.0 +24.645636 -9.1449442 2.2653735 128.0 +24.535002 -9.2755585 2.2604699 128.0 +0 -0 0 128.0 +20.001865 -7.8437285 1.857855 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.872515 -8.2181845 1.8595459 128.0 +19.581083 -8.2387247 1.8373946 128.0 +19.866354 -8.5025959 1.8684235 128.0 +19.805588 -8.6207552 1.8676625 128.0 +19.674868 -8.7078409 1.860476 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.9693034 -2.0878882 0.41539156 128.0 +3.9783938 -2.123934 0.41750523 128.0 +3.9223554 -2.1250508 0.41336241 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.813195 -2.1576385 0.40659863 128.0 +3.7912416 -2.1760359 0.40575317 128.0 +3.7821243 -2.2017639 0.40617588 128.0 +3.7925696 -2.2391109 0.40854323 128.0 +3.8189425 -2.2863922 0.41251695 128.0 +13.896151 -8.4346189 1.4141502 128.0 +6.7828126 -4.1744027 0.71063113 128.0 +6.7486172 -4.2106686 0.70978564 128.0 +6.687284 -4.229629 0.70623469 128.0 +4.1395965 -2.6541257 0.45208514 128.0 +4.1290822 -2.6832759 0.45267698 128.0 +4.0967283 -2.698149 0.45107058 128.0 +4.1074467 -2.7414873 0.45386064 128.0 +4.0789924 -2.7588241 0.45267698 128.0 +3.2178257 -2.2053714 0.36584678 128.0 +3.1747673 -2.2046168 0.36280307 128.0 +3.1587353 -2.2223356 0.36254942 128.0 +3.1466627 -2.2428319 0.36271852 128.0 +4.116055 -2.9718816 0.46561274 128.0 +4.0333977 -2.9500277 0.45884892 128.0 +4.1529379 -3.0767329 0.47339109 128.0 +4.1459365 -3.1111269 0.47465929 128.0 +4.117249 -3.1292727 0.47364473 128.0 +4.7849474 -3.6832039 0.54720098 128.0 +4.672667 -3.6426618 0.53756255 128.0 +4.2748146 -3.3749235 0.4969798 128.0 +4.1660771 -3.3307853 0.48742595 128.0 +4.1029654 -3.321804 0.48277584 128.0 +4.8423319 -3.9697416 0.56613958 128.0 +4.8370509 -4.0152884 0.56825328 128.0 +4.8443604 -4.0718179 0.57180429 128.0 +3.7303247 -3.1748207 0.45047873 128.0 +3.5892384 -3.092937 0.43686661 128.0 +3.7601645 -3.2806194 0.45825711 128.0 +4.2702227 -3.7719483 0.51828575 128.0 +3.3200066 -2.9691896 0.4127706 128.0 +3.8261971 -3.4642956 0.47279924 128.0 +2.5362573 -2.3250232 0.32678586 128.0 +3.7118146 -3.4445701 0.4645136 128.0 +2.8379822 -2.6663742 0.36525494 128.0 +2.7897975 -2.6535251 0.36153486 128.0 +2.7562354 -2.6540074 0.35950571 128.0 +2.3217423 -2.2633326 0.30996093 128.0 +2.2978809 -2.2677383 0.30877727 128.0 +2.2768731 -2.2747536 0.30793178 128.0 +2.251662 -2.2773459 0.30657902 128.0 +3.5989041 -3.684561 0.47186923 128.0 +3.6488788 -3.7818611 0.48074672 128.0 +3.6091051 -3.7868688 0.47871757 128.0 +3.0748739 -3.2663031 0.41547611 128.0 +3.4259653 -3.6842172 0.46172354 128.0 +3.0318635 -3.3008554 0.41513792 128.0 +2.9432545 -3.2441304 0.40651408 128.0 +2.9193032 -3.2576768 0.40600678 128.0 +2.6846025 -3.0330567 0.37852889 128.0 +4.0531559 -4.6359415 0.55734664 128.0 +2.5957291 -3.0061977 0.37184966 128.0 +1.8911505 -2.2177281 0.28214484 128.0 +1.8620998 -2.2110012 0.28011569 128.0 +1.7803085 -2.1404259 0.27106911 128.0 +1.6817439 -2.0473769 0.25965521 128.0 +1.6691498 -2.0576572 0.25965521 128.0 +1.6758083 -2.091965 0.2622762 128.0 +1.6487198 -2.0842364 0.2603316 128.0 +1.643262 -2.1037354 0.26134616 128.0 +2.1075139 -2.7322857 0.32763135 128.0 +2.0013454 -2.6278563 0.31511831 128.0 +2.0510664 -2.7276824 0.32441854 128.0 +2.0313208 -2.7362161 0.3239958 128.0 +1.877229 -2.5613871 0.30429626 128.0 +1.8462887 -2.5518699 0.30209804 128.0 +2.6038439 -3.6455424 0.41496882 128.0 +2.5584574 -3.6288779 0.41158694 128.0 +2.4814978 -3.5659966 0.40347037 128.0 +2.4381313 -3.5499461 0.40025759 128.0 +2.4873142 -3.6695826 0.4109951 128.0 +1.4679812 -2.1949043 0.25889429 128.0 +1.4577798 -2.2088597 0.25940159 128.0 +1.4409359 -2.2127535 0.25889429 128.0 +1.4197892 -2.2098181 0.25771064 128.0 +1.4014012 -2.2109146 0.25694969 128.0 +1.4073598 -2.2507284 0.26007795 128.0 +1.5881575 -2.5747769 0.2915296 128.0 +2.1566308 -3.5446191 0.38689908 128.0 +1.3462077 -2.2437863 0.25686514 128.0 +1.363373 -2.304311 0.26202255 128.0 +1.3396658 -2.2962821 0.26041615 128.0 +1.6848476 -2.9288771 0.32154393 128.0 +1.6693028 -2.9434934 0.32196668 128.0 +1.6468337 -2.9458535 0.32120574 128.0 +8.9226589 -16.189642 1.6033673 128.0 +1.1330491 -2.0867536 0.23632014 128.0 +1.1757104 -2.1973281 0.24629673 128.0 +1.1529093 -2.1868737 0.24460578 128.0 +1.1031756 -2.1240556 0.23792654 128.0 +1.089214 -2.1290104 0.23775744 128.0 +1.1286076 -2.2397559 0.24764949 128.0 +1.5627749 -3.1489537 0.33312693 128.0 +1.5565511 -3.1853392 0.33566335 128.0 +1.5266072 -3.1732814 0.3336342 128.0 +1.5352601 -3.2420218 0.33921432 128.0 +1.5283902 -3.279377 0.34183532 128.0 +1.4766637 -3.2198627 0.3354097 128.0 +1.4495009 -3.2125151 0.33388785 128.0 +1.4071196 -3.1703494 0.32915321 128.0 +1.7353339 -3.9752011 0.40287855 128.0 +1.6967576 -3.9528127 0.39983484 128.0 +0 -0 0 128.0 +7.1296573 -17.184916 1.613513 128.0 +1.6255927 -3.9879882 0.40025759 128.0 +1.0037938 -2.5068464 0.26396713 128.0 +1.5703292 -3.9918737 0.39882028 128.0 +1.5440102 -3.9967866 0.39839754 128.0 +1.2533138 -3.3046701 0.33473334 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.1794963 -3.2915366 0.33152053 128.0 +1.1764622 -3.3475931 0.335917 128.0 +1.1175849 -3.2435889 0.3259404 128.0 +0 -0 0 128.0 +1.0438805 -3.1548972 0.31680927 128.0 +1.0248101 -3.1621909 0.31689382 128.0 +0.97463655 -3.0715485 0.30826998 128.0 +0.95665848 -3.0803256 0.30852363 128.0 +0.9229598 -3.0375171 0.30421171 128.0 +0.92815655 -3.1233518 0.31131369 128.0 +0.92371309 -3.1796999 0.31579471 128.0 +0.93222308 -3.284035 0.32450309 128.0 +0.92244166 -3.3271399 0.32780045 128.0 +0.90383232 -3.3394697 0.32839227 128.0 +0.82147622 -3.1108551 0.30784726 128.0 +1.0574414 -4.1058326 0.39459291 128.0 +0.97811103 -3.896733 0.37573883 128.0 +0.95678687 -3.9133079 0.37666884 128.0 +0.70495588 -2.9623857 0.29322055 128.0 +0.69441068 -2.9996598 0.29609516 128.0 +0.76858222 -3.4150541 0.33185872 128.0 +0.87472701 -4.0008283 0.38233352 128.0 +0.74979413 -3.5333941 0.34132802 128.0 +1.7115952 -8.3141994 0.75510305 128.0 +1.6654222 -8.3489733 0.75721675 128.0 +1.6090604 -8.3326206 0.75493395 128.0 +1.5496688 -8.2982597 0.75112933 128.0 +0.53895605 -2.9889352 0.29254416 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +1.414184 -8.7587385 0.7876538 128.0 +0.64409995 -4.1522932 0.3913801 128.0 +0.61097699 -4.104919 0.38698363 128.0 +0.5369429 -3.766299 0.35764569 128.0 +0.52823406 -3.8751612 0.36669225 128.0 +0.52952749 -4.0710058 0.38317901 128.0 +0 -0 0 128.0 +0.4426043 -3.7634981 0.35637745 128.0 +0.42380962 -3.804764 0.35967481 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.1896459 -2.3599365 0.23572831 128.0 +0.17545758 -2.3650305 0.23606649 128.0 +0.25923535 -3.8075233 0.35866025 128.0 +0.23580627 -3.8080478 0.3585757 128.0 +0.21338101 -3.8263357 0.36001301 128.0 +0.14165778 -2.8572624 0.27757928 128.0 +0.11249989 -2.5912905 0.25492057 128.0 +0 -0 0 128.0 +0.1153329 -3.6999528 0.3489373 128.0 +0.090174317 -3.6029725 0.34065163 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6464229 -3.4307711 0.35773021 128.0 +-1.6630776 -3.4116471 0.35688475 128.0 +-1.6764656 -3.3861971 0.35544744 128.0 +-1.6904992 -3.3624923 0.35417923 128.0 +-1.6975113 -3.3254306 0.35164282 128.0 +-1.7146752 -3.308759 0.35105097 128.0 +-1.7715844 -3.367846 0.35773021 128.0 +-1.834443 -3.4360261 0.36533949 128.0 +-1.8531187 -3.4203246 0.36491674 128.0 +-1.869751 -3.4010308 0.36415583 128.0 +-1.9027164 -3.4112506 0.3662695 128.0 +-4.8006225 -8.4851284 0.86205554 128.0 +-4.8689618 -8.4840326 0.86484563 128.0 +-4.8587747 -8.3472118 0.85436171 128.0 +-4.9104071 -8.3181 0.85444629 128.0 +-4.9495835 -8.2681494 0.85250169 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.8494816 -8.4008656 1.1332836 128.0 +-10.047918 -8.4641733 1.1496013 128.0 +-10.024599 -8.3399067 1.1413157 128.0 +-10.064805 -8.2693844 1.140132 128.0 +-10.456573 -8.4843493 1.1774174 128.0 +-9.9501371 -7.9726577 1.1167123 128.0 +-10.352054 -8.1909256 1.1549278 128.0 +-10.392695 -8.1198902 1.1539133 128.0 +-10.551982 -8.1405725 1.1656653 128.0 +-10.826048 -8.2465525 1.1895922 128.0 +-10.50695 -7.9020634 1.1503623 128.0 +-11.128825 -8.2633705 1.2109827 128.0 +-10.588664 -7.7619281 1.1488404 128.0 +-10.628019 -7.6909695 1.1479949 128.0 +-10.685551 -7.633142 1.149094 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.454226 -8.9372988 1.6236587 128.0 +-16.500849 -8.8319368 1.6228977 128.0 +-16.615543 -8.7625971 1.6287315 128.0 +-16.647776 -8.6494551 1.6267024 128.0 +-16.465481 -8.4268398 1.6042973 128.0 +-16.604074 -8.369606 1.6125829 128.0 +-16.748829 -8.3140888 1.6214604 128.0 +-6.9979925 -3.4201751 0.69575077 128.0 +-7.0035825 -3.3698266 0.69431347 128.0 +-7.0169239 -3.3233776 0.69363713 128.0 +-7.0182185 -3.2714186 0.69186163 128.0 +-7.0571785 -3.2370188 0.69363713 128.0 +-7.0814486 -3.1957054 0.69405985 128.0 +-7.2994556 -3.2403376 0.71249115 128.0 +-7.3274193 -3.1990767 0.71325213 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.381381 -3.0621333 0.71291393 128.0 +-7.394495 -3.0145271 0.71240664 128.0 +-7.3980532 -2.9631701 0.71105385 128.0 +-7.4049687 -2.9133425 0.71003932 128.0 +-0 -0 0 128.0 +-21.683807 -8.2260618 2.0026848 128.0 +-22.151272 -8.2482891 2.0404775 128.0 +-22.690002 -8.2907324 2.0846112 128.0 +-22.473124 -8.0555258 2.0605152 128.0 +-0 -0 0 128.0 +-22.298038 -7.6853013 2.0360811 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-28.390957 -9.0122023 2.562304 128.0 +-27.646421 -8.5894823 2.4912844 128.0 +-27.302013 -8.2991257 2.4561126 128.0 +-28.446972 -8.4568558 2.5530038 128.0 +-28.530859 -8.291604 2.5558784 128.0 +-28.561069 -8.1106701 2.5541029 128.0 +-0 -0 0 128.0 +-12.874602 -3.4857049 1.1665953 128.0 +-12.978597 -3.4285309 1.1738664 128.0 +-12.89518 -3.3219819 1.1647353 128.0 +-12.776156 -3.2078502 1.1525605 128.0 +-12.850768 -3.1428912 1.1573796 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-40.454212 -9.1089239 3.5533688 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-18.148788 -3.7366638 1.6070874 128.0 +-0 -0 0 128.0 +-17.947714 -3.466238 1.585866 128.0 +-17.906937 -3.344521 1.5805395 128.0 +-18.245811 -3.2920914 1.6080174 128.0 +-25.079296 -4.3664865 2.1948609 128.0 +-18.226858 -3.0582101 1.6030291 128.0 +-19.521103 -3.1523676 1.7126871 128.0 +-18.243322 -2.8312516 1.6013381 128.0 +-18.405226 -2.7408369 1.6137667 128.0 +-24.151873 -3.4453866 2.1049025 128.0 +-0 -0 0 128.0 +-19.377403 -2.521981 1.692903 128.0 +-25.59856 -3.1721904 2.2235227 128.0 +-24.756603 -2.9137189 2.1499662 128.0 +-23.575771 -2.6281631 2.0476639 128.0 +-23.791624 -2.5045307 2.0647426 128.0 +-0 -0 0 128.0 +-23.358227 -2.1694336 2.0253434 128.0 +-23.866453 -2.0690207 2.0675325 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-23.704178 -1.4699163 2.0500312 128.0 +-0 -0 0 128.0 +-43.411266 -2.1578948 3.7228866 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.162308 8.876894 3.6510806 128.0 +-49.323586 9.2188835 3.6670353 128.0 +-49.359119 9.5393353 3.6738937 128.0 +-49.386707 9.8593979 3.6803191 128.0 +-49.410271 10.179755 3.6866 128.0 +-49.505905 10.516524 3.6983674 128.0 +-49.52034 10.837576 3.7042873 128.0 +-49.579399 11.169724 3.7136726 128.0 +-49.553654 11.48386 3.7169213 128.0 +-49.642345 11.82584 3.7288332 128.0 +-49.660885 12.152741 3.7356915 128.0 +-49.737251 12.495384 3.747026 128.0 +-49.745602 12.82249 3.7534513 128.0 +-49.802914 13.163676 3.7637029 128.0 +-49.732758 13.472143 3.764569 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.962105 14.123637 3.1712809 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-35.390694 14.181326 2.794718 128.0 +-0 0 0 128.0 +-35.323624 14.660055 2.8033092 128.0 +-34.748783 14.672049 2.7652631 128.0 +-34.916534 14.995989 2.7856216 128.0 +-34.172184 14.925293 2.7341475 128.0 +-34.165642 15.172744 2.7409337 128.0 +-57.879444 26.131144 4.6316886 128.0 +-34.186279 15.686961 2.7576103 128.0 +-56.651394 26.418316 4.559567 128.0 +-56.418827 26.73254 4.554008 128.0 +-0 0 0 128.0 +-56.106239 27.432512 4.5555964 128.0 +-0 0 0 128.0 +-55.788532 28.130632 4.5574732 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.519325 19.019003 2.8246062 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.287041 13.86916 1.8740308 128.0 +-21.234833 14.021499 1.8769186 128.0 +-20.864086 13.961261 1.8521562 128.0 +-21.062819 14.282146 1.877063 128.0 +-21.17783 14.550634 1.8948948 128.0 +-20.33836 14.158294 1.8287654 128.0 +-20.869717 14.719165 1.8835604 128.0 +-20.219889 14.447403 1.8338189 128.0 +-20.323954 14.710977 1.8510733 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-41.433456 31.973949 3.8232627 128.0 +-0 0 0 128.0 +-40.123737 31.75638 3.7388682 128.0 +-39.832401 31.925251 3.7299883 128.0 +-0 0 0 128.0 +-37.666935 30.956345 3.5640872 128.0 +-37.035465 30.820026 3.5225756 128.0 +-35.915157 30.262596 3.4344993 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.750717 19.022367 2.1265647 128.0 +-22.319065 19.762474 2.1928387 128.0 +-21.318106 19.11075 2.1073611 128.0 +-0 0 0 128.0 +-35.804665 32.899784 3.5546296 128.0 +-35.804401 33.307037 3.5746274 128.0 +-36.132298 34.028027 3.6276176 128.0 +-15.138253 14.431985 1.5489423 128.0 +-15.060897 14.535683 1.5500973 128.0 +-14.966431 14.622942 1.549592 128.0 +-31.18364 30.846024 3.2099044 128.0 +-30.970528 31.013493 3.2075219 128.0 +-14.334723 14.530966 1.5124844 128.0 +-14.269655 14.643651 1.5150112 128.0 +-31.821976 33.061539 3.35653 128.0 +-0 0 0 128.0 +-14.07758 14.988894 1.5234579 128.0 +-13.956857 15.044278 1.5204258 128.0 +-14.011846 15.290681 1.5362362 128.0 +-13.896343 15.352704 1.533926 128.0 +-13.777949 15.410912 1.531327 128.0 +-16.464998 18.645788 1.8355516 128.0 +-16.251293 18.632959 1.8246503 128.0 +-0 0 0 128.0 +-15.768721 18.533949 1.7964226 128.0 +-16.51124 19.649805 1.8928013 128.0 +-24.272051 29.249241 2.7861991 128.0 +-24.059883 29.358278 2.7825172 128.0 +-15.377516 18.999861 1.8042917 128.0 +-24.602537 30.783422 2.8874149 128.0 +-15.508365 19.64986 1.8469582 128.0 +-15.354399 19.702166 1.8430598 128.0 +-23.905844 31.06743 2.8724706 128.0 +-23.699684 31.193674 2.8706658 128.0 +-23.513823 31.346483 2.8713877 128.0 +-25.657326 34.645031 3.1555426 128.0 +-25.209396 34.480545 3.1267371 128.0 +-25.078485 34.746998 3.1367722 128.0 +-22.93075 32.185417 2.8955004 128.0 +-22.697836 32.275745 2.8910968 128.0 +-22.511311 32.431618 2.8926127 128.0 +-23.465145 34.25267 3.0403214 128.0 +-23.296429 34.457977 3.0457358 128.0 +-23.046366 34.543022 3.0407543 128.0 +-21.803495 33.118427 2.9051023 128.0 +-0 0 0 128.0 +-34.241798 53.429089 4.6284399 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.9783821 14.592268 1.2751836 128.0 +-8.9554195 14.757082 1.2844965 128.0 +-8.8636789 14.810042 1.2843522 128.0 +-8.5085526 14.416618 1.2467391 128.0 +-8.4384937 14.500451 1.2494104 128.0 +-10.932629 19.055017 1.6251789 128.0 +-10.561663 18.672895 1.5878547 128.0 +-8.3071117 14.898989 1.269769 128.0 +-8.2261028 14.96891 1.2713573 128.0 +-8.0676117 14.896315 1.2612501 128.0 +-8.1117525 15.199844 1.2821141 128.0 +-7.8855958 14.996843 1.2614667 128.0 +-16.872009 32.573807 2.6903257 128.0 +-16.122929 31.600805 2.6028991 128.0 +-15.479586 30.805248 2.5304887 128.0 +-9.6515846 19.503613 1.6101626 128.0 +-9.5531349 19.606403 1.6137002 128.0 +-8.9331884 18.623253 1.5300997 128.0 +-8.8200274 18.68042 1.5303164 128.0 +-8.7052402 18.734188 1.5303164 128.0 +-14.192173 31.041187 2.5055819 128.0 +-14.065263 31.269587 2.5168443 128.0 +-13.845288 31.292364 2.5118628 128.0 +-13.646654 31.362095 2.5107076 128.0 +-8.5701723 20.029528 1.6119674 128.0 +-8.4277782 20.035767 1.6083578 128.0 +-12.646802 30.59129 2.431078 128.0 +-0 0 0 128.0 +-11.81537 29.603846 2.3422074 128.0 +-11.627678 29.660927 2.3410523 128.0 +-11.458719 29.766155 2.3437235 128.0 +-11.298779 29.896549 2.3484161 128.0 +-11.201139 30.197229 2.3663201 128.0 +-11.038155 30.32725 2.3710849 128.0 +-10.887743 30.494915 2.3788097 128.0 +-10.516527 30.035864 2.3385255 128.0 +-10.790833 31.436586 2.4408243 128.0 +-10.595512 31.495588 2.4403188 128.0 +-10.193834 30.928175 2.3921657 128.0 +-10.004483 30.992041 2.3923099 128.0 +-9.8246498 31.086128 2.3948367 128.0 +-9.6437435 31.178225 2.3972914 128.0 +-9.2962828 30.721298 2.3583066 128.0 +-9.0561037 30.603695 2.3451674 128.0 +-8.8276958 30.518801 2.3346272 128.0 +-4.0799923 14.434207 1.120761 128.0 +-3.941468 14.278216 1.1071886 128.0 +-3.806051 14.124928 1.093905 128.0 +-3.7167752 14.13837 1.093183 128.0 +-3.5819228 13.973472 1.0791774 128.0 +-3.7012763 14.816742 1.1404699 128.0 +-3.4945605 14.363327 1.1050228 128.0 +-3.4047546 14.377705 1.1045175 128.0 +-3.3187087 14.408045 1.1052394 128.0 +-3.2809942 14.654919 1.1220605 128.0 +-3.2323227 14.864828 1.1361383 128.0 +-4.1644249 19.735645 1.4950136 128.0 +-4.0172668 19.633795 1.4856284 128.0 +-0 0 0 128.0 +-3.8017657 19.815811 1.4955189 128.0 +-3.6602843 19.731873 1.4876498 128.0 +-0 0 0 128.0 +-3.4063213 19.708471 1.4827406 128.0 +-3.2768118 19.677841 1.4789865 128.0 +-4.4099998 27.527046 2.052927 128.0 +-4.9536476 32.184822 2.3920934 128.0 +-4.0657516 27.537649 2.0498948 128.0 +-4.2124376 29.795975 2.2131972 128.0 +-4.340764 32.125252 2.3814809 128.0 +-4.1579676 32.263062 2.3896387 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.3147097 30.076731 2.2252536 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.3662879 36.747593 2.706064 128.0 +-2.5054138 29.327168 2.1655493 128.0 +-0 0 0 128.0 +-1.937393 26.508757 1.9589307 128.0 +-1.8421849 27.529245 2.0321352 128.0 +-1.6657994 27.417578 2.0232553 128.0 +-0 0 0 128.0 +-1.6775286 34.631683 2.5447111 128.0 +-1.458811 34.494839 2.5340986 128.0 +-0 0 0 128.0 +-1.0057286 33.52018 2.4624102 128.0 +-0.64360231 26.960762 1.9870863 128.0 +-0.47795036 26.952236 1.98622 128.0 +-0.38045022 32.830894 2.4115856 128.0 +-0.17690596 32.446629 2.3836467 128.0 +0.02222706 32.503952 2.3877618 128.0 +0.2215509 32.486248 2.3865345 128.0 +0.35983568 27.785969 2.0464296 128.0 +0.61906493 32.422249 2.3822751 128.0 +0 0 0 128.0 +1.0188932 32.476013 2.3868954 128.0 +0 0 0 128.0 +1.1829083 27.096233 1.9982041 128.0 +1.3551539 27.209 2.0069396 128.0 +0 0 0 128.0 +2.1293917 34.27607 2.5208149 128.0 +2.3434727 34.318085 2.5248578 128.0 +2.0479004 27.508707 2.031702 128.0 +1.6238855 20.14678 1.4980457 128.0 +1.7504071 20.170221 1.5005003 128.0 +1.8687781 20.101501 1.4963131 128.0 +1.9976965 20.146229 1.5004281 128.0 +2.102766 19.958027 1.4876498 128.0 +2.2488654 20.156874 1.5030992 128.0 +2.3574452 20.014915 1.4937862 128.0 +2.491508 20.091135 1.5004281 128.0 +4.183919 32.117893 2.3794594 128.0 +4.3594561 31.934488 2.3679807 128.0 +4.5537691 31.896278 2.3671865 128.0 +4.7416015 31.815453 2.3633602 128.0 +4.8817625 31.43194 2.3374426 128.0 +5.0637107 31.33444 2.3325336 128.0 +5.2837973 31.469011 2.3447342 128.0 +5.5219908 31.6954 2.3637934 128.0 +5.6360726 31.216295 2.3310897 128.0 +5.8385019 31.23995 2.3354213 128.0 +2.7860005 14.419906 1.0980922 128.0 +2.9211001 14.636302 1.1153466 128.0 +2.9573104 14.358255 1.096143 128.0 +3.0754099 14.481304 1.106611 128.0 +3.3032506 15.097422 1.1536814 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.5244145 14.798294 1.1361383 128.0 +3.5980775 14.706636 1.1309403 128.0 +3.6520345 14.540151 1.1201835 128.0 +3.5131228 13.632782 1.054054 128.0 +3.5317078 13.36508 1.0356445 128.0 +3.9633896 14.634123 1.1324564 128.0 +10.22475 36.848675 2.8030202 128.0 +10.487185 36.913807 2.8126943 128.0 +10.774474 37.058502 2.8285048 128.0 +11.089523 37.287098 2.8508127 128.0 +11.399074 37.484585 2.8709548 128.0 +10.333581 33.247028 2.5551069 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +8.0369473 20.058247 1.5991169 128.0 +0 0 0 128.0 +8.289753 19.975613 1.6004887 128.0 +8.0846987 19.14888 1.5395571 128.0 +8.1929884 19.077835 1.5378966 128.0 +8.4987335 19.459526 1.5720443 128.0 +8.3839769 18.880146 1.5303164 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.061195 31.752104 2.7156658 128.0 +19.325676 31.749563 2.7254119 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.863455 50.240028 4.3412528 128.0 +32.476402 50.518429 4.3821149 128.0 +31.933073 49.009586 4.2690592 128.0 +32.213951 48.783596 4.2665324 128.0 +21.248585 31.753355 2.8005657 128.0 +13.756501 20.287691 1.809273 128.0 +21.649073 31.508297 2.8021541 128.0 +14.063694 20.20248 1.8167812 128.0 +14.365031 20.367653 1.839089 128.0 +0 0 0 128.0 +14.330824 19.798805 1.8041472 128.0 +14.261533 19.450705 1.7808287 128.0 +0 0 0 128.0 +14.755188 19.614557 1.8116554 128.0 +14.80514 19.431625 1.8032809 128.0 +15.032557 19.480967 1.8161315 128.0 +30.38623 38.88052 3.6068258 128.0 +30.569752 38.624519 3.6004727 128.0 +30.731941 38.343609 3.5918818 128.0 +30.925779 38.103981 3.587189 128.0 +31.103901 37.84647 3.5809083 128.0 +31.25132 37.553711 3.5713787 128.0 +31.487585 37.368877 3.5721006 128.0 +32.008247 37.517166 3.60466 128.0 +32.385853 37.491394 3.621048 128.0 +36.330502 41.539707 4.0295205 128.0 +0 0 0 128.0 +43.560047 48.58913 4.758461 128.0 +43.47393 47.898495 4.7171659 128.0 +43.742043 47.603668 4.7144947 128.0 +44.040783 47.342407 4.7152891 128.0 +18.967598 20.141298 2.037622 128.0 +0 0 0 128.0 +19.126749 19.817318 2.0285978 128.0 +19.662741 20.124035 2.071553 128.0 +0 0 0 128.0 +19.481222 19.454851 2.0278759 128.0 +0 0 0 128.0 +19.923519 19.414085 2.0485954 128.0 +20.033644 19.283173 2.047729 128.0 +39.735821 37.778763 4.003675 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +43.580421 38.959702 4.2662435 128.0 +43.800713 38.67572 4.2645111 128.0 +0 0 0 128.0 +17.659985 15.212996 1.7222073 128.0 +17.57675 14.954413 1.7054584 128.0 +17.678104 14.854624 1.7063969 128.0 +17.960039 14.904463 1.7243732 128.0 +18.028011 14.775016 1.7222073 128.0 +18.434656 14.920115 1.7516624 128.0 +18.095768 14.463008 1.7118114 128.0 +18.134844 14.312776 1.7072632 128.0 +18.642439 14.528606 1.7458147 128.0 +18.420576 14.174914 1.7174425 128.0 +18.583448 14.119544 1.7243732 128.0 +18.723192 14.04535 1.7292101 128.0 +18.834669 13.949196 1.7315203 128.0 +20.849888 15.244333 1.9045688 128.0 +21.001265 15.158139 1.9097668 128.0 +21.225475 15.122745 1.9214622 128.0 +21.191408 14.903296 1.9102721 128.0 +20.887518 14.498874 1.8754747 128.0 +21.025459 14.404257 1.8798064 128.0 +21.062216 14.240342 1.8753303 128.0 +21.154175 14.114161 1.8757635 128.0 +21.293695 14.019194 1.8803838 128.0 +21.453758 13.936628 1.8868091 128.0 +21.72781 13.925814 1.9030528 128.0 +24.457443 15.464236 2.1295247 128.0 +24.740591 15.43158 2.1456239 128.0 +24.85775 15.293594 2.147573 128.0 +0 0 0 128.0 +24.066162 14.40253 2.0651278 128.0 +24.109413 14.228233 2.0613737 128.0 +0 0 0 128.0 +24.55472 14.087639 2.0841148 128.0 +0 0 0 128.0 +24.760595 13.80468 2.0870025 128.0 +0 0 0 128.0 +25.747311 13.943368 2.1544316 128.0 +28.195948 15.046289 2.3483438 128.0 +28.181801 14.817305 2.3396807 128.0 +28.163252 14.587686 2.3308008 128.0 +28.156277 14.365652 2.323004 128.0 +28.171705 14.156346 2.3171563 128.0 +28.178474 13.943855 2.3107309 128.0 +28.356754 13.816123 2.3182392 128.0 +28.643337 13.738915 2.3344827 128.0 +28.916506 13.652321 2.3496435 128.0 +30.794323 14.308407 2.4928758 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.113331 13.538419 2.491071 128.0 +31.23708 13.36491 2.4943197 128.0 +31.416872 13.214365 2.5020444 128.0 +0 0 0 128.0 +36.6045 14.870162 2.8948507 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +36.748482 13.888037 2.8786073 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +36.348709 -1.8107553 2.6693175 128.0 +32.221149 -1.8032628 2.3709407 128.0 +32.029297 -1.9897343 2.3578734 128.0 +0 -0 0 128.0 +25.682556 -1.9118736 1.8991543 128.0 +31.505077 -2.5400596 2.3228595 128.0 +36.515781 -3.1698585 2.6880879 128.0 +31.032583 -2.8856502 2.2909498 128.0 +30.964668 -3.0710845 2.2873402 128.0 +25.487839 -2.6857107 1.89013 128.0 +27.426584 -3.0603597 2.0325685 128.0 +27.428091 -3.2310398 2.0340846 128.0 +27.397852 -3.3980465 2.0333626 128.0 +27.408134 -3.5702164 2.0356727 128.0 +27.396582 -3.7398069 2.0364668 128.0 +27.394842 -3.9109406 2.0380552 128.0 +27.366383 -4.0783706 2.0377662 128.0 +19.168507 -2.9766386 1.4391356 128.0 +19.633326 -3.1723421 1.4745827 128.0 +18.723318 -3.1432524 1.4092474 128.0 +18.612299 -3.2421534 1.4025333 128.0 +19.286968 -3.4817877 1.4536465 128.0 +19.236809 -3.5947499 1.4515529 128.0 +18.916693 -3.6551759 1.429606 128.0 +19.190269 -3.8303492 1.4514807 128.0 +19.178127 -3.9504418 1.452347 128.0 +38.104858 -8.0943279 2.8547111 128.0 +0 -0 0 128.0 +37.60276 -8.47122 2.8250394 128.0 +37.921238 -8.7878113 2.8526175 128.0 +37.73756 -8.989583 2.8430157 128.0 +32.184731 -7.8756466 2.4333882 128.0 +32.099041 -8.0637445 2.4306448 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +31.589703 -8.7653189 2.4079759 128.0 +7.9260449 -2.2508249 0.63143164 128.0 +7.9178309 -2.3010869 0.63186485 128.0 +0 -0 0 128.0 +31.444279 -9.5620174 2.4139681 128.0 +0 -0 0 128.0 +25.726479 -8.1692638 1.988819 128.0 +7.9763422 -2.585964 0.64197195 128.0 +7.9527502 -2.6323488 0.64139438 128.0 +25.407341 -8.5858536 1.9762572 128.0 +25.315521 -8.7282581 1.9732972 128.0 +26.439487 -9.2977381 2.063684 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.008368 -2.7079651 0.57887459 128.0 +20.11832 -7.9181051 1.5999833 128.0 +19.932335 -7.9864898 1.5892986 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.763577 -8.3442659 1.5878547 128.0 +19.564459 -8.4020023 1.5762316 128.0 +19.785824 -8.6412621 1.5978175 128.0 +19.615753 -8.7106829 1.5885767 128.0 +19.645567 -8.868638 1.5952185 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.0051303 -2.0803406 0.36171573 128.0 +3.9940546 -2.1058073 0.3618601 128.0 +3.9740241 -2.1265082 0.36128256 128.0 +3.9512613 -2.1456144 0.36048841 128.0 +3.8672731 -2.1308126 0.35464072 128.0 +3.8610897 -2.1583967 0.35521829 128.0 +3.8512433 -2.1840162 0.35550705 128.0 +3.88272 -2.2334785 0.35926113 128.0 +7.1326227 -4.162539 0.63280332 128.0 +13.726668 -8.1253586 1.1896338 128.0 +13.639784 -8.187356 1.1865295 128.0 +13.803131 -8.4010658 1.2046502 128.0 +13.807341 -8.520175 1.209415 128.0 +6.7673702 -4.232831 0.61280566 128.0 +0 -0 0 128.0 +7.0748358 -4.546946 0.64377677 128.0 +6.9874725 -4.5516114 0.63865101 128.0 +3.9157321 -2.5844359 0.37463841 128.0 +3.8724468 -2.5901082 0.37225601 128.0 +6.7043929 -4.5451064 0.62132454 128.0 +3.8666756 -2.655509 0.37456623 128.0 +3.8363936 -2.6694965 0.37333891 128.0 +4.695292 -3.3104208 0.45087504 128.0 +4.0394907 -2.8851199 0.39434731 128.0 +4.1210866 -2.9817882 0.40322715 128.0 +4.1702757 -3.0565615 0.40929142 128.0 +4.12502 -3.0624664 0.40690902 128.0 +4.8808541 -3.6705532 0.47708136 128.0 +4.8669667 -3.707082 0.4778755 128.0 +4.3356256 -3.3444483 0.43138272 128.0 +3.8010788 -2.9693067 0.384168 128.0 +3.7108381 -2.9356256 0.37752616 128.0 +5.0430212 -4.0406141 0.50278234 128.0 +3.6412344 -2.9539144 0.37442183 128.0 +4.2078791 -3.4568703 0.42921689 128.0 +4.8305645 -4.0185518 0.48985967 128.0 +4.8058162 -4.0481157 0.48985967 128.0 +3.7360878 -3.186101 0.39044884 128.0 +3.6794844 -3.1770165 0.38691136 128.0 +3.5886002 -3.1371536 0.38005295 128.0 +4.4839978 -3.9691145 0.4684903 128.0 +3.3374388 -2.9905379 0.35940552 128.0 +3.3352742 -3.0257072 0.36099377 128.0 +3.9416275 -3.6204188 0.42243069 128.0 +3.9149573 -3.64046 0.42199752 128.0 +3.1962435 -3.0086308 0.35276368 128.0 +3.5985682 -3.4294422 0.39485267 128.0 +2.7902229 -2.6915908 0.3156561 128.0 +2.7700884 -2.7051754 0.31529513 128.0 +2.289705 -2.2633851 0.26808041 128.0 +4.4358444 -4.4405746 0.48935431 128.0 +3.6002409 -3.6482761 0.4060427 128.0 +2.2476556 -2.3051476 0.26808041 128.0 +4.2392354 -4.4028988 0.47744235 128.0 +3.513236 -3.693687 0.40402126 128.0 +3.1163464 -3.3167479 0.3644591 128.0 +3.1020412 -3.3423879 0.36510882 128.0 +4.1817884 -4.562233 0.48300126 128.0 +2.6337943 -2.9084024 0.31904921 128.0 +3.0187221 -3.3751252 0.36279863 128.0 +3.9182038 -4.4358182 0.46343675 128.0 +2.7004349 -3.0947008 0.33233285 128.0 +2.6950648 -3.1270819 0.33384892 128.0 +2.6687176 -3.1352031 0.33305478 128.0 +1.710125 -2.0335605 0.22736311 128.0 +1.6957043 -2.0417128 0.22714654 128.0 +1.6812482 -2.0497646 0.22692995 128.0 +1.6717765 -2.0639186 0.22729091 128.0 +1.6565905 -2.0710208 0.22700214 128.0 +1.6506484 -2.0897591 0.22779627 128.0 +1.6396339 -2.1022081 0.22801286 128.0 +1.6340028 -2.1217148 0.22887918 128.0 +2.1060545 -2.7702336 0.28692296 128.0 +2.0944033 -2.7902849 0.28757271 128.0 +2.0309446 -2.7405634 0.28194159 128.0 +1.7215372 -2.3528059 0.2460613 128.0 +2.6818259 -3.7139587 0.36662489 128.0 +2.6404681 -3.7043495 0.36431471 128.0 +2.6974359 -3.8338866 0.37434962 128.0 +2.492445 -3.5889869 0.35131982 128.0 +1.6355909 -2.385581 0.24440084 128.0 +1.5410422 -2.2774129 0.23407714 128.0 +1.5054518 -2.2544675 0.23126158 128.0 +1.4893967 -2.26033 0.2309728 128.0 +1.4744129 -2.2677534 0.23082842 128.0 +1.4421731 -2.2482061 0.22837383 128.0 +1.4288841 -2.2578559 0.22844602 128.0 +1.4150033 -2.2665808 0.22844602 128.0 +2.4698055 -4.0124688 0.37608227 128.0 +2.4368606 -4.0139046 0.37492719 128.0 +1.3556304 -2.2631433 0.22599143 128.0 +2.3864067 -4.0417881 0.3747828 128.0 +2.3505266 -4.0373893 0.37319455 128.0 +2.3118126 -4.0275116 0.37117311 128.0 +10.498816 -18.561769 1.578614 128.0 +10.457574 -18.756516 1.589443 128.0 +8.9691219 -16.32119 1.383041 128.0 +1.6252706 -2.9989865 0.28194159 128.0 +1.1861367 -2.2204597 0.21725598 128.0 +1.1734182 -2.2294617 0.21740037 128.0 +1.1578816 -2.233077 0.2171116 128.0 +10.476711 -20.533361 1.7035813 128.0 +1.1335256 -2.2533565 0.21761696 128.0 +1.576152 -3.1828225 0.29212093 128.0 +1.5653294 -3.2103665 0.2935648 128.0 +1.5460328 -3.2208102 0.29363701 128.0 +1.5241122 -3.2257261 0.29327604 128.0 +1.4933645 -3.2114992 0.291399 128.0 +1.4678253 -3.2079027 0.29038829 128.0 +7.8004642 -17.340548 1.411341 128.0 +1.4089795 -3.1818919 0.28692296 128.0 +1.386246 -3.1831608 0.28634542 128.0 +7.4368062 -17.38032 1.4033997 128.0 +7.2851686 -17.318975 1.3950251 128.0 +7.1562843 -17.308968 1.3907658 128.0 +7.0525713 -17.35902 1.3912711 128.0 +8.1677227 -20.463552 1.6298715 128.0 +7.8818512 -20.1047 1.5981063 128.0 +7.7913051 -20.238317 1.6047481 128.0 +1.2572964 -3.3238523 0.29226533 128.0 +1.0072722 -2.7124395 0.24447304 128.0 +0.99436212 -2.7288787 0.24526717 128.0 +0.98195863 -2.7471399 0.24620569 128.0 +0.97661877 -2.7860613 0.24873248 128.0 +0.9663049 -2.8118122 0.25024855 128.0 +0.95889139 -2.8469939 0.25248656 128.0 +0.95045775 -2.880295 0.25458017 128.0 +0.95605028 -2.9582098 0.2600669 128.0 +0.96222425 -3.0410542 0.26591459 128.0 +0.94796699 -3.0611939 0.26699749 128.0 +0.92858833 -3.0650437 0.26685309 128.0 +0.91033 -3.0725965 0.26699749 128.0 +0.91224253 -3.1499836 0.27241203 128.0 +0.94225931 -3.3302066 0.28555128 128.0 +0.92578763 -3.3503473 0.28663421 128.0 +0.86785638 -3.2172837 0.27623829 128.0 +0.82198799 -3.1231906 0.26880234 128.0 +0.9828015 -3.8305836 0.32128721 128.0 +0.9580707 -3.8317034 0.32092625 128.0 +0.75587553 -3.1029027 0.26620337 128.0 +0.74003887 -3.1210701 0.26721409 128.0 +0.78667068 -3.4113081 0.28843904 128.0 +0.77356631 -3.4511099 0.29103801 128.0 +0.76635844 -3.5201173 0.2958028 128.0 +1.7779984 -8.4228611 0.65814334 128.0 +1.7070951 -8.3398046 0.65121275 128.0 +0.79992419 -4.0306368 0.33247724 128.0 +0.79471612 -4.137341 0.3399854 128.0 +1.5389307 -8.2923403 0.64550942 128.0 +0.64682353 -3.6048455 0.30013445 128.0 +0.61501336 -3.5527253 0.29601941 128.0 +1.4397532 -8.6419659 0.66918898 128.0 +0.65165657 -4.0612879 0.33276603 128.0 +0.62778652 -4.0721107 0.33327138 128.0 +0.60322565 -4.078846 0.33348796 128.0 +0.58781797 -4.1506133 0.33846933 128.0 +0.5093326 -3.7617416 0.3098084 128.0 +0.48981002 -3.7924941 0.31182984 128.0 +0.46495256 -3.7825584 0.3108913 128.0 +0.43746829 -3.7486842 0.30822015 128.0 +0 -0 0 128.0 +0.39576495 -3.7954361 0.31125227 128.0 +2.1241627 -21.715271 1.6143498 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0.22938477 -3.1243927 0.26179954 128.0 +0.21360366 -3.1764948 0.26548141 128.0 +0.19362548 -3.1697812 0.26490387 128.0 +0.1646096 -2.9956295 0.25219777 128.0 +0.13494162 -2.7634668 0.23530443 128.0 +0.13811077 -3.2405703 0.26981306 128.0 +0.11862033 -3.252321 0.27060717 128.0 +0.098811619 -3.2579722 0.27096814 128.0 +0.079104327 -3.2704825 0.27183446 128.0 +0.059494194 -3.2968345 0.2737115 128.0 +0.040681221 -3.4198084 0.28259134 128.0 +0.018892037 -3.2713845 0.27183446 128.0 +-0.001117967 -3.1836684 0.26548141 128.0 +-0.020761976 -3.1995595 0.26663652 128.0 +-0.040678777 -3.2213128 0.26822478 128.0 +-0.060806073 -3.2399495 0.26959646 128.0 +-0.08101242 -3.2524772 0.27053499 128.0 +-0.10206366 -3.2868104 0.27306178 128.0 +-0.12346438 -3.3190129 0.27544418 128.0 +-0.14448029 -3.3331394 0.27652708 128.0 +-0.1655252 -3.3441441 0.2773934 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.4662026 -21.47769 1.5932692 128.0 +-1.5998119 -21.493155 1.5950742 128.0 +-1.7314208 -21.47995 1.5948576 128.0 +-1.8652576 -21.492769 1.5965902 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6467557 -3.4236007 0.31002498 128.0 +-1.6725508 -3.4232881 0.31081912 128.0 +-1.6819905 -3.3897352 0.30894208 128.0 +-1.6937762 -3.3615394 0.30749819 128.0 +-1.7116431 -3.3457565 0.30706504 128.0 +-1.7312201 -3.333421 0.30692065 128.0 +-1.8042308 -3.4224191 0.31507856 128.0 +-1.8327292 -3.4253526 0.31623363 128.0 +-1.8575218 -3.4210539 0.3168112 128.0 +-1.8832935 -3.4183261 0.31753314 128.0 +-1.9232218 -3.4406543 0.32034868 128.0 +-4.7613678 -8.3932762 0.73351365 128.0 +-4.8112855 -8.36131 0.73329705 128.0 +-4.836854 -8.2877016 0.72961521 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.9191599 -8.4399576 0.97774518 128.0 +-10.021159 -8.4212809 0.98250997 128.0 +-10.113323 -8.3933897 0.98633623 128.0 +-10.112947 -8.2888212 0.98149925 128.0 +-10.445054 -8.4543734 1.0077056 128.0 +-10.553611 -8.4355793 1.0129757 128.0 +-10.389076 -8.2001314 0.99305028 128.0 +-10.399073 -8.1049643 0.98936838 128.0 +-10.37114 -7.9813986 0.98229337 128.0 +-10.4088 -7.9091654 0.98128265 128.0 +-10.540113 -7.9073906 0.98879081 128.0 +-10.637328 -7.8787766 0.99319464 128.0 +-10.711236 -7.8321953 0.99550486 128.0 +-10.752622 -7.7616553 0.99492729 128.0 +-10.848783 -7.7302551 0.99925894 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.352236 -8.8559847 1.3810918 128.0 +-16.459064 -8.7836552 1.3854234 128.0 +-16.554142 -8.7043123 1.3888165 128.0 +-16.489449 -8.5415668 1.3792148 128.0 +-16.468695 -8.4030619 1.3732948 128.0 +-0 -0 0 128.0 +-16.6108 -8.2202377 1.3765435 128.0 +-7.0076547 -3.4152889 0.59930545 128.0 +-7.0050964 -3.3610122 0.59742838 128.0 +-7.0183721 -3.3145602 0.59685081 128.0 +-7.037673 -3.2710135 0.59677863 128.0 +-7.0748463 -3.2356486 0.59815031 128.0 +-7.2346482 -3.2551813 0.60926819 128.0 +-7.2481008 -3.2079043 0.6087628 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-22.25441 -8.7244892 1.7652348 128.0 +-22.079473 -8.4999943 1.7475474 128.0 +-21.952078 -8.2966642 1.7336862 128.0 +-22.176508 -8.2263241 1.7471142 128.0 +-22.40933 -8.1566095 1.761192 128.0 +-22.4552 -8.0176144 1.7609032 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-28.422279 -8.9828568 2.1926219 128.0 +-27.539248 -8.5183144 2.1215832 128.0 +-27.516533 -8.3266468 2.1159523 128.0 +-28.470909 -8.425065 2.1841753 128.0 +-28.514404 -8.2479954 2.1835978 128.0 +-28.577913 -8.0766764 2.1846085 128.0 +-28.652893 -7.9083371 2.1865578 128.0 +-0 -0 0 128.0 +-12.974053 -3.4107933 1.0060451 128.0 +-12.810199 -3.2838335 0.9922561 128.0 +-12.80785 -3.1996119 0.9905957 128.0 +-12.844687 -3.1252069 0.99189514 128.0 +-34.068565 -8.0660543 2.5691848 128.0 +-34.099922 -7.8528333 2.5678852 128.0 +-34.255501 -7.6676316 2.5758986 128.0 +-35.022156 -7.6138582 2.6292498 128.0 +-0 -0 0 128.0 +-34.922405 -7.1445336 2.6151721 128.0 +-0 -0 0 128.0 +-18.939125 -3.6336219 1.4309055 128.0 +-18.263807 -3.3880453 1.3795757 128.0 +-18.31665 -3.2817197 1.3819581 128.0 +-0 -0 0 128.0 +-18.38801 -3.0621035 1.3843405 128.0 +-18.26759 -2.9269786 1.3741611 128.0 +-18.923998 -2.91313 1.4209428 128.0 +-18.260693 -2.69647 1.371129 128.0 +-19.187439 -2.7130668 1.4376917 128.0 +-24.236725 -3.2751572 1.8053024 128.0 +-0 -0 0 128.0 +-23.669226 -2.9032052 1.7611198 128.0 +-23.693527 -2.7587259 1.7616252 128.0 +-23.756605 -2.6184266 1.7650182 128.0 +-23.502388 -2.4445565 1.7453816 128.0 +-25.92017 -2.5352528 1.9201627 128.0 +-23.919964 -2.1916161 1.7736815 128.0 +-23.867373 -2.0392041 1.7689167 128.0 +-0 -0 0 128.0 +-44.364353 -3.2415764 3.2548089 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-45.063847 -2.4597418 3.3017349 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.057011 14.314319 2.5996921 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-39.607433 15.539605 2.6002338 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-35.425083 14.656776 2.3464653 128.0 +-35.252605 14.839398 2.3411095 128.0 +-34.725941 14.869191 2.3125854 128.0 +-34.496773 15.022208 2.3035588 128.0 +-34.330933 15.201263 2.2987444 128.0 +-0 0 0 128.0 +-57.075562 26.114347 3.8191888 128.0 +-56.807449 26.414404 3.8120878 128.0 +-56.485458 26.687422 3.8014965 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.631016 20.119881 2.7686102 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.682472 19.062901 2.3684902 128.0 +-34.332733 19.710022 2.4218676 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-20.978449 13.819917 1.5497155 128.0 +-20.916502 13.963896 1.5514004 128.0 +-20.943695 14.168599 1.5596447 128.0 +-20.927994 14.345941 1.5648801 128.0 +-20.453424 14.205892 1.5365366 128.0 +-20.698942 14.56549 1.561089 128.0 +-20.499453 14.613999 1.552965 128.0 +-20.457951 14.77457 1.5565757 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.901764 30.699594 3.1183617 128.0 +-40.672894 30.919781 3.1153529 128.0 +-40.524326 31.201036 3.1185424 128.0 +-0 0 0 128.0 +-40.356174 31.867956 3.1352718 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-36.798763 30.174955 2.9041901 128.0 +-36.917805 30.653328 2.9280806 128.0 +-36.240799 30.468813 2.8896272 128.0 +-0 0 0 128.0 +-34.470669 29.710211 2.7787201 128.0 +-22.474581 19.61261 1.8335124 128.0 +-21.700768 19.173172 1.7809775 128.0 +-21.499388 19.231432 1.7742376 128.0 +-32.994232 29.87986 2.7187834 128.0 +-32.750675 30.027107 2.7139089 128.0 +-20.70133 19.215109 1.7380108 128.0 +-21.126427 19.852373 1.7829634 128.0 +-20.481329 19.484211 1.7394551 128.0 +-32.968067 31.750334 2.7946069 128.0 +-14.931726 14.558145 1.2924567 128.0 +-14.87835 14.68525 1.2955258 128.0 +-14.737123 14.725468 1.291193 128.0 +-14.46403 14.631054 1.2755469 128.0 +-14.437448 14.784515 1.281023 128.0 +-14.354775 14.881445 1.2817452 128.0 +-14.187449 14.889752 1.2751256 128.0 +-29.02862 30.841713 2.5886195 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-17.376225 19.156332 1.5944273 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-25.031542 29.357054 2.3610885 128.0 +-15.778474 18.736908 1.5119842 128.0 +-24.070053 28.941387 2.3045819 128.0 +-23.813456 28.992887 2.2971199 128.0 +-0 0 0 128.0 +-23.434034 29.255665 2.2950134 128.0 +-15.517074 19.617622 1.5431561 128.0 +-23.19676 29.699152 2.3071091 128.0 +-23.055546 29.894674 2.3112013 128.0 +-23.086367 30.317499 2.3325644 128.0 +-23.385193 31.104036 2.3812478 128.0 +-23.129051 31.159575 2.3746886 128.0 +-23.08552 31.502996 2.3897932 128.0 +-0 0 0 128.0 +-23.563278 32.996712 2.4796381 128.0 +-22.979078 32.599754 2.4397404 128.0 +-22.589348 32.468105 2.4197614 128.0 +-22.36484 32.569893 2.4171135 128.0 +-22.133215 32.660236 2.4137437 128.0 +-23.009474 34.405937 2.5305481 128.0 +-20.471701 31.021536 2.2759373 128.0 +-20.306026 31.185041 2.2787054 128.0 +-20.048473 31.206593 2.2713637 128.0 +-20.467409 32.292686 2.3401465 128.0 +-20.149282 32.226383 2.3265464 128.0 +-19.955881 32.357059 2.3270881 128.0 +-8.8877325 14.61115 1.0662496 128.0 +-8.8425894 14.739878 1.071485 128.0 +-8.5634155 14.475133 1.0491592 128.0 +-8.4905319 14.554995 1.0510849 128.0 +-18.788713 32.666706 2.3071091 128.0 +-8.3171883 14.66851 1.051807 128.0 +-8.2533274 14.766318 1.0550566 128.0 +-8.176054 14.841162 1.0567416 128.0 +-10.273906 18.922762 1.3333173 128.0 +-18.016577 33.673897 2.3376193 128.0 +-17.606195 33.397942 2.3113217 128.0 +-15.752043 30.33049 2.0956457 128.0 +-15.583827 30.462116 2.0980527 128.0 +-15.371468 30.507244 2.0946827 128.0 +-14.89293 30.01442 2.0552063 128.0 +-9.5886364 19.626274 1.3520926 128.0 +-9.0284262 18.770811 1.2909523 128.0 +-14.393897 30.401649 2.0630896 128.0 +-14.234489 30.548208 2.0670011 128.0 +-9.1927147 20.048944 1.3649104 128.0 +-13.887689 30.785189 2.0712736 128.0 +-13.712298 30.900843 2.0733197 128.0 +-8.6640072 19.852474 1.3410802 128.0 +-8.5274658 19.871323 1.3388536 128.0 +-8.3964529 19.902121 1.3374695 128.0 +-12.486772 30.111454 2.0004449 128.0 +-12.286331 30.149605 1.9979775 128.0 +-12.099621 30.220718 1.9977368 128.0 +-11.611465 29.525238 1.9479098 128.0 +-11.41246 29.550303 1.9449612 128.0 +-11.747989 30.983385 2.0328805 128.0 +-11.329951 30.443071 1.9935243 128.0 +-11.115891 30.437946 1.9887704 128.0 +-10.521212 29.367605 1.9158955 128.0 +-10.306073 29.332726 1.9095768 128.0 +-10.288128 29.866346 1.9396054 128.0 +-10.178439 30.147375 1.9535064 128.0 +-10.048131 30.375105 1.9640374 128.0 +-9.8514099 30.40485 1.9620515 128.0 +-9.6091223 30.289658 1.9509789 128.0 +-9.6394711 31.044901 1.9949687 128.0 +-9.1064196 29.976463 1.9239593 128.0 +-8.9757614 30.211662 1.9352726 128.0 +-8.7974567 30.29109 1.9368372 128.0 +-8.5555601 30.147646 1.9245008 128.0 +-8.4061451 30.328472 1.9325646 128.0 +-3.8564699 14.253727 0.92543429 128.0 +-3.7607841 14.246238 0.92350858 128.0 +-3.6640916 14.233278 0.92128205 128.0 +-3.5652707 14.209989 0.91845369 128.0 +-3.5320477 14.452677 0.93217415 128.0 +-3.4199662 14.375998 0.92609626 128.0 +-3.4230745 14.791538 0.95052832 128.0 +-4.4247227 19.667845 1.2505732 128.0 +-4.2519565 19.456684 1.2358899 128.0 +-0 0 0 128.0 +-4.0390215 19.634499 1.243713 128.0 +-3.9487176 19.810646 1.2530404 128.0 +-3.8142266 19.767855 1.2489485 128.0 +-3.7148352 19.908636 1.2561697 128.0 +-3.5895977 19.914354 1.2551467 128.0 +-0 0 0 128.0 +-5.2080498 31.071371 1.9345504 128.0 +-4.4521317 27.599482 1.7206196 128.0 +-4.9877043 32.173599 1.9980377 128.0 +-0 0 0 128.0 +-4.5649099 32.038692 1.9862429 128.0 +-0 0 0 128.0 +-3.4575102 26.600561 1.6523782 128.0 +-0 0 0 128.0 +-3.2072563 27.291321 1.6918547 128.0 +-3.3606598 30.193415 1.8667305 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.4562285 37.281181 2.2924259 128.0 +-3.2268941 37.295719 2.2920649 128.0 +-3.0258141 37.661068 2.3130066 128.0 +-0 0 0 128.0 +-2.5407357 37.361744 2.2928472 128.0 +-1.7609044 28.47583 1.7552216 128.0 +-2.002404 35.959927 2.2064924 128.0 +-0 0 0 128.0 +-1.5576808 35.905998 2.2019191 128.0 +-1.2497644 33.563782 2.0600808 128.0 +-1.0412527 33.48901 2.0551462 128.0 +-0.6726352 26.960669 1.661104 128.0 +-0.62904787 33.437389 2.0514152 128.0 +-0.4119648 32.502396 1.9948483 128.0 +-0.2136115 32.67001 2.0048378 128.0 +-0.013098006 32.549923 1.9975562 128.0 +0.18600231 32.44059 1.990997 128.0 +0 0 0 128.0 +0.5069834 28.151339 1.732655 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.1820407 32.447548 1.9926819 128.0 +1.2184982 28.619087 1.7621419 128.0 +0 0 0 128.0 +1.4978091 27.293327 1.683129 128.0 +1.8866708 30.912273 1.9022954 128.0 +0 0 0 128.0 +2.0345471 27.733007 1.7116531 128.0 +0 0 0 128.0 +3.5538716 41.465446 2.5442085 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.0892498 20.032804 1.24949 128.0 +2.2154179 20.049372 1.2512953 128.0 +2.3554041 20.181147 1.2601414 128.0 +4.2828455 34.840038 2.1514301 128.0 +0 0 0 128.0 +2.7316971 20.172949 1.2624884 128.0 +4.5046897 31.799231 1.9714392 128.0 +4.7017665 31.784815 1.9722817 128.0 +4.9072013 31.823439 1.976434 128.0 +5.1136036 31.862705 1.9807066 128.0 +5.3392272 32.011894 1.9917792 128.0 +0 0 0 128.0 +2.6662173 14.858294 0.94529283 128.0 +2.7662685 14.889744 0.94824153 128.0 +0 0 0 128.0 +2.8679388 14.447375 0.9232077 128.0 +2.9811733 14.549785 0.93060952 128.0 +0 0 0 128.0 +9.1167669 41.878353 2.6190693 128.0 +9.3700628 41.806038 2.6181064 128.0 +3.4432018 14.93134 0.95901334 128.0 +0 0 0 128.0 +3.5569687 14.603799 0.94138134 128.0 +3.6397293 14.554585 0.93969637 128.0 +3.4863479 13.586379 0.8808428 128.0 +3.5409443 13.455648 0.87404275 128.0 +9.9291477 36.814308 2.3339484 128.0 +10.147406 36.72575 2.3322635 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +8.1466379 20.036928 1.3392147 128.0 +7.9664321 19.254208 1.2914337 128.0 +8.0642862 19.157124 1.2883044 128.0 +0 0 0 128.0 +8.2975712 19.053974 1.288124 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +32.26062 63.187164 4.3123431 128.0 +32.539318 62.778877 4.2981415 128.0 +33.053116 62.82362 4.3148708 128.0 +33.053364 61.899364 4.2656455 128.0 +33.307949 61.465454 4.2498789 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +38.760017 64.727242 4.5835629 128.0 +19.24114 31.688559 2.2702205 128.0 +19.513708 31.697405 2.279247 128.0 +0 0 0 128.0 +20.229427 31.974335 2.3162563 128.0 +32.477028 50.642712 3.6621857 128.0 +31.565897 48.563572 3.5270872 128.0 +31.872618 48.383144 3.5281103 128.0 +13.586473 20.351141 1.5104196 128.0 +13.746325 20.319479 1.5142107 128.0 +13.944676 20.342607 1.522094 128.0 +21.872381 31.491892 2.3467662 128.0 +14.313316 20.340569 1.5346711 128.0 +13.982427 19.613499 1.4873716 128.0 +14.447307 20.004782 1.5228763 128.0 +14.121872 19.303478 1.4771414 128.0 +14.559776 19.64794 1.509517 128.0 +0 0 0 128.0 +29.994928 39.456291 3.0232213 128.0 +30.203579 39.228794 3.0199716 128.0 +30.350418 38.92308 3.0108247 128.0 +30.317104 38.392212 2.9844067 128.0 +30.532154 38.180519 2.982481 128.0 +30.792234 38.02504 2.9850085 128.0 +31.023706 37.833843 2.9848881 128.0 +31.27886 37.671188 2.9871147 128.0 +31.612835 37.601566 2.9968033 128.0 +31.863016 37.43045 2.9986689 128.0 +0 0 0 128.0 +42.595024 48.811405 3.9408073 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.065226 20.040888 1.7028069 128.0 +19.009192 19.738031 1.6872811 128.0 +0 0 0 128.0 +19.301865 19.555845 1.6917343 128.0 +0 0 0 128.0 +19.911644 19.684538 1.7232071 128.0 +0 0 0 128.0 +0 0 0 128.0 +39.949059 38.065701 3.3619001 128.0 +45.591896 42.911942 3.8098011 128.0 +0 0 0 128.0 +0 0 0 128.0 +43.177914 39.16626 3.5496538 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.570004 15.357338 1.442058 128.0 +0 0 0 128.0 +17.598391 15.005211 1.4294809 128.0 +17.669516 14.879586 1.4278561 128.0 +17.68911 14.711528 1.4222596 128.0 +17.752048 14.580538 1.4201534 128.0 +18.048162 14.639233 1.4362208 128.0 +18.005205 14.422128 1.4259906 128.0 +18.139549 14.347915 1.429541 128.0 +18.143858 14.171211 1.4231622 128.0 +18.305559 14.117528 1.428879 128.0 +18.832588 14.340574 1.4622775 128.0 +18.511732 13.917622 1.4314667 128.0 +18.567926 13.782355 1.4293003 128.0 +20.833271 15.266538 1.5923212 128.0 +20.35396 14.724189 1.5497155 128.0 +20.49185 14.633247 1.5532659 128.0 +20.683235 14.579124 1.5607882 128.0 +20.776398 14.454791 1.561089 128.0 +21.14365 14.518588 1.5814892 128.0 +21.0679 14.277143 1.5695138 128.0 +20.765131 13.886797 1.5412304 128.0 +20.874109 13.775067 1.5429755 128.0 +21.481874 13.987699 1.5806466 128.0 +21.568977 13.856704 1.580767 128.0 +21.687319 13.745474 1.5831741 128.0 +0 0 0 128.0 +0 0 0 128.0 +25.118429 15.279477 1.8076963 128.0 +24.20253 14.519618 1.736747 128.0 +24.208693 14.322048 1.73097 128.0 +24.321981 14.188326 1.7327753 128.0 +24.565195 14.128902 1.7436675 128.0 +24.68008 13.994156 1.7456534 128.0 +0 0 0 128.0 +25.475063 14.034635 1.7886802 128.0 +0 0 0 128.0 +28.144936 15.058336 1.9595842 128.0 +28.173225 14.851843 1.9552515 128.0 +28.152208 14.620727 1.9476691 128.0 +28.14275 14.397249 1.9409894 128.0 +28.128046 14.172644 1.934069 128.0 +28.16083 13.973166 1.9304584 128.0 +28.279221 13.816323 1.9326849 128.0 +28.573055 13.743361 1.9467063 128.0 +28.903139 13.684394 1.9631348 128.0 +30.834118 14.367719 2.0860171 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.026752 13.768172 2.0816243 128.0 +31.181091 13.608281 2.0862579 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +36.555431 14.635971 2.4091101 128.0 +0 0 0 128.0 +36.65593 14.156788 2.4041755 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +41.506668 14.298059 2.6818345 128.0 +0 0 0 128.0 +0 0 0 128.0 +42.648777 13.818705 2.7379799 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +47.97842 14.254436 3.0526481 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +37.62899 -2.0648623 2.3071694 128.0 +37.072609 -2.2625763 2.2743726 128.0 +37.4823 -2.5185101 2.3000083 128.0 +25.571749 -1.8760238 1.5810077 128.0 +0 -0 0 128.0 +31.732855 -2.719815 1.9553117 128.0 +31.621138 -2.9057965 1.9495949 128.0 +0 -0 0 128.0 +27.467922 -2.8645215 1.7001592 128.0 +27.449829 -3.0330076 1.7001592 128.0 +27.405914 -3.198487 1.6986548 128.0 +27.417477 -3.3704834 1.7005804 128.0 +27.4042 -3.5396733 1.7010618 128.0 +27.386909 -3.7084253 1.7013627 128.0 +27.384396 -3.8793383 1.7026265 128.0 +27.370939 -4.0488992 1.7032884 128.0 +19.25209 -2.9688466 1.2095923 128.0 +19.303488 -3.0981486 1.2138649 128.0 +19.417034 -3.2387021 1.2219889 128.0 +18.800756 -3.2546139 1.1855214 128.0 +18.942545 -3.3989973 1.1954507 128.0 +19.263842 -3.5787859 1.2164526 128.0 +19.073895 -3.6647165 1.2061622 128.0 +0 -0 0 128.0 +18.775194 -3.8468201 1.1906364 128.0 +18.672131 -3.9452374 1.185762 128.0 +18.761686 -4.0845747 1.1928028 128.0 +37.607021 -8.4289694 2.3586812 128.0 +37.680065 -8.6884947 2.3664441 128.0 +37.463844 -8.8810825 2.3563945 128.0 +0 -0 0 128.0 +37.212593 -9.3052845 2.347729 128.0 +0 -0 0 128.0 +9.0556774 -2.3831956 0.5997538 128.0 +32.000362 -8.6308374 2.0333619 128.0 +8.9872646 -2.48351 0.59734666 128.0 +7.9988799 -2.2633464 0.53638691 128.0 +7.9119725 -2.2912853 0.53181338 128.0 +8.924715 -2.6439795 0.59638381 128.0 +8.8424063 -2.6787248 0.59223157 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.9842396 -2.5801675 0.54108071 128.0 +7.9635181 -2.6275456 0.54077983 128.0 +25.441631 -8.5669508 1.6536419 128.0 +7.2254853 -2.4827983 0.49582726 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.4252286 -2.7052295 0.51165396 128.0 +7.3963246 -2.7462227 0.51087165 128.0 +0 -0 0 128.0 +7.016499 -2.7036443 0.48854578 128.0 +7.018362 -2.7539372 0.48974934 128.0 +7.2775712 -2.9072866 0.5076822 128.0 +7.2632942 -2.9533901 0.50792295 128.0 +7.1998401 -2.9792025 0.50497425 128.0 +7.1998248 -3.0310688 0.50617778 128.0 +5.7202539 -2.4496961 0.41037524 128.0 +19.748598 -8.6000481 1.3337986 128.0 +4.643784 -2.0565765 0.34141186 128.0 +4.5764642 -2.0604482 0.33780119 128.0 +4.5582891 -2.0859983 0.33744013 128.0 +4.5435939 -2.1130865 0.33731979 128.0 +4.5576186 -2.1537178 0.3391251 128.0 +4.532619 -2.1760273 0.33834279 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +3.957773 -2.0210819 0.30313897 128.0 +3.9435248 -2.0444098 0.30301863 128.0 +3.9309063 -2.0685682 0.30301863 128.0 +3.8846803 -2.0747821 0.30073187 128.0 +3.875387 -2.1004813 0.30097258 128.0 +3.8685484 -2.1275873 0.30139384 128.0 +3.8528059 -2.1498253 0.30121329 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.1716061 -4.1762114 0.5355444 128.0 +7.087399 -4.1856236 0.53145236 128.0 +13.792784 -8.2597666 1.0044473 128.0 +7.1694574 -4.3536172 0.54090017 128.0 +6.8221483 -4.2002473 0.51821327 128.0 +6.7826986 -4.233572 0.51725042 128.0 +3.949281 -2.4990284 0.3169798 128.0 +6.9226537 -4.4398828 0.53103107 128.0 +6.8818898 -4.4735718 0.53006822 128.0 +3.8984449 -2.5685527 0.31667891 128.0 +6.7476058 -4.5050354 0.52435136 128.0 +3.527653 -2.3868852 0.29200613 128.0 +3.4874177 -2.3909903 0.29014063 128.0 +2.9381387 -2.0410905 0.25090492 128.0 +2.9516826 -2.0774617 0.25283059 128.0 +3.0835586 -2.1986713 0.26354221 128.0 +3.0781019 -2.2233944 0.26414397 128.0 +3.0523171 -2.2333992 0.26324129 128.0 +3.0385556 -2.2520857 0.26324129 128.0 +2.9767797 -2.2347357 0.25963065 128.0 +4.8018203 -3.65081 0.39888135 128.0 +4.7453194 -3.6540198 0.3962937 128.0 +4.4709144 -3.486655 0.37703693 128.0 +4.4627538 -3.5245385 0.37805992 128.0 +5.5846887 -4.4663887 0.4663403 128.0 +5.5835538 -4.5219297 0.46838632 128.0 +5.0161638 -4.1136909 0.42632228 128.0 +3.6583939 -3.0380731 0.32191435 128.0 +3.6190543 -3.0431199 0.32028955 128.0 +3.7758951 -3.2147315 0.33419055 128.0 +3.7092202 -3.1974354 0.33045954 128.0 +3.5376081 -3.0875614 0.3183037 128.0 +3.7302957 -3.2962458 0.33533391 128.0 +3.3491681 -2.9963133 0.30614784 128.0 +3.337379 -3.0228374 0.30668944 128.0 +3.3069961 -3.0324652 0.30572662 128.0 +3.9372635 -3.6550295 0.35910404 128.0 +4.4777913 -4.20818 0.4056814 128.0 +3.9355073 -3.74435 0.36271468 128.0 +3.4803486 -3.3522854 0.32654801 128.0 +3.4582844 -3.3721838 0.32642767 128.0 +3.3977437 -3.3540735 0.32305771 128.0 +4.4313335 -4.4282188 0.41290268 128.0 +3.6693199 -3.7121105 0.34989688 128.0 +7.8581128 -8.0472746 0.71330869 128.0 +3.5181525 -3.6476607 0.34074989 128.0 +3.4640296 -3.6359372 0.33798173 128.0 +3.1508937 -3.348208 0.3124063 128.0 +3.8167574 -4.1058335 0.37318555 128.0 +2.7443006 -2.988878 0.27985027 128.0 +2.7198737 -2.9990065 0.27930868 128.0 +3.6579397 -4.0832067 0.36572355 128.0 +3.5481415 -4.0098939 0.35802084 128.0 +2.726619 -3.1199596 0.28502557 128.0 +2.7472143 -3.1827207 0.28869638 128.0 +3.4134994 -4.0038857 0.35242432 128.0 +2.6153615 -3.1062474 0.28003082 128.0 +3.1324115 -3.7668903 0.33057991 128.0 +3.0984685 -3.7729268 0.32955688 128.0 +1.6748812 -2.0654528 0.19554164 128.0 +1.6646725 -2.0788071 0.19578235 128.0 +1.6549821 -2.0928965 0.19608323 128.0 +1.6470248 -2.1093051 0.19656466 128.0 +1.6383185 -2.1249044 0.1969859 128.0 +1.6421822 -2.1571529 0.19867086 128.0 +1.6247163 -2.1616037 0.19824962 128.0 +1.6506892 -2.2244315 0.20222133 128.0 +1.6476297 -2.2490106 0.20330453 128.0 +1.6718286 -2.3116465 0.20721607 128.0 +1.6738559 -2.3446059 0.20890105 128.0 +2.4151235 -3.4268787 0.28797424 128.0 +1.6529392 -2.3764415 0.20974353 128.0 +1.6400217 -2.3890076 0.20992406 128.0 +1.6410117 -2.4221623 0.21160902 128.0 +1.6116911 -2.4106128 0.21004441 128.0 +1.5880727 -2.4071267 0.20908158 128.0 +1.6391797 -2.5180395 0.21636304 128.0 +1.7882583 -2.7841909 0.23471718 128.0 +1.7679349 -2.7900524 0.23435612 128.0 +1.5274621 -2.4436822 0.20896122 128.0 +1.706316 -2.7673585 0.23122689 128.0 +1.3635172 -2.2422216 0.19343543 128.0 +1.6747954 -2.7923691 0.23152778 128.0 +1.6586467 -2.8043113 0.23164813 128.0 +1.6685697 -2.8609943 0.23489772 128.0 +1.6599418 -2.8867536 0.23598091 128.0 +1.6692779 -2.9446411 0.23929067 128.0 +1.4690301 -2.628958 0.21678428 128.0 +1.6195301 -2.9404242 0.23760569 128.0 +1.581453 -2.9134626 0.23507825 128.0 +1.2343823 -2.3079021 0.19301419 128.0 +1.5893381 -3.0156524 0.24073492 128.0 +1.5813861 -3.0457218 0.24211901 128.0 +1.5708513 -3.0713634 0.24320221 128.0 +1.5667987 -3.1103609 0.24518806 128.0 +1.5538961 -3.1324344 0.24603054 128.0 +1.0486903 -2.1472874 0.17929372 128.0 +1.0238127 -2.1293943 0.17766893 128.0 +1.0427643 -2.203299 0.18218224 128.0 +9.1671524 -19.673681 1.3437279 128.0 +0.9856922 -2.1506004 0.17784946 128.0 +0.96796262 -2.1465993 0.1771875 128.0 +1.4013613 -3.1588593 0.24356326 128.0 +1.3699743 -3.1399527 0.24175794 128.0 +8.764842 -20.424446 1.3751405 128.0 +8.5601978 -20.290226 1.3628644 128.0 +8.3843012 -20.218815 1.3548006 128.0 +8.2111111 -20.14971 1.3469776 128.0 +7.7986598 -19.478764 1.3001595 128.0 +7.7944393 -19.81979 1.3191755 128.0 +7.5953608 -19.667046 1.3062373 128.0 +7.1938934 -18.973139 1.2585167 128.0 +1.2415789 -3.337074 0.24988191 128.0 +1.4015394 -3.8387525 0.28159544 128.0 +1.386039 -3.8698328 0.28303969 128.0 +1.1792822 -3.3574786 0.24976155 128.0 +1.2519661 -3.6355102 0.26703247 128.0 +6.75634 -20.011923 1.3085843 128.0 +4.6947002 -14.192564 0.93644679 128.0 +6.5262542 -20.142704 1.3117136 128.0 +0.99302953 -3.1313748 0.23327293 128.0 +0.96580487 -3.1116703 0.23164813 128.0 +0.95365751 -3.1404598 0.23309238 128.0 +0.93550724 -3.1500795 0.2333331 128.0 +0.89722908 -3.0905774 0.22924103 128.0 +0.95128554 -3.3533754 0.2453686 128.0 +0.93442452 -3.3726161 0.24621108 128.0 +0.84540403 -3.1258395 0.23044458 128.0 +0.82264107 -3.1174562 0.2296021 128.0 +5.1782603 -20.11446 1.2874018 128.0 +0.80205786 -3.1979933 0.23399505 128.0 +0.76891148 -3.1475847 0.23056494 128.0 +0.772919 -3.2503226 0.23664285 128.0 +0.77321798 -3.3425272 0.24205883 128.0 +0.77548128 -3.4484882 0.24831729 128.0 +0.8103599 -3.709651 0.26414397 128.0 +0.83750361 -3.9498801 0.27864674 128.0 +0.67446148 -3.2803237 0.23712428 128.0 +0.65588224 -3.2922318 0.23760569 128.0 +0.76408994 -3.9616861 0.27846619 128.0 +0.56361055 -3.0223393 0.22057547 128.0 +0.73861527 -4.0994525 0.28634945 128.0 +0.71173704 -4.0940733 0.28574768 128.0 +0.68313742 -4.0776901 0.28448397 128.0 +0.65921718 -4.0887032 0.2849052 128.0 +0.64053994 -4.1341 0.28743264 128.0 +3.1112823 -20.917507 1.310149 128.0 +2.9831579 -20.938181 1.3102692 128.0 +2.8551664 -20.960047 1.3105099 128.0 +2.7263756 -20.976181 1.3104498 128.0 +2.5995784 -21.008366 1.3114127 128.0 +0.44133368 -3.7583294 0.26336166 128.0 +0.42897677 -3.8571966 0.26919886 128.0 +0.40425792 -3.849829 0.2685971 128.0 +0.38003871 -3.8462768 0.26823604 128.0 +2.0075614 -21.656685 1.3464359 128.0 +1.4876558 -17.196457 1.0758178 128.0 +1.5691963 -19.533516 1.2166331 128.0 +1.44525 -19.488028 1.2133234 128.0 +0.17341481 -2.5554962 0.18964425 128.0 +0.1571151 -2.5465493 0.18904248 128.0 +1.1140485 -20.009649 1.2434121 128.0 +0.9900158 -19.991184 1.2419076 128.0 +0.86789614 -20.009848 1.24269 128.0 +0.12072874 -3.2518754 0.23140742 128.0 +0.10086644 -3.255548 0.23158795 128.0 +0.081287436 -3.2720716 0.23255078 128.0 +0.062448796 -3.3383775 0.23652251 128.0 +0.0420397 -3.3446865 0.23688357 128.0 +0.021202449 -3.2969694 0.23399505 128.0 +0.00097470795 -3.3030267 0.23435612 128.0 +-0.019275168 -3.2999759 0.23417558 128.0 +-0.24638507 -20.744894 1.2859576 128.0 +-0.38099626 -21.150187 1.3105099 128.0 +-0.08001367 -3.299062 0.23417558 128.0 +-0.10013401 -3.2945182 0.23393488 128.0 +-0.74015868 -20.313639 1.2606831 128.0 +-0.86431998 -20.297745 1.2600211 128.0 +-0.9932192 -20.381788 1.265437 128.0 +-0.14929445 -2.7139857 0.19909211 128.0 +-0.16606593 -2.7150111 0.19921246 128.0 +-0.18292253 -2.716929 0.199393 128.0 +-0.19922476 -2.7107778 0.19909211 128.0 +-0.21632877 -2.7154746 0.19945318 128.0 +-1.8467233 -21.544762 1.3388536 128.0 +-1.9798894 -21.543959 1.3395156 128.0 +-2.1195452 -21.607899 1.3441492 128.0 +-2.2893567 -21.951897 1.3658131 128.0 +-2.3471704 -21.241938 1.3236287 128.0 +-0 -0 0 128.0 +-2.7192137 -22.119045 1.3787513 128.0 +-2.7941513 -21.63171 1.3501669 128.0 +-0 -0 0 128.0 +-3.0176773 -21.301273 1.332234 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-3.4955206 -20.95693 1.3161064 128.0 +-3.5482852 -20.497402 1.2893275 128.0 +-3.6937311 -20.585285 1.2960674 128.0 +-3.8123138 -20.521013 1.2935399 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.0411115 -25.4832 1.6141053 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.1886368 -24.11849 1.5363561 128.0 +-0 -0 0 128.0 +-6.0186214 -22.31465 1.4285781 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6628873 -3.4635444 0.26685196 128.0 +-1.6591733 -3.4021339 0.26342183 128.0 +-1.6778024 -3.3874168 0.26312095 128.0 +-1.6931745 -3.3663568 0.26239881 128.0 +-1.7119826 -3.3523481 0.2621581 128.0 +-1.7375728 -3.3515289 0.26282007 128.0 +-1.7915678 -3.4044082 0.26715285 128.0 +-1.8237073 -3.4144835 0.2685971 128.0 +-1.8460506 -3.4058621 0.26877764 128.0 +-1.8770138 -3.4128392 0.27004135 128.0 +-1.9149399 -3.4317677 0.27214757 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.927496 -8.6770563 0.83011317 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.9358807 -8.3668289 0.81831837 128.0 +-0 -0 0 128.0 +-10.149652 -8.3361368 0.82704413 128.0 +-10.430851 -8.4604616 0.84491682 128.0 +-10.356359 -8.2952042 0.83516806 128.0 +-10.396885 -8.2234526 0.83438575 128.0 +-10.67056 -8.3340054 0.85147619 128.0 +-10.606884 -8.1799822 0.84275043 128.0 +-0 -0 0 128.0 +-10.796622 -8.1169872 0.84955049 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.365303 -8.7557135 1.1541688 128.0 +-16.461103 -8.6774769 1.1570574 128.0 +-16.42634 -8.5307627 1.1510998 128.0 +-16.443718 -8.4120817 1.1487529 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.0343008 -3.4364047 0.50720078 128.0 +-7.0102768 -3.3715444 0.50419194 128.0 +-7.019104 -3.3229136 0.50340962 128.0 +-7.0420752 -3.2810473 0.50359017 128.0 +-7.1310334 -3.2693963 0.50816363 128.0 +-7.2392182 -3.2653956 0.51400083 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-22.1495 -8.5541306 1.4666705 128.0 +-22.179169 -8.4095697 1.4652263 128.0 +-22.215384 -8.2677517 1.4642634 128.0 +-22.38571 -8.1751156 1.4719661 128.0 +-22.352757 -8.0079784 1.4666705 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-27.773079 -8.4370327 1.7851298 128.0 +-28.489334 -8.4640417 1.8269531 128.0 +-28.525396 -8.2846212 1.8259903 128.0 +-28.567049 -8.1069832 1.8254486 128.0 +-28.548922 -7.9128828 1.8212363 128.0 +-34.044773 -9.2116776 2.1614797 128.0 +-12.920165 -3.4106836 0.84082472 128.0 +-12.810349 -3.2977445 0.83270079 128.0 +-12.823565 -3.2173789 0.83227956 128.0 +-34.090897 -8.3319283 2.1509488 128.0 +-34.102535 -8.1133518 2.1485415 128.0 +-34.149731 -7.9034996 2.1484213 128.0 +-34.662109 -7.798326 2.1771259 128.0 +-40.403316 -8.8299532 2.5285022 128.0 +-18.37022 -3.896559 1.1673478 128.0 +-0 -0 0 128.0 +-18.455811 -3.6786404 1.1697549 128.0 +-18.598589 -3.5885918 1.1771567 128.0 +-18.446577 -3.441994 1.1665052 128.0 +-18.410372 -3.3184719 1.163015 128.0 +-18.399902 -3.2001426 1.1611495 128.0 +-18.292196 -3.0658948 1.1533866 128.0 +-18.30081 -2.9520085 1.1527848 128.0 +-19.039639 -2.9514525 1.1967746 128.0 +-23.574394 -3.5065198 1.4720865 128.0 +-24.348478 -3.4691033 1.5179417 128.0 +-24.194244 -3.2957885 1.5072904 128.0 +-0 -0 0 128.0 +-24.509253 -3.032845 1.5240798 128.0 +-23.641121 -2.7782342 1.4702812 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-23.935595 -2.3670723 1.4852654 128.0 +-0 -0 0 128.0 +-25.89311 -2.2401984 1.6020699 128.0 +-0 -0 0 128.0 +-44.428097 -3.2953346 2.72101 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-42.066727 13.350698 2.1476352 128.0 +-46.310181 15.010961 2.3652859 128.0 +-0 0 0 128.0 +-40.622429 13.720304 2.0874503 128.0 +-0 0 0 128.0 +-40.79401 14.338344 2.1048508 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.222248 15.539385 2.0990665 128.0 +-35.633854 14.018454 1.8680308 128.0 +-0 0 0 128.0 +-35.307449 14.392839 1.8601909 128.0 +-35.171421 14.58969 1.8577529 128.0 +-34.893505 14.725989 1.8480009 128.0 +-34.698776 14.895288 1.8425992 128.0 +-60.870846 26.574751 3.2141378 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-55.488098 25.864021 2.9653192 128.0 +-55.187531 26.137304 2.9578617 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.751747 19.143105 1.8924584 128.0 +-0 0 0 128.0 +-34.021564 19.851868 1.9205672 128.0 +-0 0 0 128.0 +-33.73428 20.2432 1.9182725 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.357815 33.017384 2.8774078 128.0 +-20.882116 14.154287 1.2427571 128.0 +-20.839334 14.31269 1.2453384 128.0 +-20.518282 14.278245 1.2317622 128.0 +-20.474369 14.434957 1.2343436 128.0 +-20.429302 14.591665 1.236925 128.0 +-20.377419 14.744264 1.2391717 128.0 +-44.793015 32.832752 2.6933632 128.0 +-44.589909 33.106384 2.6933155 128.0 +-41.405895 31.138197 2.514864 128.0 +-41.503288 31.611984 2.5322645 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-36.863373 30.665924 2.3302934 128.0 +-0 0 0 128.0 +-34.620811 29.52663 2.2130785 128.0 +-34.341465 29.654287 2.2069118 128.0 +-34.118256 29.828941 2.2043304 128.0 +-21.734533 19.238096 1.4245549 128.0 +-33.018444 29.590069 2.1573393 128.0 +-21.394733 19.41074 1.417958 128.0 +-32.762447 30.09371 2.1644621 128.0 +-21.030577 19.556187 1.4098314 128.0 +-32.437958 30.537994 2.1675694 128.0 +-32.200077 30.688904 2.1642709 128.0 +-32.092392 30.964275 2.1696727 128.0 +-14.760887 14.417062 1.0229074 128.0 +-14.703399 14.538264 1.0250108 128.0 +-14.60474 14.619022 1.0243894 128.0 +-14.434786 14.627306 1.0189397 128.0 +-14.358009 14.729192 1.019848 128.0 +-14.239651 14.788231 1.0179359 128.0 +-28.0693 29.512625 1.984672 128.0 +-0 0 0 128.0 +-27.65814 29.804335 1.9813735 128.0 +-27.486893 29.986734 1.982234 128.0 +-0 0 0 128.0 +-16.759832 18.740009 1.2386459 128.0 +-27.229824 30.826733 2.0038891 128.0 +-16.68751 19.126415 1.2502145 128.0 +-25.021889 29.037537 1.8698951 128.0 +-24.76362 29.096956 1.8640152 128.0 +-16.04792 19.0916 1.2290374 128.0 +-24.233076 29.191908 1.851156 128.0 +-15.694012 19.142643 1.2200981 128.0 +-16.172701 19.97533 1.2654638 128.0 +-15.50158 19.388405 1.2234443 128.0 +-15.485065 19.6133 1.2313797 128.0 +-23.077507 29.602465 1.8317955 128.0 +-22.756525 29.563038 1.8208961 128.0 +-22.656898 29.810268 1.8273975 128.0 +-22.962147 30.599871 1.8663576 128.0 +-22.843523 30.834095 1.8719506 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-23.15905 32.493881 1.9450904 128.0 +-22.981647 32.667233 1.9469548 128.0 +-21.631157 31.151913 1.8504868 128.0 +-21.482517 31.346672 1.8541198 128.0 +-20.841 30.81432 1.8157812 128.0 +-20.75633 31.098642 1.8248161 128.0 +-20.326145 30.862534 1.8040215 128.0 +-19.997066 30.772257 1.7917837 128.0 +-19.734018 30.779175 1.7852346 128.0 +-20.517069 32.436932 1.8722852 128.0 +-20.196045 32.367298 1.8612905 128.0 +-19.152615 31.118484 1.7841829 128.0 +-18.930216 31.184185 1.7813146 128.0 +-8.7658978 14.640842 0.85210449 128.0 +-8.5687571 14.512859 0.84201789 128.0 +-8.5142183 14.624728 0.84531635 128.0 +-8.414876 14.660234 0.84440804 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-10.495008 19.090384 1.0780252 128.0 +-10.321533 19.050785 1.0723844 128.0 +-10.187511 19.082037 1.0706635 128.0 +-16.388134 31.156513 1.7202214 128.0 +-0 0 0 128.0 +-15.599977 30.562571 1.6776282 128.0 +-0 0 0 128.0 +-14.820951 29.937983 1.6341746 128.0 +-9.3395243 19.159451 1.0555096 128.0 +-0 0 0 128.0 +-9.4040136 19.908463 1.0891635 128.0 +-9.2694702 19.939522 1.0877771 128.0 +-9.1382246 19.976948 1.0867733 128.0 +-9.0351505 20.076366 1.0890679 128.0 +-13.799134 31.17334 1.666968 128.0 +-13.791782 31.680546 1.6890533 128.0 +-13.428913 31.371552 1.6685933 128.0 +-12.317258 29.269526 1.5552027 128.0 +-12.140867 29.352858 1.5556329 128.0 +-12.043269 29.630379 1.5661497 128.0 +-11.872345 29.731546 1.5675839 128.0 +-12.041981 30.70212 1.6137624 128.0 +-11.928037 30.969311 1.6237055 128.0 +-11.364404 30.054356 1.5731769 128.0 +-10.836093 29.197363 1.5258989 128.0 +-10.633156 29.198542 1.5226005 128.0 +-10.419189 29.166349 1.5176767 128.0 +-10.250269 29.258955 1.5191586 128.0 +-10.100393 29.408211 1.5235566 128.0 +-9.963727 29.600273 1.5301535 128.0 +-9.6696186 29.320299 1.5129919 128.0 +-9.5484705 29.561579 1.5221703 128.0 +-9.4277344 29.811991 1.5318266 128.0 +-9.1985683 29.720421 1.5243692 128.0 +-9.0391893 29.852783 1.5281936 128.0 +-8.8833513 30.000587 1.5328305 128.0 +-9.1497746 31.611773 1.6104161 128.0 +-8.5376301 30.189039 1.5368938 128.0 +-8.352499 30.241821 1.5369416 128.0 +-8.2192955 30.487316 1.546598 128.0 +-8.0877104 30.748732 1.557067 128.0 +-3.6675286 14.297175 0.74182111 128.0 +-3.5978968 14.392089 0.74540639 128.0 +-3.5031428 14.38769 0.74411571 128.0 +-3.4219339 14.439045 0.7455976 128.0 +-3.354357 14.551264 0.75009114 128.0 +-3.2759249 14.620307 0.75248134 128.0 +-4.2847729 19.690098 0.99981821 128.0 +-0 0 0 128.0 +-4.0195827 19.627682 0.99427295 128.0 +-3.9128716 19.72154 0.99766701 128.0 +-3.8207898 19.896244 1.0050288 128.0 +-3.6937149 19.892796 1.003738 128.0 +-3.5759921 19.939665 1.0049332 128.0 +-3.451875 19.951389 1.0044552 128.0 +-4.4555507 26.730164 1.3323414 128.0 +-4.4350433 27.652521 1.3757472 128.0 +-4.2698498 27.70883 1.3771814 128.0 +-4.7431321 32.088188 1.5878049 128.0 +-3.8017166 26.856182 1.3335365 128.0 +-3.6237378 26.781998 1.3288517 128.0 +-3.4783821 26.951336 1.3359745 128.0 +-0 0 0 128.0 +-6.3972287 54.8731 2.6793568 128.0 +-3.3314054 30.179911 1.4885643 128.0 +-4.548883 43.669441 2.136688 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-3.1658332 36.985241 1.8119569 128.0 +-2.9633415 37.312645 1.826776 128.0 +-1.9840353 27.082317 1.3350184 128.0 +-1.8272461 27.234505 1.3417587 128.0 +-0 0 0 128.0 +-1.4385294 26.261501 1.2941462 128.0 +-1.2847319 26.421482 1.3014123 128.0 +-0 0 0 128.0 +-1.2628459 34.770226 1.700574 128.0 +-0.81247628 26.914894 1.3241191 128.0 +-0.8066572 33.557861 1.6419188 128.0 +-0.60259026 33.666042 1.6468904 128.0 +-0.39046785 33.196678 1.6242791 128.0 +-0.18675275 33.195454 1.6241357 128.0 +0.016952762 33.229935 1.6257612 128.0 +0.21602245 32.50705 1.5911989 128.0 +0.42730719 33.427979 1.6353697 128.0 +0.62233841 32.893433 1.609938 128.0 +0 0 0 128.0 +0.95908546 30.742813 1.5074466 128.0 +1.215829 32.55899 1.5947365 128.0 +1.3329306 30.65189 1.5037658 128.0 +0 0 0 128.0 +1.6412739 29.420504 1.4456364 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.0647593 27.800497 1.3695805 128.0 +2.5016677 31.096804 1.5284804 128.0 +2.425163 27.996969 1.3803364 128.0 +1.8854673 20.319328 1.012056 128.0 +2.0103056 20.309364 1.0121516 128.0 +2.1061342 20.02347 0.99900556 128.0 +2.2291775 20.012156 0.99910116 128.0 +4.0339599 34.293007 1.6879538 128.0 +4.2446704 34.270584 1.6880972 128.0 +2.5855579 19.878588 0.99479878 128.0 +2.7327206 20.047422 1.003738 128.0 +2.8242266 19.809763 0.99307787 128.0 +2.9454298 19.790085 0.99298227 128.0 +4.9313846 31.787918 1.5749457 128.0 +0 0 0 128.0 +0 0 0 128.0 +5.6163869 32.27039 1.6030543 128.0 +5.8756475 32.575432 1.6195945 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.8929391 14.508431 0.74344641 128.0 +2.9776771 14.469862 0.74244255 128.0 +3.0925398 14.574432 0.74846584 128.0 +9.2447853 42.278492 2.1066194 128.0 +3.375803 15.000205 0.77126825 128.0 +3.463948 14.962667 0.7704556 128.0 +3.5415812 14.881857 0.76753956 128.0 +3.5509655 14.525105 0.75104725 128.0 +3.6597247 14.581515 0.75491935 128.0 +3.5146568 13.648575 0.70993596 128.0 +3.5276737 13.359245 0.69669431 128.0 +10.040635 37.092041 1.8744843 128.0 +10.274445 37.052834 1.8756316 128.0 +10.511971 37.025608 1.8774481 128.0 +11.285257 38.840405 1.9711435 128.0 +9.9808083 33.581036 1.712047 128.0 +10.185218 33.514385 1.711808 128.0 +0 0 0 128.0 +10.583032 33.346886 1.7098001 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.8048105 19.840658 1.0557964 128.0 +8.0835047 20.184618 1.0760175 128.0 +8.1585598 20.015322 1.0698508 128.0 +8.169838 19.696404 1.0559398 128.0 +8.4466772 20.015844 1.0751569 128.0 +0 0 0 128.0 +24.544844 56.221462 2.9713423 128.0 +0 0 0 128.0 +0 0 0 128.0 +25.067888 54.653416 2.9130695 128.0 +0 0 0 128.0 +36.687317 77.462212 4.1374202 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.377886 63.217304 3.4130971 128.0 +31.665833 62.826462 3.4025326 128.0 +31.461443 61.479488 3.3406267 128.0 +0 0 0 128.0 +32.180908 61.026932 3.3372805 128.0 +32.598118 60.909344 3.3416784 128.0 +33.21199 61.151443 3.3658192 128.0 +0 0 0 128.0 +34.196819 61.162987 3.3890519 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.522827 31.647116 1.8150163 128.0 +0 0 0 128.0 +0 0 0 128.0 +35.181343 54.746899 3.1498895 128.0 +0 0 0 128.0 +21.01158 31.831961 1.8608123 128.0 +0 0 0 128.0 +13.816323 20.38356 1.2139314 128.0 +13.938307 20.294283 1.2136924 128.0 +0 0 0 128.0 +14.257097 20.22212 1.2195722 128.0 +13.923402 19.493782 1.1819029 128.0 +14.054462 19.424168 1.1828589 128.0 +14.419631 19.673502 1.2027931 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +30.465221 39.492706 2.422507 128.0 +30.515102 39.059452 2.4075921 128.0 +0 0 0 128.0 +30.55555 38.137173 2.3741772 128.0 +30.805344 37.969135 2.3754203 128.0 +31.082758 37.834198 2.3788142 128.0 +31.787041 38.210995 2.4141891 128.0 +31.827204 37.785286 2.3998001 128.0 +35.413467 41.522938 2.6472325 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +43.99667 47.897537 3.1480253 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.071959 20.011736 1.3584423 128.0 +19.23531 19.936747 1.3612627 128.0 +19.272125 19.731173 1.3554306 128.0 +0 0 0 128.0 +19.711384 19.691549 1.3688635 128.0 +19.83326 19.571634 1.3689591 128.0 +19.42795 18.937836 1.3338711 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.701563 15.636785 1.1657929 128.0 +17.653414 15.402456 1.1566625 128.0 +17.531174 15.107371 1.1429906 128.0 +17.517805 14.909534 1.1363459 128.0 +17.628075 14.817834 1.1375409 128.0 +17.780916 14.761067 1.1414131 128.0 +18.098261 14.837862 1.1554674 128.0 +18.118317 14.669341 1.1511172 128.0 +18.052729 14.433772 1.1416043 128.0 +18.079802 14.274455 1.1378756 128.0 +18.05912 14.07912 1.1313264 128.0 +18.201368 14.011303 1.1347204 128.0 +18.424576 14.003917 1.1429906 128.0 +20.581036 15.44449 1.266898 128.0 +18.698576 13.853465 1.1491573 128.0 +18.850952 13.788002 1.1531727 128.0 +20.551659 14.839109 1.2485892 128.0 +20.56098 14.654757 1.2438087 128.0 +20.795116 14.630044 1.25227 128.0 +21.150326 14.686749 1.2677585 128.0 +21.289482 14.590574 1.2706267 128.0 +21.678127 14.662234 1.2879317 128.0 +20.928555 13.968917 1.2396499 128.0 +20.826176 13.716629 1.228894 128.0 +20.947638 13.613075 1.2310451 128.0 +21.413376 13.729575 1.2527959 128.0 +22.20717 14.046958 1.2929989 128.0 +0 0 0 128.0 +24.34462 14.983776 1.4035213 128.0 +0 0 0 128.0 +24.458097 14.642859 1.3996969 128.0 +24.456306 14.438686 1.3946297 128.0 +25.140953 14.635575 1.4276621 128.0 +24.658506 14.152895 1.3961116 128.0 +24.728365 13.991982 1.3952034 128.0 +25.393002 14.163035 1.4269451 128.0 +0 0 0 128.0 +25.556108 13.8456 1.4264671 128.0 +28.142223 15.023931 1.5621821 128.0 +28.137518 14.80029 1.5569714 128.0 +28.151531 14.587843 1.5528603 128.0 +28.136417 14.361707 1.5472673 128.0 +28.153505 14.153355 1.5434908 128.0 +28.169994 13.945778 1.539762 128.0 +28.268503 13.779231 1.5404791 128.0 +28.715443 13.779659 1.559744 128.0 +28.91506 13.657806 1.5658629 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.083828 13.759515 1.6622832 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +36.597061 14.613578 1.9213798 128.0 +36.923164 14.481743 1.9335698 128.0 +36.819309 14.180965 1.9237221 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +42.40295 14.854438 2.1856871 128.0 +0 0 0 128.0 +41.662823 14.023589 2.1392694 128.0 +42.432983 13.993532 2.1737838 128.0 +42.642563 13.77312 2.1800461 128.0 +0 0 0 128.0 +0 0 0 128.0 +48.252041 14.609587 2.4482255 128.0 +48.165504 14.261351 2.4394772 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.432268 0.74084944 0.87046111 128.0 +17.425507 0.63347471 0.86993527 128.0 +17.446037 0.52705348 0.87074792 128.0 +17.351084 0.41764778 0.86606318 128.0 +17.344332 0.3110151 0.86563295 128.0 +17.462772 0.20595682 0.87122595 128.0 +17.457714 0.098769873 0.87093914 128.0 +17.446005 -0.0083439611 0.8703655 128.0 +17.437634 -0.11533709 0.86998308 128.0 +0 -0 0 128.0 +17.424919 -0.3291257 0.86950505 128.0 +17.470501 -0.43723956 0.87179965 128.0 +17.383627 -0.54180884 0.86778408 128.0 +17.475798 -0.6520443 0.87237328 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.410774 -1.4001404 0.87136936 128.0 +17.431709 -1.5095319 0.87280351 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +27.423088 -2.8848855 1.355096 128.0 +27.427702 -3.0556407 1.3561954 128.0 +25.494844 -2.9987106 1.2639819 128.0 +27.424818 -3.3965347 1.3579643 128.0 +27.40247 -3.5646174 1.3579165 128.0 +25.393761 -3.4618106 1.2619742 128.0 +27.377428 -3.9035811 1.3589203 128.0 +27.362841 -4.0729637 1.3593984 128.0 +27.347206 -4.2423139 1.3598764 128.0 +19.264338 -3.1092517 0.96931934 128.0 +19.568991 -3.2817681 0.9850468 128.0 +18.938372 -3.2955713 0.95540845 128.0 +19.02199 -3.4305108 0.96047568 128.0 +19.323622 -3.6074905 0.97620314 128.0 +18.925501 -3.6534548 0.95789427 128.0 +18.931133 -3.7751772 0.95928055 128.0 +19.074909 -3.9257061 0.96745503 128.0 +19.07489 -4.0478592 0.9686501 128.0 +37.657127 -8.234128 1.8802207 128.0 +37.570812 -8.4571352 1.8784997 128.0 +37.624283 -8.7120705 1.8837104 128.0 +37.511814 -8.9288845 1.8808421 128.0 +37.602833 -9.1947145 1.8880606 128.0 +37.365513 -9.3800268 1.879169 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +9.0478516 -2.4482918 0.48401523 128.0 +9.0153332 -2.4989576 0.48315477 128.0 +7.9678526 -2.261204 0.43181348 128.0 +7.9288898 -2.3028045 0.4305706 128.0 +8.9103613 -2.6474006 0.48028654 128.0 +8.8767471 -2.6967952 0.47942606 128.0 +26.121584 -8.1136465 1.3444836 128.0 +9.0971823 -2.8862057 0.49218968 128.0 +7.984695 -2.5871363 0.43711972 128.0 +7.9715152 -2.6370223 0.43726313 128.0 +25.538906 -8.6253567 1.3255055 128.0 +7.2416248 -2.4944615 0.40198392 128.0 +7.2214713 -2.5371923 0.4017449 128.0 +11.238646 -4.0269232 0.6067754 128.0 +0 -0 0 128.0 +7.3579535 -2.7383466 0.41116226 128.0 +7.2550921 -2.75085 0.4067643 128.0 +0 -0 0 128.0 +7.0218749 -2.7614138 0.39653429 128.0 +7.0187078 -2.8100183 0.39725134 128.0 +7.2112961 -2.9386287 0.40810281 128.0 +7.1857486 -2.979759 0.40772039 128.0 +19.701118 -8.3138437 1.0588081 128.0 +19.590992 -8.4093523 1.0557486 128.0 +4.8228421 -2.1043603 0.28725481 128.0 +4.7167192 -2.0925751 0.28237882 128.0 +4.6682835 -2.1054528 0.28051448 128.0 +4.5926313 -2.1053224 0.27721602 128.0 +4.5090113 -2.1005456 0.27348733 128.0 +4.6422787 -2.1974373 0.28123152 128.0 +4.5648022 -2.1951311 0.27783746 128.0 +4.562016 -2.2283621 0.27841112 128.0 +3.9631236 -1.9658692 0.24714743 128.0 +3.9982605 -2.0139775 0.24968103 128.0 +4.5780234 -2.3415346 0.28151834 128.0 +3.9785631 -2.0656536 0.24996784 128.0 +3.9649301 -2.0895607 0.24992004 128.0 +3.9256144 -2.0997097 0.24848594 128.0 +3.8854468 -2.1089785 0.24700402 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.1878109 -4.1930785 0.43367782 128.0 +7.0785656 -4.1877575 0.42904088 128.0 +7.1452355 -4.286622 0.43420368 128.0 +7.1580505 -4.3542681 0.43640265 128.0 +13.782349 -8.5014324 0.81041956 128.0 +6.7585583 -4.2256794 0.4168987 128.0 +3.5251503 -2.2335844 0.23514867 128.0 +3.8508594 -2.4733372 0.25446141 128.0 +3.3920171 -2.2079854 0.2291254 128.0 +3.3742373 -2.2260053 0.22888638 128.0 +3.3796103 -2.2594414 0.22998586 128.0 +3.3135951 -2.2448261 0.22697422 128.0 +3.3096387 -2.2719021 0.22754787 128.0 +3.035743 -2.1112943 0.21239406 128.0 +2.9468119 -2.0763512 0.20794831 128.0 +2.9730301 -2.122262 0.2102429 128.0 +2.9251561 -2.1152847 0.20818733 128.0 +2.9145386 -2.1349647 0.20833074 128.0 +2.9879961 -2.2171171 0.21349356 128.0 +2.9735374 -2.2348089 0.21344575 128.0 +5.4357333 -4.1389785 0.36240238 128.0 +25.302156 -19.517902 1.5647634 128.0 +5.2900796 -4.1315765 0.35666591 128.0 +3.375257 -2.6690593 0.24136317 128.0 +4.4064698 -3.5291417 0.30561146 128.0 +4.3211288 -3.5045068 0.30169156 128.0 +0 -0 0 128.0 +3.9645042 -3.2966342 0.28218761 128.0 +4.0152483 -3.3807447 0.28663337 128.0 +3.885752 -3.3126273 0.27979741 128.0 +3.6211691 -3.1255405 0.26435679 128.0 +3.5680845 -3.1181149 0.26220563 128.0 +3.5817933 -3.1690805 0.26430899 128.0 +3.4931035 -3.1290004 0.25986323 128.0 +3.3517816 -3.0396278 0.2519756 128.0 +3.8075335 -3.4959767 0.28280905 128.0 +2.8468347 -2.6458685 0.22142898 128.0 +4.0676126 -3.8279564 0.30274323 128.0 +3.8018286 -3.6219788 0.28672898 128.0 +2.7904625 -2.6908855 0.22095095 128.0 +2.7660391 -2.7002792 0.2204251 128.0 +4.4688997 -4.4175625 0.3361581 128.0 +4.4544163 -4.4576206 0.33701855 128.0 +3.6033452 -3.6501524 0.2808969 128.0 +2.7498326 -2.8195643 0.22391479 128.0 +3.5132499 -3.6473248 0.27778965 128.0 +3.1727829 -3.33442 0.25570431 128.0 +2.8438232 -3.0254951 0.23414479 128.0 +3.8205612 -4.1155419 0.30417734 128.0 +3.7567663 -4.0969353 0.30145255 128.0 +3.592787 -3.9666321 0.29155716 128.0 +3.6203156 -4.0466785 0.29528585 128.0 +3.5808699 -4.0523462 0.29423416 128.0 +2.7226562 -3.1190858 0.23357114 128.0 +3.3841689 -3.9257267 0.28347832 128.0 +2.6796439 -3.1469374 0.23323652 128.0 +3.754123 -4.4647427 0.31459859 128.0 +3.1167533 -3.7529385 0.26889816 128.0 +3.3710291 -4.1103349 0.28983623 128.0 +1.6827472 -2.0767376 0.16334738 128.0 +1.6849422 -2.1057482 0.16449466 128.0 +1.6695142 -2.112911 0.16430345 128.0 +3.6068954 -4.6251054 0.31612831 128.0 +2.9832079 -3.8738215 0.26942399 128.0 +2.9460859 -3.8745575 0.2683723 128.0 +1.6477321 -2.1939931 0.16674145 128.0 +1.6716976 -2.2546268 0.16975307 128.0 +1.6566527 -2.2632291 0.16965747 128.0 +2.4794211 -3.4322464 0.23806471 128.0 +2.4287496 -3.4059107 0.23562671 128.0 +1.6957467 -2.4085312 0.1763978 128.0 +1.6854937 -2.4254546 0.17678024 128.0 +1.6604162 -2.4209197 0.17591977 128.0 +1.5839779 -2.3400478 0.17066135 128.0 +1.5779071 -2.3621852 0.1713784 128.0 +1.5804138 -2.3976831 0.17286032 128.0 +2.3727872 -3.6494417 0.24375336 128.0 +2.3428028 -3.6521597 0.2430841 128.0 +2.3240869 -3.6723752 0.24341872 128.0 +2.3110271 -3.7018204 0.24427919 128.0 +2.7275081 -4.4296408 0.28438658 128.0 +1.5092312 -2.4841142 0.17453346 128.0 +1.4801084 -2.4701881 0.17324276 128.0 +1.804628 -3.0546703 0.2052235 128.0 +1.7828361 -3.0605063 0.20493667 128.0 +1.6700555 -2.9076524 0.19590175 128.0 +1.768754 -3.1238832 0.20723125 128.0 +1.752472 -3.1399117 0.20751807 128.0 +1.724031 -3.1339741 0.2066098 128.0 +1.7019141 -3.1392241 0.20632298 128.0 +1.2578695 -2.3539114 0.16315615 128.0 +1.5949135 -3.0299189 0.19929582 128.0 +1.5919162 -3.0698018 0.20092115 128.0 +1.1997981 -2.348196 0.16162643 128.0 +1.5447043 -3.0703645 0.19991727 128.0 +1.5165302 -3.060986 0.1989134 128.0 +1.5406071 -3.1582265 0.20359817 128.0 +1.0661902 -2.2193365 0.15326077 128.0 +1.0034966 -2.1219699 0.14776333 128.0 +1.0123508 -2.1751883 0.15024912 128.0 +1.0018933 -2.1877177 0.15058376 128.0 +8.0899744 -17.975859 0.9788323 128.0 +7.8800721 -17.800467 0.96707261 128.0 +1.3932121 -3.1976526 0.20235527 128.0 +7.6960201 -17.977554 0.97132713 128.0 +7.6913271 -18.275782 0.98437756 128.0 +7.3511438 -17.77158 0.95583868 128.0 +7.34162 -18.061571 0.96850669 128.0 +7.2576962 -18.173996 0.97199637 128.0 +7.1529751 -18.235855 0.97290468 128.0 +6.7189469 -17.443289 0.93002462 128.0 +6.6181488 -17.501003 0.93088514 128.0 +1.2416987 -3.3427205 0.20608397 128.0 +1.2139879 -3.3305664 0.20508009 128.0 +1.3366616 -3.7386699 0.2254445 128.0 +1.1819412 -3.3706658 0.20637079 128.0 +1.1982211 -3.4855509 0.21182042 128.0 +5.968545 -17.7299 0.93074173 128.0 +5.9547367 -18.054567 0.94527406 128.0 +4.616848 -14.291557 0.75420231 128.0 +1.2622889 -3.9881923 0.23562671 128.0 +0.97527951 -3.1475697 0.19312914 128.0 +0.95652688 -3.1554065 0.19322474 128.0 +0.93799835 -3.1640894 0.19336815 128.0 +0.92328674 -3.1860967 0.19418082 128.0 +0.89828414 -3.1724784 0.19322474 128.0 +0.86843181 -3.1403806 0.1913604 128.0 +0.85148621 -3.15433 0.19179063 128.0 +0.82805079 -3.1440389 0.19102576 128.0 +0.83181846 -3.2390428 0.19547153 128.0 +0.78843755 -3.1500876 0.19083455 128.0 +4.404335 -18.090233 0.92648715 128.0 +4.278976 -18.056654 0.92352331 128.0 +0.79716134 -3.454124 0.20508009 128.0 +0.77158582 -3.4394562 0.204124 128.0 +0.9258554 -4.2503242 0.24360995 128.0 +0.73179638 -3.4603934 0.20469765 128.0 +0.90147507 -4.3973856 0.25025466 128.0 +0.87525356 -4.4067531 0.25044587 128.0 +0.58587146 -3.0455856 0.18385521 128.0 +3.4543614 -18.603323 0.94097173 128.0 +3.3849201 -18.873898 0.95311385 128.0 +3.2678566 -18.887423 0.95277923 128.0 +3.1348286 -18.804649 0.94780767 128.0 +3.0225492 -18.843256 0.94876373 128.0 +2.9258828 -18.984848 0.95473921 128.0 +2.7627573 -18.687231 0.93948978 128.0 +2.6753345 -18.896687 0.94881153 128.0 +0.44084227 -3.2504621 0.19241208 128.0 +0.42050609 -3.250134 0.19226867 128.0 +2.3873112 -19.433479 0.9724744 128.0 +2.3686354 -20.310923 1.0140637 128.0 +0.4271102 -3.8599715 0.22128557 128.0 +0.34692827 -3.3200772 0.19518469 128.0 +0.37737355 -3.8410637 0.22013828 128.0 +0.25204167 -2.7342401 0.16683705 128.0 +0.27511317 -3.201498 0.18920922 128.0 +0.25664967 -3.2180617 0.18992628 128.0 +0.23616983 -3.209614 0.18944824 128.0 +0.17236821 -2.5532341 0.15789774 128.0 +0.19731151 -3.2212436 0.18987848 128.0 +0.2329496 -4.2347183 0.23839933 128.0 +0.2066222 -4.229084 0.23806471 128.0 +0.13997571 -3.2712338 0.19212526 128.0 +0.15507148 -4.2412829 0.23854274 128.0 +0.60554177 -20.049873 0.99542022 128.0 +0.079811193 -3.2762518 0.19226867 128.0 +0.059778351 -3.2806747 0.19245988 128.0 +0.039577108 -3.274987 0.19217306 128.0 +0.01952051 -3.28216 0.19250768 128.0 +-0.00061173114 -3.269233 0.19188623 128.0 +-0.021685751 -3.4209905 0.19915241 128.0 +-0.044468462 -3.5606215 0.20584494 128.0 +-0.059121642 -3.1807842 0.1876795 128.0 +-0.078061126 -3.1573951 0.18658002 128.0 +-0.098680437 -3.1967914 0.18849216 128.0 +-0.11971149 -3.2340558 0.1903087 128.0 +-0.87340462 -20.093981 0.99800164 128.0 +-0.13575123 -2.7564752 0.16750631 128.0 +-0.15644807 -2.8234072 0.17075697 128.0 +-1.2419471 -20.055559 0.99709338 128.0 +-0.17967491 -2.6538551 0.16272593 128.0 +-0.19269823 -2.6088738 0.16062255 128.0 +-0.21086597 -2.6345246 0.16191326 128.0 +-0.22676842 -2.6301956 0.16176985 128.0 +-0 -0 0 128.0 +-1.9604914 -19.806404 0.98796284 128.0 +-2.1581972 -20.518167 1.0228118 128.0 +-2.2905812 -20.56311 1.0256323 128.0 +-2.4321191 -20.679613 1.0319424 128.0 +-2.555645 -20.637537 1.0306517 128.0 +-2.803771 -21.555513 1.0757306 128.0 +-2.8126209 -20.633322 1.032038 128.0 +-2.9178751 -20.46636 1.0248196 128.0 +-3.0344262 -20.387804 1.0219035 128.0 +-3.1573222 -20.354982 1.0212343 128.0 +-3.2792926 -20.317478 1.0203738 128.0 +-3.654103 -21.788401 1.0927488 128.0 +-3.1023414 -17.828354 0.9014858 128.0 +-3.2187693 -17.848301 0.90339792 128.0 +-4.023365 -21.550529 1.0846221 128.0 +-3.4129326 -17.679962 0.89718342 128.0 +-4.3279681 -21.702303 1.0945175 128.0 +-4.3420172 -21.097139 1.0662655 128.0 +-4.4726295 -21.075962 1.0665523 128.0 +-0 -0 0 128.0 +-5.2519603 -23.333849 1.1800863 128.0 +-5.8664827 -25.336914 1.2800919 128.0 +-4.4833012 -18.837654 0.96214879 128.0 +-5.0721798 -20.745466 1.0575174 128.0 +-4.688591 -18.679495 0.95712942 128.0 +-5.9079409 -22.939291 1.1690915 128.0 +-6.491693 -24.580086 1.2521266 128.0 +-5.5716796 -20.584852 1.0560354 128.0 +-6.2514997 -22.546562 1.1551806 128.0 +-6.3700809 -22.438597 1.1517386 128.0 +-0 -0 0 128.0 +-7.6928716 -25.884077 1.3277522 128.0 +-7.8338299 -25.77809 1.3248363 128.0 +-6.5401201 -21.05644 1.0906454 128.0 +-6.6894431 -21.079702 1.0938482 128.0 +-6.8263602 -21.062014 1.0950433 128.0 +-6.9943819 -21.137318 1.100971 128.0 +-0 -0 0 128.0 +-8.0450706 -23.347496 1.2172776 128.0 +-9.9957638 -28.44001 1.478143 128.0 +-10.136041 -28.283173 1.4733148 128.0 +-10.251805 -28.06283 1.4652838 128.0 +-10.448548 -28.065859 1.4686779 128.0 +-0 -0 0 128.0 +-10.742854 -27.807878 1.4621288 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-1.6810538 -3.4964046 0.22109435 128.0 +-1.6678258 -3.4151289 0.21731785 128.0 +-1.678979 -3.3851476 0.21626617 128.0 +-1.6916258 -3.3587265 0.2154057 128.0 +-1.7103826 -3.344727 0.21521449 128.0 +-1.7419251 -3.3554423 0.21636178 128.0 +-1.7895046 -3.3959358 0.21913441 128.0 +-1.8286902 -3.4192371 0.22099875 128.0 +-1.8544031 -3.4167297 0.22147679 128.0 +-1.8811182 -3.4157846 0.22205043 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-9.8523788 -8.3861065 0.65462697 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.288568 -8.4357367 0.672171 128.0 +-10.30287 -8.3422813 0.6698764 128.0 +-10.374148 -8.2951231 0.67111927 128.0 +-10.555779 -8.334672 0.67910254 128.0 +-10.631142 -8.288784 0.68058443 128.0 +-10.587607 -8.1508951 0.67489576 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.474388 -8.6660509 0.92629594 128.0 +-16.463396 -8.5317163 0.92285407 128.0 +-16.589279 -8.4682264 0.92682177 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.019136 -3.4223952 0.40915447 128.0 +-7.0138869 -3.3667309 0.40776819 128.0 +-7.0335097 -3.3232045 0.40772039 128.0 +-7.0537682 -3.2799852 0.40772039 128.0 +-7.073761 -3.2366424 0.40772039 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-22.262234 -8.4183064 1.1744933 128.0 +-22.281628 -8.2697334 1.1728679 128.0 +-22.488693 -8.1899338 1.1808512 128.0 +-22.496193 -8.0366726 1.1787 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-27.99431 -8.4765339 1.4352629 128.0 +-28.376223 -8.4024334 1.4517553 128.0 +-0 -0 0 128.0 +-28.358011 -8.0198793 1.4458276 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.806067 -3.3690333 0.66915935 128.0 +-12.79457 -3.2822056 0.6675818 128.0 +-12.827065 -3.2067862 0.66820323 128.0 +-34.10482 -8.3022556 1.7152976 128.0 +-34.289249 -8.1246128 1.7218945 128.0 +-34.275188 -7.8994861 1.7187873 128.0 +-0 -0 0 128.0 +-40.477524 -8.8070707 2.0179434 128.0 +-40.547413 -8.562047 2.0187562 128.0 +-40.608971 -8.3150949 2.0192342 128.0 +-40.591625 -8.0523577 2.0159357 128.0 +-18.362047 -3.5262611 0.93026364 128.0 +-18.418694 -3.42009 0.9319846 128.0 +-18.486525 -3.3154714 0.9342792 128.0 +-18.744707 -3.2431734 0.94584769 128.0 +-18.400688 -3.0675118 0.92820811 128.0 +-0 -0 0 128.0 +-24.148949 -3.7214346 1.2048008 128.0 +-24.034966 -3.5530381 1.1982039 128.0 +-24.172028 -3.4218705 1.203797 128.0 +-24.235132 -3.2792466 1.2058525 128.0 +-24.384573 -3.1472239 1.2121148 128.0 +-23.813534 -2.9251144 1.1836716 128.0 +-28.105171 -3.2771389 1.3896103 128.0 +-0 -0 0 128.0 +-24.013357 -2.5019121 1.19089 128.0 +-24.016329 -2.3533535 1.1903163 128.0 +-28.025942 -2.5725448 1.3823441 128.0 +-25.905457 -2.2177868 1.2797573 128.0 +-0 -0 0 128.0 +-44.444916 -3.2552567 2.1681907 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-118.43729 10.108509 4.2904339 128.0 +-118.49245 10.845967 4.2947264 128.0 +-118.45948 11.576319 4.2960143 128.0 +-118.41008 12.305433 4.2968726 128.0 +-118.15354 13.012061 4.2904339 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-46.568428 14.714111 1.7837377 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.974304 14.343148 1.5895336 128.0 +-40.833755 14.575814 1.5875661 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-35.481033 14.158172 1.4030204 128.0 +-0 0 0 128.0 +-35.105129 14.510057 1.3952937 128.0 +-34.979507 14.710077 1.3938986 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-55.83197 25.521805 2.2329934 128.0 +-55.195774 25.641594 2.2141061 128.0 +-55.009384 25.966562 2.2129972 128.0 +-54.824692 26.291937 2.2120314 128.0 +-54.683899 26.638344 2.2128899 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-52.435963 28.391294 2.1699996 128.0 +-52.292301 28.729826 2.1712873 128.0 +-52.120274 29.053062 2.1715021 128.0 +-0 0 0 128.0 +-33.858063 19.421824 1.4327824 128.0 +-0 0 0 128.0 +-33.707554 19.889175 1.4365385 128.0 +-33.542858 20.070484 1.4347856 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-49.59272 33.524052 2.1782987 128.0 +-20.823997 14.26398 0.9390983 128.0 +-0 0 0 128.0 +-20.478985 14.400036 0.93172938 128.0 +-20.406521 14.537018 0.93244481 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-37.528084 30.368135 1.7636341 128.0 +-37.144699 30.436949 1.7545481 128.0 +-36.941093 30.65089 1.7537968 128.0 +-39.822182 33.456036 1.8973126 128.0 +-34.646973 29.47275 1.6637955 128.0 +-34.248913 29.498262 1.6535648 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-21.678122 19.377697 1.0763898 128.0 +-21.536585 19.490229 1.0753167 128.0 +-21.443853 19.646988 1.0766401 128.0 +-32.651978 30.286264 1.629741 128.0 +-32.341679 30.369747 1.6236597 128.0 +-32.247437 30.655754 1.6282384 128.0 +-32.163139 30.953526 1.6334254 128.0 +-32.167305 31.339981 1.6431552 128.0 +-14.664004 14.463601 0.77286762 128.0 +-14.599026 14.577312 0.77408385 128.0 +-14.444644 14.601256 0.77079284 128.0 +-14.338716 14.673173 0.76997012 128.0 +-28.193798 29.207264 1.4886935 128.0 +-27.959574 29.322571 1.4858675 128.0 +-27.667439 29.374998 1.4800367 128.0 +-27.626225 29.694201 1.4873699 128.0 +-27.604446 30.03828 1.4958835 128.0 +-28.879879 31.815775 1.573651 128.0 +-27.255768 30.399323 1.497064 128.0 +-27.13896 30.645292 1.5008558 128.0 +-25.257481 28.87582 1.4088154 128.0 +-25.918053 30.00049 1.4547104 128.0 +-24.81171 29.078682 1.4038789 128.0 +-16.32711 19.37467 0.94253236 128.0 +-24.025948 28.867865 1.3799834 128.0 +-15.924403 19.374386 0.9333033 128.0 +-16.053377 19.777439 0.94739735 128.0 +-15.666698 19.54495 0.93223017 128.0 +-23.069599 29.144768 1.3661041 128.0 +-22.898336 29.296007 1.3665692 128.0 +-22.729139 29.450197 1.367213 128.0 +-22.634626 29.702772 1.3723284 128.0 +-22.921806 30.465576 1.4003018 128.0 +-22.370924 30.116282 1.378481 128.0 +-22.222355 30.302944 1.3806989 128.0 +-22.915649 31.653774 1.4343921 128.0 +-21.700647 30.366032 1.3715771 128.0 +-21.303076 30.19973 1.3584847 128.0 +-21.087679 30.287228 1.3566246 128.0 +-20.297523 29.537235 1.3184563 128.0 +-20.148998 29.710022 1.3205668 128.0 +-0 0 0 128.0 +-19.954174 30.214388 1.3316917 128.0 +-19.743855 30.29858 1.3300821 128.0 +-19.546764 30.402344 1.3293667 128.0 +-0 0 0 128.0 +-19.258087 30.777164 1.3351617 128.0 +-18.929255 30.668541 1.3256464 128.0 +-18.715256 30.742285 1.3238935 128.0 +-18.503637 30.818842 1.3223196 128.0 +-8.5993919 14.524383 0.63979721 128.0 +-8.5267382 14.605354 0.64097768 128.0 +-20.993952 36.471268 1.5419216 128.0 +-20.778158 36.614174 1.5425297 128.0 +-20.556034 36.746208 1.5427443 128.0 +-18.020723 32.68322 1.3715414 128.0 +-17.969196 33.06802 1.3827379 128.0 +-17.770203 33.185581 1.3830599 128.0 +-10.109722 19.161716 0.81110746 128.0 +-16.432871 31.61441 1.3109801 128.0 +-16.320108 31.873873 1.3173832 128.0 +-16.167877 32.059963 1.320853 128.0 +-10.004933 20.146049 0.84076214 128.0 +-9.6247425 19.682766 0.81987149 128.0 +-9.5709839 19.88102 0.82541609 128.0 +-9.6435432 20.350275 0.84169221 128.0 +-14.710059 31.540033 1.2813253 128.0 +-9.3172197 20.301779 0.83518177 128.0 +-9.1871281 20.346725 0.83471674 128.0 +-14.142839 31.841074 1.2827204 128.0 +-13.320694 30.49313 1.2267021 128.0 +-12.984242 30.227201 1.2131804 128.0 +-12.412449 29.392118 1.1776593 128.0 +-12.193937 29.37635 1.1741178 128.0 +-12.055358 29.553329 1.1780884 128.0 +-11.859295 29.590567 1.1766934 128.0 +-11.692883 29.701832 1.1781958 128.0 +-11.502849 29.753445 1.1774446 128.0 +-11.1509 29.377796 1.1603816 128.0 +-10.931703 29.341715 1.1564109 128.0 +-11.143689 30.481054 1.1972978 128.0 +-0 0 0 128.0 +-10.187812 28.963835 1.1346259 128.0 +-10.014137 29.038082 1.1350909 128.0 +-9.824254 29.064899 1.1338032 128.0 +-9.6328478 29.085735 1.1323366 128.0 +-9.5571976 29.461792 1.1442842 128.0 +-9.3689823 29.497021 1.1434258 128.0 +-9.2180786 29.651291 1.1470745 128.0 +-9.0374222 29.712074 1.1472534 128.0 +-8.8731794 29.828272 1.1495427 128.0 +-8.7058964 29.936852 1.1515818 128.0 +-8.5826902 30.203115 1.159523 128.0 +-8.7772741 31.624531 1.2103902 128.0 +-8.6099844 31.777143 1.2140747 128.0 +-8.3709059 31.663195 1.207922 128.0 +-3.68309 14.286437 0.56371099 128.0 +-3.6048598 14.346567 0.56510603 128.0 +-3.5250795 14.40239 0.56635809 128.0 +-3.4447496 14.457773 0.56761009 128.0 +-3.3598101 14.495188 0.56821817 128.0 +-3.2760792 14.538929 0.56907672 128.0 +-4.3071256 19.676207 0.7565915 128.0 +-4.1792507 19.669027 0.75537527 128.0 +-4.0504165 19.655149 0.7539444 128.0 +-3.929934 19.680613 0.75398022 128.0 +-3.8421094 19.875082 0.76020443 128.0 +-6.4432201 34.462402 1.2905544 128.0 +-0 0 0 128.0 +-4.8826065 28.014484 1.0534959 128.0 +-5.7443786 34.197697 1.2768539 128.0 +-4.4886909 27.76449 1.0423352 128.0 +-0 0 0 128.0 +-4.7886453 32.116169 1.1979059 128.0 +-3.9086177 27.364569 1.0250576 128.0 +-4.7724657 34.942009 1.2979592 128.0 +-4.5577178 34.968651 1.2978876 128.0 +-4.3429451 34.994968 1.2978518 128.0 +-0 0 0 128.0 +-3.0479665 27.297779 1.0187975 128.0 +-4.5841632 43.47097 1.6002651 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-2.0930116 25.939034 0.96710747 128.0 +-0 0 0 128.0 +-1.8656067 27.294802 1.0148984 128.0 +-2.3190215 37.288036 1.3729007 128.0 +-2.0776563 37.078056 1.3648878 128.0 +-1.3853416 27.774668 1.0310314 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0.84747517 26.956415 1.0009832 128.0 +-0.84299296 33.318996 1.2286338 128.0 +-0.63972336 33.38549 1.2308517 128.0 +-0.43964261 33.755524 1.2439798 128.0 +-0.23279703 33.798557 1.2454464 128.0 +-0.025498645 33.917274 1.2496675 128.0 +0.18235661 33.868824 1.2479504 128.0 +0.39101943 33.941013 1.2505976 128.0 +0.57493806 32.559074 1.2012327 128.0 +0 0 0 128.0 +0 0 0 128.0 +1.0371946 28.745878 1.0652291 128.0 +1.293807 30.64006 1.1333382 128.0 +2.0015054 41.378094 1.5184554 128.0 +1.5440509 28.316778 1.0507058 128.0 +1.6870868 27.801025 1.0325695 128.0 +2.8414361 42.510864 1.560666 128.0 +2.0309587 27.817101 1.0339646 128.0 +4.0105038 50.652943 1.8543867 128.0 +2.3896706 27.995205 1.0413336 128.0 +4.0784178 44.554077 1.6370741 128.0 +0 0 0 128.0 +2.0846021 20.056047 0.75737852 128.0 +2.2080622 20.046852 0.75752157 128.0 +3.3205118 28.538078 1.0640128 128.0 +2.4518347 20.001383 0.75691348 128.0 +2.5824296 20.047415 0.75913131 128.0 +2.688271 19.904425 0.75455254 128.0 +4.6790881 33.113636 1.2326759 128.0 +2.9305761 19.858072 0.75412327 128.0 +3.0510001 19.830828 0.75380135 128.0 +3.1712005 19.802853 0.75347936 128.0 +5.5508642 33.352592 1.2458757 128.0 +8.3690023 48.449005 1.7955066 128.0 +5.3127723 29.668777 1.1144866 128.0 +5.3815875 29.025417 1.0922724 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.9625714 14.484672 0.56481987 128.0 +3.1027436 14.709705 0.57372701 128.0 +3.1819065 14.639608 0.57186687 128.0 +3.3065882 14.775848 0.57759035 128.0 +3.3987582 14.762098 0.57784075 128.0 +3.481447 14.707901 0.57662451 128.0 +3.53668 14.542545 0.57133031 128.0 +9.5820885 38.376499 1.4514551 128.0 +3.4688282 13.537703 0.53584486 128.0 +3.5340512 13.448505 0.53334087 128.0 +3.6011696 13.369634 0.53123033 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +10.170821 33.61972 1.2928796 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.6734419 20.307718 0.81268144 128.0 +7.8190813 20.315279 0.81479192 128.0 +0 0 0 128.0 +0 0 0 128.0 +8.0235958 19.754034 0.79880202 128.0 +8.1064806 19.612074 0.79522485 128.0 +8.3963432 19.965458 0.81089282 128.0 +8.4499092 19.752769 0.80463278 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.721132 63.138176 2.564811 128.0 +31.626583 61.998711 2.5268931 128.0 +31.697117 61.206253 2.5028188 128.0 +0 0 0 128.0 +32.311283 60.560501 2.492588 128.0 +32.659428 60.318916 2.490871 128.0 +0 0 0 128.0 +33.739235 60.527248 2.5160184 128.0 +34.186237 60.453926 2.5215631 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.583662 31.835915 1.3735088 128.0 +19.737915 31.649857 1.3707544 128.0 +29.815207 47.162247 2.0328155 128.0 +20.48284 31.963968 1.3945068 128.0 +0 0 0 128.0 +0 0 0 128.0 +20.727764 31.071907 1.3725787 128.0 +13.657419 20.203238 0.90851355 128.0 +13.850025 20.219645 0.91287774 128.0 +0 0 0 128.0 +14.190228 20.180597 0.91867274 128.0 +14.024456 19.686981 0.9008227 128.0 +14.148499 19.605421 0.90103734 128.0 +14.234322 19.471445 0.89896256 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.184301 39.518757 1.8375382 128.0 +31.345095 39.225174 1.8328879 128.0 +31.584558 39.03133 1.8328521 128.0 +32.048943 39.111984 1.8455869 128.0 +0 0 0 128.0 +32.21022 38.339287 1.8279872 128.0 +32.444859 38.140926 1.8279872 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.190229 19.939934 1.0262022 128.0 +19.274559 19.783155 1.0242705 128.0 +19.391373 19.660248 1.0240558 128.0 +19.669809 19.699306 1.0320687 128.0 +39.218018 38.798317 2.0102794 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.4681 15.661517 0.87538904 128.0 +17.419474 15.426165 0.86848515 128.0 +17.053452 14.916319 0.8465929 128.0 +17.148436 14.814667 0.84677178 128.0 +17.323399 14.781171 0.8507424 128.0 +17.776756 14.980499 0.86773396 128.0 +17.586439 14.636518 0.85460573 128.0 +17.933775 14.740282 0.86655349 128.0 +18.580986 15.082182 0.89223748 128.0 +17.540186 14.059682 0.84026134 128.0 +18.252207 14.447379 0.86884284 128.0 +18.509796 14.467434 0.87653375 128.0 +18.427332 14.221699 0.86880708 128.0 +20.219234 15.407655 0.94553721 128.0 +20.368494 15.32476 0.94800544 128.0 +18.685986 13.880102 0.86880708 128.0 +18.799812 13.786462 0.87009484 128.0 +20.821972 15.073832 0.95573211 128.0 +21.484848 15.353693 0.98084378 128.0 +20.134048 14.202519 0.9175638 128.0 +20.554611 14.311126 0.93212283 128.0 +20.202217 13.882492 0.91302079 128.0 +20.177843 13.684229 0.90829897 128.0 +20.236513 13.543487 0.90722579 128.0 +20.797062 13.734638 0.92772293 128.0 +21.000675 13.684794 0.93283826 128.0 +21.148975 13.597296 0.93559271 128.0 +21.291925 13.505278 0.93813246 128.0 +32.017426 20.03417 1.3875313 128.0 +32.059811 19.787998 1.3841687 128.0 +24.565531 14.954885 1.0650501 128.0 +32.452736 19.484652 1.3905361 128.0 +24.517599 14.516356 1.0554992 128.0 +24.623468 14.375722 1.0562146 128.0 +24.66964 14.200434 1.0544976 128.0 +25.222174 14.313176 1.0736711 128.0 +0 0 0 128.0 +25.445803 14.030088 1.0757101 128.0 +0 0 0 128.0 +28.11985 15.057537 1.1773731 128.0 +28.172823 14.864194 1.1757991 128.0 +28.14645 14.630207 1.1710773 128.0 +28.112934 14.394374 1.1661408 128.0 +28.11685 14.179304 1.1627783 128.0 +28.167521 13.988735 1.1613474 128.0 +28.258211 13.818274 1.161562 128.0 +28.608997 13.772942 1.1721504 128.0 +28.968409 13.727672 1.1830608 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.040531 14.015918 1.2547113 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +36.625698 14.678935 1.4479853 128.0 +36.804348 14.489073 1.4514194 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +39.385025 13.582557 1.5268618 128.0 +39.444901 13.332959 1.5260032 128.0 +42.560799 14.095821 1.6404366 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +48.262527 14.357177 1.8379675 128.0 +0 0 0 128.0 +48.399513 13.753733 1.8366439 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.359333 0.43901116 0.65718222 128.0 +17.3617 0.332488 0.65718222 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.442581 -0.094108373 0.65997237 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.298166 -0.51804709 0.65507168 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.455393 -0.84456861 0.66115284 128.0 +17.465849 -0.95252734 0.66172522 128.0 +17.41379 -1.0568939 0.66007972 128.0 +17.493727 -1.1695207 0.66319185 128.0 +17.501173 -1.2779295 0.66372842 128.0 +17.421272 -1.379612 0.66115284 128.0 +17.413475 -1.4865658 0.6611886 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +27.442514 -2.8521948 1.0231974 128.0 +27.42251 -3.0203066 1.0231259 128.0 +27.403461 -3.1885109 1.0231259 128.0 +27.399252 -3.3585405 1.0236982 128.0 +25.464174 -3.2800865 0.95462316 128.0 +25.423761 -3.4335952 0.95390773 128.0 +27.407005 -3.8727882 1.026381 128.0 +27.377785 -4.0401521 1.0262022 128.0 +27.350504 -4.2077589 1.0261307 128.0 +27.811644 -4.4535527 1.0438018 128.0 +19.261532 -3.2058637 0.7345562 128.0 +19.170595 -3.3117425 0.73198062 128.0 +19.169588 -3.4328318 0.73269606 128.0 +19.293591 -3.5773509 0.73799026 128.0 +19.121111 -3.6668725 0.73251724 128.0 +19.134523 -3.7913144 0.73384076 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +37.660179 -8.1847639 1.4151112 128.0 +37.561462 -8.4049959 1.4133584 128.0 +37.509182 -8.6353102 1.4133584 128.0 +37.497311 -8.8751974 1.4148966 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +9.0494394 -2.4376402 0.37108082 128.0 +9.0314217 -2.4923232 0.3709735 128.0 +7.9686532 -2.251797 0.3320182 128.0 +7.934526 -2.2948196 0.331267 128.0 +8.9178934 -2.6385787 0.36850527 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +9.0822229 -2.8700252 0.37655386 128.0 +7.9754772 -2.5742676 0.33559537 128.0 +7.9481421 -2.6194029 0.3351661 128.0 +25.557838 -8.5961542 1.0008043 128.0 +0 -0 0 128.0 +7.221333 -2.5281932 0.3094821 128.0 +11.23213 -4.0096731 0.46251306 128.0 +11.227037 -4.0856929 0.46326426 128.0 +7.3497305 -2.7260122 0.31620714 128.0 +7.24125 -2.7364423 0.31270152 128.0 +6.9995499 -2.6943147 0.30408058 128.0 +6.9698596 -2.7321069 0.30357978 128.0 +11.13541 -4.4437132 0.46476668 128.0 +7.1996903 -2.9246089 0.31377468 128.0 +7.1889987 -2.9717844 0.31406087 128.0 +19.674353 -8.2739267 0.79958898 128.0 +19.663643 -8.4117842 0.80116296 128.0 +19.691385 -8.5669641 0.8042751 128.0 +5.6973052 -2.5206757 0.25861484 128.0 +4.7684727 -2.144882 0.22277169 128.0 +4.6525159 -2.1271524 0.2187295 128.0 +4.7127895 -2.1897638 0.221627 128.0 +4.7227621 -2.2297311 0.22255707 128.0 +4.8297396 -2.3165727 0.22735046 128.0 +4.6932473 -2.2866435 0.22248551 128.0 +4.6737537 -2.3127387 0.22227089 128.0 +4.5996447 -2.3113136 0.21987419 128.0 +4.6200948 -2.3572035 0.22126928 128.0 +4.6188555 -2.392401 0.22180586 128.0 +4.6014357 -2.4193017 0.22169854 128.0 +4.5168486 -2.4103267 0.21887258 128.0 +4.4984589 -2.4360929 0.2187295 128.0 +4.4956889 -2.470386 0.21923029 128.0 +4.4891753 -2.5027902 0.21958801 128.0 +32.471661 -18.36269 1.3708975 128.0 +4.4130468 -2.5318341 0.2177279 128.0 +3.3781402 -1.9658474 0.17551738 128.0 +3.3565466 -1.980952 0.1751239 128.0 +3.3520467 -2.0061281 0.17544584 128.0 +3.3507817 -2.033397 0.17591088 128.0 +3.3884633 -2.0848114 0.1780214 128.0 +3.3586476 -2.0949869 0.17730597 128.0 +3.3719163 -2.1321101 0.17841488 128.0 +3.2973461 -2.1133993 0.17580356 128.0 +3.1611152 -2.0535743 0.17054513 128.0 +3.009887 -1.9817201 0.16460705 128.0 +2.9835374 -1.9907233 0.16399893 128.0 +3.3620555 -2.2731569 0.18088312 128.0 +3.3834975 -2.3180273 0.18242131 128.0 +3.3651056 -2.3358953 0.18224245 128.0 +3.5117571 -2.469738 0.18928945 128.0 +3.0342088 -2.161901 0.16897118 128.0 +3.0751822 -2.2196596 0.17136788 128.0 +3.1534779 -2.3057201 0.17544584 128.0 +3.5673487 -2.6420038 0.19451211 128.0 +5.4778261 -4.1089315 0.28072169 128.0 +3.0786712 -2.3391941 0.17401497 128.0 +0 -0 0 128.0 +5.2972088 -4.127985 0.27599984 128.0 +3.4987485 -2.7613313 0.19515601 128.0 +5.5756149 -4.4559498 0.29109547 128.0 +3.4389625 -2.7833133 0.19397554 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +4.7953668 -4.0796733 0.26097578 128.0 +3.7161906 -3.20119 0.21118169 128.0 +3.6128726 -3.151026 0.20721103 128.0 +3.5844803 -3.1651978 0.20678177 128.0 +3.5746777 -3.1957901 0.20724681 128.0 +3.3564162 -3.0379529 0.19766001 128.0 +3.7989874 -3.4811013 0.22005305 128.0 +3.8918581 -3.6103644 0.22563341 128.0 +3.8419483 -3.608181 0.2242741 128.0 +2.8679938 -2.7269371 0.17727019 128.0 +3.4834301 -3.3529177 0.20867768 128.0 +3.45277 -3.3644652 0.20817687 128.0 +3.8034708 -3.7519073 0.22684966 128.0 +3.7803781 -3.7751744 0.22684966 128.0 +3.7543314 -3.7954576 0.22670656 128.0 +3.5507658 -3.6340194 0.21747749 128.0 +2.9793863 -3.0869997 0.18918215 128.0 +3.7838328 -3.9687917 0.23189345 128.0 +7.745223 -8.2236576 0.43997693 128.0 +3.9479115 -4.2439375 0.24308997 128.0 +3.5235021 -3.8346786 0.22202049 128.0 +3.8700101 -4.2639465 0.24173065 128.0 +3.832433 -4.2749629 0.24112253 128.0 +3.7875783 -4.2774496 0.24012092 128.0 +3.8599551 -4.4134398 0.24548666 128.0 +3.8301888 -4.4340158 0.24534358 128.0 +3.1406076 -3.6812491 0.20882076 128.0 +3.7658281 -4.4692216 0.244807 128.0 +3.7664638 -4.5260415 0.24638095 128.0 +3.7468712 -4.5591035 0.24684599 128.0 +3.7289038 -4.5944223 0.24741833 128.0 +3.7118938 -4.6312518 0.24806222 128.0 +3.0445404 -3.8468518 0.21121746 128.0 +3.103348 -3.9709682 0.21601085 128.0 +3.5503047 -4.6006904 0.24362655 128.0 +3.5395749 -4.6454391 0.24466392 128.0 +3.5542648 -4.7245669 0.24723947 128.0 +1.6521981 -2.2248504 0.13480929 128.0 +1.6337875 -2.2284992 0.13452311 128.0 +2.4628103 -3.4025304 0.18596269 128.0 +1.6452487 -2.3028562 0.13691981 128.0 +1.5734813 -2.2312458 0.13334265 128.0 +1.5620452 -2.244139 0.13348573 128.0 +1.556736 -2.2660358 0.13402231 128.0 +1.5366322 -2.2664471 0.13362882 128.0 +1.5188057 -2.2700195 0.13337842 128.0 +1.5065007 -2.2817976 0.13348573 128.0 +1.4886522 -2.2851374 0.13323534 128.0 +1.4864932 -2.312722 0.13402231 128.0 +1.4754864 -2.3268628 0.13423695 128.0 +1.4855664 -2.3748424 0.13588244 128.0 +1.5103345 -2.4476936 0.1385653 128.0 +1.500484 -2.465451 0.13892302 128.0 +1.488929 -2.4806089 0.13917342 128.0 +2.4074819 -4.0668049 0.20477857 128.0 +1.8982592 -3.2521234 0.17040205 128.0 +1.8363888 -3.1909564 0.16739723 128.0 +1.653017 -2.9136052 0.15552105 128.0 +1.7907499 -3.2019134 0.1669322 128.0 +1.7324661 -3.1428297 0.16407047 128.0 +1.2751123 -2.3473182 0.13123213 128.0 +1.2672901 -2.3674319 0.13173293 128.0 +1.2443457 -2.3592534 0.13108903 128.0 +1.2404473 -2.3872387 0.13191178 128.0 +1.621581 -3.1678078 0.16299732 128.0 +1.2245589 -2.4290504 0.13298494 128.0 +1.572361 -3.1668823 0.16217457 128.0 +8.2062654 -16.782089 0.70429343 128.0 +1.4887291 -3.0931935 0.15849009 128.0 +1.4637301 -3.089627 0.15798929 128.0 +7.77178 -16.664022 0.69377655 128.0 +7.6723032 -16.717754 0.69402695 128.0 +7.5432587 -16.706223 0.69173759 128.0 +7.3724551 -16.598757 0.68572795 128.0 +1.3834702 -3.1678724 0.15934862 128.0 +1.3636119 -3.1753836 0.15931284 128.0 +7.36272 -17.435007 0.71305746 128.0 +7.0900846 -17.081121 0.69760412 128.0 +6.8692589 -16.840227 0.68662226 128.0 +6.7988892 -16.964619 0.68980592 128.0 +6.7279825 -17.090635 0.69306111 128.0 +6.665514 -17.241587 0.6972822 128.0 +6.3546081 -16.742126 0.67660618 128.0 +6.2011685 -16.645014 0.67141932 128.0 +1.2164651 -3.3284042 0.16246074 128.0 +1.2223361 -3.409179 0.16525093 128.0 +1.1758605 -3.3440242 0.16249652 128.0 +1.2576284 -3.6478288 0.17372881 128.0 +5.8441582 -17.290356 0.68891162 128.0 +5.7533526 -17.372374 0.69066441 128.0 +5.6614513 -17.452976 0.69238144 128.0 +5.5324726 -17.41881 0.68980592 128.0 +0.97751021 -3.1455083 0.15351784 128.0 +0.96313542 -3.1677008 0.15412596 128.0 +0.94966477 -3.193666 0.15487716 128.0 +0.93646961 -3.221504 0.15569991 128.0 +0.94646192 -3.3319707 0.15959902 128.0 +0.87575138 -3.1566799 0.15287395 128.0 +0.84930903 -3.1359503 0.15190811 128.0 +0.83235019 -3.1497979 0.15223007 128.0 +0.80951464 -3.1412978 0.15172926 128.0 +4.4108157 -17.553732 0.68347436 128.0 +3.9829602 -16.27293 0.63528997 128.0 +0.81132281 -3.4064784 0.16095833 128.0 +0.78724623 -3.397763 0.16045754 128.0 +0.77473193 -3.4395759 0.16181685 128.0 +3.9850502 -18.205013 0.70268369 128.0 +3.87431 -18.234009 0.70286256 128.0 +1.7243441 -8.3687325 0.34146193 128.0 +0.61082309 -3.0606496 0.14732935 128.0 +1.6184819 -8.3735638 0.34088957 128.0 +3.370189 -18.026932 0.69205952 128.0 +3.2463689 -17.974497 0.68941242 128.0 +3.12658 -17.93993 0.68744498 128.0 +2.9826696 -17.757725 0.68014759 128.0 +2.8731756 -17.772732 0.68004024 128.0 +2.7671392 -17.809776 0.68075567 128.0 +2.6662095 -17.882761 0.68279469 128.0 +2.5780554 -18.05015 0.68826771 128.0 +2.4729338 -18.107216 0.68977016 128.0 +2.3945932 -18.373756 0.69885612 128.0 +2.2820551 -18.390087 0.6989277 128.0 +2.1639075 -18.359081 0.69731796 128.0 +2.048445 -18.347183 0.69642365 128.0 +1.9338386 -18.340523 0.69574398 128.0 +1.7740817 -17.876686 0.67864519 128.0 +0.3012329 -3.2409515 0.15212275 128.0 +0.28038961 -3.2317872 0.15172926 128.0 +0.20540547 -2.5501075 0.12718993 128.0 +0.21515769 -2.8921556 0.13942382 128.0 +0.17211956 -2.5235221 0.12615256 128.0 +0.15278561 -2.4626901 0.12393472 128.0 +0.13347781 -2.3887465 0.12125184 128.0 +0.11762306 -2.3655658 0.12039332 128.0 +0.1055517 -2.4221537 0.12239654 128.0 +0.089411095 -2.3888016 0.1211803 128.0 +0.098723851 -3.1514399 0.14847404 128.0 +0.081863381 -3.2498922 0.15197966 128.0 +0.061307825 -3.2183597 0.15083496 128.0 +0.041728538 -3.2316658 0.1513 128.0 +0.021933096 -3.2368579 0.15147886 128.0 +0.0020556725 -3.2159448 0.15072766 128.0 +-0.01745691 -3.1749239 0.14926101 128.0 +-0.036500521 -3.1367838 0.1479017 128.0 +-0.052414335 -2.9476511 0.14114086 128.0 +-0.067386888 -2.8163948 0.13645478 128.0 +-0.085354216 -2.8389034 0.13727753 128.0 +-0.1015831 -2.8053687 0.13609706 128.0 +-0.11803593 -2.78672 0.13545318 128.0 +-0.13305692 -2.743021 0.13391499 128.0 +-1.0448407 -19.159248 0.72242963 128.0 +-1.1572359 -19.067686 0.71938902 128.0 +-0.17772681 -2.6533566 0.13080287 128.0 +-0.19400415 -2.652216 0.13080287 128.0 +-0.20806581 -2.623081 0.12980126 128.0 +-0.22577147 -2.6406739 0.13048092 128.0 +-1.7621752 -19.248131 0.72747344 128.0 +-1.9030871 -19.470692 0.73587978 128.0 +-2.0254135 -19.486481 0.73688138 128.0 +-2.1542406 -19.558121 0.73992193 128.0 +-2.2835608 -19.624941 0.74281943 128.0 +-2.4190094 -19.733561 0.74725515 128.0 +-2.5506425 -19.800613 0.75022417 128.0 +-2.668879 -19.76082 0.74936563 128.0 +-2.7842069 -19.702513 0.74786323 128.0 +-2.9463313 -19.964848 0.75798661 128.0 +-3.0359576 -19.733042 0.75025994 128.0 +-3.1961648 -19.958765 0.75913131 128.0 +-2.9545317 -17.751284 0.67975408 128.0 +-3.0678184 -17.758425 0.68068415 128.0 +-3.1200073 -17.42251 0.66916567 128.0 +-3.6853793 -19.876282 0.75920284 128.0 +-3.429178 -17.881502 0.6873377 128.0 +-3.5423284 -17.877771 0.68798155 128.0 +-4.0656295 -19.878511 0.7618857 128.0 +-3.7905281 -17.970831 0.69302535 128.0 +-4.5579948 -20.971657 0.80381006 128.0 +-4.1971292 -18.755821 0.72357434 128.0 +-4.3049593 -18.698551 0.72242963 128.0 +-4.4499927 -18.800154 0.72715145 128.0 +-5.020052 -20.642761 0.79604763 128.0 +-4.6324315 -18.552149 0.72006869 128.0 +-5.2715039 -20.573795 0.79583299 128.0 +-5.6254497 -21.408058 0.82792014 128.0 +-5.7910066 -21.500515 0.83264196 128.0 +-5.8832169 -21.321037 0.82731199 128.0 +-6.050611 -21.414368 0.83214116 128.0 +-6.231585 -21.548685 0.83854431 128.0 +-6.6656089 -22.53064 0.87664109 128.0 +-6.8043075 -22.491228 0.87671262 128.0 +-6.4243455 -20.774414 0.81396919 128.0 +-7.4019585 -23.425667 0.91498822 128.0 +-7.5965061 -23.537683 0.92092633 128.0 +-7.7345324 -23.471647 0.9202109 128.0 +-6.9567704 -20.683432 0.81672359 128.0 +-0 -0 0 128.0 +-8.4307184 -24.08367 0.94897127 128.0 +-8.5793419 -24.034309 0.94907856 128.0 +-8.7994394 -24.181248 0.95669794 128.0 +-9.0028963 -24.275784 0.96238565 128.0 +-9.3010941 -24.61553 0.97751701 128.0 +-7.9906607 -20.761097 0.83189076 128.0 +-9.8993044 -25.256924 1.0066351 128.0 +-10.248536 -25.68301 1.0254152 128.0 +-10.588696 -26.069632 1.0428002 128.0 +-10.8019 -26.133471 1.0478083 128.0 +-11.106934 -26.411236 1.0611868 128.0 +-11.109993 -25.971382 1.046735 128.0 +-0 -0 0 128.0 +-10.933022 -24.714436 1.0029507 128.0 +-0 -0 0 128.0 +-16.015455 -35.035347 1.4145031 128.0 +-16.262547 -35.006207 1.4172575 128.0 +-16.490259 -34.933777 1.4183664 128.0 +-1.6701081 -3.4816906 0.17383611 128.0 +-1.663868 -3.4147761 0.17158251 128.0 +-1.6679494 -3.3704648 0.17022319 128.0 +-1.6854584 -3.3539159 0.16997278 128.0 +-1.7060059 -3.3435111 0.16997278 128.0 +-1.7292466 -3.3383048 0.17018741 128.0 +-1.7724826 -3.3709762 0.17194022 128.0 +-1.7968966 -3.3670907 0.1722264 128.0 +-1.8398865 -3.397306 0.17390767 128.0 +-1.8655094 -3.3947115 0.17426538 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.324634 -8.4858923 0.51398844 128.0 +-10.302796 -8.3625479 0.51059014 128.0 +-10.459961 -8.384181 0.51545507 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.482691 -8.6962051 0.70268369 128.0 +-16.454163 -8.5525007 0.69939274 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-7.0081286 -3.4266422 0.31484783 128.0 +-7.0155158 -3.377074 0.31431127 128.0 +-7.0370078 -3.3343921 0.31434703 128.0 +-7.075449 -3.2995994 0.31506246 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-36.100494 -15.770309 1.4457318 128.0 +-0 -0 0 128.0 +-36.292221 -15.326502 1.4457675 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-22.281677 -8.4573307 0.88869607 128.0 +-22.331278 -8.3197556 0.88862455 128.0 +-22.382845 -8.1829195 0.88866031 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-28.179754 -8.760582 1.0919147 128.0 +-28.223417 -8.5846014 1.0915569 128.0 +-28.306211 -8.4203825 1.0927017 128.0 +-28.355427 -8.2459822 1.09263 128.0 +-28.412218 -8.0737534 1.0928805 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.791137 -3.3813896 0.50919503 128.0 +-12.778742 -3.2943578 0.5079788 128.0 +-12.82973 -3.223681 0.5091235 128.0 +-0 -0 0 128.0 +-34.276806 -8.1674509 1.296886 128.0 +-34.365215 -7.9660063 1.2983168 128.0 +-0 -0 0 128.0 +-40.494522 -8.8646927 1.5194212 128.0 +-40.586277 -8.624157 1.5208163 128.0 +-40.617874 -8.3707256 1.5200651 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-18.61767 -3.3625467 0.71280706 128.0 +-18.481413 -3.2209623 0.70711941 128.0 +-18.694983 -3.1401172 0.7141664 128.0 +-52.395634 -8.4711733 1.9354452 128.0 +-27.515995 -4.2754335 1.032355 128.0 +-27.544676 -4.1069603 1.0324622 128.0 +-24.075089 -3.4387167 0.9061169 128.0 +-24.196733 -3.3047254 0.9097656 128.0 +-23.993586 -3.127131 0.90171695 128.0 +-24.05695 -2.9853892 0.90332669 128.0 +-24.08077 -2.8384244 0.90354133 128.0 +-27.876806 -3.112627 1.0396523 128.0 +-27.859602 -2.9377463 1.0383645 128.0 +-27.857214 -2.7647734 1.0376492 128.0 +-29.46575 -2.7419686 1.0948837 128.0 +-25.913755 -2.2510931 0.9666782 128.0 +-29.672497 -2.3943212 1.1011795 128.0 +-39.859879 -2.9704437 1.4663361 128.0 +-0 -0 0 128.0 +-42.269211 -2.6288648 1.5515442 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-59.64743 14.963211 1.4528253 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-53.626659 14.506974 1.3159205 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-46.857353 14.231781 1.1642264 128.0 +-46.77774 14.521692 1.1644337 128.0 +-46.696331 14.811162 1.164641 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-41.017223 14.408766 1.0375727 128.0 +-41.019337 14.692875 1.0398073 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-40.740593 15.731489 1.0421339 128.0 +-35.704819 14.039183 0.91985726 128.0 +-34.987812 14.005708 0.90421557 128.0 +-0 0 0 128.0 +-35.042332 14.528973 0.90992862 128.0 +-34.90094 14.721954 0.9086386 128.0 +-35.208675 15.10692 0.91863632 128.0 +-35.183125 15.352262 0.92034101 128.0 +-60.180759 26.701727 1.5528949 128.0 +-56.176434 25.33864 1.4558431 128.0 +-55.881767 25.619524 1.4523416 128.0 +-55.070145 25.657501 1.4357324 128.0 +-54.969509 26.022301 1.4372066 128.0 +-54.656544 26.285868 1.4333135 128.0 +-0 0 0 128.0 +-39.927402 19.808788 1.0628436 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-52.220428 27.935982 1.4004637 128.0 +-0 0 0 128.0 +-51.727444 28.494144 1.3966167 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.819103 19.44869 0.93476176 128.0 +-0 0 0 128.0 +-33.619194 19.886671 0.93586749 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-55.879112 37.365807 1.5847542 128.0 +-49.54842 33.574169 1.4149536 128.0 +-20.80162 14.281446 0.61722928 128.0 +-20.752171 14.435648 0.618312 128.0 +-20.543083 14.478043 0.61492562 128.0 +-27.640432 19.735455 0.81840533 128.0 +-45.485168 32.900894 1.3293507 128.0 +-45.230019 33.140957 1.3278533 128.0 +-0 0 0 128.0 +-44.875061 33.734955 1.3294429 128.0 +-44.493828 33.87764 1.3244209 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-37.080982 30.453087 1.1414665 128.0 +-36.894196 30.680677 1.1414896 128.0 +-0 0 0 128.0 +-35.172939 29.986942 1.1008536 128.0 +-35.47261 30.620295 1.1155968 128.0 +-34.713482 30.338676 1.0981352 128.0 +-21.948648 19.420805 0.71112525 128.0 +-21.925871 19.641838 0.71411997 128.0 +-21.651655 19.636971 0.70935148 128.0 +-0 0 0 128.0 +-33.954689 31.564167 1.1040555 128.0 +-32.888214 30.951078 1.0764581 128.0 +-33.650925 32.060532 1.1067969 128.0 +-38.755245 37.380199 1.2765284 128.0 +-32.703476 31.932556 1.0890359 128.0 +-0 0 0 128.0 +-14.520478 14.5296 0.50914294 128.0 +-14.420519 14.60775 0.50879735 128.0 +-14.238489 14.601472 0.50575656 128.0 +-28.167448 29.244032 0.97141248 128.0 +-27.977142 29.405449 0.97106695 128.0 +-27.634615 29.404627 0.96563041 128.0 +-27.546852 29.674019 0.96878636 128.0 +-27.64127 30.144602 0.97823125 128.0 +-27.439678 30.295855 0.97767836 128.0 +-27.257936 30.468866 0.97783965 128.0 +-27.089005 30.656521 0.97848463 128.0 +-26.058321 29.857269 0.94897515 128.0 +-25.881809 30.024929 0.94922853 128.0 +-26.331543 30.928427 0.97178108 128.0 +-26.246788 31.214905 0.97555906 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-15.835533 19.551872 0.61557066 128.0 +-15.690915 19.618219 0.61467224 128.0 +-23.395195 29.622566 0.90559781 128.0 +-23.053766 29.561373 0.89963138 128.0 +-22.730444 29.518499 0.89428693 128.0 +-22.686848 29.838867 0.89953923 128.0 +-22.386301 29.821598 0.89504713 128.0 +-22.417185 30.247555 0.90334022 128.0 +-22.240023 30.396637 0.90368575 128.0 +-22.334642 30.922358 0.91476625 128.0 +-21.339531 29.92975 0.88281488 128.0 +-21.198059 30.120626 0.88451958 128.0 +-20.717415 29.8248 0.87258673 128.0 +-20.56794 30.000834 0.8739689 128.0 +-20.170593 29.811817 0.86521512 128.0 +-19.934555 29.856033 0.86302668 128.0 +-20.48744 31.095644 0.89387232 128.0 +-19.830393 30.504103 0.87417626 128.0 +-20.831305 32.47826 0.9249022 128.0 +-19.156292 30.273743 0.86132199 128.0 +-18.960648 30.375446 0.86090732 128.0 +-18.798019 30.530376 0.86196703 128.0 +-18.732277 30.845957 0.86738056 128.0 +-18.494888 30.88055 0.86523819 128.0 +-8.5905056 14.543907 0.42503735 128.0 +-8.5197182 14.628308 0.4258897 128.0 +-20.767126 36.168926 0.99684459 128.0 +-18.247553 32.236938 0.88938022 128.0 +-18.171669 32.567429 0.89516234 128.0 +-17.854918 32.46632 0.88958752 128.0 +-17.688717 32.636791 0.89120007 128.0 +-17.387346 32.555996 0.88627028 128.0 +-17.708647 33.652973 0.91207099 128.0 +-10.028624 19.34412 0.53789222 128.0 +-10.082956 19.744526 0.54666907 128.0 +-9.9827271 19.848 0.54775178 128.0 +-9.8217106 19.83004 0.54572457 128.0 +-9.6761904 19.841408 0.54448062 128.0 +-15.008182 31.261818 0.8348763 128.0 +-9.5276489 20.161131 0.54964072 128.0 +-17.400606 37.415733 0.9866395 128.0 +-14.493025 31.670044 0.83835477 128.0 +-14.276677 31.71006 0.83713388 128.0 +-13.40907 30.2778 0.7988475 128.0 +-13.121246 30.125778 0.79297328 128.0 +-12.44343 29.055113 0.76413178 128.0 +-12.221085 29.026798 0.76152873 128.0 +-12.015228 29.034727 0.75987011 128.0 +-11.808983 29.039371 0.75816542 128.0 +-11.58051 28.98595 0.75505549 128.0 +-12.008986 30.60228 0.79331881 128.0 +-12.342555 32.028996 0.8267445 128.0 +-12.18223 32.200439 0.82911724 128.0 +-11.430441 30.782528 0.79244345 128.0 +-10.985023 30.148521 0.77518922 128.0 +-10.426704 29.171322 0.74964195 128.0 +-10.172785 29.021526 0.74443579 128.0 +-9.9620333 28.988852 0.74213213 128.0 +-9.7635536 28.988794 0.74065781 128.0 +-9.5761003 29.019676 0.73996675 128.0 +-9.4110775 29.118793 0.74095726 128.0 +-9.2762604 29.315153 0.74432057 128.0 +-9.1299229 29.480389 0.74694669 128.0 +-8.992341 29.679373 0.75040215 128.0 +-8.8339167 29.814508 0.75233722 128.0 +-8.6566515 29.888317 0.75282097 128.0 +-8.5161037 30.092861 0.75646073 128.0 +-8.3762999 30.3074 0.76035386 128.0 +-8.2159557 30.453783 0.76263446 128.0 +-8.4322262 32.036022 0.79914701 128.0 +-3.7226944 14.501791 0.38080764 128.0 +-3.5982299 14.38276 0.37744433 128.0 +-3.5146432 14.423994 0.37790507 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.7897587 40.36404 0.98769915 128.0 +-4.1614652 19.687611 0.49949071 128.0 +-4.0349665 19.685352 0.4988457 128.0 +-3.9137144 19.707779 0.49879962 128.0 +-3.813468 19.839417 0.50133359 128.0 +-5.2005262 27.983265 0.69165957 128.0 +-4.9181795 27.398655 0.67723888 128.0 +-4.7753839 27.575092 0.68067127 128.0 +-4.6820974 28.059456 0.69131404 128.0 +-4.4542236 27.741186 0.68322831 128.0 +-5.5702486 36.108139 0.8776778 128.0 +-4.7562661 32.138294 0.78442681 128.0 +-4.9313536 34.794918 0.84558821 128.0 +-4.7470136 35.040493 0.85061014 128.0 +-3.8367412 29.688122 0.72559208 128.0 +-4.3118968 35.057407 0.84971172 128.0 +-3.53473 30.269184 0.73803169 128.0 +-3.3807843 30.57847 0.74471217 128.0 +-0 0 0 128.0 +-2.9360707 29.912231 0.72837943 128.0 +-0 0 0 128.0 +-3.3865347 39.483475 0.94895208 128.0 +-0 0 0 128.0 +-1.9242084 26.202429 0.64121008 128.0 +-1.8394387 27.344889 0.66733325 128.0 +-2.2723711 37.193718 0.89444822 128.0 +-2.3018849 41.901642 1.0027879 128.0 +-1.3624274 27.920319 0.67993408 128.0 +-0 0 0 128.0 +-0.99139583 27.158659 0.66203487 128.0 +-0 0 0 128.0 +-0.95559865 39.475914 0.94570398 128.0 +-0 0 0 128.0 +-0.33740401 28.251446 0.686845 128.0 +-0.22185197 38.279156 0.91787612 128.0 +0.013368707 39.196556 0.93900043 128.0 +0 0 0 128.0 +0 0 0 128.0 +0.63754863 34.008957 0.81960326 128.0 +0 0 0 128.0 +0.87088495 28.076 0.68306702 128.0 +1.0438458 28.089111 0.6835047 128.0 +1.3326907 30.769939 0.74549544 128.0 +2.0549598 41.539124 0.99414933 128.0 +1.7154622 30.846096 0.74768388 128.0 +1.9027861 30.804056 0.74696976 128.0 +1.9582024 28.826859 0.70158821 128.0 +2.0652683 27.873133 0.67984194 128.0 +2.2612252 28.170853 0.6870293 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.0499642 30.861385 0.75040215 128.0 +2.1031315 20.028496 0.49985927 128.0 +2.2197931 19.959574 0.49856925 128.0 +2.3524866 20.032953 0.50059646 128.0 +2.4765897 20.028063 0.50082678 128.0 +2.5963411 19.988695 0.50027394 128.0 +2.7146235 19.940689 0.49953678 128.0 +2.8314276 19.885057 0.49863836 128.0 +4.9794087 33.490829 0.81600958 128.0 +5.2002764 33.559425 0.81833625 128.0 +4.6711516 28.969997 0.7119776 128.0 +4.9206977 29.369694 0.72199839 128.0 +4.9399805 28.414078 0.70036733 128.0 +5.2530761 29.153612 0.71840471 128.0 +0 0 0 128.0 +11.938848 61.889206 1.488186 128.0 +5.9248085 29.734377 0.734438 128.0 +2.9969018 14.576113 0.37871134 128.0 +3.0678225 14.470409 0.37666109 128.0 +0 0 0 128.0 +3.2958481 14.656981 0.38198251 128.0 +3.3762534 14.595575 0.38101497 128.0 +3.4745381 14.611543 0.38189036 128.0 +10.63012 43.505211 1.0677733 128.0 +0 0 0 128.0 +3.4976671 13.59243 0.35922262 128.0 +3.5263994 13.363855 0.35429284 128.0 +3.614337 13.364162 0.3548227 128.0 +8.3890495 30.274826 0.75970882 128.0 +8.5315361 30.070824 0.75606912 128.0 +9.7990313 33.747791 0.84556514 128.0 +0 0 0 128.0 +10.225797 33.669003 0.84662485 128.0 +0 0 0 128.0 +11.984549 37.785381 0.94922853 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.9245462 20.155308 0.53485143 128.0 +7.9956775 19.975439 0.53160334 128.0 +0 0 0 128.0 +8.1169033 19.578451 0.5241856 128.0 +8.3468504 19.788956 0.53070492 128.0 +0 0 0 128.0 +8.5626726 19.624563 0.52918452 128.0 +0 0 0 128.0 +24.895916 55.19495 1.4310329 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +37.932098 77.648117 2.0270975 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +32.320435 60.415848 1.6146322 128.0 +32.690052 60.215519 1.6146092 128.0 +33.07869 60.049706 1.6155537 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.498558 47.509277 1.3123959 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.804775 31.679937 0.89670575 128.0 +0 0 0 128.0 +20.504904 31.921532 0.91004378 128.0 +20.717295 31.821087 0.9107579 128.0 +20.734304 31.423845 0.90331715 128.0 +21.142906 31.619307 0.91227829 128.0 +21.327547 31.475739 0.9119097 128.0 +13.823077 20.13405 0.59856987 128.0 +14.01487 20.147335 0.60133421 128.0 +14.158962 20.09038 0.60216355 128.0 +14.215738 19.910372 0.59953737 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.76317 36.368107 1.1042398 128.0 +0 0 0 128.0 +0 0 0 128.0 +31.743048 38.651619 1.1882993 128.0 +31.971943 38.446896 1.188023 128.0 +35.994926 42.748112 1.3235224 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.422506 19.892063 0.67643261 128.0 +19.469696 19.697149 0.67399073 128.0 +19.73304 19.72006 0.67864406 128.0 +39.242149 38.736404 1.3063835 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.392761 15.75371 0.57654715 128.0 +17.419802 15.584704 0.57440478 128.0 +17.581776 15.53644 0.576455 128.0 +17.370964 15.161383 0.56710225 128.0 +17.391726 14.992503 0.56491381 128.0 +17.223047 14.663871 0.55703539 128.0 +18.214872 15.316457 0.5841952 128.0 +17.447077 14.489095 0.55839455 128.0 +17.837912 14.629639 0.56740171 128.0 +18.694157 15.140915 0.59013855 128.0 +18.044985 14.432741 0.56825405 128.0 +18.232059 14.399817 0.57115668 128.0 +17.861242 13.929877 0.55774951 128.0 +18.42799 14.190856 0.57175559 128.0 +18.505962 14.070861 0.57150221 128.0 +20.531652 15.413035 0.6273883 128.0 +18.806557 13.93854 0.57521105 128.0 +18.580282 13.595024 0.56631905 128.0 +18.752501 13.54515 0.56885302 128.0 +19.048536 13.581885 0.57488853 128.0 +20.30311 14.289229 0.60789955 128.0 +20.22208 14.047466 0.60317713 128.0 +20.371386 13.966648 0.6049509 128.0 +20.381348 13.79041 0.60285461 128.0 +20.703377 13.823855 0.60944301 128.0 +20.714342 13.648162 0.6074158 128.0 +20.782608 13.510996 0.60700113 128.0 +21.615767 13.864649 0.62754953 128.0 +21.65143 13.700752 0.62621343 128.0 +31.906252 19.916121 0.90248787 128.0 +32.059353 19.739367 0.90334022 128.0 +32.19696 19.55266 0.90380096 128.0 +20.297495 12.156982 0.58099318 128.0 +20.289928 11.983914 0.57880473 128.0 +20.306059 11.825989 0.57728434 128.0 +20.306278 11.659855 0.57537228 128.0 +20.259113 11.468066 0.57223934 128.0 +20.224335 11.285091 0.569475 128.0 +20.251148 11.137661 0.56836927 128.0 +20.276917 10.990328 0.56726354 128.0 +20.230209 10.804953 0.56429183 128.0 +20.248352 10.65548 0.56304789 128.0 +20.281399 10.514476 0.56221855 128.0 +20.337519 10.385741 0.56201124 128.0 +20.416939 10.268842 0.56242591 128.0 +0 0 0 128.0 +20.998802 10.240548 0.5741514 128.0 +21.201839 10.179002 0.57774502 128.0 +21.595633 10.205466 0.58619934 128.0 +23.08832 10.737975 0.62255067 128.0 +23.131954 10.586123 0.62199777 128.0 +23.184624 10.438653 0.62169832 128.0 +22.783867 10.090563 0.60999584 128.0 +24.004829 10.455534 0.63913679 128.0 +24.261526 10.390691 0.64397442 128.0 +24.714582 10.405711 0.65371877 128.0 +25.138239 10.402943 0.66270292 128.0 +25.656313 10.433394 0.67401379 128.0 +25.943592 10.365154 0.67956555 128.0 +26.629313 10.450072 0.69497681 128.0 +26.726515 10.299421 0.69580615 128.0 +62.645271 23.699089 1.5791564 128.0 +0 0 0 128.0 +0 0 0 128.0 +37.500999 13.403625 0.95346725 128.0 +0 0 0 128.0 +39.433537 13.550909 0.99661422 128.0 +42.515575 14.318857 1.0695472 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +48.336655 14.321196 1.1974678 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.164778 0.73249793 0.43169484 128.0 +17.225897 0.62923938 0.43300793 128.0 +17.211447 0.52298605 0.43259326 128.0 +17.417217 0.42227408 0.43726963 128.0 +17.413485 0.31528792 0.4371314 128.0 +17.35911 0.20776857 0.43584138 128.0 +17.35206 0.10120507 0.43565708 128.0 +17.339357 -0.0052622561 0.43535763 128.0 +17.349997 -0.11172601 0.43561101 128.0 +17.343985 -0.21811828 0.43549582 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.371264 -1.0725234 0.43685499 128.0 +17.376324 -1.1799048 0.4371314 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.473537 -1.6181632 0.4401722 128.0 +0 -0 0 128.0 +27.411886 -2.8788722 0.67092693 128.0 +27.435436 -3.0516577 0.67189443 128.0 +27.426125 -3.2211075 0.6721248 128.0 +27.40386 -3.3890848 0.67207873 128.0 +27.393454 -3.5585852 0.67233211 128.0 +25.389923 -3.4567764 0.62625951 128.0 +27.379395 -3.8989887 0.6730693 128.0 +27.379677 -4.0705886 0.6736452 128.0 +27.360111 -4.239429 0.67378342 128.0 +27.725416 -4.4704232 0.6829288 128.0 +19.308702 -3.2346392 0.48693591 128.0 +19.295385 -3.3542531 0.48709717 128.0 +19.173101 -3.45432 0.48472443 128.0 +19.151545 -3.5718989 0.48472443 128.0 +0 -0 0 128.0 +43.591114 -8.6864281 1.0600102 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +37.648212 -8.467659 0.92499435 128.0 +37.597496 -8.6989555 0.92504042 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +9.1141195 -2.4645281 0.25337079 128.0 +9.0419836 -2.504652 0.25201163 128.0 +7.9867773 -2.2650743 0.22710939 128.0 +7.9333658 -2.3026068 0.22616491 128.0 +7.9305882 -2.3546579 0.22644134 128.0 +7.9035554 -2.3994973 0.22614187 128.0 +7.8686333 -2.4417226 0.2256581 128.0 +7.8897147 -2.5014443 0.22653349 128.0 +7.9265265 -2.5667541 0.22780047 128.0 +7.9220181 -2.6191094 0.22807692 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +7.2442818 -2.543793 0.21273473 128.0 +7.2050076 -2.5797665 0.21215883 128.0 +11.220526 -4.0960741 0.31105369 128.0 +7.3133516 -2.7202897 0.21561427 128.0 +0 -0 0 128.0 +6.9996352 -2.7017872 0.20870338 128.0 +6.9810648 -2.7439537 0.20865731 128.0 +11.121155 -4.4509673 0.31183693 128.0 +7.2135043 -2.9380636 0.21529177 128.0 +7.1814885 -2.9765258 0.21494623 128.0 +0 -0 0 128.0 +19.632633 -8.4231739 0.52807873 128.0 +19.631893 -8.5658712 0.52936882 128.0 +4.6088166 -2.043715 0.15198798 128.0 +4.5907221 -2.0694892 0.15184978 128.0 +4.5997477 -2.1076181 0.15240264 128.0 +4.6329455 -2.1573353 0.15357749 128.0 +4.6078744 -2.180161 0.15327802 128.0 +4.6052217 -2.213593 0.15355445 128.0 +4.589756 -2.2409308 0.15350838 128.0 +4.5714417 -2.266829 0.15339321 128.0 +4.5458403 -2.2889886 0.15309374 128.0 +4.6892471 -2.3974252 0.15717116 128.0 +4.6815467 -2.4298387 0.15735546 128.0 +4.341094 -2.2869637 0.14887808 128.0 +4.3437285 -2.3225176 0.14931577 128.0 +4.4427357 -2.4106593 0.15228747 128.0 +4.3691912 -2.4055545 0.15074404 128.0 +4.3805294 -2.4469504 0.15143512 128.0 +4.4880567 -2.5433085 0.15468323 128.0 +3.3561454 -1.9288378 0.12501247 128.0 +3.3528826 -1.9544317 0.12524283 128.0 +3.3373857 -1.9729316 0.1251507 128.0 +3.3260744 -1.9938866 0.12517373 128.0 +3.3300061 -2.0241287 0.12561142 128.0 +4.3394961 -2.6747673 0.15327802 128.0 +3.4185078 -2.1358576 0.12869829 128.0 +3.0101445 -1.9063339 0.11791729 128.0 +3.4130685 -2.1911557 0.12927419 128.0 +3.3828034 -2.2011466 0.12881346 128.0 +2.974545 -1.9614178 0.11791729 128.0 +2.9499884 -1.9712964 0.11757175 128.0 +3.0222542 -2.0465636 0.11992145 128.0 +3.0121124 -2.066767 0.11999056 128.0 +2.9460304 -2.0480995 0.1184932 128.0 +2.9644599 -2.0880237 0.11936858 128.0 +3.024003 -2.1578796 0.12141881 128.0 +3.0333865 -2.1928003 0.12206382 128.0 +3.9222522 -2.872591 0.14784145 128.0 +3.190084 -2.3663068 0.12733914 128.0 +5.4625354 -4.1051927 0.19326906 128.0 +5.4531517 -4.1507459 0.19372979 128.0 +23.465782 -18.0947 0.71861207 128.0 +5.3143473 -4.1490469 0.19117275 128.0 +5.5883222 -4.4184871 0.19997261 128.0 +5.5720301 -4.4614429 0.20029514 128.0 +21.565794 -17.49 0.67562634 128.0 +3.4625978 -2.8423183 0.13904159 128.0 +3.457391 -2.8737388 0.13941017 128.0 +21.688335 -18.261343 0.6891256 128.0 +21.576639 -18.394726 0.6891486 128.0 +21.467905 -18.530689 0.68928683 128.0 +3.6839111 -3.2182546 0.14853254 128.0 +2.8495181 -2.5199788 0.12346904 128.0 +2.8176205 -2.5227396 0.12296224 128.0 +3.3367331 -3.0249159 0.13959445 128.0 +3.771714 -3.4618635 0.15378483 128.0 +2.8841999 -2.6796825 0.12653287 128.0 +4.4387641 -4.1759305 0.17624523 128.0 +2.8778796 -2.7403905 0.12738521 128.0 +2.8660476 -2.7628558 0.12754647 128.0 +3.4606071 -3.3775694 0.14724252 128.0 +4.3072166 -4.2561951 0.17534681 128.0 +4.2683001 -4.269814 0.17493215 128.0 +2.9884071 -3.0258889 0.13381234 128.0 +3.2503505 -3.3319201 0.14307293 128.0 +3.5322199 -3.665751 0.15311676 128.0 +3.6957147 -3.8829191 0.15933657 128.0 +2.7242899 -2.897244 0.12745433 128.0 +2.6738143 -2.8787351 0.12634858 128.0 +2.6425874 -2.8803496 0.12588786 128.0 +3.6523275 -4.0309863 0.16115645 128.0 +3.732173 -4.1703024 0.16477314 128.0 +2.7916825 -3.1577532 0.13293697 128.0 +2.7683101 -3.1703038 0.13279875 128.0 +3.1965704 -3.7067037 0.14860165 128.0 +3.4692817 -4.0733733 0.15910621 128.0 +3.4628806 -4.1167746 0.15977426 128.0 +3.1444061 -3.7849116 0.1492006 128.0 +3.1629629 -3.8551548 0.150721 128.0 +3.2160089 -3.9692736 0.15353142 128.0 +3.2115743 -4.013916 0.15426858 128.0 +3.1831675 -4.0288391 0.15413037 128.0 +1.6601778 -2.1270485 0.097990885 128.0 +1.6672229 -2.1633351 0.098751083 128.0 +1.6527075 -2.1719327 0.098705009 128.0 +1.6363487 -2.1780348 0.09858983 128.0 +1.6068822 -2.1663475 0.097967848 128.0 +1.6035947 -2.1898828 0.098359466 128.0 +1.5848596 -2.1923869 0.098152138 128.0 +1.5678953 -2.197186 0.098013923 128.0 +1.5549595 -2.2075825 0.09803696 128.0 +1.553932 -2.2351463 0.098543756 128.0 +1.5345353 -2.236393 0.098313391 128.0 +1.5219046 -2.2474227 0.098359466 128.0 +1.5125269 -2.2633703 0.098543756 128.0 +2.4583647 -3.7294135 0.13874212 128.0 +2.4207237 -3.721796 0.13812013 128.0 +2.4005401 -3.740787 0.13823532 128.0 +2.354022 -3.7182736 0.13722172 128.0 +2.2893443 -3.6656485 0.13540184 128.0 +2.1708925 -3.5238342 0.1311862 128.0 +1.9157243 -3.1525526 0.12081987 128.0 +1.5367907 -2.5638638 0.10469445 128.0 +1.908921 -3.2300563 0.12227115 128.0 +1.8815196 -3.2287493 0.12192561 128.0 +1.8641618 -3.2445683 0.12204079 128.0 +1.3424172 -2.3693759 0.098566793 128.0 +1.3298022 -2.3810606 0.098658934 128.0 +1.3108317 -2.3812912 0.098451607 128.0 +1.3004827 -2.3971999 0.098658934 128.0 +1.2890459 -2.4113076 0.098820195 128.0 +1.684819 -3.1995077 0.11913822 128.0 +1.6642352 -3.2080102 0.11909214 128.0 +1.2444433 -2.4346261 0.098820195 128.0 +1.6516924 -3.2817807 0.12047432 128.0 +1.6306373 -3.2900617 0.12042825 128.0 +7.7149563 -15.819281 0.4413701 128.0 +7.6225047 -15.876234 0.44162348 128.0 +1.1580712 -2.4481518 0.09822125 128.0 +1.3466375 -2.8930566 0.10934778 128.0 +1.3958337 -3.047627 0.11305663 128.0 +7.3688903 -16.365734 0.44938672 128.0 +7.2634759 -16.39967 0.4491103 128.0 +7.177083 -16.476927 0.44993961 128.0 +1.3611561 -3.1756232 0.11542937 128.0 +6.8785338 -16.33617 0.44424963 128.0 +6.7770209 -16.375298 0.44418052 128.0 +6.5796394 -16.178564 0.4382602 128.0 +6.5243797 -16.329111 0.4410015 128.0 +6.4317322 -16.38838 0.44148529 128.0 +6.3145189 -16.384623 0.4404256 128.0 +6.1912274 -16.363214 0.43895128 128.0 +6.0506907 -16.293116 0.4363021 128.0 +5.989275 -16.436081 0.43890521 128.0 +1.1927979 -3.3340762 0.11741049 128.0 +1.1703339 -3.3356714 0.11727227 128.0 +5.5535026 -16.15873 0.42952943 128.0 +5.4379773 -16.14418 0.42835459 128.0 +1.2067829 -3.6538084 0.12448264 128.0 +5.2698884 -16.303877 0.43063518 128.0 +5.183321 -16.378798 0.4316718 128.0 +5.1031294 -16.476189 0.43326131 128.0 +0.96544737 -3.1828773 0.11245769 128.0 +0.94845521 -3.1973681 0.11266501 128.0 +0.96052092 -3.3125994 0.11529115 128.0 +0.95405889 -3.367491 0.116466 128.0 +0.89796257 -3.2451203 0.11340217 128.0 +0.85121614 -3.1511497 0.11102943 128.0 +0.83390057 -3.164048 0.11121372 128.0 +4.4222288 -17.227716 0.44565484 128.0 +4.335115 -17.329206 0.44742864 128.0 +4.2145076 -17.297199 0.44604647 128.0 +0.80789292 -3.4024327 0.1163969 128.0 +0.79014605 -3.420964 0.1167194 128.0 +3.7090919 -16.540697 0.42641953 128.0 +3.6005116 -16.530909 0.42565933 128.0 +3.6327429 -17.185543 0.44056383 128.0 +0.6387229 -3.1112311 0.10900224 128.0 +1.6576272 -8.3436365 0.23183183 128.0 +1.6107395 -8.3762312 0.23236167 128.0 +3.0457129 -16.385881 0.41985419 128.0 +2.9763706 -16.57843 0.4239316 128.0 +2.8843126 -16.652531 0.42524469 128.0 +2.7944181 -16.743874 0.42697239 128.0 +2.6626306 -16.580065 0.42275676 128.0 +2.5375314 -16.44492 0.41923219 128.0 +2.5613945 -17.30377 0.43888217 128.0 +2.4533491 -17.306292 0.43858269 128.0 +2.3487236 -17.332909 0.43885913 128.0 +2.2478349 -17.389627 0.4398497 128.0 +2.1453621 -17.437822 0.44065598 128.0 +2.037282 -17.441721 0.44044864 128.0 +1.8139192 -16.401581 0.41605321 128.0 +1.7232045 -16.507858 0.41826469 128.0 +0.24072391 -2.4414713 0.092346989 128.0 +0.2258303 -2.443898 0.092370026 128.0 +0.21100138 -2.4472296 0.0924161 128.0 +0.19582291 -2.446485 0.092370026 128.0 +0.18051517 -2.4436524 0.092277877 128.0 +0.28420705 -4.2102594 0.13305214 128.0 +1.0398514 -17.009682 0.42849278 128.0 +0.13194226 -2.3816762 0.090780519 128.0 +0.11674187 -2.3704584 0.09050408 128.0 +0.10279061 -2.3851135 0.090826593 128.0 +0.089574546 -2.4246631 0.091725007 128.0 +0.083784223 -2.7249498 0.098635897 128.0 +0.068947457 -2.803369 0.10043273 128.0 +0.051690917 -2.8007407 0.10036363 128.0 +0.20951751 -17.50606 0.43922773 128.0 +0.017144727 -2.7711725 0.099672534 128.0 +0.00014859522 -2.750231 0.099188775 128.0 +-0.016589902 -2.7291863 0.098705009 128.0 +-0.033158615 -2.7150381 0.098382503 128.0 +-0.049685743 -2.7077866 0.09822125 128.0 +-0.066523626 -2.7164254 0.098428577 128.0 +-0.55387026 -17.869635 0.4477742 128.0 +-0.66592175 -17.930838 0.44927156 128.0 +-0.11469438 -2.6727912 0.097461052 128.0 +-0.13025193 -2.6550624 0.097069435 128.0 +-0.14565182 -2.6382422 0.096700847 128.0 +-0.16115861 -2.6263227 0.096447453 128.0 +-0.17686361 -2.6192999 0.09630923 128.0 +-1.2858365 -17.359785 0.4369241 128.0 +-0.20971341 -2.625901 0.096516557 128.0 +-1.5744915 -18.218197 0.45717299 128.0 +-1.6852318 -18.197243 0.45691961 128.0 +-1.7926267 -18.14378 0.45592904 128.0 +-1.9452884 -18.526167 0.46505141 128.0 +-1.9799854 -17.804449 0.44860348 128.0 +-2.2282481 -18.975508 0.47606277 128.0 +-2.3496702 -19.002157 0.47700727 128.0 +-2.4514055 -18.873373 0.47435808 128.0 +-2.601027 -19.106613 0.48014021 128.0 +-2.7316079 -19.18432 0.48232865 128.0 +-2.8580928 -19.22653 0.48371083 128.0 +-2.9847388 -19.264942 0.48502389 128.0 +-3.1049595 -19.259096 0.48532337 128.0 +-3.226212 -19.258417 0.48576105 128.0 +-3.3497999 -19.269777 0.48649821 128.0 +-3.4747121 -19.286247 0.48737359 128.0 +-3.4114625 -18.291615 0.46456766 128.0 +-3.6526031 -18.938831 0.4802554 128.0 +-3.7763615 -18.9543 0.48115379 128.0 +-3.9076979 -19.004215 0.48288152 128.0 +-4.0323215 -19.018021 0.48377994 128.0 +-3.7564659 -17.196789 0.44141617 128.0 +-3.864326 -17.184145 0.44166955 128.0 +-4.7141414 -20.377222 0.51775849 128.0 +-4.8451004 -20.373201 0.51835746 128.0 +-5.0238886 -20.563541 0.52358669 128.0 +-5.1506991 -20.535238 0.52365577 128.0 +-5.2883177 -20.548752 0.52473849 128.0 +-5.4359908 -20.59808 0.52669656 128.0 +-5.5233746 -20.420546 0.52326417 128.0 +-5.6528411 -20.401686 0.52363276 128.0 +-5.8404121 -20.586861 0.52890807 128.0 +-5.4990702 -18.940596 0.49027619 128.0 +-6.2890391 -21.174896 0.54480314 128.0 +-6.4775414 -21.329138 0.54945648 128.0 +-6.5955462 -21.247934 0.54846591 128.0 +-6.7602568 -21.315701 0.55109203 128.0 +-6.6607537 -20.563372 0.53388393 128.0 +-6.8426862 -20.691065 0.53798437 128.0 +-6.9624805 -20.627851 0.53747755 128.0 +-7.1914754 -20.88249 0.544734 128.0 +-7.3492956 -20.922861 0.54680729 128.0 +-7.6005974 -21.2209 0.55521554 128.0 +-8.1363354 -22.2848 0.5824675 128.0 +-8.2551365 -22.18667 0.58129263 128.0 +-8.4187603 -22.208515 0.58308947 128.0 +-8.7882452 -22.760773 0.59801698 128.0 +-8.9738359 -22.82365 0.60091954 128.0 +-9.3808641 -23.435476 0.61748266 128.0 +-9.5256166 -23.380253 0.6175518 128.0 +-9.9254551 -23.940105 0.63298613 128.0 +-10.086151 -23.911913 0.63381541 128.0 +-10.270528 -23.937773 0.63602692 128.0 +-10.743897 -24.622911 0.65484756 128.0 +-10.849771 -24.45509 0.65229052 128.0 +-10.983178 -24.351604 0.65136909 128.0 +-11.11864 -24.253765 0.6506089 128.0 +-11.267672 -24.185991 0.6506319 128.0 +-11.462917 -24.215796 0.65316594 128.0 +-0 -0 0 128.0 +-1.6634265 -3.4076285 0.12319261 128.0 +-1.6811937 -3.3910887 0.12303135 128.0 +-1.6938726 -3.3646386 0.1226167 128.0 +-1.7163068 -3.3577421 0.12270884 128.0 +-1.7516211 -3.3755391 0.123446 128.0 +-1.7750971 -3.3700342 0.12358423 128.0 +-1.7990431 -3.3652496 0.12374548 128.0 +-1.8497089 -3.4094994 0.12519677 128.0 +-17.703773 -32.139832 0.8813175 128.0 +-17.890404 -32.012272 0.88083375 128.0 +-18.613604 -32.831577 0.90545958 128.0 +-18.824175 -32.733215 0.90589726 128.0 +-19.691599 -33.760445 0.93639731 128.0 +-0 -0 0 128.0 +-20.576008 -34.30241 0.95752162 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-18.680666 -29.477987 0.83996731 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-30.252485 -44.061905 1.267383 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.305405 -8.4525442 0.34293595 128.0 +-10.353189 -8.3860064 0.34282076 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.476727 -8.670949 0.46484408 128.0 +-16.455063 -8.5310392 0.46290904 128.0 +-16.581892 -8.4681015 0.46484408 128.0 +-0 -0 0 128.0 +-7.0133934 -3.4745383 0.21616715 128.0 +-6.9977384 -3.4134748 0.21522266 128.0 +-7.0158472 -3.3691752 0.21515355 128.0 +-7.0255413 -3.3209381 0.21487711 128.0 +-7.0684485 -3.2883065 0.21545301 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-36.023994 -15.689958 0.94121188 128.0 +-0 -0 0 128.0 +-36.335449 -15.29791 0.94425273 128.0 +-36.256809 -15.003575 0.93996793 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-40.098396 -15.451829 1.0260086 128.0 +-0 -0 0 128.0 +-22.343803 -8.2972412 0.58502454 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-43.160305 -15.128184 1.0896579 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-28.313412 -8.3892097 0.71626234 128.0 +-0 -0 0 128.0 +-52.892445 -14.967333 1.3024442 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.802219 -3.3704076 0.34086269 128.0 +-12.80426 -3.2870698 0.34042498 128.0 +-12.854254 -3.2159617 0.34113911 128.0 +-34.33828 -8.3654261 0.85019547 128.0 +-34.423985 -8.1628761 0.85102475 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-40.530678 -8.5658998 0.99037141 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-46.386196 -8.3257046 1.1217475 128.0 +-18.549795 -3.2127941 0.4696126 128.0 +-18.592825 -3.1028624 0.47016549 128.0 +-52.451218 -8.4207001 1.2598962 128.0 +-29.780655 -4.5943418 0.73015326 128.0 +-29.863668 -4.4197187 0.73144329 128.0 +-27.533398 -3.9024515 0.67659384 128.0 +-24.216219 -3.2809894 0.5989154 128.0 +-24.114933 -3.1167121 0.59610498 128.0 +-27.753372 -3.41378 0.68014145 128.0 +-27.687407 -3.2333393 0.67813724 128.0 +-27.609343 -3.052629 0.67587972 128.0 +-27.655396 -2.8860681 0.6765247 128.0 +-25.857782 -2.5382607 0.63450652 128.0 +-27.622028 -2.540345 0.6749813 128.0 +-25.874035 -2.2196445 0.63420701 128.0 +-29.566559 -2.3535874 0.71925706 128.0 +-29.594402 -2.1731505 0.71957958 128.0 +-29.616158 -1.9921254 0.71978694 128.0 +-39.47686 -2.4117887 0.9471553 128.0 +-41.976509 -2.3059957 1.0045156 128.0 +-41.754211 -2.0368998 0.99907911 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-243.81808 1.5853306 5.6540952 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 -0 0 128.0 +-121.53112 -2.287369 1.3726013 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-74.574036 2.7161655 0.85656738 128.0 +-95.583656 4.0686855 1.0879976 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-59.896358 14.198633 0.71288013 128.0 +-59.752731 14.552397 0.71225339 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-50.012844 14.149378 0.60753363 128.0 +-0 0 0 128.0 +-80.117027 23.73168 0.95481086 128.0 +-79.874199 24.193834 0.95371133 128.0 +-0 0 0 128.0 +-46.985939 14.864061 0.57790118 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-41.244026 14.170177 0.5155465 128.0 +-41.127991 14.413057 0.51521665 128.0 +-41.066086 14.674901 0.51553553 128.0 +-73.036285 26.60556 0.89074093 128.0 +-0 0 0 128.0 +-51.784092 19.587044 0.64479691 128.0 +-0 0 0 128.0 +-63.385979 24.868639 0.78472376 128.0 +-61.931221 24.737455 0.7693193 128.0 +-0 0 0 128.0 +-35.068668 14.509316 0.45332381 128.0 +-35.009392 14.737022 0.45368668 128.0 +-0 0 0 128.0 +-35.188957 15.323624 0.45804083 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-30.885534 14.131563 0.40948534 128.0 +-30.811844 14.327131 0.4096503 128.0 +-0 0 0 128.0 +-63.207561 30.339127 0.80695635 128.0 +-31.184652 15.204737 0.41750097 128.0 +-39.899395 19.757601 0.52558529 128.0 +-27.182873 13.66903 0.37057281 128.0 +-0 0 0 128.0 +-26.974024 13.981331 0.37008899 128.0 +-0 0 0 128.0 +-28.768305 15.362098 0.39461964 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-27.224066 15.188004 0.37879732 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-33.804535 19.683559 0.46614441 128.0 +-33.674511 19.885525 0.46603444 128.0 +-0 0 0 128.0 +-46.984688 28.528654 0.64043176 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-44.152622 28.315012 0.61276746 128.0 +-0 0 0 128.0 +-43.245693 28.488348 0.60544455 128.0 +-42.933685 28.662111 0.60364127 128.0 +-42.582256 28.806787 0.60132128 128.0 +-20.82119 14.27273 0.31358388 128.0 +-20.715975 14.388239 0.31335297 128.0 +-20.608492 14.501844 0.3131001 128.0 +-20.469454 14.592615 0.31242937 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-45.351215 33.606117 0.65668285 128.0 +-44.862652 33.672466 0.65281248 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-58.407139 45.542934 0.85042101 128.0 +-57.795422 45.638947 0.84578097 128.0 +-56.967636 45.555565 0.83808422 128.0 +-56.263519 45.561298 0.83209175 128.0 +-37.102253 30.423813 0.56360722 128.0 +-40.06525 33.266647 0.60863316 128.0 +-54.235123 45.596966 0.81513691 128.0 +-53.58884 45.617771 0.80985916 128.0 +-52.929211 45.61932 0.80436146 128.0 +-52.109608 45.473148 0.79649979 128.0 +-51.776402 45.745022 0.79571909 128.0 +-21.987999 19.668488 0.36040211 128.0 +-21.742384 19.690269 0.35855487 128.0 +-33.600468 30.806213 0.53726232 128.0 +-0 0 0 128.0 +-35.9795 33.809334 0.57890177 128.0 +-33.700783 32.059734 0.54747701 128.0 +-47.154987 45.412998 0.75588292 128.0 +-46.760178 45.589096 0.75411272 128.0 +-46.320862 45.718513 0.7516607 128.0 +-14.52954 14.518057 0.26186174 128.0 +-14.440888 14.607646 0.26187274 128.0 +-0 0 0 128.0 +-43.829098 45.435997 0.73018682 128.0 +-43.506714 45.659191 0.72950512 128.0 +-43.036579 45.724316 0.72647035 128.0 +-27.995453 30.112122 0.48811314 128.0 +-0 0 0 128.0 +-41.290768 45.519993 0.71179157 128.0 +-41.020695 45.783665 0.7119565 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-38.911564 45.635242 0.69546348 128.0 +-0 0 0 128.0 +-25.247221 30.356766 0.47016871 128.0 +-25.096657 30.555151 0.47079545 128.0 +-16.017351 19.747133 0.31559604 128.0 +-15.73147 19.63979 0.31270427 128.0 +-26.411491 33.39056 0.50414437 128.0 +-36.5481 46.792698 0.68888825 128.0 +-36.594948 47.449982 0.69491369 128.0 +-36.341274 47.723751 0.69560641 128.0 +-23.020603 30.619116 0.45723817 128.0 +-0 0 0 128.0 +-36.52354 49.84042 0.71545303 128.0 +-36.473747 50.418438 0.72026902 128.0 +-36.533291 51.158829 0.72726202 128.0 +-36.460091 51.724476 0.7318691 128.0 +-36.464691 52.41098 0.73808146 128.0 +-21.622375 31.488667 0.45602867 128.0 +-0 0 0 128.0 +-20.575058 30.765846 0.44298819 128.0 +-22.091082 33.475384 0.4770298 128.0 +-20.298544 31.173552 0.44505531 128.0 +-20.265789 31.544849 0.44828796 128.0 +-19.592209 30.91186 0.43843612 128.0 +-19.722893 31.544443 0.4450883 128.0 +-0 0 0 128.0 +-22.29388 36.649284 0.50770682 128.0 +-22.146263 36.914864 0.50936711 128.0 +-8.5911598 14.522028 0.22154179 128.0 +-8.5074348 14.58397 0.22166274 128.0 +-0 0 0 128.0 +-20.945118 36.938393 0.50293487 128.0 +-20.937132 37.458118 0.50787175 128.0 +-20.417389 37.06039 0.50127459 128.0 +-19.873266 36.602352 0.49398464 128.0 +-17.953365 33.555756 0.45447832 128.0 +-19.969591 37.88105 0.50688219 128.0 +-10.134372 19.513994 0.277794 128.0 +-10.008069 19.563347 0.27764007 128.0 +-9.9206896 19.689575 0.27844274 128.0 +-9.8143568 19.779636 0.27880558 128.0 +-9.7200222 19.895187 0.27948731 128.0 +-15.004944 31.19586 0.41665432 128.0 +-17.618586 37.212376 0.48873985 128.0 +-14.630284 31.397585 0.41689622 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-39.634052 90.812889 1.1255467 128.0 +-0 0 0 128.0 +-38.315693 90.816109 1.1198621 128.0 +-37.743561 91.015327 1.1194553 128.0 +-0 0 0 128.0 +-13.665918 34.132656 0.44029433 128.0 +-13.444882 34.187019 0.43995348 128.0 +-11.922794 30.871662 0.39990839 128.0 +-12.068175 31.827793 0.410299 128.0 +-11.48376 30.856335 0.39803919 128.0 +-11.197136 30.660406 0.3949275 128.0 +-10.483346 29.261913 0.37779674 128.0 +-11.796575 33.574757 0.42731982 128.0 +-9.9658375 28.930777 0.372475 128.0 +-9.7762985 28.956327 0.37206817 128.0 +-9.5918465 28.995832 0.37183726 128.0 +-9.4226894 29.081728 0.37215614 128.0 +-9.2743082 29.234308 0.37325567 128.0 +-9.1226292 29.38043 0.37428921 128.0 +-0 0 0 128.0 +-8.7967129 29.609024 0.37565264 128.0 +-9.9402065 34.225582 0.42790258 128.0 +-9.7417545 34.327297 0.42837536 128.0 +-9.040554 32.617241 0.4081879 128.0 +-9.3738365 34.644058 0.4306514 128.0 +-8.5497618 32.385406 0.40431753 128.0 +-0 0 0 128.0 +-3.618005 14.420146 0.19948511 128.0 +-3.5292192 14.441103 0.19947411 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-0 0 0 128.0 +-8.8383989 40.441963 0.4912028 128.0 +-8.5801258 40.448483 0.49067503 128.0 +-4.0515456 19.695375 0.25711176 128.0 +-3.9380496 19.75713 0.25752959 128.0 +-3.8214846 19.805466 0.25780445 128.0 +-6.3232107 33.885998 0.41504902 128.0 +-6.1084299 33.886761 0.41463119 128.0 +-4.7980313 27.586153 0.34389809 128.0 +-4.6075158 27.488844 0.34249067 128.0 +-4.4780974 27.760429 0.34520653 128.0 +-4.9780707 32.111462 0.3933222 128.0 +-4.7756481 32.105793 0.39292637 128.0 +-5.1426601 36.093262 0.43689677 128.0 +-4.9289279 36.181602 0.43753451 128.0 +-4.5924935 35.331619 0.42778161 128.0 +-4.3672652 35.291653 0.42703393 128.0 +-3.5615349 30.305592 0.3715404 128.0 +-3.3855834 30.417311 0.37254098 128.0 +-3.1781862 30.240608 0.37036389 128.0 +-3.9496455 39.935734 0.4772827 128.0 +-3.7119153 40.038872 0.47816232 128.0 +-3.4534996 39.914452 0.47654602 128.0 +-3.2293475 40.194038 0.47940481 128.0 +-1.9654515 26.500605 0.3282077 128.0 +-1.8599424 27.352173 0.33746579 128.0 +-1.6883121 27.302191 0.33679506 128.0 +-1.5308774 27.493744 0.33879623 128.0 +-0 0 0 128.0 +-1.1825775 27.261709 0.33605838 128.0 +-1.0218683 27.445318 0.33800456 128.0 +-1.2251269 39.40057 0.46946502 128.0 +-1.0522946 42.169319 0.49984518 128.0 +-0.74512362 39.603592 0.47156513 128.0 +-0.49954411 39.405449 0.46934405 128.0 +-0.25954214 39.681747 0.47235677 128.0 +-0.017295182 42.675411 0.50526589 128.0 +0 0 0 128.0 +0.40487328 34.110531 0.41111267 128.0 +0.61396605 34.096409 0.41099173 128.0 +0 0 0 128.0 +1.7331256 57.234299 0.66564411 128.0 +0 0 0 128.0 +1.1919328 27.99494 0.34411797 128.0 +2.0214903 41.491268 0.49278614 128.0 +1.5515983 28.273743 0.34737259 128.0 +1.7606211 28.846569 0.35379389 128.0 +1.8776656 27.943289 0.34396404 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +2.2032709 19.939425 0.25659499 128.0 +2.3331089 19.990088 0.25730968 128.0 +4.920568 40.028255 0.47947076 128.0 +5.0924387 39.427082 0.47314844 128.0 +5.3365436 39.411938 0.47333536 128.0 +0 0 0 128.0 +4.9622545 33.545914 0.40889162 128.0 +5.1686044 33.518787 0.40893558 128.0 +4.701283 29.293346 0.36223832 128.0 +4.9320927 29.570694 0.36565787 128.0 +5.1240158 29.600962 0.36633959 128.0 +5.2566333 29.296335 0.36329389 128.0 +5.52176 29.723629 0.3684397 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +3.0600665 14.482341 0.19877042 128.0 +3.1699274 14.56002 0.19985895 128.0 +3.2642362 14.562738 0.20011185 128.0 +3.3528559 14.539512 0.20007886 128.0 +3.4445426 14.529368 0.20019981 128.0 +7.5881186 31.156326 0.38861617 128.0 +9.5280294 38.103409 0.46789268 128.0 +3.4912164 13.605353 0.19045793 128.0 +3.5161083 13.36126 0.18792899 128.0 +3.6084404 13.378053 0.18836881 128.0 +0 0 0 128.0 +9.7910862 34.607441 0.43148705 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +10.721687 33.891354 0.42688 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +7.722497 20.043465 0.27219737 128.0 +7.845336 19.995703 0.27219737 128.0 +7.9649124 19.939758 0.27210942 128.0 +8.085227 19.88588 0.27205443 128.0 +8.1176395 19.619684 0.26948154 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +25.001104 55.540684 0.70575511 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +44.835667 87.817581 1.120225 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.833994 31.779224 0.44792512 128.0 +29.560266 46.722862 0.64396125 128.0 +20.449732 31.887804 0.45255414 128.0 +20.550188 31.615845 0.45064095 128.0 +20.935219 31.779751 0.45446736 128.0 +21.092068 31.594145 0.45371965 128.0 +21.261436 31.428516 0.45324686 128.0 +13.799527 20.130854 0.30438077 128.0 +0 0 0 128.0 +14.073145 19.99925 0.30490854 128.0 +35.1385 49.290676 0.7016319 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +28.817959 36.493732 0.54732311 128.0 +29.075062 36.358391 0.54791683 128.0 +35.440617 43.765381 0.65525347 128.0 +35.667278 43.496838 0.65453875 128.0 +31.94887 38.478138 0.58594978 128.0 +36.007896 42.829315 0.65128416 128.0 +0 0 0 128.0 +37.33765 43.320404 0.66487443 128.0 +0 0 0 128.0 +0 0 0 128.0 +37.163403 41.546623 0.64895314 128.0 +36.974628 40.828629 0.64169621 128.0 +37.229858 40.606884 0.64178419 128.0 +37.608925 40.518398 0.64389527 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +19.576649 19.834253 0.34244668 128.0 +19.702221 19.718004 0.34251267 128.0 +39.232964 38.786022 0.64264178 128.0 +36.691608 35.831081 0.59993583 128.0 +36.878387 35.574032 0.59944105 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +38.790546 35.622765 0.61512041 128.0 +0 0 0 128.0 +17.272182 15.474992 0.29101044 128.0 +17.313644 15.32167 0.29022977 128.0 +17.340324 15.156577 0.28925118 128.0 +17.300541 14.93554 0.28732699 128.0 +17.365988 14.807046 0.28695315 128.0 +17.491699 14.729841 0.28745893 128.0 +17.39109 14.463664 0.28473207 128.0 +17.997219 14.781915 0.29209897 128.0 +17.507475 14.200656 0.28388545 128.0 +17.445217 13.973562 0.28178534 128.0 +17.572193 13.899136 0.28236809 128.0 +19.382963 15.139044 0.30644789 128.0 +18.653595 14.385947 0.29503474 128.0 +20.085176 15.294424 0.31360587 128.0 +19.441746 14.616855 0.30346817 128.0 +19.847414 14.73211 0.30780032 128.0 +18.970377 13.901372 0.29461691 128.0 +20.088278 14.531986 0.30863598 128.0 +20.295059 14.492715 0.31023031 128.0 +20.513554 14.459516 0.31197858 128.0 +20.638004 14.358502 0.31246236 128.0 +20.593004 14.140468 0.3106921 128.0 +20.446781 13.856213 0.30760241 128.0 +21.041765 14.071803 0.31435356 128.0 +20.789705 13.719367 0.30990043 128.0 +22.298843 14.519678 0.32860354 128.0 +22.39677 14.388527 0.32872447 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +32.082245 19.515676 0.44892567 128.0 +20.36153 12.215246 0.29710186 128.0 +20.48171 12.117066 0.29768461 128.0 +24.729992 14.426349 0.35082516 128.0 +21.370832 12.291576 0.30709663 128.0 +21.586763 12.240119 0.30887789 128.0 +21.725178 12.14305 0.30968055 128.0 +21.794022 12.006623 0.30961457 128.0 +21.781164 11.825912 0.30853701 128.0 +28.185488 15.080035 0.38750565 128.0 +23.102867 12.178865 0.32318282 128.0 +23.1745 12.035497 0.32314983 128.0 +0 0 0 128.0 +20.326273 10.241507 0.28628242 128.0 +21.312227 10.57484 0.29761863 128.0 +0 0 0 128.0 +20.370768 9.7980146 0.28456715 128.0 +21.599966 10.226545 0.29879513 128.0 +21.694937 10.109022 0.29919097 128.0 +22.607325 10.365822 0.30948263 128.0 +22.275831 10.048862 0.30472162 128.0 +22.601213 10.029208 0.3078993 128.0 +22.927181 10.005936 0.31107694 128.0 +23.436567 10.057511 0.31644267 128.0 +23.840559 10.058115 0.32053295 128.0 +24.199245 10.034983 0.32407346 128.0 +24.663174 10.050466 0.32885644 128.0 +25.123545 10.058768 0.33358443 128.0 +25.46582 10.014949 0.33690503 128.0 +26.039824 10.056648 0.34295246 128.0 +26.415194 10.015803 0.3466469 128.0 +26.674826 9.9274769 0.34897792 128.0 +0 0 0 128.0 +34.063728 12.203708 0.43388405 128.0 +34.125702 11.990157 0.43374109 128.0 +35.566647 12.251803 0.44965139 128.0 +35.648731 12.035898 0.44973934 128.0 +35.708622 11.812539 0.44958541 128.0 +35.733818 11.57811 0.44904664 128.0 +35.771782 11.348351 0.4486728 128.0 +35.80827 11.118565 0.44829896 128.0 +35.73613 10.856203 0.44669363 128.0 +34.270344 10.181635 0.42912304 128.0 +35.713982 10.372503 0.44494537 128.0 +36.116524 10.249541 0.44882673 128.0 +0 0 0 128.0 +37.780083 10.222405 0.46637532 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +55.232815 13.499333 0.66122395 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +56.55093 11.272648 0.67007524 128.0 +56.605289 10.922793 0.66992128 128.0 +54.980534 10.259754 0.65100926 128.0 +0 0 0 128.0 +57.421333 9.9876671 0.67689234 128.0 +130.49535 21.87435 1.4909552 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.278984 0.64320016 0.22613785 128.0 +17.230633 0.53554964 0.22556609 128.0 +0 0 0 128.0 +17.355879 0.32632136 0.22688553 128.0 +0 0 0 128.0 +0 0 0 128.0 +0 0 0 128.0 +17.324663 -0.099516995 0.22651169 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +17.348886 -0.41909015 0.22683056 128.0 +17.317003 -0.52465552 0.22651169 128.0 +17.349432 -0.63221085 0.22690752 128.0 +0 -0 0 128.0 +17.33737 -0.84492153 0.22687453 128.0 +17.337851 -0.95161438 0.22694051 128.0 +17.345659 -1.0588322 0.22709444 128.0 +17.3538 -1.1662486 0.22725937 128.0 +17.393188 -1.2761455 0.22777615 128.0 +17.43786 -1.387045 0.22835891 128.0 +17.436993 -1.4946986 0.22844687 128.0 +17.475288 -1.6060535 0.22897464 128.0 +0 -0 0 128.0 +27.41963 -2.8594861 0.33914807 128.0 +27.430391 -3.0308604 0.33946696 128.0 +27.409292 -3.1988811 0.33944497 128.0 +27.393118 -3.3674891 0.33948892 128.0 +27.403673 -3.5396054 0.3398408 128.0 +25.365952 -3.4347994 0.31747624 128.0 +27.399757 -3.8815141 0.34030259 128.0 +27.379381 -4.050148 0.34034657 128.0 +27.364885 -4.2197447 0.34046751 128.0 +27.676138 -4.4417591 0.34422794 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +19.286777 -3.4607582 0.25147113 128.0 +19.334982 -3.5920005 0.2522518 128.0 +0 -0 0 128.0 +43.56049 -8.6463528 0.52434283 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +0 -0 0 128.0 +37.596889 -8.4266987 0.45967913 128.0 +37.547398 -8.6579046 0.45971212 128.0 +10.880705 -2.5796394 0.15896724 128.0 +10.975428 -2.6733267 0.16022071 128.0 +0 -0 0 128.0 +64.156784 -16.461508 0.76432735 128.0 +0 -0 0 128.0 +60.046654 -16.19486 0.71987319 128.0 +9.041564 -2.4985125 0.13915361 128.0 +8.0388708 -2.2746601 0.12787238 128.0 +7.9383183 -2.2989135 0.12688279 128.0 +7.9585786 -2.3578026 0.12727863 128.0 +7.9334345 -2.4034026 0.12715769 128.0 +7.8516736 -2.4313343 0.12638801 128.0 +7.8966699 -2.4984658 0.12708071 128.0 +7.9173484 -2.5585544 0.12749854 128.0 +7.9451818 -2.6214967 0.12800433 128.0 +46.81715 -15.764372 0.57920963 128.0 +46.569176 -15.999681 0.57746136 128.0 +46.097378 -16.154499 0.57311821 128.0 +7.2098994 -2.5767913 0.12019762 128.0 +11.256542 -4.1008735 0.16774152 128.0 +7.328661 -2.7211034 0.12196787 128.0 +42.457542 -16.059404 0.53515124 128.0 +7.0297208 -2.7087381 0.11884519 128.0 +11.022191 -4.324759 0.16620217 128.0 +11.014019 -4.3997269 0.16642208 128.0 +7.1806064 -2.9197724 0.12124218 128.0 +7.1911993 -2.9756274 0.12158304 128.0 +37.538315 -15.801529 0.48385793 128.0 +4.6437483 -1.9887637 0.091554731 128.0 +4.6213732 -2.0128284 0.091433778 128.0 +4.6052785 -2.0395274 0.091389798 128.0 +4.5607638 -2.053381 0.09100496 128.0 +4.5598993 -2.086735 0.0911479 128.0 +4.6784835 -2.1758065 0.092742227 128.0 +4.7220039 -2.2313831 0.093434937 128.0 +4.6352038 -2.2252665 0.09254431 128.0 +4.5585465 -2.2229905 0.091774635 128.0 +4.537652 -2.2473695 0.091686673 128.0 +4.5157366 -2.2711267 0.091587715 128.0 +4.7501893 -2.4256496 0.094655417 128.0 +4.6997051 -2.4363449 0.094215602 128.0 +4.6218371 -2.4320796 0.093434937 128.0 +4.3104539 -2.3021359 0.0897405 128.0 +4.3261385 -2.344739 0.09011434 128.0 +4.3633666 -2.3996651 0.090763062 128.0 +4.5965619 -2.5647461 0.093885742 128.0 +4.5981431 -2.602752 0.094105653 128.0 +4.423389 -2.5398123 0.092093505 128.0 +3.3500273 -1.9510506 0.078635193 128.0 +3.3422978 -1.9741114 0.078690164 128.0 +3.3404167 -2.000747 0.078822114 128.0 +4.2135692 -2.5588589 0.090213299 128.0 +3.379477 -2.0809038 0.079646759 128.0 +3.4981301 -2.1836607 0.081351042 128.0 +3.4669199 -2.1938567 0.081120141 128.0 +3.4769619 -2.2302022 0.081428006 128.0 +3.47998 -2.2623932 0.081647918 128.0 +3.4952593 -2.3029563 0.082032755 128.0 +3.5467629 -2.3682196 0.082901388 128.0 +2.9855351 -2.0201497 0.075644456 128.0 +3.0176213 -2.06896 0.0762382 128.0 +2.9884439 -2.0760286 0.076018296 128.0 +2.9584761 -2.0822423 0.075787395 128.0 +2.9887981 -2.1311193 0.07637015 128.0 +4.0149198 -2.8999348 0.090466186 128.0 +4.0043139 -2.9298286 0.090565145 128.0 +3.9910822 -2.9579155 0.09063112 128.0 +5.4555717 -4.0952101 0.1110165 128.0 +5.4335251 -4.1310282 0.11106049 128.0 +5.3692522 -4.1343989 0.11052171 128.0 +5.3769021 -4.1930909 0.11098352 128.0 +5.5880718 -4.4131517 0.11430412 128.0 +5.5476122 -4.4367399 0.11411719 128.0 +20.090954 -16.269661 0.32028005 128.0 +20.003119 -16.402775 0.32045597 128.0 +19.885941 -16.511787 0.32022509 128.0 +3.4615922 -2.9107387 0.08573819 128.0 +3.4398599 -2.928683 0.085683212 128.0 +4.5852432 -3.9524651 0.10257208 128.0 +3.622905 -3.1619942 0.088882856 128.0 +3.5809541 -3.1643023 0.088552997 128.0 +2.8445027 -2.5448971 0.077975467 128.0 +3.3461809 -3.0308082 0.085650228 128.0 +3.7712266 -3.4580822 0.092269428 128.0 +3.8891866 -3.6104057 0.094358541 128.0 +2.8700931 -2.6974766 0.079316899 128.0 +2.8795693 -2.7398474 0.079712734 128.0 +3.4785144 -3.3505192 0.089113764 128.0 +3.4621863 -3.375988 0.089179732 128.0 +3.0336137 -2.994683 0.082879394 128.0 +2.9819357 -2.9800222 0.082362615 128.0 +2.9628916 -2.9975519 0.082351618 128.0 +2.9472377 -3.018537 0.082395598 128.0 +2.977951 -3.0876608 0.08317627 128.0 +2.9623983 -3.1094947 0.083231248 128.0 +3.7704735 -4.0064735 0.096502639 128.0 +3.7308402 -4.013422 0.096260741 128.0 +2.9249516 -3.1855905 0.083561108 128.0 +3.8653886 -4.2618351 0.099273466 128.0 +3.8211496 -4.2653646 0.09897659 128.0 +3.2448761 -3.6672127 0.089850448 128.0 +3.2381074 -3.7051227 0.09011434 128.0 +3.4871464 -4.0397887 0.094688408 128.0 +3.1742299 -3.7232754 0.089806467 128.0 +3.470803 -4.1220498 0.095260166 128.0 +3.4965975 -4.204772 0.096139789 128.0 +13.404035 -16.319687 0.26822805 128.0 +3.4422157 -4.2442575 0.096095808 128.0 +3.2066848 -4.0038543 0.092412367 128.0 +3.1746132 -4.0140438 0.092280425 128.0 +3.5395486 -4.532279 0.099240482 128.0 +1.6594976 -2.1523654 0.065891579 128.0 +3.3255491 -4.3677382 0.096370697 128.0 +3.3467596 -4.4520001 0.09725032 128.0 +1.6225785 -2.1865613 0.065946557 128.0 +1.6097225 -2.1972826 0.065957546 128.0 +1.5962099 -2.2071183 0.065957546 128.0 +1.5785694 -2.2111747 0.065880582 128.0 +1.5609394 -2.2150979 0.06580361 128.0 +1.5284725 -2.197547 0.065440767 128.0 +1.5160919 -2.2085328 0.065462761 128.0 +1.505878 -2.2227604 0.065528728 128.0 +1.4994375 -2.242764 0.065671667 128.0 +1.4768356 -2.2385688 0.065495744 128.0 +1.5007213 -2.3054066 0.066254422 128.0 +1.5346508 -2.3894455 0.067233011 128.0 +1.5263842 -2.408952 0.067364953 128.0 +1.526418 -2.4420121 0.067672826 128.0 +1.9145368 -3.1049662 0.076117255 128.0 +1.9146771 -3.1482639 0.076524079 128.0 +1.8973814 -3.1633828 0.076568067 128.0 +1.5912807 -2.6904452 0.070377678 128.0 +1.4951316 -2.5636921 0.068640411 128.0 +1.4295173 -2.4861391 0.067540877 128.0 +1.4827945 -2.6157699 0.069069237 128.0 +1.4330527 -2.5645931 0.068310551 128.0 +1.3087231 -2.3762789 0.065836601 128.0 +1.297935 -2.3912945 0.065924563 128.0 +1.3002203 -2.4309537 0.066320397 128.0 +1.4340342 -2.7210574 0.069827914 128.0 +7.8548656 -15.124939 0.22341099 128.0 +1.681532 -3.2877076 0.076612048 128.0 +7.6695676 -15.221977 0.22343299 128.0 +1.6326153 -3.2910762 0.076403134 128.0 +1.6246818 -3.3261881 0.076711006 128.0 +1.1530298 -2.3980339 0.065264843 128.0 +1.1382941 -2.4050636 0.065264843 128.0 +1.1260495 -2.4174409 0.065330811 128.0 +1.1349517 -2.4761143 0.065957546 128.0 +1.3639878 -3.024451 0.072488785 128.0 +1.3733906 -3.0958285 0.07324747 128.0 +1.1663785 -2.6734619 0.06807965 128.0 +1.1353616 -2.6465693 0.067672826 128.0 +1.1225995 -2.6617775 0.067771785 128.0 +1.1269302 -2.7184935 0.068365529 128.0 +1.3536314 -3.3226256 0.075457536 128.0 +6.3445745 -15.847083 0.22370787 128.0 +6.2139153 -15.801034 0.2227073 128.0 +6.0566816 -15.683088 0.22087108 128.0 +5.955729 -15.707802 0.22072813 128.0 +5.8536549 -15.729055 0.22055221 128.0 +5.7529168 -15.753406 0.22042026 128.0 +1.1921777 -3.3287339 0.074885778 128.0 +1.1700732 -3.3312693 0.0748308 128.0 +5.5355778 -16.070293 0.22290522 128.0 +1.2167511 -3.6049635 0.077843525 128.0 +1.1892697 -3.5962226 0.077656604 128.0 +5.119247 -15.800378 0.21863902 128.0 +5.055161 -15.935382 0.21983752 128.0 +1.0084133 -3.2488892 0.073412396 128.0 +0.97014767 -3.1947396 0.072719693 128.0 +0.96220315 -3.2399316 0.073170498 128.0 +0.97633111 -3.362926 0.07451193 128.0 +0.95758921 -3.375587 0.074588902 128.0 +0.88824749 -3.2060225 0.072587743 128.0 +0.85994011 -3.1795599 0.0722249 128.0 +4.2112598 -15.952499 0.21742953 128.0 +4.1152921 -15.985786 0.2175175 128.0 +3.9969282 -15.930237 0.21660487 128.0 +0.83388144 -3.4134026 0.07464388 128.0 +0.80690384 -3.3931625 0.074358001 128.0 +3.7005475 -15.990393 0.21648392 128.0 +3.586998 -15.944509 0.21571425 128.0 +3.4884562 -15.963287 0.21568127 128.0 +3.3786139 -15.928636 0.21505453 128.0 +1.7125515 -8.3261852 0.12947769 128.0 +1.6686636 -8.3728209 0.12988453 128.0 +1.617447 -8.3838835 0.12989552 128.0 +2.9852207 -15.99889 0.21496657 128.0 +2.9299283 -16.255053 0.21762745 128.0 +2.8296199 -16.269768 0.21759446 128.0 +0.46843502 -2.7968678 0.06718903 128.0 +0.45142421 -2.8006766 0.06720002 128.0 +0.43392467 -2.8014176 0.067178033 128.0 +0.41069493 -2.7634761 0.066727221 128.0 +0.39232025 -2.7560446 0.066617273 128.0 +0.37270242 -2.7385843 0.066397361 128.0 +0.35344264 -2.7219791 0.066188447 128.0 +0.33317262 -2.695318 0.065869585 128.0 +1.8929759 -16.109177 0.21436182 128.0 +1.7978575 -16.154276 0.21473567 128.0 +1.7064379 -16.238594 0.21554932 128.0 +0.23877667 -2.4180887 0.062724918 128.0 +0.2246736 -2.4274735 0.06281288 128.0 +0.21460214 -2.4845946 0.063428618 128.0 +0.19646965 -2.4499824 0.063032784 128.0 +0.17817831 -2.4072649 0.062548988 128.0 +0.16245431 -2.3943462 0.062395055 128.0 +0.14726597 -2.3873136 0.06230709 128.0 +0.13228129 -2.3821819 0.062241118 128.0 +0.11781044 -2.3859448 0.062274106 128.0 +0.10295159 -2.3816278 0.062219128 128.0 +0.090048343 -2.42818 0.062724918 128.0 +0.085592933 -2.7645042 0.066419356 128.0 +0.068928093 -2.7769728 0.066551298 128.0 +0.30674854 -16.316126 0.21545036 128.0 +0.20993975 -16.578665 0.21832015 128.0 +0.10885292 -16.677633 0.21939769 128.0 +0.0065362477 -16.719984 0.2198595 128.0 +-0.016092926 -2.743783 0.066177458 128.0 +-0.032868877 -2.7386332 0.06612248 128.0 +-0.30415764 -16.880236 0.22165175 128.0 +-0.40743759 -16.866056 0.2215198 128.0 +-0.081547849 -2.6805937 0.065495744 128.0 +-0.096538499 -2.6400719 0.065055929 128.0 +-0.11316107 -2.6494203 0.065165885 128.0 +-0.12805326 -2.6207108 0.064858012 128.0 +-0.14648668 -2.6628087 0.065330811 128.0 +-0.15996015 -2.6149497 0.064814031 128.0 +-0.17492975 -2.5979559 0.064638108 128.0 +-1.2731464 -17.352301 0.22732535 128.0 +-1.3719848 -17.24847 0.2262698 128.0 +-1.4752322 -17.209839 0.22593993 128.0 +-1.6072428 -17.488234 0.22911759 128.0 +-1.7104192 -17.436245 0.22865579 128.0 +-1.8184109 -17.435368 0.22876574 128.0 +-1.9273344 -17.441772 0.22896366 128.0 +-2.0325804 -17.414721 0.22879872 128.0 +-2.1368351 -17.381079 0.22856782 128.0 +-2.2611179 -17.504496 0.23008518 128.0 +-2.3604312 -17.430838 0.22942546 128.0 +-2.4980528 -17.632849 0.23183344 128.0 +-2.6146851 -17.674561 0.23247117 128.0 +-2.7116566 -17.584064 0.23164652 128.0 +-2.8820827 -17.957083 0.23598969 128.0 +-2.9754326 -17.838455 0.23486815 128.0 +-3.0635135 -17.696703 0.23349373 128.0 +-3.1632116 -17.628361 0.23294397 128.0 +-3.3009021 -17.767885 0.23472522 128.0 +-3.4260857 -17.831747 0.23567082 128.0 +-3.5453629 -17.860411 0.23623158 128.0 +-3.6591001 -17.858892 0.23646249 128.0 +-3.8696845 -18.314514 0.24183922 128.0 +-3.9811366 -18.286518 0.24179523 128.0 +-4.0705223 -18.160269 0.24065171 128.0 +-4.233099 -18.357107 0.24315865 128.0 +-4.2909946 -18.100193 0.24055275 128.0 +-4.609715 -18.926538 0.25020668 128.0 +-4.4909577 -17.958866 0.23956317 128.0 +-5.0700073 -19.758657 0.26031139 128.0 +-5.2148128 -19.81711 0.26133397 128.0 +-4.3997297 -16.312037 0.22178368 128.0 +-4.9268761 -17.830713 0.23942024 128.0 +-5.7003732 -20.147858 0.26624888 128.0 +-5.8205538 -20.100975 0.26611695 128.0 +-5.9474735 -20.077347 0.26625988 128.0 +-6.080699 -20.073971 0.26664472 128.0 +-6.2212048 -20.09264 0.26729345 128.0 +-6.3063731 -19.933964 0.26590803 128.0 +-6.5017366 -20.121351 0.26852494 128.0 +-6.6410537 -20.129509 0.26908571 128.0 +-6.7784805 -20.130077 0.26956949 128.0 +-6.9444308 -20.211992 0.27100989 128.0 +-7.1314812 -20.349243 0.27311 128.0 +-7.2794247 -20.370073 0.27386868 128.0 +-7.4621162 -20.483809 0.27572688 128.0 +-7.8281364 -21.085398 0.28332469 128.0 +-7.9280052 -20.959341 0.28241205 128.0 +-8.1017551 -21.027868 0.28379747 128.0 +-8.3274069 -21.22444 0.28671125 128.0 +-8.4860401 -21.244448 0.2875579 128.0 +-8.8324032 -21.72368 0.29386923 128.0 +-9.2923775 -22.459082 0.30327025 128.0 +-9.4773378 -22.51408 0.30461168 128.0 +-9.8368931 -22.973024 0.31080207 128.0 +-10.012799 -22.992912 0.31176966 128.0 +-10.186889 -23.006016 0.31267127 128.0 +-10.29092 -22.861013 0.31168169 128.0 +-10.440151 -22.817444 0.31192359 128.0 +-11.005353 -23.667831 0.3230179 128.0 +-11.108081 -23.510351 0.32192937 128.0 +-1.6458892 -3.4281306 0.07782153 128.0 +-1.6559373 -3.3954971 0.077546649 128.0 +-1.6723033 -3.3763115 0.077436693 128.0 +-1.6925393 -3.3650935 0.077425703 128.0 +-1.7067896 -3.3421767 0.077271767 128.0 +-1.7396886 -3.3556111 0.077568643 128.0 +-1.7644358 -3.3528378 0.077667601 128.0 +-1.7887431 -3.349005 0.077755563 128.0 +-4.5566921 -8.4080629 0.14116576 128.0 +-15.774196 -28.687149 0.39599407 128.0 +-15.984021 -28.650948 0.39676374 128.0 +-16.96871 -29.982134 0.41482911 128.0 +-17.320127 -30.169697 0.41853452 128.0 +-17.416367 -29.910769 0.41659933 128.0 +-17.519234 -29.667299 0.41486207 128.0 +-17.55864 -29.321609 0.41181636 128.0 +-18.709215 -30.812502 0.43238866 128.0 +-19.65016 -31.919058 0.448167 128.0 +-19.863113 -31.82588 0.44852984 128.0 +-0 -0 0 128.0 +-20.681843 -32.249748 0.45728216 128.0 +-20.859171 -32.091217 0.45687532 128.0 +-21.08099 -32.001038 0.4573811 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-27.891108 -39.124226 0.56434393 128.0 +-0 -0 0 128.0 +-28.390377 -38.808067 0.5647397 128.0 +-0 -0 0 128.0 +-29.53195 -39.346062 0.57696658 128.0 +-25.528334 -33.580692 0.49984518 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-31.350031 -39.700287 0.59225011 128.0 +-31.518097 -39.413464 0.59093064 128.0 +-31.079721 -38.380058 0.57905567 128.0 +-31.29244 -38.161572 0.57867086 128.0 +-32.044685 -38.593536 0.5875991 128.0 +-0 -0 0 128.0 +-32.467262 -38.140285 0.58677441 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-37.967926 -38.943142 0.63406545 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-38.651287 -38.210964 0.63364762 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-10.308075 -8.4662609 0.18268421 128.0 +-10.362935 -8.4053717 0.1827282 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-137.87766 -95.928505 1.8829616 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-16.529774 -8.7136784 0.24147636 128.0 +-16.438284 -8.5369663 0.23968412 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-6.9975982 -3.4718182 0.1219019 128.0 +-6.989121 -3.4143307 0.12153906 128.0 +-6.999126 -3.3661807 0.12140711 128.0 +-7.0196486 -3.3231714 0.12140711 128.0 +-7.0652852 -3.291863 0.12171498 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-36.030697 -15.724849 0.46828851 128.0 +-36.056667 -15.473502 0.46745285 128.0 +-0 -0 0 128.0 +-36.306648 -15.055913 0.46820053 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-39.914101 -15.415154 0.50649732 128.0 +-0 -0 0 128.0 +-22.330256 -8.310504 0.29800346 128.0 +-0 -0 0 128.0 +-43.069599 -15.430271 0.53907657 128.0 +-0 -0 0 128.0 +-46.093845 -15.878278 0.57208461 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-49.572826 -15.059782 0.60570842 128.0 +-28.370607 -8.4287672 0.36144665 128.0 +-52.617386 -15.281996 0.63849658 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-12.781356 -3.3740363 0.18136477 128.0 +-12.791165 -3.2928054 0.18124382 128.0 +-12.885809 -3.2329977 0.18209046 128.0 +-34.310001 -8.3854799 0.42438406 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-40.251869 -8.5384169 0.48846498 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-18.644392 -3.3606589 0.24432416 128.0 +-18.599642 -3.2348862 0.24359846 128.0 +-18.664505 -3.1283042 0.24410425 128.0 +-27.216496 -4.3903461 0.33914807 128.0 +-27.248852 -4.2241855 0.33921406 128.0 +-27.096228 -4.0304265 0.33723488 128.0 +-27.208551 -3.8766456 0.33821347 128.0 +-24.171286 -3.2926607 0.30424884 128.0 +-24.140463 -3.1377125 0.30368808 128.0 +-27.47278 -3.3996086 0.34040156 128.0 +-27.37693 -3.2173181 0.33911508 128.0 +-26.906212 -2.9947364 0.3336944 128.0 +-26.874357 -2.8243604 0.33314461 128.0 +-25.850323 -2.556458 0.32164347 128.0 +-27.496429 -2.5490091 0.33965388 128.0 +-25.877756 -2.2388699 0.32162148 128.0 +-28.400764 -2.2817135 0.34930778 128.0 +-28.348415 -2.1025243 0.34858209 128.0 +-39.609116 -2.693589 0.47255468 128.0 +-39.573997 -2.4473531 0.47199392 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-41.790157 -1.8130132 0.49596381 128.0 +-0 -0 0 128.0 +-0 -0 0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-63.69471 13.90506 -0.088954993 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-58.071224 13.80186 -0.078384236 128.0 +-58.000015 14.161477 -0.078413032 128.0 +-103.11124 25.848337 -0.16787472 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-79.59021 22.041191 -0.12234329 128.0 +-49.870895 14.140506 -0.063309491 128.0 +-80.311562 23.305803 -0.12433803 128.0 +-79.42218 23.577017 -0.1228463 128.0 +-95.351631 28.943829 -0.15509996 128.0 +-0 0 -0 128.0 +-46.979084 14.891832 -0.058406163 128.0 +-75.000839 24.282578 -0.11513998 128.0 +-74.76783 24.715012 -0.11497295 128.0 +-74.478333 25.127277 -0.11469649 128.0 +-74.266968 25.56459 -0.11458322 128.0 +-41.074894 14.420976 -0.047366962 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-67.428421 25.077675 -0.10190637 128.0 +-0 0 -0 128.0 +-65.715294 25.362761 -0.099024661 128.0 +-63.890629 25.109999 -0.095584273 128.0 +-33.914139 13.569011 -0.033918336 128.0 +-33.838577 13.780243 -0.033935618 128.0 +-35.016224 14.510988 -0.036560066 128.0 +-60.718445 25.60078 -0.090298899 128.0 +-32.716221 14.030639 -0.032132868 128.0 +-0 0 -0 128.0 +-58.759697 26.058912 -0.087196402 128.0 +-30.920891 13.939944 -0.0289075 128.0 +-30.848412 14.135657 -0.028936299 128.0 +-54.657639 25.453695 -0.079545751 128.0 +-29.134178 13.785151 -0.025668694 128.0 +-29.082394 13.979687 -0.025739729 128.0 +-31.132008 15.200878 -0.03030324 128.0 +-39.88942 19.781271 -0.049271464 128.0 +-27.177671 13.685473 -0.022209104 128.0 +-27.09853 13.854707 -0.022220625 128.0 +-27.022772 14.025787 -0.022241743 128.0 +-29.039143 15.299369 -0.026805252 128.0 +-28.906803 15.456985 -0.026722698 128.0 +-55.108612 29.905033 -0.08416494 128.0 +-27.421133 15.098113 -0.023887064 128.0 +-27.325357 15.264619 -0.023881303 128.0 +-0 0 -0 128.0 +-58.06604 33.380104 -0.092376187 128.0 +-33.784008 19.697445 -0.03886966 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-46.635838 28.354017 -0.068573751 128.0 +-46.205608 28.482208 -0.067997791 128.0 +-45.33036 28.327961 -0.066413902 128.0 +-44.713043 28.325144 -0.065407895 128.0 +-44.240528 28.407686 -0.064728267 128.0 +-43.62957 28.394951 -0.063729942 128.0 +-43.024624 28.378553 -0.062741213 128.0 +-42.595291 28.47196 -0.062153734 128.0 +-42.423927 28.735588 -0.062163331 128.0 +-42.412529 29.109098 -0.062549226 128.0 +-42.245438 29.377354 -0.062578022 128.0 +-20.568188 14.490368 -0.012093358 128.0 +-27.725225 19.7887 -0.02918588 128.0 +-42.596207 30.799803 -0.064707145 128.0 +-42.490318 31.122044 -0.064906813 128.0 +-42.394127 31.453079 -0.065135278 128.0 +-42.430569 31.885635 -0.0656882 128.0 +-59.851288 45.554832 -0.10819392 128.0 +-59.152473 45.598854 -0.10718023 128.0 +-58.533421 45.696945 -0.10635661 128.0 +-57.57653 45.52124 -0.10470361 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-37.057423 30.422913 -0.055839311 128.0 +-40.087452 33.324444 -0.06387201 128.0 +-54.158623 45.587109 -0.099698536 128.0 +-53.537685 45.628609 -0.098840356 128.0 +-52.80019 45.562302 -0.097682677 128.0 +-52.115238 45.532097 -0.096651718 128.0 +-51.850605 45.864929 -0.096692033 128.0 +-34.237518 30.661085 -0.052026466 128.0 +-21.785242 19.751211 -0.020245086 128.0 +-49.656101 45.580132 -0.093195967 128.0 +-36.138134 33.582241 -0.058502156 128.0 +-38.141876 35.883007 -0.064328939 128.0 +-0 0 -0 128.0 +-38.89724 37.504059 -0.067525506 128.0 +-46.560085 45.447346 -0.088703491 128.0 +-46.125286 45.578949 -0.088284962 128.0 +-14.508456 14.512506 -0.0031871223 128.0 +-14.419136 14.601254 -0.0031871223 128.0 +-44.450409 45.571224 -0.086008005 128.0 +-43.862583 45.524086 -0.085157506 128.0 +-43.333557 45.530865 -0.084464438 128.0 +-28.818958 30.654184 -0.044565886 128.0 +-31.160261 33.554935 -0.05170393 128.0 +-41.729729 45.493923 -0.082310356 128.0 +-41.318871 45.604607 -0.081935979 128.0 +-40.774864 45.562927 -0.081177637 128.0 +-40.219685 45.501312 -0.080380894 128.0 +-39.91935 45.723888 -0.080321379 128.0 +-39.315449 45.593845 -0.079372965 128.0 +-38.800243 45.55862 -0.078677975 128.0 +-38.322361 45.56089 -0.078088582 128.0 +-37.855503 45.57056 -0.077527978 128.0 +-37.490185 45.69838 -0.077270716 128.0 +-37.107101 45.801678 -0.076959699 128.0 +-15.748447 19.683119 -0.01218551 128.0 +-23.967539 30.336422 -0.038015321 128.0 +-23.926722 30.669779 -0.038470328 128.0 +-36.537579 47.43293 -0.078739412 128.0 +-36.481934 47.966652 -0.079488158 128.0 +-36.361061 48.421497 -0.080044918 128.0 +-0 0 -0 128.0 +-36.491146 49.857426 -0.082408264 128.0 +-36.548809 50.584568 -0.083602421 128.0 +-36.472321 51.136791 -0.084378041 128.0 +-36.457779 51.785641 -0.085378289 128.0 +-36.448616 52.453461 -0.08641886 128.0 +-36.413956 53.09589 -0.087396063 128.0 +-0 0 -0 128.0 +-20.472097 30.649588 -0.034551892 128.0 +-22.053944 33.46072 -0.040728085 128.0 +-20.180574 31.03096 -0.034855228 128.0 +-20.110212 31.341892 -0.035283357 128.0 +-19.808952 31.293169 -0.034893628 128.0 +-19.736267 31.605824 -0.035327516 128.0 +-22.105862 35.889099 -0.044713717 128.0 +-21.879524 36.01466 -0.044692598 128.0 +-8.7522354 14.606459 0.0035189523 128.0 +-8.5922518 14.541073 0.0037838931 128.0 +-8.5073986 14.601296 0.0037666142 128.0 +-19.102451 33.256031 -0.037420165 128.0 +-21.136986 37.326721 -0.046144012 128.0 +-20.878313 37.40332 -0.046028819 128.0 +-20.569851 37.387909 -0.045715883 128.0 +-20.3167 37.470345 -0.045621809 128.0 +-17.895218 33.492943 -0.036694456 128.0 +-19.838583 37.684982 -0.045552693 128.0 +-19.624472 37.839737 -0.045625649 128.0 +-19.393742 37.962997 -0.045633327 128.0 +-9.9016285 19.678185 -0.0060822726 128.0 +-9.7780352 19.733192 -0.0060707536 128.0 +-15.152164 31.057861 -0.03013429 128.0 +-14.958714 31.14484 -0.030122772 128.0 +-14.774597 31.251408 -0.030155409 128.0 +-17.367006 37.32645 -0.042828411 128.0 +-41.484543 90.615135 -0.155123 128.0 +-0 0 -0 128.0 +-15.254027 34.427902 -0.03608394 128.0 +-39.566326 90.805077 -0.15395381 128.0 +-0 0 -0 128.0 +-38.339565 91.023888 -0.1534124 128.0 +-37.709187 91.085571 -0.15305531 128.0 +-37.108513 91.214272 -0.15284605 128.0 +-14.032166 35.10532 -0.03637192 128.0 +-13.415257 34.168697 -0.034263913 128.0 +-13.618299 35.321526 -0.036467914 128.0 +-13.076361 34.54586 -0.034705479 128.0 +-12.847081 34.579514 -0.034611408 128.0 +-11.511686 31.576988 -0.028316183 128.0 +-11.148018 31.172457 -0.027348572 128.0 +-11.007499 31.385595 -0.027644232 128.0 +-10.921354 31.762726 -0.028273946 128.0 +-10.448452 31.004686 -0.026603667 128.0 +-11.971889 36.259613 -0.037099548 128.0 +-11.257843 34.812851 -0.034033529 128.0 +-9.9559689 31.444397 -0.02711243 128.0 +-0 0 -0 128.0 +-10.713197 35.337639 -0.034682442 128.0 +-10.487926 35.374905 -0.034626767 128.0 +-0 0 -0 128.0 +-9.8318167 34.719658 -0.033067837 128.0 +-10.139648 36.663612 -0.036821168 128.0 +-9.4646912 35.058784 -0.033507489 128.0 +-9.2435389 35.093956 -0.033463329 128.0 +-0 0 -0 128.0 +-3.6177094 14.449944 0.0076120957 128.0 +-3.5308728 14.479643 0.0075967372 128.0 +-9.027318 38.040424 -0.03885046 128.0 +-8.8031816 38.136024 -0.038931094 128.0 +-8.6025105 38.338612 -0.039224833 128.0 +-8.8125324 40.4347 -0.04324118 128.0 +-8.194499 38.739689 -0.039810389 128.0 +-8.7323637 42.571503 -0.047222976 128.0 +-3.9279275 19.761328 -0.0024710142 128.0 +-3.8150997 19.829247 -0.0025574078 128.0 +-6.3711452 34.250362 -0.030673772 128.0 +-0 0 -0 128.0 +-6.2387881 35.990154 -0.033916418 128.0 +-4.6442461 27.802679 -0.017906696 128.0 +-5.6651316 35.245506 -0.032324854 128.0 +-4.9526505 32.066685 -0.026083384 128.0 +-4.7588773 32.117245 -0.026123701 128.0 +-5.9326444 41.809059 -0.044861544 128.0 +-0 0 -0 128.0 +-3.9091363 30.207006 -0.022266701 128.0 +-3.7306824 30.286997 -0.022376133 128.0 +-3.5454714 30.315277 -0.022387652 128.0 +-3.352792 30.276827 -0.02227246 128.0 +-4.1873007 40.061646 -0.041121654 128.0 +-0 0 -0 128.0 +-3.6985774 40.144867 -0.041188851 128.0 +-3.4564636 40.216621 -0.041284844 128.0 +-0 0 -0 128.0 +-3.6960762 50.225052 -0.060475774 128.0 +-2.5120621 37.253288 -0.035473425 128.0 +-2.2826993 37.256023 -0.035450388 128.0 +-1.5122617 27.433256 -0.016537836 128.0 +-2.5361254 51.807823 -0.063372843 128.0 +-0 0 -0 128.0 +-1.5498794 42.273476 -0.045003615 128.0 +-0 0 -0 128.0 +-0.9609375 39.41217 -0.039478254 128.0 +-0.71881771 39.402328 -0.039449457 128.0 +-0.47741041 39.436996 -0.039508972 128.0 +-0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0.42259097 33.985268 -0.02904189 128.0 +0.63260096 34.062019 -0.02919548 128.0 +0 0 -0 128.0 +1.7663835 57.2286 -0.073713213 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +2.0377593 41.337685 -0.043248862 128.0 +1.7058239 30.769651 -0.022954011 128.0 +1.7640526 28.640629 -0.018880066 128.0 +1.8961951 27.986742 -0.017643675 128.0 +2.07548 28.077299 -0.017841421 128.0 +0 0 -0 128.0 +6.4901714 75.207298 -0.1087142 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +2.2141359 19.940371 -0.002307826 128.0 +2.3306203 19.876749 -0.0022118329 128.0 +4.8416252 39.201027 -0.039622243 128.0 +5.1003413 39.311401 -0.039894864 128.0 +5.3475204 39.323956 -0.039981257 128.0 +5.5347605 38.911221 -0.039245952 128.0 +4.9813414 33.544044 -0.028895982 128.0 +5.1939549 33.557316 -0.028982375 128.0 +4.7684846 29.606348 -0.021362446 128.0 +4.9512119 29.583435 -0.021375885 128.0 +8.3469305 48.055347 -0.057430875 128.0 +8.6409264 47.99929 -0.057423197 128.0 +5.3356781 28.633001 -0.019707527 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +3.0855935 14.566712 0.0076236152 128.0 +3.1625435 14.490841 0.0077349669 128.0 +3.2603891 14.511165 0.0076562525 128.0 +10.015924 43.323151 -0.049158193 128.0 +10.284105 43.27158 -0.049179312 128.0 +0 0 -0 128.0 +9.5396414 38.057476 -0.039115399 128.0 +3.4568577 13.443601 0.0095607545 128.0 +3.5176013 13.339948 0.0097239427 128.0 +3.6179171 13.386652 0.0095876325 128.0 +9.5379248 34.443691 -0.032405488 128.0 +0 0 -0 128.0 +9.9384232 34.250103 -0.032257657 128.0 +10.119077 34.089737 -0.032059912 128.0 +13.645247 44.954594 -0.053984724 128.0 +10.575172 34.087154 -0.032309495 128.0 +11.974465 37.776455 -0.039871827 128.0 +12.198947 37.680389 -0.039827671 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +7.9582639 19.892036 -0.0049226764 128.0 +8.0752659 19.830791 -0.0048977183 128.0 +8.1925812 19.770708 -0.0048766001 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +25.060951 55.586693 -0.080853179 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +37.950043 77.719231 -0.12983844 128.0 +0 0 -0 128.0 +38.46328 76.378654 -0.12797041 128.0 +38.85973 76.001427 -0.12766899 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +33.466679 62.58466 -0.10004411 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +37.897297 67.836815 -0.11297245 128.0 +41.104572 72.528877 -0.12384271 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +19.849514 31.763821 -0.035699967 128.0 +20.168732 31.838255 -0.036147296 128.0 +20.316698 31.640697 -0.035980269 128.0 +20.63265 31.703178 -0.036410317 128.0 +20.853769 31.616884 -0.036504392 128.0 +21.024033 31.453417 -0.036423754 128.0 +40.008133 59.065388 -0.10075254 128.0 +13.780765 20.079929 -0.010545949 128.0 +13.923125 20.022907 -0.010611225 128.0 +14.038234 19.926474 -0.010586266 128.0 +35.171116 49.275406 -0.080018036 128.0 +0 0 -0 128.0 +34.63327 47.283909 -0.076314628 128.0 +34.910831 47.054451 -0.076276228 128.0 +34.121109 45.405201 -0.072832003 128.0 +33.740707 44.33004 -0.070745111 128.0 +0 0 -0 128.0 +33.80032 43.295471 -0.069241859 128.0 +33.915249 42.89743 -0.068777256 128.0 +34.037823 42.513664 -0.068347208 128.0 +34.204201 42.188274 -0.068061143 128.0 +34.17878 41.632126 -0.06720297 128.0 +31.965347 38.45261 -0.059790384 128.0 +34.392796 40.859943 -0.06632559 128.0 +34.585129 40.58041 -0.066154726 128.0 +34.715225 40.230404 -0.065807231 128.0 +0 0 -0 128.0 +35.147331 39.734703 -0.065636359 128.0 +35.261719 39.374523 -0.065265827 128.0 +35.633633 39.30188 -0.065640204 128.0 +35.665833 38.855598 -0.065048881 128.0 +35.974373 38.712208 -0.065248549 128.0 +31.467413 33.448528 -0.05195735 128.0 +36.45155 38.2729 -0.06526199 128.0 +34.08556 35.351906 -0.05807019 128.0 +36.943619 37.848465 -0.065331101 128.0 +19.603533 19.839458 -0.017336497 128.0 +37.495117 37.482044 -0.065574922 128.0 +37.771358 37.297646 -0.065701634 128.0 +36.790405 35.885864 -0.062458992 128.0 +38.656136 37.245541 -0.066847794 128.0 +38.942619 37.063492 -0.067003302 128.0 +39.017025 36.680691 -0.066602051 128.0 +39.757973 36.920319 -0.067955554 128.0 +40.142944 36.821678 -0.068370245 128.0 +40.49485 36.689484 -0.06869854 128.0 +17.552824 15.709215 -0.0090139005 128.0 +17.152121 15.162134 -0.0077410326 128.0 +17.692299 15.447253 -0.0088814301 128.0 +17.159676 14.797702 -0.007291785 128.0 +17.311817 14.744651 -0.007447294 128.0 +17.480022 14.703806 -0.0076431194 128.0 +17.566069 14.593079 -0.0076335203 128.0 +17.429523 14.299822 -0.0070729209 128.0 +18.230234 14.770474 -0.008835353 128.0 +18.322863 14.660212 -0.0088411132 128.0 +18.36853 14.512794 -0.0087336004 128.0 +18.34054 14.308783 -0.0084494613 128.0 +18.363029 14.145939 -0.0082920324 128.0 +18.422419 14.012418 -0.0082267569 128.0 +18.516846 13.905721 -0.0082478756 128.0 +18.73196 13.88832 -0.0085588936 128.0 +18.829737 13.782571 -0.0085896114 128.0 +19.484592 14.079062 -0.0099411933 128.0 +19.911741 14.202537 -0.010745615 128.0 +21.252039 14.962559 -0.013688762 128.0 +20.85811 14.494641 -0.012554124 128.0 +20.405653 13.995373 -0.011294696 128.0 +20.565678 13.920347 -0.011467483 128.0 +20.829493 13.913309 -0.011880253 128.0 +21.320267 14.052682 -0.012813305 128.0 +21.414474 13.927051 -0.012832504 128.0 +20.865755 13.388767 -0.011386849 128.0 +20.848656 13.19791 -0.011162225 128.0 +0 0 -0 128.0 +20.378115 12.552475 -0.0097396076 128.0 +0 0 -0 128.0 +20.48687 12.275249 -0.0096416948 128.0 +0 0 -0 128.0 +20.816553 12.128123 -0.010042946 128.0 +21.259113 12.211841 -0.010858887 128.0 +21.425013 12.132903 -0.011060473 128.0 +21.428328 11.961736 -0.010904963 128.0 +21.424217 11.787612 -0.010736016 128.0 +21.453945 11.633056 -0.010643862 128.0 +21.395264 11.431928 -0.010361643 128.0 +20.30315 10.688836 -0.0078408653 128.0 +20.329292 10.543801 -0.0077563915 128.0 +21.102472 10.780972 -0.0092846006 128.0 +20.322262 10.225671 -0.0074664922 128.0 +21.251104 10.530079 -0.0093229981 128.0 +21.262289 10.373618 -0.009209726 128.0 +20.433123 9.814373 -0.0073090638 128.0 +21.504614 10.167048 -0.009457388 128.0 +21.700781 10.097336 -0.009741528 128.0 +23.095285 10.574215 -0.012556043 128.0 +22.277124 10.034784 -0.010697618 128.0 +22.557707 9.99512 -0.011158385 128.0 +23.123743 10.076613 -0.012216228 128.0 +23.416773 10.03378 -0.012700033 128.0 +23.831789 10.038963 -0.01343726 128.0 +24.258823 10.044015 -0.014197525 128.0 +24.653458 10.030634 -0.014888675 128.0 +25.048828 10.012782 -0.015579825 128.0 +25.478405 10.003608 -0.01634009 128.0 +25.886406 9.9808989 -0.017054278 128.0 +26.348383 9.973732 -0.017877899 128.0 +26.843103 9.9731064 -0.018766794 128.0 +37.393585 13.631952 -0.040202044 128.0 +0 0 -0 128.0 +35.279125 12.372876 -0.035565577 128.0 +35.402607 12.172756 -0.035663489 128.0 +35.463364 11.95083 -0.035636611 128.0 +35.428722 11.697581 -0.035419669 128.0 +35.346642 11.430441 -0.03511057 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +34.15575 10.354928 -0.032311413 128.0 +34.151531 10.125262 -0.032177024 128.0 +34.372456 9.9617243 -0.032495718 128.0 +36.089794 10.21976 -0.03580172 128.0 +36.386032 10.062889 -0.036268245 128.0 +37.234894 10.052093 -0.037834853 128.0 +38.293839 10.086259 -0.039816149 128.0 +38.947773 10.003329 -0.040991105 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +59.381443 13.706731 -0.080791742 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +54.514877 11.181882 -0.070629917 128.0 +54.575596 10.84581 -0.070616484 128.0 +54.639153 10.510359 -0.070612639 128.0 +54.694748 10.173438 -0.070597284 128.0 +0 0 -0 128.0 +57.433441 9.9552145 -0.075698353 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.20414 0.73718035 0.003150339 128.0 +17.192348 0.6310181 0.0031810568 128.0 +17.187901 0.52527213 0.0031964155 128.0 +17.364748 0.42403525 0.0028623599 128.0 +17.366024 0.31746095 0.0028642796 128.0 +17.317648 0.21029532 0.0029602726 128.0 +17.312613 0.10399663 0.0029717919 128.0 +17.312925 -0.0022335283 0.0029717919 128.0 +17.310585 -0.10845093 0.0029756315 128.0 +17.307594 -0.21463971 0.0029794713 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.343088 -1.0677462 0.0028508406 128.0 +17.33621 -1.1741413 0.0028508406 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.46946 -1.6147131 0.002528304 128.0 +0 -0 -0 128.0 +27.431543 -2.8760998 -0.016743261 128.0 +27.422325 -3.0453563 -0.016760539 128.0 +27.417027 -3.2151904 -0.016787417 128.0 +27.40373 -3.3842158 -0.016800856 128.0 +27.392366 -3.5535851 -0.016820055 128.0 +25.365507 -3.4489448 -0.012936177 128.0 +27.387287 -3.8952389 -0.01689877 128.0 +27.370783 -4.0643864 -0.016914129 128.0 +27.364107 -4.2351604 -0.016950605 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +19.311617 -3.4758072 -0.0014611671 128.0 +19.286978 -3.5936859 -0.0014554076 128.0 +0 -0 -0 128.0 +43.583519 -8.6770086 -0.049106356 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +37.646927 -8.4604702 -0.037869412 128.0 +37.58456 -8.6890554 -0.037850212 128.0 +0 -0 -0 128.0 +11.165174 -2.7251568 0.014145383 128.0 +11.084223 -2.7775645 0.014272094 128.0 +11.203526 -2.8806493 0.014001394 128.0 +10.917802 -2.8786883 0.014533195 128.0 +10.947235 -2.9584126 0.014439122 128.0 +9.0669651 -2.5098743 0.018148294 128.0 +9.0302286 -2.559459 0.018190529 128.0 +7.9156866 -2.2959776 0.02038685 128.0 +7.9244571 -2.3513343 0.020340774 128.0 +7.9213629 -2.4033995 0.020317735 128.0 +7.8625331 -2.4383271 0.020406049 128.0 +7.8855538 -2.4986126 0.020329256 128.0 +7.9994607 -2.5888433 0.020068154 128.0 +7.9388003 -2.6231265 0.020158388 128.0 +25.549292 -8.6189356 -0.015556786 128.0 +0 -0 -0 128.0 +41.091877 -14.426938 -0.047401521 128.0 +10.882875 -3.8951273 0.014018672 128.0 +7.2458758 -2.64325 0.021402458 128.0 +11.236345 -4.1779342 0.013195052 128.0 +7.2624545 -2.7507493 0.021300705 128.0 +7.0616541 -2.724324 0.021678917 128.0 +11.070054 -4.3496656 0.013375519 128.0 +7.1502438 -2.8598139 0.021425495 128.0 +7.197391 -2.9300363 0.021291105 128.0 +34.093346 -14.128507 -0.034642126 128.0 +0 -0 -0 128.0 +9.0951881 -3.8996356 0.0172114 128.0 +19.585396 -8.5415144 -0.0048113246 128.0 +5.6497474 -2.5044129 0.024345605 128.0 +5.6643577 -2.5525956 0.024282249 128.0 +4.7222314 -2.1627805 0.026238587 128.0 +4.7460389 -2.2090242 0.026159873 128.0 +4.642909 -2.1957583 0.026349939 128.0 +4.7041535 -2.2601666 0.02619059 128.0 +4.5706849 -2.230629 0.026445933 128.0 +4.7835689 -2.3710394 0.025960207 128.0 +4.7992969 -2.4156389 0.025894932 128.0 +29.407227 -15.03519 -0.027198823 128.0 +4.3246307 -2.243535 0.026856782 128.0 +4.3275924 -2.2788851 0.026820306 128.0 +4.272964 -2.2837036 0.026908619 128.0 +4.268539 -2.3151257 0.026887501 128.0 +4.6904883 -2.581486 0.025931409 128.0 +4.6282916 -2.5843685 0.026033163 128.0 +4.4896784 -2.543196 0.026303863 128.0 +4.5078001 -2.5901337 0.026228989 128.0 +4.414938 -2.5729144 0.026399856 128.0 +4.3302064 -2.5592356 0.026553445 128.0 +3.3041382 -1.9799469 0.02881504 128.0 +4.2557521 -2.586205 0.026649438 128.0 +4.4747481 -2.7571018 0.026119556 128.0 +7.0119672 -4.3807735 0.020336935 128.0 +4.4498696 -2.817693 0.026098438 128.0 +4.468679 -2.8681784 0.026015883 128.0 +4.4635682 -2.9037259 0.025987085 128.0 +3.5908797 -2.3672235 0.027953023 128.0 +4.3802114 -2.9266055 0.026096517 128.0 +23.075123 -15.629151 -0.01729618 128.0 +22.949108 -15.750071 -0.017227065 128.0 +22.942345 -15.953391 -0.01743825 128.0 +4.1280437 -2.9070828 0.026516967 128.0 +4.0905943 -2.9184139 0.026563045 128.0 +4.0588346 -2.9334972 0.026595682 128.0 +21.228949 -15.548425 -0.014308877 128.0 +21.084158 -15.642043 -0.014191765 128.0 +5.4838729 -4.1197395 0.023042019 128.0 +5.4282541 -4.1302953 0.023114974 128.0 +5.3909292 -4.1543665 0.023143772 128.0 +3.8976638 -3.0415192 0.026718553 128.0 +5.570951 -4.4031706 0.022577412 128.0 +5.5461702 -4.4391456 0.022571653 128.0 +19.148695 -15.524011 -0.011116148 128.0 +18.992023 -15.591084 -0.010964479 128.0 +18.747589 -15.583943 -0.010593946 128.0 +18.436638 -15.517724 -0.010054465 128.0 +4.2048941 -3.5822973 0.025605034 128.0 +3.4954066 -3.0148158 0.027348267 128.0 +3.6892042 -3.2217493 0.026806867 128.0 +3.595964 -3.179394 0.026995013 128.0 +3.5763879 -3.2013986 0.026995013 128.0 +3.3803625 -3.0634174 0.02745194 128.0 +3.7762542 -3.4648221 0.026371058 128.0 +3.8669989 -3.5920813 0.026077319 128.0 +16.68022 -15.691469 -0.0077563915 128.0 +16.573486 -15.783866 -0.0077295131 128.0 +3.4978819 -3.3711247 0.02688366 128.0 +3.2595911 -3.1801751 0.027467299 128.0 +3.9441967 -3.8959799 0.025566636 128.0 +3.0803409 -3.0799015 0.027847432 128.0 +3.5454857 -3.589015 0.026524646 128.0 +3.5282848 -3.6157134 0.026511207 128.0 +3.0099452 -3.1223962 0.027883908 128.0 +3.0369196 -3.1893396 0.027755277 128.0 +2.970717 -3.1583691 0.027885828 128.0 +3.910044 -4.209034 0.025180744 128.0 +3.7672055 -4.105454 0.02551288 128.0 +3.7446296 -4.1314564 0.0255052 128.0 +3.2757521 -3.6588056 0.026781907 128.0 +3.7691469 -4.2625136 0.025286335 128.0 +3.2121918 -3.6776359 0.026835663 128.0 +3.8843822 -4.5030813 0.024792932 128.0 +3.8754814 -4.5489092 0.024737256 128.0 +3.2546675 -3.867769 0.026505448 128.0 +3.7976425 -4.5699711 0.024802532 128.0 +3.4035735 -4.147089 0.025910292 128.0 +12.435716 -15.348301 -0.0017145888 128.0 +12.346929 -15.431344 -0.0017318676 128.0 +3.5733833 -4.5213366 0.025146186 128.0 +3.5412683 -4.5376577 0.025159625 128.0 +3.599401 -4.6710048 0.024888925 128.0 +3.5385888 -4.6508169 0.024990678 128.0 +3.5189919 -4.6844368 0.024961879 128.0 +1.6112524 -2.1714566 0.031019041 128.0 +2.5292747 -3.4538813 0.02799142 128.0 +2.5747972 -3.5617406 0.027772557 128.0 +2.7880588 -3.9072025 0.026995013 128.0 +11.079247 -15.73586 -0.0007373796 128.0 +1.5107893 -2.1722291 0.031130394 128.0 +1.5200551 -2.2144463 0.031053599 128.0 +10.499628 -15.511456 0.00024942897 128.0 +10.073788 -15.0808 0.0013917462 128.0 +9.9667568 -15.120619 0.0014416627 128.0 +1.5023229 -2.3080897 0.030923048 128.0 +1.4832723 -2.3096895 0.030940328 128.0 +1.467468 -2.3162124 0.030946087 128.0 +1.9897497 -3.1844225 0.029001268 128.0 +1.4200548 -2.3033936 0.031015201 128.0 +1.3809737 -2.27104 0.031107355 128.0 +1.3546785 -2.2588828 0.031153431 128.0 +1.3433361 -2.2714572 0.031143833 128.0 +1.3540384 -2.3219965 0.031049758 128.0 +1.6216654 -2.8210635 0.029963117 128.0 +1.5496324 -2.7343707 0.030176222 128.0 +1.5425731 -2.7612913 0.030137826 128.0 +1.4759539 -2.6804595 0.03033557 128.0 +1.2888472 -2.3747461 0.03102288 128.0 +1.266241 -2.3676155 0.031055519 128.0 +1.4668902 -2.784158 0.030168543 128.0 +1.4787822 -2.8490331 0.030047592 128.0 +1.4667319 -2.8687396 0.030024553 128.0 +7.3614211 -14.62919 0.0047687818 128.0 +7.2710752 -14.673188 0.0047707018 128.0 +1.1580694 -2.3712749 0.031143833 128.0 +1.1608144 -2.4143934 0.031067038 128.0 +6.9775343 -14.757527 0.0048705344 128.0 +6.8750415 -14.774675 0.0049242903 128.0 +6.7792616 -14.805671 0.0049473289 128.0 +6.6599522 -14.784076 0.0050797993 128.0 +6.5654678 -14.816434 0.0050970782 128.0 +6.5726957 -15.081962 0.0046247924 128.0 +1.330954 -3.1036043 0.029726975 128.0 +1.3146026 -3.1181636 0.029713536 128.0 +6.2117348 -15.001739 0.0050375625 128.0 +6.1493378 -15.112747 0.0048858933 128.0 +6.0687394 -15.180837 0.0048225378 128.0 +1.0969927 -2.7911141 0.030452682 128.0 +1.076249 -2.7884619 0.03047188 128.0 +5.7380166 -15.157165 0.0050951582 128.0 +5.6184402 -15.120845 0.0052410676 128.0 +5.4813752 -15.033835 0.0054887296 128.0 +1.2010976 -3.3554595 0.029367961 128.0 +1.1844573 -3.37409 0.029344922 128.0 +5.15593 -14.993169 0.0057709492 128.0 +5.0845919 -15.086121 0.005646158 128.0 +5.0279813 -15.226237 0.005425374 128.0 +1.1603675 -3.5848286 0.028976308 128.0 +4.8144951 -15.203849 0.0055924021 128.0 +4.495296 -14.504289 0.0070572561 128.0 +0.96799403 -3.1892867 0.029811449 128.0 +0.96460718 -3.2498155 0.029702017 128.0 +0.9646883 -3.3248277 0.029563786 128.0 +0.9543494 -3.3662848 0.029492751 128.0 +0.88436949 -3.1937692 0.029847926 128.0 +0.86553806 -3.2020319 0.029842166 128.0 +4.0125074 -15.231268 0.005970615 128.0 +3.9393711 -15.335024 0.0058131861 128.0 +3.8755515 -15.480166 0.0055732033 128.0 +0.82766759 -3.3903868 0.029510031 128.0 +0.80800337 -3.4002664 0.02950043 128.0 +3.597827 -15.582983 0.0055060084 128.0 +3.5133083 -15.654529 0.0054080957 128.0 +3.4254916 -15.713897 0.0053332211 128.0 +0.64547718 -3.0463178 0.030231899 128.0 +0.62014306 -3.017894 0.030295253 128.0 +0.60102928 -3.0186999 0.030301014 128.0 +0.57777363 -2.997781 0.030349011 128.0 +2.9413104 -15.808629 0.0053389804 128.0 +0.5347544 -2.970197 0.030416206 128.0 +0.49619815 -2.8561704 0.030644668 128.0 +0.49381784 -2.9499044 0.030468041 128.0 +2.5045447 -15.577877 0.0059187785 128.0 +0.44109967 -2.8490074 0.030675385 128.0 +0.41657647 -2.8041785 0.03076754 128.0 +0.39809832 -2.797771 0.030784817 128.0 +0.37958017 -2.7902517 0.030804018 128.0 +0.36219576 -2.7905447 0.030807856 128.0 +1.95489 -15.865948 0.0055194474 128.0 +1.8584306 -15.88559 0.0055040885 128.0 +0.30581838 -2.7520123 0.03089425 128.0 +0.31386888 -2.9925368 0.030433483 128.0 +0.4134739 -4.1946201 0.028118132 128.0 +0.38690299 -4.1881161 0.02813541 128.0 +1.3174525 -15.320387 0.0066886428 128.0 +1.2254108 -15.353103 0.0066406461 128.0 +1.137566 -15.447099 0.0064736186 128.0 +1.0453856 -15.4927 0.0063987439 128.0 +0.15146655 -2.4542832 0.031489406 128.0 +0.14916427 -2.6868148 0.031043999 128.0 +0.11728097 -2.3730564 0.031648755 128.0 +0.10126474 -2.3397627 0.03171403 128.0 +0.087235816 -2.3493338 0.031696752 128.0 +0.081078604 -2.6206985 0.03117647 128.0 +0.066944361 -2.7011228 0.03102288 128.0 +0.051753316 -2.7774699 0.030876972 128.0 +0.03474633 -2.780735 0.030871212 128.0 +0.017825956 -2.8048954 0.030825134 128.0 +0.00061628362 -2.7989521 0.030836655 128.0 +-0.016519781 -2.7929032 0.030848173 128.0 +-0.033431981 -2.7747507 0.030882731 128.0 +-0.29715145 -16.033175 0.0054234546 128.0 +-0.39834362 -16.145014 0.00520459 128.0 +-0.49761617 -16.149261 0.0051911511 128.0 +-0.09563417 -2.6142037 0.031187989 128.0 +-0.11081013 -2.5935864 0.031226385 128.0 +-0.79123998 -16.065454 0.0053293812 128.0 +-0.14201978 -2.5810483 0.031247504 128.0 +-0.15693137 -2.5651567 0.031276304 128.0 +-0.17375016 -2.5801086 0.031245586 128.0 +-1.2181647 -16.485983 0.0044731232 128.0 +-1.3372705 -16.702478 0.0040411544 128.0 +-1.4424815 -16.72584 0.0039797188 128.0 +-1.5459111 -16.725636 0.00396244 128.0 +-1.6505711 -16.736734 0.003922123 128.0 +-1.7660656 -16.848619 0.0036859801 128.0 +-1.8670948 -16.816595 0.0037262973 128.0 +-1.9761865 -16.855474 0.0036283843 128.0 +-2.085948 -16.894638 0.0035285517 128.0 +-2.1736145 -16.758553 0.0037666142 128.0 +-2.3053787 -16.957939 0.0033538442 128.0 +-2.4092464 -16.942484 0.0033557641 128.0 +-2.5188882 -16.965958 0.0032808895 128.0 +-2.6443608 -17.088535 0.0030121088 128.0 +-2.3197246 -14.406363 0.0081957337 128.0 +-2.8647611 -17.119892 0.0028853982 128.0 +-2.9892647 -17.21431 0.0026665339 128.0 +-3.1107812 -17.28422 0.0024937466 128.0 +-3.2319849 -17.346401 0.002334398 128.0 +-3.3716695 -17.499062 0.0019965025 128.0 +-3.3704011 -16.932751 0.0030639451 128.0 +-3.5841432 -17.446573 0.002015701 128.0 +-3.6496651 -17.228598 0.0023996732 128.0 +-3.7811186 -17.324095 0.0021673702 128.0 +-3.9744053 -17.687904 0.0014051853 128.0 +-4.132422 -17.877529 0.00098281587 128.0 +-4.2818131 -18.019175 0.00065259979 128.0 +-3.877542 -15.884504 0.0048186979 128.0 +-4.4452257 -17.736359 0.001105687 128.0 +-4.5464969 -17.679695 0.0011632828 128.0 +-4.7752776 -18.107853 0.00025710842 128.0 +-4.9322286 -18.248112 -8.0787118e-05 128.0 +-5.1201711 -18.492165 -0.00062794751 128.0 +-5.2556381 -18.538328 -0.00078345626 128.0 +-5.4888535 -18.917732 -0.0016070766 128.0 +-5.3125482 -17.899168 0.00036462065 128.0 +-5.8553691 -19.292944 -0.0024978921 128.0 +-5.9466715 -19.169741 -0.0023231849 128.0 +-6.1566534 -19.424583 -0.0029106622 128.0 +-6.2486176 -19.302721 -0.0027417145 128.0 +-6.3707056 -19.27541 -0.0027647528 128.0 +-6.2832985 -18.626701 -0.0015302822 128.0 +-6.6025333 -19.183489 -0.0027397946 128.0 +-6.7631845 -19.265274 -0.0029893764 128.0 +-6.8913789 -19.251657 -0.0030469724 128.0 +-7.065259 -19.362131 -0.0033599096 128.0 +-7.2745662 -19.562105 -0.0038590736 128.0 +-7.4104056 -19.559179 -0.0039454675 128.0 +-7.1990075 -18.655056 -0.0021791952 128.0 +-7.7376599 -19.690136 -0.0044062338 128.0 +-7.9753528 -19.934744 -0.00501099 128.0 +-8.1250544 -19.953041 -0.00515114 128.0 +-8.2718344 -19.961935 -0.0052740113 128.0 +-8.3941631 -19.910805 -0.0052740113 128.0 +-8.4468012 -19.697174 -0.0049361154 128.0 +-8.6262732 -19.779715 -0.005218335 128.0 +-8.7584229 -19.751093 -0.0052701714 128.0 +-9.6114779 -21.320583 -0.0086894436 128.0 +-8.9938908 -19.62849 -0.0052413736 128.0 +-10.066591 -21.618025 -0.0095725795 128.0 +-10.207175 -21.573025 -0.0096090576 128.0 +-10.477999 -21.798391 -0.010223413 128.0 +-1.6878434 -3.4591329 0.0288208 128.0 +-1.6854887 -3.4012299 0.028922552 128.0 +-1.6892347 -3.356885 0.028995508 128.0 +-1.7111661 -3.3491278 0.028989749 128.0 +-1.7524158 -3.378505 0.028903354 128.0 +-1.7735791 -3.3685734 0.028901435 128.0 +-1.8060042 -3.3796732 0.028853439 128.0 +-4.5535502 -8.3932962 0.017877592 128.0 +-13.123835 -23.835772 -0.016029073 128.0 +-13.432252 -24.045504 -0.016668387 128.0 +-12.779783 -22.551512 -0.013554372 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-15.644053 -26.457903 -0.022800421 128.0 +-16.633047 -27.740479 -0.025887558 128.0 +-17.104271 -28.13348 -0.027001077 128.0 +-17.287592 -28.045877 -0.027041394 128.0 +-17.423315 -27.881611 -0.026910845 128.0 +-17.527704 -27.66943 -0.026672782 128.0 +-18.342312 -28.566048 -0.028965095 128.0 +-18.533609 -28.478107 -0.029022692 128.0 +-18.703594 -28.357174 -0.029007332 128.0 +-19.339052 -28.932735 -0.030602736 128.0 +-19.542574 -28.852442 -0.03069297 128.0 +-19.968235 -29.094757 -0.031537708 128.0 +-19.925999 -28.654785 -0.030796643 128.0 +-20.203392 -28.676674 -0.031136459 128.0 +-20.858271 -29.223654 -0.032720342 128.0 +-21.69639 -30.006752 -0.034880187 128.0 +-21.878328 -29.870642 -0.034874428 128.0 +-22.080862 -29.762339 -0.034937784 128.0 +-21.924229 -29.175421 -0.03385498 128.0 +-22.056803 -28.979872 -0.033709072 128.0 +-23.076746 -29.936928 -0.036358479 128.0 +-23.056925 -29.534655 -0.035724927 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-27.461658 -33.035172 -0.046264965 128.0 +-27.638083 -32.835445 -0.046188168 128.0 +-27.888985 -32.723846 -0.046335999 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-29.447313 -33.291012 -0.049119797 128.0 +-29.999277 -33.498554 -0.050121963 128.0 +-30.282173 -33.399784 -0.050344668 128.0 +-30.331007 -33.043911 -0.049903098 128.0 +-0 -0 -0 128.0 +-31.319405 -33.291206 -0.051542662 128.0 +-31.403772 -32.973137 -0.051210526 128.0 +-32.586281 -33.796997 -0.05392329 128.0 +-32.731571 -33.533443 -0.053754341 128.0 +-32.858692 -33.253021 -0.053541236 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-34.14814 -33.308681 -0.055372782 128.0 +-35.130344 -33.848553 -0.057448152 128.0 +-35.410538 -33.701988 -0.057642061 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-10.317468 -8.4654455 0.01058788 128.0 +-10.36844 -8.40135 0.0105898 128.0 +-0 -0 -0 128.0 +-35.622787 -28.14382 -0.050949425 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-20.970184 -15.747928 -0.014138009 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-16.403454 -8.6360474 0.00061996217 128.0 +-16.465012 -8.5398388 0.00060076354 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-6.9725189 -3.4558086 0.021269986 128.0 +-6.9747181 -3.4037538 0.021310303 128.0 +-7.0071907 -3.3665216 0.021285346 128.0 +-7.0240989 -3.3217533 0.021293025 128.0 +-7.070642 -3.2908247 0.021237349 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-36.128246 -15.47979 -0.039249793 128.0 +-36.217018 -15.25549 -0.03923827 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-22.288456 -8.437108 -0.0095437821 128.0 +-22.370741 -8.3116817 -0.0096071372 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-28.350088 -8.4054546 -0.020559944 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-12.790498 -3.3697069 0.010816344 128.0 +-12.787687 -3.2851927 0.01086242 128.0 +-12.938564 -3.2394438 0.01060324 128.0 +-34.335182 -8.3710165 -0.03163946 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-40.29821 -8.5241213 -0.04286873 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-18.684622 -3.3577132 -0.00023629586 128.0 +-18.663488 -3.235831 -0.00015566169 128.0 +-0 -0 -0 128.0 +-27.184938 -4.3697987 -0.016651107 128.0 +-27.151941 -4.1937566 -0.016535915 128.0 +-27.227612 -4.0345497 -0.016633829 128.0 +-27.207302 -3.8610873 -0.016547434 128.0 +-24.213108 -3.284869 -0.010701458 128.0 +-28.658913 -3.7088552 -0.019269798 128.0 +-27.537767 -3.3921452 -0.017058117 128.0 +-28.429129 -3.3249531 -0.018741837 128.0 +-27.682676 -3.0656219 -0.017261622 128.0 +-27.959558 -2.9227271 -0.017760787 128.0 +-25.849222 -2.5419731 -0.013656124 128.0 +-25.893211 -2.385977 -0.0137118 128.0 +-25.88644 -2.2252567 -0.013671483 128.0 +-27.48258 -2.1926033 -0.016720222 128.0 +-29.464193 -2.1687617 -0.020510027 128.0 +-30.66824 -2.0682261 -0.022802342 128.0 +-30.674364 -1.8796436 -0.022790823 128.0 +-39.461002 -2.1747808 -0.039664481 128.0 +-41.614037 -2.0373433 -0.043778744 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-112.10613 -2.0430038 -0.17905407 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-152.03152 5.6283779 -0.25586963 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 -0 -0 128.0 +-112.13109 -2.1691427 -1.5296394 128.0 +-87.869766 -1.1604209 -1.1906796 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-87.842247 0.45699403 -1.1902047 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-69.695068 14.240609 -0.95689672 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-58.084858 13.737114 -0.79704374 128.0 +-57.993649 14.091841 -0.79696 128.0 +-102.68208 25.618589 -1.4413565 128.0 +-80.788139 20.683647 -1.1280731 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-53.612816 14.782949 -0.74016184 128.0 +-49.893295 14.087354 -0.68752438 128.0 +-0 0 -0 128.0 +-79.722786 23.569513 -1.1244429 128.0 +-0 0 -0 128.0 +-43.599976 13.4742 -0.60081929 128.0 +-43.516479 13.741471 -0.60081929 128.0 +-43.523651 14.037996 -0.60217357 128.0 +-43.473736 14.316986 -0.60271811 128.0 +-0 0 -0 128.0 +-57.872692 19.849243 -0.81791723 128.0 +-41.057556 14.364251 -0.5709821 128.0 +-40.997841 14.62632 -0.57141489 128.0 +-0 0 -0 128.0 +-66.871391 24.785845 -0.95943785 128.0 +-51.793354 19.559565 -0.73667127 128.0 +-51.651833 19.869097 -0.73636413 128.0 +-0 0 -0 128.0 +-33.835629 13.494775 -0.4722555 128.0 +-0 0 -0 128.0 +-35.017662 14.466754 -0.49265426 128.0 +-32.89938 13.828585 -0.46192348 128.0 +-45.917103 19.632528 -0.66091251 128.0 +-57.269749 24.903149 -0.83562124 128.0 +-57.050938 25.225372 -0.83462995 128.0 +-31.045296 13.955397 -0.4388859 128.0 +-32.978107 15.068114 -0.46988192 128.0 +-29.235653 13.57564 -0.41369811 128.0 +-29.158133 13.757757 -0.41379586 128.0 +-29.075872 13.937706 -0.41383773 128.0 +-31.124926 15.155459 -0.44699791 128.0 +-39.858063 19.711163 -0.58449745 128.0 +-39.815891 19.995293 -0.58574009 128.0 +-27.158171 13.848122 -0.38927826 128.0 +-27.084232 14.020476 -0.38945979 128.0 +-28.91227 15.19241 -0.41965997 128.0 +-28.847622 15.385055 -0.42012072 128.0 +-49.971077 27.045437 -0.75701416 128.0 +-27.431393 15.065022 -0.4006016 128.0 +-27.279917 15.200447 -0.39966613 128.0 +-0 0 -0 128.0 +-24.698093 14.161838 -0.36114448 128.0 +-24.582211 14.296527 -0.36068371 128.0 +-24.419096 14.402898 -0.35946903 128.0 +-24.477859 14.640738 -0.3618705 128.0 +-46.649906 28.291969 -0.72543174 128.0 +-46.045292 28.313187 -0.71838081 128.0 +-45.405701 28.305315 -0.71072954 128.0 +-44.861786 28.34996 -0.70462805 128.0 +-44.160751 28.287613 -0.69590169 128.0 +-43.822811 28.451872 -0.69317907 128.0 +-43.193008 28.421234 -0.68558365 128.0 +-42.651764 28.441643 -0.67944032 128.0 +-42.452423 28.686579 -0.67903543 128.0 +-42.386162 29.022219 -0.68090636 128.0 +-42.302586 29.347864 -0.68252593 128.0 +-20.567867 14.457172 -0.31465042 128.0 +-20.473886 14.579622 -0.31456664 128.0 +-42.755093 30.842825 -0.6997413 128.0 +-42.577957 31.114023 -0.6999647 128.0 +-42.740673 31.637035 -0.70612204 128.0 +-42.536144 31.891495 -0.70595449 128.0 +-42.157303 32.013412 -0.70275712 128.0 +-41.533661 31.943529 -0.6952455 128.0 +-41.335297 32.196545 -0.69521755 128.0 +-41.006645 32.346771 -0.69289982 128.0 +-40.780834 32.576557 -0.69242513 128.0 +-39.747581 32.152672 -0.67747164 128.0 +-37.055691 30.353209 -0.63245755 128.0 +-38.616573 32.029678 -0.66416568 128.0 +-38.211811 32.091755 -0.66038191 128.0 +-37.963142 32.282215 -0.65944648 128.0 +-37.584763 32.359924 -0.65613741 128.0 +-37.00185 32.255501 -0.64903069 128.0 +-0 0 -0 128.0 +-36.480213 32.597214 -0.64672691 128.0 +-21.780056 19.703651 -0.37371042 128.0 +-0 0 -0 128.0 +-34.516834 32.004776 -0.62088293 128.0 +-34.284813 32.183117 -0.62021273 128.0 +-33.859825 32.177284 -0.61584258 128.0 +-33.233727 31.972662 -0.60754901 128.0 +-33.012566 32.15226 -0.60707432 128.0 +-32.673679 32.215214 -0.6043098 128.0 +-14.499795 14.473185 -0.24967043 128.0 +-14.414233 14.565434 -0.24974024 128.0 +-31.885046 32.616692 -0.60051209 128.0 +-31.553038 32.675777 -0.59787327 128.0 +-28.968853 30.37042 -0.54966182 128.0 +-28.792929 30.559242 -0.54988521 128.0 +-31.195564 33.518921 -0.60298342 128.0 +-29.858515 32.47966 -0.57965261 128.0 +-29.610935 32.609699 -0.57866126 128.0 +-29.116529 32.463257 -0.57251793 128.0 +-28.730473 32.430992 -0.56859457 128.0 +-28.379496 32.433594 -0.56538326 128.0 +-28.136147 32.556427 -0.56444776 128.0 +-0 0 -0 128.0 +-27.457382 32.570522 -0.55844402 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-15.792456 19.694794 -0.31610247 128.0 +-24.13438 30.478991 -0.50646287 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-24.577986 32.241261 -0.52969593 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-23.842556 32.500351 -0.52644271 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-36.490772 52.389946 -0.85511243 128.0 +-0 0 -0 128.0 +-22.287708 32.85117 -0.5179258 128.0 +-22.017294 32.885109 -0.51620847 128.0 +-22.132584 33.500122 -0.52425069 128.0 +-20.203802 30.992567 -0.48019999 128.0 +-20.020287 31.126884 -0.48038149 128.0 +-0 0 -0 128.0 +-30.335291 48.460873 -0.76192886 128.0 +-30.02949 48.633331 -0.76171941 128.0 +-29.742477 48.836315 -0.76204056 128.0 +-8.7100029 14.501678 -0.19981147 128.0 +-8.6020041 14.523017 -0.19929488 128.0 +-8.5354242 14.614378 -0.19992317 128.0 +-19.023228 33.034416 -0.49589348 128.0 +-20.306108 35.76783 -0.53791964 128.0 +-0 0 -0 128.0 +-19.908636 36.092247 -0.53916228 128.0 +-12.601949 23.18149 -0.33203334 128.0 +-17.943346 33.494873 -0.4941901 128.0 +-12.24558 23.199982 -0.32991108 128.0 +-12.094232 23.257826 -0.32964578 128.0 +-11.949472 23.328037 -0.32958993 128.0 +-9.9333248 19.689009 -0.27153519 128.0 +-9.80165 19.728098 -0.27120012 128.0 +-23.849833 48.75042 -0.72142458 128.0 +-14.953458 31.047215 -0.44479188 128.0 +-17.591145 37.104191 -0.53698415 128.0 +-17.379635 37.246769 -0.53752869 128.0 +-37.055695 80.702591 -1.2036085 128.0 +-0 0 -0 128.0 +-15.262177 34.34491 -0.48839578 128.0 +-0 0 -0 128.0 +-14.841537 34.534206 -0.48846561 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-14.574777 35.711567 -0.50219041 128.0 +-14.043517 35.022606 -0.49049011 128.0 +-13.488659 34.245697 -0.47754717 128.0 +-20.591818 53.234615 -0.76061642 128.0 +-13.072721 34.422668 -0.47775662 128.0 +-19.914644 53.42334 -0.75972283 128.0 +-19.571699 53.504147 -0.75912249 128.0 +-0 0 -0 128.0 +-11.068791 31.450817 -0.42916822 128.0 +-10.942142 31.710964 -0.43201649 128.0 +-0 0 -0 128.0 +-10.349297 31.230658 -0.42301089 128.0 +-10.263671 31.620733 -0.42781389 128.0 +-11.190683 35.210861 -0.47950187 128.0 +-23.106415 74.27739 -1.0498011 128.0 +-10.74756 35.312057 -0.4790132 128.0 +-10.406304 34.959499 -0.47292569 128.0 +-10.575209 36.340878 -0.49209577 128.0 +-10.342727 36.372379 -0.49162105 128.0 +-10.219435 36.795479 -0.49684289 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-3.6376059 14.466204 -0.17188711 128.0 +-3.5463955 14.478539 -0.17174751 128.0 +-9.0678511 38.025951 -0.50946474 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-8.8485365 40.386997 -0.54092151 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-3.9484355 19.755316 -0.24490932 128.0 +-3.8292344 19.789968 -0.2450629 128.0 +-9.612524 51.363159 -0.69326288 128.0 +-8.0110731 44.308216 -0.59233028 128.0 +-7.2732859 41.68713 -0.55449277 128.0 +-4.6734653 27.79306 -0.35713732 128.0 +-4.5154643 27.899191 -0.35824034 128.0 +-4.9877734 32.063202 -0.41669998 128.0 +-4.7921247 32.101112 -0.41681167 128.0 +-6.0059838 41.994553 -0.55595875 128.0 +-5.7513137 42.053398 -0.5562799 128.0 +-5.5001588 42.141438 -0.55703384 128.0 +-0 0 -0 128.0 +-3.5777307 30.306574 -0.38972506 128.0 +-4.8382411 43.261044 -0.57144284 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-3.7412734 40.127033 -0.52634501 128.0 +-0 0 -0 128.0 +-3.764312 46.546478 -0.61567503 128.0 +-0 0 -0 128.0 +-2.5537474 37.264954 -0.48517051 128.0 +-1.7052749 27.344204 -0.34616306 128.0 +-1.5317371 27.252323 -0.3447389 128.0 +-0 0 -0 128.0 +-2.2853315 52.045769 -0.6910429 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-1.0803896 42.405102 -0.55591691 128.0 +-0.76139379 39.372795 -0.51348585 128.0 +-0 0 -0 128.0 +-0.31952214 45.224461 -0.59510875 128.0 +-0.042018421 45.21957 -0.59502494 128.0 +0.23546521 45.222973 -0.59508079 128.0 +0.38545442 33.972496 -0.43800628 128.0 +0.59421289 33.987488 -0.4382576 128.0 +1.0260112 43.439644 -0.5703398 128.0 +1.2923839 43.427536 -0.57027 128.0 +1.5577859 43.389809 -0.56986511 128.0 +1.8205476 43.297516 -0.56872022 128.0 +1.4806128 30.718336 -0.3930341 128.0 +1.6692318 30.711668 -0.39307597 128.0 +1.7003577 28.100855 -0.3567045 128.0 +1.8700228 28.048988 -0.35613206 128.0 +3.0958364 42.507256 -0.55872327 128.0 +3.3502197 42.406719 -0.55759233 128.0 +3.6113777 42.39732 -0.55775988 128.0 +3.8641775 42.294701 -0.55664295 128.0 +0 0 -0 128.0 +4.3917809 42.329628 -0.55784369 128.0 +2.1894791 19.910019 -0.24328971 128.0 +4.5406599 39.085293 -0.51303905 128.0 +4.778089 39.037838 -0.51277375 128.0 +5.0051579 38.911587 -0.51141942 128.0 +5.2344661 38.81078 -0.51044208 128.0 +5.4741826 38.78981 -0.51060963 128.0 +4.9459724 33.557156 -0.43723837 128.0 +5.1533008 33.53606 -0.43737799 128.0 +4.745945 29.6709 -0.3831768 128.0 +4.903481 29.494253 -0.38109642 128.0 +5.1263576 29.706989 -0.38454509 128.0 +7.7336407 43.232445 -0.57686019 128.0 +8.0107832 43.249069 -0.57778168 128.0 +8.3679981 43.679321 -0.58460915 128.0 +8.6793423 43.84687 -0.58773673 128.0 +8.9576263 43.838833 -0.58839291 128.0 +3.0680475 14.557763 -0.1713426 128.0 +3.1505251 14.507396 -0.1708958 128.0 +10.268962 45.929432 -0.62077123 128.0 +7.1711078 31.1737 -0.41026342 128.0 +10.233033 43.268055 -0.5844416 128.0 +7.5505199 31.072664 -0.41010985 128.0 +9.5009565 38.079815 -0.51162887 128.0 +3.447268 13.463312 -0.15765966 128.0 +3.4978168 13.32005 -0.15590042 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +9.9156771 34.311474 -0.46231443 128.0 +0 0 -0 128.0 +10.35161 34.238895 -0.4630684 128.0 +15.808257 51.152779 -0.71120423 128.0 +11.89915 37.682037 -0.51538467 128.0 +12.129831 37.607365 -0.51537073 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +8.0335274 19.788385 -0.26181751 128.0 +8.1536503 19.735949 -0.26177564 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +24.606321 55.650841 -0.81325382 128.0 +24.950195 55.505196 -0.81335157 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +35.965126 71.616753 -1.0826402 128.0 +0 0 -0 128.0 +36.449173 70.41256 -1.0707304 128.0 +0 0 -0 128.0 +33.416451 62.658245 -0.95517939 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +37.453468 66.258659 -1.0263865 128.0 +37.849869 66.011124 -1.0261213 128.0 +26.90773 46.267288 -0.71096689 128.0 +0 0 -0 128.0 +30.450312 50.91074 -0.79194754 128.0 +26.151587 43.120625 -0.66779584 128.0 +30.40029 49.439571 -0.77402014 128.0 +29.621357 47.516853 -0.74546742 128.0 +20.045488 31.720329 -0.48755807 128.0 +30.551718 47.695381 -0.75451493 128.0 +20.562279 31.670713 -0.49086708 128.0 +20.776556 31.574856 -0.4913837 128.0 +20.929964 31.386881 -0.49037841 128.0 +30.143255 44.60815 -0.71536499 128.0 +30.372902 44.358829 -0.7142899 128.0 +13.874165 19.998121 -0.30346671 128.0 +13.99661 19.912615 -0.30346671 128.0 +30.287006 42.532215 -0.69269043 128.0 +30.513481 42.298542 -0.69188058 128.0 +30.704012 42.016869 -0.69026101 128.0 +30.877365 41.714363 -0.68829232 128.0 +31.06736 41.436913 -0.68677044 128.0 +31.255718 41.159504 -0.6852625 128.0 +29.931307 38.917282 -0.64915633 128.0 +31.590101 40.556705 -0.6814369 128.0 +0 0 -0 128.0 +31.844526 39.864433 -0.6760475 128.0 +32.002377 39.561783 -0.67413467 128.0 +32.228046 39.344563 -0.67377168 128.0 +31.802427 38.342583 -0.65919513 128.0 +32.133553 38.261581 -0.66128945 128.0 +32.801701 38.574055 -0.6706441 128.0 +33.039726 38.374336 -0.67068601 128.0 +33.273251 38.169376 -0.67065811 128.0 +31.574814 35.775421 -0.62988853 128.0 +33.743137 37.762665 -0.67074186 128.0 +33.964149 37.543785 -0.67053241 128.0 +34.181042 37.320667 -0.67026716 128.0 +34.398518 37.098503 -0.67004377 128.0 +0 0 -0 128.0 +31.681355 33.337952 -0.60578978 128.0 +34.080074 35.424297 -0.64999408 128.0 +35.247673 36.190857 -0.66902453 128.0 +19.558523 19.836639 -0.35258564 128.0 +19.709538 19.745981 -0.35317206 128.0 +35.990299 35.617519 -0.6706441 128.0 +36.298256 35.484089 -0.67240334 128.0 +36.746189 35.483658 -0.67688525 128.0 +34.137115 32.561787 -0.62234896 128.0 +37.267647 35.113712 -0.67858863 128.0 +37.497768 34.898685 -0.67888182 128.0 +37.876823 34.82021 -0.68202329 128.0 +38.08902 34.586472 -0.68200934 128.0 +38.412922 34.452923 -0.68411762 128.0 +17.892511 15.850657 -0.2973792 128.0 +17.905905 15.667483 -0.29582939 128.0 +17.488024 15.113377 -0.28634909 128.0 +17.570541 14.997349 -0.28616756 128.0 +17.968792 15.147695 -0.29176641 128.0 +18.135937 15.099214 -0.29312074 128.0 +17.820446 14.65234 -0.28574869 128.0 +18.100967 14.697775 -0.28918341 128.0 +18.165068 14.56579 -0.28872263 128.0 +18.831833 14.911537 -0.29901278 128.0 +19.423946 15.187426 -0.30789271 128.0 +18.521116 14.299235 -0.29032829 128.0 +25.745344 19.625952 -0.41563886 128.0 +20.567007 15.47974 -0.32304168 128.0 +18.915209 14.055498 -0.29265997 128.0 +19.022058 13.95455 -0.29302299 128.0 +19.104895 13.835811 -0.29298112 128.0 +21.325449 15.245398 -0.32964578 128.0 +20.117983 14.196443 -0.30741802 128.0 +20.323683 14.155601 -0.30944252 128.0 +20.67795 14.214726 -0.31398022 128.0 +20.634047 13.998882 -0.31177419 128.0 +20.731186 13.879799 -0.31196967 128.0 +21.238932 14.031786 -0.31904849 128.0 +21.11606 13.765233 -0.3155719 128.0 +21.281698 13.687877 -0.31692624 128.0 +21.539204 13.667399 -0.31980246 128.0 +21.592148 13.51588 -0.31929982 128.0 +20.178152 12.459071 -0.29474035 128.0 +31.95299 19.459969 -0.48600826 128.0 +20.255808 12.166238 -0.29353958 128.0 +20.252651 11.995859 -0.292283 128.0 +20.236078 11.818918 -0.29083094 128.0 +20.066465 11.55531 -0.28693548 128.0 +20.071775 11.394942 -0.28588831 128.0 +20.093325 11.244712 -0.2851204 128.0 +20.118166 11.097062 -0.28442231 128.0 +20.141954 10.949532 -0.28372419 128.0 +20.130316 10.783713 -0.28248155 128.0 +20.166924 10.644589 -0.28202081 128.0 +20.089918 10.446836 -0.27978685 128.0 +20.135841 10.314252 -0.27950761 128.0 +20.210356 10.196362 -0.2796891 128.0 +20.448944 10.15981 -0.28243965 128.0 +20.714785 10.133894 -0.28560907 128.0 +20.98197 10.105528 -0.28879246 128.0 +21.369745 10.131233 -0.29383281 128.0 +21.5937 10.075603 -0.29633203 128.0 +23.084484 10.599238 -0.31829455 128.0 +22.320776 10.083198 -0.30560291 128.0 +22.552179 10.021577 -0.30819988 128.0 +22.907352 10.011554 -0.31268173 128.0 +23.554451 10.122701 -0.32158962 128.0 +23.755199 10.036748 -0.32369789 128.0 +24.308525 10.095212 -0.33113974 128.0 +24.859741 10.145744 -0.33852574 128.0 +25.205515 10.106895 -0.34279817 128.0 +0 0 -0 128.0 +26.016808 10.063407 -0.35311621 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +33.928082 12.175149 -0.4669359 128.0 +33.912544 11.935205 -0.46560952 128.0 +33.890617 11.69428 -0.46421328 128.0 +33.88596 11.460483 -0.46309632 128.0 +0 0 -0 128.0 +33.871876 10.994392 -0.46086237 128.0 +33.885334 10.769391 -0.46008047 128.0 +33.921181 10.552064 -0.45964766 128.0 +33.950851 10.333247 -0.45914501 128.0 +34.0462 10.134434 -0.45961973 128.0 +34.578178 10.062243 -0.46646121 128.0 +35.838596 10.190936 -0.48387203 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +39.993279 10.318583 -0.54033512 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +59.403427 13.781195 -0.8151108 128.0 +0 0 -0 128.0 +54.501759 11.941136 -0.74268895 128.0 +54.483047 11.587151 -0.74139047 128.0 +54.60894 11.264145 -0.74218637 128.0 +54.622116 10.917883 -0.74140447 128.0 +54.616417 10.568655 -0.74038523 128.0 +54.659595 10.229473 -0.74009204 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.182083 0.64859176 -0.20369297 128.0 +17.200729 0.54362643 -0.20390239 128.0 +0 0 -0 128.0 +17.33507 0.33500129 -0.20570353 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.286076 -0.090253249 -0.20497748 128.0 +17.287195 -0.19633958 -0.20500541 128.0 +17.290665 -0.30249545 -0.20507522 128.0 +17.294481 -0.4087249 -0.20515899 128.0 +17.222685 -0.51278245 -0.2041956 128.0 +17.244196 -0.6193459 -0.20454466 128.0 +17.220091 -0.72430271 -0.20426542 128.0 +17.122438 -0.82547385 -0.20296693 128.0 +17.104073 -0.92981428 -0.20278543 128.0 +17.298658 -1.0468814 -0.20559183 128.0 +17.328823 -1.1554649 -0.20610842 128.0 +17.337364 -1.2629328 -0.20633182 128.0 +17.430962 -1.3773205 -0.20775597 128.0 +17.419193 -1.4839944 -0.20771408 128.0 +17.439632 -1.5935776 -0.20813294 128.0 +0 -0 -0 128.0 +27.478786 -2.8511193 -0.34936041 128.0 +27.435928 -3.0169404 -0.34901133 128.0 +27.412928 -3.1847658 -0.34895548 128.0 +27.405771 -3.3544874 -0.34913701 128.0 +27.401533 -3.5247514 -0.34937435 128.0 +25.402481 -3.4262099 -0.32151979 128.0 +27.388889 -3.8653555 -0.3498351 128.0 +27.386419 -4.0365453 -0.35014227 128.0 +27.370029 -4.2058759 -0.35026795 128.0 +27.431581 -4.3877907 -0.35151058 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +19.289841 -3.4508917 -0.23723012 128.0 +19.242741 -3.5644524 -0.2368671 128.0 +15.614437 -2.9916468 -0.18559799 128.0 +15.466311 -3.0617709 -0.18375498 128.0 +15.315959 -3.1297903 -0.18188404 128.0 +15.272006 -3.218554 -0.18153499 128.0 +15.212885 -3.3037138 -0.1809765 128.0 +15.24307 -3.4083407 -0.18170254 128.0 +15.26572 -3.511893 -0.18233083 128.0 +15.310052 -3.6211438 -0.18328026 128.0 +11.128964 -2.704555 -0.12352213 128.0 +11.001561 -2.7451968 -0.12193044 128.0 +11.031005 -2.8245533 -0.12260062 128.0 +10.997993 -2.8881221 -0.12237723 128.0 +13.590897 -3.6582198 -0.16013096 128.0 +31.665052 -8.7313452 -0.42225695 128.0 +9.0241766 -2.5483158 -0.09453664 128.0 +7.9075255 -2.2855191 -0.078535981 128.0 +7.9163656 -2.3407993 -0.078871071 128.0 +7.8693118 -2.3794911 -0.078396358 128.0 +7.8755808 -2.4342265 -0.07870353 128.0 +7.8614497 -2.4828053 -0.078717493 128.0 +7.9640698 -2.5690544 -0.080448799 128.0 +7.9348602 -2.6134942 -0.080253333 128.0 +37.182716 -12.498667 -0.51134962 128.0 +37.111 -12.728527 -0.51143336 128.0 +37.040695 -12.958967 -0.51155907 128.0 +0 -0 -0 128.0 +10.855143 -3.9482262 -0.12489042 128.0 +7.2116761 -2.6733873 -0.070996404 128.0 +7.2624874 -2.743021 -0.072001681 128.0 +11.075533 -4.2608042 -0.12930247 128.0 +7.0914197 -2.7783248 -0.069949239 128.0 +7.160614 -2.8562329 -0.071247727 128.0 +7.1707478 -2.9113989 -0.071666591 128.0 +33.708141 -13.925773 -0.47286984 128.0 +9.1098719 -3.8294654 -0.10158754 128.0 +9.098156 -3.8904004 -0.10176905 128.0 +19.596277 -8.5215244 -0.26198506 128.0 +8.9765692 -3.9694085 -0.10065208 128.0 +5.6515088 -2.540812 -0.050122947 128.0 +9.0154009 -4.1195726 -0.10200641 128.0 +4.8508501 -2.2528734 -0.038283017 128.0 +4.8061891 -2.2680886 -0.037808303 128.0 +28.885622 -13.846511 -0.41089171 128.0 +4.7788935 -2.3273349 -0.037822265 128.0 +28.741314 -14.213679 -0.41132456 128.0 +28.574926 -14.350277 -0.41009587 128.0 +4.3281546 -2.2073333 -0.031441547 128.0 +5.2673368 -2.7270651 -0.046422966 128.0 +5.3823919 -2.8286335 -0.048503332 128.0 +4.7852783 -2.5524721 -0.039330181 128.0 +4.6683984 -2.5270543 -0.037724528 128.0 +4.6037245 -2.5286977 -0.036942646 128.0 +4.471951 -2.4921691 -0.035085678 128.0 +4.447 -2.5141494 -0.034932092 128.0 +3.6247811 -2.0788383 -0.021947265 128.0 +4.3821025 -2.5489271 -0.03438757 128.0 +4.3577676 -2.5706875 -0.034247946 128.0 +3.556726 -2.1277561 -0.021472551 128.0 +3.5478783 -2.1521323 -0.021542363 128.0 +3.5490861 -2.1827645 -0.02177972 128.0 +3.5551424 -2.2166662 -0.022100849 128.0 +3.605715 -2.2790341 -0.023161976 128.0 +3.523463 -2.2574298 -0.022031039 128.0 +3.4952881 -2.2697506 -0.021793682 128.0 +3.487978 -2.2955515 -0.021905379 128.0 +4.0594912 -2.7074442 -0.031734753 128.0 +4.0618572 -2.745178 -0.032055885 128.0 +21.858358 -14.966868 -0.33351332 128.0 +21.762827 -15.098428 -0.33345747 128.0 +4.0916262 -2.8764019 -0.033438139 128.0 +21.172728 -15.077257 -0.32654619 128.0 +21.017376 -15.161843 -0.3254711 128.0 +20.857748 -15.242143 -0.32432622 128.0 +20.223753 -14.970072 -0.31494361 128.0 +4.735888 -3.5511816 -0.046255421 128.0 +4.7418804 -3.6013381 -0.046744097 128.0 +4.5675144 -3.5133266 -0.044063359 128.0 +4.5821581 -3.5695503 -0.044705618 128.0 +4.5562444 -3.5945022 -0.04463581 128.0 +4.550509 -3.6354966 -0.044929013 128.0 +4.5133457 -3.6514015 -0.044663731 128.0 +3.8936913 -3.1898823 -0.033884931 128.0 +3.8548045 -3.1977549 -0.033535875 128.0 +4.1988168 -3.5267963 -0.040167909 128.0 +4.1542454 -3.5330615 -0.039749045 128.0 +3.4846148 -3.000684 -0.027811382 128.0 +3.4616148 -3.0180666 -0.027727608 128.0 +3.1019249 -2.7381999 -0.021374816 128.0 +2.9501097 -2.6365926 -0.018847661 128.0 +2.9220123 -2.6439118 -0.018624267 128.0 +2.9005728 -2.6570637 -0.018526532 128.0 +2.89448 -2.6843293 -0.018722001 128.0 +3.8774626 -3.6402597 -0.037864152 128.0 +3.1947396 -3.0364919 -0.025144605 128.0 +3.3828552 -3.2549939 -0.029151751 128.0 +2.9953492 -2.9178019 -0.021989152 128.0 +2.9261241 -2.8855808 -0.020983875 128.0 +2.857409 -2.8526218 -0.019978598 128.0 +2.8356316 -2.8658366 -0.019894825 128.0 +2.808208 -2.8731716 -0.019699354 128.0 +2.8183088 -2.9191196 -0.020257842 128.0 +3.9501383 -4.1417575 -0.043518834 128.0 +3.9369934 -4.1790166 -0.043770153 128.0 +4.0011983 -4.2997112 -0.045613162 128.0 +4.0234642 -4.3771815 -0.046618439 128.0 +3.2880442 -3.6215644 -0.031902298 128.0 +3.267096 -3.6431601 -0.031930223 128.0 +3.9203322 -4.4257998 -0.046157688 128.0 +3.9391937 -4.5024462 -0.04713504 128.0 +3.8716102 -4.4803839 -0.046283346 128.0 +3.8635211 -4.5268712 -0.04670221 128.0 +3.4070885 -4.0421071 -0.03741736 128.0 +3.3879805 -4.0698524 -0.037543021 128.0 +12.573801 -15.292579 -0.24005048 128.0 +12.411657 -15.28561 -0.23854257 128.0 +12.235689 -15.25929 -0.23671353 128.0 +12.107689 -15.290964 -0.2359456 128.0 +3.560261 -4.5538936 -0.044314679 128.0 +3.5463064 -4.5938568 -0.04463581 128.0 +3.5077469 -4.6020117 -0.044398453 128.0 +2.9965935 -3.981935 -0.033186819 128.0 +2.7424924 -3.6912572 -0.027811382 128.0 +2.9427717 -4.0119581 -0.033075124 128.0 +2.9310024 -4.0477552 -0.033382293 128.0 +2.9061105 -4.0656633 -0.033382293 128.0 +1.5251374 -2.1619177 -0.00054324296 128.0 +1.508986 -2.1671326 -0.00047343204 128.0 +1.5041571 -2.1887105 -0.00068286475 128.0 +1.4963129 -2.2061729 -0.00082248659 128.0 +1.4760723 -2.2053423 -0.00065494038 128.0 +1.454245 -2.2018437 -0.0004455077 128.0 +1.4461679 -2.2191017 -0.00058512948 128.0 +1.4211655 -2.2102733 -0.0002919237 128.0 +9.4393568 -14.876232 -0.20961294 128.0 +9.3229647 -14.894037 -0.2089567 128.0 +1.3902222 -2.2522225 -0.00055720512 128.0 +1.3706555 -2.2513165 -0.00040362115 128.0 +1.3578457 -2.2613986 -0.00043154552 128.0 +1.3617799 -2.2997983 -0.00092022185 128.0 +1.3612591 -2.331423 -0.0012972007 128.0 +1.5320542 -2.661201 -0.0064771697 128.0 +1.3409388 -2.3627343 -0.0015345578 128.0 +1.4514264 -2.5942912 -0.0051088762 128.0 +1.5093734 -2.7371044 -0.0072450894 128.0 +1.1749617 -2.1621258 0.0020397604 128.0 +7.6102057 -14.206475 -0.18864174 128.0 +1.1548753 -2.1887615 0.0018442898 128.0 +1.1248157 -2.1638701 0.0023469285 128.0 +7.2968197 -14.245364 -0.18709193 128.0 +1.4603028 -2.8952532 -0.008878665 128.0 +1.4438452 -2.9068453 -0.0089205513 128.0 +7.0918155 -14.496719 -0.1889489 128.0 +7.0022979 -14.53906 -0.18893494 128.0 +6.9189529 -14.5944 -0.18913041 128.0 +1.1103537 -2.3805208 -0.00027796152 128.0 +1.0961435 -2.3881977 -0.0002919237 128.0 +1.0843507 -2.4012573 -0.00038965896 128.0 +1.0691904 -2.4069517 -0.00037569678 128.0 +1.0499966 -2.4033885 -0.00022211281 128.0 +1.037204 -2.4143791 -0.0002919237 128.0 +1.3305939 -3.150177 -0.01134997 128.0 +1.3031859 -3.13889 -0.011056765 128.0 +1.2884357 -3.1579363 -0.011224311 128.0 +5.8680863 -14.634833 -0.18376894 128.0 +5.7679176 -14.644514 -0.183378 128.0 +5.6783128 -14.680562 -0.18339196 128.0 +1.2662839 -3.3353624 -0.013416373 128.0 +1.0746554 -2.8839784 -0.006574905 128.0 +5.4047251 -14.776021 -0.18329422 128.0 +5.264987 -14.672441 -0.18126971 128.0 +1.1827208 -3.3616612 -0.013360525 128.0 +5.0972576 -14.772809 -0.18181422 128.0 +5.0126042 -14.821803 -0.18207951 128.0 +4.9115 -14.821909 -0.18163273 128.0 +4.805335 -14.805164 -0.18094857 128.0 +1.1063043 -3.4821227 -0.014617121 128.0 +1.0142273 -3.26161 -0.011294122 128.0 +0.97701728 -3.211334 -0.010470353 128.0 +0.96414119 -3.2402685 -0.010805446 128.0 +0.96435744 -3.3152487 -0.011810723 128.0 +0.93442494 -3.2874415 -0.011322047 128.0 +0.89550459 -3.225673 -0.010344693 128.0 +0.85685486 -3.161623 -0.0093394164 128.0 +3.9698379 -15.006261 -0.1803482 128.0 +3.8564525 -14.948041 -0.17916141 128.0 +0.86045659 -3.4231653 -0.012885811 128.0 +0.83800876 -3.4225533 -0.012802037 128.0 +3.3867459 -14.203376 -0.16748904 128.0 +3.4100339 -14.700191 -0.17431654 128.0 +3.3774099 -14.976393 -0.17797463 128.0 +3.291445 -15.024183 -0.17836557 128.0 +0.65670508 -3.0896685 -0.0077058417 128.0 +1.7255254 -8.3670902 -0.082892179 128.0 +1.6776812 -8.3951702 -0.083143502 128.0 +1.6280376 -8.415123 -0.083283126 128.0 +0.54812491 -2.930892 -0.0052345353 128.0 +0.5288856 -2.9273126 -0.0051368005 128.0 +0.51091403 -2.9305027 -0.0051368005 128.0 +2.4953914 -14.841205 -0.1737441 128.0 +2.4098725 -14.890783 -0.17423277 128.0 +0.44351378 -2.8534529 -0.0039220904 128.0 +0.4227488 -2.8343637 -0.0036149225 128.0 +0.4059158 -2.8408637 -0.0036707714 128.0 +0.38983193 -2.8532076 -0.0038103932 128.0 +0.36752924 -2.8188605 -0.0032937925 128.0 +0.35355604 -2.8478539 -0.0036707714 128.0 +1.7933547 -15.193029 -0.17722067 128.0 +1.6830933 -15.05171 -0.17508446 128.0 +0.43658367 -4.1366158 -0.021681985 128.0 +1.4899479 -14.987651 -0.17391163 128.0 +1.4035274 -15.056246 -0.17474937 128.0 +1.2981091 -14.915154 -0.17265505 128.0 +1.2021334 -14.868023 -0.17188711 128.0 +1.0939724 -14.648772 -0.16871771 128.0 +1.0234867 -14.938517 -0.17268297 128.0 +0.93622625 -15.01537 -0.17367429 128.0 +0.83273846 -14.819171 -0.17085391 128.0 +0.2100966 -4.20434 -0.022380093 128.0 +0.10515164 -2.4034629 0.0028076803 128.0 +0.094817989 -2.520968 0.0011741052 128.0 +0.086965695 -2.7623584 -0.0021907801 128.0 +0.06998907 -2.7618403 -0.002176818 128.0 +0.052828647 -2.7512209 -0.002023234 128.0 +0.036263477 -2.7754889 -0.0023583265 128.0 +0.019317593 -2.7876577 -0.0025258726 128.0 +0.0022143589 -2.7897236 -0.0025537969 128.0 +-0.078268327 -14.980331 -0.17278069 128.0 +-0.17100038 -15.051558 -0.17378597 128.0 +-0.26471421 -15.128205 -0.17487502 128.0 +-0.36119232 -15.281239 -0.17703916 128.0 +-0.45625773 -15.322711 -0.17765351 128.0 +-0.092255756 -2.5590844 0.00064354239 128.0 +-0.10997211 -2.6064231 -2.6642283e-05 128.0 +-0.74568099 -15.466521 -0.17981763 128.0 +-0.84235805 -15.494603 -0.18027839 128.0 +-0.1556952 -2.5670285 0.00048995839 128.0 +-0.18361303 -2.7486019 -0.0020651205 128.0 +-0.20526771 -2.8132427 -0.0029866246 128.0 +-0.2209508 -2.7919943 -0.0027073808 128.0 +-0.23858711 -2.7965639 -0.002791154 128.0 +-0.2525582 -2.7601957 -0.0023024776 128.0 +-0.26978093 -2.7615798 -0.0023443643 128.0 +-0.2870301 -2.762856 -0.0023862508 128.0 +-0.30288449 -2.7511036 -0.002246629 128.0 +-0.32022074 -2.7531664 -0.0023024776 128.0 +-0.33747223 -2.7541273 -0.0023443643 128.0 +-0.355768 -2.7629137 -0.0024979482 128.0 +-2.1713486 -16.097631 -0.19041494 128.0 +-2.2703605 -16.085985 -0.19044286 128.0 +-2.3808281 -16.151878 -0.1915738 128.0 +-2.5025158 -16.284222 -0.19365416 128.0 +-2.6306539 -16.445297 -0.19615339 128.0 +-2.7633214 -16.620201 -0.19886205 128.0 +-2.864059 -16.596035 -0.19876432 128.0 +-2.9609065 -16.550591 -0.19837338 128.0 +-3.0685947 -16.565538 -0.19884808 128.0 +-3.1959548 -16.680939 -0.20076092 128.0 +-3.3137791 -16.739485 -0.20187788 128.0 +-3.4260361 -16.76586 -0.20254807 128.0 +-3.553792 -16.862911 -0.20423749 128.0 +-3.4660263 -15.960391 -0.19165757 128.0 +-3.5865812 -16.040308 -0.19310963 128.0 +-3.6291223 -15.77536 -0.18963306 128.0 +-3.7573767 -15.886105 -0.19154587 128.0 +-3.8446293 -15.820971 -0.19094549 128.0 +-4.2742047 -17.130089 -0.21012953 128.0 +-4.4422231 -17.349579 -0.21367593 128.0 +-4.5397067 -17.288147 -0.21318725 128.0 +-4.6534953 -17.288933 -0.21360612 128.0 +-4.7900553 -17.370907 -0.21521176 128.0 +-4.9136677 -17.401812 -0.21609138 128.0 +-5.0919695 -17.619169 -0.21969363 128.0 +-5.2402368 -17.723753 -0.22167626 128.0 +-5.4249907 -17.942989 -0.22534831 128.0 +-5.6149907 -18.168257 -0.22913206 128.0 +-5.4921217 -17.391642 -0.21826948 128.0 +-5.8381343 -18.099888 -0.22915998 128.0 +-5.9443917 -18.049479 -0.22895055 128.0 +-6.005012 -17.863861 -0.22675849 128.0 +-6.0953703 -17.770876 -0.22593471 128.0 +-6.1230693 -17.500963 -0.22250003 128.0 +-6.5569043 -18.378462 -0.23607126 128.0 +-6.6736503 -18.349159 -0.23623881 128.0 +-6.7982755 -18.340681 -0.23672749 128.0 +-7.2317896 -19.148922 -0.24941911 128.0 +-7.0318065 -18.279205 -0.23707654 128.0 +-7.133986 -18.210577 -0.23669957 128.0 +-7.4945054 -18.79059 -0.24608214 128.0 +-7.6499043 -18.843384 -0.2475761 128.0 +-7.785615 -18.84507 -0.24831609 128.0 +-8.0223694 -19.085463 -0.25268626 128.0 +-8.210474 -19.20229 -0.25521341 128.0 +-8.3269463 -19.148798 -0.25517154 128.0 +-8.409915 -19.019613 -0.25398475 128.0 +-8.5285091 -18.972212 -0.25405455 128.0 +-8.6829891 -19.003197 -0.25533909 128.0 +-8.8865967 -19.137289 -0.25822926 128.0 +-9.4032116 -19.928829 -0.27129784 128.0 +-9.3476791 -19.500172 -0.26555938 128.0 +-1.6637357 -3.4160125 -0.0166556 128.0 +-1.670481 -3.3770583 -0.016208809 128.0 +-1.6911708 -3.3667448 -0.016208809 128.0 +-1.7086174 -3.350069 -0.016111074 128.0 +-1.7410922 -3.3626099 -0.016474091 128.0 +-1.7658778 -3.3598297 -0.01659975 128.0 +-1.8005759 -3.3753996 -0.017018616 128.0 +-4.5445132 -8.3960629 -0.096910208 128.0 +-4.6031647 -8.3811665 -0.097119644 128.0 +-11.975682 -21.492325 -0.30715272 128.0 +-12.16736 -21.524635 -0.3088561 128.0 +-12.367343 -21.568411 -0.31076893 128.0 +-12.72264 -21.875896 -0.31696814 128.0 +-12.905395 -21.8801 -0.3183085 128.0 +-13.054289 -21.825388 -0.3187134 128.0 +-14.650661 -24.156725 -0.35810071 128.0 +-12.95033 -21.060501 -0.30882818 128.0 +-15.627822 -25.06888 -0.37609798 128.0 +-13.861602 -21.934608 -0.3259179 128.0 +-0 -0 -0 128.0 +-17.168503 -26.443382 -0.40384081 128.0 +-14.009623 -21.290672 -0.31948134 128.0 +-17.655912 -26.476952 -0.40797362 128.0 +-17.812441 -26.359835 -0.40783399 128.0 +-17.855782 -26.07761 -0.4049159 128.0 +-18.661783 -26.899204 -0.42074901 128.0 +-18.861557 -26.834091 -0.42160073 128.0 +-18.939434 -26.596493 -0.41952035 128.0 +-19.211077 -26.630615 -0.42211732 128.0 +-19.449039 -26.614767 -0.4238905 128.0 +-19.672657 -26.576904 -0.42531466 128.0 +-19.721996 -26.304491 -0.42267582 128.0 +-19.845535 -26.133612 -0.42181015 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-20.349216 -25.796865 -0.42239657 128.0 +-20.553925 -25.730112 -0.42344373 128.0 +-20.767382 -25.672701 -0.42468634 128.0 +-20.72303 -25.298809 -0.42024639 128.0 +-20.199953 -24.353834 -0.40541855 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-20.560644 -23.880144 -0.40361744 128.0 +-0 -0 -0 128.0 +-24.229856 -27.453175 -0.47489434 128.0 +-22.685625 -25.387766 -0.43901154 128.0 +-0 -0 -0 128.0 +-23.996311 -26.200262 -0.45970351 128.0 +-24.162739 -26.05913 -0.45982915 128.0 +-0 -0 -0 128.0 +-24.474506 -25.754129 -0.45970351 128.0 +-23.594307 -24.524759 -0.43880212 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-30.393509 -30.078613 -0.56069195 128.0 +-30.488119 -29.804184 -0.55894667 128.0 +-30.697754 -29.642946 -0.55947727 128.0 +-0 -0 -0 128.0 +-31.739653 -29.905134 -0.57253188 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-30.871597 -28.032637 -0.54587811 128.0 +-0 -0 -0 128.0 +-31.241716 -27.67688 -0.54640865 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-10.286439 -8.5638275 -0.15049706 128.0 +-10.315622 -8.4814978 -0.15007819 128.0 +-10.344183 -8.3991337 -0.14965934 128.0 +-10.444669 -8.3749132 -0.15053895 128.0 +-34.15469 -27.044994 -0.57193148 128.0 +-18.819786 -14.715022 -0.29718372 128.0 +-35.389427 -27.322887 -0.58790427 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-35.813892 -26.273451 -0.58382732 128.0 +-35.763062 -25.900131 -0.58018315 128.0 +-36.008347 -25.742428 -0.58167714 128.0 +-36.119053 -25.488138 -0.5808813 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-35.956543 -24.394581 -0.57032585 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-38.406502 -24.041409 -0.59629554 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-43.010307 -25.475986 -0.66162455 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-16.309479 -8.7368221 -0.22195549 128.0 +-16.35482 -8.6323833 -0.22182985 128.0 +-16.375544 -8.5152626 -0.2213272 128.0 +-16.447063 -8.4246531 -0.22163437 128.0 +-16.564507 -8.3569069 -0.22266757 128.0 +-6.9471698 -3.4513202 -0.071917906 128.0 +-6.9727068 -3.4108253 -0.071987718 128.0 +-6.9953055 -3.368845 -0.072015643 128.0 +-7.0257831 -3.3305712 -0.072169229 128.0 +-6.9953446 -3.2637217 -0.071387343 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-36.240147 -15.57471 -0.51439339 128.0 +-0 -0 -0 128.0 +-51.91539 -21.560703 -0.7485531 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-39.822113 -15.685162 -0.5612365 128.0 +-22.210083 -8.5908871 -0.29612261 128.0 +-22.403526 -8.5080528 -0.29823089 128.0 +-22.382229 -8.3431845 -0.29714185 128.0 +-22.531601 -8.2417612 -0.29860786 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-46.205154 -15.627079 -0.64468843 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-49.58609 -15.425236 -0.68872517 128.0 +-28.307062 -8.6154394 -0.37676814 128.0 +-28.361309 -8.4421587 -0.37679607 128.0 +-28.441378 -8.2763605 -0.37721494 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-12.790716 -3.3836639 -0.14834689 128.0 +-12.808332 -3.3043685 -0.148305 128.0 +-34.385952 -8.6471071 -0.45869824 128.0 +-34.335419 -8.410738 -0.45721823 128.0 +-34.488503 -8.2242556 -0.45868427 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-40.241013 -8.5581264 -0.53807324 128.0 +-40.270245 -8.3064051 -0.53775209 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-18.685234 -3.3781159 -0.22874112 128.0 +-18.663256 -3.2560115 -0.22814074 128.0 +-0 -0 -0 128.0 +-52.4828 -8.4946632 -0.70598239 128.0 +-27.100389 -4.215692 -0.34656796 128.0 +-26.97345 -4.0265908 -0.34441778 128.0 +-24.15387 -3.4542692 -0.30430445 128.0 +-24.173618 -3.3058634 -0.30429047 128.0 +-24.185516 -3.1564393 -0.30417877 128.0 +-27.664465 -3.4380307 -0.35286489 128.0 +-27.835976 -3.2860403 -0.35498714 128.0 +-27.718483 -3.0998423 -0.35306036 128.0 +-29.768478 -3.1443121 -0.38158512 128.0 +-27.775331 -2.7615383 -0.35335359 128.0 +-25.862312 -2.4111478 -0.32629487 128.0 +-25.914473 -2.2557096 -0.32682544 128.0 +-27.721792 -2.2417564 -0.35195735 128.0 +-29.910749 -2.2341599 -0.38242283 128.0 +-29.923895 -2.0505888 -0.38242283 128.0 +-50.764397 -3.1661811 -0.67382753 128.0 +-56.846699 -3.195549 -0.75863379 128.0 +-62.719334 -3.1397827 -0.84048009 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-64.695351 13.28217 -1.7159134 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-60.622372 13.613406 -1.6120911 128.0 +-60.634125 14.0074 -1.6147171 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-60.520927 15.555174 -1.6215343 128.0 +-60.426277 15.92674 -1.6215874 128.0 +-53.578827 14.47397 -1.4360918 128.0 +-0 0 -0 128.0 +-49.878994 14.1334 -1.3390601 128.0 +-0 0 -0 128.0 +-46.882305 13.907934 -1.2610209 128.0 +-64.157372 19.462238 -1.7424393 128.0 +-47.145401 14.617804 -1.2731698 128.0 +-43.54982 13.796344 -1.1756076 128.0 +-43.480515 14.068533 -1.1760584 128.0 +-43.432289 14.347917 -1.177146 128.0 +-41.363693 13.946574 -1.1217068 128.0 +-57.884743 19.913843 -1.5877403 128.0 +-41.109257 14.424984 -1.1194522 128.0 +-0 0 -0 128.0 +-61.903477 22.579121 -1.7118815 128.0 +-61.061954 22.697639 -1.6920136 128.0 +-0 0 -0 128.0 +-51.601479 19.904934 -1.4309988 128.0 +-58.628738 23.030083 -1.6348503 128.0 +-33.809036 13.520113 -0.92960638 128.0 +-56.775127 23.110107 -1.5899684 128.0 +-35.007427 14.500186 -0.96886468 128.0 +-32.930805 13.877306 -0.91164833 128.0 +-45.879795 19.666986 -1.2879711 128.0 +-54.65691 23.827709 -1.5455642 128.0 +-54.361629 24.097 -1.5412669 128.0 +-31.026426 13.981014 -0.8664217 128.0 +-32.985851 15.108223 -0.92613149 128.0 +-52.726192 24.542995 -1.5066507 128.0 +-29.123678 13.773965 -0.81827718 128.0 +-52.145329 25.055693 -1.4985337 128.0 +-31.111189 15.183991 -0.88201892 128.0 +-39.901302 19.778492 -1.1451292 128.0 +-50.765438 25.553259 -1.4715039 128.0 +-27.19828 13.899727 -0.77389938 128.0 +-27.132002 14.07648 -0.77448297 128.0 +-28.962662 15.252617 -0.83199108 128.0 +-49.804783 26.621288 -1.461928 128.0 +-49.33823 26.762417 -1.4528031 128.0 +-24.909523 13.709434 -0.71787673 128.0 +-24.591904 13.731882 -0.71079427 128.0 +-24.434122 13.841126 -0.70856613 128.0 +-24.320133 13.974355 -0.70769078 128.0 +-24.187292 14.096134 -0.70625836 128.0 +-24.101206 14.244788 -0.70628488 128.0 +-24.044214 14.410904 -0.70723981 128.0 +-24.036491 14.607489 -0.70975977 128.0 +-23.997471 14.786164 -0.71135134 128.0 +-22.563362 14.094189 -0.66933429 128.0 +-22.321905 14.134496 -0.66448009 128.0 +-22.192696 14.244195 -0.66315377 128.0 +-22.130014 14.396453 -0.66394955 128.0 +-22.010384 14.511608 -0.6629681 128.0 +-21.959993 14.672492 -0.66421485 128.0 +-21.891899 14.822093 -0.664931 128.0 +-21.885443 15.014392 -0.66766322 128.0 +-20.677435 14.372953 -0.63161451 128.0 +-20.549625 14.471927 -0.63034123 128.0 +-20.466137 14.60181 -0.63052696 128.0 +-20.402081 14.745852 -0.63137579 128.0 +-35.695366 26.135281 -1.1373307 128.0 +-35.455647 26.29545 -1.1347311 128.0 +-35.270454 26.495096 -1.1339619 128.0 +-35.048351 26.66622 -1.1319989 128.0 +-34.89278 26.887482 -1.1322907 128.0 +-34.746845 27.116449 -1.1329539 128.0 +-34.664509 27.396086 -1.1358187 128.0 +-34.502003 27.613264 -1.1360309 128.0 +-34.423557 27.898718 -1.139161 128.0 +-34.311226 28.158245 -1.1412034 128.0 +-34.42688 28.608477 -1.1511772 128.0 +-34.321831 28.879034 -1.1536441 128.0 +-34.631737 29.504648 -1.1706471 128.0 +-37.296097 32.171715 -1.2703846 128.0 +-36.788548 32.129684 -1.2594824 128.0 +-36.386272 32.17403 -1.2522408 128.0 +-21.907738 19.611818 -0.74363333 128.0 +-21.747734 19.710293 -0.74222749 128.0 +-21.661739 19.875805 -0.74350071 128.0 +-34.492275 32.0415 -1.2126377 128.0 +-34.078022 32.04845 -1.2047329 128.0 +-33.639652 32.027405 -1.1958998 128.0 +-33.379887 32.172855 -1.1935921 128.0 +-33.065228 32.263268 -1.1892684 128.0 +-14.596773 14.417728 -0.50781816 128.0 +-14.48612 14.485107 -0.50699586 128.0 +-14.419449 14.596478 -0.50784469 128.0 +-14.329615 14.68468 -0.50784469 128.0 +-30.953527 32.11433 -1.1469595 128.0 +-30.668356 32.211704 -1.1435908 128.0 +-28.751217 30.571434 -1.0770108 128.0 +-29.755058 32.030457 -1.1234841 128.0 +-29.406574 32.047436 -1.1175424 128.0 +-29.099287 32.105793 -1.1131921 128.0 +-28.846403 32.22192 -1.1109904 128.0 +-28.319054 32.026112 -1.097807 128.0 +-28.024693 32.087837 -1.0938812 128.0 +-27.843601 32.278114 -1.0945444 128.0 +-27.539354 32.324318 -1.0902207 128.0 +-29.042788 34.515881 -1.1603817 128.0 +-28.823429 34.684975 -1.1600899 128.0 +-28.598015 34.846497 -1.1595858 128.0 +-15.899518 19.616882 -0.63344479 128.0 +-15.752617 19.681292 -0.63233072 128.0 +-24.18696 30.603188 -0.99846762 128.0 +-25.042994 32.089184 -1.0435085 128.0 +-24.643057 31.979349 -1.0347019 128.0 +-24.404608 32.075062 -1.0328717 128.0 +-24.167112 32.17065 -1.0310944 128.0 +-23.907928 32.235626 -1.0283623 128.0 +-23.678978 32.339775 -1.0269829 128.0 +-23.473658 32.475548 -1.0266912 128.0 +-23.237951 32.568512 -1.0250466 128.0 +-22.978968 32.627121 -1.0223409 128.0 +-22.482788 32.342316 -1.0086005 128.0 +-22.135752 32.263687 -1.0016507 128.0 +-21.814631 32.217621 -0.99584156 128.0 +-21.525457 32.214554 -0.99149132 128.0 +-21.288321 32.28677 -0.98960793 128.0 +-20.168022 30.999825 -0.94475269 128.0 +-20.538454 31.997068 -0.97231305 128.0 +-20.327297 32.099686 -0.9715969 128.0 +-20.028801 32.061871 -0.96653044 128.0 +-19.811769 32.151821 -0.96552247 128.0 +-19.593349 32.238609 -0.96446139 128.0 +-8.732193 14.567242 -0.41407564 128.0 +-8.5719452 14.500927 -0.41038856 128.0 +-18.896961 32.422787 -0.95920926 128.0 +-18.597061 32.363041 -0.95385104 128.0 +-18.376949 32.43914 -0.95271045 128.0 +-18.174149 32.545181 -0.95252478 128.0 +-18.004478 32.711254 -0.95419586 128.0 +-12.600727 23.229078 -0.66463923 128.0 +-12.404241 23.205452 -0.66161531 128.0 +-12.222495 23.206829 -0.65938711 128.0 +-12.059614 23.242346 -0.65821999 128.0 +-11.898579 23.280298 -0.65715891 128.0 +-9.9272137 19.72047 -0.54925162 128.0 +-9.7931499 19.755037 -0.54848236 128.0 +-9.7024422 19.877642 -0.55033916 128.0 +-14.90826 31.025913 -0.87679332 128.0 +-16.040792 33.9146 -0.9589175 128.0 +-15.860657 34.073105 -0.96069473 128.0 +-15.637553 34.139793 -0.95981938 128.0 +-15.426138 34.231453 -0.95971328 128.0 +-15.213782 34.320892 -0.95958066 128.0 +-14.995317 34.396187 -0.95907664 128.0 +-14.778864 34.475605 -0.95873183 128.0 +-14.562388 34.554581 -0.95841348 128.0 +-14.340528 34.620193 -0.95775038 128.0 +-14.133486 34.721424 -0.95814824 128.0 +-13.920916 34.809349 -0.95820129 128.0 +-13.765907 35.043911 -0.96247196 128.0 +-13.215697 34.259399 -0.93777639 128.0 +-13.028248 34.400612 -0.93950051 128.0 +-13.216396 35.554661 -0.96992576 128.0 +-13.018539 35.691437 -0.97151726 128.0 +-12.785152 35.731113 -0.97040319 128.0 +-12.559712 35.791908 -0.96992576 128.0 +-10.871369 31.599407 -0.85013479 128.0 +-10.65428 31.597317 -0.84822494 128.0 +-10.453931 31.64311 -0.8476944 128.0 +-11.63201 35.948597 -0.9659999 128.0 +-11.429327 36.076469 -0.96759146 128.0 +-11.198574 36.116322 -0.96676916 128.0 +-10.771323 35.507076 -0.94798881 128.0 +-0 0 -0 128.0 +-8.723959 30.081451 -0.79451001 128.0 +-8.4907122 29.963215 -0.78978842 128.0 +-8.2915058 29.959833 -0.78827643 128.0 +-8.1093445 30.016901 -0.7884621 128.0 +-7.9331636 30.097025 -0.78931093 128.0 +-3.7042887 14.409198 -0.35818559 128.0 +-3.63305 14.500504 -0.36006895 128.0 +-3.5387959 14.501157 -0.35948536 128.0 +-3.4686902 14.602351 -0.36166048 128.0 +-7.0615559 30.565815 -0.79583633 128.0 +-6.8638005 30.563702 -0.7946161 128.0 +-6.6750708 30.600359 -0.79448348 128.0 +-6.4820094 30.616291 -0.79382032 128.0 +-4.0444984 19.69693 -0.49696907 128.0 +-3.9153743 19.680197 -0.49585497 128.0 +-3.7930331 19.695999 -0.49564278 128.0 +-3.69754 19.855505 -0.49932986 128.0 +-5.4345427 30.215317 -0.77803743 128.0 +-5.2428913 30.212635 -0.7770825 128.0 +-4.6616459 27.876936 -0.71339381 128.0 +-4.4906669 27.906002 -0.71342033 128.0 +-4.6680183 30.188437 -0.77397895 128.0 +-4.4794717 30.194756 -0.77339542 128.0 +-4.28793 30.178125 -0.77222824 128.0 +-4.0982409 30.171179 -0.77135289 128.0 +-3.9072573 30.151146 -0.77015924 128.0 +-3.7177753 30.138836 -0.76920432 128.0 +-3.531498 30.15016 -0.76891249 128.0 +-3.3506198 30.209015 -0.76992053 128.0 +-3.1701927 30.276728 -0.77119374 128.0 +-2.9896483 30.349331 -0.77262616 128.0 +-2.8083324 30.420856 -0.77405852 128.0 +-2.6319959 30.558027 -0.77726817 128.0 +-2.4485867 30.625418 -0.77864754 128.0 +-2.2664344 30.718624 -0.78074306 128.0 +-2.0817475 30.788803 -0.78225505 128.0 +-1.6808945 27.350714 -0.69052851 128.0 +-1.714244 31.001675 -0.78729498 128.0 +-1.5328141 31.19133 -0.79206961 128.0 +-1.3478341 31.349957 -0.79604852 128.0 +-1.1587218 31.446545 -0.79840934 128.0 +-0.96801507 31.527002 -0.80037224 128.0 +-0.77849704 31.693243 -0.80464292 128.0 +-0.58554173 31.78038 -0.80684453 128.0 +-0.39237902 31.934311 -0.81084996 128.0 +-0.19683588 32.003094 -0.8126272 128.0 +-0.00046133818 32.166641 -0.81695092 128.0 +0.19717415 32.209023 -0.81809151 128.0 +0.39636198 32.334152 -0.82146031 128.0 +0.59639269 32.420063 -0.82382113 128.0 +0.79940784 32.582684 -0.82825094 128.0 +1.0027225 32.688076 -0.83119529 128.0 +1.2062192 32.761227 -0.8333174 128.0 +1.4106941 32.834103 -0.83546597 128.0 +1.6185132 32.954628 -0.83891433 128.0 +1.6926854 30.629429 -0.77740079 128.0 +1.7255114 28.095118 -0.71031684 128.0 +2.2733841 33.63736 -0.85801297 128.0 +2.4951839 33.832134 -0.86358345 128.0 +2.7169094 33.993557 -0.86830503 128.0 +2.9516044 34.280014 -0.87639546 128.0 +3.1750286 34.403603 -0.88018864 128.0 +3.3948858 34.473011 -0.88257599 128.0 +2.0792034 19.86743 -0.49346766 128.0 +2.2020602 19.863239 -0.49370638 128.0 +2.3225017 19.83744 -0.49338809 128.0 +4.2190671 34.210651 -0.8780666 128.0 +4.411171 34.04731 -0.87440598 128.0 +4.5992765 33.867058 -0.87032104 128.0 +4.791244 33.727352 -0.8673501 128.0 +4.9703746 33.510433 -0.8623367 128.0 +5.1797161 33.504002 -0.86299986 128.0 +4.7573647 29.570173 -0.75814301 128.0 +4.9362416 29.525637 -0.75774515 128.0 +6.1814823 35.626949 -0.92289531 128.0 +6.4247437 35.726089 -0.92660898 128.0 +6.6663427 35.806877 -0.92987162 128.0 +6.896131 35.818306 -0.93130404 128.0 +7.1621985 36.008659 -0.93761718 128.0 +2.994375 14.589606 -0.35861 128.0 +3.0600269 14.458492 -0.35555953 128.0 +3.1578465 14.481441 -0.35670015 128.0 +3.2477386 14.466669 -0.35683277 128.0 +8.7363911 37.819347 -0.99337465 128.0 +7.4118176 31.2117 -0.81464314 128.0 +9.2569427 37.94334 -0.99976736 128.0 +9.5082893 37.960491 -1.0018098 128.0 +3.4637578 13.480166 -0.33272073 128.0 +3.5288243 13.391961 -0.33089045 128.0 +3.6484737 13.509024 -0.33471018 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +9.9626637 34.356022 -0.91260326 128.0 +12.722 42.884987 -1.1503814 128.0 +15.525048 51.179214 -1.3825625 128.0 +15.84974 51.118317 -1.383544 128.0 +4.5430851 14.343377 -0.36264196 128.0 +4.6387029 14.339008 -0.36330509 128.0 +4.7328696 14.32926 -0.3638356 128.0 +4.831244 14.331209 -0.36471096 128.0 +4.9363241 14.351395 -0.36611685 128.0 +5.0196557 14.30763 -0.36574548 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +7.9572086 19.899462 -0.53208935 128.0 +8.0539074 19.788229 -0.53031212 128.0 +8.1977463 19.792927 -0.53187716 128.0 +8.2941923 19.683298 -0.5301795 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +24.640669 55.588055 -1.5768647 128.0 +24.978413 55.429436 -1.576679 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +25.159445 51.548622 -1.4854831 128.0 +25.473936 51.390591 -1.4854034 128.0 +17.776485 35.316479 -1.0125529 128.0 +17.45647 34.15728 -0.98127884 128.0 +17.127985 33.013142 -0.95029658 128.0 +17.229141 32.715492 -0.94454044 128.0 +17.32588 32.415207 -0.93870479 128.0 +17.147419 31.613243 -0.91772276 128.0 +17.333359 31.493422 -0.91729838 128.0 +17.487282 31.31665 -0.91517627 128.0 +17.617514 31.10004 -0.91186059 128.0 +17.58288 30.599594 -0.89987087 128.0 +17.742117 30.442766 -0.89838541 128.0 +17.862448 30.221457 -0.89493704 128.0 +18.029045 30.08042 -0.89398211 128.0 +18.188354 29.928225 -0.89270884 128.0 +18.364832 29.804996 -0.89236403 128.0 +18.525122 29.656143 -0.89124995 128.0 +18.713692 29.552896 -0.89159477 128.0 +18.795853 29.283566 -0.88674057 128.0 +18.902128 29.055405 -0.88318604 128.0 +19.074551 28.930531 -0.8829208 128.0 +19.258371 28.822922 -0.88323915 128.0 +19.424774 28.689312 -0.88276166 128.0 +13.779795 20.086023 -0.60975718 128.0 +13.893081 19.987141 -0.60930622 128.0 +14.01776 19.904787 -0.60941231 128.0 +14.136146 19.813519 -0.60925317 128.0 +20.592575 28.490711 -0.89621025 128.0 +20.799486 28.408182 -0.8976692 128.0 +21.029976 28.3563 -0.90018916 128.0 +21.263613 28.306652 -0.90284175 128.0 +21.536171 28.306118 -0.90719199 128.0 +21.821114 28.318344 -0.91204625 128.0 +22.334574 28.619715 -0.92671508 128.0 +22.607697 28.606047 -0.93090618 128.0 +22.910851 28.626781 -0.93634397 128.0 +23.204403 28.631666 -0.94133085 128.0 +23.545803 28.691202 -0.94828063 128.0 +23.965471 28.839876 -0.95841348 128.0 +24.436758 29.042601 -0.97056234 128.0 +24.589216 28.862436 -0.96952784 128.0 +24.809597 28.76173 -0.97130507 128.0 +24.972458 28.593903 -0.97077459 128.0 +31.291981 35.388794 -1.2169083 128.0 +31.417185 35.094086 -1.2132742 128.0 +31.629913 34.898434 -1.2131947 128.0 +31.830608 34.689705 -1.2126907 128.0 +32.097973 34.553066 -1.2148393 128.0 +13.601102 14.463413 -0.49023148 128.0 +13.696485 14.386926 -0.49049675 128.0 +32.670269 33.895935 -1.2126111 128.0 +19.443209 19.927166 -0.70217335 128.0 +19.556684 19.798956 -0.70185506 128.0 +19.676386 19.677172 -0.70180202 128.0 +19.786085 19.545532 -0.70140415 128.0 +33.690353 32.873642 -1.2124519 128.0 +33.884949 32.660057 -1.2122133 128.0 +34.082539 32.449463 -1.2121336 128.0 +15.240884 14.334245 -0.51858765 128.0 +15.276548 14.192154 -0.51670432 128.0 +15.341982 14.078552 -0.51593506 128.0 +15.427337 13.983479 -0.51590854 128.0 +15.573177 13.942563 -0.51805717 128.0 +15.700372 13.883826 -0.51954257 128.0 +15.910253 13.896384 -0.52394593 128.0 +18.11924 15.63061 -0.59837759 128.0 +18.102947 15.423843 -0.59447825 128.0 +17.830088 15.003553 -0.5817458 128.0 +17.919506 14.891951 -0.58166623 128.0 +18.304962 15.023331 -0.59177262 128.0 +18.114107 14.681629 -0.5821172 128.0 +18.207752 14.57333 -0.58224982 128.0 +18.344671 14.499144 -0.58386791 128.0 +20.199385 15.764521 -0.64331239 128.0 +18.400066 14.179582 -0.57980943 128.0 +25.694588 19.550257 -0.82013404 128.0 +18.46958 13.875267 -0.57638758 128.0 +18.523857 13.739051 -0.57537961 128.0 +18.600552 13.619817 -0.57514089 128.0 +21.679834 15.670882 -0.67323363 128.0 +21.84882 15.589816 -0.67562097 128.0 +22.111614 15.573456 -0.68105876 128.0 +20.98126 14.58564 -0.64145559 128.0 +44.937477 30.830542 -1.4094863 128.0 +21.305183 14.426268 -0.64615071 128.0 +21.478912 14.352472 -0.64888287 128.0 +21.495634 14.173638 -0.64662814 128.0 +21.586388 14.044203 -0.64676076 128.0 +21.784044 13.983302 -0.6502887 128.0 +21.855921 13.840817 -0.64986432 128.0 +0 0 -0 128.0 +31.901608 19.6576 -0.95772386 128.0 +20.038797 12.179303 -0.58564514 128.0 +20.042841 12.013978 -0.58346999 128.0 +20.028402 11.838891 -0.58076435 128.0 +19.997889 11.655878 -0.57760781 128.0 +19.985823 11.485143 -0.57506132 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +19.989786 11.003018 -0.56888074 128.0 +19.985746 10.841551 -0.56673217 128.0 +20.028971 10.706466 -0.56604248 128.0 +20.048294 10.559147 -0.56466317 128.0 +20.055029 10.406011 -0.56293899 128.0 +20.116722 10.28185 -0.56288594 128.0 +20.207111 10.172155 -0.56370819 128.0 +0 0 -0 128.0 +20.749058 10.12773 -0.5760693 128.0 +21.016247 10.098932 -0.5821172 128.0 +21.400431 10.122366 -0.59158695 128.0 +21.729492 10.115305 -0.59941208 128.0 +22.358276 10.241533 -0.61596423 128.0 +22.274874 10.038444 -0.61172009 128.0 +22.518827 9.9825945 -0.61702526 128.0 +22.75285 9.9197321 -0.62203866 128.0 +24.894367 10.671969 -0.68211979 128.0 +24.956617 10.517855 -0.68204021 128.0 +0 0 -0 128.0 +26.320801 10.714285 -0.71747881 128.0 +26.555904 10.620504 -0.72233307 128.0 +26.956463 10.589293 -0.73190892 128.0 +26.571383 10.250294 -0.71912342 128.0 +0 0 -0 128.0 +59.368942 22.067822 -1.6440814 128.0 +33.866692 12.353024 -0.91997749 128.0 +33.908909 12.133203 -0.91904908 128.0 +33.921406 11.9034 -0.9173249 128.0 +33.888882 11.658944 -0.91438049 128.0 +33.887787 11.426514 -0.91236454 128.0 +33.895565 11.197987 -0.91064036 128.0 +33.861866 10.95687 -0.9078021 128.0 +33.883671 10.734703 -0.90655535 128.0 +33.922165 10.518307 -0.90581268 128.0 +33.974586 10.306484 -0.90549433 128.0 +34.043896 10.099815 -0.90568 128.0 +34.738888 10.074481 -0.92318714 128.0 +35.561787 10.076961 -0.94419563 128.0 +38.991146 10.790594 -1.0369302 128.0 +39.071098 10.555057 -1.037328 128.0 +39.151558 10.319452 -1.037779 128.0 +39.215111 10.079278 -1.0378056 128.0 +0 0 -0 128.0 +54.281136 13.243236 -1.4460125 128.0 +55.39817 13.156122 -1.4742891 128.0 +56.475227 13.046341 -1.5014516 128.0 +58.217209 13.072969 -1.5466782 128.0 +0 0 -0 128.0 +54.582611 11.555172 -1.4438639 128.0 +54.626045 11.214615 -1.4431477 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +54.787834 10.200642 -1.4421928 128.0 +0 0 -0 128.0 +58.494049 10.149547 -1.538747 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.308853 0.74468386 -0.42312098 128.0 +17.154259 0.63261795 -0.41890335 128.0 +17.169807 0.52771717 -0.41922167 128.0 +17.318628 0.42593384 -0.42309445 128.0 +17.31192 0.31949532 -0.42285573 128.0 +17.272572 0.21276329 -0.42176816 128.0 +17.266556 0.106734 -0.42158249 128.0 +17.274881 0.00078622595 -0.42179468 128.0 +17.285557 -0.10527819 -0.42208648 128.0 +17.275591 -0.21122779 -0.42184773 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.148874 -0.52549684 -0.41866463 128.0 +0 -0 -0 128.0 +17.150122 -0.73628682 -0.41890335 128.0 +17.055422 -0.83708763 -0.41651604 128.0 +17.024014 -0.94028687 -0.41582635 128.0 +0 -0 -0 128.0 +17.306414 -1.1690897 -0.42367804 128.0 +17.327827 -1.2773911 -0.42444727 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.403906 -1.6055888 -0.42717946 128.0 +0 -0 -0 128.0 +27.473154 -2.8756194 -0.69639075 128.0 +27.435122 -3.0419333 -0.69586021 128.0 +27.417925 -3.2104473 -0.69591326 128.0 +27.400686 -3.3789873 -0.69599283 128.0 +27.394308 -3.5489783 -0.69639075 128.0 +25.40082 -3.4492354 -0.64360422 128.0 +27.39323 -3.8912096 -0.69758439 128.0 +27.369827 -4.0593648 -0.69761091 128.0 +27.363174 -4.2301292 -0.69811493 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +19.37171 -3.3605654 -0.48511198 128.0 +19.297598 -3.4698088 -0.48367959 128.0 +15.277112 -2.8435369 -0.37574574 128.0 +15.136675 -2.913594 -0.37243 128.0 +15.127337 -3.0081713 -0.37266874 128.0 +14.943105 -3.066956 -0.36818585 128.0 +14.919116 -3.1575522 -0.36805323 128.0 +13.37291 -2.9160271 -0.32659325 128.0 +13.286491 -2.9826937 -0.32473645 128.0 +13.222162 -3.0535858 -0.32348973 128.0 +13.05048 -3.0983913 -0.31932515 128.0 +13.072011 -3.1883616 -0.32043925 128.0 +11.099257 -2.7792773 -0.26701611 128.0 +11.002604 -2.8269222 -0.26484099 128.0 +13.177369 -3.4722595 -0.32500172 128.0 +13.030359 -3.5191548 -0.32155335 128.0 +13.021046 -3.6025076 -0.32189816 128.0 +13.029473 -3.691057 -0.32274699 128.0 +7.9392433 -2.3013146 -0.18274334 128.0 +7.9335985 -2.3525445 -0.18298207 128.0 +7.9209275 -2.4017603 -0.18303512 128.0 +7.8735781 -2.4402506 -0.18213324 128.0 +7.9070582 -2.5039141 -0.18348606 128.0 +7.9324427 -2.5656176 -0.18462668 128.0 +7.922246 -2.6161234 -0.18478583 128.0 +25.496387 -8.5961332 -0.67737168 128.0 +25.411024 -8.7413568 -0.6764698 128.0 +37.167397 -13.041692 -1.0086005 128.0 +37.185501 -13.304865 -1.0113857 128.0 +10.908256 -3.9777362 -0.27149898 128.0 +7.2246528 -2.6844172 -0.16791536 128.0 +7.2117848 -2.7301126 -0.16802147 128.0 +7.1855707 -2.7707138 -0.16775621 128.0 +7.095861 -2.7862422 -0.16568719 128.0 +7.1436033 -2.8557136 -0.16754401 128.0 +7.1389089 -2.9047687 -0.16791536 128.0 +32.548946 -13.481788 -0.89825279 128.0 +0 -0 -0 128.0 +9.1000395 -3.8998389 -0.22611317 128.0 +19.574535 -8.5327148 -0.53002036 128.0 +9.0103722 -3.9929864 -0.22491951 128.0 +5.6382174 -2.5396287 -0.12748991 128.0 +5.5943546 -2.5612712 -0.1266676 128.0 +27.773024 -12.927183 -0.77628672 128.0 +28.342915 -13.404671 -0.79535884 128.0 +5.3174024 -2.5538387 -0.11993003 128.0 +27.648056 -13.493645 -0.77976161 128.0 +27.543243 -13.652381 -0.77912498 128.0 +5.3203888 -2.6769021 -0.12144201 128.0 +5.2940722 -2.7044926 -0.12115022 128.0 +26.182571 -13.583856 -0.74610025 128.0 +5.3648534 -2.8242235 -0.12428027 128.0 +24.772612 -13.240613 -0.7087518 128.0 +4.4651585 -2.4208217 -0.098178796 128.0 +4.4327054 -2.4385331 -0.097648278 128.0 +4.4089317 -2.4608119 -0.097383015 128.0 +4.3954892 -2.4888036 -0.09743607 128.0 +3.725754 -2.1396832 -0.077409022 128.0 +3.7237825 -2.1690478 -0.077753857 128.0 +3.7043796 -2.1882949 -0.077568173 128.0 +3.6968846 -2.214581 -0.077753857 128.0 +4.5468693 -2.762126 -0.10457154 128.0 +4.54175 -2.7973149 -0.1049429 128.0 +13.67407 -8.5409584 -0.39121035 128.0 +3.5122073 -2.2228115 -0.073695391 128.0 +3.5069146 -2.2497201 -0.073960654 128.0 +4.1256728 -2.682785 -0.093987703 128.0 +3.462352 -2.2815802 -0.073430136 128.0 +4.0184665 -2.6837814 -0.091626897 128.0 +3.4696856 -2.3479974 -0.074570753 128.0 +3.4527404 -2.3675463 -0.074491173 128.0 +3.4578476 -2.4023817 -0.075127795 128.0 +3.4324172 -2.4160702 -0.074782953 128.0 +4.9180593 -3.5077624 -0.1236967 128.0 +4.8980637 -3.5390444 -0.12374976 128.0 +4.8819022 -3.5731657 -0.12393544 128.0 +4.8004704 -3.5589857 -0.12197252 128.0 +3.3167274 -2.490201 -0.07345666 128.0 +4.7572303 -3.6182323 -0.12199905 128.0 +3.2867107 -2.5313249 -0.073483184 128.0 +4.8306789 -3.7685931 -0.12597793 128.0 +4.5847325 -3.6221235 -0.11844458 128.0 +4.7653379 -3.8125975 -0.12534131 128.0 +4.6354604 -3.7555327 -0.12170726 128.0 +4.4971938 -3.6894109 -0.11775491 128.0 +4.2807288 -3.5559289 -0.11107038 128.0 +3.8243754 -3.2165508 -0.096003674 128.0 +3.7984796 -3.2347698 -0.095791467 128.0 +3.1412265 -2.7082241 -0.07345666 128.0 +3.107233 -2.7123227 -0.072846569 128.0 +3.0688152 -2.7121334 -0.072077312 128.0 +3.4207828 -3.0609691 -0.085207634 128.0 +3.3989739 -3.0792155 -0.08510153 128.0 +3.3034158 -3.0297227 -0.082342833 128.0 +3.8618803 -3.5860727 -0.10324524 128.0 +3.863106 -3.6316166 -0.10409407 128.0 +3.243469 -3.0865681 -0.082210205 128.0 +3.4641404 -3.3374279 -0.091043331 128.0 +3.4629147 -3.3774705 -0.091759525 128.0 +2.9144402 -2.877383 -0.072077312 128.0 +2.8847136 -2.8831947 -0.071626373 128.0 +2.8318439 -2.8652809 -0.07030008 128.0 +2.8079264 -2.8761632 -0.070061348 128.0 +2.7916131 -2.8947778 -0.070114397 128.0 +4.0331173 -4.2346134 -0.1185772 128.0 +4.0221243 -4.2753015 -0.11916077 128.0 +3.9012477 -4.1980953 -0.11547367 128.0 +3.3124416 -3.6083891 -0.093377605 128.0 +4.0810375 -4.5011964 -0.12462511 128.0 +4.0553422 -4.5283871 -0.12470469 128.0 +4.0678725 -4.5988669 -0.12632276 128.0 +3.3945124 -3.8851101 -0.10030086 128.0 +3.9824021 -4.6151338 -0.12515563 128.0 +3.950768 -4.6356778 -0.12502299 128.0 +12.3539 -14.680944 -0.47253871 128.0 +3.8054178 -4.5777097 -0.12136243 128.0 +3.6142805 -4.4023757 -0.11454527 128.0 +3.5714648 -4.4050541 -0.11388212 128.0 +3.5556118 -4.4409337 -0.11435959 128.0 +3.5413122 -4.4791374 -0.11491663 128.0 +3.4897771 -4.470047 -0.11388212 128.0 +11.17581 -14.501831 -0.44922248 128.0 +2.716192 -3.5681934 -0.082395889 128.0 +2.85395 -3.7973981 -0.089451775 128.0 +2.9348035 -3.9553523 -0.094093807 128.0 +2.9730752 -4.0587826 -0.096905552 128.0 +2.9574842 -4.0899115 -0.097329967 128.0 +10.32559 -14.470433 -0.43511069 128.0 +2.9335492 -4.1634927 -0.098550156 128.0 +2.9182172 -4.1961889 -0.099027619 128.0 +2.911077 -4.2412181 -0.09990298 128.0 +1.4810808 -2.1854467 -0.033455614 128.0 +1.4620897 -2.1861815 -0.033190355 128.0 +1.4442459 -2.1884348 -0.032978147 128.0 +1.4302456 -2.1964176 -0.032951623 128.0 +1.414042 -2.2009456 -0.032818995 128.0 +1.396767 -2.2036686 -0.032633312 128.0 +1.3932817 -2.2283063 -0.033137303 128.0 +1.3853511 -2.2461753 -0.03342909 128.0 +1.37933 -2.2674472 -0.033826977 128.0 +1.3700165 -2.2835848 -0.034065712 128.0 +1.3590306 -2.2971117 -0.034224864 128.0 +1.3569905 -2.3261356 -0.034861486 128.0 +1.3765583 -2.3933573 -0.03666525 128.0 +1.3736719 -2.4226336 -0.037301868 128.0 +1.4923176 -2.6701634 -0.044569965 128.0 +1.4378281 -2.6100838 -0.042474419 128.0 +1.3750778 -2.5327432 -0.039874882 128.0 +1.2393523 -2.3163195 -0.033110779 128.0 +1.223719 -2.3212268 -0.033031199 128.0 +1.4308851 -2.755501 -0.045790154 128.0 +1.1223571 -2.1936457 -0.028787058 128.0 +7.155107 -14.212941 -0.38563991 128.0 +7.0593281 -14.239559 -0.38513589 128.0 +1.0861737 -2.2229166 -0.029052317 128.0 +1.0958914 -2.2781956 -0.030484715 128.0 +1.0912944 -2.3047581 -0.031068284 128.0 +6.5347948 -14.036938 -0.37426028 128.0 +6.4493752 -14.078588 -0.37431332 128.0 +6.3296041 -14.044072 -0.37216476 128.0 +6.2295394 -14.051574 -0.37126285 128.0 +1.0400561 -2.382967 -0.032394581 128.0 +1.0230519 -2.383791 -0.032235425 128.0 +5.6864634 -13.491384 -0.35189897 128.0 +1.313516 -3.1682644 -0.054411069 128.0 +1.2786002 -3.1383028 -0.053323507 128.0 +1.2730529 -3.1804318 -0.054304969 128.0 +5.5681829 -14.173046 -0.36746967 128.0 +5.338294 -13.836674 -0.35693887 128.0 +5.4090614 -14.280508 -0.36861026 128.0 +1.1169524 -3.0017617 -0.048389692 128.0 +1.0865247 -2.9756889 -0.047461286 128.0 +1.0928286 -3.0510087 -0.049397677 128.0 +1.1796665 -3.3585594 -0.057859436 128.0 +1.1401764 -3.3109081 -0.056320935 128.0 +4.8146191 -14.276683 -0.363199 128.0 +4.7128186 -14.263242 -0.36200532 128.0 +4.3519564 -13.447308 -0.33845034 128.0 +4.4209065 -13.952152 -0.35176632 128.0 +1.0457752 -3.3691499 -0.05701061 128.0 +0.98039782 -3.2281852 -0.05292562 128.0 +0.96142447 -3.2370152 -0.0530052 128.0 +0.96938449 -3.3388634 -0.055657789 128.0 +0.92571646 -3.2629964 -0.053403087 128.0 +0.89608014 -3.2339313 -0.052448153 128.0 +3.6837578 -13.633069 -0.33813202 128.0 +3.5954518 -13.638017 -0.33765456 128.0 +3.493788 -13.590112 -0.33574468 128.0 +0.85287666 -3.4004023 -0.056427039 128.0 +3.3497345 -13.726166 -0.33831769 128.0 +3.2545943 -13.700748 -0.33707097 128.0 +3.1470685 -13.619164 -0.33431229 128.0 +3.1729453 -14.125899 -0.34757525 128.0 +0.68298632 -3.1260972 -0.048310116 128.0 +1.8046637 -8.5198641 -0.19449431 128.0 +1.7276282 -8.4103317 -0.19123162 128.0 +1.6687759 -8.3844976 -0.19025017 128.0 +1.6061484 -8.3366632 -0.18868513 128.0 +0.55219418 -2.9598343 -0.043296721 128.0 +0.52676886 -2.9228282 -0.04220916 128.0 +2.4409678 -14.062662 -0.34213743 128.0 +2.3569427 -14.091178 -0.34250879 128.0 +2.2761524 -14.140905 -0.34346372 128.0 +0.44327357 -2.8597941 -0.040193193 128.0 +2.0967307 -14.129208 -0.34242922 128.0 +0.42923418 -3.0134752 -0.044172075 128.0 +1.9678437 -14.482738 -0.35123581 128.0 +0.52360708 -4.0326805 -0.071308061 128.0 +1.7941298 -14.53953 -0.35213768 128.0 +1.7062782 -14.562179 -0.352456 128.0 +1.6084118 -14.49587 -0.3504135 128.0 +1.5221422 -14.531316 -0.35110319 128.0 +1.4047383 -14.253869 -0.34346372 128.0 +1.3304789 -14.40556 -0.34728345 128.0 +1.2507232 -14.514045 -0.34996256 128.0 +1.1512909 -14.391905 -0.3465142 128.0 +1.046715 -14.178374 -0.34065199 128.0 +0.9684602 -14.314188 -0.34410036 128.0 +0.17702475 -2.8634863 -0.039530046 128.0 +0.15956169 -2.8665149 -0.039583094 128.0 +0.14010701 -2.829499 -0.038575113 128.0 +0.18392022 -4.2544904 -0.076401033 128.0 +0.10243235 -2.7510877 -0.036453042 128.0 +0.085090429 -2.7366767 -0.036055151 128.0 +0.068223365 -2.7341492 -0.035975575 128.0 +0.051831603 -2.7555053 -0.036532618 128.0 +0.17558622 -14.237868 -0.34123555 128.0 +0.088220999 -14.238677 -0.34123555 128.0 +0.00085145648 -14.284934 -0.34245574 128.0 +-0.085475832 -14.069751 -0.33675268 128.0 +-0.032877129 -2.7687931 -0.036877453 128.0 +-0.049681287 -2.7585444 -0.036612198 128.0 +-0.067367651 -2.7891674 -0.0374345 128.0 +-0.45826423 -14.959677 -0.36054641 128.0 +-0.54853696 -14.915626 -0.35945883 128.0 +-0.63699812 -14.84107 -0.35757551 128.0 +-0.73153335 -14.907771 -0.35945883 128.0 +-0.82497907 -14.938934 -0.36041376 128.0 +-0.16845047 -2.7598536 -0.036771353 128.0 +-0.18639308 -2.7737286 -0.03716924 128.0 +-0.20142272 -2.7456155 -0.036453042 128.0 +-0.21778765 -2.738349 -0.036293887 128.0 +-0.23355629 -2.7250097 -0.035975575 128.0 +-0.24953705 -2.7155619 -0.035763368 128.0 +-0.2656067 -2.7080107 -0.035604212 128.0 +-0.28200951 -2.7043417 -0.035551161 128.0 +-0.30091205 -2.7234249 -0.036108203 128.0 +-0.31622142 -2.7096131 -0.035789892 128.0 +-1.8972207 -15.388997 -0.37484387 128.0 +-1.9926379 -15.384997 -0.37505606 128.0 +-2.0898266 -15.393283 -0.37561309 128.0 +-2.1877544 -15.404913 -0.37627625 128.0 +-2.2974927 -15.494037 -0.37903494 128.0 +-2.4061153 -15.567572 -0.38139576 128.0 +-2.5117555 -15.61568 -0.38309342 128.0 +-2.5452008 -15.227282 -0.37306663 128.0 +-2.636193 -15.197589 -0.37269527 128.0 +-2.8046033 -15.599268 -0.38396877 128.0 +-2.9048409 -15.606335 -0.3846319 128.0 +-3.0215263 -15.697176 -0.38757628 128.0 +-3.1419709 -15.799915 -0.3908655 128.0 +-3.2432816 -15.801882 -0.39144906 128.0 +-3.3741367 -15.942071 -0.39579931 128.0 +-3.3887999 -15.540162 -0.38545421 128.0 +-3.4974506 -15.578573 -0.38707229 128.0 +-3.5740707 -15.475004 -0.38484412 128.0 +-3.6393886 -15.328291 -0.38144881 128.0 +-3.7295814 -15.290133 -0.38102439 128.0 +-3.9149089 -15.632532 -0.39102465 128.0 +-3.9634709 -15.424263 -0.38598472 128.0 +-4.0483556 -15.362922 -0.38497674 128.0 +-4.1255975 -15.275064 -0.38325256 128.0 +-4.2147131 -15.233084 -0.38280162 128.0 +-4.3214569 -15.254063 -0.38410139 128.0 +-4.4358559 -15.299267 -0.38609084 128.0 +-4.5137243 -15.218092 -0.38460538 128.0 +-4.6165929 -15.221678 -0.38548073 128.0 +-4.7353659 -15.275177 -0.38776198 128.0 +-4.9262218 -15.552689 -0.3963033 128.0 +-5.0769558 -15.693366 -0.40107796 128.0 +-5.2101569 -15.773923 -0.40420803 128.0 +-5.8140693 -17.245882 -0.44633114 128.0 +-5.9366899 -17.259037 -0.44771048 128.0 +-6.0461187 -17.23266 -0.44800228 128.0 +-6.1540999 -17.201826 -0.44818795 128.0 +-6.262958 -17.173134 -0.44845322 128.0 +-6.3811007 -17.16905 -0.44943467 128.0 +-6.2657485 -16.547165 -0.43290904 128.0 +-6.849999 -17.760033 -0.46850678 128.0 +-6.9964905 -17.813501 -0.47123894 128.0 +-7.1505761 -17.882545 -0.47444859 128.0 +-7.3491139 -18.056839 -0.48070869 128.0 +-7.4567099 -18.004019 -0.4804965 128.0 +-7.5697575 -17.964375 -0.48068216 128.0 +-7.6892953 -17.93964 -0.4813188 128.0 +-7.8335834 -17.970926 -0.48360002 128.0 +-7.9692259 -17.980097 -0.48527116 128.0 +-8.070775 -17.911722 -0.48471409 128.0 +-7.9719591 -17.406534 -0.47142464 128.0 +-8.7253428 -18.746601 -0.51208884 128.0 +-8.9120131 -18.844524 -0.51654518 128.0 +-9.0499868 -18.83634 -0.51792455 128.0 +-1.6774455 -3.4393554 -0.064941853 128.0 +-1.6772062 -3.3860073 -0.063668609 128.0 +-1.6871635 -3.3542228 -0.063031986 128.0 +-1.7104424 -3.3491483 -0.063191138 128.0 +-1.7387869 -3.3536744 -0.063642085 128.0 +-1.7751703 -3.3730145 -0.064543962 128.0 +-1.8099707 -3.3885067 -0.065339737 128.0 +-4.5490665 -8.3885202 -0.2166169 128.0 +-4.6038265 -8.36658 -0.21680258 128.0 +-4.6604376 -8.3477745 -0.21709438 128.0 +-10.580641 -18.678854 -0.53304428 128.0 +-10.846965 -18.877934 -0.54113466 128.0 +-11.402044 -19.564995 -0.56429178 128.0 +-11.54782 -19.538553 -0.56564462 128.0 +-12.132092 -20.242434 -0.58962399 128.0 +-12.121078 -19.945507 -0.58272725 128.0 +-12.127861 -19.683529 -0.5768916 128.0 +-12.254234 -19.618069 -0.57718337 128.0 +-12.592587 -19.887083 -0.58800596 128.0 +-12.191115 -18.994274 -0.56230235 128.0 +-12.920728 -19.861771 -0.59214395 128.0 +-12.127785 -18.395082 -0.54805791 128.0 +-12.242093 -18.322815 -0.54813749 128.0 +-13.271238 -19.60154 -0.5915339 128.0 +-0 -0 -0 128.0 +-16.417976 -23.619186 -0.72668332 128.0 +-17.421421 -24.737391 -0.76625991 128.0 +-17.426561 -24.424969 -0.75957543 128.0 +-0 -0 -0 128.0 +-16.511951 -22.552624 -0.70509124 128.0 +-18.210846 -24.555315 -0.77461559 128.0 +-18.296926 -24.357594 -0.77177733 128.0 +-18.553177 -24.385679 -0.77647239 128.0 +-18.719542 -24.29355 -0.77721512 128.0 +-18.828274 -24.127008 -0.77549094 128.0 +-18.988977 -24.027496 -0.776048 128.0 +-19.160412 -23.940968 -0.7770825 128.0 +-19.437243 -23.983707 -0.78257334 128.0 +-20.175734 -24.584942 -0.80732203 128.0 +-19.655342 -23.653423 -0.77946985 128.0 +-19.018106 -22.603043 -0.74724084 128.0 +-20.508799 -24.073204 -0.80257386 128.0 +-20.041687 -23.234642 -0.77761304 128.0 +-20.030657 -22.935802 -0.77143246 128.0 +-19.998177 -22.617014 -0.7645092 128.0 +-20.207254 -22.572828 -0.76732099 128.0 +-20.319197 -22.419527 -0.76628643 128.0 +-0 -0 -0 128.0 +-21.645332 -23.301485 -0.80732203 128.0 +-21.535872 -22.900259 -0.79756051 128.0 +-21.910347 -23.013838 -0.80657929 128.0 +-22.024782 -22.851616 -0.80557132 128.0 +-0 -0 -0 128.0 +-20.955406 -21.21489 -0.75466812 128.0 +-20.798193 -20.798931 -0.74389863 128.0 +-21.204922 -20.947004 -0.7543233 128.0 +-21.240753 -20.726442 -0.75090146 128.0 +-21.566183 -20.787186 -0.75822258 128.0 +-21.688257 -20.649641 -0.75803691 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-25.203209 -23.126682 -0.87106371 128.0 +-25.382412 -23.005838 -0.87241656 128.0 +-25.461277 -22.794323 -0.87021488 128.0 +-25.88973 -22.893261 -0.88045388 128.0 +-26.879026 -23.4757 -0.91037512 128.0 +-27.077822 -23.357996 -0.91231149 128.0 +-0 -0 -0 128.0 +-10.24828 -8.6243057 -0.31882116 128.0 +-10.264869 -8.5312338 -0.31757444 128.0 +-10.276838 -8.435113 -0.3161951 128.0 +-10.297337 -8.3467207 -0.31513408 128.0 +-10.442015 -8.3583355 -0.31831717 128.0 +-10.481339 -8.2848091 -0.31791928 128.0 +-28.994385 -22.627897 -0.93934137 128.0 +-0 -0 -0 128.0 +-26.670753 -20.292936 -0.85268128 128.0 +-0 -0 -0 128.0 +-28.355831 -21.030607 -0.90018916 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-21.910666 -15.633941 -0.67763692 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-26.050852 -17.873466 -0.80172503 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-26.158197 -17.018349 -0.79148608 128.0 +-29.655813 -19.035736 -0.8984915 128.0 +-33.736458 -21.363722 -1.0230041 128.0 +-33.990692 -21.233639 -1.0268768 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-20.888342 -12.174825 -0.60495597 128.0 +-20.941851 -12.034474 -0.60431933 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-33.440773 -18.405979 -0.97629195 128.0 +-16.280212 -8.8316774 -0.45487249 128.0 +-16.312939 -8.7203083 -0.45423585 128.0 +-16.36083 -8.6172552 -0.45407671 128.0 +-16.417833 -8.5190067 -0.45420933 128.0 +-16.401255 -8.3830805 -0.45216683 128.0 +-16.555069 -8.333971 -0.4552173 128.0 +-6.9470897 -3.4447172 -0.16916208 128.0 +-6.9779773 -3.4068487 -0.16945387 128.0 +-6.9987502 -3.3639686 -0.16945387 128.0 +-7.0310073 -3.3265176 -0.1697987 128.0 +-39.04771 -18.176092 -1.1062953 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-36.224079 -15.528328 -1.0092106 128.0 +-40.098354 -16.898506 -1.1180463 128.0 +-40.231762 -16.664772 -1.1189216 128.0 +-40.707317 -16.569851 -1.1296382 128.0 +-41.922977 -16.765533 -1.1614957 128.0 +-39.98645 -15.707252 -1.1033775 128.0 +-22.282955 -8.5961723 -0.59715736 128.0 +-22.408199 -8.4868984 -0.59922642 128.0 +-22.389576 -8.3231239 -0.59723693 128.0 +-22.414867 -8.1763391 -0.59652072 128.0 +-45.708988 -16.355047 -1.2516042 128.0 +-46.838528 -16.435692 -1.2805705 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-49.135933 -16.232355 -1.3365401 128.0 +-0 -0 -0 128.0 +-49.204685 -15.58801 -1.3330121 128.0 +-49.27076 -15.276922 -1.3322164 128.0 +-28.410942 -8.6189032 -0.75121975 128.0 +-28.378956 -8.4193983 -0.74888545 128.0 +-28.373436 -8.2286835 -0.74732047 128.0 +-51.716953 -14.654218 -1.3897511 128.0 +-12.676634 -3.509006 -0.31242844 128.0 +-12.715297 -3.4358499 -0.31290591 128.0 +-12.736139 -3.3577657 -0.31290591 128.0 +-12.749725 -3.2778132 -0.31272021 128.0 +-12.776385 -3.2012208 -0.31290591 128.0 +-12.926895 -3.1547501 -0.3164869 128.0 +-52.779922 -12.534389 -1.4028814 128.0 +-53.841526 -12.437985 -1.4297255 128.0 +-0 -0 -0 128.0 +-40.192421 -8.7670813 -1.0549942 128.0 +-40.284576 -8.5285816 -1.0560553 128.0 +-40.312649 -8.2764149 -1.0554187 128.0 +-0 -0 -0 128.0 +-18.431669 -3.5496261 -0.46147743 128.0 +-18.803947 -3.5017793 -0.47094718 128.0 +-18.683403 -3.360858 -0.46712744 128.0 +-18.706629 -3.2466681 -0.46720701 128.0 +-18.631546 -3.1160011 -0.46466053 128.0 +-18.879288 -3.0384586 -0.47081453 128.0 +-52.161602 -8.0648584 -1.3639679 128.0 +-24.063999 -3.5701964 -0.60893488 128.0 +-24.250734 -3.4459534 -0.6133647 128.0 +-24.200102 -3.2874038 -0.61145484 128.0 +-27.673729 -3.5863075 -0.70387101 128.0 +-24.084841 -2.9712203 -0.60734332 128.0 +-29.901943 -3.502434 -0.76228106 128.0 +-29.924858 -3.3191135 -0.76233411 128.0 +-29.81044 -3.121387 -0.75875312 128.0 +-38.500031 -3.7922425 -0.9899528 128.0 +-25.894688 -2.3906682 -0.6534453 128.0 +-25.91584 -2.2323365 -0.65363097 128.0 +-29.895004 -2.3902159 -0.75920403 128.0 +-36.081173 -2.6618819 -0.92342585 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-56.872089 -3.1437817 -1.4748195 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-46.796406 13.532393 -1.8431183 128.0 +-46.34454 13.710425 -1.8283105 128.0 +-46.061554 13.934639 -1.8203281 128.0 +-43.611458 13.486085 -1.724848 128.0 +-43.543133 13.758243 -1.7254651 128.0 +-43.45314 14.023625 -1.7252722 128.0 +-43.500092 14.334079 -1.7307096 128.0 +-0 0 -0 128.0 +-45.469246 15.604053 -1.8183614 128.0 +-41.128498 14.397123 -1.6448314 128.0 +-40.946213 14.615955 -1.6410139 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-33.122765 13.217169 -1.3394573 128.0 +-32.656834 13.264109 -1.323454 128.0 +-32.312561 13.355837 -1.3125023 128.0 +-32.477787 13.65805 -1.3228755 128.0 +-31.352448 13.411806 -1.2791846 128.0 +-31.274147 13.605922 -1.2793773 128.0 +-31.136156 13.773709 -1.2771022 128.0 +-31.024628 13.952613 -1.2759839 128.0 +-30.928434 14.138144 -1.2755597 128.0 +-30.811197 14.313758 -1.2742871 128.0 +-29.140511 13.755658 -1.2067647 128.0 +-29.000597 13.907845 -1.2044125 128.0 +-30.647614 14.929667 -1.2787989 128.0 +-29.533506 14.611849 -1.2347995 128.0 +-30.581745 15.364747 -1.2839663 128.0 +-27.211203 13.881143 -1.1420573 128.0 +-30.359837 15.722793 -1.2826166 128.0 +-29.007694 15.24901 -1.2278968 128.0 +-41.974854 22.395288 -1.799196 128.0 +-41.471977 22.454973 -1.7831926 128.0 +-24.640057 13.537693 -1.0481583 128.0 +-24.492811 13.653111 -1.0453433 128.0 +-24.356386 13.773626 -1.0430295 128.0 +-24.206406 13.885526 -1.0401374 128.0 +-24.11125 14.028264 -1.0397133 128.0 +-24.03849 14.184069 -1.0403302 128.0 +-23.949291 14.330273 -1.040253 128.0 +-23.953176 14.532931 -1.0444179 128.0 +-22.695814 13.961322 -0.99151045 128.0 +-22.412163 13.977117 -0.98252547 128.0 +-22.235603 14.057239 -0.97839928 128.0 +-22.100134 14.162139 -0.97616267 128.0 +-21.94075 14.250669 -0.97284633 128.0 +-21.801983 14.351512 -0.97049403 128.0 +-21.833218 14.564868 -0.97604698 128.0 +-21.784002 14.725981 -0.97793657 128.0 +-21.745173 14.894942 -0.98036599 128.0 +-21.710014 15.067399 -0.98302674 128.0 +-20.530807 14.436475 -0.9317776 128.0 +-20.46463 14.578411 -0.93285733 128.0 +-33.150002 23.922773 -1.5408292 128.0 +-20.338238 14.867956 -0.93544102 128.0 +-32.600971 24.140461 -1.5286821 128.0 +-32.435444 24.327452 -1.5278723 128.0 +-32.213154 24.471008 -1.5243632 128.0 +-31.996662 24.61763 -1.5211624 128.0 +-31.810328 24.78647 -1.5194657 128.0 +-31.581551 24.921146 -1.5157251 128.0 +-31.315632 25.02463 -1.5101722 128.0 +-31.110226 25.174822 -1.5076271 128.0 +-30.877878 25.301905 -1.5037708 128.0 +-30.704361 25.476215 -1.5028839 128.0 +-30.493906 25.619141 -1.5001847 128.0 +-30.301125 25.775982 -1.4984107 128.0 +-30.101509 25.926207 -1.4963284 128.0 +-29.898935 26.072985 -1.4941304 128.0 +-29.727903 26.246691 -1.4935905 128.0 +-21.891926 19.568806 -1.0963612 128.0 +-21.782555 19.712822 -1.0969396 128.0 +-29.087975 26.650383 -1.4856466 128.0 +-21.517763 19.958937 -1.0958213 128.0 +-28.735432 26.98344 -1.4844127 128.0 +-28.438238 27.034637 -1.4774328 128.0 +-14.816531 14.2596 -0.75678223 128.0 +-28.072847 27.350901 -1.4757361 128.0 +-27.901651 27.519831 -1.4755819 128.0 +-14.473764 14.452243 -0.75254041 128.0 +-14.417143 14.573457 -0.7543143 128.0 +-28.454741 29.117897 -1.5343508 128.0 +-14.186556 14.696798 -0.75149924 128.0 +-27.95874 29.321697 -1.5267154 128.0 +-28.086607 29.820026 -1.5440685 128.0 +-28.127722 30.233227 -1.5567939 128.0 +-0 0 -0 128.0 +-29.19523 32.163177 -1.6395099 128.0 +-28.8379 32.163898 -1.6302935 128.0 +-28.518105 32.202591 -1.623198 128.0 +-28.261425 32.310032 -1.619766 128.0 +-27.932642 32.332359 -1.6120921 128.0 +-27.574169 32.316147 -1.6026058 128.0 +-27.385666 32.496956 -1.6032228 128.0 +-26.996538 32.437038 -1.5918084 128.0 +-26.782408 32.58432 -1.5909215 128.0 +-26.500731 32.647957 -1.5859469 128.0 +-15.781321 19.687943 -0.9369449 128.0 +-24.030985 30.359301 -1.4574192 128.0 +-15.588377 19.943892 -0.94006848 128.0 +-24.698191 32.001446 -1.5232062 128.0 +-24.391136 32.007736 -1.5161879 128.0 +-24.178061 32.135239 -1.5151467 128.0 +-23.852316 32.110523 -1.5068558 128.0 +-23.608156 32.192616 -1.5038095 128.0 +-23.342207 32.242973 -1.4993362 128.0 +-23.043415 32.244946 -1.4926649 128.0 +-22.802505 32.325306 -1.4898114 128.0 +-22.494104 32.307159 -1.4824075 128.0 +-22.12793 32.200806 -1.470993 128.0 +-22.017429 32.464985 -1.4770087 128.0 +-21.782242 32.546322 -1.4745407 128.0 +-20.215881 30.610653 -1.3788679 128.0 +-19.988943 30.674679 -1.37613 128.0 +-19.809538 30.811039 -1.3767855 128.0 +-19.640985 30.964918 -1.3782895 128.0 +-20.120081 32.154716 -1.4269935 128.0 +-8.8438931 14.328982 -0.61302233 128.0 +-8.7381382 14.353958 -0.6117112 128.0 +-8.7028799 14.495543 -0.61568314 128.0 +-8.5934086 14.514277 -0.61414063 128.0 +-8.4784937 14.522722 -0.61217397 128.0 +-8.4964066 14.760666 -0.62046486 128.0 +-18.56698 32.717834 -1.4149621 128.0 +-18.412712 32.914864 -1.4186641 128.0 +-18.154434 32.925716 -1.4141909 128.0 +-17.994526 33.114632 -1.4176229 128.0 +-12.41199 23.179457 -0.977898 128.0 +-12.248546 23.215408 -0.97616267 128.0 +-12.087434 23.254663 -0.97462022 128.0 +-10.04722 19.62299 -0.81397003 128.0 +-9.9990692 19.827915 -0.82017857 128.0 +-9.7981033 19.729593 -0.81331444 128.0 +-13.786988 28.194235 -1.1743724 128.0 +-9.6185379 19.979795 -0.81894457 128.0 +-13.367644 28.208694 -1.1678555 128.0 +-13.13095 28.154346 -1.1620711 128.0 +-12.912102 28.134487 -1.1578293 128.0 +-12.692348 28.109364 -1.1534332 128.0 +-12.465684 28.065254 -1.1483045 128.0 +-12.220439 27.974558 -1.1412861 128.0 +-12.01267 27.965466 -1.137777 128.0 +-11.805474 27.954878 -1.1342678 128.0 +-11.59503 27.933577 -1.130373 128.0 +-11.401901 27.951458 -1.1281749 128.0 +-11.190774 27.922575 -1.1240873 128.0 +-10.988119 27.911682 -1.1208096 128.0 +-10.790706 27.911472 -1.1180331 128.0 +-10.587325 27.893078 -1.1145625 128.0 +-10.38109 27.863878 -1.1107062 128.0 +-10.140615 27.737474 -1.1029167 128.0 +-9.9250231 27.673134 -1.0977494 128.0 +-9.7139215 27.616625 -1.0929676 128.0 +-9.5198517 27.60486 -1.0900755 128.0 +-9.3307734 27.605007 -1.0877231 128.0 +-9.1505346 27.629488 -1.0864121 128.0 +-8.9663391 27.640442 -1.0845996 128.0 +-8.7669258 27.601606 -1.0808206 128.0 +-8.5736675 27.578543 -1.0777355 128.0 +-8.3856764 27.569447 -1.0752676 128.0 +-8.1901417 27.532267 -1.0717199 128.0 +-8.0001249 27.510038 -1.0688276 128.0 +-7.8188839 27.515354 -1.0670924 128.0 +-7.6370773 27.516596 -1.0652415 128.0 +-7.4610391 27.536898 -1.0642003 128.0 +-7.2766104 27.524195 -1.0618865 128.0 +-3.7695274 14.621683 -0.54592407 128.0 +-3.6390684 14.482694 -0.5394842 128.0 +-3.5491855 14.500868 -0.53932995 128.0 +-3.4386015 14.431973 -0.53574365 128.0 +-3.3912797 14.630939 -0.54280055 128.0 +-6.195981 27.495556 -1.0508963 128.0 +-6.0292916 27.542816 -1.0512819 128.0 +-5.8624635 27.590046 -1.0517061 128.0 +-5.6930637 27.625498 -1.0517061 128.0 +-3.9438119 19.750103 -0.7404319 128.0 +-3.8233118 19.777855 -0.74058616 128.0 +-3.7073948 19.830408 -0.74174303 128.0 +-4.9830117 27.588739 -1.0451119 128.0 +-4.8182697 27.645376 -1.0461531 128.0 +-4.6508675 27.688215 -1.046693 128.0 +-4.4799314 27.710314 -1.0464616 128.0 +-4.3035288 27.696796 -1.0448805 128.0 +-4.1367459 27.744423 -1.0457289 128.0 +-3.9706707 27.79896 -1.0468858 128.0 +-3.8059752 27.866364 -1.0485826 128.0 +-3.6488678 27.996206 -1.0527472 128.0 +-3.4851408 28.083517 -1.0552924 128.0 +-3.3190753 28.157961 -1.0573747 128.0 +-3.1554434 28.260223 -1.0605754 128.0 +-2.9874325 28.330727 -1.0625806 128.0 +-2.8185759 28.399237 -1.0645473 128.0 +-2.6487134 28.463755 -1.0663983 128.0 +-2.4783378 28.529247 -1.0683264 128.0 +-2.3069365 28.589733 -1.0701002 128.0 +-2.1348121 28.648191 -1.0718355 128.0 +-1.9620569 28.705614 -1.0735708 128.0 +-1.7015777 27.361742 -1.0211648 128.0 +-1.613058 28.788389 -1.0759231 128.0 +-1.4397215 28.864611 -1.0785068 128.0 +-1.2664273 28.960752 -1.0819002 128.0 +-1.0915192 29.04287 -1.0847925 128.0 +-0.9145202 29.087971 -1.0862963 128.0 +-0.73814654 29.176947 -1.0895356 128.0 +-0.56144333 29.302813 -1.0942402 128.0 +-0.38453871 29.528521 -1.1028396 128.0 +-0.20471984 29.729172 -1.1105134 128.0 +-0.022370653 29.820801 -1.1140226 128.0 +0.16142274 29.972261 -1.119884 128.0 +0.34764895 30.172543 -1.1276736 128.0 +0.53524584 30.309717 -1.1330724 128.0 +0.72361249 30.406757 -1.1369671 128.0 +0.91238302 30.475658 -1.1398207 128.0 +1.1009097 30.512426 -1.1414789 128.0 +1.2891212 30.529057 -1.1424044 128.0 +1.4795089 30.58445 -1.1448724 128.0 +1.6694826 30.617701 -1.1465305 128.0 +1.7053078 28.101357 -1.0496622 128.0 +2.0649397 30.892023 -1.158022 128.0 +2.2565603 30.907673 -1.1591403 128.0 +2.4500282 30.942057 -1.1610299 128.0 +2.6461267 31.000118 -1.1638836 128.0 +2.843941 31.066887 -1.1671227 128.0 +3.0521007 31.228859 -1.1741025 128.0 +2.0497854 19.721008 -0.7283619 128.0 +2.1812532 19.803411 -0.73206389 128.0 +2.3008759 19.773773 -0.73144686 128.0 +3.8562329 31.459955 -1.1863654 128.0 +4.050344 31.44462 -1.1867124 128.0 +4.2476211 31.451855 -1.1879849 128.0 +4.4479351 31.47764 -1.1900287 128.0 +4.6560192 31.551577 -1.1940006 128.0 +4.8688231 31.647844 -1.1988981 128.0 +4.734149 29.564075 -1.1186501 128.0 +5.329493 32.022377 -1.2159811 128.0 +5.5478191 32.116096 -1.2209556 128.0 +5.8028955 32.406044 -1.2336812 128.0 +6.0245771 32.493626 -1.2385399 128.0 +6.2345672 32.511986 -1.240738 128.0 +6.472002 32.665237 -1.2482963 128.0 +2.9526541 14.436176 -0.53184885 128.0 +3.0574677 14.495029 -0.5348953 128.0 +3.1467745 14.47795 -0.53497243 128.0 +3.2883532 14.694353 -0.54430449 128.0 +3.3185999 14.413899 -0.53400838 128.0 +7.4011254 31.269133 -1.2032555 128.0 +8.1802816 33.638885 -1.2991984 128.0 +8.3971825 33.630718 -1.3008951 128.0 +3.4409401 13.428851 -0.49818406 128.0 +3.5192101 13.392022 -0.49756706 128.0 +9.3141537 34.581989 -1.3453188 128.0 +9.5264359 34.525154 -1.3453573 128.0 +9.7413588 34.477589 -1.3458201 128.0 +4.1851764 14.471776 -0.54457438 128.0 +4.2177687 14.256099 -0.53693908 128.0 +4.275651 14.132393 -0.53300571 128.0 +4.35461 14.081071 -0.5320031 128.0 +4.4358096 14.037888 -0.53134757 128.0 +4.5117335 13.979024 -0.53007501 128.0 +4.6202512 14.020359 -0.53289008 128.0 +4.6921754 13.950072 -0.53119332 128.0 +4.7789807 13.9248 -0.53134757 128.0 +4.8735757 13.921622 -0.53242731 128.0 +4.9736857 13.932865 -0.53412402 128.0 +5.0672832 13.924622 -0.53504956 128.0 +5.2196846 14.07409 -0.54249203 128.0 +12.765947 33.785755 -1.3570031 128.0 +12.965117 33.686272 -1.3561547 128.0 +5.7119513 14.572915 -0.567249 128.0 +5.7308979 14.361255 -0.55992216 128.0 +5.7888274 14.251755 -0.5568372 128.0 +5.8601346 14.177181 -0.55521756 128.0 +5.9477887 14.142799 -0.55529469 128.0 +6.04035 14.119819 -0.55587316 128.0 +6.1296644 14.088904 -0.55614305 128.0 +6.2341876 14.092151 -0.55787838 128.0 +6.3225875 14.05819 -0.5580712 128.0 +6.4627333 14.137276 -0.56308424 128.0 +15.104807 32.514027 -1.3467456 128.0 +15.299333 32.410793 -1.3463213 128.0 +15.563158 32.452362 -1.3521442 128.0 +15.190478 31.183023 -1.301782 128.0 +15.220679 30.764114 -1.287784 128.0 +15.192039 30.237978 -1.2691199 128.0 +15.357764 30.105915 -1.2674617 128.0 +15.203536 29.357153 -1.2390413 128.0 +15.200655 28.915707 -1.2238864 128.0 +15.243735 28.570629 -1.2128961 128.0 +15.399248 28.440531 -1.211315 128.0 +15.528719 28.264059 -1.2077287 128.0 +15.6279 28.035576 -1.2018673 128.0 +15.753885 27.858265 -1.198281 128.0 +15.908613 27.733339 -1.197047 128.0 +16.068432 27.617929 -1.1962758 128.0 +16.239113 27.521397 -1.1963915 128.0 +16.448208 27.488979 -1.1994379 128.0 +16.624861 27.401207 -1.2000549 128.0 +16.80315 27.315704 -1.2008262 128.0 +16.984716 27.234982 -1.2018673 128.0 +17.172865 27.164038 -1.2034098 128.0 +17.407686 27.165007 -1.2083073 128.0 +17.642075 27.162436 -1.2131275 128.0 +17.886425 27.172195 -1.2186034 128.0 +18.191444 27.269754 -1.2282438 128.0 +18.355627 27.153481 -1.2280511 128.0 +13.743557 20.064207 -0.90173763 128.0 +13.86698 19.980322 -0.90177619 128.0 +13.990464 19.896494 -0.90185332 128.0 +19.367815 27.188042 -1.2514198 128.0 +14.201996 19.679554 -0.89977098 128.0 +19.878086 27.191944 -1.2630656 128.0 +20.135538 27.192331 -1.2689656 128.0 +20.350573 27.13302 -1.2720891 128.0 +20.571075 27.079256 -1.2755597 128.0 +20.706377 26.912924 -1.2736316 128.0 +20.890776 26.810589 -1.2748656 128.0 +21.005989 26.61993 -1.2718192 128.0 +21.449638 26.841824 -1.2891722 128.0 +21.224216 26.228096 -1.2652636 128.0 +21.854048 26.670105 -1.2938381 128.0 +21.746742 26.209446 -1.2774879 128.0 +22.582701 26.879625 -1.3180166 128.0 +22.679871 26.661398 -1.3140062 128.0 +22.968893 26.667862 -1.3214488 128.0 +23.130121 26.524166 -1.3213331 128.0 +13.110271 14.848841 -0.72762924 128.0 +13.061288 14.611665 -0.71953118 128.0 +13.144664 14.524579 -0.7191841 128.0 +13.068155 14.26314 -0.70973635 128.0 +13.144554 14.170964 -0.70911938 128.0 +13.221682 14.079846 -0.70857948 128.0 +13.333987 14.025975 -0.71004486 128.0 +13.441971 13.966935 -0.71127886 128.0 +13.583899 13.942168 -0.71440238 128.0 +13.686733 13.876343 -0.71536642 128.0 +13.890234 13.910897 -0.72184491 128.0 +31.600235 31.261948 -1.678612 128.0 +14.965378 14.624271 -0.7707032 128.0 +14.849932 14.334379 -0.75971299 128.0 +14.850824 14.160242 -0.75508553 128.0 +14.87851 14.013357 -0.75196201 128.0 +14.953241 13.911591 -0.75138354 128.0 +15.013304 13.796588 -0.75007242 128.0 +15.091757 13.698835 -0.74976397 128.0 +15.168831 13.599973 -0.74941689 128.0 +15.275931 13.527843 -0.75065088 128.0 +15.412803 13.481224 -0.75342733 128.0 +15.592018 13.470017 -0.75836331 128.0 +15.818042 13.496681 -0.76565158 128.0 +34.205498 28.825508 -1.689448 128.0 +34.391708 28.623394 -1.6899493 128.0 +34.566692 28.411831 -1.6899493 128.0 +18.110456 14.70024 -0.86336821 128.0 +18.219027 14.603839 -0.86429369 128.0 +35.395638 28.017595 -1.705297 128.0 +18.359076 14.349627 -0.86244273 128.0 +35.863358 27.678812 -1.7114669 128.0 +25.753592 19.625137 -1.2127419 128.0 +36.300129 27.311728 -1.7162873 128.0 +26.09516 19.383894 -1.2176778 128.0 +36.74456 26.946352 -1.7216474 128.0 +36.956154 26.754372 -1.723884 128.0 +37.305794 26.660158 -1.7327148 128.0 +20.897871 14.741336 -0.9501332 128.0 +20.929705 14.572292 -0.94739527 128.0 +21.063196 14.474156 -0.94947761 128.0 +38.187008 25.898132 -1.7438207 128.0 +0 0 -0 128.0 +38.607838 25.497505 -1.748718 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +21.871948 13.873195 -0.96274304 128.0 +0 0 -0 128.0 +31.777578 19.613792 -1.4043189 128.0 +24.417881 14.864996 -1.0663983 128.0 +20.031527 12.026769 -0.86487216 128.0 +20.049915 11.871049 -0.86240417 128.0 +19.998976 11.675755 -0.85688978 128.0 +19.981907 11.501974 -0.85295641 128.0 +19.998222 11.348573 -0.85056555 128.0 +19.96196 11.166622 -0.84589952 128.0 +19.994223 11.024145 -0.84431851 128.0 +19.993885 10.864518 -0.84134918 128.0 +20.023174 10.721821 -0.83972961 128.0 +20.017881 10.561455 -0.83664459 128.0 +20.037977 10.415385 -0.8347165 128.0 +20.098839 10.290872 -0.83460081 128.0 +20.165173 10.169154 -0.83475506 128.0 +20.450035 10.155906 -0.84435707 128.0 +20.675343 10.110129 -0.85137534 128.0 +20.944067 10.082773 -0.86024469 128.0 +21.986187 10.418801 -0.90212321 128.0 +22.110378 10.311999 -0.9047069 128.0 +22.265869 10.218654 -0.90864027 128.0 +22.458382 10.140647 -0.91415465 128.0 +22.569494 10.024558 -0.916237 128.0 +22.822874 9.9698915 -0.92433506 128.0 +24.379251 10.472143 -0.98715293 128.0 +24.338108 10.278039 -0.98275685 128.0 +24.360107 10.111653 -0.98106009 128.0 +24.455002 9.9755793 -0.98244834 128.0 +24.901604 9.9799862 -0.99849021 128.0 +25.131594 9.8936262 -1.0055085 128.0 +25.683002 9.9291344 -1.0258309 128.0 +26.216158 9.9507942 -1.0453433 128.0 +44.215805 16.473488 -1.7841182 128.0 +33.822701 12.365421 -1.352954 128.0 +33.90358 12.15968 -1.3531854 128.0 +33.830498 11.899696 -1.3471698 128.0 +33.9076 11.693521 -1.3473625 128.0 +33.837666 11.43757 -1.3416167 128.0 +33.910053 11.230673 -1.3417325 128.0 +33.875671 10.989092 -1.3375678 128.0 +34.074841 10.823076 -1.3429279 128.0 +33.867706 10.528949 -1.331899 128.0 +33.911594 10.314836 -1.3310893 128.0 +33.96563 10.103999 -1.3307422 128.0 +34.582539 10.056968 -1.3530698 128.0 +35.870083 10.193127 -1.4022751 128.0 +35.925213 9.9709692 -1.4020052 128.0 +36.845066 9.9831991 -1.4363642 128.0 +37.610855 9.9433861 -1.4645146 128.0 +0 0 -0 128.0 +39.784584 9.9973984 -1.5462664 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.130878 0.74895418 -0.62493807 128.0 +17.159117 0.644728 -0.62586355 128.0 +0 0 -0 128.0 +17.2936 0.43734726 -0.63079953 128.0 +17.240011 0.33015475 -0.62864006 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.263905 -0.093148455 -0.62944984 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.265259 -0.41104728 -0.62968123 128.0 +17.249428 -0.51658863 -0.62917989 128.0 +17.260912 -0.62295961 -0.62975836 128.0 +0 -0 -0 128.0 +17.293888 -0.83675796 -0.63137794 128.0 +17.300402 -0.94350821 -0.63184071 128.0 +17.299273 -1.0499463 -0.63203353 128.0 +17.303473 -1.1568059 -0.63245767 128.0 +17.294056 -1.2628107 -0.63238055 128.0 +17.308893 -1.3707151 -0.63326752 128.0 +17.346951 -1.4808884 -0.63507992 128.0 +0 -0 -0 128.0 +17.292664 -1.6902492 -0.63373023 128.0 +17.387321 -1.8072714 -0.63781786 128.0 +27.428604 -3.0209775 -1.028106 128.0 +27.417492 -3.1901431 -1.0284145 128.0 +27.404345 -3.3591645 -1.0286844 128.0 +27.389162 -3.528017 -1.0289158 128.0 +25.403297 -3.4308317 -0.95244694 128.0 +27.391298 -3.870569 -1.0307667 128.0 +27.390759 -4.0420666 -1.0316923 128.0 +27.377293 -4.2118802 -1.032155 128.0 +27.350935 -4.3797851 -1.032155 128.0 +0 -0 -0 128.0 +15.396317 -2.6598115 -0.56616926 128.0 +15.150524 -2.7131951 -0.55718422 128.0 +15.106081 -2.8010056 -0.55610448 128.0 +14.969863 -2.8708725 -0.55143845 128.0 +14.850024 -2.9424753 -0.54742801 128.0 +13.395506 -2.7398334 -0.49085724 128.0 +13.306089 -2.8067155 -0.48800364 128.0 +13.161676 -2.8607204 -0.48299056 128.0 +13.065865 -2.9239697 -0.47990558 128.0 +12.944456 -2.9803228 -0.47581798 128.0 +12.882168 -3.049336 -0.47408268 128.0 +12.873896 -3.1309192 -0.47450686 128.0 +12.840869 -3.2064643 -0.47396699 128.0 +10.990481 -2.8162196 -0.40104586 128.0 +13.019938 -3.4214439 -0.48272061 128.0 +12.835636 -3.4573514 -0.47620359 128.0 +12.859453 -3.5485361 -0.47801602 128.0 +12.823976 -3.6235697 -0.47747615 128.0 +7.9471426 -2.2984679 -0.28246704 128.0 +7.9501376 -2.3522897 -0.28316116 128.0 +7.9336414 -2.4004478 -0.28308403 128.0 +7.8786678 -2.4366841 -0.28146443 128.0 +7.9216905 -2.503345 -0.28381673 128.0 +7.9309063 -2.5598838 -0.28481933 128.0 +7.9321327 -2.6141276 -0.28551346 128.0 +25.480364 -8.570097 -1.0006497 128.0 +32.552799 -11.17153 -1.2913703 128.0 +32.016785 -11.207641 -1.2722819 128.0 +31.949293 -11.404553 -1.272359 128.0 +31.85524 -11.591833 -1.271395 128.0 +10.975738 -4.0706863 -0.41496682 128.0 +10.960835 -4.1418405 -0.415391 128.0 +7.1713505 -2.7604349 -0.25975391 128.0 +7.1384616 -2.7981865 -0.25909835 128.0 +7.122086 -2.8423052 -0.25913692 128.0 +7.1026602 -2.8851998 -0.25905979 128.0 +28.776541 -11.894331 -1.1648476 128.0 +28.095074 -11.815023 -1.1393965 128.0 +9.0906878 -3.8890815 -0.34478357 128.0 +19.588549 -8.5222263 -0.78759348 128.0 +8.9929314 -3.9785161 -0.34270123 128.0 +5.5143671 -2.4803205 -0.19655043 128.0 +5.411799 -2.4742284 -0.19284846 128.0 +26.874477 -12.484958 -1.1067729 128.0 +26.029268 -12.287057 -1.073995 128.0 +25.924555 -12.432712 -1.0727611 128.0 +25.810051 -12.573168 -1.0711414 128.0 +5.3333554 -2.6390698 -0.19284846 128.0 +5.3063474 -2.6663618 -0.19238572 128.0 +5.2952275 -2.7015953 -0.19261709 128.0 +3.7967093 -1.9666389 -0.12821819 128.0 +3.7757258 -1.9852486 -0.12783258 128.0 +3.7731714 -2.0135527 -0.12825675 128.0 +3.7774413 -2.0457063 -0.12898944 128.0 +3.7788305 -2.0765443 -0.12960644 128.0 +4.4983115 -2.5078828 -0.16196012 128.0 +4.4123836 -2.4955955 -0.15883659 128.0 +4.3839865 -2.5151644 -0.15825815 128.0 +3.715503 -2.1621234 -0.12910512 128.0 +3.6737664 -2.1681232 -0.12783258 128.0 +3.6363842 -2.1762586 -0.12675282 128.0 +3.599896 -2.1845353 -0.12571165 128.0 +3.5881264 -2.2076299 -0.12578878 128.0 +13.623747 -8.4964952 -0.5828281 128.0 +4.1621442 -2.6316714 -0.15324508 128.0 +4.1425529 -2.6550038 -0.15309082 128.0 +3.4792347 -2.2601881 -0.1233208 128.0 +3.4335837 -2.2606161 -0.12185543 128.0 +3.3506525 -2.2356162 -0.11865477 128.0 +3.3492897 -2.2645276 -0.1192332 128.0 +3.4202459 -2.3431981 -0.1232051 128.0 +4.9302654 -3.422128 -0.19481513 128.0 +4.9296103 -3.4666839 -0.19577919 128.0 +4.8797607 -3.4765747 -0.19442952 128.0 +4.855906 -3.5046966 -0.19431382 128.0 +4.7963953 -3.5067098 -0.1925014 128.0 +4.8550949 -3.5955381 -0.19635762 128.0 +5.4244981 -4.0689349 -0.22489366 128.0 +3.2971721 -2.5051768 -0.1230123 128.0 +4.8569927 -3.7373066 -0.19971253 128.0 +3.2582991 -2.5393078 -0.12262667 128.0 +4.8758736 -3.8480048 -0.20291319 128.0 +4.8521705 -3.8778501 -0.20291319 128.0 +4.829062 -3.9081781 -0.20295176 128.0 +4.8034453 -3.9364684 -0.20287463 128.0 +5.2782941 -4.3799701 -0.22790152 128.0 +15.867697 -13.331332 -0.76299077 128.0 +15.398183 -13.098891 -0.74336261 128.0 +16.12085 -13.885014 -0.78427714 128.0 +3.1335089 -2.7330115 -0.12366785 128.0 +3.6582685 -3.2303438 -0.15154833 128.0 +3.0572691 -2.7333004 -0.12146981 128.0 +3.0463676 -2.7573719 -0.1217783 128.0 +3.3417878 -3.0622239 -0.13812868 128.0 +3.8855941 -3.6045544 -0.16774446 128.0 +3.3017726 -3.10095 -0.13801299 128.0 +3.4615693 -3.2912042 -0.14753786 128.0 +3.4787495 -3.3484132 -0.14954309 128.0 +3.4466867 -3.3585384 -0.14892611 128.0 +3.3890195 -3.3431358 -0.14692087 128.0 +4.1356678 -4.1299219 -0.18876086 128.0 +3.5304604 -3.5691679 -0.15694705 128.0 +2.7842503 -2.8496552 -0.11695803 128.0 +4.0908732 -4.2384176 -0.19053473 128.0 +2.7449334 -2.8792686 -0.11672665 128.0 +4.2358704 -4.4977908 -0.20164065 128.0 +3.3383176 -3.5887253 -0.15235814 128.0 +7.5509739 -8.2171593 -0.39387327 128.0 +7.656229 -8.4349899 -0.40281972 128.0 +3.3877659 -3.7790198 -0.15906796 128.0 +4.0826583 -4.6106472 -0.2008694 128.0 +4.0615282 -4.6438847 -0.20129359 128.0 +4.0257711 -4.6604009 -0.2008694 128.0 +3.9951541 -4.682734 -0.20075372 128.0 +3.988884 -4.7339034 -0.20210339 128.0 +11.344852 -13.631495 -0.64761263 128.0 +3.45207 -4.2004457 -0.17302749 128.0 +11.208207 -13.808479 -0.64954072 128.0 +3.5733864 -4.4584627 -0.18370922 128.0 +3.563328 -4.5022426 -0.18478896 128.0 +2.9436445 -3.7666488 -0.14769211 128.0 +2.8179078 -3.6517432 -0.14121366 128.0 +2.8996229 -3.8056674 -0.14784636 128.0 +2.8912368 -3.8433497 -0.14881042 128.0 +10.289147 -13.851862 -0.62910277 128.0 +10.224051 -13.942132 -0.63041389 128.0 +10.094363 -13.943897 -0.62752175 128.0 +9.9208841 -13.882812 -0.62169886 128.0 +9.8009539 -13.894431 -0.61938512 128.0 +1.5002177 -2.1553414 -0.064551979 128.0 +2.9425623 -4.2826614 -0.16373399 128.0 +2.9078159 -4.2882309 -0.16315556 128.0 +1.446396 -2.1618295 -0.063587926 128.0 +1.4386109 -2.179002 -0.063973546 128.0 +1.4208492 -2.1810906 -0.063665047 128.0 +2.7898126 -4.3398094 -0.16230719 128.0 +1.4078933 -2.2203016 -0.064667664 128.0 +1.3990138 -2.2365222 -0.065014727 128.0 +1.386314 -2.2467649 -0.065091848 128.0 +1.3751001 -2.2594967 -0.065284662 128.0 +1.3591528 -2.2644649 -0.065130413 128.0 +1.34676 -2.2753413 -0.065246098 128.0 +1.356957 -2.3249834 -0.06709709 128.0 +1.5625123 -2.7151809 -0.084103025 128.0 +1.5640711 -2.7568727 -0.085529827 128.0 +1.5642006 -2.7969403 -0.086879499 128.0 +1.5199898 -2.7574825 -0.084720016 128.0 +1.3718349 -2.5253086 -0.07411541 128.0 +1.2152702 -2.2702878 -0.062585309 128.0 +1.196654 -2.2688639 -0.062199686 128.0 +1.2698151 -2.4437366 -0.069487944 128.0 +6.7572341 -13.197683 -0.53539658 128.0 +1.3706689 -2.71877 -0.080709547 128.0 +6.5983253 -13.286771 -0.53570509 128.0 +6.5162358 -13.326109 -0.53566653 128.0 +1.0685532 -2.220437 -0.058304902 128.0 +1.0561925 -2.2296607 -0.058420587 128.0 +1.4086934 -3.0212538 -0.091854028 128.0 +6.1151257 -13.324898 -0.52899528 128.0 +6.027493 -13.349419 -0.52845538 128.0 +5.9118013 -13.310354 -0.52525473 128.0 +5.8364196 -13.361029 -0.52587175 128.0 +5.6083999 -13.056881 -0.51160371 128.0 +5.5235138 -13.080002 -0.51114094 128.0 +5.5998416 -13.491113 -0.52691293 128.0 +1.2870582 -3.1561284 -0.094746195 128.0 +5.4405551 -13.575511 -0.52760702 128.0 +1.1439061 -2.9066932 -0.083755963 128.0 +1.1437061 -2.9593265 -0.085645512 128.0 +5.2347884 -13.792 -0.53250444 128.0 +5.1368065 -13.788278 -0.53103906 128.0 +4.9896584 -13.64873 -0.52402073 128.0 +1.1587864 -3.2319963 -0.095710248 128.0 +1.1664547 -3.3172846 -0.098910913 128.0 +1.0760334 -3.1212785 -0.090620033 128.0 +4.6055207 -13.626023 -0.51827496 128.0 +4.4772139 -13.519327 -0.51279914 128.0 +4.3843093 -13.516129 -0.51156515 128.0 +4.2135658 -13.266589 -0.50038213 128.0 +4.0872889 -13.148108 -0.49455923 128.0 +0.97757578 -3.2151737 -0.09289521 128.0 +0.95982397 -3.2278159 -0.093165144 128.0 +0.96009165 -3.3027287 -0.095941626 128.0 +0.92369241 -3.2518468 -0.093666449 128.0 +0.90372205 -3.2574532 -0.093666449 128.0 +3.6423876 -13.443957 -0.50072914 128.0 +3.5572743 -13.456393 -0.50034356 128.0 +0.86556423 -3.3586857 -0.097059928 128.0 +0.84713131 -3.3726556 -0.097406983 128.0 +3.267643 -13.350707 -0.49363372 128.0 +3.2116055 -13.479374 -0.4979527 128.0 +3.1279345 -13.494932 -0.49779844 128.0 +0.70852733 -3.145803 -0.087650746 128.0 +1.8145413 -8.2904367 -0.29071936 128.0 +1.7592763 -8.2808886 -0.28990954 128.0 +1.7245687 -8.3698225 -0.29299453 128.0 +1.6706359 -8.3675079 -0.29249322 128.0 +1.6073128 -8.3157921 -0.2900638 128.0 +1.5588289 -8.3392496 -0.29060367 128.0 +1.5364059 -8.5079584 -0.29685074 128.0 +0.51659715 -2.9661148 -0.079398431 128.0 +0.64522427 -3.8433216 -0.11360312 128.0 +0.49212143 -3.0462143 -0.082290597 128.0 +0.47541562 -3.0620129 -0.08279191 128.0 +2.0516696 -13.761552 -0.50015074 128.0 +1.9950294 -13.968757 -0.50774747 128.0 +1.9092813 -13.980735 -0.50774747 128.0 +1.8228153 -13.987233 -0.50755471 128.0 +1.7404031 -14.02592 -0.50863445 128.0 +1.6592225 -14.078015 -0.51025403 128.0 +1.5689287 -14.053173 -0.50890434 128.0 +1.4795264 -14.032722 -0.50774747 128.0 +1.3894473 -14.001762 -0.50620502 128.0 +1.2959146 -13.928437 -0.50304288 128.0 +1.2103405 -13.935131 -0.50300431 128.0 +1.1260995 -13.958232 -0.50362134 128.0 +1.0373129 -13.923026 -0.5020017 128.0 +0.96263176 -14.086644 -0.50809455 128.0 +0.87785459 -14.119213 -0.50913572 128.0 +0.78947079 -14.093405 -0.50794029 128.0 +0.69416702 -13.921335 -0.50111479 128.0 +0.12196018 -2.7972651 -0.071261808 128.0 +0.10434368 -2.7859783 -0.07079906 128.0 +0.085802197 -2.740623 -0.069025196 128.0 +0.067973003 -2.7011404 -0.06748271 128.0 +0.050957255 -2.6785278 -0.066595778 128.0 +0.034078293 -2.6448183 -0.065284662 128.0 +0.017904507 -2.6529715 -0.065593161 128.0 +0.0016594146 -2.6969986 -0.067289896 128.0 +-0.074633121 -13.81752 -0.49644876 128.0 +-0.15900044 -13.780831 -0.49506053 128.0 +-0.24769813 -14.014384 -0.50412261 128.0 +-0.33451572 -14.047565 -0.5054723 128.0 +-0.41920918 -13.995308 -0.50354421 128.0 +-0.099735767 -2.7541502 -0.069565065 128.0 +-0.59741175 -14.142858 -0.5094828 128.0 +-0.69407463 -14.343534 -0.51738805 128.0 +-0.78598809 -14.410846 -0.52016455 128.0 +-0.87070525 -14.344909 -0.51781225 128.0 +-0.18557112 -2.7707324 -0.070374876 128.0 +-0.20184104 -2.7595754 -0.069989257 128.0 +-0.21995261 -2.7732272 -0.070567682 128.0 +-0.23526521 -2.7519126 -0.069796443 128.0 +-0.2516908 -2.7454417 -0.069603629 128.0 +-1.4228936 -14.556743 -0.52764559 128.0 +-1.5122886 -14.548732 -0.52768415 128.0 +-0.29879192 -2.709553 -0.068408199 128.0 +-0.31471896 -2.7017133 -0.068176828 128.0 +-1.8192132 -14.839785 -0.5401783 128.0 +-1.9181482 -14.88979 -0.54256916 128.0 +-2.0106776 -14.886652 -0.54291624 128.0 +-2.1138654 -14.958136 -0.54619402 128.0 +-2.2193184 -15.037807 -0.54981887 128.0 +-2.3120027 -15.02687 -0.54993457 128.0 +-2.4003706 -14.988721 -0.54900908 128.0 +-2.4954112 -14.992438 -0.54974174 128.0 +-2.5958602 -15.026078 -0.55166984 128.0 +-2.6883619 -15.011835 -0.55174696 128.0 +-2.7756863 -14.969511 -0.55074435 128.0 +-2.8806577 -15.020895 -0.55344373 128.0 +-2.983839 -15.058808 -0.55564177 128.0 +-3.087594 -15.096019 -0.55783981 128.0 +-3.2158377 -15.24594 -0.56451106 128.0 +-3.3437018 -15.384108 -0.57075816 128.0 +-3.4439254 -15.38963 -0.57179934 128.0 +-3.5344784 -15.351655 -0.57114375 128.0 +-3.6088157 -15.246054 -0.5678274 128.0 +-3.7013512 -15.219739 -0.56767315 128.0 +-3.7917635 -15.185107 -0.56721044 128.0 +-3.8446896 -15.004742 -0.56096333 128.0 +-4.032927 -15.347154 -0.57557845 128.0 +-4.1241612 -15.311505 -0.57515424 128.0 +-4.2047443 -15.237748 -0.57322615 128.0 +-4.2908268 -15.185699 -0.57218492 128.0 +-4.3955817 -15.199402 -0.57380456 128.0 +-4.4709024 -15.111777 -0.57137513 128.0 +-4.5291114 -14.970243 -0.56678623 128.0 +-4.6368227 -14.993722 -0.56886858 128.0 +-4.783226 -15.13745 -0.57584834 128.0 +-4.8843036 -15.133492 -0.57688951 128.0 +-4.9604945 -15.052938 -0.57484573 128.0 +-5.066143 -15.061996 -0.57646537 128.0 +-5.3060441 -15.460671 -0.59401119 128.0 +-5.4655166 -15.612679 -0.60156935 128.0 +-5.5652423 -15.590143 -0.60203212 128.0 +-5.9922352 -16.466553 -0.63943744 128.0 +-6.0844731 -16.406054 -0.63847339 128.0 +-6.2012706 -16.411409 -0.64024723 128.0 +-6.2939563 -16.352533 -0.63939887 128.0 +-6.3912582 -16.306164 -0.63909042 128.0 +-6.5467405 -16.405855 -0.64487469 128.0 +-6.6070476 -16.266315 -0.64074856 128.0 +-6.793376 -16.435099 -0.64950216 128.0 +-6.9200444 -16.454823 -0.65208584 128.0 +-7.022058 -16.414808 -0.65220153 128.0 +-7.1864257 -16.518021 -0.65837151 128.0 +-7.3725338 -16.665522 -0.66646957 128.0 +-7.5090795 -16.696522 -0.66970879 128.0 +-7.6579137 -16.751921 -0.67402774 128.0 +-7.9154835 -17.038115 -0.68821865 128.0 +-8.1414442 -17.246763 -0.69920886 128.0 +-1.6569729 -3.4543002 -0.11105801 128.0 +-1.6685096 -3.4243047 -0.11020964 128.0 +-1.6748668 -3.3844464 -0.10893708 128.0 +-1.6825925 -3.3482115 -0.10781878 128.0 +-1.7071917 -3.3458357 -0.10816585 128.0 +-1.7345819 -3.3486075 -0.10874428 128.0 +-1.7578857 -3.3432081 -0.10897565 128.0 +-1.8000033 -3.3729138 -0.11074951 128.0 +-4.5497036 -8.4021549 -0.33194235 128.0 +-9.9728041 -18.151356 -0.76245093 128.0 +-4.6451707 -8.3325977 -0.33136392 128.0 +-10.252347 -18.129377 -0.76696271 128.0 +-10.329087 -18.006321 -0.7643019 128.0 +-10.47003 -17.995289 -0.76665419 128.0 +-10.600054 -17.964272 -0.76815814 128.0 +-10.719316 -17.914328 -0.76885223 128.0 +-10.841992 -17.869576 -0.76981628 128.0 +-11.081275 -18.013792 -0.77937973 128.0 +-11.243415 -18.028553 -0.78315884 128.0 +-11.358096 -17.965982 -0.78346729 128.0 +-11.703718 -18.263618 -0.80031902 128.0 +-11.903735 -18.327221 -0.80656606 128.0 +-12.041787 -18.293066 -0.80837852 128.0 +-12.140495 -18.198883 -0.80745304 128.0 +-12.21388 -18.067755 -0.80483079 128.0 +-12.295712 -17.950426 -0.80286413 128.0 +-12.381695 -17.840164 -0.8012445 128.0 +-13.127181 -18.668736 -0.84393287 128.0 +-13.236845 -18.581326 -0.84362435 128.0 +-13.419024 -18.594561 -0.84813613 128.0 +-13.533455 -18.51268 -0.84817469 128.0 +-13.521917 -18.260649 -0.84007663 128.0 +-13.697261 -18.262072 -0.84416425 128.0 +-15.237985 -20.058735 -0.93532532 128.0 +-16.250389 -21.121153 -0.99162614 128.0 +-16.920153 -21.714687 -1.0255609 128.0 +-17.098879 -21.668507 -1.0284145 128.0 +-15.853539 -19.838764 -0.94323057 128.0 +-17.160465 -21.206142 -1.0159589 128.0 +-16.095798 -19.642723 -0.94323057 128.0 +-16.341719 -19.695087 -0.9508273 128.0 +-16.950762 -20.175915 -0.98013461 128.0 +-17.396023 -20.449808 -0.9993 128.0 +-17.378363 -20.176868 -0.99085492 128.0 +-0 -0 -0 128.0 +-18.138525 -20.544128 -1.0208178 128.0 +-18.358803 -20.538239 -1.0262935 128.0 +-18.591757 -20.543751 -1.0324636 128.0 +-18.888243 -20.615692 -1.0422198 128.0 +-18.917208 -20.394644 -1.0367054 128.0 +-18.95307 -20.183487 -1.0316923 128.0 +-19.039377 -20.027704 -1.0296099 128.0 +-18.750322 -19.482826 -1.006704 128.0 +-19.23839 -19.746033 -1.0271034 128.0 +-19.340944 -19.609118 -1.0261008 128.0 +-19.453133 -19.482296 -1.0256766 128.0 +-19.550285 -19.340782 -1.0244812 128.0 +-17.328062 -16.933191 -0.8981899 128.0 +-17.4151 -16.810587 -0.89730299 128.0 +-19.621656 -18.709402 -1.0094805 128.0 +-20.718075 -19.513578 -1.0615394 128.0 +-20.90765 -19.451429 -1.0652415 128.0 +-16.457586 -15.123874 -0.82577008 128.0 +-0 -0 -0 128.0 +-20.480951 -18.362867 -1.0247511 128.0 +-0 -0 -0 128.0 +-22.93856 -20.064091 -1.1392808 128.0 +-23.664644 -20.444271 -1.1700535 128.0 +-10.180075 -8.6859207 -0.47963563 128.0 +-24.14909 -20.350662 -1.1819307 128.0 +-24.262753 -20.193153 -1.1813908 128.0 +-10.30658 -8.4710522 -0.47805458 128.0 +-10.358363 -8.4076529 -0.47805458 128.0 +-18.695412 -14.985708 -0.88785523 128.0 +-10.516387 -8.3239403 -0.48079249 128.0 +-18.851133 -14.734236 -0.88654411 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-24.972036 -18.788465 -1.1692051 128.0 +-25.397284 -18.865488 -1.1841288 128.0 +-25.17977 -18.465242 -1.1682025 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-19.403606 -13.68725 -0.87956434 128.0 +-19.560211 -13.618752 -0.88299638 128.0 +-19.602228 -13.470179 -0.88106829 128.0 +-25.148506 -17.055357 -1.1358488 128.0 +-25.568245 -17.111929 -1.1505024 128.0 +-19.502481 -12.879651 -0.86514211 128.0 +-26.065138 -16.985096 -1.1638064 128.0 +-19.864992 -12.771756 -0.8745898 128.0 +-20.084745 -12.739548 -0.88106829 128.0 +-26.316608 -16.46693 -1.1612227 128.0 +-26.312563 -16.240589 -1.1564796 128.0 +-26.326365 -16.026871 -1.1526234 128.0 +-26.34882 -15.819768 -1.1492299 128.0 +-27.09285 -16.041155 -1.1782672 128.0 +-20.943901 -12.227441 -0.89911538 128.0 +-0 -0 -0 128.0 +-29.005198 -16.460049 -1.2502244 128.0 +-28.464674 -15.923195 -1.2218812 128.0 +-28.614344 -15.777188 -1.2241949 128.0 +-16.213242 -8.8100605 -0.6753003 128.0 +-28.919437 -15.48571 -1.2291694 128.0 +-28.083286 -14.816954 -1.1885633 128.0 +-16.406349 -8.527648 -0.67676568 128.0 +-16.295599 -8.3434772 -0.66970879 128.0 +-28.105009 -14.173333 -1.1779202 128.0 +-6.9379191 -3.4452174 -0.26214474 128.0 +-6.9526443 -3.3995094 -0.26187482 128.0 +-6.9823761 -3.3611195 -0.26226044 128.0 +-7.0344725 -3.3331904 -0.26361012 128.0 +-29.911209 -13.950363 -1.2368819 128.0 +-28.831057 -13.231797 -1.1874065 128.0 +-28.925364 -13.060813 -1.1879849 128.0 +-29.161119 -12.952449 -1.194579 128.0 +-32.89732 -14.37098 -1.3485966 128.0 +-32.815941 -14.096286 -1.3415011 128.0 +-33.195469 -14.01868 -1.3538024 128.0 +-33.459904 -13.889054 -1.3612835 128.0 +-33.555595 -13.688016 -1.3617463 128.0 +-33.713158 -13.511605 -1.3648312 128.0 +-22.119057 -8.7076206 -0.88056695 128.0 +-22.463793 -8.6845226 -0.89263695 128.0 +-22.347563 -8.4823389 -0.88565719 128.0 +-22.391699 -8.3422661 -0.88534868 128.0 +-22.246317 -8.1330042 -0.87728918 128.0 +-22.664513 -8.1285944 -0.89240557 128.0 +-35.49897 -12.486592 -1.4154248 128.0 +-35.620262 -12.284178 -1.4172758 128.0 +-35.740402 -12.080744 -1.4191269 128.0 +-35.731331 -11.833885 -1.415772 128.0 +-35.896416 -11.644637 -1.419551 128.0 +-36.042427 -11.448059 -1.4225974 128.0 +-28.095722 -8.734457 -1.0986363 128.0 +-28.33712 -8.6191874 -1.106233 128.0 +-28.345415 -8.432045 -1.1044592 128.0 +-28.133717 -8.1815042 -1.0938932 128.0 +-12.659086 -3.5970371 -0.47107482 128.0 +-12.786834 -3.548692 -0.47531667 128.0 +-13.064918 -3.5396824 -0.48557422 128.0 +-12.792708 -3.3818049 -0.47385129 128.0 +-12.810315 -3.3024983 -0.47373563 128.0 +-12.650081 -3.1785352 -0.46656305 128.0 +-34.301109 -8.3959913 -1.3259991 128.0 +-12.966137 -3.0893056 -0.47759184 128.0 +-34.692619 -8.0419035 -1.3375292 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-39.785458 -8.4539833 -1.5328468 128.0 +-39.868877 -8.216361 -1.5341194 128.0 +-39.933239 -7.9745111 -1.5346978 128.0 +-18.898798 -3.6533611 -0.70603436 128.0 +-40.108635 -7.4989281 -1.5378599 128.0 +-18.708172 -3.3788943 -0.69685656 128.0 +-18.718708 -3.2623236 -0.69647098 128.0 +-28.002573 -4.7036757 -1.0589943 128.0 +-18.764238 -3.0334871 -0.69674093 128.0 +-23.986126 -3.7269106 -0.89996374 128.0 +-28.440207 -4.2404985 -1.0728767 128.0 +-28.467669 -4.0661955 -1.0729538 128.0 +-24.192242 -3.304112 -0.90547818 128.0 +-28.543169 -3.7201638 -1.0740336 128.0 +-27.684875 -3.4356639 -1.0397904 128.0 +-27.712381 -3.266547 -1.0400603 128.0 +-28.195673 -3.1482351 -1.0580689 128.0 +-28.605001 -3.0163579 -1.0732238 128.0 +-0 -0 -0 128.0 +-25.877863 -2.4080448 -0.96617508 128.0 +-25.905094 -2.2503405 -0.96667641 128.0 +-30.170414 -2.4345055 -1.1312984 128.0 +-30.65712 -2.2845418 -1.1495769 128.0 +-30.831066 -2.1073632 -1.1557854 128.0 +-32.212749 -2.003324 -1.2087314 128.0 +-35.306301 -1.9783573 -1.3278501 128.0 +-39.003445 -1.9455712 -1.4702604 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-37.87191 2.7999074 -1.9066927 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-37.362038 4.1496253 -1.8870642 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-37.155926 5.0526333 -1.8822592 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-37.028996 5.7314186 -1.880828 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-37.695934 6.7858419 -1.9234076 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-38.337566 9.11133 -1.9798906 128.0 +-0 0 -0 128.0 +-38.230618 9.5830479 -1.9802995 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-38.183426 13.143114 -2.029882 128.0 +-37.232323 13.071774 -1.982702 128.0 +-36.905071 13.211782 -1.9693096 128.0 +-35.471416 12.944585 -1.8956517 128.0 +-35.213474 13.095841 -1.8859396 128.0 +-34.845753 13.203018 -1.8702471 128.0 +-34.895454 13.467284 -1.8774544 128.0 +-34.830753 13.688452 -1.8784767 128.0 +-33.281101 13.315709 -1.7977136 128.0 +-32.471779 13.223584 -1.7575366 128.0 +-32.145542 13.321252 -1.7439909 128.0 +-31.588358 13.318026 -1.7176151 128.0 +-30.953508 13.274615 -1.6868434 128.0 +-30.424757 13.269444 -1.6618989 128.0 +-30.222258 13.402431 -1.6551515 128.0 +-29.908203 13.483356 -1.6421682 128.0 +-28.980562 13.279676 -1.5946304 128.0 +-28.410563 13.229991 -1.5670789 128.0 +-28.074282 13.283603 -1.5526643 128.0 +-27.902239 13.412343 -1.5475527 128.0 +-27.122126 13.242799 -1.5078356 128.0 +-26.644003 13.212401 -1.4851913 128.0 +-26.415258 13.301519 -1.4767572 128.0 +-25.849421 13.216013 -1.4489502 128.0 +-25.579929 13.27683 -1.4381136 128.0 +-25.128658 13.238939 -1.4167472 128.0 +-24.78187 13.25112 -1.4013612 128.0 +-24.440275 13.26193 -1.3862309 128.0 +-24.106491 13.272906 -1.3715097 128.0 +-23.726421 13.253988 -1.354028 128.0 +-23.320566 13.215647 -1.3349618 128.0 +-23.020853 13.233058 -1.3220806 128.0 +-22.774439 13.27798 -1.3123175 128.0 +-22.486223 13.295471 -1.3000497 128.0 +-22.209793 13.316607 -1.2884463 128.0 +-22.185694 13.487914 -1.2919222 128.0 +-22.311649 13.752711 -1.3044968 128.0 +-22.037138 13.770796 -1.2930468 128.0 +-21.980066 13.923391 -1.2947336 128.0 +-21.948004 14.092532 -1.298005 128.0 +-21.86363 14.228572 -1.2981584 128.0 +-21.770912 14.359158 -1.2978517 128.0 +-21.72142 14.518556 -1.3002541 128.0 +-21.758434 14.737257 -1.3080748 128.0 +-21.747469 14.925306 -1.3130331 128.0 +-21.729273 15.109783 -1.3176335 128.0 +-20.530741 14.463984 -1.2484226 128.0 +-20.443232 14.590847 -1.2485249 128.0 +-21.838352 15.789835 -1.3423225 128.0 +-27.311508 20.003803 -1.6957375 128.0 +-20.200071 14.986092 -1.250365 128.0 +-29.417582 22.106215 -1.8464271 128.0 +-29.286949 22.290537 -1.8467849 128.0 +-28.898102 22.275921 -1.83053 128.0 +-28.70656 22.41041 -1.8270031 128.0 +-28.493303 22.526667 -1.822096 128.0 +-28.260216 22.625546 -1.8159109 128.0 +-28.089827 22.773363 -1.8138663 128.0 +-27.869287 22.879383 -1.8085502 128.0 +-27.657724 22.99122 -1.8038476 128.0 +-27.375549 23.042154 -1.7944423 128.0 +-27.093794 23.090494 -1.7850369 128.0 +-26.882044 23.196278 -1.7803342 128.0 +-26.672274 23.302305 -1.775785 128.0 +-26.459225 23.403986 -1.7710311 128.0 +-26.274948 23.529917 -1.768271 128.0 +-21.745722 19.715378 -1.4653584 128.0 +-25.848114 23.725639 -1.7588145 128.0 +-25.652304 23.837564 -1.7553387 128.0 +-25.405905 23.900761 -1.7483357 128.0 +-14.910282 14.199741 -1.0168678 128.0 +-24.690121 23.805206 -1.718433 128.0 +-24.515005 23.928349 -1.7163883 128.0 +-14.602343 14.428263 -1.0136986 128.0 +-14.454936 14.458964 -1.0094559 128.0 +-23.795343 24.096966 -1.6963509 128.0 +-23.574518 24.168165 -1.6910349 128.0 +-23.378662 24.263454 -1.687559 128.0 +-14.04135 14.7522 -1.0054178 128.0 +-22.964916 24.427004 -1.6790227 128.0 +-22.676651 24.418892 -1.6686461 128.0 +-22.41028 24.430984 -1.6598542 128.0 +-22.216368 24.519924 -1.6565317 128.0 +-21.986246 24.567217 -1.6504489 128.0 +-21.773581 24.632069 -1.6456951 128.0 +-21.56292 24.697496 -1.6410947 128.0 +-21.31706 24.720425 -1.633734 128.0 +-21.09893 24.773205 -1.6285201 128.0 +-20.884815 24.828827 -1.623613 128.0 +-20.698254 24.915791 -1.620904 128.0 +-20.500011 24.987503 -1.6172746 128.0 +-20.32053 25.081001 -1.6151789 128.0 +-15.752859 19.688633 -1.2535853 128.0 +-19.923925 25.217981 -1.6079715 128.0 +-19.728273 25.287788 -1.6045979 128.0 +-19.490467 25.301552 -1.5976973 128.0 +-17.285381 22.725903 -1.4244145 128.0 +-19.001007 25.302435 -1.582567 128.0 +-18.785324 25.337517 -1.5774043 128.0 +-18.580547 25.385414 -1.5731617 128.0 +-18.398115 25.462517 -1.5708615 128.0 +-18.21254 25.534271 -1.5683057 128.0 +-18.025627 25.603077 -1.5656477 128.0 +-17.792967 25.604939 -1.5589004 128.0 +-17.550234 25.589266 -1.5511819 128.0 +-17.358185 25.645191 -1.5480127 128.0 +-17.12784 25.642422 -1.5413165 128.0 +-16.893787 25.631124 -1.5342114 128.0 +-16.68611 25.657274 -1.5295087 128.0 +-16.475513 25.676802 -1.5244994 128.0 +-16.262104 25.68965 -1.5191834 128.0 +-8.9158115 14.276649 -0.8245188 128.0 +-15.782746 25.622818 -1.5032864 128.0 +-15.603971 25.684181 -1.5011905 128.0 +-8.6776905 14.482033 -0.82712573 128.0 +-8.5891752 14.535865 -0.82717681 128.0 +-8.3872156 14.394995 -0.81572688 128.0 +-14.72174 25.628979 -1.475786 128.0 +-8.4052925 14.841846 -0.83601987 128.0 +-14.330193 25.671669 -1.4678119 128.0 +-14.144966 25.709238 -1.4648983 128.0 +-13.97029 25.764816 -1.4631093 128.0 +-12.40435 23.215397 -1.3102217 128.0 +-12.233293 23.237164 -1.3071036 128.0 +-12.058299 23.249729 -1.3035256 128.0 +-11.892698 23.278811 -1.3009697 128.0 +-12.983074 25.802959 -1.4414362 128.0 +-9.779912 19.73698 -1.0904235 128.0 +-12.600212 25.826597 -1.4338199 128.0 +-12.397406 25.8116 -1.428606 128.0 +-12.207638 25.821272 -1.4248745 128.0 +-12.019483 25.832306 -1.4212965 128.0 +-11.837889 25.855625 -1.418485 128.0 +-11.65113 25.865854 -1.4150093 128.0 +-11.459838 25.86381 -1.4109199 128.0 +-11.266219 25.853987 -1.4064729 128.0 +-11.057421 25.806044 -1.3999811 128.0 +-10.866694 25.797012 -1.3957385 128.0 +-10.691394 25.822603 -1.3934895 128.0 +-10.492857 25.78966 -1.3880712 128.0 +-10.295499 25.756184 -1.382704 128.0 +-10.102233 25.729628 -1.3777969 128.0 +-9.9183035 25.724037 -1.3741165 128.0 +-9.7330561 25.71249 -1.3701806 128.0 +-9.5444994 25.689342 -1.3656824 128.0 +-9.3548841 25.66016 -1.3609287 128.0 +-9.168005 25.635265 -1.3564816 128.0 +-8.9943438 25.644857 -1.3539768 128.0 +-8.8225336 25.658009 -1.3517278 128.0 +-8.6509018 25.670017 -1.3494787 128.0 +-8.4788284 25.678991 -1.3471273 128.0 +-8.3063574 25.684921 -1.3446738 128.0 +-8.1314201 25.681133 -1.3417602 128.0 +-7.9630494 25.696201 -1.33992 128.0 +-7.7930627 25.704435 -1.3377732 128.0 +-7.6210041 25.703894 -1.3352174 128.0 +-7.4478559 25.697414 -1.332406 128.0 +-7.2688174 25.667679 -1.328419 128.0 +-7.1002736 25.672331 -1.3263232 128.0 +-6.9397545 25.704807 -1.325761 128.0 +-3.7727721 14.320971 -0.72100919 128.0 +-6.6141067 25.750309 -1.3237674 128.0 +-3.6338458 14.514419 -0.72882992 128.0 +-3.5383325 14.510244 -0.72744977 128.0 +-3.4047337 14.344141 -0.71758443 128.0 +-3.4026768 14.737464 -0.73716176 128.0 +-5.7716994 25.720848 -1.3122152 128.0 +-5.6127076 25.750898 -1.3119596 128.0 +-5.4496379 25.761402 -1.3107328 128.0 +-4.037406 19.679802 -0.99125874 128.0 +-3.9228055 19.73555 -0.99289441 128.0 +-3.7995615 19.748461 -0.99233216 128.0 +-3.654942 19.645725 -0.98578936 128.0 +-4.6686783 25.982306 -1.3141576 128.0 +-4.5118947 26.026207 -1.3149755 128.0 +-4.359354 26.096743 -1.3172246 128.0 +-4.1999378 26.127932 -1.3174802 128.0 +-4.0387788 26.148273 -1.3172246 128.0 +-3.877528 26.167624 -1.316969 128.0 +-3.7159116 26.184002 -1.3166112 128.0 +-3.5547769 26.203341 -1.3164579 128.0 +-3.395467 26.236544 -1.3170712 128.0 +-3.2357612 26.267788 -1.3176335 128.0 +-3.0763798 26.303019 -1.3184514 128.0 +-2.9188855 26.357134 -1.3202915 128.0 +-2.7627108 26.428185 -1.3230518 128.0 +-2.6040154 26.480419 -1.3248919 128.0 +-2.4424016 26.505844 -1.3254031 128.0 +-2.2791204 26.513367 -1.3250453 128.0 +-2.1165533 26.528843 -1.3251475 128.0 +-1.9561535 26.574198 -1.3268343 128.0 +-1.7942693 26.603636 -1.3277545 128.0 +-1.632708 26.642056 -1.3291857 128.0 +-1.4731594 26.72337 -1.3328661 128.0 +-1.3137481 26.82567 -1.3376709 128.0 +-1.1531793 26.928017 -1.3425269 128.0 +-0.99034357 27.000454 -1.3459005 128.0 +-0.82574904 27.04196 -1.3477408 128.0 +-0.66070676 27.083458 -1.349632 128.0 +-0.49571368 27.152905 -1.3530056 128.0 +-0.3298811 27.220345 -1.3563282 128.0 +-0.16325143 27.288769 -1.359753 128.0 +0.0042033577 27.345182 -1.3626155 128.0 +0.17326128 27.545376 -1.3728898 128.0 +0.34321958 27.619688 -1.3767745 128.0 +0.51452363 27.715916 -1.381835 128.0 +0.68734258 27.824057 -1.38756 128.0 +0.8593806 27.86224 -1.389758 128.0 +1.035978 28.009136 -1.3975787 128.0 +1.2135488 28.134954 -1.4043771 128.0 +1.3870935 28.145931 -1.4053483 128.0 +1.5614824 28.167803 -1.406933 128.0 +1.7287582 28.06798 -1.4023325 128.0 +1.9162817 28.283028 -1.4139358 128.0 +2.1106339 28.552597 -1.4284016 128.0 +2.2931287 28.630695 -1.4331043 128.0 +2.4760602 28.700661 -1.4374491 128.0 +2.666559 28.841055 -1.4454743 128.0 +1.9473773 19.744205 -0.97847974 128.0 +3.0505989 29.095196 -1.460349 128.0 +2.201432 19.826019 -0.98400027 128.0 +2.3401458 19.957947 -0.99151433 128.0 +2.428889 19.670645 -0.97745746 128.0 +3.7949433 29.252232 -1.4727701 128.0 +3.9765139 29.244228 -1.473588 128.0 +4.1610827 29.255861 -1.4754792 128.0 +4.3501997 29.294977 -1.478853 128.0 +4.5437722 29.357544 -1.4835045 128.0 +4.7304926 29.370523 -1.4856514 128.0 +4.916224 29.374434 -1.4873893 128.0 +5.1273084 29.521812 -1.4966413 128.0 +5.3508258 29.725689 -1.5089091 128.0 +5.5629463 29.852327 -1.517241 128.0 +5.7860832 30.025528 -1.5280775 128.0 +2.9330425 14.736255 -0.73205018 128.0 +2.9371638 14.298311 -0.71012151 128.0 +3.0701814 14.493982 -0.72131586 128.0 +3.158844 14.473895 -0.72126478 128.0 +3.3016891 14.694914 -0.73389035 128.0 +7.155046 30.950109 -1.5889053 128.0 +3.3882363 14.259783 -0.71318847 128.0 +7.6146231 31.188868 -1.6062337 128.0 +7.8398504 31.27718 -1.6133898 128.0 +3.46031 13.457022 -0.67418706 128.0 +3.5346644 13.404635 -0.67255133 128.0 +8.632391 31.934509 -1.6561738 128.0 +8.8574953 31.986813 -1.6617966 128.0 +4.0840421 14.406684 -0.72944331 128.0 +4.0972099 14.122392 -0.71564204 128.0 +4.1727014 14.059648 -0.7136485 128.0 +4.2458372 13.990776 -0.7113483 128.0 +4.3203568 13.928215 -0.7094059 128.0 +4.4968805 14.188948 -0.72484285 128.0 +4.480185 13.840894 -0.70761681 128.0 +4.5634594 13.808402 -0.70736122 128.0 +4.6394801 13.754592 -0.70598114 128.0 +4.7228141 13.723033 -0.70582777 128.0 +4.8195009 13.729603 -0.70777017 128.0 +4.9225049 13.752426 -0.71063262 128.0 +5.0201488 13.758552 -0.71262616 128.0 +5.1295419 13.794886 -0.71630651 128.0 +5.2516007 13.862144 -0.72172481 128.0 +5.4448004 14.110102 -0.73711067 128.0 +5.6397753 14.352483 -0.7522921 128.0 +5.6739373 14.183161 -0.74488026 128.0 +5.7310977 14.07501 -0.7408421 128.0 +5.8238525 14.055264 -0.74171108 128.0 +5.8820472 13.953008 -0.73803073 128.0 +5.9840841 13.955203 -0.74017763 128.0 +6.0604153 13.897168 -0.73900193 128.0 +6.1609583 13.894412 -0.74094439 128.0 +6.2777042 13.926451 -0.74488026 128.0 +6.3871689 13.940328 -0.74784499 128.0 +6.4945097 13.947951 -0.750503 128.0 +6.6218333 13.996306 -0.75551236 128.0 +6.7958603 14.13903 -0.76594001 128.0 +14.837479 30.387814 -1.6938462 128.0 +14.74367 29.73164 -1.6615921 128.0 +14.757821 29.307018 -1.6424748 128.0 +14.723677 28.797993 -1.6184504 128.0 +14.81636 28.545786 -1.6091473 128.0 +14.950733 28.377468 -1.6047002 128.0 +15.062878 28.16983 -1.598004 128.0 +15.176373 27.968031 -1.5916656 128.0 +15.27881 27.749285 -1.5843561 128.0 +15.394722 27.558237 -1.5786822 128.0 +15.538905 27.419815 -1.5761265 128.0 +15.693916 27.301443 -1.5747974 128.0 +15.851078 27.187378 -1.5737751 128.0 +16.006924 27.071552 -1.5727017 128.0 +16.170675 26.9694 -1.5724971 128.0 +16.355568 26.902098 -1.5744396 128.0 +16.511419 26.786783 -1.5735706 128.0 +16.701933 26.727312 -1.5761265 128.0 +16.927078 26.721348 -1.5820048 128.0 +17.115002 26.654797 -1.5843049 128.0 +17.331619 26.631308 -1.5893143 128.0 +17.555187 26.616165 -1.5949371 128.0 +17.777002 26.595957 -1.6003554 128.0 +17.969542 26.530201 -1.6030644 128.0 +18.177767 26.486137 -1.6072049 128.0 +13.854783 19.924635 -1.2051275 128.0 +13.98368 19.849045 -1.2057409 128.0 +18.966244 26.572996 -1.6339896 128.0 +14.177049 19.607969 -1.2014471 128.0 +19.402445 26.490522 -1.6436504 128.0 +19.720531 26.581108 -1.6570429 128.0 +19.916859 26.504313 -1.6599053 128.0 +20.189199 26.526237 -1.6692084 128.0 +20.512552 26.610672 -1.682703 128.0 +20.770092 26.605536 -1.6905749 128.0 +20.823315 26.338928 -1.6815274 128.0 +21.199259 26.478844 -1.6991112 128.0 +21.481464 26.496437 -1.7088743 128.0 +21.736795 26.477596 -1.7163883 128.0 +21.927578 26.378283 -1.7186886 128.0 +22.321836 26.519823 -1.7371925 128.0 +22.542442 26.450768 -1.7417929 128.0 +22.804796 26.428389 -1.7496648 128.0 +12.964895 14.840658 -0.97163022 128.0 +12.877053 14.55886 -0.95782894 128.0 +12.904845 14.411131 -0.95312631 128.0 +12.943386 14.276928 -0.94934374 128.0 +13.005756 14.170018 -0.94745243 128.0 +13.092457 14.08995 -0.94745243 128.0 +13.128024 13.955524 -0.94366986 128.0 +13.243024 13.905806 -0.94586784 128.0 +13.341963 13.838665 -0.94689018 128.0 +13.455924 13.786555 -0.94903702 128.0 +13.555005 13.718649 -0.95011044 128.0 +13.756882 13.753128 -0.95864683 128.0 +13.889334 13.716174 -0.96212268 128.0 +14.721766 14.36079 -1.015641 128.0 +14.754947 14.217526 -1.0117562 128.0 +14.802117 14.088857 -1.0089449 128.0 +14.760221 13.877376 -0.99994844 128.0 +14.853874 13.794702 -1.0005618 128.0 +14.900702 13.668872 -0.99795491 128.0 +14.981332 13.574504 -0.99775046 128.0 +15.074017 13.490982 -0.99841493 128.0 +15.163995 13.40485 -0.9989261 128.0 +15.303889 13.362126 -1.002862 128.0 +15.490722 13.358624 -1.0099671 128.0 +15.611935 13.296994 -1.0126252 128.0 +15.815516 13.303805 -1.0208037 128.0 +15.993646 13.286918 -1.0272443 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +18.170286 14.538146 -1.1540627 128.0 +18.260715 14.42762 -1.154165 128.0 +25.553154 19.935284 -1.621824 128.0 +25.726421 19.81773 -1.6251465 128.0 +25.760096 19.593 -1.6195238 128.0 +25.948511 19.486143 -1.6239197 128.0 +26.021858 19.292658 -1.6210061 128.0 +26.148611 19.139116 -1.6215684 128.0 +29.166847 21.074495 -1.8047676 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +20.912912 14.532721 -1.2664665 128.0 +29.490765 20.225836 -1.7933177 128.0 +0 0 -0 128.0 +29.745882 19.868517 -1.79388 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +19.275091 12.368203 -1.135201 128.0 +30.456581 19.279419 -1.8079368 128.0 +30.599716 19.108047 -1.8094703 128.0 +24.179783 14.893965 -1.4165426 128.0 +20.076406 12.197365 -1.1653594 128.0 +20.221121 12.116035 -1.1695509 128.0 +19.995857 11.814951 -1.1517625 128.0 +20.033459 11.671927 -1.1497179 128.0 +19.966137 11.4692 -1.1415393 128.0 +19.990944 11.320886 -1.1388813 128.0 +19.997244 11.162965 -1.135201 128.0 +19.96036 10.982288 -1.1290671 128.0 +20.022102 10.856751 -1.1287603 128.0 +19.990566 10.681456 -1.1230866 128.0 +19.077438 10.043626 -1.0665013 128.0 +20.089996 10.419704 -1.1213486 128.0 +20.082401 10.259893 -1.1172594 128.0 +20.161928 10.145005 -1.1182306 128.0 +0 0 -0 128.0 +20.757034 10.127141 -1.1451175 128.0 +20.893503 10.035473 -1.1493601 128.0 +21.401619 10.11836 -1.1746625 128.0 +21.875299 10.17853 -1.1979202 128.0 +22.179794 10.155107 -1.2115681 128.0 +22.569502 10.16647 -1.2299699 128.0 +22.692635 10.054897 -1.2333946 128.0 +23.019415 10.031157 -1.2482182 128.0 +25.663755 10.99646 -1.3920583 128.0 +25.718779 10.833744 -1.3913937 128.0 +25.602066 10.600096 -1.3812728 128.0 +25.22999 10.265176 -1.357146 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +26.134979 10.076729 -1.3966587 128.0 +26.201921 9.9182987 -1.3969653 128.0 +27.194723 10.103728 -1.4478767 128.0 +27.757257 10.119318 -1.4751726 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +34.81525 11.970821 -1.8473471 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +36.530758 8.9062271 -1.8875242 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +36.030876 7.8528714 -1.8504653 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +36.133072 7.1811285 -1.8485739 128.0 +36.16861 6.9577761 -1.848165 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +35.700138 6.1885242 -1.8174955 128.0 +0 0 -0 128.0 +35.478565 5.7025843 -1.8022119 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +35.299671 5.0091548 -1.7878484 128.0 +35.355473 4.7959552 -1.7891773 128.0 +35.381264 4.5785437 -1.789024 128.0 +35.41761 4.3624606 -1.789484 128.0 +0 0 -0 128.0 +35.931042 3.978709 -1.8133041 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +35.956539 2.8683083 -1.8092147 128.0 +35.894775 2.6418407 -1.8051766 128.0 +35.994011 2.4271863 -1.8094703 128.0 +35.984303 2.2048204 -1.8082435 128.0 +36.031059 1.9858508 -1.8099815 128.0 +36.033588 1.7642918 -1.8095214 128.0 +17.133806 0.73417145 -0.84077364 128.0 +17.137989 0.62902659 -0.84077364 128.0 +18.617907 0.56887686 -0.91637397 128.0 +18.614058 0.45445862 -0.91601616 128.0 +18.597525 0.33989081 -0.91504496 128.0 +18.595264 0.22572392 -0.91484052 128.0 +18.3706 0.11028069 -0.9032883 128.0 +18.279051 -0.0024232266 -0.89858568 128.0 +17.741405 -0.11117904 -0.87108535 128.0 +17.917145 -0.22224009 -0.88013285 128.0 +18.008307 -0.33390126 -0.88488662 128.0 +17.962988 -0.44332954 -0.88268864 128.0 +17.98189 -0.55421829 -0.8838132 128.0 +17.97316 -0.6643579 -0.88355762 128.0 +17.953779 -0.77398044 -0.88279086 128.0 +17.87388 -0.88043827 -0.87895721 128.0 +17.950907 -0.99468523 -0.88319981 128.0 +17.920542 -1.1033367 -0.88197303 128.0 +17.695223 -1.1984806 -0.87077862 128.0 +18.325954 -1.3542525 -0.90354389 128.0 +18.307344 -1.4658751 -0.90303278 128.0 +18.330839 -1.5810133 -0.90471959 128.0 +0 -0 -0 128.0 +17.293335 -1.7055018 -0.85242808 128.0 +17.306383 -1.81408 -0.8536548 128.0 +27.430222 -3.0462334 -1.3755989 128.0 +27.426884 -3.2163467 -1.3764168 128.0 +27.410597 -3.3850641 -1.3766212 128.0 +27.402185 -3.5548594 -1.3772857 128.0 +25.398718 -3.4534619 -1.2749518 128.0 +27.393082 -3.8960636 -1.379177 128.0 +27.38249 -4.0661254 -1.3798926 128.0 +27.366896 -4.2355924 -1.3804038 128.0 +27.485331 -4.4267826 -1.3879178 128.0 +31.09816 -5.204783 -1.5768421 128.0 +15.373507 -2.6694827 -0.76164627 128.0 +15.094407 -2.7165127 -0.74799836 128.0 +14.982222 -2.7913287 -0.74304008 128.0 +13.433047 -2.5879655 -0.66319716 128.0 +13.288606 -2.6447918 -0.65650094 128.0 +13.116586 -2.694315 -0.64837354 128.0 +13.120323 -2.7790937 -0.64944696 128.0 +13.058142 -2.8497472 -0.64709562 128.0 +12.914715 -2.9015651 -0.64050168 128.0 +12.905425 -2.9827783 -0.64096171 128.0 +12.76154 -3.0321164 -0.63436776 128.0 +12.806728 -3.1259983 -0.63774145 128.0 +12.698184 -3.1821775 -0.63303876 128.0 +11.009988 -2.8308659 -0.54486394 128.0 +12.752813 -3.3627269 -0.63804811 128.0 +12.72037 -3.4377856 -0.63743472 128.0 +12.710587 -3.5189705 -0.63804811 128.0 +12.70605 -3.601799 -0.63896823 128.0 +7.9101691 -2.2943764 -0.38456458 128.0 +7.9103031 -2.3471324 -0.3853313 128.0 +7.9043531 -2.3982358 -0.38579136 128.0 +7.865643 -2.439292 -0.38451347 128.0 +7.9047918 -2.5047114 -0.38742706 128.0 +7.9120774 -2.5605502 -0.38865384 128.0 +7.9180264 -2.6162591 -0.38982952 128.0 +25.249105 -8.5176544 -1.3268855 128.0 +25.197311 -8.6727448 -1.3269366 128.0 +25.170948 -8.8367844 -1.328419 128.0 +25.073002 -8.9755793 -1.3260676 128.0 +27.075788 -9.8804741 -1.4382159 128.0 +10.954924 -4.0732636 -0.561221 128.0 +10.997898 -4.1662388 -0.56495243 128.0 +7.1698499 -2.766084 -0.3563486 128.0 +7.1276464 -2.8001618 -0.35496849 128.0 +7.122385 -2.8486667 -0.35563299 128.0 +26.487511 -10.78636 -1.4268169 128.0 +26.366394 -10.926122 -1.4238012 128.0 +26.174625 -11.035315 -1.4169005 128.0 +9.0649776 -3.8866782 -0.4678323 128.0 +9.0409594 -3.9422269 -0.4678323 128.0 +8.9983406 -3.9895291 -0.46680999 128.0 +24.494764 -11.042613 -1.3382332 128.0 +5.6276159 -2.577692 -0.27982816 128.0 +5.5827231 -2.5986819 -0.27819246 128.0 +5.3346725 -2.5231044 -0.26505569 128.0 +24.205587 -11.635226 -1.3376198 128.0 +23.234529 -11.344434 -1.2864017 128.0 +23.142117 -11.475692 -1.2851238 128.0 +3.8163455 -1.9206208 -0.18168572 128.0 +5.3036723 -2.7105634 -0.26786706 128.0 +3.8137624 -1.9783512 -0.1829125 128.0 +3.7856476 -1.993335 -0.18199241 128.0 +3.8032885 -2.0325382 -0.18373035 128.0 +3.7898679 -2.0553601 -0.18367924 128.0 +3.7859333 -2.0833929 -0.18419039 128.0 +4.4662056 -2.4938154 -0.2248275 128.0 +4.5029511 -2.5507181 -0.22789446 128.0 +4.5071292 -2.5897479 -0.22907013 128.0 +3.629272 -2.1148078 -0.17800538 128.0 +3.6807005 -2.1751618 -0.18183906 128.0 +3.63902 -2.1807566 -0.18015224 128.0 +3.6213038 -2.2004499 -0.17989667 128.0 +3.7701106 -2.322726 -0.18965979 128.0 +3.7811949 -2.3616934 -0.19119327 128.0 +3.765789 -2.3843155 -0.19114216 128.0 +3.7805004 -2.426264 -0.19293121 128.0 +3.7772603 -2.457042 -0.19364683 128.0 +5.0526242 -3.3314211 -0.27277419 128.0 +3.4105635 -2.2784319 -0.1729449 128.0 +3.346081 -2.2651503 -0.16982684 128.0 +3.354351 -2.3008981 -0.17120697 128.0 +3.7124124 -2.5803056 -0.19441357 128.0 +3.6907952 -2.5990093 -0.19405575 128.0 +4.9168258 -3.5081742 -0.2721608 128.0 +4.8757849 -3.5242326 -0.27093402 128.0 +17.650635 -12.927366 -1.0828072 128.0 +17.73941 -13.160392 -1.0935416 128.0 +3.9638124 -2.9773953 -0.2167512 128.0 +3.1833727 -2.4215853 -0.16773109 128.0 +3.1470985 -2.4246094 -0.16635096 128.0 +3.1353111 -2.4463325 -0.16655542 128.0 +3.1453106 -2.4853451 -0.16819113 128.0 +3.1518304 -2.5220749 -0.16962238 128.0 +5.3813148 -4.3615985 -0.31755167 128.0 +5.3251195 -4.3704543 -0.31560928 128.0 +15.863201 -13.186062 -1.0188102 128.0 +15.46721 -13.018175 -0.99775046 128.0 +15.307992 -13.045462 -0.99243438 128.0 +4.9417987 -4.2629776 -0.29705423 128.0 +14.816592 -12.943868 -0.96999454 128.0 +4.9137979 -4.3451357 -0.29874104 128.0 +3.6550581 -3.2718549 -0.21409318 128.0 +3.4521706 -3.128526 -0.20146756 128.0 +3.4012733 -3.120609 -0.19926958 128.0 +3.8546512 -3.5806065 -0.23229042 128.0 +2.7633631 -2.5982244 -0.1571501 128.0 +2.7401371 -2.6082432 -0.15663895 128.0 +2.7190492 -2.6201549 -0.15628113 128.0 +2.7100675 -2.6437654 -0.1567923 128.0 +4.2551756 -4.2032866 -0.26914495 128.0 +4.2187138 -4.2187219 -0.26837823 128.0 +3.5626254 -3.6063733 -0.22247617 128.0 +2.6910908 -2.7573781 -0.16021706 128.0 +2.6838222 -2.7839072 -0.16093268 128.0 +2.6852794 -2.819855 -0.16231281 128.0 +3.3581281 -3.5704737 -0.2138887 128.0 +3.3599417 -3.6166258 -0.21567777 128.0 +7.6824017 -8.3739796 -0.54465944 128.0 +7.6167936 -8.4054174 -0.54358602 128.0 +7.5850554 -8.4743214 -0.54511946 128.0 +11.642211 -13.169809 -0.86270231 128.0 +4.0808992 -4.6726975 -0.2805438 128.0 +7.49822 -8.6941872 -0.55063999 128.0 +10.935498 -12.838995 -0.82620561 128.0 +3.9704137 -4.7187428 -0.27865252 128.0 +3.3919485 -4.0815759 -0.23464175 128.0 +3.3674738 -4.1030841 -0.23469287 128.0 +3.2460489 -4.0049415 -0.22687215 128.0 +2.9961901 -3.7432618 -0.20841931 128.0 +2.7218137 -3.4434125 -0.18766627 128.0 +10.335429 -13.247096 -0.82298529 128.0 +10.259438 -13.317385 -0.82344538 128.0 +10.164834 -13.363392 -0.8223719 128.0 +9.7852087 -13.0294 -0.79701847 128.0 +9.7288675 -13.121286 -0.79906309 128.0 +9.6782551 -13.221836 -0.80167001 128.0 +9.618001 -13.310114 -0.80351019 128.0 +9.5396299 -13.373757 -0.80381685 128.0 +3.001893 -4.2621136 -0.22983687 128.0 +2.9357934 -4.2230425 -0.22625875 128.0 +2.9216876 -4.2582726 -0.22733217 128.0 +1.4742577 -2.1761827 -0.097549006 128.0 +2.8880711 -4.3220425 -0.22907013 128.0 +2.8323698 -4.2954865 -0.22636098 128.0 +1.445385 -2.2205324 -0.098622441 128.0 +1.4365865 -2.2369242 -0.099082485 128.0 +1.4324484 -2.2608862 -0.10000257 128.0 +1.4100858 -2.2560792 -0.099184714 128.0 +1.394645 -2.2621379 -0.099031366 128.0 +1.3791829 -2.2680919 -0.098878019 128.0 +1.3816646 -2.3039265 -0.10051373 128.0 +1.3832499 -2.339016 -0.10209832 128.0 +1.3568069 -2.3267488 -0.10087154 128.0 +1.3703594 -2.3835268 -0.10373403 128.0 +1.5274456 -2.6951873 -0.12157346 128.0 +7.4014263 -13.258048 -0.74017763 128.0 +7.2616897 -13.197335 -0.73399258 128.0 +7.1220274 -13.133656 -0.72770536 128.0 +7.0375419 -13.170061 -0.72729641 128.0 +1.1281859 -2.1407192 -0.086865798 128.0 +6.7264318 -12.968183 -0.7107349 128.0 +6.6244726 -12.965631 -0.7082302 128.0 +6.5286336 -12.973917 -0.70639002 128.0 +6.4914675 -13.099641 -0.71129715 128.0 +1.1031483 -2.2586918 -0.091670685 128.0 +1.3279262 -2.7623591 -0.11988664 128.0 +6.1404076 -12.98667 -0.69826263 128.0 +6.0627136 -13.02863 -0.69851822 128.0 +5.9843202 -13.069218 -0.69872266 128.0 +1.3495524 -2.9935362 -0.13108101 128.0 +1.2640066 -2.8501871 -0.12259578 128.0 +5.6805129 -13.034328 -0.69074857 128.0 +5.5996418 -13.067101 -0.69064635 128.0 +5.5065656 -13.070842 -0.68895954 128.0 +5.3720164 -12.973353 -0.68170106 128.0 +5.290431 -13.001446 -0.68144548 128.0 +1.2664723 -3.1655707 -0.13752161 128.0 +5.1432581 -13.097925 -0.68323457 128.0 +5.0997958 -13.225217 -0.68849951 128.0 +1.2143533 -3.2051587 -0.1384417 128.0 +1.194664 -3.2125494 -0.1384417 128.0 +4.7874351 -13.130126 -0.67832744 128.0 +4.6896305 -13.111295 -0.67572051 128.0 +1.1789535 -3.3583951 -0.14518899 128.0 +1.1641692 -3.3825657 -0.14610907 128.0 +4.4392085 -13.170787 -0.67439151 128.0 +1.0186279 -3.0817454 -0.12913862 128.0 +4.2664943 -13.191012 -0.67260247 128.0 +4.1444817 -13.087455 -0.66565067 128.0 +4.0437059 -13.046816 -0.66212368 128.0 +0.97890592 -3.2252841 -0.13552809 128.0 +0.96392292 -3.2475073 -0.13639706 128.0 +0.94592422 -3.2600753 -0.13675487 128.0 +0.92100561 -3.2485216 -0.13583478 128.0 +3.613646 -13.063646 -0.65675652 128.0 +3.5508587 -13.150174 -0.66018128 128.0 +3.4652715 -13.153364 -0.65921009 128.0 +0.86857927 -3.3775165 -0.14150865 128.0 +0.87378341 -3.4864452 -0.14697805 128.0 +0.85923374 -3.5198791 -0.1484604 128.0 +3.1109934 -13.106178 -0.65246278 128.0 +0.82226342 -3.5574052 -0.14989164 128.0 +0.72259015 -3.2154725 -0.13169441 128.0 +1.828351 -8.384716 -0.40225065 128.0 +1.7940208 -8.4768744 -0.40649328 128.0 +1.717896 -8.3703232 -0.40035936 128.0 +1.6602757 -8.3493614 -0.39872366 128.0 +1.6193883 -8.413331 -0.40153503 128.0 +1.543813 -8.294486 -0.39483887 128.0 +0.5660224 -3.1442549 -0.12653171 128.0 +0.54654843 -3.1466849 -0.12648059 128.0 +2.2495885 -13.463464 -0.66166365 128.0 +2.1640837 -13.459265 -0.66074359 128.0 +2.0907552 -13.532496 -0.66386163 128.0 +2.008121 -13.548034 -0.664015 128.0 +1.9328097 -13.615473 -0.66687745 128.0 +1.8415804 -13.570667 -0.66396385 128.0 +1.7655814 -13.638166 -0.66687745 128.0 +1.6828424 -13.656672 -0.6672864 128.0 +1.5972754 -13.651862 -0.66651964 128.0 +1.5113913 -13.642546 -0.66554844 128.0 +1.425474 -13.630704 -0.66447502 128.0 +1.3396616 -13.617328 -0.66335046 128.0 +1.2464647 -13.520871 -0.6579833 128.0 +1.1586058 -13.471548 -0.65506971 128.0 +1.0760829 -13.480394 -0.65517193 128.0 +0.99693888 -13.535547 -0.65767664 128.0 +0.91561371 -13.567317 -0.65900564 128.0 +0.83173853 -13.562712 -0.65849447 128.0 +0.75157958 -13.623402 -0.66135699 128.0 +0.66001815 -13.465164 -0.65302509 128.0 +0.57981813 -13.525834 -0.65593868 128.0 +0.49696049 -13.53313 -0.65614313 128.0 +0.41464394 -13.559881 -0.65736991 128.0 +0.33029157 -13.515245 -0.65496749 128.0 +0.049341578 -2.6450548 -0.098417982 128.0 +0.033183254 -2.6512995 -0.098724678 128.0 +0.082632691 -13.715775 -0.66503727 128.0 +-0.0015296314 -13.728008 -0.66565067 128.0 +-0.085579678 -13.698778 -0.66416836 128.0 +-0.170068 -13.732947 -0.66595739 128.0 +-0.25221062 -13.617814 -0.6601302 128.0 +-0.33709726 -13.669923 -0.66289043 128.0 +-0.41979644 -13.629664 -0.66094804 128.0 +-0.5040468 -13.643799 -0.66181701 128.0 +-0.5881418 -13.649428 -0.66227704 128.0 +-0.67808115 -13.771246 -0.66871762 128.0 +-0.77556711 -14.001158 -0.68072987 128.0 +-0.86355084 -14.030027 -0.68246782 128.0 +-0.958538 -14.15599 -0.68921512 128.0 +-1.0447901 -14.141874 -0.68880618 128.0 +-1.1135943 -13.911209 -0.6773051 128.0 +-1.2085495 -14.015553 -0.68303007 128.0 +-1.2955364 -14.018813 -0.68359238 128.0 +-1.3988907 -14.186514 -0.69263989 128.0 +-1.491537 -14.231299 -0.69540012 128.0 +-1.587101 -14.296323 -0.69923383 128.0 +-1.6796789 -14.327975 -0.70138067 128.0 +-1.7685417 -14.325328 -0.70178962 128.0 +-1.8557643 -14.309256 -0.70153403 128.0 +-1.947298 -14.325307 -0.70296526 128.0 +-2.0545721 -14.449534 -0.71001923 128.0 +-2.1500905 -14.483086 -0.71242172 128.0 +-2.2545013 -14.570288 -0.71763551 128.0 +-2.3397305 -14.530544 -0.71630651 128.0 +-2.4304931 -14.525764 -0.71681768 128.0 +-2.5161572 -14.490898 -0.71579534 128.0 +-2.6080327 -14.491896 -0.71666431 128.0 +-2.7234383 -14.617979 -0.72407615 128.0 +-2.8172395 -14.622568 -0.72520065 128.0 +-2.8770697 -14.455148 -0.71737993 128.0 +-2.9886284 -14.548743 -0.72320718 128.0 +-3.042232 -14.362087 -0.71441525 128.0 +-3.241497 -14.85247 -0.74109769 128.0 +-3.3347592 -14.842046 -0.74160886 128.0 +-3.4451137 -14.904984 -0.74600482 128.0 +-3.5323472 -14.866076 -0.74508476 128.0 +-3.6324995 -14.880989 -0.74702716 128.0 +-3.6890113 -14.719893 -0.7397176 128.0 +-3.7725439 -14.670867 -0.73833746 128.0 +-3.8688598 -14.671584 -0.73961532 128.0 +-3.9788795 -14.721804 -0.74355125 128.0 +-4.0875282 -14.763522 -0.74707824 128.0 +-4.1864843 -14.767949 -0.74866283 128.0 +-4.2878757 -14.779388 -0.75065637 128.0 +-4.3770585 -14.748013 -0.75040078 128.0 +-4.4738503 -14.741903 -0.75152534 128.0 +-4.5659962 -14.719897 -0.75183201 128.0 +-4.7105536 -14.862964 -0.76103288 128.0 +-4.7444425 -14.657057 -0.75152534 128.0 +-4.9051285 -14.841968 -0.7630775 128.0 +-5.0436759 -14.952588 -0.77069378 128.0 +-5.1226506 -14.884531 -0.76870024 128.0 +-5.1367941 -14.633264 -0.75679028 128.0 +-5.1736336 -14.453851 -0.74876511 128.0 +-5.2694139 -14.441535 -0.74983853 128.0 +-5.4216371 -14.580227 -0.75919271 128.0 +-5.5768199 -14.72039 -0.76870024 128.0 +-5.9745021 -15.4825 -0.81240433 128.0 +-6.0880198 -15.492953 -0.81501126 128.0 +-6.1647882 -15.409872 -0.81250656 128.0 +-6.2607322 -15.375456 -0.812711 128.0 +-6.3522801 -15.330293 -0.81235319 128.0 +-6.5835838 -15.61679 -0.83044821 128.0 +-6.9170513 -16.130472 -0.86132222 128.0 +-7.0003242 -16.052025 -0.85932869 128.0 +-6.9921994 -15.768668 -0.84588522 128.0 +-7.0576258 -15.656275 -0.84200042 128.0 +-7.1252656 -15.550939 -0.83852452 128.0 +-7.2015772 -15.466187 -0.83622432 128.0 +-7.2984762 -15.426221 -0.8364799 128.0 +-1.6427835 -3.4199102 -0.15720122 128.0 +-1.6615456 -3.4052787 -0.15694565 128.0 +-1.6779716 -3.3860726 -0.15643448 128.0 +-1.6955721 -3.3694692 -0.15607667 128.0 +-1.7148509 -3.3563342 -0.15592332 128.0 +-1.7450751 -3.3643632 -0.15699676 128.0 +-1.7740653 -3.3694961 -0.15791684 128.0 +-4.5003343 -8.4180307 -0.45157745 128.0 +-4.6543164 -8.5789785 -0.46256739 128.0 +-9.3829746 -17.042236 -0.95874906 128.0 +-4.65452 -8.3337679 -0.45157745 128.0 +-4.6981812 -8.2920189 -0.45081073 128.0 +-9.7413673 -16.947161 -0.96350282 128.0 +-9.8678074 -16.925892 -0.96580303 128.0 +-9.9445353 -16.819466 -0.96309388 128.0 +-10.102506 -16.849775 -0.96856326 128.0 +-10.228014 -16.824165 -0.97076124 128.0 +-10.630297 -17.246519 -0.99994844 128.0 +-10.84548 -17.356279 -1.0105294 128.0 +-10.995063 -17.35774 -1.0146698 128.0 +-10.601124 -16.510946 -0.96728539 128.0 +-10.813913 -16.617178 -0.97776413 128.0 +-11.723476 -17.775164 -1.0528533 128.0 +-11.848972 -17.727802 -1.0543869 128.0 +-11.952484 -17.647324 -1.0539268 128.0 +-12.094451 -17.623056 -1.0569937 128.0 +-12.207488 -17.555893 -1.0574538 128.0 +-12.287369 -17.441473 -1.0550002 128.0 +-12.348899 -17.302347 -1.0510131 128.0 +-12.43318 -17.196306 -1.0491219 128.0 +-12.507772 -17.077799 -1.0464638 128.0 +-12.798584 -17.25177 -1.0624632 128.0 +-12.922198 -17.196865 -1.0639966 128.0 +-13.069814 -17.17288 -1.0675747 128.0 +-13.235303 -17.170666 -1.0726352 128.0 +-14.002316 -17.936943 -1.127687 128.0 +-14.150514 -17.89926 -1.1308562 128.0 +-14.288164 -17.847178 -1.1331564 128.0 +-14.480427 -17.86157 -1.1399037 128.0 +-14.600524 -17.785505 -1.1407726 128.0 +-14.58233 -17.542757 -1.1306006 128.0 +-14.678119 -17.439199 -1.1296805 128.0 +-15.115233 -17.736448 -1.1557496 128.0 +-15.991733 -18.533289 -1.2159129 128.0 +-16.277966 -18.63261 -1.2293564 128.0 +-15.822266 -17.888329 -1.1853456 128.0 +-15.837784 -17.686012 -1.1781384 128.0 +-16.775146 -18.502954 -1.2413175 128.0 +-16.030664 -17.465311 -1.1764004 128.0 +-15.214964 -16.37389 -1.1070361 128.0 +-17.046503 -18.120489 -1.2363592 128.0 +-17.217291 -18.078468 -1.2408063 128.0 +-16.652712 -17.272251 -1.1910195 128.0 +-16.678852 -17.088276 -1.1851923 128.0 +-16.760927 -16.962883 -1.1835566 128.0 +-16.955809 -16.9508 -1.1901505 128.0 +-17.109953 -16.896263 -1.1937798 128.0 +-16.190952 -15.793789 -1.1206841 128.0 +-16.282522 -15.689295 -1.1203263 128.0 +-17.240818 -16.409781 -1.1812564 128.0 +-17.348459 -16.310524 -1.1817676 128.0 +-16.218006 -15.061416 -1.0958418 128.0 +-16.144518 -14.809731 -1.0843407 128.0 +-14.402562 -13.050145 -0.95777786 128.0 +-18.520473 -16.575144 -1.2351325 128.0 +-16.757097 -14.812977 -1.1077517 128.0 +-17.931782 -15.656325 -1.1814097 128.0 +-18.056252 -15.570786 -1.1833521 128.0 +-10.188469 -8.6782532 -0.64801574 128.0 +-18.116804 -15.239396 -1.1747136 128.0 +-17.924191 -14.890559 -1.1556984 128.0 +-10.337215 -8.4816456 -0.64740235 128.0 +-10.367335 -8.4004555 -0.64597106 128.0 +-18.068127 -14.456416 -1.1473665 128.0 +-18.152571 -14.342185 -1.1471109 128.0 +-10.587923 -8.2610312 -0.65036702 128.0 +-17.549463 -13.519276 -1.0968641 128.0 +-17.620163 -13.402271 -1.0960974 128.0 +-17.795504 -13.364066 -1.102078 128.0 +-17.942152 -13.302799 -1.1062183 128.0 +-18.049229 -13.211332 -1.107854 128.0 +-18.171238 -13.130164 -1.1104609 128.0 +-18.344965 -13.085108 -1.1163392 128.0 +-19.534708 -13.753581 -1.1858057 128.0 +-19.516212 -13.562225 -1.1794162 128.0 +-19.448338 -13.338858 -1.1700621 128.0 +-19.533953 -13.222073 -1.1703176 128.0 +-19.248468 -12.857351 -1.1477755 128.0 +-19.400377 -12.787365 -1.1522737 128.0 +-19.764809 -12.854287 -1.1697553 128.0 +-18.417719 -11.818117 -1.0830628 128.0 +-19.950598 -12.629469 -1.1715443 128.0 +-20.175114 -12.598853 -1.1804385 128.0 +-19.498632 -12.010793 -1.1351498 128.0 +-23.618608 -14.349179 -1.3774902 128.0 +-19.702812 -11.805512 -1.1386257 128.0 +-22.281315 -13.165204 -1.2876285 128.0 +-21.153557 -12.324446 -1.2160662 128.0 +-22.437731 -12.888798 -1.2874241 128.0 +-21.935869 -12.422168 -1.2532786 128.0 +-22.427645 -12.519514 -1.2776608 128.0 +-22.540792 -12.401883 -1.2798078 128.0 +-16.22933 -8.800416 -0.90793985 128.0 +-22.268473 -11.898447 -1.2552722 128.0 +-16.666618 -8.7745771 -0.92705721 128.0 +-6.8676977 -3.5628054 -0.35900664 128.0 +-6.896544 -3.5242336 -0.35941556 128.0 +-6.9126859 -3.4791577 -0.35910887 128.0 +-6.9177957 -3.4286962 -0.35818878 128.0 +-6.9207516 -3.3774276 -0.35716647 128.0 +-6.9179382 -3.3236578 -0.35583746 128.0 +-6.9228525 -3.2738917 -0.35496849 128.0 +-6.9491487 -3.2343011 -0.35532629 128.0 +-6.9843001 -3.198668 -0.35619527 128.0 +-7.0374875 -3.1709278 -0.35808656 128.0 +-7.0230269 -3.1127191 -0.35619527 128.0 +-25.843914 -11.26183 -1.4059106 128.0 +-26.082357 -11.175803 -1.415367 128.0 +-26.237877 -11.052382 -1.420223 128.0 +-26.565414 -10.998906 -1.4346377 128.0 +-26.834993 -10.918114 -1.4458321 128.0 +-22.058779 -8.8177185 -1.178905 128.0 +-27.472668 -10.786519 -1.4736391 128.0 +-28.039667 -10.811019 -1.5011394 128.0 +-22.378935 -8.4713535 -1.1877481 128.0 +-22.413641 -8.3276196 -1.186828 128.0 +-28.176678 -10.272204 -1.4980214 128.0 +-22.791559 -8.1511402 -1.2019072 128.0 +-28.421242 -9.9679623 -1.5045642 128.0 +-28.599922 -9.8339729 -1.5109537 128.0 +-28.749634 -9.6885977 -1.5158097 128.0 +-28.847424 -9.524847 -1.5179055 128.0 +-27.867649 -9.0121346 -1.4620869 128.0 +-27.844347 -8.8162556 -1.4578954 128.0 +-27.865484 -8.63519 -1.4561574 128.0 +-27.869202 -8.4492731 -1.4535506 128.0 +-27.918606 -8.277544 -1.4534483 128.0 +-27.96887 -8.1060829 -1.4534483 128.0 +-12.533863 -3.5500789 -0.62976736 128.0 +-13.06846 -3.6149771 -0.6570121 128.0 +-30.151623 -8.1400919 -1.5615072 128.0 +-12.783478 -3.3678582 -0.6396327 128.0 +-12.799065 -3.2881148 -0.63937712 128.0 +-12.771528 -3.197638 -0.63687247 128.0 +-12.590059 -3.0702529 -0.62629145 128.0 +-13.091603 -3.1075349 -0.65169609 128.0 +-31.265734 -7.217484 -1.6053647 128.0 +-31.258759 -7.0141368 -1.6027067 128.0 +-31.317795 -6.8258195 -1.6035756 128.0 +-31.343456 -6.6302223 -1.6027578 128.0 +-18.370798 -3.7689366 -0.92286569 128.0 +-18.469004 -3.6711321 -0.92680162 128.0 +-19.005077 -3.6565809 -0.95358634 128.0 +-32.05835 -5.96347 -1.631996 128.0 +-18.729057 -3.3656955 -0.93697369 128.0 +-18.751324 -3.251054 -0.93707591 128.0 +-26.672998 -4.4555888 -1.3471273 128.0 +-26.546013 -4.2671232 -1.3391533 128.0 +-19.089281 -2.9487877 -0.95164394 128.0 +-26.519321 -3.9296267 -1.3351662 128.0 +-26.507336 -3.7617831 -1.3333261 128.0 +-24.237928 -3.2882349 -1.2149417 128.0 +-26.47821 -3.4267321 -1.3295435 128.0 +-26.484861 -3.2624915 -1.3288279 128.0 +-23.800364 -2.783783 -1.189486 128.0 +-26.556652 -2.9409719 -1.3305658 128.0 +-26.82848 -2.8045382 -1.3436515 128.0 +-26.736847 -2.6292205 -1.3380798 128.0 +-25.89921 -2.3865294 -1.2942225 128.0 +-26.016848 -2.2364609 -1.2995385 128.0 +-26.998734 -2.154022 -1.3492743 128.0 +-27.207655 -2.0027549 -1.359344 128.0 +-29.910795 -2.0171738 -1.497408 128.0 +-32.725681 -2.0052648 -1.6411458 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-38.362576 -1.6423633 -1.9283147 128.0 +-38.40287 -1.4080775 -1.9298993 128.0 +-38.502625 -1.1752158 -1.9346019 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-38.329044 0.24154732 -1.9248388 128.0 +-0 0 -0 128.0 +-38.402077 0.71335316 -1.928877 128.0 +-38.301132 0.94659877 -1.9239699 128.0 +-0 0 -0 128.0 +-38.380444 1.4200151 -1.9287747 128.0 +-38.273228 1.6512647 -1.9237654 128.0 +-0 0 -0 128.0 +-37.744522 2.0927651 -1.8978497 128.0 +-37.86454 2.3325541 -1.9046992 128.0 +-37.660198 2.5520079 -1.8949871 128.0 +-31.019409 -0.7847842 -1.9204605 128.0 +-31.033619 -0.59462923 -1.9210901 128.0 +-31.025705 -0.40405625 -1.9203975 128.0 +-31.061533 -0.21391261 -1.9225383 128.0 +-31.054276 -0.023312513 -1.9220346 128.0 +-31.041859 0.16716903 -1.9212791 128.0 +-31.009312 0.35727912 -1.9193271 128.0 +-0 0 -0 128.0 +-30.94173 0.73633659 -1.9154863 128.0 +-30.912689 0.92546117 -1.9139751 128.0 +-0 0 -0 128.0 +-30.856127 1.3029277 -1.9112676 128.0 +-30.815653 1.4906902 -1.9092528 128.0 +-30.763075 1.6774075 -1.9065453 128.0 +-0 0 -0 128.0 +-30.420525 2.0334289 -1.8863336 128.0 +-30.459234 2.2238257 -1.8896078 128.0 +-30.473867 2.4129624 -1.8914337 128.0 +-30.446556 2.5988827 -1.8906782 128.0 +-30.36941 2.7801013 -1.8868374 128.0 +-30.380585 2.969207 -1.8886633 128.0 +-30.866072 3.2079666 -1.9206494 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-30.436649 4.1105289 -1.9005007 128.0 +-30.110443 4.2547617 -1.8813595 128.0 +-30.043289 4.4334626 -1.8787779 128.0 +-30.009602 4.6168108 -1.8784001 128.0 +-29.974794 4.7999125 -1.8780223 128.0 +-29.928043 4.9809589 -1.8769519 128.0 +-29.882166 5.161952 -1.8760074 128.0 +-29.83814 5.3430977 -1.8752518 128.0 +-29.797926 5.524807 -1.8748111 128.0 +-29.778168 5.7103586 -1.8757555 128.0 +-29.758232 5.89607 -1.876763 128.0 +-29.746918 6.0837507 -1.8784001 128.0 +-29.858437 6.2976713 -1.8880336 128.0 +-29.95772 6.5108566 -1.8969747 128.0 +-29.982458 6.7091517 -1.9011933 128.0 +-30.078835 6.9247875 -1.9101343 128.0 +-30.108618 7.1264567 -1.9148567 128.0 +-30.302883 7.3690753 -1.9303459 128.0 +-30.268717 7.5577731 -1.9311016 128.0 +-30.378393 7.7834826 -1.9413018 128.0 +-30.344542 7.9735389 -1.9422463 128.0 +-30.508982 8.2171974 -1.9562244 128.0 +-30.408922 8.3907042 -1.9530133 128.0 +-30.59889 8.6455116 -1.9688803 128.0 +-30.630594 8.8577738 -1.9744842 128.0 +-30.551743 9.038475 -1.97291 128.0 +-30.68294 9.2824068 -1.9852512 128.0 +-30.713125 9.4976244 -1.9910439 128.0 +-30.775129 9.7240839 -1.9990405 128.0 +-30.730082 9.9176378 -2.0000479 128.0 +-30.82505 10.157542 -2.010437 128.0 +-30.994848 10.424754 -2.0259264 128.0 +-30.900091 10.604373 -2.0239115 128.0 +-30.971972 10.841913 -2.0331044 128.0 +-30.94058 11.044498 -2.035497 128.0 +-30.969767 11.269629 -2.0420454 128.0 +-31.092798 11.53093 -2.055016 128.0 +-0 0 -0 128.0 +-31.043028 11.947823 -2.0613756 128.0 +-31.03046 12.16211 -2.0655313 128.0 +-0 0 -0 128.0 +-30.94915 12.570528 -2.0703166 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-30.583145 13.082727 -2.0614386 128.0 +-30.046543 13.071865 -2.030082 128.0 +-29.634459 13.109424 -2.0072258 128.0 +-29.010067 13.046638 -1.969636 128.0 +-28.414812 12.989141 -1.9339349 128.0 +-28.013262 13.013979 -1.9115825 128.0 +-27.788479 13.117457 -1.9015081 128.0 +-27.384407 13.132792 -1.8789037 128.0 +-27.01889 13.162024 -1.8589439 128.0 +-26.63706 13.178862 -1.8377879 128.0 +-26.311342 13.219293 -1.8205355 128.0 +-25.955915 13.240809 -1.8011423 128.0 +-25.7572 13.339241 -1.7928311 128.0 +-25.205784 13.250449 -1.7593968 128.0 +-25.277218 13.486603 -1.7703526 128.0 +-24.462923 13.245619 -1.717903 128.0 +-23.984076 13.177298 -1.6893171 128.0 +-23.765907 13.247924 -1.6794316 128.0 +-23.400965 13.23335 -1.6589051 128.0 +-23.179081 13.296241 -1.6487048 128.0 +-22.801174 13.266069 -1.6271079 128.0 +-22.534544 13.296684 -1.6135705 128.0 +-22.252131 13.314795 -1.5988368 128.0 +-22.251926 13.500778 -1.6048814 128.0 +-22.212023 13.663727 -1.6080925 128.0 +-22.151476 13.814548 -1.6098555 128.0 +-22.062077 13.947539 -1.6095408 128.0 +-22.002972 14.099878 -1.6115556 128.0 +-21.953705 14.259083 -1.6143891 128.0 +-21.939159 14.441808 -1.6199299 128.0 +-21.953083 14.644827 -1.6277375 128.0 +-21.920689 14.818377 -1.632145 128.0 +-21.822765 14.94809 -1.6316414 128.0 +-21.794588 15.126094 -1.6365526 128.0 +-20.555138 14.453583 -1.5481502 128.0 +-20.465252 14.578856 -1.5480872 128.0 +-21.832146 15.755385 -1.6614237 128.0 +-24.223858 17.708384 -1.8559216 128.0 +-24.095495 17.842432 -1.8544105 128.0 +-23.985561 17.989943 -1.8544105 128.0 +-23.869959 18.133154 -1.8540328 128.0 +-23.740053 18.26528 -1.8525845 128.0 +-23.606277 18.394039 -1.8508844 128.0 +-23.489052 18.535448 -1.8505696 128.0 +-23.340572 18.651812 -1.8477992 128.0 +-23.191551 18.767054 -1.8450288 128.0 +-23.07519 18.908367 -1.8449658 128.0 +-22.946447 19.039402 -1.8439584 128.0 +-22.836069 19.185617 -1.8445251 128.0 +-22.612253 19.235493 -1.835773 128.0 +-22.239716 19.155041 -1.8146168 128.0 +-22.033756 19.214396 -1.8072499 128.0 +-21.746363 19.199951 -1.7930199 128.0 +-21.518019 19.234587 -1.7837012 128.0 +-21.407732 19.373623 -1.7843938 128.0 +-21.348061 19.559223 -1.7894939 128.0 +-21.266426 19.725815 -1.7928311 128.0 +-14.965987 14.053778 -1.2580718 128.0 +-21.363451 20.30917 -1.8224874 128.0 +-21.370029 20.566517 -1.8340099 128.0 +-21.206261 20.661037 -1.8307358 128.0 +-14.593845 14.394403 -1.2560569 128.0 +-14.468523 14.44701 -1.2527827 128.0 +-21.014688 21.242275 -1.8479881 128.0 +-20.89023 21.377243 -1.8485548 128.0 +-20.768372 21.515072 -1.8494363 128.0 +-20.54299 21.544592 -1.8409361 128.0 +-13.951496 14.812834 -1.2466122 128.0 +-20.476242 22.009153 -1.8593848 128.0 +-20.346888 22.140991 -1.8599514 128.0 +-20.156988 22.206305 -1.8549142 128.0 +-19.909756 22.206217 -1.844462 128.0 +-19.724825 22.273422 -1.8398657 128.0 +-19.536533 22.335438 -1.8349544 128.0 +-19.33844 22.384657 -1.8290987 128.0 +-19.174814 22.472527 -1.8265802 128.0 +-19.023058 22.573732 -1.8252579 128.0 +-18.88036 22.685429 -1.82488 128.0 +-18.739542 22.799307 -1.8247541 128.0 +-18.588602 22.900688 -1.8236837 128.0 +-15.763615 19.665855 -1.5529355 128.0 +-18.134596 22.910315 -1.8062425 128.0 +-17.919312 22.926012 -1.7986238 128.0 +-17.733179 22.977066 -1.7939644 128.0 +-17.295452 22.696482 -1.7631117 128.0 +-17.345474 23.054184 -1.7830086 128.0 +-17.195953 23.149765 -1.78219 128.0 +-17.042372 23.239552 -1.7809937 128.0 +-16.879557 23.316198 -1.7788528 128.0 +-16.712381 23.38604 -1.7762713 128.0 +-16.507593 23.401699 -1.7695971 128.0 +-16.311226 23.427195 -1.7638043 128.0 +-16.135519 23.480776 -1.7602782 128.0 +-15.919437 23.473616 -1.7522188 128.0 +-15.728478 23.501184 -1.7469298 128.0 +-15.539981 23.530626 -1.7418926 128.0 +-15.332646 23.529379 -1.7346517 128.0 +-15.137788 23.544945 -1.7287959 128.0 +-8.9950495 14.181514 -1.022332 128.0 +-14.772012 23.607952 -1.719792 128.0 +-14.611676 23.673519 -1.717966 128.0 +-14.442789 23.724367 -1.7151326 128.0 +-8.689517 14.473289 -1.0278728 128.0 +-8.5995302 14.524616 -1.0277469 128.0 +-13.892447 23.795719 -1.7012174 128.0 +-13.73622 23.863214 -1.6999581 128.0 +-13.583137 23.935764 -1.6991396 128.0 +-13.416524 23.98382 -1.6966209 128.0 +-13.249352 24.029858 -1.6940393 128.0 +-13.098799 24.10544 -1.6936616 128.0 +-12.423446 23.20085 -1.6232041 128.0 +-12.24965 23.217503 -1.6189854 128.0 +-12.071056 23.223156 -1.6140742 128.0 +-11.915598 23.271912 -1.6123112 128.0 +-11.812127 23.423004 -1.6178521 128.0 +-9.7988224 19.731041 -1.3527077 128.0 +-11.828073 24.188404 -1.6615496 128.0 +-11.66428 24.229052 -1.6593459 128.0 +-11.493597 24.254171 -1.6561346 128.0 +-11.318827 24.269064 -1.6522938 128.0 +-11.130569 24.252796 -1.6463751 128.0 +-10.976619 24.309721 -1.6456195 128.0 +-10.79565 24.305471 -1.6407083 128.0 +-10.633127 24.341074 -1.6386305 128.0 +-10.454424 24.338003 -1.6339711 128.0 +-10.291302 24.369513 -1.6317673 128.0 +-10.113647 24.364912 -1.6271709 128.0 +-9.9417162 24.371988 -1.623456 128.0 +-9.7693367 24.376022 -1.6196151 128.0 +-9.5903368 24.361216 -1.6145779 128.0 +-9.4230433 24.373989 -1.6114926 128.0 +-9.2570181 24.38843 -1.6085963 128.0 +-9.0810661 24.374628 -1.603874 128.0 +-8.9148865 24.384899 -1.6008517 128.0 +-8.7465639 24.387472 -1.5973886 128.0 +-8.5795393 24.391724 -1.5941144 128.0 +-8.4147453 24.400509 -1.591218 128.0 +-8.2370644 24.369425 -1.5857401 128.0 +-8.0669851 24.357927 -1.5816474 128.0 +-7.9025936 24.361401 -1.5786251 128.0 +-7.7351403 24.353312 -1.5749102 128.0 +-7.5612698 24.322166 -1.5697471 128.0 +-7.4037571 24.34137 -1.5679841 128.0 +-7.2411714 24.342337 -1.5650877 128.0 +-7.0802469 24.347017 -1.5625061 128.0 +-6.9138083 24.330482 -1.5586023 128.0 +-6.7571826 24.346483 -1.5569023 128.0 +-3.8365011 14.160343 -0.88840598 128.0 +-6.4405584 24.361959 -1.5526206 128.0 +-6.283978 24.37396 -1.5508577 128.0 +-3.6379607 14.478286 -0.90465087 128.0 +-3.5462074 14.488703 -0.90389532 128.0 +-5.8280225 24.459286 -1.5491576 128.0 +-5.6726499 24.472223 -1.5477095 128.0 +-3.341449 14.828998 -0.92184025 128.0 +-5.3682823 24.52342 -1.546639 128.0 +-4.1375375 19.472731 -1.2187818 128.0 +-5.0639162 24.572788 -1.5456946 128.0 +-3.9354012 19.707989 -1.2307451 128.0 +-3.8136435 19.727846 -1.2304932 128.0 +-4.6186409 24.70402 -1.5484021 128.0 +-4.4616508 24.702429 -1.5465131 128.0 +-4.316165 24.764736 -1.5487798 128.0 +-4.1664448 24.804533 -1.5496613 128.0 +-4.0149655 24.834557 -1.5499761 128.0 +-3.8617415 24.853792 -1.5496613 128.0 +-3.7097576 24.880968 -1.5499132 128.0 +-3.5561743 24.897335 -1.5495354 128.0 +-3.4045558 24.927586 -1.5501021 128.0 +-3.2524419 24.954935 -1.5505428 128.0 +-3.1027019 25.002153 -1.5523058 128.0 +-2.9521542 25.0455 -1.55388 128.0 +-2.8016343 25.091906 -1.5557059 128.0 +-2.648458 25.116564 -1.5562097 128.0 +-2.4940987 25.130356 -1.5560837 128.0 +-2.3404098 25.151148 -1.5564616 128.0 +-2.1894102 25.203812 -1.5589172 128.0 +-2.0388157 25.267504 -1.5621283 128.0 +-1.8863351 25.314373 -1.5643321 128.0 +-1.7330157 25.355341 -1.566221 128.0 +-1.5796361 25.401358 -1.5684878 128.0 +-1.4265389 25.460394 -1.571636 128.0 +-1.271036 25.48362 -1.5725805 128.0 +-1.1155198 25.51088 -1.5738398 128.0 +-0.96076679 25.565115 -1.5768621 128.0 +-0.80551565 25.6224 -1.5801363 128.0 +-0.64969862 25.682732 -1.5836623 128.0 +-0.49378374 25.774044 -1.5892031 128.0 +-0.3363564 25.832472 -1.5927292 128.0 +-0.17808601 25.86898 -1.5949329 128.0 +-0.019387871 25.914495 -1.5977664 128.0 +0.13986748 25.960035 -1.6006627 128.0 +0.29994512 26.027548 -1.6050073 128.0 +0.46075082 26.088081 -1.6089741 128.0 +0.62226319 26.145626 -1.6128149 128.0 +0.78473783 26.210148 -1.6171595 128.0 +0.94957441 26.316544 -1.6242115 128.0 +1.1148622 26.400961 -1.6299413 128.0 +1.2815107 26.490318 -1.6360489 128.0 +1.4479939 26.554703 -1.6406454 128.0 +1.6151943 26.616047 -1.6451159 128.0 +1.7868621 26.731106 -1.6530493 128.0 +1.9567329 26.800262 -1.6581495 128.0 +2.1322451 26.928034 -1.6670276 128.0 +2.3028638 26.978085 -1.6710572 128.0 +2.4725394 27.009165 -1.6739537 128.0 +1.9133424 19.575638 -1.2037332 128.0 +2.820612 27.138594 -1.6842169 128.0 +2.1835735 19.82448 -1.2211115 128.0 +3.1763825 27.299212 -1.6967468 128.0 +3.3535407 27.358458 -1.701784 128.0 +3.5565324 27.610561 -1.7191623 128.0 +3.7338941 27.64756 -1.7229402 128.0 +3.9126813 27.68935 -1.7270958 128.0 +4.0944524 27.745783 -1.732259 128.0 +4.2834363 27.842453 -1.7400666 128.0 +4.4747062 27.943756 -1.748252 128.0 +4.6767187 28.099871 -1.7600265 128.0 +4.8583913 28.124735 -1.7634895 128.0 +5.034564 28.115026 -1.7648118 128.0 +5.2337232 28.227856 -1.7740675 128.0 +2.8603587 14.915033 -0.92095876 128.0 +2.8276901 14.27065 -0.88066131 128.0 +5.8180056 28.447449 -1.7947199 128.0 +3.0528531 14.473149 -0.8960247 128.0 +3.1390579 14.442442 -0.89526916 128.0 +6.3589497 28.417349 -1.800009 128.0 +3.4185963 14.848273 -0.92410696 128.0 +6.7106433 28.351744 -1.8009535 128.0 +3.4611845 14.232078 -0.88689482 128.0 +7.0483871 28.228527 -1.7984349 128.0 +3.4490588 13.46054 -0.83948237 128.0 +3.5206804 13.397617 -0.83677489 128.0 +3.6087897 13.397927 -0.8382231 128.0 +3.9569099 14.339522 -0.90131372 128.0 +3.9970639 14.14594 -0.89023197 128.0 +4.0624394 14.047325 -0.88538367 128.0 +4.1230755 13.936003 -0.87971687 128.0 +4.1848116 13.832109 -0.87455374 128.0 +4.2625289 13.783289 -0.87304258 128.0 +4.3352947 13.719761 -0.87058699 128.0 +4.4190893 13.691952 -0.87052399 128.0 +4.506454 13.675006 -0.8712166 128.0 +4.5855055 13.632908 -0.87027216 128.0 +4.6710129 13.610179 -0.87064993 128.0 +4.7564135 13.586914 -0.87102771 128.0 +4.8631773 13.623269 -0.87543523 128.0 +4.9572554 13.622246 -0.87738717 128.0 +5.073019 13.678596 -0.88324285 128.0 +5.1850734 13.721899 -0.88828003 128.0 +5.3000002 13.769928 -0.893695 128.0 +5.4929166 14.01405 -0.91245848 128.0 +5.6046925 14.044968 -0.916866 128.0 +5.6918921 14.013088 -0.91705489 128.0 +5.7670937 13.952074 -0.91529191 128.0 +5.8491116 13.908145 -0.91472524 128.0 +5.9264898 13.853642 -0.91346592 128.0 +6.0157623 13.827084 -0.91415852 128.0 +6.1093726 13.809991 -0.91554374 128.0 +6.2075019 13.802281 -0.91762161 128.0 +6.3107452 13.804779 -0.92045504 128.0 +6.4197183 13.818294 -0.92410696 128.0 +6.5631757 13.903191 -0.93279612 128.0 +6.6768427 13.922051 -0.93695176 128.0 +6.8552346 14.07193 -0.95036322 128.0 +12.889429 26.05204 -1.7966089 128.0 +13.056207 25.986731 -1.7976164 128.0 +13.231285 25.937244 -1.7998201 128.0 +13.40533 25.884817 -1.801898 128.0 +13.575048 25.823278 -1.8034091 128.0 +13.753912 25.77824 -1.8061795 128.0 +13.925131 25.717936 -1.8079425 128.0 +14.096127 25.6565 -1.8097056 128.0 +14.263491 25.587831 -1.8110279 128.0 +14.426613 25.511124 -1.8118464 128.0 +14.601248 25.454155 -1.8141761 128.0 +14.78225 25.407217 -1.8173243 128.0 +14.955112 25.345261 -1.819465 128.0 +15.127256 25.281282 -1.821543 128.0 +15.290378 25.201639 -1.8225504 128.0 +15.444201 25.106495 -1.8224874 128.0 +15.613804 25.036663 -1.8243763 128.0 +15.770331 24.94545 -1.8247541 128.0 +15.935482 24.867542 -1.8262023 128.0 +16.095921 24.781851 -1.8271468 128.0 +16.255358 24.694292 -1.8280283 128.0 +16.41765 24.610691 -1.8292876 128.0 +13.624529 20.154581 -1.4976525 128.0 +16.691917 24.368668 -1.8263283 128.0 +16.830885 24.251032 -1.8251948 128.0 +13.932926 19.814663 -1.4910412 128.0 +14.215796 19.955587 -1.5086083 128.0 +17.175716 23.80035 -1.8145539 128.0 +14.268196 19.517784 -1.4881448 128.0 +17.446297 23.560516 -1.8124131 128.0 +17.592329 23.45542 -1.8126019 128.0 +17.730484 23.33988 -1.8120352 128.0 +17.872145 23.229067 -1.8119093 128.0 +18.010046 23.113457 -1.8114686 128.0 +18.155237 23.007215 -1.8118464 128.0 +18.307903 22.910198 -1.8130426 128.0 +18.436832 22.783466 -1.8119093 128.0 +18.568691 22.660648 -1.8111538 128.0 +18.704199 22.542446 -1.8108389 128.0 +18.852436 22.43948 -1.8118464 128.0 +18.958727 22.286894 -1.8088241 128.0 +19.052135 22.120235 -1.8046684 128.0 +12.96013 14.861593 -1.2068814 128.0 +12.881319 14.589516 -1.1906996 128.0 +12.926033 14.460349 -1.1864809 128.0 +12.938846 14.297145 -1.1793659 128.0 +12.99464 14.182899 -1.1764065 128.0 +13.069204 14.089727 -1.1752732 128.0 +13.149262 14.002724 -1.1747065 128.0 +13.271378 13.960114 -1.1780436 128.0 +13.370626 13.892801 -1.1793029 128.0 +13.512728 13.869117 -1.184466 128.0 +13.617196 13.805839 -1.186229 128.0 +13.755948 13.776405 -1.1910774 128.0 +13.901236 13.752105 -1.1964923 128.0 +14.936108 14.595668 -1.2803613 128.0 +14.974402 14.454534 -1.2758908 128.0 +15.010085 14.312103 -1.2712944 128.0 +14.827363 13.965181 -1.2478715 128.0 +14.899621 13.861703 -1.2467381 128.0 +14.981455 13.767319 -1.2464863 128.0 +15.008008 13.622813 -1.241575 128.0 +15.05416 13.497157 -1.2384268 128.0 +15.132957 13.401224 -1.238112 128.0 +15.347111 13.423763 -1.2491938 128.0 +15.451845 13.348916 -1.2510827 128.0 +15.664043 13.365277 -1.2619126 128.0 +15.893809 13.393682 -1.2741277 128.0 +16.187408 13.472116 -1.2915061 128.0 +22.695223 18.65399 -1.8162539 128.0 +22.841799 18.5408 -1.8188984 128.0 +22.963697 18.407164 -1.819591 128.0 +18.219847 14.421765 -1.4288321 128.0 +23.237391 18.162697 -1.8235579 128.0 +23.36578 18.033188 -1.8249431 128.0 +23.481546 17.893715 -1.8253838 128.0 +23.590099 17.748697 -1.8253208 128.0 +23.698561 17.603617 -1.8253208 128.0 +23.801298 17.454332 -1.8249431 128.0 +23.899864 17.302109 -1.8243134 128.0 +23.990963 17.144691 -1.82318 128.0 +21.14596 14.916345 -1.5954367 128.0 +20.863605 14.52627 -1.5667248 128.0 +21.322479 14.652337 -1.5950589 128.0 +24.351627 16.51491 -1.8191503 128.0 +24.511389 16.404591 -1.8236208 128.0 +24.704023 16.314934 -1.8306098 128.0 +23.430714 15.268351 -1.7272218 128.0 +19.271187 12.389968 -1.4082426 128.0 +23.447762 14.872754 -1.7146288 128.0 +23.541117 14.730189 -1.7148178 128.0 +23.596235 14.563974 -1.7122362 128.0 +23.650204 14.397638 -1.7096547 128.0 +20.026358 12.023664 -1.4365138 128.0 +20.041359 11.865983 -1.4322321 128.0 +20.04915 11.705048 -1.4275098 128.0 +19.938955 11.477249 -1.4142872 128.0 +21.175573 12.016722 -1.4989117 128.0 +20.039103 11.209778 -1.4114538 128.0 +20.052446 11.05625 -1.407487 128.0 +20.066418 10.903934 -1.4036462 128.0 +20.022089 10.721241 -1.3957126 128.0 +20.034536 10.570242 -1.3919348 128.0 +19.170099 9.9642572 -1.3258847 128.0 +20.086344 10.284473 -1.3865198 128.0 +20.151743 10.162381 -1.3867086 128.0 +20.261988 10.062512 -1.3901087 128.0 +20.812868 10.177382 -1.4244875 128.0 +20.977436 10.098837 -1.4316654 128.0 +21.259964 10.074644 -1.4470918 128.0 +21.723871 10.13173 -1.4751111 128.0 +21.967039 10.081504 -1.487704 128.0 +23.126352 10.442269 -1.5637025 128.0 +22.424749 9.9602642 -1.5108751 128.0 +22.8284 9.9723053 -1.5344869 128.0 +29.589602 12.710349 -1.9945699 128.0 +29.633936 12.514574 -1.9923033 128.0 +29.713854 12.334038 -1.992555 128.0 +25.522474 10.411037 -1.7018471 128.0 +25.584949 10.253867 -1.701784 128.0 +25.62324 10.087182 -1.700147 128.0 +25.72747 9.9463263 -1.7030433 128.0 +25.872923 9.820508 -1.7087731 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +29.346014 9.7190514 -1.9131566 128.0 +29.331049 9.5147839 -1.9082453 128.0 +29.336563 9.3180151 -1.9047823 128.0 +29.306461 9.1108723 -1.8990525 128.0 +29.311207 8.9154863 -1.8957154 128.0 +29.227612 8.6944895 -1.8866484 128.0 +29.07629 8.4556255 -1.873237 128.0 +29.214985 8.3018837 -1.8789667 128.0 +29.201904 8.1048508 -1.8748111 128.0 +0 0 -0 128.0 +28.928658 7.6479316 -1.8506327 128.0 +29.039789 7.486979 -1.8548512 128.0 +28.979679 7.2821403 -1.8479881 128.0 +28.927845 7.0806952 -1.8417546 128.0 +28.919292 6.8908029 -1.8384175 128.0 +0 0 -0 128.0 +28.819613 6.4943705 -1.8266431 128.0 +28.729254 6.2890277 -1.8182688 128.0 +0 0 -0 128.0 +28.732912 5.9212961 -1.8136723 128.0 +28.691385 5.7294421 -1.8086982 128.0 +28.693665 5.5470357 -1.8066202 128.0 +28.732067 5.3717875 -1.8069351 128.0 +28.763504 5.1952124 -1.8068721 128.0 +28.824335 5.023766 -1.8087611 128.0 +28.872334 4.8497849 -1.8098944 128.0 +28.932091 4.6774745 -1.8118464 128.0 +28.952356 4.4986362 -1.8113426 128.0 +28.979414 4.3209033 -1.8113426 128.0 +28.978706 4.1391969 -1.8096426 128.0 +28.98477 3.9587429 -1.8084463 128.0 +0 0 -0 128.0 +29.269857 3.6323817 -1.8236208 128.0 +29.270781 3.450263 -1.8222985 128.0 +29.306278 3.2722576 -1.823243 128.0 +29.312902 3.0910151 -1.8224244 128.0 +29.33231 2.911195 -1.8224874 128.0 +29.348627 2.7310681 -1.8224244 128.0 +29.444372 2.5578477 -1.8274616 128.0 +29.416739 2.3736801 -1.8247541 128.0 +29.472549 2.1962533 -1.8273987 128.0 +29.539238 2.0190475 -1.8307987 128.0 +29.622789 1.8422213 -1.8353322 128.0 +29.624567 1.6599219 -1.8347656 128.0 +29.658117 1.4793113 -1.8362767 128.0 +29.692558 1.2984387 -1.8379138 128.0 +18.523102 0.69600946 -1.1322683 128.0 +18.525028 0.58227801 -1.1321423 128.0 +17.68021 0.44713339 -1.0786223 128.0 +17.693598 0.33885169 -1.0793149 128.0 +0 0 -0 128.0 +18.442921 0.12684907 -1.1264125 128.0 +17.778673 0.013175506 -1.084478 128.0 +17.708561 -0.09553732 -1.0800705 128.0 +17.532001 -0.20217182 -1.0689888 128.0 +17.518457 -0.30953103 -1.0682331 128.0 +17.540173 -0.417586 -1.0697443 128.0 +17.549252 -0.52556086 -1.0704999 128.0 +17.533728 -0.63279945 -1.0697443 128.0 +0 -0 -0 128.0 +17.650246 -0.85399199 -1.0776778 128.0 +17.664604 -0.96336228 -1.0789372 128.0 +17.910395 -1.087023 -1.0948672 128.0 +17.933262 -1.1988952 -1.0967562 128.0 +17.958414 -1.3113067 -1.098834 128.0 +17.976892 -1.4235995 -1.1005341 128.0 +17.851475 -1.5239472 -1.0931672 128.0 +26.214075 -2.3997653 -1.6235819 128.0 +26.213757 -2.5620227 -1.6245264 128.0 +25.874926 -2.6892929 -1.6040628 128.0 +25.23991 -2.7799475 -1.5648358 128.0 +25.202551 -2.9324577 -1.5635766 128.0 +16.218134 -1.9881479 -0.99368298 128.0 +15.58005 -2.007051 -0.95388925 128.0 +15.448757 -2.0865836 -0.94633353 128.0 +15.253835 -2.1556451 -0.93474799 128.0 +14.987565 -2.2119048 -0.91862905 128.0 +14.92735 -2.2966933 -0.91566968 128.0 +14.893268 -2.3850868 -0.91441041 128.0 +14.870477 -2.4751146 -0.91390669 128.0 +14.837307 -2.5632539 -0.91277331 128.0 +14.834071 -2.6565323 -0.91359186 128.0 +13.397559 -2.4842534 -0.82248193 128.0 +13.158587 -2.523561 -0.80812597 128.0 +13.15754 -2.6071625 -0.80907047 128.0 +13.40823 -2.7424355 -0.82625979 128.0 +12.970263 -2.7358887 -0.79912204 128.0 +12.913247 -2.8067315 -0.79654044 128.0 +12.873382 -2.8809006 -0.79509228 128.0 +12.80197 -2.9475217 -0.7916292 128.0 +12.726344 -3.0124562 -0.78791428 128.0 +12.707621 -3.0904868 -0.78791428 128.0 +12.662274 -3.1618736 -0.78621423 128.0 +11.004893 -2.8199122 -0.67955202 128.0 +12.654373 -3.3253906 -0.78829211 128.0 +12.946926 -3.4873247 -0.80875564 128.0 +12.732871 -3.5136099 -0.79616266 128.0 +12.628476 -3.5683355 -0.7907477 128.0 +7.9219561 -2.2911847 -0.48310214 128.0 +7.9048772 -2.3389003 -0.48291326 128.0 +7.9027958 -2.3911166 -0.48373181 128.0 +7.8813009 -2.4374983 -0.48329106 128.0 +7.8966494 -2.4954331 -0.48530591 128.0 +7.915381 -2.5548735 -0.48757264 128.0 +7.9109302 -2.6071413 -0.48832822 128.0 +13.952639 -4.6930385 -0.89155424 128.0 +13.879213 -4.7633367 -0.88859487 128.0 +13.835595 -4.8434625 -0.88765037 128.0 +13.534915 -4.8316398 -0.86951655 128.0 +0 -0 -0 128.0 +10.993011 -4.0770917 -0.70253414 128.0 +10.993927 -4.1543441 -0.70429718 128.0 +7.1643291 -2.7577324 -0.44714931 128.0 +7.1509895 -2.8030968 -0.44740117 128.0 +7.1299477 -2.8454423 -0.44714931 128.0 +0 -0 -0 128.0 +19.830132 -8.1966085 -1.316566 128.0 +19.528311 -8.212513 -1.2993766 128.0 +19.66474 -8.4122543 -1.3122214 128.0 +9.0380287 -3.9323344 -0.58466423 128.0 +9.01373 -3.9877167 -0.58466423 128.0 +19.717735 -8.8677578 -1.3268292 128.0 +19.587614 -8.9541388 -1.3216032 128.0 +5.5943904 -2.5993106 -0.35200962 128.0 +5.5530653 -2.6216598 -0.35024661 128.0 +5.4486856 -2.6133919 -0.34407607 128.0 +5.3509002 -2.6070025 -0.3383463 128.0 +5.3204904 -2.632705 -0.33733886 128.0 +5.3800387 -2.7033846 -0.34269086 128.0 +3.8528907 -1.9658453 -0.23571382 128.0 +3.8602531 -1.9995462 -0.23709904 128.0 +3.8549786 -2.0269096 -0.23760276 128.0 +3.8512745 -2.055223 -0.2382324 128.0 +20.283644 -10.982797 -1.4180651 128.0 +20.119656 -11.054187 -1.411139 128.0 +19.894537 -11.089966 -1.3998053 128.0 +19.595034 -11.081153 -1.3830568 128.0 +19.489447 -11.179824 -1.3803493 128.0 +19.364408 -11.266577 -1.3762565 128.0 +13.949396 -8.2311277 -0.98467898 128.0 +3.7894678 -2.2678545 -0.2414436 128.0 +6.8420897 -4.1515841 -0.46773878 128.0 +4.0512247 -2.4924951 -0.26291457 128.0 +3.8944323 -2.4291122 -0.25239947 128.0 +4.0144277 -2.5382891 -0.26247382 128.0 +3.4962802 -2.2408752 -0.22482093 128.0 +3.4975302 -2.2720709 -0.22595429 128.0 +3.4443429 -2.2676983 -0.22299495 128.0 +3.3498302 -2.2350676 -0.21688737 128.0 +3.267426 -2.2091897 -0.21166131 128.0 +3.2282844 -2.2117131 -0.20970939 128.0 +3.1998944 -2.2212374 -0.20857604 128.0 +3.18049 -2.2368116 -0.20813528 128.0 +3.157764 -2.2499151 -0.20744267 128.0 +3.6820805 -2.6576202 -0.2493142 128.0 +3.6294482 -2.6536593 -0.24648078 128.0 +3.6435757 -2.6984477 -0.24887344 128.0 +3.1662683 -2.375237 -0.2125428 128.0 +3.1413031 -2.3867719 -0.21172427 128.0 +3.130554 -2.4090445 -0.21203908 128.0 +3.635299 -2.8330584 -0.2535958 128.0 +3.6452687 -2.8769488 -0.25579956 128.0 +5.4121985 -4.3253646 -0.39992577 128.0 +15.161747 -12.269358 -1.193344 128.0 +15.111652 -12.383031 -1.1954219 128.0 +14.93093 -12.388853 -1.1868587 128.0 +14.726257 -12.372383 -1.1762806 128.0 +14.775496 -12.569205 -1.1866698 128.0 +14.702631 -12.663537 -1.1870476 128.0 +2.9536202 -2.5761452 -0.21008718 128.0 +4.9106412 -4.3360381 -0.37612513 128.0 +2.8972297 -2.5902481 -0.20800935 128.0 +3.5598547 -3.2220559 -0.26574799 128.0 +2.8424132 -2.6047065 -0.20605744 128.0 +3.4461436 -3.1969504 -0.25938854 128.0 +2.7498496 -2.5826883 -0.20083137 128.0 +2.7440774 -2.609139 -0.20171288 128.0 +2.7093198 -2.607934 -0.20007579 128.0 +2.6825442 -2.6140623 -0.19913132 128.0 +3.6413367 -3.5919952 -0.28551891 128.0 +2.6714509 -2.6679394 -0.20102027 128.0 +2.6248486 -2.6537731 -0.19831279 128.0 +2.6154914 -2.6769667 -0.19894244 128.0 +2.5851536 -2.6786036 -0.19768314 128.0 +3.3696554 -3.5344322 -0.2709111 128.0 +12.012933 -12.754668 -1.0682331 128.0 +11.640089 -12.511753 -1.0409695 128.0 +7.6962595 -8.3752508 -0.68043357 128.0 +7.5622177 -8.3314238 -0.6726889 128.0 +2.8905525 -3.2244711 -0.23602864 128.0 +2.8561563 -3.2257094 -0.23464341 128.0 +10.972216 -12.544418 -1.0142725 128.0 +10.788688 -12.488407 -1.0040091 128.0 +3.0942891 -3.6269662 -0.26360717 128.0 +3.3703918 -3.9999895 -0.29282281 128.0 +3.3898375 -4.073524 -0.29716736 128.0 +2.8159745 -3.4265668 -0.24263994 128.0 +10.279767 -12.664697 -0.99191993 128.0 +10.194374 -12.718189 -0.99116439 128.0 +9.9959764 -12.628691 -0.97894925 128.0 +9.7572718 -12.483773 -0.96245247 128.0 +3.1754084 -4.1149468 -0.29074496 128.0 +3.1609881 -4.1486416 -0.29187834 128.0 +9.5336342 -12.671625 -0.96327102 128.0 +9.4777222 -12.759527 -0.96560073 128.0 +9.2936068 -12.673383 -0.95433003 128.0 +9.2525406 -12.781097 -0.95829678 128.0 +9.1797457 -12.84575 -0.95892644 128.0 +9.0662355 -12.852902 -0.95514858 128.0 +2.9616885 -4.2543335 -0.28986347 128.0 +2.9824436 -4.3406954 -0.29508954 128.0 +2.9888039 -4.4076462 -0.29880446 128.0 +2.9739151 -4.444149 -0.30018967 128.0 +8.562109 -12.965064 -0.94305933 128.0 +8.4796705 -13.013175 -0.94274449 128.0 +2.8160453 -4.38061 -0.29137462 128.0 +2.7655919 -4.3607244 -0.28860417 128.0 +2.7472532 -4.3911481 -0.28961161 128.0 +2.7244515 -4.4147162 -0.29011533 128.0 +1.4092124 -2.3155289 -0.13383693 128.0 +2.6793184 -4.4632187 -0.29124868 128.0 +1.4056065 -2.3747275 -0.1369222 128.0 +1.3789322 -2.3626225 -0.13541104 128.0 +1.3763591 -2.3917978 -0.1369222 128.0 +1.3631351 -2.4028018 -0.13711108 128.0 +2.4870646 -4.4466262 -0.28425962 128.0 +6.9215946 -12.553836 -0.86724985 128.0 +6.8668323 -12.637284 -0.87020916 128.0 +6.7731433 -12.649266 -0.8680684 128.0 +6.631597 -12.569659 -0.85944223 128.0 +6.5888691 -12.676528 -0.86416459 128.0 +6.4663868 -12.629662 -0.85799402 128.0 +6.4027023 -12.696725 -0.85994595 128.0 +6.1977143 -12.480131 -0.84193802 128.0 +6.2073917 -12.694547 -0.85434204 128.0 +5.9423604 -12.343928 -0.82714128 128.0 +5.8271875 -12.297185 -0.82134855 128.0 +5.7414989 -12.311002 -0.81983739 128.0 +5.7141423 -12.451216 -0.82714128 128.0 +5.7004762 -12.625209 -0.83677489 128.0 +5.5690193 -12.538642 -0.82840061 128.0 +5.4851866 -12.557029 -0.82733023 128.0 +1.3223946 -3.079433 -0.17426027 128.0 +1.3030864 -3.0865698 -0.1741973 128.0 +5.2194524 -12.574752 -0.82178932 128.0 +5.174993 -12.686936 -0.82726723 128.0 +5.0710597 -12.653604 -0.8228597 128.0 +1.2529031 -3.183553 -0.1786678 128.0 +0.94543213 -2.4464872 -0.12829603 128.0 +0.93784058 -2.4718363 -0.12961829 128.0 +0.90802151 -2.4382653 -0.12697378 128.0 +0.89270079 -2.4428537 -0.12691081 128.0 +0.87836879 -2.4501641 -0.12703674 128.0 +0.85470796 -2.4310293 -0.12539965 128.0 +0 -0 -0 128.0 +4.3054667 -12.738357 -0.81114829 128.0 +4.2507582 -12.83559 -0.81587064 128.0 +4.1703811 -12.856685 -0.81555581 128.0 +1.0129812 -3.1904173 -0.17400841 128.0 +0.99605268 -3.2051501 -0.17457509 128.0 +0.97898144 -3.2197948 -0.17514177 128.0 +0.95892215 -3.2247844 -0.17507881 128.0 +0.93688756 -3.2229412 -0.17457509 128.0 +0.93100786 -3.2775893 -0.17778629 128.0 +3.5664458 -12.850797 -0.80422217 128.0 +3.4763041 -12.831017 -0.80151469 128.0 +3.3947029 -12.841493 -0.80082208 128.0 +0.86698586 -3.3641996 -0.18200493 128.0 +3.2242141 -12.831852 -0.79754788 128.0 +3.1411474 -12.833944 -0.79641455 128.0 +3.0671988 -12.873364 -0.79773682 128.0 +2.9856725 -12.881248 -0.79704416 128.0 +0.70874864 -3.146785 -0.16632672 128.0 +1.8919027 -8.6438122 -0.52106988 128.0 +1.8006595 -8.4756336 -0.50948435 128.0 +0.64627463 -3.1377933 -0.16494149 128.0 +0.62583661 -3.1358275 -0.1645637 128.0 +0.60544711 -3.1337295 -0.16418591 128.0 +2.4323885 -13.011301 -0.79792571 128.0 +1.4892639 -8.2469759 -0.49153942 128.0 +2.2747645 -13.052952 -0.7987442 128.0 +1.4420141 -8.5864716 -0.51212889 128.0 +2.1413343 -13.246387 -0.80938524 128.0 +2.054652 -13.22476 -0.80718148 128.0 +1.9717015 -13.225273 -0.80642593 128.0 +1.8947496 -13.266762 -0.80831486 128.0 +1.814121 -13.284071 -0.80869263 128.0 +0.50618529 -3.8864088 -0.21008718 128.0 +1.6399052 -13.216195 -0.80302584 128.0 +0.45646858 -3.8754783 -0.20901679 128.0 +0.43057606 -3.8593609 -0.20782046 128.0 +0.41002753 -3.8917055 -0.20970939 128.0 +1.2825379 -12.924726 -0.78224748 128.0 +1.2067237 -12.970113 -0.78464013 128.0 +1.124699 -12.949433 -0.78287715 128.0 +1.058629 -13.122219 -0.79339224 128.0 +0.98476875 -13.21804 -0.79905903 128.0 +0.90364581 -13.223834 -0.79905903 128.0 +0.82143557 -13.212196 -0.79798865 128.0 +0.7409659 -13.227949 -0.79868126 128.0 +0.65784729 -13.193372 -0.79622567 128.0 +0.57740521 -13.209126 -0.79698122 128.0 +0.4946574 -13.167541 -0.79414779 128.0 +0.41159454 -13.098506 -0.78961432 128.0 +0.33242807 -13.148674 -0.79263663 128.0 +0.25281447 -13.206346 -0.79616266 128.0 +0.17326014 -13.321412 -0.80334067 128.0 +0.091793664 -13.362144 -0.80585927 128.0 +0.0096776215 -13.197783 -0.79547006 128.0 +-0.072535813 -13.427135 -0.80995196 128.0 +-0.15262476 -13.226847 -0.79735899 128.0 +-0.23407963 -13.242624 -0.79842943 128.0 +-0.31571013 -13.256903 -0.79943687 128.0 +-0.39659923 -13.239753 -0.79849237 128.0 +-0.47390836 -13.128357 -0.7916292 128.0 +-0.55845225 -13.219929 -0.79761088 128.0 +-0.63700259 -13.163421 -0.79427373 128.0 +-0.73150402 -13.411387 -0.81020379 128.0 +-0.80924809 -13.331933 -0.80548143 128.0 +-0.90135127 -13.481065 -0.81524098 128.0 +-0.95273668 -13.046277 -0.78810322 128.0 +-1.0697886 -13.50779 -0.81769663 128.0 +-1.1434001 -13.392582 -0.81083345 128.0 +-1.2246443 -13.375376 -0.81020379 128.0 +-1.3063998 -13.36463 -0.8100149 128.0 +-1.3924022 -13.395076 -0.81247056 128.0 +-1.4937938 -13.560876 -0.82355231 128.0 +-1.5971566 -13.724937 -0.83457112 128.0 +-1.6844978 -13.740635 -0.83620822 128.0 +-1.7729841 -13.762705 -0.83828604 128.0 +-1.8907868 -13.998826 -0.85402727 128.0 +-1.9737144 -13.966209 -0.852705 128.0 +-2.068696 -14.017024 -0.85673475 128.0 +-2.1596713 -14.036619 -0.85881257 128.0 +-2.2459157 -14.024089 -0.85887551 128.0 +-2.3281553 -13.987401 -0.85742736 128.0 +-2.4195423 -14.005306 -0.85950518 128.0 +-2.537622 -14.169974 -0.87102771 128.0 +-2.62834 -14.174745 -0.87234998 128.0 +-2.722595 -14.196576 -0.87480557 128.0 +-2.8011184 -14.136528 -0.87203515 128.0 +-2.8856061 -14.108319 -0.87134254 128.0 +-2.9809749 -14.132339 -0.87405002 128.0 +-3.0890393 -14.212282 -0.88040948 128.0 +-3.1722636 -14.17553 -0.8792761 128.0 +-3.3171721 -14.407696 -0.89558393 128.0 +-3.4130988 -14.41912 -0.89766181 128.0 +-3.4953775 -14.372693 -0.8960247 128.0 +-3.5839844 -14.352911 -0.89615065 128.0 +-3.6682692 -14.316149 -0.89520615 128.0 +-3.7494483 -14.268274 -0.89356905 128.0 +-3.8366666 -14.244036 -0.89350611 128.0 +-3.9319577 -14.249088 -0.89539504 128.0 +-4.0206709 -14.229496 -0.89570987 128.0 +-4.1847 -14.470128 -0.91315109 128.0 +-4.2728419 -14.442265 -0.9130252 128.0 +-4.3605108 -14.41291 -0.91283625 128.0 +-4.4559407 -14.408766 -0.91434741 128.0 +-4.554791 -14.414461 -0.91655117 128.0 +-4.6452966 -14.392891 -0.91699195 128.0 +-4.7194672 -14.321462 -0.91415852 128.0 +-4.811707 -14.305477 -0.91504002 128.0 +-4.9081397 -14.301171 -0.91674012 128.0 +-5.0043707 -14.295278 -0.91837716 128.0 +-5.1228571 -14.350776 -0.9241699 128.0 +-4.8733044 -13.391533 -0.86189783 128.0 +-5.340219 -14.399119 -0.93172568 128.0 +-5.4408159 -14.398758 -0.93392944 128.0 +-5.6118693 -14.580259 -0.94847429 128.0 +-5.6975846 -14.536259 -0.94784468 128.0 +-5.8440003 -14.644702 -0.95760417 128.0 +-5.9975924 -14.76576 -0.96830821 128.0 +-6.0587268 -14.657662 -0.96345991 128.0 +-6.1485505 -14.620211 -0.96345991 128.0 +-6.2275448 -14.557433 -0.96175987 128.0 +-6.6018133 -15.174206 -1.0068426 128.0 +-6.396028 -14.458011 -0.96024871 128.0 +-6.6602244 -14.808973 -0.98726058 128.0 +-6.3169689 -13.818394 -0.92139947 128.0 +-6.9945035 -15.055591 -1.0101798 128.0 +-6.9589458 -14.741633 -0.99129033 128.0 +-1.651041 -3.4419305 -0.20366478 128.0 +-1.6655732 -3.4182768 -0.20272031 128.0 +-1.6772224 -3.3892076 -0.20139806 128.0 +-1.6935061 -3.3699346 -0.20076841 128.0 +-1.7159659 -3.3630362 -0.20102027 128.0 +-1.7328972 -3.3453541 -0.20051655 128.0 +-1.7687157 -3.3638103 -0.20259438 128.0 +-4.4892006 -8.4133015 -0.56445253 128.0 +-4.6818686 -8.6462545 -0.58315307 128.0 +-8.3289356 -15.159238 -1.0540661 128.0 +-8.4198503 -15.104361 -1.0538143 128.0 +-4.6898999 -8.292779 -0.56388587 128.0 +-8.6393309 -15.060498 -1.0582218 128.0 +-9.2806349 -15.950934 -1.1271052 128.0 +-9.365654 -15.872201 -1.1255311 128.0 +-9.2225389 -15.412775 -1.0960007 128.0 +-9.5592079 -15.755221 -1.1254681 128.0 +-9.6274633 -15.650368 -1.122068 128.0 +-9.5865316 -15.371668 -1.1057601 128.0 +-9.7275991 -15.386792 -1.1113011 128.0 +-10.358132 -16.16375 -1.1740139 128.0 +-9.9298201 -15.288022 -1.1129382 128.0 +-10.473397 -15.910379 -1.1645691 128.0 +-10.533163 -15.78936 -1.1602876 128.0 +-10.61252 -15.6988 -1.1583357 128.0 +-10.782528 -15.741251 -1.166584 128.0 +-10.19836 -14.694184 -1.0912783 128.0 +-11.030567 -15.686938 -1.1726916 128.0 +-11.150353 -15.652288 -1.1752732 128.0 +-11.256697 -15.598144 -1.1764065 128.0 +-11.335114 -15.505415 -1.1745806 128.0 +-11.111113 -15.004862 -1.1407685 128.0 +-11.002967 -14.669735 -1.1197383 128.0 +-11.086735 -14.593998 -1.1191087 128.0 +-11.818112 -15.360202 -1.1855364 128.0 +-11.919498 -15.296844 -1.1862921 128.0 +-12.089176 -15.319787 -1.1940366 128.0 +-12.885098 -16.124002 -1.2649978 128.0 +-13.167107 -16.271179 -1.2833836 128.0 +-13.220521 -16.133728 -1.2787871 128.0 +-13.334561 -16.070738 -1.2802984 128.0 +-13.447684 -16.006191 -1.2817465 128.0 +-13.610954 -16.000154 -1.288106 128.0 +-13.759675 -15.975323 -1.2930171 128.0 +-12.464249 -14.292935 -1.1592802 128.0 +-12.831119 -14.532657 -1.1859142 128.0 +-12.750444 -14.26391 -1.1698582 128.0 +-12.837727 -14.185407 -1.1698582 128.0 +-12.893512 -14.072518 -1.1669618 128.0 +-12.60973 -13.594354 -1.1326461 128.0 +-12.690856 -13.514544 -1.1324571 128.0 +-14.305559 -15.04801 -1.2727425 128.0 +-14.410771 -14.973613 -1.2739389 128.0 +-14.532323 -14.915647 -1.2766464 128.0 +-14.629878 -14.832592 -1.2772131 128.0 +-14.609198 -14.63096 -1.2672646 128.0 +-15.227262 -15.06396 -1.3141733 128.0 +-14.548526 -14.216906 -1.2461715 128.0 +-13.768087 -13.290053 -1.1701101 128.0 +-13.846485 -13.202569 -1.1698582 128.0 +-13.929414 -13.119412 -1.1700472 128.0 +-14.561316 -13.546952 -1.2175854 128.0 +-14.552309 -13.372936 -1.2097149 128.0 +-14.634089 -13.283393 -1.2097149 128.0 +-14.678166 -13.160038 -1.2065667 128.0 +-15.602164 -13.816754 -1.2776538 128.0 +-15.682893 -13.717476 -1.277339 128.0 +-10.123095 -8.745203 -0.8068037 128.0 +-15.484114 -13.211746 -1.24699 128.0 +-16.216625 -13.665728 -1.3007618 128.0 +-16.39529 -13.645134 -1.3085694 128.0 +-10.327724 -8.4884329 -0.80623704 128.0 +-10.380389 -8.4255323 -0.80629998 128.0 +-15.315971 -12.276753 -1.2012147 128.0 +-15.455961 -12.233957 -1.2064407 128.0 +-15.647111 -12.229854 -1.2157595 128.0 +-15.75741 -12.161055 -1.2185929 128.0 +-15.846021 -12.075028 -1.2197262 128.0 +-15.730808 -11.835363 -1.2048036 128.0 +-16.440054 -12.211746 -1.2548605 128.0 +-16.280479 -11.938893 -1.2365378 128.0 +-16.3316 -11.822971 -1.2348378 128.0 +-16.389223 -11.712095 -1.2337044 128.0 +-16.668737 -11.758011 -1.2497604 128.0 +-16.897823 -11.765004 -1.2618496 128.0 +-17.936157 -12.325253 -1.3358332 128.0 +-18.007317 -12.212167 -1.3355184 128.0 +-18.06864 -12.092565 -1.3345109 128.0 +-18.103357 -11.95562 -1.3315516 128.0 +-18.234068 -11.881911 -1.3358961 128.0 +-18.327618 -11.783299 -1.3374703 128.0 +-18.436655 -11.694142 -1.3402407 128.0 +-18.508062 -11.580797 -1.3402407 128.0 +-18.661152 -11.517863 -1.3463483 128.0 +-18.768982 -11.425979 -1.3491187 128.0 +-19.115107 -11.476536 -1.3694563 128.0 +-19.559589 -11.580728 -1.396909 128.0 +-19.661306 -11.478609 -1.3991756 128.0 +-20.854067 -12.004027 -1.4809039 128.0 +-20.997637 -11.915743 -1.486004 128.0 +-21.160938 -11.837353 -1.4925523 128.0 +-21.251526 -11.717409 -1.4938745 128.0 +-21.287947 -11.56773 -1.491356 128.0 +-21.089302 -11.292726 -1.4720888 128.0 +-6.8216081 -3.5987892 -0.44941604 128.0 +-16.375376 -8.5115471 -1.1271682 128.0 +-16.451277 -8.4231901 -1.1288682 128.0 +-7.1861067 -3.6236143 -0.47057217 128.0 +-6.9489894 -3.4507153 -0.45231241 128.0 +-6.956583 -3.4014356 -0.45136794 128.0 +-6.9737263 -3.3569551 -0.45111609 128.0 +-6.8670292 -3.253839 -0.44223806 128.0 +-22.052197 -10.284863 -1.4979674 128.0 +-22.133936 -10.158102 -1.4992895 128.0 +-7.258666 -3.2772129 -0.46528316 128.0 +-22.328979 -9.9177256 -1.5042638 128.0 +-22.407705 -9.7885208 -1.5055231 128.0 +-22.485683 -9.6587238 -1.5067824 128.0 +-22.573946 -9.5329971 -1.5087973 128.0 +-21.977568 -9.1226406 -1.4640923 128.0 +-21.928709 -8.9450207 -1.4569772 128.0 +-21.968359 -8.8043594 -1.4559698 128.0 +-21.978323 -8.652215 -1.4530106 128.0 +-21.978868 -8.4970417 -1.4494845 128.0 +-21.977407 -8.3418341 -1.4458954 128.0 +-22.047817 -8.2141438 -1.4472177 128.0 +-22.108114 -8.0824757 -1.4479103 128.0 +-22.228687 -7.9722781 -1.4526957 128.0 +-22.63212 -7.9605861 -1.4764334 128.0 +-22.843761 -7.8778596 -1.4873263 128.0 +-24.032841 -8.1232901 -1.5633247 128.0 +-24.101181 -7.9819498 -1.564584 128.0 +-24.156349 -7.8360734 -1.5650247 128.0 +-24.17544 -7.6786413 -1.5631357 128.0 +-24.302153 -7.5550475 -1.5684248 128.0 +-24.511326 -7.4554548 -1.5791918 128.0 +-24.676184 -7.3404875 -1.5870624 128.0 +-12.488862 -3.6316268 -0.78338087 128.0 +-13.155073 -3.7379863 -0.82563019 128.0 +-25.136005 -6.9763222 -1.6085963 128.0 +-25.21109 -6.8308334 -1.6107371 128.0 +-12.78553 -3.3799074 -0.7971701 128.0 +-12.805062 -3.3011439 -0.79710716 128.0 +-12.880248 -3.236376 -0.80069613 128.0 +-12.489809 -3.0569081 -0.77406204 128.0 +-25.74564 -6.1345491 -1.6325859 128.0 +-13.141807 -3.0460742 -0.81391871 128.0 +-25.866688 -5.8288999 -1.6356711 128.0 +-25.937063 -5.6777587 -1.6379379 128.0 +-18.313959 -3.8912992 -1.1440427 128.0 +-26.093735 -5.3773756 -1.6436676 128.0 +-19.149157 -3.8237989 -1.1947923 128.0 +-26.274364 -5.0793037 -1.6511605 128.0 +-26.450226 -4.9451389 -1.6604792 128.0 +-18.7272 -3.3823311 -1.1634358 128.0 +-18.720072 -3.2625611 -1.1616728 128.0 +-26.343861 -4.4250326 -1.6481382 128.0 +-26.328152 -4.2564569 -1.6454307 128.0 +-18.340075 -2.8495445 -1.1337794 128.0 +-19.213032 -2.8645749 -1.1883699 128.0 +-24.258108 -3.4648607 -1.5087973 128.0 +-24.241335 -3.310818 -1.5064045 128.0 +-26.346375 -3.4338143 -1.6390712 128.0 +-26.371899 -3.2727058 -1.6393861 128.0 +-26.407343 -3.1126988 -1.6403935 128.0 +-26.366432 -2.9439621 -1.6366156 128.0 +-26.425686 -2.7865217 -1.6392601 128.0 +-26.219824 -2.602242 -1.625156 128.0 +-25.852715 -2.4057043 -1.6009146 128.0 +-25.914715 -2.2511764 -1.6039369 128.0 +-26.877062 -2.1687152 -1.6640053 128.0 +-27.069008 -2.017112 -1.6753389 128.0 +-28.151243 -1.9241574 -1.7430259 128.0 +-30.880852 -1.9204763 -1.9148567 128.0 +-30.994688 -1.736711 -1.921342 128.0 +-31.013733 -1.546946 -1.9219086 128.0 +-31.035603 -1.3571873 -1.9227272 128.0 +-31.021404 -1.165906 -1.921342 128.0 +-31.013012 -0.97506958 -1.9203975 128.0 +-25.864546 1.9118208 -1.9218043 128.0 +-25.843384 2.0697696 -1.9211264 128.0 +-25.826223 2.2279599 -1.920825 128.0 +-25.805115 2.3857417 -1.9202977 128.0 +-25.772129 2.5422711 -1.9189419 128.0 +-25.741169 2.6987977 -1.917812 128.0 +-25.703312 2.8543797 -1.9162301 128.0 +-25.663527 3.0094824 -1.914573 128.0 +-25.618847 3.1637156 -1.9126143 128.0 +-25.572254 3.3173854 -1.9105805 128.0 +-25.515846 3.4693933 -1.9078689 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-25.347214 4.0823264 -1.9020686 128.0 +-25.30792 4.2354722 -1.9010141 128.0 +-25.259842 4.3869243 -1.8993568 128.0 +-25.209877 4.5377693 -1.8976244 128.0 +-25.166855 4.6896281 -1.8964945 128.0 +-25.090607 4.8349018 -1.8928788 128.0 +-25.033087 4.9833117 -1.8907696 128.0 +-25.004969 5.1374202 -1.8909956 128.0 +-24.960293 5.2880635 -1.8900163 128.0 +-24.936144 5.4430318 -1.8906943 128.0 +-24.939247 5.6042442 -1.8935567 128.0 +-24.931593 5.7634525 -1.8956659 128.0 +-24.938446 5.9264679 -1.8989803 128.0 +-24.940359 6.0888371 -1.9019933 128.0 +-24.948957 6.2533927 -1.905609 128.0 +-24.997997 6.4289641 -1.9124638 128.0 +-25.023643 6.5995226 -1.917586 128.0 +-25.019258 6.7628298 -1.9204484 128.0 +-25.061857 6.9396381 -1.9270772 128.0 +-25.105145 7.1177673 -1.9338566 128.0 +-25.130907 7.2919636 -1.9393554 128.0 +-25.129663 7.4590812 -1.9428204 128.0 +-25.150213 7.6334085 -1.9480933 128.0 +-25.144808 7.8005857 -1.9514077 128.0 +-25.153503 7.9728045 -1.9559274 128.0 +-25.16008 8.1451159 -1.9603716 128.0 +-25.20336 8.3303261 -1.967829 128.0 +-25.225468 8.5096798 -1.9737045 128.0 +-25.239721 8.6873446 -1.9790527 128.0 +-25.234865 8.8592272 -1.9829696 128.0 +-25.236361 9.0340652 -1.9874892 128.0 +-25.227289 9.2058363 -1.9912556 128.0 +-25.203974 9.3729687 -1.9939673 128.0 +-25.190746 9.5444012 -1.997583 128.0 +-25.176361 9.7160244 -2.0011988 128.0 +-25.179379 9.8951235 -2.006321 128.0 +-25.174664 10.072032 -2.010916 128.0 +-25.199198 10.261666 -2.0179965 128.0 +-25.177212 10.433272 -2.0213864 128.0 +-25.193577 10.621654 -2.0280151 128.0 +-25.188414 10.80198 -2.0329866 128.0 +-25.213058 10.996197 -2.0405192 128.0 +-25.203451 11.176568 -2.0453403 128.0 +-25.287117 11.399858 -2.0579951 128.0 +-25.15777 11.5278 -2.0530989 128.0 +-25.133568 11.703839 -2.0570159 128.0 +-25.103643 11.877882 -2.0605562 128.0 +-25.066238 12.048973 -2.0635693 128.0 +-25.021404 12.216989 -2.0660551 128.0 +-25.26757 12.529779 -2.0931728 128.0 +-25.335382 12.757689 -2.1054511 128.0 +-0 0 -0 128.0 +-25.035313 12.994128 -2.0933988 128.0 +-24.894239 13.115425 -2.0882013 128.0 +-24.528397 13.115572 -2.0637953 128.0 +-24.145094 13.101741 -2.0378075 128.0 +-23.9044 13.161625 -2.0240228 128.0 +-23.433199 13.090174 -1.9902763 128.0 +-22.963791 13.013443 -1.95653 128.0 +-22.675167 13.034328 -1.9383762 128.0 +-22.435402 13.080295 -1.9244407 128.0 +-22.116964 13.077117 -1.9035752 128.0 +-21.835339 13.092068 -1.8858734 128.0 +-21.655762 13.165707 -1.8771355 128.0 +-21.409048 13.196299 -1.8624468 128.0 +-21.504406 13.437863 -1.87819 128.0 +-21.363426 13.532738 -1.8729925 128.0 +-21.149096 13.579514 -1.8612415 128.0 +-20.998516 13.665511 -1.8552154 128.0 +-20.690359 13.646401 -1.8349525 128.0 +-20.547379 13.733753 -1.8296043 128.0 +-20.366955 13.794701 -1.8208663 128.0 +-20.196426 13.860724 -1.8130324 128.0 +-19.975101 13.889879 -1.8005282 128.0 +-19.888683 14.011608 -1.8004528 128.0 +-19.783669 14.120054 -1.7987202 128.0 +-19.650599 14.207874 -1.7944267 128.0 +-19.560638 14.326413 -1.7942007 128.0 +-19.465157 14.440818 -1.7935227 128.0 +-19.359444 14.547401 -1.7919408 128.0 +-19.240459 14.643569 -1.7891538 128.0 +-19.13998 14.753436 -1.7881745 128.0 +-19.04595 14.868144 -1.7878733 128.0 +-18.946541 14.978544 -1.78712 128.0 +-18.83326 15.077688 -1.7850862 128.0 +-19.036272 15.432859 -1.813861 128.0 +-18.950468 15.556967 -1.8147649 128.0 +-19.713463 16.386906 -1.8991309 128.0 +-19.554565 16.458754 -1.893406 128.0 +-19.398567 16.531857 -1.8879825 128.0 +-19.292234 16.646664 -1.8875306 128.0 +-19.176214 16.752916 -1.8861747 128.0 +-19.04393 16.844498 -1.883237 128.0 +-18.92536 16.947727 -1.8817304 128.0 +-18.813627 17.056833 -1.8809772 128.0 +-18.685843 17.151047 -1.878642 128.0 +-15.016438 13.953461 -1.5111226 128.0 +-18.440557 17.347628 -1.875177 128.0 +-18.239901 17.371048 -1.8653845 128.0 +-18.204752 17.551851 -1.8729172 128.0 +-18.086723 17.653473 -1.8718626 128.0 +-14.559365 14.385793 -1.5087874 128.0 +-14.466592 14.470625 -1.5083355 128.0 +-17.715979 17.940117 -1.8672676 128.0 +-17.584679 18.027067 -1.8650079 128.0 +-17.46059 18.120981 -1.8635767 128.0 +-17.340137 18.218386 -1.8625973 128.0 +-17.228024 18.32444 -1.8625973 128.0 +-13.791854 14.850807 -1.4936467 128.0 +-16.988377 18.519777 -1.8610909 128.0 +-16.857685 18.605194 -1.8592077 128.0 +-16.709961 18.671127 -1.8554413 128.0 +-16.566025 18.740431 -1.852127 128.0 +-16.438263 18.827454 -1.8506957 128.0 +-16.337408 18.945332 -1.8524283 128.0 +-16.2215 19.045979 -1.8525037 128.0 +-16.05876 19.090971 -1.8471555 128.0 +-15.852753 19.082529 -1.8366849 128.0 +-15.688565 19.122391 -1.8311108 128.0 +-15.5157 19.15011 -1.8244821 128.0 +-15.349939 19.184998 -1.8186818 128.0 +-15.248005 19.299166 -1.8206403 128.0 +-15.182047 19.459978 -1.8271185 128.0 +-15.172494 19.695751 -1.8407526 128.0 +-15.143714 19.909914 -1.8522776 128.0 +-15.076948 20.076614 -1.859283 128.0 +-14.928535 20.135103 -1.8561193 128.0 +-14.795874 20.214254 -1.8549894 128.0 +-14.693753 20.335375 -1.8578519 128.0 +-14.573334 20.431644 -1.8584545 128.0 +-14.448841 20.522312 -1.858605 128.0 +-14.329474 20.620409 -1.859509 128.0 +-14.211703 20.721102 -1.8607142 128.0 +-14.090442 20.816998 -1.8615428 128.0 +-13.964108 20.90555 -1.8617688 128.0 +-13.842155 21.00083 -1.8626727 128.0 +-13.714666 21.087875 -1.8628987 128.0 +-9.0666971 14.129318 -1.2308315 128.0 +-13.448987 21.245319 -1.8620701 128.0 +-13.317846 21.326595 -1.8619947 128.0 +-13.185169 21.405363 -1.8617688 128.0 +-9.1396694 15.042992 -1.2922982 128.0 +-8.6879511 14.499158 -1.2394941 128.0 +-8.5973005 14.549618 -1.2392681 128.0 +-12.707083 21.810383 -1.8694521 128.0 +-8.2050476 14.283076 -1.2069529 128.0 +-12.525935 22.119127 -1.8828603 128.0 +-12.412821 22.236492 -1.8864007 128.0 +-8.2445183 14.983848 -1.2545594 128.0 +-12.233113 22.560711 -1.9013153 128.0 +-12.120767 22.684601 -1.9055337 128.0 +-10.173595 19.324343 -1.6123618 128.0 +-11.813477 22.777634 -1.9009387 128.0 +-10.221922 20.008066 -1.6598929 128.0 +-10.03353 19.940357 -1.6488953 128.0 +-9.7848253 19.746897 -1.6274271 128.0 +-9.466301 19.402374 -1.5934547 128.0 +-10.766891 22.416487 -1.8412046 128.0 +-9.4657173 20.021021 -1.6355624 128.0 +-10.416545 22.386898 -1.8278718 128.0 +-10.271099 22.433165 -1.8264406 128.0 +-10.124659 22.476671 -1.8248587 128.0 +-9.9966516 22.561165 -1.8267418 128.0 +-9.8038607 22.497753 -1.8164974 128.0 +-9.7155046 22.673891 -1.8260639 128.0 +-9.5769711 22.734915 -1.8262146 128.0 +-9.4754343 22.885384 -1.8337473 128.0 +-9.3611364 23.007748 -1.8390201 128.0 +-9.2212677 23.068459 -1.8393214 128.0 +-9.0635157 23.083763 -1.836007 128.0 +-8.8969555 23.074743 -1.8308095 128.0 +-8.7410851 23.091597 -1.8277965 128.0 +-8.5752735 23.080297 -1.8225988 128.0 +-8.416419 23.085638 -1.8188325 128.0 +-8.270916 23.126516 -1.8180039 128.0 +-8.1245689 23.164598 -1.8170247 128.0 +-7.9693131 23.176294 -1.8140116 128.0 +-7.8119907 23.180344 -1.8104713 128.0 +-7.6592956 23.196594 -1.8079854 128.0 +-7.5063891 23.210894 -1.8054243 128.0 +-7.3544989 23.227045 -1.8030893 128.0 +-7.2044635 23.247923 -1.8012061 128.0 +-7.0556068 23.27165 -1.7996242 128.0 +-6.9050298 23.288692 -1.7975904 128.0 +-6.7509012 23.292313 -1.7945772 128.0 +-6.6045952 23.321783 -1.7936734 128.0 +-3.9015102 14.10465 -1.0681256 128.0 +-6.3004932 23.336575 -1.7886264 128.0 +-6.1571841 23.374794 -1.7886264 128.0 +-6.0141392 23.414064 -1.7887771 128.0 +-3.6311777 14.503757 -1.0920795 128.0 +-3.5371566 14.505421 -1.0904976 128.0 +-5.5531373 23.398552 -1.7792859 128.0 +-3.2795005 14.203783 -1.0638319 128.0 +-5.2557597 23.421152 -1.7758962 128.0 +-5.1376414 23.570848 -1.7850108 128.0 +-4.9698076 23.492664 -1.7765741 128.0 +-4.8227611 23.509041 -1.7755196 128.0 +-3.916204 19.70233 -1.4800879 128.0 +-3.7969341 19.7348 -1.4807658 128.0 +-4.3999767 23.651669 -1.7799639 128.0 +-3.4878273 19.40892 -1.4522923 128.0 +-4.1117868 23.717638 -1.7810185 128.0 +-3.9693015 23.761108 -1.7824497 128.0 +-3.8209 23.769264 -1.7812444 128.0 +-3.6714828 23.769594 -1.7795119 128.0 +-3.5243971 23.783785 -1.7789093 128.0 +-3.3811975 23.824707 -1.7804159 128.0 +-3.2381644 23.868719 -1.7822237 128.0 +-3.0919034 23.890118 -1.7823744 128.0 +-2.9450145 23.90666 -1.7822237 128.0 +-2.8010497 23.94805 -1.7840315 128.0 +-2.6571264 23.992537 -1.7861407 128.0 +-2.5125554 24.034176 -1.7880992 128.0 +-2.3670857 24.069979 -1.7896811 128.0 +-2.2211795 24.103909 -1.7911876 128.0 +-2.0732388 24.117085 -1.7911876 128.0 +-1.9276773 24.160166 -1.7935227 128.0 +-1.7805676 24.18745 -1.7947279 128.0 +-1.6339332 24.224783 -1.7967618 128.0 +-1.4873953 24.269188 -1.7993982 128.0 +-1.339606 24.298767 -1.8009801 128.0 +-1.1903889 24.304537 -1.8008294 128.0 +-1.0422596 24.335293 -1.8026372 128.0 +-0.89489275 24.395041 -1.8067049 128.0 +-0.74728781 24.468843 -1.8119024 128.0 +-0.59803396 24.509853 -1.8146895 128.0 +-0.44815966 24.541973 -1.816874 128.0 +-0.29886493 24.651947 -1.8250093 128.0 +-0.14808345 24.735083 -1.8311862 128.0 +0.0036993716 24.778402 -1.8344252 128.0 +0.1560335 24.82478 -1.8379655 128.0 +0.30882499 24.861244 -1.8408279 128.0 +0.46286744 24.939636 -1.8469294 128.0 +0.61785883 25.016075 -1.8529556 128.0 +0.77318996 25.071615 -1.8574752 128.0 +0.92852479 25.107254 -1.8605636 128.0 +1.0853583 25.165838 -1.8654598 128.0 +1.2430439 25.225433 -1.8705068 128.0 +1.3995683 25.249191 -1.8729172 128.0 +1.5526892 25.211266 -1.8707327 128.0 +1.7064091 25.187336 -1.8696781 128.0 +1.8609235 25.176392 -1.8696781 128.0 +2.0156865 25.168476 -1.8699794 128.0 +2.1705081 25.160601 -1.8703561 128.0 +1.8547066 20.064051 -1.4847581 128.0 +1.9206872 19.473759 -1.4408426 128.0 +2.0798757 19.840445 -1.4696175 128.0 +2.1965103 19.781719 -1.4661524 128.0 +2.3145943 19.740139 -1.4640433 128.0 +3.0910947 25.031004 -1.8678703 128.0 +2.52689 19.480833 -1.4465674 128.0 +3.3985686 24.995138 -1.8681716 128.0 +3.5494843 24.957031 -1.866891 128.0 +3.7041624 24.945633 -1.8677197 128.0 +3.8583767 24.930319 -1.8683223 128.0 +4.0125422 24.914049 -1.8689249 128.0 +4.1655011 24.889944 -1.8690002 128.0 +4.3186564 24.866863 -1.8692262 128.0 +4.470449 24.835972 -1.8689249 128.0 +2.7992861 15.024914 -1.1171633 128.0 +4.7709246 24.75868 -1.8673429 128.0 +2.8210509 14.173812 -1.0543407 128.0 +5.0669656 24.66213 -1.864556 128.0 +3.069397 14.49028 -1.0815338 128.0 +3.1510181 14.438051 -1.0789727 128.0 +5.4995012 24.473234 -1.8574752 128.0 +3.4613912 14.975383 -1.1237167 128.0 +5.7924938 24.3748 -1.8552154 128.0 +5.9400535 24.331049 -1.8546127 128.0 +3.5371344 14.114072 -1.0617981 128.0 +3.4520187 13.424789 -1.0097473 128.0 +3.5259337 13.371537 -1.0072615 128.0 +6.5257492 24.142328 -1.8518257 128.0 +3.9559014 14.288247 -1.0825883 128.0 +4.0326166 14.225332 -1.0795753 128.0 +4.0386739 13.920688 -1.0575799 128.0 +4.1098242 13.847849 -1.0538135 128.0 +4.173861 13.753671 -1.0483899 128.0 +4.2519679 13.707802 -1.0468081 128.0 +4.3341894 13.675751 -1.0463561 128.0 +4.4253926 13.671667 -1.048164 128.0 +4.5292277 13.704849 -1.052985 128.0 +4.6078143 13.660739 -1.0517043 128.0 +4.6857061 13.615237 -1.0503484 128.0 +4.8018641 13.679374 -1.0578058 128.0 +4.9095731 13.716308 -1.063154 128.0 +4.9939842 13.686861 -1.0632293 128.0 +5.0723095 13.641007 -1.0620241 128.0 +5.1937213 13.7094 -1.0700841 128.0 +5.3089805 13.758208 -1.0766375 128.0 +5.531177 14.076177 -1.105111 128.0 +5.6167021 14.040122 -1.1049604 128.0 +5.6986074 13.995235 -1.1041318 128.0 +5.787046 13.966455 -1.1046591 128.0 +5.8958788 13.985812 -1.1091787 128.0 +5.9658608 13.912715 -1.1061656 128.0 +6.0503182 13.87402 -1.106015 128.0 +6.1248226 13.812935 -1.1040565 128.0 +6.2254462 13.810546 -1.1069943 128.0 +6.371552 13.906249 -1.1181426 128.0 +6.4925423 13.943727 -1.1245453 128.0 +6.5997295 13.949595 -1.128387 128.0 +10.891538 22.658611 -1.8617688 128.0 +11.025113 22.580605 -1.8608649 128.0 +11.162128 22.50985 -1.8606389 128.0 +11.294206 22.429359 -1.8596597 128.0 +11.432979 22.362301 -1.8598857 128.0 +11.569517 22.290842 -1.8598104 128.0 +11.711651 22.230021 -1.8607142 128.0 +11.84501 22.152464 -1.8602623 128.0 +11.980712 22.079369 -1.8602623 128.0 +12.106343 21.98797 -1.8587557 128.0 +12.229845 21.893251 -1.8570232 128.0 +12.359525 21.80999 -1.8563453 128.0 +12.476715 21.705215 -1.8538595 128.0 +12.590072 21.594656 -1.8509218 128.0 +12.702542 21.483524 -1.847984 128.0 +12.825919 21.391495 -1.8467788 128.0 +12.950717 21.30217 -1.8458749 128.0 +13.078041 21.217211 -1.8454229 128.0 +13.208509 21.137413 -1.8454982 128.0 +13.335289 21.051756 -1.8451216 128.0 +13.457205 20.95863 -1.8441423 128.0 +13.579568 20.866468 -1.8433137 128.0 +13.678246 20.738638 -1.8393214 128.0 +13.445593 20.116299 -1.7904344 128.0 +13.418898 19.812164 -1.7702467 128.0 +13.482653 19.645596 -1.7625633 128.0 +13.555119 19.493731 -1.756236 128.0 +13.640016 19.361282 -1.7517164 128.0 +13.765509 19.286963 -1.7526202 128.0 +13.936178 19.27486 -1.7593997 128.0 +14.075397 19.217947 -1.7621114 128.0 +14.202558 19.144033 -1.7633166 128.0 +14.396437 19.158562 -1.7729585 128.0 +14.549957 19.117474 -1.7774781 128.0 +15.162552 19.670683 -1.8387941 128.0 +15.291554 19.58828 -1.8398488 128.0 +15.420116 19.505035 -1.8409033 128.0 +15.553842 19.427956 -1.8426358 128.0 +15.694108 19.358488 -1.845197 128.0 +15.82778 19.280323 -1.8470048 128.0 +15.964271 19.20508 -1.8491893 128.0 +16.103643 19.1327 -1.8517504 128.0 +16.236259 19.051744 -1.8535582 128.0 +16.353504 18.952517 -1.8536335 128.0 +16.461615 18.842806 -1.8527296 128.0 +13.116278 14.829296 -1.4581678 128.0 +13.236958 14.781963 -1.4615575 128.0 +13.325399 14.698248 -1.4613315 128.0 +13.31284 14.504551 -1.4498818 128.0 +13.243424 14.252399 -1.4323307 128.0 +13.466599 14.315396 -1.4473207 128.0 +13.556246 14.234664 -1.4475467 128.0 +13.604573 14.111018 -1.4433284 128.0 +13.55647 13.88956 -1.4287903 128.0 +13.713632 13.879172 -1.4365489 128.0 +13.864121 13.860327 -1.4435544 128.0 +14.117779 13.941745 -1.4614822 128.0 +17.875734 17.437073 -1.8490386 128.0 +17.980236 17.324986 -1.8488126 128.0 +14.932532 14.212974 -1.5199357 128.0 +14.905396 14.013852 -1.5081095 128.0 +15.57859 14.467663 -1.5686722 128.0 +15.207049 13.949862 -1.5215176 128.0 +15.26871 13.834866 -1.5191072 128.0 +15.203955 13.607262 -1.5039665 128.0 +15.319288 13.542112 -1.5072055 128.0 +15.433641 13.475403 -1.5103693 128.0 +15.614209 13.465102 -1.5201617 128.0 +15.832426 13.48477 -1.5336453 128.0 +17.416687 14.650536 -1.6818883 128.0 +17.503952 14.541481 -1.6816624 128.0 +17.599787 14.439497 -1.6823404 128.0 +17.705101 14.345045 -1.6839975 128.0 +17.81381 14.252957 -1.6860313 128.0 +17.927532 14.164402 -1.6885924 128.0 +18.051058 14.082961 -1.6921328 128.0 +18.203487 14.02305 -1.6984603 128.0 +18.312206 13.928597 -1.7006447 128.0 +18.426828 13.838127 -1.7034318 128.0 +18.563459 13.763402 -1.7083281 128.0 +18.756191 13.728745 -1.7184973 128.0 +18.90797 13.662454 -1.7248247 128.0 +19.088865 13.61566 -1.7338638 128.0 +19.252773 13.555104 -1.7413212 128.0 +19.492809 13.545963 -1.755784 128.0 +19.631477 13.464453 -1.7609062 128.0 +19.83099 13.423107 -1.7716026 128.0 +20.037361 13.384248 -1.7829016 128.0 +20.199038 13.313727 -1.790133 128.0 +20.348061 13.23357 -1.7962345 128.0 +19.225365 12.336299 -1.6882159 128.0 +19.10775 12.095974 -1.670966 128.0 +19.154545 11.961603 -1.6685555 128.0 +19.168146 11.807242 -1.6632826 128.0 +19.133703 11.624692 -1.6538668 128.0 +19.143084 11.470173 -1.6484433 128.0 +19.153006 11.316993 -1.6431704 128.0 +19.138508 11.150571 -1.6358637 128.0 +19.148634 10.999654 -1.6308168 128.0 +19.148085 10.84363 -1.6249413 128.0 +19.14286 10.686084 -1.6187645 128.0 +19.130312 10.525647 -1.6120604 128.0 +19.1472 10.382402 -1.6079928 128.0 +19.165689 10.240758 -1.6041511 128.0 +19.111691 10.061656 -1.594208 128.0 +24.432089 12.671453 -2.0417244 128.0 +24.519146 12.526292 -2.0425532 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +20.820173 10.157943 -1.7126217 128.0 +21.014244 10.093459 -1.7236948 128.0 +21.386801 10.111355 -1.7496825 128.0 +21.616602 10.058173 -1.7636933 128.0 +24.261911 11.108292 -1.9783747 128.0 +24.348707 10.967814 -1.9799565 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +24.246742 10.389365 -1.9553246 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +24.397352 9.0645418 -1.9287343 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +24.218292 8.3275547 -1.8972477 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +24.027498 7.6079082 -1.8665144 128.0 +24.088015 7.4647617 -1.8676443 128.0 +24.030302 7.2855783 -1.859509 128.0 +23.979906 7.1099362 -1.8520516 128.0 +23.97998 6.9501753 -1.8486619 128.0 +23.984756 6.7923112 -1.8457242 128.0 +23.97216 6.6301327 -1.8415059 128.0 +23.970995 6.4717436 -1.8382668 128.0 +23.914791 6.299397 -1.8308095 128.0 +23.932711 6.1473317 -1.8292276 128.0 +23.862606 5.9734945 -1.8208663 128.0 +0 0 -0 128.0 +23.816717 5.6523581 -1.8117518 128.0 +23.816944 5.4982662 -1.8091154 128.0 +23.831745 5.347877 -1.8076842 128.0 +23.861189 5.2009106 -1.8074582 128.0 +23.895578 5.0550222 -1.8076842 128.0 +23.921261 4.9073048 -1.8073075 128.0 +24.008625 4.7719007 -1.8117518 128.0 +24.074663 4.6316538 -1.8146142 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +24.352999 3.7615671 -1.8241054 128.0 +24.379566 3.6126535 -1.8244067 128.0 +24.400288 3.4628553 -1.8243314 128.0 +24.42404 3.3134747 -1.8245573 128.0 +24.448856 3.1641891 -1.824934 128.0 +24.486614 3.0164297 -1.8263652 128.0 +24.52249 2.8682101 -1.8277211 128.0 +24.570351 2.7210901 -1.8300562 128.0 +24.625263 2.5743196 -1.832994 128.0 +24.670366 2.4260995 -1.8352537 128.0 +24.720535 2.2779717 -1.8379655 128.0 +24.770807 2.1294048 -1.8407526 128.0 +24.813227 1.9797517 -1.8430125 128.0 +24.841812 1.8287071 -1.844293 128.0 +24.90629 1.6798673 -1.8483607 128.0 +24.946983 1.528903 -1.8506957 128.0 +24.964855 1.3762959 -1.8513737 128.0 +24.999722 1.2244043 -1.8534075 128.0 +25.032667 1.072094 -1.855366 128.0 +0 0 -0 128.0 +17.426193 0.53253829 -1.2796433 128.0 +17.522837 0.42788506 -1.286724 128.0 +17.545073 0.32072207 -1.2882305 128.0 +17.531754 0.21288088 -1.2871006 128.0 +17.467916 0.10491908 -1.2822044 128.0 +17.432333 -0.0022569741 -1.2794926 128.0 +17.423018 -0.10916289 -1.2788147 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.375504 -1.0697441 -1.2776848 128.0 +18.295835 -1.2391992 -1.3478893 128.0 +18.299822 -1.3523196 -1.3487933 128.0 +18.297142 -1.4650576 -1.3492452 128.0 +18.22522 -1.571897 -1.3444996 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +22.86816 -2.3974502 -1.6995902 128.0 +22.504166 -2.498965 -1.6730752 128.0 +22.35372 -2.6212001 -1.6628307 128.0 +16.639881 -2.054476 -1.2291743 128.0 +15.717204 -2.0384767 -1.1598736 128.0 +14.988056 -2.0374427 -1.1052617 128.0 +14.476727 -2.0584409 -1.0672216 128.0 +13.605711 -2.0197682 -1.0016873 128.0 +13.473826 -2.084754 -0.99257278 128.0 +13.36135 -2.15137 -0.98496479 128.0 +13.275121 -2.2211301 -0.97939062 128.0 +13.219979 -2.2953746 -0.97622687 128.0 +13.194852 -2.3745041 -0.9753983 128.0 +13.16925 -2.4534118 -0.97456968 128.0 +13.377192 -2.5771995 -0.99174422 128.0 +12.921044 -2.5716043 -0.95784712 128.0 +12.943115 -2.6586661 -0.96078491 128.0 +12.782185 -2.7074399 -0.94963652 128.0 +12.733183 -2.7788 -0.94715071 128.0 +12.72173 -2.8581891 -0.94760269 128.0 +12.710753 -2.9377668 -0.94812995 128.0 +12.802114 -3.04176 -0.95664191 128.0 +12.592375 -3.0736566 -0.9418025 128.0 +12.564573 -3.1486819 -0.94112462 128.0 +11.013382 -2.8317389 -0.82165629 128.0 +12.438211 -3.2797415 -0.93434519 128.0 +12.507376 -3.3802018 -0.94135058 128.0 +12.225011 -3.384491 -0.92086166 128.0 +12.11 -3.4327791 -0.91347963 128.0 +7.9229426 -2.2980835 -0.58580804 128.0 +7.9029574 -2.3449516 -0.58535606 128.0 +7.8893743 -2.3936889 -0.5854314 128.0 +7.8754907 -2.4423475 -0.58550674 128.0 +7.8774662 -2.4960487 -0.58686262 128.0 +7.9075389 -2.5590806 -0.5904783 128.0 +7.9361858 -2.6222622 -0.5940187 128.0 +11.86556 -4.0021329 -0.9085834 128.0 +11.832294 -4.0719419 -0.90790546 128.0 +11.852247 -4.1603236 -0.91152114 128.0 +11.739188 -4.2017107 -0.90451574 128.0 +11.742225 -4.2842598 -0.90685087 128.0 +11.054948 -4.1104665 -0.85359484 128.0 +11.003409 -4.1683273 -0.85148567 128.0 +7.1811881 -2.7704601 -0.54407698 128.0 +7.1621976 -2.8137414 -0.54392636 128.0 +11.73304 -4.6935554 -0.91724598 128.0 +11.720643 -4.7722297 -0.91860187 128.0 +11.545594 -4.7837358 -0.90670025 128.0 +11.455382 -4.8289185 -0.90172869 128.0 +19.063942 -8.17521 -1.5295776 128.0 +9.0106449 -3.9290042 -0.70520103 128.0 +9.016448 -3.9975593 -0.70768684 128.0 +18.790241 -8.4706287 -1.5196345 128.0 +18.729753 -8.5820255 -1.5189565 128.0 +18.656857 -8.6875257 -1.5172993 128.0 +5.5383162 -2.6194696 -0.42543727 128.0 +5.4978743 -2.6417377 -0.42340344 128.0 +5.3632846 -2.6176662 -0.41346031 128.0 +5.2801223 -2.6172976 -0.40781081 128.0 +5.3450079 -2.6904609 -0.41466555 128.0 +5.3612485 -2.7400033 -0.41745263 128.0 +5.3514156 -2.7765231 -0.41805524 128.0 +17.910809 -9.4358635 -1.4919142 128.0 +17.85697 -9.5479355 -1.4922909 128.0 +17.800678 -9.6587515 -1.4925168 128.0 +17.713127 -9.7524004 -1.4901063 128.0 +17.641636 -9.8545809 -1.489127 128.0 +17.56262 -9.9523172 -1.4875453 128.0 +17.485662 -10.050946 -1.4861894 128.0 +3.5100124 -2.04527 -0.26951078 128.0 +3.4862385 -2.0601704 -0.26853153 128.0 +3.4760976 -2.0830612 -0.26875752 128.0 +3.4675109 -2.106941 -0.26913416 128.0 +3.4765873 -2.1417825 -0.27109265 128.0 +3.4473135 -2.1530335 -0.26966146 128.0 +3.4643624 -2.1933563 -0.2723732 128.0 +3.4676201 -2.225348 -0.27387974 128.0 +3.4480503 -2.2427754 -0.27335244 128.0 +16.471842 -10.863778 -1.4531962 128.0 +16.404873 -10.964643 -1.4531962 128.0 +3.3112421 -2.2415512 -0.26468986 128.0 +4.2445264 -2.9118838 -0.35146636 128.0 +3.2155368 -2.2347629 -0.25843775 128.0 +4.2052126 -2.9614542 -0.35116506 128.0 +15.647705 -11.167824 -1.4148549 128.0 +15.615248 -11.289919 -1.4182446 128.0 +4.2280202 -3.0955129 -0.35847175 128.0 +4.1088457 -3.0471268 -0.34905589 128.0 +5.4595718 -4.1014771 -0.47846735 128.0 +5.439064 -4.1385231 -0.4789193 128.0 +5.5730948 -4.2947969 -0.49413532 128.0 +5.50105 -4.2933207 -0.48976636 128.0 +5.4378395 -4.2979269 -0.48622602 128.0 +14.791824 -11.841842 -1.3939893 128.0 +14.628263 -11.858903 -1.3851761 128.0 +14.602235 -11.987035 -1.389771 128.0 +3.6514487 -3.0340478 -0.3212603 128.0 +14.251876 -11.995153 -1.3698094 128.0 +13.979931 -11.913555 -1.3501492 128.0 +2.9185662 -2.5170321 -0.25376749 128.0 +2.9000633 -2.5322685 -0.25346619 128.0 +2.8911929 -2.5559614 -0.25414413 128.0 +2.8487141 -2.5497043 -0.25143236 128.0 +2.8359709 -2.5698147 -0.25173366 128.0 +3.5180106 -3.2277679 -0.32329413 128.0 +3.4586954 -3.2126374 -0.31922647 128.0 +12.907904 -12.142403 -1.3013374 128.0 +12.825935 -12.214498 -1.3005841 128.0 +2.6481345 -2.5517771 -0.24043465 128.0 +2.6260052 -2.5617089 -0.2397567 128.0 +2.5903778 -2.5581486 -0.23764755 128.0 +2.5598283 -2.5591848 -0.23606569 128.0 +2.5461791 -2.576972 -0.23629166 128.0 +2.5372818 -2.599685 -0.23704493 128.0 +2.5309687 -2.6252577 -0.23809952 128.0 +2.9623358 -3.1109712 -0.28713727 128.0 +2.9411426 -3.1269095 -0.28691128 128.0 +2.9171512 -3.1397822 -0.28638399 128.0 +7.7009516 -8.3942032 -0.82316279 128.0 +7.6339021 -8.4243011 -0.82143027 128.0 +7.5767484 -8.4650383 -0.82082766 128.0 +10.691221 -12.093894 -1.1820197 128.0 +10.58468 -12.122459 -1.1783288 128.0 +2.8920739 -3.3522632 -0.2970804 128.0 +3.4022455 -3.9932215 -0.3589237 128.0 +10.173615 -12.09393 -1.1564839 128.0 +9.9367399 -11.96053 -1.1372756 128.0 +10.049734 -12.248703 -1.159497 128.0 +9.8155813 -12.114111 -1.1404393 128.0 +9.6345444 -12.040962 -1.1275585 128.0 +9.6210594 -12.176532 -1.1349405 128.0 +9.5320578 -12.217254 -1.1332079 128.0 +9.3309565 -12.111986 -1.1176153 128.0 +9.2286959 -12.132502 -1.1141503 128.0 +9.1169558 -12.139462 -1.10948 128.0 +9.0428915 -12.195975 -1.1095554 128.0 +9.0073462 -12.305144 -1.1146022 128.0 +8.9293375 -12.356948 -1.114301 128.0 +8.8556652 -12.414752 -1.1146022 128.0 +8.6943684 -12.34818 -1.1034539 128.0 +2.930162 -4.2149377 -0.35041177 128.0 +2.9031165 -4.2311931 -0.35026112 128.0 +2.8916311 -4.2703972 -0.35221961 128.0 +2.8997116 -4.3394709 -0.35688987 128.0 +2.871933 -4.3555164 -0.35673922 128.0 +7.9561896 -12.232658 -1.0649619 128.0 +7.8099031 -12.170463 -1.0550187 128.0 +2.7262115 -4.3048491 -0.34754935 128.0 +7.6288052 -12.215483 -1.0505744 128.0 +2.6836379 -4.3549609 -0.34905589 128.0 +2.6884463 -4.4233313 -0.35365084 128.0 +2.6950779 -4.4962001 -0.3586224 128.0 +2.6638885 -4.5066423 -0.35809511 128.0 +2.6346803 -4.520318 -0.35786912 128.0 +2.618814 -4.5571513 -0.35967699 128.0 +1.3998247 -2.4698017 -0.1770848 128.0 +2.4849343 -4.4496317 -0.34762469 128.0 +6.6117768 -12.015972 -0.99867427 128.0 +6.5360227 -12.052809 -0.99837297 128.0 +6.4478483 -12.066301 -0.99611318 128.0 +6.375083 -12.108284 -0.99633914 128.0 +6.303422 -12.152484 -0.99679112 128.0 +6.1593337 -12.055067 -0.98526609 128.0 +6.0825605 -12.087289 -0.98481411 128.0 +6.0312996 -12.170845 -0.98873115 128.0 +5.9473257 -12.188804 -0.98714924 128.0 +5.8797636 -12.240347 -0.98842984 128.0 +1.1614977 -2.4543006 -0.16774428 128.0 +1.1434721 -2.4550526 -0.16721699 128.0 +1.124236 -2.4529557 -0.16646372 128.0 +1.1030213 -2.4461699 -0.16533382 128.0 +5.4958715 -12.402184 -0.98737526 128.0 +5.3507624 -12.277524 -0.97434372 128.0 +5.2694378 -12.296375 -0.97321379 128.0 +5.2078238 -12.36156 -0.97592556 128.0 +5.1364536 -12.404338 -0.97682947 128.0 +5.0275545 -12.355263 -0.97027606 128.0 +0.95737112 -2.3922 -0.15727384 128.0 +0.92846358 -2.3618298 -0.15433611 128.0 +0.9135955 -2.3665519 -0.15426078 128.0 +0.90329307 -2.3833041 -0.1551647 128.0 +0.90427846 -2.4308653 -0.1585544 128.0 +4.508256 -12.364244 -0.95679259 128.0 +1.1698384 -3.2680418 -0.224842 128.0 +1.1590036 -3.3015058 -0.22695115 128.0 +1.1568793 -3.3613622 -0.23116945 128.0 +4.1531558 -12.321855 -0.94489092 128.0 +4.0805979 -12.356575 -0.9456442 128.0 +3.9930446 -12.345326 -0.94278181 128.0 +3.9193268 -12.376249 -0.94330907 128.0 +3.8250163 -12.341011 -0.93863881 128.0 +0.97856832 -3.2241702 -0.21715866 128.0 +0.9624511 -3.2425425 -0.21813791 128.0 +0.95003074 -3.2742462 -0.22017173 128.0 +0.94486368 -3.3327832 -0.2243147 128.0 +3.4568834 -12.496745 -0.94210386 128.0 +3.3809192 -12.520609 -0.94232982 128.0 +0.88894486 -3.3708246 -0.22597189 128.0 +0.86750108 -3.3733182 -0.22574592 128.0 +3.1234941 -12.475282 -0.93411922 128.0 +3.0305934 -12.427365 -0.92892164 128.0 +2.9715493 -12.518494 -0.93457115 128.0 +2.8922145 -12.525804 -0.93374258 128.0 +0.72083259 -3.2076383 -0.21098186 128.0 +1.8966749 -8.6982508 -0.63514709 128.0 +0.67501938 -3.1859996 -0.20864673 128.0 +1.7200724 -8.3809357 -0.60893339 128.0 +1.6639513 -8.3678589 -0.60712552 128.0 +1.6225578 -8.4298096 -0.61111784 128.0 +2.3309257 -12.526678 -0.92515528 128.0 +1.4800246 -8.2321854 -0.59447062 128.0 +2.209723 -12.742981 -0.93961805 128.0 +2.134284 -12.77302 -0.9408986 128.0 +1.3840957 -8.6055717 -0.62106097 128.0 +1.9670312 -12.731236 -0.93577641 128.0 +1.893991 -12.77759 -0.93841285 128.0 +1.8135927 -12.775149 -0.93735826 128.0 +1.7393258 -12.816669 -0.93969339 128.0 +1.6612911 -12.832044 -0.94007003 128.0 +1.5822802 -12.840016 -0.93991935 128.0 +0.45414311 -3.8743618 -0.25730786 128.0 +1.4000182 -12.636459 -0.92304617 128.0 +0.4127824 -3.9391484 -0.26182747 128.0 +0.38148376 -3.8691638 -0.25632861 128.0 +0.35672987 -3.8605092 -0.25550002 128.0 +1.0957135 -12.739536 -0.928545 128.0 +0.31012124 -3.874536 -0.25625327 128.0 +0.28700012 -3.8853161 -0.25693122 128.0 +0.2629537 -3.8840194 -0.25670522 128.0 +0.78773767 -12.844204 -0.93472183 128.0 +0.70293438 -12.74027 -0.92651117 128.0 +0.62479705 -12.745339 -0.92658651 128.0 +0.54572898 -12.729008 -0.92508 128.0 +0.47571951 -12.953338 -0.9418025 128.0 +0.39544016 -12.930099 -0.93984401 128.0 +0.31221101 -12.772783 -0.92779171 128.0 +0.23646581 -12.919023 -0.93871415 128.0 +0.15784194 -12.974073 -0.94278181 128.0 +0.077716276 -12.888046 -0.93622833 128.0 +-0.0013743453 -12.937141 -0.93991935 128.0 +-0.080572017 -12.907972 -0.9377349 128.0 +-0.16069233 -12.981019 -0.94330907 128.0 +-0.24097005 -13.013686 -0.94587016 128.0 +-0.32103798 -13.020934 -0.9465481 128.0 +-0.39781779 -12.918055 -0.93894011 128.0 +-0.47474939 -12.852592 -0.93419451 128.0 +-0.5537315 -12.852426 -0.93442053 128.0 +-0.62727672 -12.741224 -0.92628521 128.0 +-0.719473 -12.990025 -0.94541824 128.0 +-0.78266376 -12.717638 -0.92515528 128.0 +-0.86182964 -12.729509 -0.92643589 128.0 +-0.95933759 -12.986514 -0.94632214 128.0 +-1.0415522 -13.012191 -0.94873261 128.0 +-1.1237748 -13.033372 -0.95084172 128.0 +-1.2003267 -12.989493 -0.94805467 128.0 +-1.2873511 -13.056309 -0.95370418 128.0 +-1.3505876 -12.887506 -0.9415012 128.0 +-1.4353638 -12.930511 -0.94541824 128.0 +-1.5381458 -13.121514 -0.96063423 128.0 +-1.6416134 -13.297881 -0.9747957 128.0 +-1.7329296 -13.362712 -0.98052049 128.0 +-1.8389453 -13.52869 -0.99400401 128.0 +-1.922202 -13.519127 -0.99415463 128.0 +-2.0065827 -13.516941 -0.99490792 128.0 +-2.098484 -13.562514 -0.99935222 128.0 +-2.1532733 -13.373163 -0.98586869 128.0 +-2.2939 -13.709816 -1.0126851 128.0 +-2.3694451 -13.64636 -1.0089188 128.0 +-2.4579039 -13.658062 -1.0109526 128.0 +-2.5549998 -13.714284 -1.0164514 128.0 +-2.6508019 -13.759055 -1.0211216 128.0 +-2.7505593 -13.81979 -1.0270724 128.0 +-2.8367093 -13.80949 -1.0275998 128.0 +-2.9226296 -13.797677 -1.0280517 128.0 +-3.0059595 -13.77364 -1.0275998 128.0 +-3.0683308 -13.656674 -1.0199918 128.0 +-3.1803727 -13.760003 -1.029483 128.0 +-3.278578 -13.798437 -1.0340025 128.0 +-3.3944054 -13.905929 -1.0439457 128.0 +-3.475302 -13.867429 -1.0425898 128.0 +-3.5431852 -13.779209 -1.0373923 128.0 +-3.6225796 -13.737926 -1.0358857 128.0 +-3.7120106 -13.734691 -1.0373923 128.0 +-3.7943521 -13.704929 -1.036865 128.0 +-3.8868058 -13.711129 -1.0392001 128.0 +-3.9919841 -13.759803 -1.044925 128.0 +-4.0791755 -13.744609 -1.0456781 128.0 +-4.1871848 -13.797563 -1.051855 128.0 +-4.2948151 -13.845895 -1.0577304 128.0 +-4.3796911 -13.819283 -1.0577304 128.0 +-4.4702382 -13.810173 -1.0591617 128.0 +-4.5545788 -13.781538 -1.0590863 128.0 +-4.6349106 -13.741049 -1.0581071 128.0 +-4.7210846 -13.718008 -1.0585591 128.0 +-4.8249888 -13.745233 -1.0630786 128.0 +-4.8840284 -13.644958 -1.0574292 128.0 +-4.8483472 -13.287817 -1.0311401 128.0 +-4.9315267 -13.262491 -1.0315168 128.0 +-5.011044 -13.227321 -1.0311401 128.0 +-5.1746936 -13.410287 -1.0484653 128.0 +-5.3010159 -13.490577 -1.0575799 128.0 +-5.1154914 -12.78752 -1.0030432 128.0 +-5.5831394 -13.71172 -1.0810064 128.0 +-5.6812935 -13.711287 -1.0837935 128.0 +-5.7610559 -13.666062 -1.082965 128.0 +-5.5940332 -13.045776 -1.0349065 128.0 +-5.8569641 -13.430731 -1.0694815 128.0 +-5.9356246 -13.386337 -1.0688035 128.0 +-6.1029 -13.538744 -1.0844715 128.0 +-6.2926211 -13.734014 -1.1038305 128.0 +-6.3624597 -13.664411 -1.1012694 128.0 +-6.4790249 -13.694517 -1.1070695 128.0 +-1.6549587 -3.4452362 -0.25135702 128.0 +-1.675192 -3.4332247 -0.25120637 128.0 +-1.6838213 -3.3978679 -0.24909723 128.0 +-1.702396 -3.3830192 -0.24872059 128.0 +-1.7199441 -3.3662951 -0.24819331 128.0 +-1.7401075 -3.3547933 -0.24811798 128.0 +-1.7708855 -3.3634613 -0.24977517 128.0 +-4.4915514 -8.4016066 -0.6823017 128.0 +-4.7166181 -8.6937828 -0.70979595 128.0 +-7.6408749 -13.87852 -1.1594217 128.0 +-1.8499776 -3.3137653 -0.2493232 128.0 +-1.8707674 -3.3032193 -0.24939853 128.0 +-4.7456641 -8.2572823 -0.68207568 128.0 +-8.3995752 -14.407832 -1.2224702 128.0 +-8.5121851 -14.397222 -1.2260859 128.0 +-8.1188354 -13.541697 -1.155354 128.0 +-8.2064352 -13.499293 -1.156032 128.0 +-7.805613 -12.664363 -1.08643 128.0 +-7.9058971 -12.652592 -1.0896691 128.0 +-8.0004597 -12.630798 -1.0920795 128.0 +-8.1133709 -12.636848 -1.097051 128.0 +-8.1951084 -12.593514 -1.0976537 128.0 +-8.2184191 -12.461419 -1.0902717 128.0 +-8.258152 -12.356044 -1.0853001 128.0 +-9.561882 -14.118119 -1.2507178 128.0 +-9.9118509 -14.443121 -1.2858953 128.0 +-9.9980087 -14.378756 -1.2855941 128.0 +-10.088919 -14.321215 -1.2859707 128.0 +-9.7322607 -13.636536 -1.2281951 128.0 +-9.7041502 -13.422227 -1.2138076 128.0 +-9.4846344 -12.950558 -1.1752403 128.0 +-10.597764 -14.285525 -1.306309 128.0 +-10.805033 -14.37966 -1.3213743 128.0 +-10.951644 -14.390056 -1.328681 128.0 +-11.10244 -14.40393 -1.3364396 128.0 +-11.204725 -14.353613 -1.3381722 128.0 +-11.332786 -14.335435 -1.3430685 128.0 +-11.526484 -14.397956 -1.3558739 128.0 +-11.659199 -14.381953 -1.3612221 128.0 +-10.906943 -13.286667 -1.2611881 128.0 +-11.037348 -13.278536 -1.2669884 128.0 +-11.064675 -13.146482 -1.2606609 128.0 +-11.151601 -13.085931 -1.2614142 128.0 +-12.107905 -14.03264 -1.3627287 128.0 +-12.172785 -13.934054 -1.3603183 128.0 +-12.22568 -13.822504 -1.3566272 128.0 +-12.275005 -13.707859 -1.3526349 128.0 +-12.236311 -13.497099 -1.3388501 128.0 +-12.36138 -13.468043 -1.3435957 128.0 +-12.382013 -13.325472 -1.336741 128.0 +-12.429379 -13.212934 -1.3329747 128.0 +-12.483397 -13.108259 -1.3300369 128.0 +-12.648726 -13.119707 -1.3393021 128.0 +-12.714362 -13.026865 -1.3377203 128.0 +-12.801764 -12.956408 -1.3385488 128.0 +-13.067204 -13.063723 -1.358435 128.0 +-13.138601 -12.974891 -1.3575312 128.0 +-13.228674 -12.904473 -1.3586611 128.0 +-13.271701 -12.788467 -1.3548948 128.0 +-13.365811 -12.721917 -1.3565519 128.0 +-13.421097 -12.618494 -1.3542168 128.0 +-13.524575 -12.560332 -1.3569286 128.0 +-13.576405 -12.454194 -1.3543675 128.0 +-13.587537 -12.31174 -1.3477387 128.0 +-13.555079 -12.131718 -1.3368163 128.0 +-13.46788 -11.905673 -1.3205457 128.0 +-10.07851 -8.8002739 -0.97336447 128.0 +-13.750411 -11.858018 -1.3342552 128.0 +-13.797859 -11.752089 -1.3317693 128.0 +-14.139853 -11.894421 -1.358435 128.0 +-10.335933 -8.5872393 -0.97773343 128.0 +-10.337546 -8.4819164 -0.97276187 128.0 +-10.401018 -8.427743 -0.97389174 128.0 +-15.115817 -12.094501 -1.425024 128.0 +-15.190526 -12.002142 -1.4250994 128.0 +-15.269387 -11.913002 -1.4256266 128.0 +-10.645001 -8.200984 -0.97773343 128.0 +-15.501735 -11.791126 -1.4339125 128.0 +-15.574589 -11.696385 -1.4339879 128.0 +-15.629242 -11.588131 -1.4324061 128.0 +-15.671082 -11.470812 -1.4296943 128.0 +-15.729856 -11.366264 -1.4286397 128.0 +-15.81148 -11.278219 -1.4297696 128.0 +-15.928491 -11.214856 -1.4342139 128.0 +-16.208275 -11.263711 -1.4536482 128.0 +-16.404549 -11.251461 -1.4653238 128.0 +-16.639263 -11.262934 -1.4804645 128.0 +-16.746202 -11.186101 -1.4839295 128.0 +-16.824514 -11.089723 -1.4848335 128.0 +-16.954103 -11.026507 -1.4904077 128.0 +-17.261473 -11.076275 -1.5119511 128.0 +-17.367868 -10.994684 -1.5154161 128.0 +-17.291216 -10.798127 -1.5026106 128.0 +-17.357994 -10.69235 -1.5026859 128.0 +-17.425831 -10.587195 -1.5029119 128.0 +-17.483622 -10.475973 -1.5023093 128.0 +-17.53727 -10.362412 -1.5014054 128.0 +-17.674622 -10.297777 -1.5078834 128.0 +-17.771198 -10.208503 -1.5108212 128.0 +-17.843914 -10.105165 -1.5117252 128.0 +-17.92909 -10.008608 -1.513759 128.0 +-16.197384 -8.9121304 -1.3591883 128.0 +-16.370104 -8.8767395 -1.3693575 128.0 +-6.8182774 -3.6440458 -0.54663813 128.0 +-16.354271 -8.610158 -1.3588117 128.0 +-16.347485 -8.4788904 -1.3537648 128.0 +-7.2056561 -3.6821353 -0.57390642 128.0 +-7.2058439 -3.6266489 -0.57202321 128.0 +-6.9527607 -3.4460194 -0.54882258 128.0 +-6.972878 -3.4028561 -0.54874724 128.0 +-6.9936261 -3.3600073 -0.54874724 128.0 +-6.9266653 -3.2756941 -0.54144055 128.0 +-6.8128271 -3.1708789 -0.53029221 128.0 +-19.140152 -8.7635708 -1.5528536 128.0 +-19.215385 -8.6557913 -1.5546614 128.0 +-7.3185906 -3.243664 -0.56735295 128.0 +-7.2981329 -3.1811714 -0.56403857 128.0 +-19.518106 -8.3634634 -1.5667137 128.0 +-19.626034 -8.2675428 -1.571384 128.0 +-19.727987 -8.1683235 -1.5756023 128.0 +-19.835001 -8.0704184 -1.5802726 128.0 +-19.954519 -7.976687 -1.5859973 128.0 +-20.036503 -7.8672161 -1.5887091 128.0 +-20.124405 -7.7595501 -1.5919482 128.0 +-20.181896 -7.6398058 -1.5927768 128.0 +-20.248959 -7.5234675 -1.594434 128.0 +-20.275066 -7.3919091 -1.5928521 128.0 +-20.473087 -7.3220916 -1.6051304 128.0 +-20.525156 -7.1989732 -1.605733 128.0 +-20.601004 -7.0839205 -1.6082941 128.0 +-20.680935 -6.9697995 -1.6112318 128.0 +-20.760241 -6.8549643 -1.6141696 128.0 +-20.8503 -6.7430987 -1.6180112 128.0 +-20.929308 -6.6270752 -1.6210244 128.0 +-21.01244 -6.5118113 -1.6244141 128.0 +-21.088263 -6.3937511 -1.6272764 128.0 +-12.447251 -3.6911399 -0.94338441 128.0 +-21.311672 -6.1769481 -1.6388015 128.0 +-13.185286 -3.734524 -0.99784565 128.0 +-21.445456 -5.9314332 -1.6434717 128.0 +-21.491074 -5.8023334 -1.644225 128.0 +-12.791831 -3.3700581 -0.96191478 128.0 +-12.801644 -3.2887771 -0.96108621 128.0 +-12.852537 -3.2179132 -0.96349663 128.0 +-21.844006 -5.3260684 -1.6610982 128.0 +-21.919935 -5.2022953 -1.664488 128.0 +-21.988363 -5.076221 -1.6673503 128.0 +-13.193259 -2.9611194 -0.98406088 128.0 +-18.215155 -3.9705536 -1.3709394 128.0 +-22.054661 -4.6656752 -1.6655425 128.0 +-19.282314 -3.9558833 -1.4495806 128.0 +-21.957682 -4.3643613 -1.6537915 128.0 +-21.83227 -4.200357 -1.6421158 128.0 +-21.685091 -4.0342278 -1.6288583 128.0 +-18.718964 -3.3638823 -1.3993375 128.0 +-18.722548 -3.2460668 -1.398057 128.0 +-21.513723 -3.593987 -1.610328 128.0 +-21.528479 -3.4608061 -1.6098007 128.0 +-21.550295 -3.3287969 -1.6098759 128.0 +-21.597933 -3.2005954 -1.6119851 128.0 +-19.358284 -2.7475445 -1.4396374 128.0 +-21.849016 -2.9642594 -1.6282557 128.0 +-21.976562 -2.8443418 -1.6366169 128.0 +-22.208363 -2.735888 -1.6529629 128.0 +-22.530769 -2.6353488 -1.6762389 128.0 +-22.652563 -2.5087926 -1.6842989 128.0 +-23.014647 -2.4060228 -1.7106632 128.0 +-23.218521 -2.2833931 -1.7250507 128.0 +-23.263868 -2.1438103 -1.7274611 128.0 +-23.436539 -2.0147684 -1.7395887 128.0 +-24.118418 -1.9243484 -1.790359 128.0 +-26.024239 -1.9156947 -1.9338566 128.0 +-26.068336 -1.7581898 -1.9363424 128.0 +-26.097544 -1.5993624 -1.9377736 128.0 +-26.216387 -1.4452335 -1.9460595 128.0 +-26.118193 -1.2791312 -1.9379995 128.0 +-26.20525 -1.1222585 -1.9440256 128.0 +-26.166801 -0.95980221 -1.9406359 128.0 +-26.190138 -0.79977471 -1.9419918 128.0 +-26.165644 -0.63835597 -1.9398074 128.0 +-26.160095 -0.47763118 -1.9391295 128.0 +-26.136608 -0.3167938 -1.937171 128.0 +-26.121109 -0.15631595 -1.9358904 128.0 +-26.112602 0.003961341 -1.9352125 128.0 +-26.109095 0.16416624 -1.9349865 128.0 +-26.103607 0.32431582 -1.9346851 128.0 +-26.096142 0.48438567 -1.9343085 128.0 +-26.08869 0.64440078 -1.9340072 128.0 +-26.076271 0.8042196 -1.9334046 128.0 +-26.051912 0.96350437 -1.9319733 128.0 +-26.030567 1.1226926 -1.9308435 128.0 +-26.009245 1.2817043 -1.9297889 128.0 +-25.985956 1.4404414 -1.928659 128.0 +-25.967672 1.599309 -1.927981 128.0 +-25.946426 1.7578716 -1.9271525 128.0 +-22.53828 -0.57403761 -1.9388834 128.0 +-22.550343 -0.43590793 -1.9396694 128.0 +-22.531673 -0.2972571 -1.9378355 128.0 +-22.539051 -0.15904202 -1.9383594 128.0 +-22.527649 -0.020730797 -1.9373115 128.0 +-22.515398 0.11743451 -1.9362636 128.0 +-22.493334 0.25534707 -1.9344296 128.0 +-22.483376 0.39321956 -1.933731 128.0 +-22.467594 0.53086191 -1.9325957 128.0 +-22.447981 0.66823649 -1.9311984 128.0 +-22.406624 0.80464005 -1.9279672 128.0 +-22.38534 0.94143987 -1.9265699 128.0 +-22.352276 1.0774815 -1.924212 128.0 +-22.318386 1.2131528 -1.9218541 128.0 +-22.283676 1.3484489 -1.9194962 128.0 +-22.268024 1.4846897 -1.9188849 128.0 +-22.24061 1.6199934 -1.917313 128.0 +-22.217342 1.755409 -1.9161777 128.0 +-22.198212 1.8910227 -1.9154791 128.0 +-22.17528 2.026196 -1.9145185 128.0 +-22.142599 2.1602883 -1.9127718 128.0 +-22.125956 2.2958038 -1.9125099 128.0 +-22.100559 2.4303253 -1.9115492 128.0 +-22.078304 2.5650814 -1.9109379 128.0 +-22.050283 2.6990509 -1.9098899 128.0 +-22.029356 2.8337898 -1.9095407 128.0 +-21.996744 2.9669089 -1.9082307 128.0 +-21.97122 3.1008482 -1.9076194 128.0 +-21.923201 3.2313905 -1.9050869 128.0 +-21.89016 3.3638811 -1.9039515 128.0 +-21.84845 3.4948294 -1.9021176 128.0 +-21.812838 3.6265361 -1.900895 128.0 +-21.784285 3.7592926 -1.9003711 128.0 +-21.78042 3.8963959 -1.9021176 128.0 +-21.767857 4.0321417 -1.9031656 128.0 +-21.711397 4.1596332 -1.9003711 128.0 +-21.650286 4.28581 -1.8972272 128.0 +-21.61187 4.4161801 -1.8961792 128.0 +-21.56097 4.5437751 -1.8940833 128.0 +-21.618353 4.6945868 -1.9017683 128.0 +-21.48609 4.8041067 -1.8925114 128.0 +-21.44747 4.9338427 -1.8917254 128.0 +-21.40225 5.0619102 -1.8904154 128.0 +-21.361109 5.1907845 -1.8895422 128.0 +-21.309525 5.3169332 -1.8877956 128.0 +-21.273605 5.4468446 -1.8875335 128.0 +-21.2446 5.5785394 -1.8879702 128.0 +-21.224401 5.7126722 -1.8892802 128.0 +-21.22064 5.8515334 -1.8921621 128.0 +-21.237064 5.9965181 -1.8969651 128.0 +-21.239109 6.1380525 -1.9005457 128.0 +-21.258366 6.285203 -1.9057854 128.0 +-21.276613 6.4328203 -1.9110253 128.0 +-21.277668 6.5758977 -1.9147804 128.0 +-21.291065 6.7234287 -1.9197582 128.0 +-21.276905 6.8628097 -1.9222908 128.0 +-21.263727 7.0028925 -1.924998 128.0 +-21.248686 7.1427541 -1.9276179 128.0 +-21.240265 7.2852802 -1.9309365 128.0 +-21.257223 7.4371824 -1.9367002 128.0 +-21.268423 7.5878921 -1.9420273 128.0 +-21.281382 7.7400403 -1.9476163 128.0 +-21.271786 7.8846693 -1.9511969 128.0 +-21.292902 8.0414371 -1.9577466 128.0 +-21.282209 8.1869583 -1.9614145 128.0 +-21.308561 8.3475466 -1.9686629 128.0 +-21.307833 8.4984331 -1.9734659 128.0 +-21.30513 8.6492491 -1.9781817 128.0 +-21.274675 8.7893209 -1.9803649 128.0 +-21.263508 8.9378366 -1.9844694 128.0 +-21.257727 9.0892868 -1.9891852 128.0 +-21.23353 9.2334547 -1.9922417 128.0 +-21.212919 9.3796806 -1.9957349 128.0 +-21.201307 9.5304937 -2.0001888 128.0 +-21.214916 9.6935215 -2.0071752 128.0 +-21.185759 9.8377762 -2.0101445 128.0 +-21.174547 9.9909639 -2.0149474 128.0 +-21.148777 10.137924 -2.0184407 128.0 +-21.108566 10.278402 -2.0206239 128.0 +-21.136183 10.45277 -2.0295315 128.0 +-21.110819 10.601933 -2.0333741 128.0 +-21.094179 10.756155 -2.0381773 128.0 +-21.064941 10.904618 -2.0418451 128.0 +-21.024971 11.048029 -2.0445523 128.0 +-20.990189 11.194641 -2.0478709 128.0 +-20.964033 11.346457 -2.05215 128.0 +-20.939423 11.499812 -2.0566909 128.0 +-20.898054 11.644564 -2.0596602 128.0 +-20.873041 11.799043 -2.0643761 128.0 +-20.847782 11.954148 -2.0691793 128.0 +-20.837765 12.118903 -2.0756416 128.0 +-20.81707 12.278416 -2.0811434 128.0 +-20.85932 12.47648 -2.0931947 128.0 +-20.800261 12.615084 -2.0950286 128.0 +-20.69446 12.725256 -2.0921469 128.0 +-20.621061 12.855157 -2.0926709 128.0 +-20.595692 13.015502 -2.0982599 128.0 +-20.392971 13.063181 -2.0855098 128.0 +-20.136972 13.074147 -2.0671706 128.0 +-19.869129 13.074255 -2.0475214 128.0 +-19.602879 13.072125 -2.0279596 128.0 +-19.280457 13.028741 -2.002372 128.0 +-19.04891 13.043243 -1.9863033 128.0 +-18.802364 13.04461 -1.9685755 128.0 +-18.576084 13.057195 -1.9529434 128.0 +-18.304922 13.035138 -1.932421 128.0 +-18.138958 13.085433 -1.9231641 128.0 +-17.9417 13.111261 -1.9105012 128.0 +-17.692766 13.096642 -1.8921621 128.0 +-17.464621 13.094404 -1.8760061 128.0 +-17.292709 13.132037 -1.8659632 128.0 +-17.153374 13.192955 -1.8595008 128.0 +-17.077602 13.302242 -1.8601121 128.0 +-17.023815 13.428988 -1.863256 128.0 +-16.874939 13.480344 -1.8558329 128.0 +-16.716005 13.522235 -1.8472747 128.0 +-16.558737 13.563949 -1.838891 128.0 +-16.403122 13.605515 -1.830682 128.0 +-16.253727 13.65081 -1.8231716 128.0 +-16.100601 13.69156 -1.8152246 128.0 +-15.959669 13.741345 -1.8086749 128.0 +-15.781188 13.75719 -1.7977587 128.0 +-15.646437 13.809597 -1.7919077 128.0 +-15.518324 13.866844 -1.7868426 128.0 +-15.297755 13.839502 -1.7708613 128.0 +-15.133945 13.861115 -1.7615169 128.0 +-14.971908 13.882597 -1.7523474 128.0 +-14.850854 13.940794 -1.7480682 128.0 +-14.681269 13.952052 -1.7379379 128.0 +-14.534363 13.983167 -1.730515 128.0 +-14.423312 14.047758 -1.7274585 128.0 +-14.32053 14.119907 -1.7254498 128.0 +-14.242788 14.21666 -1.7265851 128.0 +-14.172807 14.321486 -1.7287683 128.0 +-14.103467 14.427412 -1.7311263 128.0 +-14.000836 14.499345 -1.7293797 128.0 +-13.890292 14.562634 -1.7266724 128.0 +-13.792478 14.638888 -1.7256244 128.0 +-13.934506 14.972635 -1.7554913 128.0 +-13.851138 15.067388 -1.7566265 128.0 +-14.882827 16.390343 -1.903253 128.0 +-14.734087 16.427959 -1.8969651 128.0 +-14.607907 16.489721 -1.8936467 128.0 +-14.468406 16.535561 -1.8885815 128.0 +-14.342571 16.59614 -1.8853503 128.0 +-14.217834 16.657312 -1.8822938 128.0 +-14.101233 16.727482 -1.8803725 128.0 +-14.002153 16.818283 -1.8808966 128.0 +-13.899328 16.904652 -1.8809838 128.0 +-13.790945 16.984205 -1.8803725 128.0 +-13.677748 17.057625 -1.8791499 128.0 +-13.567261 17.134199 -1.878364 128.0 +-13.455736 17.209276 -1.8774906 128.0 +-13.340756 17.279688 -1.8761808 128.0 +-13.223004 17.346169 -1.8745215 128.0 +-13.119317 17.430956 -1.8749582 128.0 +-13.004392 17.500732 -1.8738228 128.0 +-12.890282 17.57136 -1.8728622 128.0 +-12.77229 17.636406 -1.8713776 128.0 +-12.654565 17.701477 -1.8699803 128.0 +-12.541118 17.77228 -1.8692816 128.0 +-12.426708 17.841539 -1.8684957 128.0 +-12.315872 17.915812 -1.8683211 128.0 +-12.202355 17.986095 -1.8677971 128.0 +-12.08456 18.04987 -1.8666618 128.0 +-11.962049 18.106224 -1.8648279 128.0 +-9.1425714 14.025079 -1.4301012 128.0 +-11.709857 18.206411 -1.8601121 128.0 +-11.587249 18.261095 -1.8583655 128.0 +-11.472341 18.327627 -1.8579289 128.0 +-11.357051 18.393438 -1.8574922 128.0 +-11.245013 18.464479 -1.8576669 128.0 +-8.6924763 14.472498 -1.4424145 128.0 +-8.5979271 14.516133 -1.4414539 128.0 +-10.864049 18.601238 -1.8508551 128.0 +-10.736287 18.644241 -1.8484973 128.0 +-10.619719 18.706301 -1.848148 128.0 +-10.505712 18.77285 -1.8483226 128.0 +-10.399949 18.854403 -1.8500692 128.0 +-8.1872196 15.06082 -1.4652076 128.0 +-10.178143 18.999926 -1.8519905 128.0 +-10.052534 19.04528 -1.8503312 128.0 +-9.9157219 19.0686 -1.846576 128.0 +-9.7912664 19.114897 -1.8451787 128.0 +-9.6325121 19.092791 -1.8371444 128.0 +-9.4876976 19.096224 -1.83173 128.0 +-9.3558998 19.12455 -1.8288481 128.0 +-9.2682047 19.243525 -1.8348738 128.0 +-9.181962 19.36754 -1.8414235 128.0 +-9.0814867 19.463236 -1.8452661 128.0 +-8.9722834 19.541225 -1.8474493 128.0 +-8.8632851 19.620422 -1.8498073 128.0 +-8.7512255 19.693554 -1.8516412 128.0 +-8.640995 19.771524 -1.853999 128.0 +-8.5254164 19.837902 -1.855309 128.0 +-8.4077978 19.899933 -1.8562696 128.0 +-8.2889748 19.959427 -1.8570555 128.0 +-8.1746311 20.030203 -1.8589768 128.0 +-8.0586195 20.097551 -1.8606361 128.0 +-7.9409924 20.161449 -1.8620334 128.0 +-7.8142595 20.202364 -1.8613347 128.0 +-7.6855555 20.237823 -1.8601995 128.0 +-7.5553184 20.268732 -1.8587148 128.0 +-7.4236226 20.295063 -1.8568809 128.0 +-7.2949171 20.328979 -1.8558329 128.0 +-7.1700435 20.373358 -1.8558329 128.0 +-7.0481491 20.426386 -1.8567063 128.0 +-6.9303427 20.491896 -1.8588022 128.0 +-6.8091769 20.548218 -1.8601121 128.0 +-6.6863503 20.600033 -1.8610728 128.0 +-6.5631442 20.651115 -1.8620334 128.0 +-6.4363079 20.690998 -1.8620334 128.0 +-6.3103895 20.733913 -1.8623827 128.0 +-6.1827655 20.771288 -1.8622954 128.0 +-4.2884922 14.737925 -1.3080143 128.0 +-3.9720962 13.969621 -1.2356181 128.0 +-5.8039188 20.89789 -1.8637799 128.0 +-5.6789713 20.945608 -1.8649153 128.0 +-5.5559502 21.001245 -1.8668364 128.0 +-5.4292245 21.043623 -1.8676225 128.0 +-3.6486135 14.509974 -1.2740431 128.0 +-3.5507431 14.496287 -1.2708119 128.0 +-5.0386496 21.130302 -1.8667492 128.0 +-4.904624 21.142384 -1.8650899 128.0 +-3.207916 14.224901 -1.2407705 128.0 +-4.2318192 19.316092 -1.6959324 128.0 +-4.1780825 19.646677 -1.7232666 128.0 +-4.0634913 19.701212 -1.7258865 128.0 +-3.9314008 19.670094 -1.7209086 128.0 +-3.8043876 19.661572 -1.7180269 128.0 +-3.7468994 20.02236 -1.7481556 128.0 +-3.480226 19.249964 -1.6773312 128.0 +-3.3680379 19.305304 -1.6803877 128.0 +-3.3565722 19.962191 -1.7369773 128.0 +-3.4645069 21.406345 -1.8634306 128.0 +-3.3343198 21.435076 -1.8641293 128.0 +-3.2042048 21.464983 -1.8650025 128.0 +-3.0732841 21.490156 -1.8655266 128.0 +-2.9421751 21.514532 -1.8660505 128.0 +-2.8093355 21.526253 -1.8655266 128.0 +-2.6760943 21.534187 -1.8647406 128.0 +-2.5422773 21.536352 -1.863518 128.0 +-2.4093096 21.544617 -1.8629067 128.0 +-2.2761273 21.550077 -1.8621206 128.0 +-2.1452355 21.577517 -1.8633432 128.0 +-2.0123355 21.585314 -1.8629067 128.0 +-1.8824447 21.627028 -1.8655266 128.0 +-1.7492266 21.632214 -1.8650025 128.0 +-1.6180936 21.664394 -1.8669238 128.0 +-1.4860865 21.687828 -1.8681464 128.0 +-1.3536048 21.706482 -1.8690197 128.0 +-1.2211177 21.727308 -1.870155 128.0 +-1.088177 21.742352 -1.8708537 128.0 +-0.95505393 21.755585 -1.871465 128.0 +-0.82169658 21.765018 -1.8718143 128.0 +-0.68851137 21.781599 -1.8728622 128.0 +-0.55507743 21.794376 -1.8736482 128.0 +-0.4216283 21.812311 -1.8749582 128.0 +-0.2878615 21.820463 -1.8754821 128.0 +-0.15397526 21.822815 -1.8755695 128.0 +-0.020076625 21.830322 -1.8761808 128.0 +0.11390834 21.837008 -1.8767921 128.0 +0.2480762 21.851837 -1.8781893 128.0 +0.3823781 21.86285 -1.8793246 128.0 +0.51663643 21.865072 -1.8797612 128.0 +0.65075862 21.860495 -1.879674 128.0 +0.78491557 21.857086 -1.8797612 128.0 +0.91918075 21.855841 -1.8801106 128.0 +1.0531725 21.847799 -1.8799359 128.0 +1.1872082 21.840925 -1.8799359 128.0 +1.3221016 21.848145 -1.8812459 128.0 +1.455008 21.822723 -1.8797612 128.0 +1.5882312 21.804443 -1.8789753 128.0 +1.7214417 21.787336 -1.878364 128.0 +1.693541 19.879532 -1.7114772 128.0 +1.8041593 19.744761 -1.7005609 128.0 +1.930596 19.787849 -1.705364 128.0 +2.0542371 19.79743 -1.7072853 128.0 +2.1711006 19.742863 -1.7036175 128.0 +2.3039241 19.830101 -1.712525 128.0 +2.4198682 19.769117 -1.7084205 128.0 +2.5263824 19.639286 -1.6982903 128.0 +2.6162169 19.396349 -1.6782045 128.0 +2.7364342 19.388807 -1.6789905 128.0 +3.1760521 21.547712 -1.8718143 128.0 +3.3085091 21.529787 -1.8719889 128.0 +3.4408658 21.511049 -1.8721635 128.0 +3.5734437 21.493462 -1.8725129 128.0 +3.704411 21.466223 -1.8720763 128.0 +3.8351784 21.438187 -1.8716396 128.0 +3.9661043 21.411312 -1.8713776 128.0 +2.7044377 14.11519 -1.2223439 128.0 +4.2302961 21.369823 -1.8721635 128.0 +4.3637323 21.355177 -1.8732115 128.0 +3.0533509 14.488019 -1.2604196 128.0 +3.1379628 14.449542 -1.2586731 128.0 +3.2413442 14.496123 -1.2646115 128.0 +4.888957 21.252333 -1.8741722 128.0 +3.5576959 15.041766 -1.3174459 128.0 +5.1547976 21.213003 -1.8761808 128.0 +5.2863078 21.186773 -1.8767047 128.0 +3.425801 13.379463 -1.1731774 128.0 +3.5073254 13.356263 -1.1730027 128.0 +5.6715078 21.071451 -1.8753948 128.0 +5.7972507 21.023769 -1.8742595 128.0 +4.027317 14.262523 -1.2616423 128.0 +4.0580602 14.041354 -1.2437397 128.0 +4.1271944 13.958872 -1.2384999 128.0 +4.1922989 13.865582 -1.2322996 128.0 +4.2720032 13.822466 -1.2307276 128.0 +4.338738 13.738997 -1.2254878 128.0 +4.4202051 13.703583 -1.2247019 128.0 +4.5060754 13.68188 -1.2252258 128.0 +4.578197 13.619037 -1.2219946 128.0 +4.7363315 13.808359 -1.2421678 128.0 +4.7749143 13.647396 -1.2299416 128.0 +4.8622451 13.628162 -1.2309023 128.0 +5.016593 13.792799 -1.2490668 128.0 +5.1956453 14.016763 -1.2729079 128.0 +5.4082499 14.320118 -1.3043464 128.0 +5.5807772 14.507018 -1.3250436 128.0 +5.6867628 14.516097 -1.3291481 128.0 +5.6288505 14.112659 -1.2943909 128.0 +5.7097178 14.06401 -1.2930809 128.0 +5.8369842 14.128147 -1.3025125 128.0 +5.9370728 14.124208 -1.3055691 128.0 +5.9758468 13.975765 -1.2949148 128.0 +6.0960484 14.018313 -1.3025125 128.0 +6.1831565 13.983378 -1.3027745 128.0 +6.3999438 14.236838 -1.3308073 128.0 +6.5368576 14.306031 -1.3412869 128.0 +6.6899629 14.406603 -1.3549103 128.0 +9.19522 19.487997 -1.8514664 128.0 +9.3116093 19.424921 -1.8508551 128.0 +9.4328032 19.371899 -1.8512918 128.0 +9.5554638 19.321693 -1.8520777 128.0 +9.6827803 19.280502 -1.8538244 128.0 +9.816287 19.2509 -1.8567935 128.0 +9.9429245 19.207115 -1.8584528 128.0 +10.06615 19.156328 -1.8595008 128.0 +10.183501 19.094202 -1.8595008 128.0 +10.295729 19.022598 -1.8586274 128.0 +10.384922 18.909294 -1.8536497 128.0 +10.485721 18.818241 -1.8509425 128.0 +10.590695 18.735336 -1.8491086 128.0 +10.711896 18.681234 -1.8502438 128.0 +10.836336 18.63238 -1.8519905 128.0 +10.96058 18.582699 -1.853737 128.0 +11.083599 18.530485 -1.855309 128.0 +11.206906 18.478313 -1.8569683 128.0 +11.317467 18.404957 -1.8565316 128.0 +11.424388 18.325869 -1.8555709 128.0 +11.530232 18.245319 -1.8545229 128.0 +11.634444 18.162485 -1.8533003 128.0 +11.741871 18.084906 -1.852689 128.0 +11.854807 18.015848 -1.8530384 128.0 +11.972864 17.954372 -1.854261 128.0 +12.085593 17.884697 -1.8546977 128.0 +12.201859 17.820068 -1.8557457 128.0 +12.308699 17.74159 -1.8553963 128.0 +12.416182 17.664101 -1.8552216 128.0 +12.528378 17.593264 -1.8558329 128.0 +12.630847 17.508789 -1.855047 128.0 +12.738041 17.430958 -1.855047 128.0 +12.841792 17.348467 -1.8546103 128.0 +12.945608 17.266157 -1.854261 128.0 +13.047091 17.180845 -1.8536497 128.0 +13.151051 17.098888 -1.8534751 128.0 +13.25021 17.010799 -1.852689 128.0 +13.350019 16.923702 -1.8520777 128.0 +13.448635 16.835243 -1.8513792 128.0 +13.55356 16.75473 -1.8516412 128.0 +13.656742 16.672022 -1.8517284 128.0 +13.743519 16.56951 -1.8496325 128.0 +13.867352 16.51157 -1.852689 128.0 +13.991635 16.453489 -1.8558329 128.0 +13.054977 15.162468 -1.7164549 128.0 +13.092127 15.01825 -1.7090318 128.0 +13.121408 14.86668 -1.7007356 128.0 +13.136713 14.701206 -1.6907799 128.0 +13.167192 14.554575 -1.6830076 128.0 +13.221263 14.435308 -1.6784666 128.0 +13.359032 14.407238 -1.6848415 128.0 +13.470362 14.349692 -1.6878108 128.0 +13.56296 14.271825 -1.6884221 128.0 +13.694476 14.234281 -1.6940112 128.0 +13.954623 14.327683 -1.7157563 128.0 +14.042973 14.242499 -1.7158436 128.0 +14.141358 14.167346 -1.7172408 128.0 +14.240767 14.092923 -1.7188128 128.0 +14.337656 14.015723 -1.7201227 128.0 +14.426969 13.930945 -1.7205594 128.0 +14.520825 13.850412 -1.7216073 128.0 +14.632363 13.786329 -1.7248385 128.0 +14.742202 13.720041 -1.727895 128.0 +14.859844 13.66034 -1.7319123 128.0 +15.015656 13.634534 -1.7404705 128.0 +15.151687 13.589368 -1.746671 128.0 +15.269084 13.52653 -1.7506881 128.0 +15.478493 13.543449 -1.7654468 128.0 +15.612554 13.492515 -1.7713852 128.0 +15.814006 13.498003 -1.7850959 128.0 +15.954414 13.449514 -1.791733 128.0 +16.081808 13.388974 -1.7968855 128.0 +16.255993 13.365969 -1.8073651 128.0 +16.36554 13.288579 -1.8105088 128.0 +16.456873 13.196013 -1.8116442 128.0 +16.561743 13.113958 -1.8143514 128.0 +16.767458 13.11027 -1.8283241 128.0 +16.916185 13.060104 -1.8359218 128.0 +17.086317 13.024912 -1.8458774 128.0 +17.289282 13.012683 -1.8594135 128.0 +17.495934 13.000826 -1.8732989 128.0 +17.754492 13.024632 -1.8927734 128.0 +17.97204 13.015367 -1.9077067 128.0 +18.146378 12.972631 -1.9179243 128.0 +18.389235 12.976492 -1.9354775 128.0 +0 0 -0 128.0 +18.901724 12.993646 -1.9732039 128.0 +19.21851 13.038499 -1.9983549 128.0 +19.414867 12.998476 -2.0106683 128.0 +19.619764 12.962024 -2.0238552 128.0 +19.767359 12.886005 -2.0310161 128.0 +19.917269 12.810278 -2.0384393 128.0 +19.972786 12.673416 -2.0360813 128.0 +20.045107 12.547455 -2.0355573 128.0 +20.065777 12.389682 -2.0297935 128.0 +20.126957 12.257518 -2.0283089 128.0 +20.153965 12.105066 -2.0234184 128.0 +20.187578 11.957314 -2.0193141 128.0 +20.224438 11.812119 -2.0156462 128.0 +0 0 -0 128.0 +20.216265 11.476974 -2.0003633 128.0 +20.296738 11.358552 -2.0014114 128.0 +0 0 -0 128.0 +20.243801 11.0049 -1.9823736 128.0 +20.263527 10.855077 -1.9776578 128.0 +20.364109 10.748673 -1.9810636 128.0 +20.39963 10.607893 -1.9780945 128.0 +20.443941 10.472077 -1.9760858 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +20.409527 9.9845524 -1.9542534 128.0 +20.449764 9.8491907 -1.9522449 128.0 +20.515213 9.7260885 -1.9527688 128.0 +0 0 -0 128.0 +20.517143 9.4203949 -1.9415907 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +20.499029 8.9589615 -1.9236007 128.0 +20.47765 8.8003654 -1.9163524 128.0 +20.495474 8.6594296 -1.9129465 128.0 +0 0 -0 128.0 +20.51811 8.373764 -1.9051741 128.0 +20.490511 8.2161951 -1.8977512 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +20.400797 7.7474499 -1.8754821 128.0 +20.419949 7.6116881 -1.8728622 128.0 +20.353065 7.4448409 -1.8622954 128.0 +20.404928 7.3221722 -1.8629067 128.0 +20.424101 7.1879025 -1.8605487 128.0 +20.421677 7.0465245 -1.8562696 128.0 +20.428669 6.9089584 -1.852951 128.0 +20.437582 6.7725124 -1.8498945 128.0 +20.447485 6.6368327 -1.8470126 128.0 +20.444151 6.497364 -1.8429955 128.0 +20.454145 6.3626256 -1.8402883 128.0 +20.439432 6.220758 -1.8353978 128.0 +20.411337 6.0756159 -1.829372 128.0 +20.40519 5.9377337 -1.8254422 128.0 +20.368416 5.7917099 -1.8188052 128.0 +20.358458 5.6540928 -1.8147007 128.0 +20.362001 5.5207267 -1.8119061 128.0 +20.399343 5.3967028 -1.8122555 128.0 +20.436897 5.2726779 -1.8126922 128.0 +20.470797 5.147666 -1.8128668 128.0 +20.518446 5.0259919 -1.8143514 128.0 +20.541145 4.89815 -1.8136528 128.0 +20.587311 4.775847 -1.8151374 128.0 +20.624001 4.6511893 -1.815836 128.0 +20.657991 4.5258341 -1.81636 128.0 +20.691217 4.4002376 -1.8168839 128.0 +20.722706 4.2742019 -1.8173206 128.0 +20.776871 4.1526318 -1.8198532 128.0 +20.781422 4.0210948 -1.8180193 128.0 +20.84487 3.9008369 -1.8215125 128.0 +20.868412 3.772862 -1.8215125 128.0 +20.958883 3.6565595 -1.8275381 128.0 +21.04085 3.537967 -1.8328652 128.0 +21.060196 3.4084778 -1.8326906 128.0 +21.078745 3.2788844 -1.832516 128.0 +21.110291 3.1512511 -1.8335639 128.0 +21.142048 3.023495 -1.8346992 128.0 +21.179941 2.8964126 -1.8364458 128.0 +21.215096 2.7687213 -1.8380177 128.0 +21.277159 2.6441479 -1.8420348 128.0 +21.304855 2.5149455 -1.8430828 128.0 +21.361465 2.3888247 -1.8467506 128.0 +21.384636 2.2586501 -1.8475367 128.0 +21.414946 2.1290698 -1.8490212 128.0 +21.454386 2.0001271 -1.8513792 128.0 +21.503967 1.871731 -1.8546977 128.0 +21.534906 1.7413561 -1.8564442 128.0 +21.544191 1.6091135 -1.856357 128.0 +21.575523 1.4783891 -1.8582782 128.0 +21.604074 1.3472167 -1.8600248 128.0 +21.613922 1.2147431 -1.8601995 128.0 +21.642859 1.0831957 -1.8621206 128.0 +21.669001 0.95125133 -1.8638673 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.330353 -0.090483397 -1.4817129 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.366207 -0.83722013 -1.4866034 128.0 +17.367704 -0.94413978 -1.4872147 128.0 +17.376501 -1.0515906 -1.4885246 128.0 +17.373697 -1.158456 -1.488874 128.0 +17.378183 -1.2659054 -1.4899219 128.0 +17.388958 -1.3740026 -1.4915812 128.0 +17.388142 -1.4813496 -1.4922798 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +19.669609 -2.0409768 -1.6960198 128.0 +19.303209 -2.1227612 -1.6648431 128.0 +19.503559 -2.2659919 -1.6837063 128.0 +19.293505 -2.3616598 -1.666415 128.0 +15.746406 -2.0256858 -1.3542117 128.0 +15.218339 -2.0527666 -1.3086256 128.0 +14.701404 -2.0749769 -1.2640002 128.0 +13.869416 -2.044445 -1.1914293 128.0 +13.28159 -2.0411544 -1.1404288 128.0 +12.739597 -2.0379677 -1.0934454 128.0 +12.327879 -2.0497732 -1.0579896 128.0 +11.920438 -2.0572832 -1.0228832 128.0 +12.261592 -2.1937094 -1.0544091 128.0 +11.745407 -2.1758344 -1.009609 128.0 +11.875658 -2.2754138 -1.0224465 128.0 +11.729548 -2.3221259 -1.010657 128.0 +11.688726 -2.388669 -1.0082991 128.0 +11.679699 -2.4615772 -1.008823 128.0 +11.500828 -2.4976838 -0.99415171 128.0 +11.465842 -2.5638573 -0.99240512 128.0 +11.355724 -2.6125009 -0.9839341 128.0 +11.323001 -2.6782315 -0.98244953 128.0 +11.325714 -2.752362 -0.98419613 128.0 +11.317312 -2.8239737 -0.98498207 128.0 +11.000605 -2.8167701 -0.95790988 128.0 +11.105481 -2.9163451 -0.96900076 128.0 +11.046014 -2.9732995 -0.9652456 128.0 +11.031404 -3.0420799 -0.96559489 128.0 +10.861055 -3.0669425 -0.95179683 128.0 +7.9240756 -2.2903018 -0.68552881 128.0 +7.9270687 -2.3439636 -0.68710077 128.0 +7.906816 -2.3908293 -0.68657678 128.0 +7.8843832 -2.4369466 -0.68587816 128.0 +7.8892307 -2.4915776 -0.68771207 128.0 +7.883275 -2.5429959 -0.6885854 128.0 +7.9394336 -2.6150002 -0.69522244 128.0 +10.721091 -3.6041098 -0.95398009 128.0 +10.589469 -3.6323361 -0.9438498 128.0 +10.502101 -3.6745453 -0.93782407 128.0 +10.607899 -3.7847729 -0.94978821 128.0 +10.578859 -3.8477476 -0.94926429 128.0 +10.55038 -3.9108548 -0.94882762 128.0 +10.064875 -3.8013086 -0.90559947 128.0 +7.2074389 -2.7728829 -0.63941878 128.0 +7.1624627 -2.8061543 -0.63679892 128.0 +7.1284542 -2.8434069 -0.63522696 128.0 +10.176234 -4.1314759 -0.92524862 128.0 +10.176473 -4.2044883 -0.92769384 128.0 +10.131197 -4.2587447 -0.92585993 128.0 +10.0719 -4.3067298 -0.92271608 128.0 +10.119283 -4.4006252 -0.92978978 128.0 +9.0033312 -3.9812412 -0.82543087 128.0 +10.26532 -4.6147342 -0.94908959 128.0 +10.122645 -4.6254716 -0.93808609 128.0 +10.180812 -4.7277718 -0.94646972 128.0 +5.5009856 -2.5959055 -0.49567428 128.0 +5.4687843 -2.6218593 -0.49410233 128.0 +5.3925853 -2.6261473 -0.48825124 128.0 +5.3388658 -2.6406393 -0.48458341 128.0 +5.3501601 -2.687207 -0.48729062 128.0 +5.3380084 -2.7222471 -0.48772728 128.0 +15.964769 -8.2645397 -1.5383898 128.0 +15.903176 -8.356781 -1.5373418 128.0 +15.832263 -8.4438915 -1.5354207 128.0 +15.7565 -8.5280752 -1.5330627 128.0 +15.676807 -8.6097288 -1.5303555 128.0 +15.616722 -8.7018795 -1.5296569 128.0 +15.557832 -8.7945967 -1.5291328 128.0 +14.027524 -8.0435553 -1.3799739 128.0 +13.92107 -8.0964212 -1.3742101 128.0 +3.4843967 -2.0555716 -0.31708521 128.0 +6.95471 -4.160099 -0.67286605 128.0 +3.4691305 -2.1043746 -0.31813318 128.0 +3.4510615 -2.1224904 -0.31760919 128.0 +13.593461 -8.4743166 -1.3666998 128.0 +13.574051 -8.5783195 -1.3701056 128.0 +13.561424 -8.6872377 -1.3742975 128.0 +13.534602 -8.7876444 -1.377092 128.0 +13.432992 -8.8393145 -1.3721142 128.0 +13.352809 -8.904438 -1.3694071 128.0 +13.28389 -8.9767199 -1.3679224 128.0 +4.3381615 -2.9708197 -0.42336535 128.0 +4.3018441 -2.9848897 -0.42144409 128.0 +4.2736683 -3.0043552 -0.42039615 128.0 +14.350636 -10.219354 -1.5068638 128.0 +14.290085 -10.308964 -1.5071259 128.0 +14.239429 -10.405855 -1.5085231 128.0 +14.196131 -10.508441 -1.5107937 128.0 +5.4746947 -4.1050935 -0.56230676 128.0 +5.4620972 -4.1482477 -0.56370401 128.0 +5.5091891 -4.2375569 -0.57173836 128.0 +5.4988022 -4.2835236 -0.57348496 128.0 +13.778725 -10.869244 -1.5009254 128.0 +13.669743 -10.920009 -1.4962096 128.0 +13.551363 -10.96233 -1.4904459 128.0 +13.424504 -10.996667 -1.4837215 128.0 +13.333008 -11.059116 -1.4810143 128.0 +13.245829 -11.124701 -1.4788311 128.0 +13.167454 -11.197378 -1.4776957 128.0 +2.8979399 -2.495574 -0.29769805 128.0 +2.871309 -2.5034895 -0.29638809 128.0 +2.8558939 -2.5210605 -0.29638809 128.0 +2.8344285 -2.5332265 -0.29568946 128.0 +2.8099666 -2.5425508 -0.29464149 128.0 +3.5260074 -3.2298741 -0.38162181 128.0 +3.490052 -3.2365475 -0.37970054 128.0 +3.4519691 -3.2408566 -0.37751731 128.0 +3.4717355 -3.2997191 -0.38232043 128.0 +3.4822931 -3.350657 -0.38607562 128.0 +2.5817397 -2.5149779 -0.27839819 128.0 +2.5754812 -2.5398641 -0.27953348 128.0 +2.554913 -2.5506928 -0.27892217 128.0 +2.5574331 -2.5847309 -0.28119275 128.0 +2.5645058 -2.6238818 -0.28407463 128.0 +2.8175428 -2.9183264 -0.31804585 128.0 +2.8827808 -3.0227807 -0.32861272 128.0 +10.72105 -11.379106 -1.3329905 128.0 +10.625916 -11.417693 -1.3297594 128.0 +2.9149728 -3.1714025 -0.3400529 128.0 +7.6582613 -8.4342747 -0.96114111 128.0 +2.8951247 -3.228441 -0.34258547 128.0 +10.133766 -11.439401 -1.3021632 128.0 +2.7588573 -3.1535203 -0.329748 128.0 +9.9307432 -11.491294 -1.2938669 128.0 +9.8348236 -11.522462 -1.2904611 128.0 +7.4139013 -8.794981 -0.97083467 128.0 +9.7819204 -11.749462 -1.3026872 128.0 +9.5913296 -11.665372 -1.2863566 128.0 +9.4975939 -11.696937 -1.2833 128.0 +9.3801498 -11.698259 -1.276925 128.0 +9.3026285 -11.748566 -1.276139 128.0 +9.2168655 -11.78816 -1.2742177 128.0 +9.1254892 -11.820048 -1.2715105 128.0 +9.0370884 -11.855221 -1.2692399 128.0 +8.935421 -11.872244 -1.2650481 128.0 +8.8142776 -11.862081 -1.2579744 128.0 +8.6888838 -11.844455 -1.2502021 128.0 +8.6125383 -11.892705 -1.2496781 128.0 +8.3789225 -11.72085 -1.2254878 128.0 +8.3102932 -11.776925 -1.2260118 128.0 +8.2133913 -11.792545 -1.2222567 128.0 +8.1352358 -11.834511 -1.2213833 128.0 +7.9360676 -11.6979 -1.2016468 128.0 +2.8389881 -4.240953 -0.40982926 128.0 +2.8332305 -4.2890458 -0.41306046 128.0 +7.6633682 -11.756041 -1.1926519 128.0 +7.5964794 -11.811219 -1.1935252 128.0 +7.4480724 -11.738168 -1.1811243 128.0 +7.3806653 -11.791247 -1.1819104 128.0 +7.3134103 -11.844788 -1.1827836 128.0 +7.2255678 -11.864766 -1.1802511 128.0 +7.0382452 -11.718442 -1.1607766 128.0 +2.6802871 -4.5257516 -0.42354 128.0 +2.6494527 -4.5369511 -0.42301604 128.0 +2.6016791 -4.5185919 -0.41952285 128.0 +6.5567274 -11.549783 -1.126718 128.0 +6.514926 -11.641954 -1.1319578 128.0 +6.4760885 -11.741025 -1.1378962 128.0 +6.3563452 -11.693019 -1.1291633 128.0 +6.2901235 -11.742338 -1.1302112 128.0 +6.2244658 -11.793047 -1.1314338 128.0 +5.9037995 -11.353756 -1.0842758 128.0 +1.2491074 -2.4393272 -0.20268342 128.0 +5.9515953 -11.797115 -1.1207796 128.0 +5.8728919 -11.820921 -1.119557 128.0 +1.2118758 -2.478013 -0.20425536 128.0 +5.6742182 -11.781708 -1.1088154 128.0 +5.5920043 -11.7956 -1.1068069 128.0 +5.5174165 -11.825175 -1.1063702 128.0 +1.094995 -2.3856966 -0.19255319 128.0 +1.0590096 -2.3451629 -0.18801205 128.0 +1.0352954 -2.3306789 -0.18600348 128.0 +1.0169855 -2.3278596 -0.18513018 128.0 +0.99560273 -2.3175817 -0.18355824 128.0 +0.97554773 -2.3098824 -0.18224829 128.0 +0.96212041 -2.3176649 -0.18242295 128.0 +4.9023042 -12.012485 -1.0998205 128.0 +4.8181233 -12.016449 -1.0973753 128.0 +4.7077923 -11.9531 -1.0886424 128.0 +0.91932797 -2.3777421 -0.18591614 128.0 +4.6300774 -12.192502 -1.1057589 128.0 +4.4626198 -11.972389 -1.0825293 128.0 +4.3989992 -12.026677 -1.0850618 128.0 +4.3291602 -12.064694 -1.0861098 128.0 +1.1674213 -3.3181908 -0.27080053 128.0 +1.1392405 -3.302691 -0.26870462 128.0 +4.0824175 -12.071561 -1.07956 128.0 +3.9656527 -11.96778 -1.0676832 128.0 +3.8764594 -11.943564 -1.0632294 128.0 +3.8049126 -11.972821 -1.0637534 128.0 +3.7402544 -12.024479 -1.0663732 128.0 +0.98615819 -3.2413661 -0.25944766 128.0 +0.96482992 -3.2425821 -0.25901103 128.0 +0.95465797 -3.2819188 -0.26206756 128.0 +0.96175045 -3.3835335 -0.27080053 128.0 +3.3384542 -12.021251 -1.0561557 128.0 +0.91468215 -3.3748903 -0.26896659 128.0 +0.89191866 -3.3727348 -0.26826796 128.0 +3.1049192 -12.035328 -1.0520512 128.0 +3.0400028 -12.089899 -1.0552824 128.0 +2.9671855 -12.11413 -1.0558064 128.0 +2.896034 -12.145674 -1.057029 128.0 +1.9042574 -8.2097807 -0.70124817 128.0 +0.71654361 -3.1787996 -0.24809483 128.0 +0.6948933 -3.1734056 -0.24722153 128.0 +1.7851481 -8.3954449 -0.71487159 128.0 +1.726356 -8.3711176 -0.71172774 128.0 +1.6743735 -8.3786221 -0.71146572 128.0 +1.6286097 -8.4180794 -0.71408564 128.0 +2.2738614 -12.151728 -1.0462002 128.0 +2.1948259 -12.140944 -1.0440168 128.0 +1.4317757 -8.2081614 -0.69286454 128.0 +2.0648363 -12.28092 -1.0541471 128.0 +1.3887211 -8.5820808 -0.72456515 128.0 +1.9393958 -12.468735 -1.0686438 128.0 +1.8606461 -12.465621 -1.0673339 128.0 +1.7789048 -12.440315 -1.0641026 128.0 +1.6963294 -12.405595 -1.0600855 128.0 +1.6146339 -12.373295 -1.0563303 128.0 +1.5375766 -12.374071 -1.0555444 128.0 +1.4541464 -12.319958 -1.0499552 128.0 +1.3785253 -12.328648 -1.0499552 128.0 +1.3052591 -12.359659 -1.0519639 128.0 +1.2313685 -12.387261 -1.0537105 128.0 +0.35753405 -3.8386552 -0.30040526 128.0 +1.062417 -12.207916 -1.0366812 128.0 +0.99841273 -12.349245 -1.048558 128.0 +0.9188354 -12.304475 -1.0441042 128.0 +0.84665704 -12.35858 -1.0483834 128.0 +0.24203457 -3.8865919 -0.3038111 128.0 +0.21840601 -3.8919823 -0.30416045 128.0 +0.61858428 -12.363115 -1.0475974 128.0 +0.54315102 -12.376631 -1.0484707 128.0 +0.46501839 -12.321993 -1.0434055 128.0 +0.38776577 -12.27284 -1.0388645 128.0 +0.32037282 -12.585694 -1.0661113 128.0 +0.24343148 -12.602364 -1.0674212 128.0 +0.16645555 -12.630514 -1.0697792 128.0 +0.089023501 -12.641259 -1.0706524 128.0 +0.011325684 -12.502103 -1.0584263 128.0 +-0.06550508 -12.524848 -1.0604348 128.0 +-0.14227584 -12.517238 -1.0598235 128.0 +-0.2209395 -12.622705 -1.0691679 128.0 +-0.29645872 -12.539447 -1.0620068 128.0 +-0.37108311 -12.459724 -1.0551951 128.0 +-0.4542453 -12.644374 -1.0716131 128.0 +-0.53177935 -12.640353 -1.0715257 128.0 +-0.60841811 -12.617948 -1.0698664 128.0 +-0.68107241 -12.526442 -1.0621815 128.0 +-0.76104838 -12.573734 -1.0667226 128.0 +-0.83758873 -12.559881 -1.0659366 128.0 +-0.92201877 -12.655848 -1.0748442 128.0 +-1.0045984 -12.712517 -1.080346 128.0 +-1.0830892 -12.712069 -1.08087 128.0 +-1.168772 -12.789508 -1.088293 128.0 +-1.2470315 -12.780112 -1.0881183 128.0 +-1.3228555 -12.747449 -1.0859351 128.0 +-1.4007208 -12.736121 -1.0856731 128.0 +-1.4859685 -12.788637 -1.0910876 128.0 +-1.5686456 -12.813888 -1.0941441 128.0 +-1.6449531 -12.786236 -1.0925722 128.0 +-1.709131 -12.670267 -1.0832279 128.0 +-1.810923 -12.83019 -1.0983359 128.0 +-1.8912112 -12.829678 -1.0992966 128.0 +-1.969897 -12.817832 -1.0992966 128.0 +-2.0513406 -12.82321 -1.1008685 128.0 +-2.1406021 -12.874257 -1.1065449 128.0 +-2.2469976 -13.019911 -1.1206923 128.0 +-2.3347373 -13.050006 -1.1246221 128.0 +-2.4261963 -13.097145 -1.1301239 128.0 +-2.5203829 -13.154412 -1.1365863 128.0 +-2.5973744 -13.120132 -1.134927 128.0 +-2.6634707 -13.033675 -1.1286393 128.0 +-2.7631128 -13.110665 -1.137023 128.0 +-2.8492136 -13.119749 -1.1393808 128.0 +-2.9398768 -13.147712 -1.1434853 128.0 +-3.0343397 -13.189616 -1.1488998 128.0 +-3.1159003 -13.173658 -1.1491617 128.0 +-3.1479852 -12.953913 -1.1310846 128.0 +-3.2826319 -13.155694 -1.151083 128.0 +-3.3884933 -13.23374 -1.1599907 128.0 +-3.4554629 -13.158742 -1.1551001 128.0 +-3.5224168 -13.086308 -1.1504717 128.0 +-3.5976155 -13.046203 -1.1488124 128.0 +-3.6773272 -13.022923 -1.1487252 128.0 +-3.7621431 -13.017342 -1.150297 128.0 +-3.86115 -13.058973 -1.1562355 128.0 +-3.9544666 -13.078899 -1.1602526 128.0 +-4.026113 -13.026788 -1.1577201 128.0 +-4.0129805 -12.707355 -1.1306479 128.0 +-4.0982146 -12.705247 -1.1327437 128.0 +-4.2966828 -13.046039 -1.1665404 128.0 +-4.3864903 -13.048701 -1.1692475 128.0 +-4.4700279 -13.031906 -1.1702082 128.0 +-4.6258955 -13.221441 -1.1903813 128.0 +-4.7173104 -13.221895 -1.1930885 128.0 +-4.779964 -13.142147 -1.1883727 128.0 +-4.8708992 -13.140593 -1.1909926 128.0 +-4.9194102 -13.025651 -1.1830456 128.0 +-4.9591851 -12.891088 -1.1732647 128.0 +-5.0494537 -12.88917 -1.175972 128.0 +-5.0682931 -12.70712 -1.1617372 128.0 +-4.9621887 -12.222577 -1.1188583 128.0 +-5.1051755 -12.356707 -1.1344904 128.0 +-5.3843207 -12.809123 -1.180513 128.0 +-5.5360494 -12.94713 -1.1968437 128.0 +-5.6165786 -12.915659 -1.1971056 128.0 +-1.5750866 -3.5613592 -0.3038111 128.0 +-1.5969089 -3.5516276 -0.3038111 128.0 +-1.6149454 -3.5336075 -0.30302516 128.0 +-6.0518417 -13.03234 -1.222082 128.0 +-6.1410446 -13.014781 -1.2240032 128.0 +-1.6560311 -3.453876 -0.29822201 128.0 +-1.6719594 -3.4329019 -0.29717407 128.0 +-1.6775361 -3.391325 -0.29411754 128.0 +-1.6929487 -3.370285 -0.29306957 128.0 +-1.7199317 -3.3722584 -0.29429218 128.0 +-1.7396752 -3.3598723 -0.29411754 128.0 +-1.7630384 -3.3544257 -0.29464149 128.0 +-4.5033989 -8.4434566 -0.80132788 128.0 +-4.7201285 -8.7205477 -0.83171862 128.0 +-6.8393316 -12.453052 -1.2079346 128.0 +-1.8390107 -3.2997057 -0.29359356 128.0 +-1.8606933 -3.2909615 -0.29385555 128.0 +-1.8778782 -3.2742972 -0.29333156 128.0 +-7.4263415 -12.768862 -1.2573631 128.0 +-7.4534359 -12.636392 -1.2485428 128.0 +-7.59168 -12.692157 -1.2589351 128.0 +-7.6745806 -12.653854 -1.2598083 128.0 +-7.7713847 -12.637923 -1.2630396 128.0 +-7.8740788 -12.630579 -1.2672313 128.0 +-7.9359975 -12.557605 -1.2646989 128.0 +-8.0053778 -12.496931 -1.2634763 128.0 +-8.060751 -12.414989 -1.2600703 128.0 +-8.1581316 -12.397752 -1.2634763 128.0 +-8.2456551 -12.364865 -1.2653102 128.0 +-8.3024063 -12.285975 -1.2623409 128.0 +-8.5943127 -12.551258 -1.2959628 128.0 +-8.6160841 -12.418894 -1.2874918 128.0 +-8.5517759 -12.166118 -1.2660961 128.0 +-9.2104549 -12.933811 -1.3543863 128.0 +-9.3496714 -12.960268 -1.3633813 128.0 +-9.4448872 -12.924372 -1.3657392 128.0 +-9.8274603 -13.276132 -1.4104519 128.0 +-10.048568 -13.40209 -1.4308871 128.0 +-10.272792 -13.527414 -1.4514968 128.0 +-10.407223 -13.531247 -1.4589199 128.0 +-10.517599 -13.502501 -1.4628497 128.0 +-10.571254 -13.400951 -1.4587452 128.0 +-10.290184 -12.881286 -1.4077448 128.0 +-10.301992 -12.735031 -1.3984004 128.0 +-10.455688 -12.764058 -1.40888 128.0 +-10.766573 -12.980298 -1.4408426 128.0 +-10.862674 -12.933825 -1.4431132 128.0 +-10.912789 -12.832779 -1.4391834 128.0 +-10.975725 -12.747459 -1.4370874 128.0 +-11.081228 -12.711412 -1.4407554 128.0 +-11.143195 -12.625255 -1.4386594 128.0 +-11.196557 -12.529902 -1.4355155 128.0 +-11.271893 -12.459487 -1.4353409 128.0 +-11.469237 -12.522324 -1.4510602 128.0 +-11.148951 -12.023646 -1.3998851 128.0 +-11.189109 -11.919421 -1.3956059 128.0 +-11.375262 -11.969692 -1.4100153 128.0 +-11.826277 -12.292361 -1.4577845 128.0 +-11.927195 -12.24597 -1.4610158 128.0 +-11.270533 -11.430554 -1.369669 128.0 +-11.341161 -11.36189 -1.3697563 128.0 +-12.375036 -12.246488 -1.4886993 128.0 +-12.388685 -12.110437 -1.4811889 128.0 +-12.482108 -12.052877 -1.4835469 128.0 +-12.486629 -11.910053 -1.4751632 128.0 +-12.666053 -11.933636 -1.4880006 128.0 +-12.879777 -11.98668 -1.5048553 128.0 +-13.008086 -11.95799 -1.511405 128.0 +-13.095963 -11.891342 -1.5131515 128.0 +-13.148659 -11.792805 -1.5107937 128.0 +-13.129055 -11.630651 -1.5000521 128.0 +-10.053705 -8.7966547 -1.1335298 128.0 +-13.201451 -11.408735 -1.4920177 128.0 +-13.270448 -11.326871 -1.4919305 128.0 +-13.368641 -11.269631 -1.495249 128.0 +-10.290291 -8.5670347 -1.1362369 128.0 +-10.315732 -8.4815884 -1.1331804 128.0 +-10.391553 -8.4376001 -1.1358876 128.0 +-13.811385 -11.074635 -1.5143741 128.0 +-13.860334 -10.974839 -1.5122783 128.0 +-13.84109 -10.822089 -1.502672 128.0 +-13.891462 -10.724783 -1.5009254 128.0 +-10.689057 -8.1480875 -1.1406908 128.0 +-14.023618 -10.554704 -1.5011001 128.0 +-14.091314 -10.470834 -1.5014493 128.0 +-14.151281 -10.381228 -1.5010127 128.0 +-14.210679 -10.291281 -1.5005761 128.0 +-14.278419 -10.207368 -1.5011001 128.0 +-14.380664 -10.147709 -1.5053792 128.0 +-14.478625 -10.084332 -1.5092217 128.0 +-14.56732 -10.013927 -1.5121036 128.0 +-14.650747 -9.939455 -1.5144615 128.0 +-14.738775 -9.8676624 -1.5173434 128.0 +-14.818993 -9.7902203 -1.5194393 128.0 +-14.902151 -9.7143412 -1.5218846 128.0 +-14.993315 -9.643198 -1.525203 128.0 +-15.053885 -9.5520868 -1.5253778 128.0 +-15.126566 -9.468524 -1.5268623 128.0 +-15.206417 -9.3891392 -1.5291328 128.0 +-15.286714 -9.3096476 -1.5314908 128.0 +-15.359774 -9.225421 -1.5331501 128.0 +-15.43409 -9.1416636 -1.534984 128.0 +-15.506235 -9.0563354 -1.5366433 128.0 +-15.580504 -8.9719572 -1.5385644 128.0 +-15.649122 -8.884057 -1.5399617 128.0 +-15.707685 -8.7903013 -1.5403984 128.0 +-6.7647128 -3.7310705 -0.6396808 128.0 +-6.7647233 -3.6771219 -0.63741022 128.0 +-15.819407 -8.4742823 -1.5356826 128.0 +-15.827939 -8.3542709 -1.5314034 128.0 +-15.866529 -8.2505608 -1.5301808 128.0 +-7.2714119 -3.7243714 -0.67862982 128.0 +-7.0575495 -3.560323 -0.6554001 128.0 +-6.936522 -3.4460297 -0.6414274 128.0 +-6.9530616 -3.4012141 -0.64099073 128.0 +-6.9711075 -3.3571901 -0.64072877 128.0 +-6.9861751 -3.3117924 -0.64020479 128.0 +-6.7563062 -3.1521816 -0.61601448 128.0 +-16.904072 -7.761384 -1.5930581 128.0 +-16.951376 -7.6575165 -1.5930581 128.0 +-16.978926 -7.5448651 -1.5912242 128.0 +-7.33002 -3.203253 -0.66369641 128.0 +-7.3248253 -3.1475964 -0.66133857 128.0 +-17.266335 -7.2950349 -1.6056336 128.0 +-17.321812 -7.1935382 -1.6066816 128.0 +-17.386837 -7.0957761 -1.6086901 128.0 +-17.446692 -6.9956326 -1.610262 128.0 +-17.561583 -6.9169269 -1.6170738 128.0 +-17.605553 -6.8097596 -1.6172484 128.0 +-17.66563 -6.7086792 -1.6189951 128.0 +-17.723263 -6.6064219 -1.620567 128.0 +-17.791533 -6.5078168 -1.6231868 128.0 +-17.867697 -6.4116502 -1.6265928 128.0 +-17.951805 -6.31777 -1.6307845 128.0 +-18.031668 -6.2217989 -1.634627 128.0 +-18.093096 -6.1190209 -1.6368103 128.0 +-18.158669 -6.0172896 -1.6394302 128.0 +-18.214199 -5.9119081 -1.6411768 128.0 +-18.26532 -5.8048644 -1.6425741 128.0 +-18.313911 -5.6968241 -1.6437967 128.0 +-12.374086 -3.765897 -1.0963273 128.0 +-18.421587 -5.4833078 -1.6473771 128.0 +-13.182655 -3.8358901 -1.1660163 128.0 +-18.618761 -5.2941637 -1.6593413 128.0 +-18.702726 -5.1942172 -1.6640571 128.0 +-18.750589 -5.0837936 -1.6655418 128.0 +-12.777818 -3.3802514 -1.1211289 128.0 +-12.795424 -3.301038 -1.1208669 128.0 +-12.830895 -3.226352 -1.1222643 128.0 +-18.940338 -4.6394029 -1.6719168 128.0 +-12.395678 -2.9556539 -1.07956 128.0 +-18.943443 -4.3944693 -1.667201 128.0 +-18.928265 -4.2687273 -1.6634458 128.0 +-13.288736 -2.9112017 -1.1550128 128.0 +-18.652803 -3.9667034 -1.6341904 128.0 +-18.688499 -3.8545923 -1.6352384 128.0 +-18.557455 -3.708998 -1.6214403 128.0 +-18.543676 -3.5880589 -1.6182091 128.0 +-18.553593 -3.4720104 -1.6171612 128.0 +-18.586311 -3.3602293 -1.6182091 128.0 +-18.654665 -3.2545128 -1.6224883 128.0 +-18.698843 -3.1441188 -1.6246715 128.0 +-18.727617 -3.0309174 -1.6255448 128.0 +-18.839375 -2.9304979 -1.633841 128.0 +-18.905279 -2.8220541 -1.6381202 128.0 +-19.17765 -2.7425313 -1.6607386 128.0 +-19.246428 -2.6319623 -1.6653671 128.0 +-19.449896 -2.5383165 -1.6819597 128.0 +-19.602516 -2.4360054 -1.6940985 128.0 +-19.979181 -2.3584304 -1.7260611 128.0 +-20.058617 -2.2431042 -1.7318249 128.0 +-20.14135 -2.1273103 -1.7379379 128.0 +-20.353273 -2.0234983 -1.7554913 128.0 +-20.889017 -1.9474088 -1.8016013 128.0 +-22.314779 -1.9423203 -1.9260459 128.0 +-22.488125 -1.8184533 -1.9402807 128.0 +-22.506807 -1.6810282 -1.9409794 128.0 +-22.517693 -1.5429657 -1.9410666 128.0 +-22.552586 -1.406383 -1.9433372 128.0 +-22.572725 -1.2686476 -1.9443852 128.0 +-22.478601 -1.1250391 -1.9354775 128.0 +-22.560719 -0.99041355 -1.9421146 128.0 +-22.536507 -0.85083693 -1.9394947 128.0 +-22.56719 -0.71335828 -1.9417653 128.0 +-19.574688 1.4431789 -1.9282776 128.0 +-19.546619 1.5617529 -1.9263839 128.0 +-19.527746 1.6808908 -1.9254869 128.0 +-19.508148 1.7998559 -1.9245899 128.0 +-19.491787 1.919034 -1.9240916 128.0 +-19.46777 2.0373538 -1.9228956 128.0 +-19.450945 2.1563287 -1.9224969 128.0 +-19.426477 2.2743633 -1.9214005 128.0 +-19.403269 2.3924227 -1.9205035 128.0 +-19.378357 2.5101552 -1.9195069 128.0 +-19.359632 2.6286094 -1.9192078 128.0 +-19.337227 2.7465086 -1.9186099 128.0 +-19.316074 2.8645239 -1.9182112 128.0 +-19.288301 2.9814706 -1.9172145 128.0 +-19.259821 3.0981843 -1.9162178 128.0 +-19.211987 3.2115426 -1.9133275 128.0 +-19.170351 3.3256218 -1.9111348 128.0 +-19.123144 3.4384305 -1.9084438 128.0 +-19.069405 3.5496922 -1.9051548 128.0 +-19.030655 3.6634345 -1.9034605 128.0 +-0 0 -0 128.0 +-18.977444 3.8952932 -1.9027628 128.0 +-18.947344 4.0104265 -1.9021648 128.0 +-18.936962 4.1297908 -1.9036598 128.0 +-18.899616 4.2432919 -1.9024638 128.0 +-18.869347 4.3582821 -1.9020652 128.0 +-18.828695 4.4707608 -1.9006698 128.0 +-18.794144 4.5845566 -1.8999721 128.0 +-18.752146 4.696404 -1.8985767 128.0 +-18.714304 4.8091469 -1.8976798 128.0 +-18.673859 4.9210954 -1.8965834 128.0 +-18.628902 5.0316906 -1.8950884 128.0 +-18.588089 5.1432467 -1.8940917 128.0 +-18.541821 5.2531352 -1.8925967 128.0 +-18.50255 5.3648667 -1.8918991 128.0 +-18.467375 5.4777288 -1.8916998 128.0 +-18.462934 5.599894 -1.8947895 128.0 +-18.450085 5.7198534 -1.8970817 128.0 +-18.456377 5.8461761 -1.9014671 128.0 +-18.459919 5.9721785 -1.9056531 128.0 +-18.455051 6.0959468 -1.9090418 128.0 +-18.441814 6.2173362 -1.9116331 128.0 +-18.436249 6.3417063 -1.9151216 128.0 +-18.433607 6.4675589 -1.9190085 128.0 +-18.428238 6.5929475 -1.9226962 128.0 +-18.411743 6.7147622 -1.9252875 128.0 +-18.422424 6.8470235 -1.9308689 128.0 +-18.416355 6.9736767 -1.9347559 128.0 +-18.406639 7.0994387 -1.9383439 128.0 +-18.393293 7.2242517 -1.941633 128.0 +-18.372641 7.3465819 -1.9442242 128.0 +-18.353022 7.4696798 -1.9470149 128.0 +-18.328905 7.5912905 -1.949407 128.0 +-18.325993 7.7221603 -1.954191 128.0 +-18.332222 7.8575921 -1.9600713 128.0 +-18.306467 7.9798698 -1.962563 128.0 +-18.291725 8.1073694 -1.9663504 128.0 +-18.264315 8.2296734 -1.968842 128.0 +-18.242422 8.354846 -1.9720314 128.0 +-18.218779 8.47964 -1.9751211 128.0 +-18.197887 8.6061592 -1.9786094 128.0 +-18.168953 8.7292929 -1.9813005 128.0 +-18.149029 8.8571968 -1.9850878 128.0 +-18.140697 8.9913702 -1.9902705 128.0 +-18.149178 9.1347227 -1.9974465 128.0 +-18.120253 9.2599497 -2.0005362 128.0 +-18.141699 9.4117451 -2.0094066 128.0 +-18.121466 9.5428209 -2.0136921 128.0 +-18.086264 9.6664972 -2.0163832 128.0 +-18.0511 9.790575 -2.0191739 128.0 +-18.000275 9.9064283 -2.0202703 128.0 +-17.947838 10.021541 -2.0212669 128.0 +-17.913713 10.147173 -2.0244563 128.0 +-17.870094 10.267805 -2.026649 128.0 +-17.831686 10.391791 -2.0295393 128.0 +-17.797567 10.518729 -2.0330276 128.0 +-17.77195 10.651267 -2.0376124 128.0 +-17.759829 10.792671 -2.0438914 128.0 +-17.700895 10.906138 -2.0447884 128.0 +-17.653896 11.027196 -2.0471804 128.0 +-17.613644 11.152878 -2.0504694 128.0 +-17.584234 11.286006 -2.0551538 128.0 +-17.540508 11.41051 -2.0582435 128.0 +-17.493425 11.533258 -2.0610342 128.0 +-17.470312 11.672442 -2.0668149 128.0 +-17.433792 11.803408 -2.0711005 128.0 +-17.385653 11.927045 -2.0740905 128.0 +-17.333385 12.048264 -2.0766819 128.0 +-17.312822 12.192208 -2.0832598 128.0 +-17.264416 12.31728 -2.0865488 128.0 +-17.227221 12.45096 -2.0913329 128.0 +-17.198668 12.5917 -2.0973129 128.0 +-17.122683 12.698177 -2.0975122 128.0 +-17.070698 12.822723 -2.1008012 128.0 +-17.004368 12.936866 -2.102396 128.0 +-16.900236 13.022131 -2.0993063 128.0 +-16.760401 13.079058 -2.0917315 128.0 +-16.607233 13.124271 -2.0824625 128.0 +-16.326746 13.066131 -2.056848 128.0 +-16.151186 13.089002 -2.044589 128.0 +-15.905203 13.052138 -2.0231607 128.0 +-15.671764 13.022293 -2.0032272 128.0 +-15.468228 13.014424 -1.9870812 128.0 +-15.343396 13.071018 -1.9812008 128.0 +-15.140097 13.058977 -1.9649551 128.0 +-14.981744 13.083556 -1.9545896 128.0 +-14.786392 13.07373 -1.9392409 128.0 +-14.625831 13.092532 -1.9284769 128.0 +-14.403669 13.053728 -1.9093409 128.0 +-14.258054 13.081987 -1.9004705 128.0 +-14.121383 13.11708 -1.892796 128.0 +-13.961627 13.129176 -1.8819324 128.0 +-13.820992 13.157648 -1.87366 128.0 +-13.700597 13.204226 -1.8681782 128.0 +-13.663473 13.331126 -1.8743577 128.0 +-13.594159 13.427299 -1.8761517 128.0 +-13.458747 13.457689 -1.8686767 128.0 +-13.310889 13.474182 -1.8594075 128.0 +-13.180711 13.507174 -1.8526303 128.0 +-13.047868 13.536212 -1.8454542 128.0 +-12.918597 13.567734 -1.8387765 128.0 +-12.793524 13.60253 -1.8326968 128.0 +-12.660383 13.627554 -1.8254211 128.0 +-12.539529 13.664657 -1.8199394 128.0 +-12.411347 13.692679 -1.8133614 128.0 +-12.276658 13.712234 -1.8057867 128.0 +-12.164609 13.755996 -1.8016007 128.0 +-12.055102 13.801898 -1.7978133 128.0 +-11.944842 13.846222 -1.7939264 128.0 +-11.822879 13.876081 -1.7882453 128.0 +-11.711889 13.917909 -1.7842586 128.0 +-11.623091 13.985682 -1.7837603 128.0 +-11.534533 14.05366 -1.7833616 128.0 +-11.432422 14.104845 -1.78087 128.0 +-11.336335 14.163074 -1.779375 128.0 +-11.228242 14.205824 -1.7759862 128.0 +-11.142702 14.276805 -1.7762853 128.0 +-11.061572 14.353577 -1.7773815 128.0 +-10.964857 14.410092 -1.7759862 128.0 +-10.886989 14.49142 -1.7777803 128.0 +-10.817426 14.584323 -1.7810693 128.0 +-10.728322 14.651226 -1.7811689 128.0 +-10.575273 14.629683 -1.7704049 128.0 +-10.467393 14.669187 -1.7673153 128.0 +-10.361718 14.711171 -1.7646242 128.0 +-10.909033 15.691994 -1.8765503 128.0 +-10.820423 15.770122 -1.8779457 128.0 +-10.711741 15.818915 -1.8758527 128.0 +-10.616135 15.886826 -1.8761517 128.0 +-9.1826172 13.925545 -1.6330637 128.0 +-10.436658 16.040928 -1.8791417 128.0 +-10.501425 16.359226 -1.9094405 128.0 +-10.40351 16.427557 -1.9099388 128.0 +-10.286175 16.464922 -1.9068491 128.0 +-9.3753958 15.213831 -1.7522655 128.0 +-10.037877 16.515081 -1.8980784 128.0 +-8.6744223 14.470853 -1.6521997 128.0 +-8.576355 14.508388 -1.6504058 128.0 +-9.7246723 16.684153 -1.8965834 128.0 +-9.6275702 16.752998 -1.8976798 128.0 +-8.0224228 14.159917 -1.5923995 128.0 +-9.4188347 16.865538 -1.8971814 128.0 +-9.3132534 16.919525 -1.8967828 128.0 +-9.2035685 16.965857 -1.8955867 128.0 +-8.0777464 15.110726 -1.6785119 128.0 +-8.9863329 17.061674 -1.8937927 128.0 +-8.8869743 17.12709 -1.8949888 128.0 +-8.7803583 17.17864 -1.8946898 128.0 +-8.6694193 17.221527 -1.8934938 128.0 +-8.5613775 17.269939 -1.8929954 128.0 +-8.4456482 17.302473 -1.8908027 128.0 +-8.3358765 17.346794 -1.8900054 128.0 +-8.2258778 17.390419 -1.8892081 128.0 +-8.1173382 17.436956 -1.8888094 128.0 +-8.0072937 17.480103 -1.8881117 128.0 +-7.8978434 17.52437 -1.8876134 128.0 +-7.7861352 17.563404 -1.8866167 128.0 +-7.6730523 17.598989 -1.885321 128.0 +-7.5617867 17.638424 -1.8845237 128.0 +-7.4499393 17.676237 -1.8836267 128.0 +-7.3401976 17.718859 -1.8833277 128.0 +-7.2290878 17.758034 -1.8827296 128.0 +-7.1155572 17.79097 -1.8815337 128.0 +-7.0000758 17.81855 -1.8798393 128.0 +-6.884882 17.846313 -1.8782446 128.0 +-6.7667923 17.865889 -1.8758527 128.0 +-6.6514955 17.892151 -1.874258 128.0 +-6.5378356 17.922344 -1.8731617 128.0 +-6.4267378 17.959311 -1.8728627 128.0 +-6.3174086 18.001223 -1.8731617 128.0 +-6.2048941 18.034002 -1.8725636 128.0 +-6.0928512 18.067963 -1.872165 128.0 +-5.975944 18.087057 -1.8702713 128.0 +-5.8602567 18.109184 -1.8687763 128.0 +-5.7433214 18.126778 -1.8668827 128.0 +-5.628159 18.149323 -1.865587 128.0 +-5.513514 18.17304 -1.8644906 128.0 +-4.3741531 14.741832 -1.5024998 128.0 +-4.0247941 13.875813 -1.4094107 128.0 +-5.1807861 18.281021 -1.8654873 128.0 +-5.0751524 18.336439 -1.8679789 128.0 +-4.9677362 18.386446 -1.8699723 128.0 +-4.8573613 18.426203 -1.8709689 128.0 +-4.7459421 18.462406 -1.8716667 128.0 +-3.6271346 14.476886 -1.4571513 128.0 +-3.5349362 14.485335 -1.4557559 128.0 +-4.4122024 18.57568 -1.8746567 128.0 +-4.2959018 18.592707 -1.87366 128.0 +-3.1589332 14.063495 -1.4060221 128.0 +-4.0625405 18.621666 -1.8713677 128.0 +-3.1915553 15.071731 -1.5053902 128.0 +-3.8259149 18.632103 -1.8674806 128.0 +-3.7111301 18.653276 -1.8672813 128.0 +-3.5962298 18.673742 -1.867082 128.0 +-3.4832211 18.70426 -1.8679789 128.0 +-3.3652184 18.707653 -1.8661849 128.0 +-3.2508774 18.73089 -1.8664839 128.0 +-3.1342449 18.740671 -1.8654873 128.0 +-3.0220401 18.777233 -1.8672813 128.0 +-2.9075284 18.800339 -1.8677796 128.0 +-2.7913871 18.812904 -1.8672813 128.0 +-2.6770201 18.837559 -1.8680786 128.0 +-2.5629914 18.865461 -1.8692746 128.0 +-2.4489765 18.894648 -1.87067 128.0 +-2.3342128 18.919193 -1.8716667 128.0 +-2.2187772 18.939089 -1.8722646 128.0 +-2.1032948 18.95927 -1.8729624 128.0 +-1.9857841 18.960934 -1.871866 128.0 +-1.8691121 18.96979 -1.871567 128.0 +-1.752589 18.97991 -1.8714674 128.0 +-1.6362681 18.99229 -1.8716667 128.0 +-1.5197822 19.002964 -1.8717663 128.0 +-1.403739 19.019871 -1.8725636 128.0 +-1.2868075 19.025146 -1.8722646 128.0 +-1.1696813 19.026726 -1.8716667 128.0 +-1.0524193 19.024603 -1.8707696 128.0 +-0.93591076 19.035671 -1.871268 128.0 +-0.81913519 19.042049 -1.8713677 128.0 +-0.70238972 19.0497 -1.8716667 128.0 +-0.58539826 19.050669 -1.8713677 128.0 +-0.46829936 19.045944 -1.8705703 128.0 +-0.35113412 19.032541 -1.8689756 128.0 +-0.23443137 19.041302 -1.8696733 128.0 +-0.11763431 19.049347 -1.870371 128.0 +-0.00074752688 19.048716 -1.8702713 128.0 +0.11612095 19.046371 -1.870072 128.0 +0.23303403 19.04928 -1.8704706 128.0 +0.35007885 19.056444 -1.8713677 128.0 +0.46712261 19.058912 -1.871866 128.0 +0.58417928 19.059666 -1.8722646 128.0 +0.70166588 19.070637 -1.8737596 128.0 +0.81926632 19.079889 -1.875155 128.0 +0.93666482 19.081461 -1.8758527 128.0 +1.0533442 19.068399 -1.875155 128.0 +1.1702038 19.059591 -1.8749557 128.0 +1.2869278 19.049074 -1.8746567 128.0 +1.4044455 19.049749 -1.8755536 128.0 +1.5222578 19.052675 -1.8767496 128.0 +1.6407567 19.061811 -1.8786434 128.0 +1.759059 19.066248 -1.8801384 128.0 +1.8779652 19.0749 -1.8821317 128.0 +1.9930023 19.044216 -1.8802381 128.0 +2.110147 19.034595 -1.880537 128.0 +2.2301426 19.048962 -1.8833277 128.0 +2.3453991 19.022079 -1.882032 128.0 +2.4618165 19.005358 -1.8818327 128.0 +2.5782511 18.988909 -1.8817331 128.0 +2.6937363 18.965836 -1.8810353 128.0 +2.8094738 18.945013 -1.8806367 128.0 +2.924753 18.921518 -1.8800387 128.0 +3.0398495 18.897322 -1.8794407 128.0 +3.1545954 18.871443 -1.8787431 128.0 +3.2684574 18.840948 -1.8776467 128.0 +3.3806551 18.801931 -1.875753 128.0 +3.4952295 18.776922 -1.8753543 128.0 +2.704253 14.049551 -1.3953576 128.0 +3.7213109 18.712122 -1.8732613 128.0 +3.8358562 18.687962 -1.8731617 128.0 +3.0689557 14.500663 -1.4468856 128.0 +3.1525705 14.457255 -1.4443939 128.0 +3.2499404 14.476473 -1.4483806 128.0 +4.3047495 18.63764 -1.8782446 128.0 +4.4176474 18.605066 -1.8776467 128.0 +4.5442238 18.628843 -1.8829291 128.0 +4.6478038 18.558142 -1.8785437 128.0 +3.4442694 13.404347 -1.3485141 128.0 +3.5241694 13.374303 -1.3476171 128.0 +4.985497 18.45792 -1.8773477 128.0 +5.104763 18.449038 -1.87964 128.0 +5.2197671 18.42407 -1.8803377 128.0 +5.3338251 18.395517 -1.8807364 128.0 +5.4460316 18.360537 -1.880537 128.0 +5.5574317 18.322966 -1.8801384 128.0 +4.3008871 13.87401 -1.4171847 128.0 +4.5563321 14.385189 -1.473696 128.0 +4.4435549 13.735931 -1.4083143 128.0 +4.7396965 14.349923 -1.4759883 128.0 +4.6588349 13.819912 -1.4230651 128.0 +4.7642622 13.851282 -1.4294438 128.0 +6.3331318 18.050541 -1.8783443 128.0 +6.4430985 18.009468 -1.878145 128.0 +6.5545039 17.972399 -1.878444 128.0 +6.6663909 17.936506 -1.8789424 128.0 +6.7798457 17.90457 -1.879939 128.0 +6.893518 17.872843 -1.8810353 128.0 +7.0070558 17.840397 -1.8821317 128.0 +5.9768877 14.947836 -1.5747584 128.0 +6.0726204 14.921019 -1.5758548 128.0 +5.8731298 14.181154 -1.4997091 128.0 +6.0898743 14.452934 -1.5331973 128.0 +6.1102242 14.256167 -1.5158552 128.0 +6.2305889 14.294112 -1.5241275 128.0 +7.7456603 17.475771 -1.876949 128.0 +7.852335 17.427008 -1.8768493 128.0 +7.9587026 17.377594 -1.8767496 128.0 +8.0626602 17.323021 -1.8761517 128.0 +8.1662483 17.267826 -1.8755536 128.0 +8.2707548 17.214703 -1.8752546 128.0 +8.377099 17.165419 -1.8754539 128.0 +8.4800568 17.109238 -1.8749557 128.0 +8.5902462 17.067549 -1.8761517 128.0 +8.69979 17.024265 -1.877248 128.0 +8.8086681 16.979395 -1.8782446 128.0 +8.9168587 16.932949 -1.8791417 128.0 +9.0257492 16.887571 -1.8802381 128.0 +9.1310978 16.835371 -1.8806367 128.0 +9.2404633 16.790358 -1.8819324 128.0 +9.3423424 16.731607 -1.8817331 128.0 +9.4453201 16.674833 -1.8818327 128.0 +9.5474577 16.616564 -1.8818327 128.0 +9.6522417 16.562828 -1.8824307 128.0 +9.7719145 16.534126 -1.8860188 128.0 +9.878809 16.483244 -1.887115 128.0 +9.9740782 16.412966 -1.8860188 128.0 +10.066246 16.337904 -1.8844241 128.0 +10.16525 16.274143 -1.8842247 128.0 +10.253736 16.19381 -1.8821317 128.0 +10.341081 16.112167 -1.879939 128.0 +10.431067 16.035069 -1.8783443 128.0 +10.523782 15.962456 -1.8773477 128.0 +10.616552 15.890137 -1.8764507 128.0 +10.726684 15.843645 -1.8787431 128.0 +10.842836 15.805426 -1.8821317 128.0 +10.970283 15.782716 -1.8875138 128.0 +11.086397 15.742765 -1.8909024 128.0 +11.198389 15.696313 -1.8935934 128.0 +11.320136 15.662787 -1.8979788 128.0 +11.447184 15.635583 -1.9032611 128.0 +11.527494 15.544271 -1.9006698 128.0 +11.572453 15.406422 -1.8922977 128.0 +11.526382 15.15062 -1.8690753 128.0 +11.604551 15.060696 -1.8666832 128.0 +11.641034 14.917827 -1.8576136 128.0 +11.679905 14.779763 -1.8491418 128.0 +11.720632 14.645672 -1.8411685 128.0 +11.774563 14.529418 -1.8354875 128.0 +11.80668 14.387674 -1.8265175 128.0 +11.854673 14.266747 -1.8202385 128.0 +11.8728 14.111515 -1.8094743 128.0 +11.923026 13.995985 -1.8038931 128.0 +11.991781 13.902974 -1.8013017 128.0 +12.080134 13.832879 -1.8018 128.0 +12.172035 13.766696 -1.8028964 128.0 +12.267559 13.704353 -1.8045907 128.0 +12.363445 13.642094 -1.8063847 128.0 +12.459701 13.579906 -1.8082784 128.0 +12.552949 13.514133 -1.8097734 128.0 +12.639724 13.441204 -1.8103714 128.0 +12.738427 13.380691 -1.8127635 128.0 +12.838934 13.32162 -1.8154544 128.0 +12.949618 13.272501 -1.8196404 128.0 +13.075566 13.238098 -1.8260192 128.0 +13.123479 13.124551 -1.8213347 128.0 +13.242697 13.082238 -1.8268164 128.0 +13.36545 13.042429 -1.8327965 128.0 +13.508271 13.020939 -1.8415672 128.0 +13.680877 13.026314 -1.8544242 128.0 +13.864925 13.040283 -1.8687763 128.0 +14.008832 13.014557 -1.877547 128.0 +14.150743 12.985537 -1.8860188 128.0 +14.331899 12.990676 -1.8997728 128.0 +14.558869 13.034561 -1.9196066 128.0 +14.725042 13.021441 -1.9311678 128.0 +14.896846 13.011349 -1.943427 128.0 +15.042706 12.976891 -1.9521977 128.0 +15.233389 12.9792 -1.9668487 128.0 +15.399537 12.958515 -1.9782108 128.0 +15.606562 12.969981 -1.9948552 128.0 +15.827379 12.990121 -2.0131938 128.0 +16.033564 12.995505 -2.0295393 128.0 +16.297117 13.04423 -2.0531604 128.0 +16.428373 12.984707 -2.0597384 128.0 +16.625402 12.975482 -2.0746884 128.0 +16.676331 12.851363 -2.0711005 128.0 +16.712109 12.716263 -2.0657184 128.0 +16.748449 12.582404 -2.0605357 128.0 +16.799765 12.460434 -2.0573463 128.0 +16.825325 12.320086 -2.0510674 128.0 +16.872377 12.196217 -2.0475791 128.0 +16.918545 12.072233 -2.0440907 128.0 +16.93454 11.927518 -2.0370142 128.0 +16.975542 11.801236 -2.0331273 128.0 +16.999224 11.663643 -2.027247 128.0 +17.035042 11.535131 -2.0229614 128.0 +17.087297 11.418227 -2.0207686 128.0 +17.128794 11.294545 -2.01738 128.0 +17.166912 11.169156 -2.0136921 128.0 +17.212513 11.0491 -2.0110013 128.0 +17.251402 10.925179 -2.0076125 128.0 +17.284357 10.798036 -2.0036259 128.0 +17.313013 10.668811 -1.9992405 128.0 +17.344137 10.541709 -1.9952538 128.0 +17.376915 10.416162 -1.9915662 128.0 +17.407949 10.290106 -1.9877788 128.0 +17.445831 10.16857 -1.9848884 128.0 +17.482014 10.04646 -1.9818984 128.0 +17.515623 9.9233103 -1.9787091 128.0 +17.544037 9.7977009 -1.9750214 128.0 +17.58116 9.6773939 -1.9724301 128.0 +17.6612 9.5807219 -1.974822 128.0 +17.619614 9.418705 -1.9634601 128.0 +17.642738 9.2923336 -1.959573 128.0 +17.67646 9.1719913 -1.9569817 128.0 +17.704939 9.0493212 -1.953892 128.0 +17.737022 8.9288836 -1.9513006 128.0 +17.763838 8.8061848 -1.948211 128.0 +17.782663 8.6800022 -1.9443239 128.0 +17.785364 8.5465946 -1.9387426 128.0 +17.801489 8.420289 -1.9347559 128.0 +17.81403 8.2928476 -1.9304702 128.0 +17.82206 8.1639128 -1.9257859 128.0 +17.840067 8.0400982 -1.9222975 128.0 +17.858135 7.9167728 -1.9189088 128.0 +17.880836 7.7959151 -1.9161181 128.0 +17.894497 7.6715493 -1.9124305 128.0 +17.919224 7.5523329 -1.9100385 128.0 +17.933971 7.4292951 -1.9066498 128.0 +17.958023 7.3104868 -1.9043574 128.0 +17.972977 7.1883383 -1.9011681 128.0 +17.989887 7.0673738 -1.8982778 128.0 +18.009705 6.9479046 -1.895786 128.0 +18.041759 6.8333921 -1.8946898 128.0 +18.018995 6.6986418 -1.8878127 128.0 +18.006475 6.5685196 -1.8821317 128.0 +17.994911 6.4394751 -1.87665 128.0 +17.981506 6.3104906 -1.8710686 128.0 +17.991661 6.1903291 -1.8680786 128.0 +18.006676 6.0721884 -1.8656867 128.0 +18.029425 5.9569058 -1.8641917 128.0 +18.045755 5.839735 -1.8620986 128.0 +18.042356 5.7165785 -1.8580123 128.0 +18.04668 5.5963364 -1.8548229 128.0 +18.057825 5.4785666 -1.8524309 128.0 +18.052944 5.3563442 -1.8484442 128.0 +18.075914 5.2427015 -1.8474475 128.0 +18.10487 5.1308775 -1.8471485 128.0 +18.144644 5.0220795 -1.8480456 128.0 +18.18088 4.9122086 -1.8486435 128.0 +18.214527 4.8015747 -1.8490422 128.0 +18.242682 4.6894741 -1.8489425 128.0 +18.272078 4.5776925 -1.8490422 128.0 +18.301756 4.4659629 -1.8492416 128.0 +18.323006 4.3522019 -1.8486435 128.0 +18.357121 4.2414837 -1.8494409 128.0 +18.371151 4.1261506 -1.8482449 128.0 +18.388344 4.0116534 -1.8474475 128.0 +18.438896 3.9043128 -1.8501385 128.0 +18.454708 3.7894998 -1.8493413 128.0 +18.538118 3.6882267 -1.8555206 128.0 +18.580919 3.5783596 -1.8576136 128.0 +18.605461 3.4648283 -1.8579125 128.0 +18.630287 3.3513064 -1.8583113 128.0 +18.647558 3.2364199 -1.8580123 128.0 +18.664122 3.1214473 -1.8577132 128.0 +18.676046 3.0057614 -1.8570156 128.0 +18.692171 2.8908067 -1.8568163 128.0 +18.717432 2.7772272 -1.8576136 128.0 +18.754807 2.6652656 -1.8597066 128.0 +18.786583 2.5522802 -1.8613013 128.0 +18.825573 2.440028 -1.8636932 128.0 +18.852041 2.3259318 -1.8648893 128.0 +18.879793 2.2118342 -1.8662846 128.0 +18.909822 2.0978124 -1.8679789 128.0 +18.932234 1.9827802 -1.8689756 128.0 +18.961868 1.868332 -1.8707696 128.0 +18.987837 1.7533205 -1.8722646 128.0 +19.012117 1.6379751 -1.87366 128.0 +19.034704 1.5223186 -1.8749557 128.0 +19.06254 1.4068855 -1.8768493 128.0 +19.081734 1.2906314 -1.8779457 128.0 +19.096247 1.1739508 -1.8786434 128.0 +19.097128 1.056427 -1.8780453 128.0 +19.090332 0.93859488 -1.8767496 128.0 +19.023161 0.81832385 -1.8694739 128.0 +18.914469 0.69741184 -1.858112 128.0 +18.886566 0.58036572 -1.8549225 128.0 +19.018091 0.46761623 -1.8677796 128.0 +18.898235 0.34866452 -1.8555206 128.0 +19.006479 0.23400477 -1.8661849 128.0 +19.084171 0.11784724 -1.8738593 128.0 +19.138268 0.0007455732 -1.8792413 128.0 +19.20557 -0.11710127 -1.8860188 128.0 +19.237324 -0.2353459 -1.8893077 128.0 +19.251436 -0.35367286 -1.8909024 128.0 +19.262829 -0.47213295 -1.8922977 128.0 +19.280455 -0.59095997 -1.8943907 128.0 +19.240669 -0.70793229 -1.8908027 128.0 +19.241928 -0.82623398 -1.8914007 128.0 +19.236496 -0.94428468 -1.8914007 128.0 +19.129004 -1.0566957 -1.8812346 128.0 +19.002981 -1.1667247 -1.8692746 128.0 +18.960718 -1.2809533 -1.8657863 128.0 +0 -0 -0 128.0 +18.942579 -1.5134548 -1.8656867 128.0 +18.918066 -1.6283748 -1.8641917 128.0 +0 -0 -0 128.0 +19.087774 -1.8792334 -1.8834274 128.0 +19.030361 -1.9915516 -1.8788427 128.0 +18.104977 -2.0070338 -1.78685 128.0 +17.634754 -2.0644886 -1.7407041 128.0 +0 -0 -0 128.0 +16.537449 -2.1419892 -1.6325653 128.0 +15.568593 -2.1136405 -1.5359879 128.0 +14.674628 -2.0839863 -1.4468856 128.0 +13.940111 -2.0669551 -1.3738296 128.0 +13.330283 -2.0601521 -1.3133316 128.0 +12.947033 -2.0823069 -1.2757572 128.0 +12.285312 -2.0532303 -1.2098773 128.0 +11.820532 -2.050142 -1.1639307 128.0 +11.587386 -2.0830004 -1.1415056 128.0 +10.982573 -2.0438595 -1.081207 128.0 +10.567271 -2.0336914 -1.0401442 128.0 +10.576064 -2.1027639 -1.0423368 128.0 +10.610723 -2.177424 -1.0472206 128.0 +10.691586 -2.262481 -1.0568882 128.0 +10.301277 -2.2459695 -1.0183171 128.0 +10.261089 -2.3032477 -1.0156261 128.0 +10.296207 -2.3775885 -1.020709 128.0 +10.183648 -2.4174972 -1.0106428 128.0 +10.193756 -2.4860699 -1.013234 128.0 +9.7719622 -2.4467766 -0.9712742 128.0 +9.9870882 -2.5658927 -0.99509466 128.0 +9.7796869 -2.5766542 -0.97526091 128.0 +9.79251 -2.6443982 -0.97825092 128.0 +9.7933617 -2.7092113 -0.9800449 128.0 +9.7325172 -2.7567723 -0.97546023 128.0 +7.9465246 -2.3034263 -0.79097646 128.0 +7.9408264 -2.3546889 -0.79187346 128.0 +7.9186115 -2.4010577 -0.79107612 128.0 +7.8695164 -2.4389911 -0.7874881 128.0 +7.8999333 -2.5016568 -0.79227215 128.0 +7.8929548 -2.5528398 -0.79316914 128.0 +7.9328852 -2.6196384 -0.7990495 128.0 +9.2951241 -3.1330805 -0.94476277 128.0 +9.236208 -3.1764596 -0.94057673 128.0 +9.0165606 -3.1628931 -0.91934764 128.0 +9.056942 -3.2396131 -0.92572635 128.0 +9.1930008 -3.3520672 -0.94237077 128.0 +9.1685286 -3.4070246 -0.94197208 128.0 +8.968791 -3.3955526 -0.92283601 128.0 +9.009058 -3.4741564 -0.92941403 128.0 +7.1584754 -2.8108394 -0.73257154 128.0 +7.1457133 -2.8565574 -0.7330699 128.0 +9.1297455 -3.7151754 -0.94954681 128.0 +9.1122932 -3.7734094 -0.95014477 128.0 +9.0614605 -3.8176575 -0.94715476 128.0 +8.9665327 -3.8426056 -0.93938076 128.0 +8.92272 -3.8888025 -0.93718809 128.0 +8.992384 -3.9850123 -0.9474538 128.0 +9.0748081 -4.0883536 -0.95921451 128.0 +8.9807997 -4.1124663 -0.95163977 128.0 +8.9066849 -4.1448183 -0.94625777 128.0 +8.8792858 -4.1985397 -0.94605845 128.0 +5.4515996 -2.6183236 -0.56802118 128.0 +5.3942981 -2.6316478 -0.56343651 128.0 +5.3459554 -2.6487875 -0.55984849 128.0 +5.3429337 -2.6882508 -0.56134349 128.0 +8.7161942 -4.4535379 -0.94266975 128.0 +8.6330614 -4.478065 -0.93639076 128.0 +8.5974989 -4.5267792 -0.93549371 128.0 +8.5599079 -4.5742874 -0.9343974 128.0 +8.5220585 -4.6215053 -0.93330103 128.0 +8.5249224 -4.6909814 -0.93688905 128.0 +8.4655733 -4.7262211 -0.93340075 128.0 +13.950337 -7.9018335 -1.5681803 128.0 +13.823945 -7.9426637 -1.5592103 128.0 +13.632246 -7.9441619 -1.5426656 128.0 +13.495875 -7.9760141 -1.5324996 128.0 +6.9434175 -4.160574 -0.77303636 128.0 +3.5038366 -2.1281936 -0.37287304 128.0 +3.4898653 -2.1491308 -0.37277338 128.0 +3.4783006 -2.1715581 -0.37297273 128.0 +13.052356 -8.2643356 -1.5096759 128.0 +13.12533 -8.4238176 -1.5244266 128.0 +13.089242 -8.5145044 -1.5263202 128.0 +13.07164 -8.6176634 -1.5305063 128.0 +13.084702 -8.7419329 -1.5384796 128.0 +13.050591 -8.8354435 -1.5408716 128.0 +12.984645 -8.9074736 -1.5394763 128.0 +4.2507362 -2.9535754 -0.48071283 128.0 +12.867851 -9.0615606 -1.5386789 128.0 +12.796618 -9.129365 -1.5367852 128.0 +12.745199 -9.2112093 -1.5373832 128.0 +12.68844 -9.2892389 -1.5373832 128.0 +12.622413 -9.3603983 -1.536287 128.0 +12.544057 -9.4221334 -1.5336956 128.0 +5.470118 -4.160656 -0.6506452 128.0 +5.4673419 -4.2117553 -0.65353554 128.0 +12.306533 -9.6030693 -1.5258219 128.0 +12.253623 -9.6833353 -1.5266192 128.0 +12.196307 -9.7602053 -1.5269182 128.0 +12.134644 -9.8336039 -1.5267189 128.0 +12.073309 -9.9072447 -1.5266192 128.0 +2.8590169 -2.3744347 -0.33450121 128.0 +2.8565755 -2.4021828 -0.3360959 128.0 +2.8273916 -2.4074044 -0.33420223 128.0 +2.823868 -2.4344568 -0.33569723 128.0 +2.8321095 -2.4720287 -0.3387869 128.0 +2.8496854 -2.5183618 -0.34317225 128.0 +11.565606 -10.352799 -1.5170512 128.0 +3.600786 -3.2621355 -0.44891903 128.0 +3.5704381 -3.2747498 -0.44752368 128.0 +3.4802942 -3.2315819 -0.43795565 128.0 +3.4843192 -3.2753716 -0.44124466 128.0 +3.4886577 -3.3200173 -0.44463333 128.0 +3.4811161 -3.3537905 -0.44642735 128.0 +3.474715 -3.3889854 -0.4484207 128.0 +3.4743836 -3.4305208 -0.45131105 128.0 +3.4764867 -3.4749935 -0.45460007 128.0 +2.5558763 -2.5858934 -0.32642817 128.0 +10.677741 -10.941894 -1.4936295 128.0 +10.593829 -10.99001 -1.4912374 128.0 +10.510417 -11.038231 -1.488945 128.0 +3.507314 -3.7278686 -0.47493213 128.0 +3.4958866 -3.7617123 -0.47662649 128.0 +3.0563316 -3.3292642 -0.41493255 128.0 +7.6370649 -8.42484 -1.10124 128.0 +2.7862825 -3.1107492 -0.3805474 128.0 +2.7546201 -3.1136241 -0.37865373 128.0 +2.7132099 -3.1049862 -0.37526506 128.0 +9.6565304 -11.193316 -1.4429985 128.0 +9.5444345 -11.201609 -1.4363208 128.0 +9.4498987 -11.229506 -1.4323342 128.0 +7.3623905 -8.8582544 -1.1159909 128.0 +9.2608862 -11.283092 -1.4243608 128.0 +9.1125431 -11.2423 -1.4118028 128.0 +8.9967604 -11.239738 -1.4043278 128.0 +8.8875227 -11.243986 -1.3978493 128.0 +8.8104057 -11.28811 -1.3965536 128.0 +8.7306528 -11.328557 -1.3948593 128.0 +8.6326618 -11.344696 -1.390175 128.0 +8.5353994 -11.360855 -1.3855903 128.0 +8.4347086 -11.371454 -1.3804076 128.0 +8.3383245 -11.386867 -1.3759226 128.0 +8.2420702 -11.401525 -1.3714375 128.0 +8.0812254 -11.324714 -1.3557898 128.0 +8.0213261 -11.387916 -1.3574842 128.0 +7.7729731 -11.180373 -1.3261887 128.0 +7.734622 -11.272163 -1.3315707 128.0 +7.7328115 -11.419106 -1.3436304 128.0 +7.5879736 -11.354648 -1.3301754 128.0 +7.4852982 -11.35115 -1.3241954 128.0 +7.4274449 -11.415215 -1.326388 128.0 +7.340601 -11.434615 -1.3232983 128.0 +7.2144084 -11.391171 -1.3128333 128.0 +7.1385789 -11.425941 -1.3117369 128.0 +7.0725121 -11.476304 -1.3125343 128.0 +6.9993777 -11.515233 -1.3120359 128.0 +6.900456 -11.511023 -1.3065543 128.0 +6.8109636 -11.521453 -1.3028666 128.0 +6.7060723 -11.504568 -1.2960893 128.0 +6.5649619 -11.422991 -1.2819365 128.0 +6.4903345 -11.455266 -1.2810395 128.0 +6.3864517 -11.43493 -1.2741625 128.0 +6.3238444 -11.487848 -1.2757572 128.0 +6.2745857 -11.565793 -1.2802422 128.0 +6.1561289 -11.515445 -1.2701758 128.0 +6.0612464 -11.50722 -1.2649931 128.0 +5.858098 -11.288941 -1.2361894 128.0 +5.824944 -11.395555 -1.2441627 128.0 +1.2312765 -2.4436722 -0.23632914 128.0 +1.200793 -2.4199781 -0.23284079 128.0 +1.1313701 -2.3155243 -0.22038241 128.0 +1.1102463 -2.3080728 -0.21878773 128.0 +1.0905331 -2.3031483 -0.21749206 128.0 +1.0969548 -2.3539987 -0.22237575 128.0 +1.0837333 -2.363399 -0.22267476 128.0 +1.1248051 -2.4933801 -0.23622948 128.0 +5.080235 -11.458632 -1.2177509 128.0 +5.0448208 -11.569854 -1.2265216 128.0 +4.9435496 -11.53017 -1.2188473 128.0 +4.8800502 -11.577708 -1.2207409 128.0 +4.8020649 -11.590887 -1.2189469 128.0 +4.7199759 -11.593407 -1.2160566 128.0 +4.6384068 -11.596281 -1.2132659 128.0 +4.5700765 -11.631932 -1.2140633 128.0 +4.4989762 -11.660684 -1.2141629 128.0 +1.2030679 -3.1736758 -0.30220908 128.0 +4.3316231 -11.65066 -1.2072859 128.0 +4.2303934 -11.595692 -1.1986148 128.0 +4.1682138 -11.646727 -1.2013059 128.0 +1.1874127 -3.380636 -0.32114583 128.0 +1.1498163 -3.3389311 -0.31596315 128.0 +1.1172276 -3.3100941 -0.31217578 128.0 +1.0928389 -3.3046045 -0.31088012 128.0 +3.7823436 -11.686741 -1.1926348 128.0 +1.0431895 -3.2893095 -0.30789012 128.0 +1.0082543 -3.2481289 -0.30290675 128.0 +0.98455054 -3.2418759 -0.3016111 128.0 +0.96379131 -3.2449942 -0.30131209 128.0 +0.9469105 -3.261359 -0.30240843 128.0 +0.94993699 -3.3484814 -0.31088012 128.0 +3.2478571 -11.732882 -1.1816714 128.0 +0.9113692 -3.3694925 -0.3118768 128.0 +0.89346653 -3.3856049 -0.31297314 128.0 +3.0365438 -11.810915 -1.1837645 128.0 +2.9647415 -11.83222 -1.1840634 128.0 +2.8897264 -11.840522 -1.1830667 128.0 +2.8149509 -11.849317 -1.1821698 128.0 +1.8963628 -8.2045918 -0.80572718 128.0 +0.71810889 -3.1929016 -0.2900497 128.0 +2.5630784 -11.746493 -1.166522 128.0 +1.7779912 -8.3938589 -0.82167393 128.0 +1.7214519 -8.3802433 -0.81918222 128.0 +1.6678642 -8.3799133 -0.81808591 128.0 +1.6250675 -8.4349346 -0.82267058 128.0 +2.1951771 -11.78535 -1.1630337 128.0 +2.1355016 -11.869108 -1.1702098 128.0 +1.4227581 -8.1938152 -0.79526216 128.0 +1.981485 -11.84535 -1.1652263 128.0 +1.926151 -11.965348 -1.1761898 128.0 +1.3321977 -8.6099844 -0.83492965 128.0 +1.7742095 -11.954619 -1.172801 128.0 +1.7060016 -12.00173 -1.1764888 128.0 +1.6271065 -11.973519 -1.1726017 128.0 +1.5543748 -11.989199 -1.1731998 128.0 +1.4682379 -11.896793 -1.1629341 128.0 +1.3924357 -11.88186 -1.160542 128.0 +1.3199424 -11.894135 -1.1609406 128.0 +1.247558 -11.907948 -1.1615387 128.0 +1.1763214 -11.934194 -1.1634324 128.0 +1.1051753 -11.963976 -1.1657248 128.0 +1.0337932 -11.994324 -1.1681167 128.0 +0.95669037 -11.9568 -1.1637313 128.0 +0.89047813 -12.059692 -1.1734987 128.0 +0.8188796 -12.100669 -1.1770867 128.0 +0.74510378 -12.113411 -1.1778841 128.0 +0.21856233 -3.9342523 -0.35692632 128.0 +0.58766204 -11.943748 -1.1600437 128.0 +0.51564658 -11.976952 -1.1630337 128.0 +0.44533208 -12.066399 -1.1717048 128.0 +0.37156016 -12.077855 -1.1726017 128.0 +0.29746923 -12.080902 -1.1727014 128.0 +0.22436105 -12.138212 -1.1782827 128.0 +0.15042664 -12.184133 -1.1827677 128.0 +0.075377449 -12.138062 -1.1780834 128.0 +0.00089607463 -12.239787 -1.1882495 128.0 +-0.073948532 -12.197772 -1.1840634 128.0 +-0.14799617 -12.132418 -1.1775851 128.0 +-0.21931924 -11.962156 -1.1606417 128.0 +-0.29777277 -12.166492 -1.1812727 128.0 +-0.37214446 -12.155485 -1.1803758 128.0 +-0.44723514 -12.166894 -1.181771 128.0 +-0.52342021 -12.199708 -1.1853591 128.0 +-0.60119712 -12.255897 -1.1913391 128.0 +-0.67808974 -12.282775 -1.1944288 128.0 +-0.75087911 -12.236671 -1.1902428 128.0 +-0.82353109 -12.196095 -1.1866548 128.0 +-0.90977174 -12.345614 -1.2022028 128.0 +-0.97360981 -12.191021 -1.1872528 128.0 +-1.0645332 -12.372183 -1.2060899 128.0 +-1.1441778 -12.406041 -1.2101762 128.0 +-1.2209612 -12.405719 -1.2108738 128.0 +-1.2945713 -12.374243 -1.2084819 128.0 +-1.3747519 -12.404635 -1.2123688 128.0 +-1.4570906 -12.449333 -1.2177509 128.0 +-1.5330853 -12.437196 -1.2174519 128.0 +-1.614357 -12.466039 -1.221339 128.0 +-1.6967098 -12.499281 -1.2257243 128.0 +-1.7768714 -12.513263 -1.2282159 128.0 +-1.854056 -12.505077 -1.2285149 128.0 +-1.9345523 -12.518049 -1.2310066 128.0 +-2.002156 -12.448965 -1.2252259 128.0 +-2.0862172 -12.482572 -1.2299103 128.0 +-2.166172 -12.489143 -1.2319037 128.0 +-2.2452292 -12.489326 -1.233299 128.0 +-2.327831 -12.507596 -1.236588 128.0 +-2.4069784 -12.505779 -1.2378837 128.0 +-2.4782312 -12.463449 -1.235093 128.0 +-2.548655 -12.418769 -1.232103 128.0 +-2.6433563 -12.490506 -1.241073 128.0 +-2.7515452 -12.618903 -1.2559234 128.0 +-2.8330643 -12.620229 -1.257817 128.0 +-2.9124629 -12.611333 -1.2587141 128.0 +-2.9741547 -12.527395 -1.2519367 128.0 +-3.0556827 -12.528243 -1.2539301 128.0 +-3.1332223 -12.512154 -1.2542291 128.0 +-3.2099366 -12.492693 -1.2542291 128.0 +-3.2964208 -12.510286 -1.2581161 128.0 +-3.3837607 -12.529208 -1.2622024 128.0 +-3.4650867 -12.524512 -1.2638968 128.0 +-3.5388863 -12.492485 -1.2628005 128.0 +-3.6157494 -12.471491 -1.2629001 128.0 +-3.7159779 -12.5292 -1.2712722 128.0 +-3.7927856 -12.506164 -1.2712722 128.0 +-3.8361499 -12.375263 -1.2600098 128.0 +-3.9135134 -12.356235 -1.2605081 128.0 +-3.9852738 -12.319682 -1.2592124 128.0 +-4.0557966 -12.279881 -1.2576177 128.0 +-4.1059518 -12.180277 -1.2497441 128.0 +-4.1666918 -12.114396 -1.2454584 128.0 +-4.1925125 -11.950585 -1.2308073 128.0 +-4.3277788 -12.097952 -1.2492458 128.0 +-4.3647628 -11.969279 -1.238382 128.0 +-4.4838877 -12.065384 -1.251538 128.0 +-4.5976586 -12.142793 -1.2628005 128.0 +-4.66993 -12.108784 -1.2622024 128.0 +-4.6888409 -11.939131 -1.247053 128.0 +-4.5203643 -11.305922 -1.1818708 128.0 +-4.9651766 -12.200484 -1.2816375 128.0 +-5.0654573 -12.23138 -1.2883152 128.0 +-5.1377072 -12.19365 -1.2876176 128.0 +-5.2092929 -12.15458 -1.2868202 128.0 +-1.5450281 -3.5467663 -0.34975028 128.0 +-1.5631324 -3.5290325 -0.34885329 128.0 +-1.5823038 -3.513932 -0.34825528 128.0 +-1.6021775 -3.5005383 -0.34785661 128.0 +-1.6202669 -3.4834251 -0.34705928 128.0 +-1.6309742 -3.4509308 -0.3445676 128.0 +-1.6486703 -3.4336836 -0.34377027 128.0 +-1.6592332 -3.4020424 -0.34137824 128.0 +-1.6721218 -3.3757505 -0.33958423 128.0 +-1.6941457 -3.3680933 -0.33988324 128.0 +-1.7075346 -3.3434587 -0.33828858 128.0 +-1.7298505 -3.3364513 -0.33868724 128.0 +-1.7539995 -3.3328176 -0.33948457 128.0 +-1.779107 -3.3307676 -0.34048125 128.0 +-1.805204 -3.3302839 -0.34167725 128.0 +-1.8304023 -3.3278618 -0.34267393 128.0 +-1.8517574 -3.3183055 -0.34287325 128.0 +-1.8691406 -3.3016863 -0.34227526 128.0 +-1.8690377 -3.2547839 -0.33818889 128.0 +-1.9050071 -3.2707636 -0.34137824 128.0 +-7.0848994 -11.988313 -1.3570855 128.0 +-7.2565446 -12.108477 -1.3762215 128.0 +-7.3891015 -12.159806 -1.387484 128.0 +-7.511075 -12.191325 -1.3965536 128.0 +-7.6384568 -12.229398 -1.4065204 128.0 +-7.7239981 -12.199111 -1.4085137 128.0 +-7.8110676 -12.170747 -1.4108061 128.0 +-7.9181566 -12.172632 -1.4167861 128.0 +-7.9932451 -12.124649 -1.4168857 128.0 +-8.1111631 -12.140734 -1.4247594 128.0 +-8.1046104 -11.971269 -1.4103078 128.0 +-8.2088737 -11.96644 -1.4157894 128.0 +-8.4866085 -12.209967 -1.4516696 128.0 +-8.5206871 -12.099906 -1.4445932 128.0 +-7.911068 -11.089201 -1.326687 128.0 +-8.8719616 -12.275869 -1.479377 128.0 +-9.0799694 -12.402637 -1.5019017 128.0 +-8.4991312 -11.461183 -1.3914707 128.0 +-8.9278822 -11.886143 -1.4512709 128.0 +-9.5874939 -12.602411 -1.5483466 128.0 +-9.6452045 -12.518126 -1.5451573 128.0 +-9.7218332 -12.458708 -1.5451573 128.0 +-9.8172216 -12.423021 -1.548247 128.0 +-9.901968 -12.373425 -1.5496423 128.0 +-9.9946194 -12.333306 -1.5523334 128.0 +-10.138283 -12.354816 -1.5630974 128.0 +-10.281947 -12.37426 -1.5737617 128.0 +-10.403166 -12.364993 -1.5808381 128.0 +-10.534336 -12.366064 -1.5894095 128.0 +-10.614564 -12.306468 -1.5901071 128.0 +-10.723912 -12.280076 -1.5952898 128.0 +-10.751601 -12.160377 -1.5881138 128.0 +-10.719823 -11.975563 -1.572167 128.0 +-10.380803 -11.45468 -1.5106725 128.0 +-10.489911 -11.433291 -1.5164531 128.0 +-10.566639 -11.376001 -1.5174499 128.0 +-10.632152 -11.306602 -1.5168518 128.0 +-10.709561 -11.2498 -1.5180478 128.0 +-10.812914 -11.219695 -1.5230312 128.0 +-10.864181 -11.135333 -1.5205395 128.0 +-10.909925 -11.045811 -1.5173502 128.0 +-10.962719 -10.963885 -1.5152571 128.0 +-10.99085 -10.857955 -1.5097755 128.0 +-11.007415 -10.74167 -1.5027988 128.0 +-11.056639 -10.658046 -1.5005064 128.0 +-11.116062 -10.584515 -1.4997091 128.0 +-11.191671 -10.526333 -1.5012041 128.0 +-11.280107 -10.479812 -1.5044931 128.0 +-11.361059 -10.425874 -1.5067855 128.0 +-11.441038 -10.370667 -1.5089781 128.0 +-11.520765 -10.314872 -1.5111709 128.0 +-10.019201 -8.8605337 -1.3019696 128.0 +-11.709432 -10.227696 -1.5195428 128.0 +-11.768953 -10.153057 -1.5191442 128.0 +-11.83103 -10.080653 -1.5191442 128.0 +-11.908649 -10.021322 -1.5212371 128.0 +-10.303118 -8.5630178 -1.3041623 128.0 +-10.325468 -8.4750204 -1.3002752 128.0 +-10.396602 -8.4271669 -1.3027669 128.0 +-12.255098 -9.8093634 -1.5345926 128.0 +-12.318959 -9.7370672 -1.5350909 128.0 +-12.391025 -9.6710901 -1.5366856 128.0 +-12.458014 -9.6009521 -1.5376823 128.0 +-12.527776 -9.5327654 -1.5390776 128.0 +-10.739515 -8.0686674 -1.3077503 128.0 +-12.672585 -9.3996496 -1.5426656 128.0 +-12.753305 -9.3387613 -1.5455559 128.0 +-12.826495 -9.2719898 -1.5475492 128.0 +-12.897725 -9.203516 -1.5493433 128.0 +-12.969412 -9.1350889 -1.551237 128.0 +-13.029305 -9.0581779 -1.5517353 128.0 +-13.10187 -8.9898825 -1.5538284 128.0 +-13.172439 -8.9199209 -1.555722 128.0 +-13.242641 -8.849431 -1.5576156 128.0 +-13.313306 -8.7789631 -1.5596091 128.0 +-13.39528 -8.7155571 -1.5629977 128.0 +-13.481163 -8.6541624 -1.5668848 128.0 +-13.555867 -8.5851202 -1.569476 128.0 +-13.615885 -8.506526 -1.5703731 128.0 +-13.678836 -8.4296064 -1.5716687 128.0 +-13.75071 -8.3579178 -1.5740608 128.0 +-13.838432 -8.2953835 -1.5783464 128.0 +-13.917339 -8.2270231 -1.5816355 128.0 +-14.003664 -8.1625156 -1.5858215 128.0 +-14.071602 -8.0868473 -1.5879145 128.0 +-14.135675 -8.0086908 -1.5896088 128.0 +-6.7323408 -3.760586 -0.73466456 128.0 +-6.7256503 -3.7028944 -0.73127586 128.0 +-14.375155 -7.798378 -1.6003728 128.0 +-14.436776 -7.7175312 -1.6019676 128.0 +-14.483858 -7.6288037 -1.6019676 128.0 +-14.562191 -7.5562849 -1.6055555 128.0 +-7.3588257 -3.7619948 -0.79007947 128.0 +-6.9773722 -3.5132253 -0.74473095 128.0 +-6.9479814 -3.4451592 -0.73904991 128.0 +-6.9600477 -3.3980982 -0.73805326 128.0 +-6.9861484 -3.3579137 -0.73865122 128.0 +-7.0345049 -3.3281717 -0.74174094 128.0 +-6.7381597 -3.1375687 -0.70675778 128.0 +-15.122584 -6.9275331 -1.6283793 128.0 +-15.18295 -6.8427877 -1.6303726 128.0 +-15.254669 -6.762804 -1.6336616 128.0 +-15.317769 -6.6786184 -1.6360537 128.0 +-7.3525243 -3.1528463 -0.76356804 128.0 +-7.3891535 -3.1150141 -0.76546168 128.0 +-15.476716 -6.4115291 -1.6402397 128.0 +-15.53604 -6.3246975 -1.6424323 128.0 +-15.601348 -6.239965 -1.6453227 128.0 +-15.656013 -6.1506672 -1.6471167 128.0 +-15.715738 -6.0630817 -1.6495087 128.0 +-15.777769 -5.9760523 -1.6521997 128.0 +-15.847717 -5.8916087 -1.6557877 128.0 +-15.916286 -5.806191 -1.6592761 128.0 +-15.969414 -5.7147899 -1.6611698 128.0 +-16.015446 -5.6206489 -1.6623658 128.0 +-16.0581 -5.5251875 -1.6632627 128.0 +-16.0917 -5.4265528 -1.6632627 128.0 +-16.15587 -5.3380132 -1.6665518 128.0 +-16.233763 -5.2534842 -1.6713358 128.0 +-16.330194 -5.1742096 -1.6781132 128.0 +-12.328172 -3.8233936 -1.2551261 128.0 +-16.390556 -4.9728456 -1.6779138 128.0 +-13.303297 -3.9474335 -1.3522018 128.0 +-16.265905 -4.7178512 -1.6586781 128.0 +-16.502289 -4.6768165 -1.6803058 128.0 +-16.545059 -4.5794525 -1.6818008 128.0 +-16.579571 -4.4796643 -1.6824986 128.0 +-12.766736 -3.3658292 -1.2847272 128.0 +-12.778475 -3.2852015 -1.2838302 128.0 +-16.489342 -4.1311817 -1.6649572 128.0 +-16.498913 -4.026154 -1.6633625 128.0 +-16.502975 -3.9200153 -1.6612694 128.0 +-16.515085 -3.8159938 -1.6600734 128.0 +-16.553722 -3.7180753 -1.6616681 128.0 +-16.568447 -3.6147373 -1.6608708 128.0 +-13.316599 -2.8200309 -1.3256904 128.0 +-16.540403 -3.3965387 -1.6535951 128.0 +-16.533607 -3.2895501 -1.6508044 128.0 +-16.653143 -3.2072265 -1.6609704 128.0 +-16.673487 -3.1051667 -1.6610701 128.0 +-16.699081 -3.0040343 -1.6617677 128.0 +-16.74465 -2.9062765 -1.6645584 128.0 +-16.781796 -2.8067601 -1.6665518 128.0 +-16.982409 -2.7332907 -1.6851895 128.0 +-17.083427 -2.6421103 -1.6937609 128.0 +-17.242033 -2.5584054 -1.7082126 128.0 +-17.30962 -2.4599788 -1.713495 128.0 +-17.405237 -2.3647015 -1.7216676 128.0 +-17.525003 -2.2715392 -1.7323321 128.0 +-17.637365 -2.1761429 -1.7422987 128.0 +-17.435932 -2.0427704 -1.7206711 128.0 +-17.78043 -1.97259 -1.7541592 128.0 +-18.42753 -1.9299536 -1.8181454 128.0 +-19.56789 -1.9280066 -1.9317659 128.0 +-19.710138 -1.8199728 -1.944922 128.0 +-19.747702 -1.7013037 -1.947613 128.0 +-19.798435 -1.583352 -1.9516994 128.0 +-19.800831 -1.461329 -1.9510016 128.0 +-19.779642 -1.3377932 -1.9480116 128.0 +-19.789465 -1.2165245 -1.948211 128.0 +-19.802517 -1.0954051 -1.948809 128.0 +-19.792965 -0.97309768 -1.9472142 128.0 +-19.787628 -0.85116225 -1.946118 128.0 +-19.766624 -0.72877997 -1.9435266 128.0 +-19.786638 -0.60796851 -1.9451213 128.0 +-19.750206 -0.48557267 -1.9411346 128.0 +-19.771717 -0.36472613 -1.9430283 128.0 +-19.756668 -0.24319507 -1.9413339 128.0 +-19.808533 -0.12227612 -1.946417 128.0 +-19.784035 -0.00073148467 -1.9439253 128.0 +-19.774712 0.12060595 -1.9430283 128.0 +-19.7736 0.24193902 -1.9430283 128.0 +-19.739908 0.36267623 -1.9398389 128.0 +-19.733332 0.48369342 -1.9394403 128.0 +-19.715075 0.60430759 -1.9379452 128.0 +-19.699062 0.72482592 -1.9367492 128.0 +-19.682316 0.8451705 -1.9355532 128.0 +-19.662846 0.96523917 -1.934158 128.0 +-19.641651 1.0850458 -1.932663 128.0 +-19.616747 1.2044456 -1.9308689 128.0 +-19.594095 1.3237821 -1.9293739 128.0 +-17.631426 -0.448975 -1.9434843 128.0 +-17.612984 -0.34037846 -1.9411398 128.0 +-17.58493 -0.23190701 -1.9377905 128.0 +-17.517456 -0.12351847 -1.9300872 128.0 +-17.589434 -0.016098185 -1.9381254 128.0 +-17.57827 0.091772035 -1.9368974 128.0 +-17.560484 0.19943708 -1.9349995 128.0 +-17.547007 0.30697411 -1.9336598 128.0 +-17.540819 0.41454092 -1.9332131 128.0 +-17.536951 0.52213198 -1.9331015 128.0 +-17.530437 0.62961996 -1.9327666 128.0 +-17.515324 0.73671371 -1.9315386 128.0 +-17.481688 0.84278482 -1.9283009 128.0 +-17.474203 0.94992673 -1.9280776 128.0 +-17.453167 1.0562284 -1.9264029 128.0 +-17.419586 1.1615146 -1.9233886 128.0 +-17.382397 1.2662121 -1.9200394 128.0 +-17.376282 1.3730012 -1.9202627 128.0 +-17.359608 1.4789195 -1.9193695 128.0 +-17.344269 1.5848658 -1.9186996 128.0 +-17.325317 1.6903901 -1.9176949 128.0 +-17.308687 1.7960492 -1.917025 128.0 +-17.295366 1.9020023 -1.9168017 128.0 +-17.275473 2.0071716 -1.9159086 128.0 +-17.26086 2.1128926 -1.9156853 128.0 +-17.241657 2.2180028 -1.9150155 128.0 +-17.229692 2.3240197 -1.9152387 128.0 +-17.21314 2.4294176 -1.9150155 128.0 +-17.192993 2.534265 -1.9144572 128.0 +-17.173191 2.6391079 -1.9140106 128.0 +-17.149805 2.7433324 -1.9132292 128.0 +-17.119905 2.8463914 -1.9117779 128.0 +-17.109953 2.9527354 -1.912671 128.0 +-17.095427 3.0583644 -1.9131175 128.0 +-17.063635 3.1608498 -1.9116662 128.0 +-17.028303 3.2624993 -1.9098799 128.0 +-16.995293 3.364413 -1.9084285 128.0 +-16.964592 3.4666417 -1.9073122 128.0 +-16.896328 3.5608337 -1.9019533 128.0 +-16.872217 3.6640189 -1.9017301 128.0 +-16.800928 3.7566347 -1.8961478 128.0 +-16.852133 3.8768058 -1.9047444 128.0 +-16.747761 3.9611528 -1.895478 128.0 +-16.659407 4.0483546 -1.8881097 128.0 +-16.739351 4.1767192 -1.9002787 128.0 +-16.690304 4.2734361 -1.8975992 128.0 +-16.588797 4.3560805 -1.8888911 128.0 +-16.616453 4.4725065 -1.8952547 128.0 +-16.565704 4.5680394 -1.8925754 128.0 +-16.550753 4.6733789 -1.8941383 128.0 +-16.498854 4.7682233 -1.8914589 128.0 +-16.483582 4.8735948 -1.8931335 128.0 +-16.435293 4.9691801 -1.8910123 128.0 +-16.373161 5.0602493 -1.8873281 128.0 +-16.376867 5.1716895 -1.8914589 128.0 +-16.345772 5.2723837 -1.8915706 128.0 +-16.327271 5.3772426 -1.8932452 128.0 +-16.302448 5.4801731 -1.89425 128.0 +-16.285435 5.5859032 -1.8962595 128.0 +-16.249916 5.6853952 -1.8961478 128.0 +-16.233444 5.7916741 -1.8983808 128.0 +-16.231222 5.903399 -1.9023999 128.0 +-16.232899 6.0170407 -1.9069772 128.0 +-16.226353 6.1281161 -1.9106615 128.0 +-16.203285 6.2332721 -1.9124477 128.0 +-16.183239 6.3398256 -1.9146805 128.0 +-16.163418 6.4467354 -1.917025 128.0 +-16.150259 6.5566306 -1.9202627 128.0 +-16.13636 6.6666069 -1.9235003 128.0 +-16.113474 6.7731934 -1.9257331 128.0 +-16.103592 6.8856096 -1.9296407 128.0 +-16.071974 6.9890451 -1.9309803 128.0 +-16.060598 7.1015944 -1.9348878 128.0 +-16.008564 7.1963396 -1.9338831 128.0 +-15.998454 7.3101244 -1.9381254 128.0 +-15.962312 7.4123363 -1.9392419 128.0 +-15.958771 7.5300698 -1.944489 128.0 +-15.944527 7.6433129 -1.9485081 128.0 +-15.940214 7.7618842 -1.953867 128.0 +-15.9395 7.8828926 -1.959784 128.0 +-15.926353 7.9983859 -1.9642497 128.0 +-15.907077 8.1113052 -1.9680456 128.0 +-15.883483 8.2224617 -1.9713949 128.0 +-15.855604 8.3317842 -1.9742975 128.0 +-15.819966 8.4373331 -1.9763072 128.0 +-15.784503 8.543231 -1.9784284 128.0 +-15.759659 8.6552286 -1.9820008 128.0 +-15.726221 8.7628899 -1.9845687 128.0 +-15.706761 8.8787794 -1.9890343 128.0 +-15.654572 8.97647 -1.9893693 128.0 +-15.637856 9.0948372 -1.9943932 128.0 +-15.607435 9.2057638 -1.9977424 128.0 +-15.567713 9.3115578 -1.9999753 128.0 +-15.545973 9.4285469 -2.0046642 128.0 +-15.534387 9.5523863 -2.0108047 128.0 +-15.500781 9.6632948 -2.014154 128.0 +-15.461358 9.7709646 -2.0168333 128.0 +-15.42287 9.8795862 -2.0197361 128.0 +-15.366127 9.9767389 -2.0202942 128.0 +-15.307942 10.073021 -2.0207407 128.0 +-15.258249 10.175029 -2.0224154 128.0 +-15.192236 10.266234 -2.0219688 128.0 +-15.148636 10.372733 -2.0246482 128.0 +-15.100219 10.476251 -2.0267694 128.0 +-15.040531 10.572135 -2.0274394 128.0 +-15.007758 10.687281 -2.0319049 128.0 +-14.970914 10.800095 -2.0359242 128.0 +-14.921213 10.904063 -2.0382686 128.0 +-14.897159 11.02734 -2.0442972 128.0 +-14.843527 11.12927 -2.0463068 128.0 +-14.789206 11.230955 -2.0483165 128.0 +-14.760189 11.352386 -2.0540102 128.0 +-14.707502 11.456174 -2.0564663 128.0 +-14.656437 11.561587 -2.0592575 128.0 +-14.589879 11.655022 -2.0599272 128.0 +-14.559813 11.778073 -2.0659559 128.0 +-14.517251 11.891747 -2.0703101 128.0 +-14.476902 12.007879 -2.0751107 128.0 +-14.428063 12.117572 -2.0787947 128.0 +-14.367066 12.21746 -2.0808043 128.0 +-14.31367 12.324188 -2.0840421 128.0 +-14.267745 12.437902 -2.0885077 128.0 +-14.221706 12.552175 -2.0930851 128.0 +-14.154795 12.648471 -2.0946481 128.0 +-14.104185 12.759751 -2.0987787 128.0 +-14.042482 12.86149 -2.1013465 128.0 +-13.9582 12.942681 -2.1005652 128.0 +-13.865481 13.015841 -2.0985556 128.0 +-13.724126 13.042486 -2.089066 128.0 +-13.549309 13.035507 -2.0743291 128.0 +-13.40215 13.053225 -2.0638347 128.0 +-13.222028 13.036838 -2.0480931 128.0 +-13.034878 13.011013 -2.0311236 128.0 +-12.900274 13.035655 -2.0224154 128.0 +-12.75683 13.049899 -2.0122559 128.0 +-12.595062 13.043575 -1.9990822 128.0 +-12.430425 13.032166 -1.9853501 128.0 +-12.301842 13.056839 -1.9774235 128.0 +-12.170041 13.076791 -1.9689387 128.0 +-12.050566 13.108787 -1.9624635 128.0 +-11.892411 13.09714 -1.949513 128.0 +-11.744145 13.094407 -1.9381254 128.0 +-11.598999 13.093326 -1.9271845 128.0 +-11.454965 13.091706 -1.9163551 128.0 +-11.297094 13.072274 -1.9030697 128.0 +-11.170865 13.087681 -1.8951432 128.0 +-11.033984 13.089117 -1.8853186 128.0 +-10.908319 13.102351 -1.8773919 128.0 +-10.791112 13.124516 -1.8709167 128.0 +-10.677804 13.150368 -1.8651114 128.0 +-10.604374 13.224941 -1.866451 128.0 +-10.547088 13.320144 -1.870805 128.0 +-10.470667 13.391654 -1.8718098 128.0 +-10.37919 13.44385 -1.8701352 128.0 +-10.269997 13.472509 -1.8652229 128.0 +-10.146501 13.48128 -1.8576313 128.0 +-10.028027 13.495426 -1.8509327 128.0 +-9.9191675 13.521448 -1.8460205 128.0 +-9.8278542 13.570788 -1.8444575 128.0 +-9.7311077 13.612243 -1.8418897 128.0 +-9.6210442 13.634346 -1.8367542 128.0 +-9.5133495 13.658875 -1.8320652 128.0 +-9.415287 13.696518 -1.8292741 128.0 +-9.3232584 13.742518 -1.8277111 128.0 +-9.2183046 13.768913 -1.8235804 128.0 +-9.1194038 13.803659 -1.8206776 128.0 +-9.030736 13.853527 -1.8198961 128.0 +-8.9364233 13.89447 -1.8179983 128.0 +-8.836092 13.925547 -1.8148723 128.0 +-8.7314978 13.949179 -1.8108531 128.0 +-8.629035 13.975434 -1.8072805 128.0 +-8.5224447 13.994168 -1.8028148 128.0 +-8.4072514 13.997641 -1.7964512 128.0 +-8.3100634 14.030152 -1.7939951 128.0 +-8.2158003 14.067148 -1.7922088 128.0 +-8.1273479 14.11385 -1.7917622 128.0 +-8.051878 14.183329 -1.79433 128.0 +-7.9884801 14.27496 -1.7998005 128.0 +-7.8964205 14.315876 -1.7987957 128.0 +-7.7875471 14.325643 -1.7938834 128.0 +-7.7117009 14.395931 -1.7967862 128.0 +-7.6501298 14.493951 -1.8032614 128.0 +-7.5853519 14.587346 -1.8091785 128.0 +-7.5124664 14.66634 -1.8133093 128.0 +-7.4268107 14.721031 -1.8144257 128.0 +-7.3367863 14.767214 -1.8145373 128.0 +-7.2486587 14.817309 -1.8152071 128.0 +-7.1606236 14.867775 -1.8159887 128.0 +-7.0730934 14.919514 -1.8169935 128.0 +-6.9885592 14.977942 -1.8188914 128.0 +-6.897769 15.02325 -1.8192263 128.0 +-6.7837744 15.017293 -1.8133093 128.0 +-6.6571999 14.981444 -1.8038197 128.0 +-6.5659461 15.023831 -1.8040429 128.0 +-6.4752073 15.067489 -1.8044895 128.0 +-6.3865008 15.11609 -1.8056059 128.0 +-6.2951546 15.158663 -1.8060524 128.0 +-6.1648483 15.105917 -1.795 128.0 +-6.05688 15.105643 -1.7904226 128.0 +-5.9575238 15.12588 -1.788413 128.0 +-5.8635254 15.159369 -1.7880781 128.0 +-5.7739272 15.204352 -1.7891945 128.0 +-5.6867747 15.256255 -1.7912041 128.0 +-5.961421 16.297855 -1.9116662 128.0 +-5.8478808 16.296713 -1.9072005 128.0 +-5.7444768 16.322914 -1.9060841 128.0 +-5.6419439 16.35128 -1.9053025 128.0 +-5.5424633 16.388414 -1.9056375 128.0 +-5.4436774 16.427773 -1.9063073 128.0 +-5.3363328 16.441017 -1.9039629 128.0 +-5.2272248 16.44788 -1.9009485 128.0 +-5.1173487 16.451176 -1.8975992 128.0 +-5.0128374 16.470858 -1.8962595 128.0 +-4.9091282 16.492735 -1.8952547 128.0 +-4.8053389 16.513958 -1.89425 128.0 +-4.7009311 16.532618 -1.8930219 128.0 +-4.5967407 16.551577 -1.8919055 128.0 +-4.493535 16.573715 -1.8912356 128.0 +-4.392519 16.603857 -1.8915706 128.0 +-4.294529 16.645891 -1.8933568 128.0 +-3.635113 14.456291 -1.636691 128.0 +-3.5451603 14.473497 -1.6361328 128.0 +-3.4788768 14.589708 -1.6470737 128.0 +-3.8847251 16.746271 -1.8933568 128.0 +-3.7829919 16.774639 -1.8939151 128.0 +-3.0842521 14.078546 -1.5812048 128.0 +-3.5768564 16.819799 -1.8939151 128.0 +-3.4707742 16.827805 -1.8923521 128.0 +-3.36765 16.849758 -1.8924637 128.0 +-3.2626882 16.862299 -1.8915706 128.0 +-3.1602585 16.887863 -1.8922404 128.0 +-3.0576379 16.912804 -1.8929102 128.0 +-2.9553425 16.940056 -1.8939151 128.0 +-2.852828 16.96669 -1.8949199 128.0 +-2.7542262 17.018211 -1.8988273 128.0 +-2.6448641 17.003368 -1.8952547 128.0 +-2.5397499 17.014362 -1.8946966 128.0 +-2.4334748 17.016836 -1.8932452 128.0 +-2.3294196 17.034401 -1.8935801 128.0 +-2.2207389 17.016842 -1.8900076 128.0 +-2.1202059 17.061705 -1.8935801 128.0 +-2.0133801 17.056629 -1.8915706 128.0 +-1.910452 17.084463 -1.8933568 128.0 +-1.8077801 17.116617 -1.8957013 128.0 +-1.7005571 17.105631 -1.8932452 128.0 +-1.5972277 17.133554 -1.8952547 128.0 +-1.4899995 17.119272 -1.8925754 128.0 +-1.3842888 17.120169 -1.8916821 128.0 +-1.2796595 17.134285 -1.8923521 128.0 +-1.1742296 17.13785 -1.8919055 128.0 +-1.0681854 17.130846 -1.8903425 128.0 +-0.96310824 17.138069 -1.8904542 128.0 +-0.85842985 17.153582 -1.8915706 128.0 +-0.75289965 17.152569 -1.8909007 128.0 +-0.64790183 17.163818 -1.8916821 128.0 +-0.54260588 17.168463 -1.8917938 128.0 +-0.43737856 17.176437 -1.8923521 128.0 +-0.33205459 17.182772 -1.8927987 128.0 +-0.22668245 17.189453 -1.8933568 128.0 +-0.12121272 17.191515 -1.8934685 128.0 +-0.015730878 17.197897 -1.8941383 128.0 +0.089819558 17.202639 -1.8946966 128.0 +0.19537127 17.201763 -1.8946966 128.0 +0.300933 17.201235 -1.8948082 128.0 +0.40635484 17.194098 -1.89425 128.0 +0.51167089 17.18532 -1.8935801 128.0 +0.61703712 17.179871 -1.8933568 128.0 +0.72264791 17.180725 -1.8939151 128.0 +0.82829237 17.180931 -1.8944733 128.0 +0.93418229 17.184456 -1.895478 128.0 +1.0397265 17.180384 -1.8957013 128.0 +1.1455865 17.180622 -1.8964828 128.0 +1.2506945 17.169306 -1.8960363 128.0 +1.3559415 17.160316 -1.8959246 128.0 +1.4612942 17.152664 -1.8960363 128.0 +1.566875 17.147333 -1.8964828 128.0 +1.6720595 17.137396 -1.8964828 128.0 +1.7767711 17.12286 -1.8960363 128.0 +1.8818015 17.111637 -1.8960363 128.0 +1.9873344 17.104704 -1.8965945 128.0 +2.0924909 17.09416 -1.8968178 128.0 +2.1970859 17.079027 -1.8965945 128.0 +2.3010426 17.059317 -1.8959246 128.0 +2.4042845 17.035036 -1.8948082 128.0 +2.5076053 17.012098 -1.8939151 128.0 +2.6129987 17.003267 -1.8946966 128.0 +2.7193198 16.99967 -1.8961478 128.0 +2.826184 16.99835 -1.8979342 128.0 +2.9326274 16.99342 -1.8993856 128.0 +3.0371919 16.97706 -1.8996089 128.0 +2.5914898 13.989586 -1.5604392 128.0 +3.2460458 16.942415 -1.9000554 128.0 +3.3480117 16.912432 -1.898939 128.0 +3.4521194 16.893517 -1.8991623 128.0 +3.051851 14.480901 -1.6246337 128.0 +3.1387489 14.453162 -1.6236289 128.0 +3.2379968 14.481152 -1.6290994 128.0 +3.4446352 14.973325 -1.6881582 128.0 +3.5373597 14.955775 -1.6886047 128.0 +3.6734061 15.116297 -1.7097051 128.0 +4.1721487 16.721031 -1.8981575 128.0 +3.4334719 13.409425 -1.517122 128.0 +3.5068529 13.354465 -1.5132146 128.0 +4.4748311 16.62509 -1.8962595 128.0 +4.581511 16.614563 -1.8982691 128.0 +4.6841798 16.589008 -1.898604 128.0 +4.782845 16.549452 -1.8973759 128.0 +4.8831739 16.515982 -1.8969294 128.0 +4.9881606 16.498075 -1.8983808 128.0 +4.5382748 14.684098 -1.6887164 128.0 +4.6585116 14.751686 -1.6999923 128.0 +4.6839652 14.521374 -1.6762124 128.0 +4.7450037 14.407411 -1.6661646 128.0 +4.8326831 14.376142 -1.6659414 128.0 +4.9385343 14.397918 -1.6720817 128.0 +5.0349894 14.390795 -1.6748728 128.0 +5.413693 15.173924 -1.7720016 128.0 +5.5134892 15.1591 -1.7742344 128.0 +5.6043277 15.119393 -1.7735646 128.0 +5.6752262 15.027081 -1.7666427 128.0 +5.7501984 14.947456 -1.7612839 128.0 +5.8276701 14.875806 -1.7569299 128.0 +5.8776064 14.736387 -1.7444259 128.0 +5.9279213 14.601522 -1.7324802 128.0 +5.9760451 14.464763 -1.7203112 128.0 +6.0211749 14.324301 -1.7076956 128.0 +6.0644174 14.18292 -1.6949683 128.0 +6.1461763 14.133595 -1.693517 128.0 +6.2183161 14.062898 -1.6894978 128.0 +6.3224139 14.06436 -1.6944101 128.0 +6.4205685 14.051514 -1.6976478 128.0 +6.5254993 14.052412 -1.7026716 128.0 +6.6306825 14.052551 -1.7076956 128.0 +6.7322459 14.043862 -1.7117147 128.0 +6.8274264 14.021052 -1.7140592 128.0 +6.9243422 14.001165 -1.7168503 128.0 +7.0649757 14.067646 -1.7305822 128.0 +7.1547713 14.031114 -1.7314754 128.0 +7.2558055 14.016072 -1.7351596 128.0 +7.3527637 13.9924 -1.737839 128.0 +7.446898 13.962804 -1.7398486 128.0 +7.5556092 13.959672 -1.745319 128.0 +7.6569076 13.941793 -1.7490033 128.0 +7.7573028 13.92146 -1.7524642 128.0 +8.2391605 14.575201 -1.8430061 128.0 +8.7733116 15.300254 -1.9434843 128.0 +8.8685255 15.248711 -1.9438192 128.0 +8.9679813 15.204279 -1.945159 128.0 +9.0667152 15.158347 -1.9463869 128.0 +9.1631613 15.108377 -1.9471685 128.0 +9.2582951 15.056102 -1.9477267 128.0 +9.3526058 15.002383 -1.9481733 128.0 +9.4471369 14.948915 -1.9487314 128.0 +9.5483322 14.905729 -1.9507411 128.0 +9.6482706 14.860197 -1.9525273 128.0 +9.7540178 14.823132 -1.9555416 128.0 +9.8613262 14.787807 -1.9588909 128.0 +9.9607792 14.740194 -1.9606771 128.0 +10.058334 14.689458 -1.9621285 128.0 +10.1766 14.66829 -1.9677106 128.0 +10.281269 14.626709 -1.9706134 128.0 +10.384658 14.582777 -1.9732928 128.0 +10.490219 14.541349 -1.9764187 128.0 +10.59449 14.49757 -1.9793215 128.0 +10.695662 14.449064 -1.981666 128.0 +10.812732 14.421329 -1.9870248 128.0 +10.929863 14.392701 -1.9923836 128.0 +11.037961 14.35136 -1.9960679 128.0 +11.147796 14.311586 -2.000087 128.0 +11.258787 14.272564 -2.0043294 128.0 +11.358554 14.218741 -2.0065622 128.0 +11.445585 14.148779 -2.0065622 128.0 +11.488105 14.02447 -1.9987472 128.0 +11.488296 13.850456 -1.9836755 128.0 +11.481035 13.670123 -1.967599 128.0 +11.485516 13.506303 -1.953867 128.0 +11.502038 13.35876 -1.9424795 128.0 +11.54461 13.242988 -1.9357809 128.0 +11.576989 13.116767 -1.9275194 128.0 +11.655268 13.043262 -1.9271845 128.0 +11.770413 13.010559 -1.9331015 128.0 +11.899691 12.992323 -1.9413631 128.0 +12.052834 12.998492 -1.9535321 128.0 +12.189494 12.985155 -1.9629101 128.0 +12.34561 12.990797 -1.975414 128.0 +12.495361 12.987848 -1.9868015 128.0 +12.658019 12.996363 -2.0001986 128.0 +12.8359 13.018228 -2.0159402 128.0 +12.990654 13.014481 -2.0278859 128.0 +13.135247 12.998837 -2.038157 128.0 +13.282267 12.98399 -2.048763 128.0 +13.457476 12.994748 -2.0637231 128.0 +13.517542 12.893411 -2.0607088 128.0 +13.644135 12.855203 -2.0680771 128.0 +13.724939 12.773273 -2.0684121 128.0 +13.79574 12.682093 -2.0672956 128.0 +13.819591 12.548437 -2.0591457 128.0 +13.864516 12.434874 -2.0543451 128.0 +13.915263 12.327164 -2.0505493 128.0 +13.954742 12.210138 -2.0451906 128.0 +14.006091 12.10414 -2.0417295 128.0 +14.052887 11.994746 -2.0377104 128.0 +14.104187 11.889719 -2.0344727 128.0 +14.15702 11.786421 -2.0315702 128.0 +14.199138 11.674719 -2.027216 128.0 +14.242733 11.564823 -2.0231969 128.0 +14.297145 11.464158 -2.0208523 128.0 +14.350858 11.363262 -2.018508 128.0 +14.399175 11.258466 -2.0154936 128.0 +14.454612 11.159577 -2.0135956 128.0 +14.503057 11.055614 -2.0108047 128.0 +14.544418 10.946696 -2.0071204 128.0 +14.586585 10.838873 -2.0036595 128.0 +14.631183 10.733295 -2.0006452 128.0 +14.658134 10.61534 -1.9952863 128.0 +14.722183 10.524621 -1.9951746 128.0 +14.762938 10.417474 -1.991937 128.0 +14.800487 10.308518 -1.9883645 128.0 +14.843806 10.204 -1.9856851 128.0 +14.878178 10.093758 -1.9818892 128.0 +14.909279 9.9818201 -1.9777585 128.0 +14.949517 9.8764563 -1.9749674 128.0 +14.99402 9.774231 -1.9728462 128.0 +15.049532 9.6793566 -1.972288 128.0 +15.096054 9.578846 -1.9706134 128.0 +15.141067 9.477602 -1.9688271 128.0 +15.181179 9.3735552 -1.9664826 128.0 +15.219736 9.268857 -1.9640265 128.0 +15.250766 9.1599455 -1.9606771 128.0 +15.279323 9.0499897 -1.9571047 128.0 +15.313112 8.9435368 -1.9543135 128.0 +15.338421 8.8325481 -1.9505178 128.0 +15.373316 8.7274733 -1.9480616 128.0 +15.4101 8.6237583 -1.9459404 128.0 +15.450542 8.5223217 -1.9443774 128.0 +15.472859 8.4112215 -1.9405816 128.0 +15.510163 8.3086147 -1.9387953 128.0 +15.529214 8.1965895 -1.9347762 128.0 +15.572162 8.0974817 -1.9338831 128.0 +15.612709 7.9972501 -1.9327666 128.0 +15.648177 7.894587 -1.9310919 128.0 +15.680304 7.7904639 -1.9290824 128.0 +15.678714 7.6700854 -1.922942 128.0 +15.679821 7.5517459 -1.9172482 128.0 +15.686353 7.4366622 -1.912336 128.0 +15.696568 7.3238845 -1.907982 128.0 +15.713215 7.2145796 -1.9045211 128.0 +15.749036 7.114347 -1.9035163 128.0 +15.766965 7.006279 -1.9003903 128.0 +15.795089 6.9030352 -1.898604 128.0 +15.812496 6.7953939 -1.8955897 128.0 +15.832841 6.6893468 -1.8930219 128.0 +15.842384 6.579113 -1.8892261 128.0 +15.869574 6.4765248 -1.8876631 128.0 +15.889645 6.3712621 -1.8853186 128.0 +15.899776 6.2623549 -1.8818576 128.0 +15.900829 6.1503372 -1.8773919 128.0 +15.903894 6.0396018 -1.8732612 128.0 +15.911787 5.9311428 -1.8698003 128.0 +15.917083 5.8221321 -1.866116 128.0 +15.938478 5.7193222 -1.8644415 128.0 +15.959209 5.6164694 -1.8627669 128.0 +15.953917 5.5048251 -1.8580779 128.0 +15.996807 5.4100142 -1.8591943 128.0 +16.011778 5.3058181 -1.8570731 128.0 +16.044033 5.2074718 -1.8570731 128.0 +16.080418 5.1104345 -1.8576313 128.0 +16.115269 5.0128512 -1.8580779 128.0 +16.145723 4.9138756 -1.8580779 128.0 +16.177475 4.8152819 -1.8583012 128.0 +16.2258 4.7214818 -1.860534 128.0 +16.256376 4.6223769 -1.8607572 128.0 +16.287306 4.5233402 -1.8610922 128.0 +16.311876 4.4225378 -1.8607572 128.0 +16.344469 4.3238921 -1.8614271 128.0 +16.367805 4.2227778 -1.8610922 128.0 +16.387627 4.1208134 -1.8604224 128.0 +16.37689 4.0114346 -1.8562915 128.0 +16.46306 3.9256256 -1.8634367 128.0 +16.478125 3.822515 -1.8624319 128.0 +16.507086 3.722647 -1.8631017 128.0 +16.563591 3.6287355 -1.8670093 128.0 +16.598181 3.5297225 -1.8684605 128.0 +16.611742 3.4262054 -1.8675674 128.0 +16.626604 3.3230443 -1.8668976 128.0 +16.620338 3.2158651 -1.8638833 128.0 +16.670038 3.1194913 -1.8673441 128.0 +16.695711 3.0183849 -1.8681257 128.0 +16.722727 2.9174225 -1.8691305 128.0 +16.789312 2.822999 -1.8747126 128.0 +16.804358 2.7196109 -1.8744893 128.0 +16.857059 2.6221023 -1.87862 128.0 +16.880693 2.519794 -1.8795131 128.0 +16.906658 2.4177163 -1.8807412 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +16.978867 2.10991 -1.8842021 128.0 +17.006296 2.0074377 -1.8858768 128.0 +17.035084 1.904929 -1.8877747 128.0 +17.051392 1.8008898 -1.888333 128.0 +17.064098 1.6964272 -1.8885562 128.0 +17.074186 1.591692 -1.8885562 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.130133 0.96266204 -1.8895611 128.0 +17.147627 0.85813171 -1.8909007 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +17.236425 -0.089995176 -1.8984923 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.245449 -0.83140129 -1.9017301 128.0 +17.240025 -0.93720174 -1.9017301 128.0 +17.213118 -1.0417068 -1.8993856 128.0 +17.235157 -1.1492215 -1.9026232 128.0 +17.203003 -1.2531484 -1.8998321 128.0 +17.216785 -1.3604021 -1.9022882 128.0 +17.178408 -1.4634868 -1.898939 128.0 +0 -0 -0 128.0 +0 -0 -0 128.0 +17.11001 -1.775438 -1.8945849 128.0 +17.100771 -1.8806068 -1.8948082 128.0 +17.03363 -1.9790785 -1.8885562 128.0 +16.281376 -1.9930176 -1.8048245 128.0 +15.707031 -2.0206215 -1.7411883 128.0 +15.233436 -2.0548024 -1.6889397 128.0 +15.019805 -2.1199079 -1.6661646 128.0 +14.106952 -2.0794525 -1.5640118 128.0 +13.535043 -2.0800982 -1.5004873 128.0 +12.894989 -2.0628209 -1.4291478 128.0 +12.304695 -2.0459192 -1.3633904 128.0 +11.857111 -2.0463562 -1.3138213 128.0 +11.973456 -2.142169 -1.3285581 128.0 +11.009339 -2.0395038 -1.2199301 128.0 +10.516426 -2.0150275 -1.165002 128.0 +10.14025 -2.0075445 -1.1233593 128.0 +9.8444147 -2.0118363 -1.0908715 128.0 +9.5566969 -2.0142148 -1.0592767 128.0 +9.2936096 -2.0184119 -1.0304729 128.0 +9.2471066 -2.0678096 -1.0265654 128.0 +9.0734806 -2.0875301 -1.0080328 128.0 +8.9637938 -2.1202941 -0.99686855 128.0 +9.0066233 -2.188864 -1.0033438 128.0 +8.928422 -2.2279689 -0.9958638 128.0 +8.8520079 -2.2666905 -0.98860705 128.0 +9.0253611 -2.3701749 -1.0103773 128.0 +8.9876175 -2.4193106 -1.0076978 128.0 +8.9429054 -2.4662235 -1.0042369 128.0 +8.6014862 -2.4289727 -0.96616691 128.0 +7.9286418 -2.2916214 -0.88924533 128.0 +7.9363499 -2.3467073 -0.8918131 128.0 +7.9132404 -2.3927715 -0.89080828 128.0 +7.8898644 -2.4386406 -0.88980353 128.0 +7.9012866 -2.4953845 -0.89292949 128.0 +7.9028502 -2.5493095 -0.89493906 128.0 +7.9002733 -2.6021042 -0.89650208 128.0 +8.3617315 -2.8110573 -0.95310473 128.0 +8.347146 -2.8632782 -0.95343965 128.0 +8.2843962 -2.89869 -0.94808084 128.0 +8.3347797 -2.9738426 -0.95623076 128.0 +8.2920942 -3.0160971 -0.95332801 128.0 +8.1988878 -3.0392904 -0.94439662 128.0 +8.2507391 -3.1162224 -0.95288146 128.0 +8.3557472 -3.2145972 -0.96784157 128.0 +7.1626 -2.8062079 -0.82627898 128.0 +7.1387849 -2.8475273 -0.82549751 128.0 +8.1515217 -3.3095438 -0.95042533 128.0 +8.1025887 -3.3477361 -0.94696444 128.0 +8.1102943 -3.4093263 -0.95042533 128.0 +8.1020145 -3.4644954 -0.95198834 128.0 +8.0596437 -3.505029 -0.94942057 128.0 +8.0089025 -3.5415566 -0.94584799 128.0 +7.987927 -3.5910392 -0.94595963 128.0 +7.9666467 -3.6403975 -0.94607127 128.0 +7.9522715 -3.6929781 -0.94707608 128.0 +7.9033985 -3.7294056 -0.94383842 128.0 +7.7504296 -3.7155457 -0.92765027 128.0 +5.3821402 -2.6210613 -0.63458908 128.0 +5.3659563 -2.6540363 -0.63458908 128.0 +5.3389139 -2.6815596 -0.63324934 128.0 +7.7100296 -3.9317162 -0.93434882 128.0 +7.6557541 -3.9634178 -0.93055302 128.0 +7.7430129 -4.0690222 -0.94473159 128.0 +7.6310921 -4.0701609 -0.93367898 128.0 +7.6243277 -4.1268406 -0.93602347 128.0 +7.5143714 -4.1271448 -0.92519414 128.0 +7.5184212 -4.1896195 -0.92899001 128.0 +7.5462093 -4.2659912 -0.93591183 128.0 +7.4819598 -4.2904644 -0.93099958 128.0 +7.2235522 -4.2014041 -0.90085614 128.0 +7.3859477 -4.3567142 -0.92541742 128.0 +6.9625034 -4.1647601 -0.87350374 128.0 +7.4687295 -4.5299883 -0.94339186 128.0 +7.4323282 -4.5705252 -0.94227546 128.0 +7.2219887 -4.5024915 -0.91816068 128.0 +7.4344864 -4.6985474 -0.95009041 128.0 +7.3251839 -4.6926193 -0.93937272 128.0 +7.2620797 -4.715291 -0.93479538 128.0 +7.2371612 -4.7624927 -0.93535364 128.0 +7.1358724 -4.7588444 -0.9256407 128.0 +7.1402969 -4.8253517 -0.93021804 128.0 +11.767116 -8.0574121 -1.5642351 128.0 +11.715005 -8.1277628 -1.5639002 128.0 +6.8055525 -4.7839584 -0.89661372 128.0 +11.597383 -8.2588062 -1.5615557 128.0 +11.531178 -8.3187647 -1.5594345 128.0 +11.459859 -8.3747044 -1.5566435 128.0 +11.385892 -8.4283094 -1.5535175 128.0 +11.315675 -8.4843025 -1.5509497 128.0 +5.4915347 -4.1706018 -0.73674184 128.0 +5.4674168 -4.2054305 -0.73696512 128.0 +11.111335 -8.6551208 -1.5443628 128.0 +11.053337 -8.7194433 -1.5436929 128.0 +10.994192 -8.7827597 -1.5429114 128.0 +10.940095 -8.8500538 -1.5429114 128.0 +10.904806 -8.9327564 -1.5457025 128.0 +10.823784 -8.9779291 -1.5419066 128.0 +2.8763311 -2.4161401 -0.38406357 128.0 +2.8220851 -2.4002686 -0.37825817 128.0 +2.8005266 -2.4117038 -0.37725338 128.0 +10.51255 -9.1644535 -1.5288445 128.0 +10.50306 -9.2702122 -1.5358779 128.0 +10.4445 -9.3331594 -1.5356547 128.0 +10.392195 -9.4017363 -1.5364362 128.0 +3.606837 -3.3039026 -0.51155913 128.0 +3.4822915 -3.2293518 -0.49559429 128.0 +3.4747283 -3.2622201 -0.49749222 128.0 +3.5209196 -3.3464582 -0.50776333 128.0 +3.4953067 -3.3631763 -0.50698179 128.0 +3.4767406 -3.3866398 -0.50731677 128.0 +3.4898617 -3.4413986 -0.51267558 128.0 +9.9000683 -9.8820801 -1.5335335 128.0 +8.0420551 -8.126667 -1.246501 128.0 +3.5141497 -3.5952992 -0.52685416 128.0 +3.4706237 -3.5946336 -0.52339327 128.0 +9.6291895 -10.095458 -1.5294027 128.0 +3.118222 -3.310034 -0.47293088 128.0 +2.8920364 -3.1079633 -0.43899161 128.0 +9.4020529 -10.227826 -1.5228158 128.0 +7.6315808 -8.4048929 -1.2374579 128.0 +7.4843183 -8.3450327 -1.2213814 128.0 +7.5390677 -8.5105562 -1.2393558 128.0 +2.5728447 -2.9409394 -0.40103319 128.0 +2.5885403 -2.9957678 -0.4068386 128.0 +2.5643034 -3.004792 -0.40583381 128.0 +8.9016943 -10.559798 -1.5136611 128.0 +8.8278313 -10.603528 -1.5120981 128.0 +7.3538814 -8.9442425 -1.2629124 128.0 +8.6939125 -10.707203 -1.5115399 128.0 +8.6292944 -10.761897 -1.5117632 128.0 +8.5612478 -10.812305 -1.5114282 128.0 +8.4867859 -10.854456 -1.5099769 128.0 +8.3884439 -10.865423 -1.5041715 128.0 +8.3023386 -10.891399 -1.5005989 128.0 +8.2126446 -10.911965 -1.4963566 128.0 +8.1052303 -10.907913 -1.4887649 128.0 +7.9787784 -10.876514 -1.477489 128.0 +7.9107256 -10.923656 -1.4772657 128.0 +7.794425 -10.903275 -1.4677761 128.0 +7.7090421 -10.924914 -1.4642036 128.0 +7.6282315 -10.95244 -1.4615241 128.0 +7.544559 -10.975291 -1.4582865 128.0 +7.49437 -11.04687 -1.4617474 128.0 +7.4082017 -11.065396 -1.4580632 128.0 +7.3341403 -11.101523 -1.4568352 128.0 +7.2116151 -11.063068 -1.445671 128.0 +7.1161809 -11.064485 -1.4399772 128.0 +7.0220671 -11.066826 -1.4345067 128.0 +6.9245024 -11.062534 -1.4282547 128.0 +6.8356094 -11.070992 -1.423789 128.0 +6.7375698 -11.063499 -1.4173137 128.0 +6.6557431 -11.081632 -1.4142994 128.0 +6.5926867 -11.130812 -1.4154159 128.0 +6.5022125 -11.133298 -1.4105035 128.0 +6.4179082 -11.145428 -1.406931 128.0 +6.2816935 -11.06534 -1.3915243 128.0 +6.1966934 -11.073324 -1.3876169 128.0 +6.1166325 -11.089384 -1.3848258 128.0 +6.0052824 -11.047256 -1.3746663 128.0 +1.3418064 -2.5055413 -0.28135258 128.0 +5.8882828 -11.156151 -1.3792437 128.0 +5.7784553 -11.112721 -1.3691959 128.0 +5.6770859 -11.083403 -1.361046 128.0 +1.1384612 -2.2573545 -0.24607359 128.0 +1.1303372 -2.275867 -0.24752493 128.0 +1.1298896 -2.3104317 -0.25098586 128.0 +5.3787961 -11.168355 -1.3546823 128.0 +1.0946404 -2.3097563 -0.24919957 128.0 +1.0821282 -2.3200314 -0.24964614 128.0 +1.0811419 -2.3555267 -0.25321871 128.0 +5.0249481 -11.124019 -1.3333586 128.0 +4.953773 -11.148285 -1.3325772 128.0 +4.8912449 -11.19213 -1.3342518 128.0 +4.82758 -11.2338 -1.3357031 128.0 +4.7376738 -11.213779 -1.3296745 128.0 +4.653151 -11.20501 -1.3250972 128.0 +4.5873151 -11.240711 -1.3259903 128.0 +4.5245447 -11.284327 -1.3278883 128.0 +4.4421091 -11.27859 -1.3238691 128.0 +4.3835769 -11.333439 -1.3272183 128.0 +4.318893 -11.373129 -1.3287814 128.0 +1.1739427 -3.1503222 -0.33974153 128.0 +4.170126 -11.401008 -1.3258786 128.0 +4.0658545 -11.330976 -1.3144912 128.0 +4.0120883 -11.400703 -1.31985 128.0 +1.1555973 -3.3500922 -0.36017209 128.0 +1.1340646 -3.3542957 -0.35983717 128.0 +3.7809269 -11.410364 -1.3124815 128.0 +1.0756353 -3.3150287 -0.35358518 128.0 +1.0606925 -3.3386135 -0.35559475 128.0 +1.0171624 -3.2710452 -0.34688666 128.0 +0.99273217 -3.2629645 -0.34521201 128.0 +0.97099113 -3.2632797 -0.34454215 128.0 +0.95094973 -3.269176 -0.34454215 128.0 +0.92924166 -3.2692144 -0.34387231 128.0 +0.91155815 -3.2834721 -0.34487709 128.0 +0.89607513 -3.3062675 -0.34688666 128.0 +3.0395522 -11.490086 -1.2972982 128.0 +2.9610484 -11.477729 -1.2937256 128.0 +2.8939598 -11.509173 -1.2952887 128.0 +2.8171387 -11.501618 -1.2923859 128.0 +1.9463761 -8.1634741 -0.90487522 128.0 +0.73716605 -3.179219 -0.32868895 128.0 +1.9883865 -8.8178225 -0.97755444 128.0 +2.5244553 -11.523608 -1.287362 128.0 +2.4419167 -11.483477 -1.2809983 128.0 +1.7293773 -8.3857641 -0.92396611 128.0 +1.6771115 -8.3923197 -0.92351949 128.0 +1.6287953 -8.4190388 -0.92541742 128.0 +2.1575346 -11.530177 -1.279882 128.0 +2.0816185 -11.51484 -1.2766443 128.0 +2.0146835 -11.548933 -1.2791005 128.0 +1.3760411 -8.1850185 -0.89449251 128.0 +1.8742375 -11.581615 -1.2801052 128.0 +1.3451548 -8.6490517 -0.94540143 128.0 +1.7199399 -11.523149 -1.2709506 128.0 +1.6563786 -11.583656 -1.2766443 128.0 +1.577865 -11.539449 -1.270504 128.0 +1.5038151 -11.524279 -1.267713 128.0 +1.4341782 -11.542165 -1.2687178 128.0 +1.3625143 -11.543839 -1.2679362 128.0 +1.2957439 -11.588523 -1.2720671 128.0 +1.2247181 -11.597243 -1.2721786 128.0 +1.1556007 -11.625306 -1.2745231 128.0 +1.0857236 -11.648009 -1.2763094 128.0 +1.0121638 -11.630692 -1.27363 128.0 +0.94198185 -11.651541 -1.2753047 128.0 +0.86950916 -11.644218 -1.2738533 128.0 +0.79906446 -11.664206 -1.275528 128.0 +0.72797418 -11.676824 -1.2764211 128.0 +0.65648013 -11.684048 -1.276756 128.0 +0.58268875 -11.646171 -1.2720671 128.0 +0.51130545 -11.651512 -1.2722903 128.0 +0.44152886 -11.700109 -1.2774259 128.0 +0.36809647 -11.650949 -1.2716204 128.0 +0.29799324 -11.707627 -1.2777607 128.0 +0.22622786 -11.71321 -1.2782073 128.0 +0.15453649 -11.728289 -1.2797704 128.0 +0.08264748 -11.739947 -1.2809983 128.0 +0.010579268 -11.706446 -1.2772026 128.0 +-0.06142595 -11.740077 -1.2809983 128.0 +-0.13339297 -11.733517 -1.2803285 128.0 +-0.20602828 -11.769241 -1.2844594 128.0 +-0.27948228 -11.820409 -1.2903764 128.0 +-0.35268536 -11.841318 -1.2929442 128.0 +-0.42398113 -11.801193 -1.2887018 128.0 +-0.49751085 -11.825176 -1.2917161 128.0 +-0.57182914 -11.858627 -1.2958468 128.0 +-0.64668435 -11.893595 -1.3002009 128.0 +-0.71922988 -11.88246 -1.2994194 128.0 +-0.78928375 -11.835186 -1.2946187 128.0 +-0.85741341 -11.76867 -1.287697 128.0 +-0.92976499 -11.765169 -1.2879202 128.0 +-1.0016842 -11.756272 -1.2875853 128.0 +-1.0741621 -11.753863 -1.2880319 128.0 +-1.1451045 -11.735183 -1.2866921 128.0 +-1.2106284 -11.665664 -1.2796587 128.0 +-1.2779492 -11.619492 -1.2753047 128.0 +-1.3598849 -11.703233 -1.2856874 128.0 +-1.4794741 -12.085279 -1.3298978 128.0 +-1.5516986 -12.061189 -1.3282231 128.0 +-1.6340429 -12.113484 -1.3352566 128.0 +-1.7072282 -12.095359 -1.3343635 128.0 +-1.7856135 -12.113166 -1.3376011 128.0 +-1.8650362 -12.135377 -1.3413969 128.0 +-1.9391485 -12.121742 -1.3411736 128.0 +-2.0089266 -12.082168 -1.3380476 128.0 +-2.0803201 -12.053946 -1.3362614 128.0 +-2.1691158 -12.124103 -1.3457509 128.0 +-2.24401 -12.113497 -1.3460859 128.0 +-2.3130596 -12.072171 -1.3429599 128.0 +-2.376477 -12.004135 -1.3368196 128.0 +-2.4759495 -12.1159 -1.3513331 128.0 +-2.5516791 -12.107286 -1.3521146 128.0 +-2.6273961 -12.0982 -1.3528961 128.0 +-2.7004957 -12.077002 -1.3523378 128.0 +-2.7736568 -12.056331 -1.3518913 128.0 +-2.8484957 -12.042953 -1.3523378 128.0 +-2.9263251 -12.041664 -1.3542358 128.0 +-3.0037646 -12.037945 -1.3559104 128.0 +-3.0829937 -12.040467 -1.3583666 128.0 +-3.1502531 -11.996333 -1.3554639 128.0 +-3.2124381 -11.934555 -1.3505516 128.0 +-3.2850785 -11.912704 -1.3503283 128.0 +-3.3710725 -11.938228 -1.3556871 128.0 +-3.4478471 -11.929729 -1.3571385 128.0 +-3.5170374 -11.895007 -1.3555756 128.0 +-3.5727029 -11.81613 -1.348877 128.0 +-3.6433775 -11.788289 -1.3482071 128.0 +-3.7282083 -11.805511 -1.3528961 128.0 +-3.8021004 -11.787143 -1.3534544 128.0 +-3.8895845 -11.809842 -1.3589247 128.0 +-3.9660912 -11.797998 -1.3603761 128.0 +-4.0277686 -11.742421 -1.356692 128.0 +-4.091867 -11.694974 -1.3540125 128.0 +-4.1655526 -11.675262 -1.3546823 128.0 +-4.2262435 -11.619598 -1.3511099 128.0 +-4.2535992 -11.475109 -1.3369312 128.0 +-4.3091836 -11.409747 -1.3322423 128.0 +-4.3737597 -11.36918 -1.3305676 128.0 +-4.4532237 -11.367111 -1.3335819 128.0 +-4.5273051 -11.35065 -1.3349217 128.0 +-4.5916328 -11.309766 -1.3333586 128.0 +-4.7083707 -11.396187 -1.347314 128.0 +-4.8070869 -11.435791 -1.3556871 128.0 +-1.5412173 -3.603698 -0.4023729 128.0 +-1.5561674 -3.5777698 -0.40036336 128.0 +-5.0420852 -11.40263 -1.3627206 128.0 +-5.0838432 -11.308937 -1.3550173 128.0 +-5.1494207 -11.269395 -1.3540125 128.0 +-1.5459871 -3.3284941 -0.37435067 128.0 +-1.563413 -3.3126543 -0.37356919 128.0 +-1.5815619 -3.2985184 -0.37301096 128.0 +-1.6069919 -3.2994738 -0.37435067 128.0 +-1.6439462 -3.3234007 -0.37859309 128.0 +-1.6848217 -3.3541019 -0.38372862 128.0 +-1.712593 -3.3578658 -0.38551491 128.0 +-1.7381893 -3.357002 -0.38674298 128.0 +-1.7656884 -3.3594689 -0.3884176 128.0 +-1.7914124 -3.358217 -0.38964567 128.0 +-4.7739029 -8.8199062 -1.0887502 128.0 +-6.2285471 -11.34086 -1.4156392 128.0 +-1.8447 -3.3099165 -0.38774776 128.0 +-1.8581284 -3.2864239 -0.38618475 128.0 +-1.8743042 -3.268064 -0.38529164 128.0 +-1.892323 -3.2530658 -0.38484505 128.0 +-1.9178011 -3.250809 -0.38607311 128.0 +-6.727447 -11.247198 -1.4343951 128.0 +-6.8303423 -11.261788 -1.4417634 128.0 +-6.90452 -11.228131 -1.4428798 128.0 +-6.9816957 -11.199047 -1.4446661 128.0 +-7.1033669 -11.240005 -1.4558303 128.0 +-7.2204413 -11.27152 -1.4658781 128.0 +-7.3765888 -11.361196 -1.4838526 128.0 +-7.5111632 -11.414509 -1.497138 128.0 +-7.5953946 -11.389703 -1.5000408 128.0 +-7.6551223 -11.328063 -1.4980311 128.0 +-7.7166262 -11.269399 -1.4964682 128.0 +-7.7805305 -11.21449 -1.4954634 128.0 +-7.8743386 -11.202311 -1.5003756 128.0 +-7.9584899 -11.17564 -1.5033901 128.0 +-8.0402842 -11.145134 -1.5059578 128.0 +-8.103241 -11.088368 -1.504953 128.0 +-8.1498413 -11.009685 -1.5009339 128.0 +-8.2184343 -10.961061 -1.5011572 128.0 +-8.3065701 -10.938128 -1.5050646 128.0 +-8.3468723 -10.852294 -1.5001523 128.0 +-8.414525 -10.802442 -1.5003756 128.0 +-8.4781876 -10.747487 -1.4999291 128.0 +-8.5408716 -10.691381 -1.4993709 128.0 +-8.6150618 -10.64959 -1.5009339 128.0 +-8.6827631 -10.599605 -1.5013804 128.0 +-8.7495413 -10.548423 -1.5017154 128.0 +-8.8249645 -10.507475 -1.5036134 128.0 +-8.8950653 -10.459942 -1.504618 128.0 +-8.9545393 -10.399894 -1.5038366 128.0 +-9.0168781 -10.343256 -1.5036134 128.0 +-9.0999002 -10.310087 -1.5069625 128.0 +-9.1762333 -10.268878 -1.5091954 128.0 +-9.2544022 -10.22933 -1.5117632 128.0 +-9.3371296 -10.194339 -1.5151125 128.0 +-9.4022083 -10.13977 -1.5155591 128.0 +-9.4669676 -10.084786 -1.5160056 128.0 +-9.5430441 -10.041636 -1.5183501 128.0 +-9.6217031 -10.000795 -1.5211412 128.0 +-9.6849661 -9.9437056 -1.521476 128.0 +-9.7667274 -9.9053211 -1.5248253 128.0 +-9.8350439 -9.8529444 -1.5260534 128.0 +-9.90026 -9.7973051 -1.526835 128.0 +-9.9708471 -9.7467937 -1.5285095 128.0 +-10.046906 -9.7013073 -1.5310774 128.0 +-10.114873 -9.6477089 -1.5324171 128.0 +-10.177496 -9.588871 -1.5329752 128.0 +-10.244143 -9.5336905 -1.5342033 128.0 +-9.8795938 -9.0819187 -1.469674 128.0 +-9.899085 -8.9883928 -1.4642036 128.0 +-9.9192801 -8.8962984 -1.4589564 128.0 +-9.9535971 -8.8174753 -1.455942 128.0 +-9.9147778 -8.6750898 -1.4420984 128.0 +-9.9106779 -8.5647058 -1.4336135 128.0 +-9.9539738 -8.4959917 -1.4322739 128.0 +-10.002118 -8.4315529 -1.4317156 128.0 +-9.976531 -8.3058023 -1.4204397 128.0 +-9.9720402 -8.198988 -1.4124014 128.0 +-10.05919 -8.1677151 -1.4177604 128.0 +-10.177341 -8.1605473 -1.4275849 128.0 +-10.318373 -8.170125 -1.440647 128.0 +-10.350305 -8.0925808 -1.4380792 128.0 +-10.409204 -8.0362072 -1.4394189 128.0 +-10.527073 -8.024601 -1.4491318 128.0 +-10.676154 -8.0351553 -1.4631988 128.0 +-10.773113 -8.0050602 -1.4698973 128.0 +-11.591231 -8.5031128 -1.5770739 128.0 +-11.644796 -8.4329958 -1.5772973 128.0 +-11.715723 -8.3752565 -1.5799767 128.0 +-11.790439 -8.319829 -1.5832143 128.0 +-11.855128 -8.2569828 -1.5851122 128.0 +-11.922766 -8.1959076 -1.5874567 128.0 +-11.999969 -8.1410084 -1.591141 128.0 +-12.069512 -8.0804939 -1.5938203 128.0 +-12.138765 -8.0194321 -1.5964998 128.0 +-12.20689 -7.9572806 -1.5990676 128.0 +-12.274709 -7.8945951 -1.6016353 128.0 +-12.319562 -7.8170009 -1.6011888 128.0 +-12.384141 -7.7518077 -1.6034216 128.0 +-12.42978 -7.6746297 -1.6031983 128.0 +-12.486822 -7.6044207 -1.604538 128.0 +-12.565619 -7.5471039 -1.6087804 128.0 +-12.615965 -7.472393 -1.6093386 128.0 +-12.686462 -7.4093766 -1.6125762 128.0 +-12.794551 -7.3675971 -1.6207261 128.0 +-6.7132907 -3.8108923 -0.82929337 128.0 +-12.903945 -7.2211957 -1.6232939 128.0 +-12.94627 -7.1409225 -1.6230706 128.0 +-12.994207 -7.0637245 -1.6236289 128.0 +-13.045189 -6.9880838 -1.6246337 128.0 +-13.101004 -6.9148669 -1.6263083 128.0 +-13.164346 -6.8453541 -1.6289877 128.0 +-7.3757572 -3.7778227 -0.89304113 128.0 +-6.9418797 -3.5019639 -0.8355453 128.0 +-6.948998 -3.4522283 -0.83375907 128.0 +-6.9575524 -3.4034111 -0.83219606 128.0 +-6.9827809 -3.3628125 -0.83275425 128.0 +-7.0293236 -3.3322496 -0.83599192 128.0 +-6.6930261 -3.122654 -0.79178154 128.0 +-6.7138662 -3.0823567 -0.79200482 128.0 +-13.679688 -6.1794972 -1.6484134 128.0 +-13.731876 -6.1019011 -1.6501998 128.0 +-13.780896 -6.0227027 -1.6516511 128.0 +-13.833112 -5.9447021 -1.653549 128.0 +-7.3563228 -3.1077991 -0.85921353 128.0 +-7.4183874 -3.0805171 -0.86446071 128.0 +-14.032198 -5.726624 -1.6647133 128.0 +-14.064304 -5.6393065 -1.6643783 128.0 +-14.09217 -5.550354 -1.6635969 128.0 +-14.135229 -5.4673667 -1.6647133 128.0 +-14.188948 -5.3882937 -1.6671693 128.0 +-14.255264 -5.3136268 -1.6711885 128.0 +-14.33333 -5.2427864 -1.676659 128.0 +-14.357746 -5.1520548 -1.6757659 128.0 +-14.359093 -5.0533028 -1.6721933 128.0 +-14.370101 -4.9582949 -1.6698488 128.0 +-14.378603 -4.8627052 -1.667281 128.0 +-14.40817 -4.7743883 -1.667281 128.0 +-14.453261 -4.6911073 -1.669179 128.0 +-14.665504 -4.6607308 -1.6908376 128.0 +-14.755504 -4.5898442 -1.6980944 128.0 +-14.81286 -4.5081902 -1.7015553 128.0 +-14.882151 -4.4296904 -1.7064675 128.0 +-14.868021 -4.3263516 -1.7016668 128.0 +-14.818775 -4.2135687 -1.6928471 128.0 +-14.770622 -4.1020856 -1.6842507 128.0 +-14.773455 -4.0053959 -1.6816829 128.0 +-12.77069 -3.3783658 -1.4461175 128.0 +-12.781557 -3.2974598 -1.445001 128.0 +-12.821788 -3.2240613 -1.4473455 128.0 +-14.65013 -3.5884302 -1.6565634 128.0 +-14.653506 -3.494091 -1.6544422 128.0 +-12.299105 -2.8529816 -1.3804717 128.0 +-14.64875 -3.3035121 -1.6490834 128.0 +-14.660007 -3.2116528 -1.6480786 128.0 +-14.681382 -3.1220536 -1.6483018 128.0 +-13.384418 -2.7604833 -1.4973613 128.0 +-14.89107 -2.9761324 -1.6680626 128.0 +-14.942224 -2.8911257 -1.6718583 128.0 +-14.981172 -2.8034093 -1.6743145 128.0 +-15.026449 -2.7165616 -1.6775521 128.0 +-15.078077 -2.6304591 -1.6815712 128.0 +-15.251712 -2.5644252 -1.6995456 128.0 +-15.33779 -2.4822268 -1.7075839 128.0 +-15.521626 -2.4143443 -1.7267864 128.0 +-15.586273 -2.3265436 -1.7324802 128.0 +-15.648458 -2.2377586 -1.7379507 128.0 +-15.681586 -2.1443925 -1.7401835 128.0 +-15.558465 -2.0303824 -1.7247769 128.0 +-15.861547 -1.9710375 -1.7577114 128.0 +-16.361855 -1.9313519 -1.8129743 128.0 +-17.320498 -1.9368519 -1.9200394 128.0 +-17.513893 -1.849748 -1.9405816 128.0 +-17.520958 -1.7418567 -1.940135 128.0 +-17.565947 -1.6375465 -1.9440424 128.0 +-17.564774 -1.528785 -1.9428145 128.0 +-17.564909 -1.4202597 -1.9418097 128.0 +-17.683292 -1.3206745 -1.9542019 128.0 +-17.668261 -1.2105842 -1.9516342 128.0 +-17.700151 -1.1036977 -1.9544252 128.0 +-17.723457 -0.99601907 -1.9563231 128.0 +-17.648842 -0.88322616 -1.94728 128.0 +-17.662865 -0.7753107 -1.9482849 128.0 +-17.652393 -0.66635615 -1.9466102 128.0 +-17.652178 -0.5579049 -1.9461637 128.0 +-15.757541 1.1615255 -1.9354826 128.0 +-15.742205 1.2575573 -1.934491 128.0 +-15.732215 1.3539556 -1.9342432 128.0 +-15.719659 1.4500964 -1.9337474 128.0 +-15.701577 1.5456475 -1.9326319 128.0 +-15.678968 1.6406181 -1.9310205 128.0 +-15.65184 1.7349318 -1.9289134 128.0 +-15.631044 1.8297826 -1.9276739 128.0 +-15.580131 1.9207989 -1.922716 128.0 +-15.567067 2.0162332 -1.922592 128.0 +-15.595699 2.1173227 -1.9277979 128.0 +-15.583397 2.2131157 -1.9279218 128.0 +-15.568542 2.3085463 -1.9277979 128.0 +-15.552123 2.4037266 -1.92755 128.0 +-15.531203 2.4981613 -1.9268063 128.0 +-15.505795 2.5917754 -1.9255668 128.0 +-15.480802 2.6853414 -1.9244512 128.0 +-15.452314 2.7781713 -1.9229639 128.0 +-15.429123 2.8718426 -1.9222202 128.0 +-15.414135 2.9670229 -1.922592 128.0 +-15.391747 3.0607719 -1.9220963 128.0 +-15.363928 3.1533601 -1.9209807 128.0 +-15.33167 3.2449 -1.9193695 128.0 +-15.293051 3.3348942 -1.9170144 128.0 +-15.251 3.4238842 -1.9142876 128.0 +-15.211335 3.513154 -1.9119326 128.0 +-15.191423 3.6068816 -1.9121804 128.0 +-15.229739 3.7148452 -1.9199891 128.0 +-15.157568 3.7959256 -1.9136678 128.0 +-15.092667 3.878237 -1.9083381 128.0 +-15.083939 3.9748175 -1.9103212 128.0 +-15.023822 4.0577202 -1.9057351 128.0 +-15.036895 4.1604156 -1.910693 128.0 +-14.988171 4.246109 -1.9077183 128.0 +-14.936104 4.3305321 -1.9043717 128.0 +-14.948255 4.4336681 -1.9094536 128.0 +-14.940709 4.5313549 -1.9120564 128.0 +-14.893668 4.6170664 -1.9095775 128.0 +-14.860329 4.7068667 -1.9089578 128.0 +-14.818894 4.7939882 -1.9073465 128.0 +-14.778836 4.8814006 -1.9059831 128.0 +-14.747666 4.971673 -1.9058591 128.0 +-14.719698 5.0630379 -1.9062309 128.0 +-14.693036 5.1549039 -1.9068507 128.0 +-14.652721 5.2419529 -1.9057351 128.0 +-14.617485 5.3307414 -1.9053633 128.0 +-14.591942 5.4230981 -1.9063549 128.0 +-14.57695 5.5195599 -1.9088339 128.0 +-14.553918 5.613184 -1.9103212 128.0 +-14.544139 5.7121754 -1.9136678 128.0 +-14.505131 5.7998352 -1.913172 128.0 +-14.501437 5.9018221 -1.9175102 128.0 +-14.480536 5.9971457 -1.9196173 128.0 +-14.469984 6.0970597 -1.9232118 128.0 +-14.466045 6.2001967 -1.9277979 128.0 +-14.440463 6.294394 -1.9295331 128.0 +-14.439671 6.3997703 -1.934739 128.0 +-14.403749 6.4898806 -1.9352348 128.0 +-14.3817 6.5864029 -1.9377137 128.0 +-14.35271 6.6799674 -1.939325 128.0 +-14.322217 6.7729998 -1.9408123 128.0 +-14.288438 6.8646197 -1.9419279 128.0 +-14.257641 6.9578209 -1.9435393 128.0 +-14.260911 7.0680904 -1.9499846 128.0 +-14.235887 7.1648302 -1.9525875 128.0 +-14.204909 7.2588191 -1.9544467 128.0 +-14.171553 7.3517828 -1.956058 128.0 +-14.139346 7.4455357 -1.9579172 128.0 +-14.110022 7.5410409 -1.9602722 128.0 +-14.077441 7.6350465 -1.9622554 128.0 +-14.048583 7.7313285 -1.9648583 128.0 +-14.022539 7.8294787 -1.967957 128.0 +-14.015676 7.9388494 -1.9739065 128.0 +-13.991651 8.0390368 -1.9775009 128.0 +-13.970351 8.1412258 -1.9815912 128.0 +-13.925261 8.2298222 -1.982335 128.0 +-13.898332 8.3293953 -1.9858055 128.0 +-13.863921 8.4248247 -1.9882845 128.0 +-13.832241 8.5222273 -1.9912592 128.0 +-13.795679 8.6169291 -1.9936142 128.0 +-13.76099 8.7130947 -1.996341 128.0 +-13.723134 8.8075514 -1.9986961 128.0 +-13.697113 8.9099874 -2.0029104 128.0 +-13.662066 9.0069733 -2.0058851 128.0 +-13.627995 9.1049662 -2.0091076 128.0 +-13.585018 9.1973162 -2.0110908 128.0 +-13.538965 9.2877979 -2.0127022 128.0 +-13.495572 9.3803253 -2.0148094 128.0 +-13.447497 9.4698124 -2.0162966 128.0 +-13.41337 9.569437 -2.020015 128.0 +-13.372093 9.6643486 -2.022742 128.0 +-13.330956 9.7596989 -2.0255928 128.0 +-13.291543 9.8566818 -2.0288153 128.0 +-13.237954 9.9434156 -2.0299308 128.0 +-13.198014 10.040678 -2.0332775 128.0 +-13.157379 10.137824 -2.0366242 128.0 +-13.107443 10.228133 -2.0386074 128.0 +-13.054558 10.316365 -2.0402186 128.0 +-12.98404 10.390692 -2.039103 128.0 +-12.935457 10.482661 -2.0415821 128.0 +-12.877796 10.5675 -2.0426974 128.0 +-12.830266 10.660905 -2.0455484 128.0 +-12.790424 10.761151 -2.0497625 128.0 +-12.757389 10.867744 -2.0552163 128.0 +-12.723525 10.974337 -2.0606699 128.0 +-12.679864 11.073088 -2.0646362 128.0 +-12.633983 11.170402 -2.0683548 128.0 +-12.57999 11.260949 -2.0708337 128.0 +-12.526097 11.351921 -2.0734365 128.0 +-12.465712 11.437287 -2.075048 128.0 +-12.410566 11.527743 -2.0776508 128.0 +-12.348996 11.612514 -2.0792623 128.0 +-12.289009 11.699015 -2.0812454 128.0 +-12.228425 11.785216 -2.0832286 128.0 +-12.167245 11.871115 -2.0852118 128.0 +-12.104059 11.955311 -2.086947 128.0 +-12.044508 12.043388 -2.0894258 128.0 +-11.987818 12.134715 -2.0925245 128.0 +-11.929073 12.224378 -2.0953753 128.0 +-11.862793 12.306631 -2.0969868 128.0 +-11.813742 12.407216 -2.1018207 128.0 +-11.746907 12.489591 -2.1035559 128.0 +-11.676805 12.568704 -2.1047955 128.0 +-11.606844 12.648157 -2.1061587 128.0 +-11.570999 12.765458 -2.1139677 128.0 +-11.531503 12.879836 -2.1212804 128.0 +-11.418735 12.912437 -2.1149592 128.0 +-11.337332 12.980017 -2.1145873 128.0 +-11.273029 13.067369 -2.1175621 128.0 +-11.143088 13.078132 -2.1080182 128.0 +-11.001942 13.074127 -2.0962429 128.0 +-10.849851 13.055147 -2.082237 128.0 +-10.733031 13.076985 -2.075048 128.0 +-10.570122 13.040835 -2.0586867 128.0 +-10.433483 13.034946 -2.0474076 128.0 +-10.301624 13.033324 -2.0369959 128.0 +-10.188494 13.054046 -2.0303028 128.0 +-10.056117 13.048718 -2.0196433 128.0 +-9.9326038 13.053316 -2.0107191 128.0 +-9.8159685 13.065619 -2.0031581 128.0 +-9.6995583 13.076984 -1.9955974 128.0 +-9.5528975 13.045781 -1.9815912 128.0 +-9.4436073 13.06394 -1.9753939 128.0 +-9.3321495 13.078019 -1.9687006 128.0 +-9.219162 13.088791 -1.9616356 128.0 +-9.0752449 13.053856 -1.9477534 128.0 +-8.9584885 13.056109 -1.9396969 128.0 +-8.8492804 13.068105 -1.9332516 128.0 +-8.7408152 13.080079 -1.9269302 128.0 +-8.6227055 13.076303 -1.9183779 128.0 +-8.5071363 13.0749 -1.9103212 128.0 +-8.3945913 13.076748 -1.9028844 128.0 +-8.2956161 13.098667 -1.8985462 128.0 +-8.1877518 13.105558 -1.8921009 128.0 +-8.0749102 13.103173 -1.8844161 128.0 +-7.9639544 13.102443 -1.8771032 128.0 +-7.8737168 13.134891 -1.8747482 128.0 +-7.8182192 13.225668 -1.8809456 128.0 +-7.7963777 13.375412 -1.8956953 128.0 +-7.7027903 13.403209 -1.8928446 128.0 +-7.6008415 13.415685 -1.8878866 128.0 +-7.4970956 13.423949 -1.8824329 128.0 +-7.3930564 13.430578 -1.8768553 128.0 +-7.2953696 13.447777 -1.8728889 128.0 +-7.192605 13.454657 -1.8675592 128.0 +-7.0955801 13.471319 -1.8637168 128.0 +-7.0009069 13.491702 -1.8604941 128.0 +-6.9017358 13.502595 -1.856032 128.0 +-6.7986798 13.504804 -1.8504544 128.0 +-6.6998234 13.514259 -1.8459923 128.0 +-6.6045895 13.530145 -1.8425218 128.0 +-6.5167189 13.560576 -1.8411583 128.0 +-6.4312687 13.595822 -1.8405386 128.0 +-6.3351636 13.608039 -1.8368201 128.0 +-6.2498941 13.643046 -1.8363243 128.0 +-6.1444583 13.63319 -1.8297551 128.0 +-6.0586805 13.6661 -1.8291354 128.0 +-5.9743166 13.702107 -1.8290114 128.0 +-5.8854384 13.727563 -1.8275241 128.0 +-5.8003259 13.761588 -1.8272761 128.0 +-5.7100816 13.783168 -1.8254169 128.0 +-5.6119351 13.784858 -1.8209548 128.0 +-5.5165629 13.792314 -1.8173603 128.0 +-5.4274778 13.814819 -1.8158729 128.0 +-5.3401098 13.841381 -1.8150053 128.0 +-5.2536745 13.870175 -1.8145095 128.0 +-5.1622467 13.885407 -1.8122785 128.0 +-5.0725303 13.904702 -1.8106672 128.0 +-4.9754176 13.902864 -1.806329 128.0 +-4.885747 13.920959 -1.8047177 128.0 +-4.7924905 13.928156 -1.8017429 128.0 +-4.7050366 13.951658 -1.8009992 128.0 +-4.6159186 13.969901 -1.7996358 128.0 +-4.5215616 13.971526 -1.7961652 128.0 +-4.4270587 13.971574 -1.7925707 128.0 +-4.3200903 13.930234 -1.7836465 128.0 +-4.2161012 13.895707 -1.7757138 128.0 +-4.12568 13.904192 -1.7734828 128.0 +-4.035037 13.911137 -1.7711278 128.0 +-3.9417593 13.907947 -1.7675333 128.0 +-3.8531721 13.920395 -1.7660459 128.0 +-3.7635453 13.928449 -1.7640628 128.0 +-3.669919 13.920574 -1.7600964 128.0 +-3.5777662 13.916882 -1.7567499 128.0 +-3.49086 13.932797 -1.7560061 128.0 +-3.4060097 13.956846 -1.7563779 128.0 +-3.3223712 13.986172 -1.7574935 128.0 +-3.2378314 14.012094 -1.7582372 128.0 +-3.1591849 14.064616 -1.7624514 128.0 +-3.081496 14.123486 -1.7675333 128.0 +-3.0058744 14.19455 -1.7742264 128.0 +-2.9354825 14.294375 -1.784638 128.0 +-2.8690107 14.419173 -1.7982724 128.0 +-2.7891114 14.481328 -1.8039739 128.0 +-2.7023826 14.509875 -1.8054613 128.0 +-2.6099639 14.507627 -1.8031063 128.0 +-2.5169964 14.500882 -1.8002555 128.0 +-2.4204466 14.471033 -1.7945539 128.0 +-2.330663 14.479733 -1.7938102 128.0 +-2.2401054 14.482975 -1.7924469 128.0 +-2.1491594 14.482705 -1.7907115 128.0 +-2.0598359 14.492673 -1.7903397 128.0 +-1.9702042 14.500122 -1.7897199 128.0 +-1.8813236 14.512922 -1.7898439 128.0 +-1.7915099 14.518284 -1.7891002 128.0 +-1.7055094 14.555614 -1.7924469 128.0 +-1.6187901 14.589474 -1.7954216 128.0 +-1.5281041 14.588276 -1.7940581 128.0 +-1.437591 14.587502 -1.7928187 128.0 +-1.3537098 14.65731 -1.8005034 128.0 +-1.2686002 14.721693 -1.8075684 128.0 +-1.1797476 14.747993 -1.8099234 128.0 +-1.0882118 14.7411 -1.8081882 128.0 +-0.99667114 14.731659 -1.806205 128.0 +-0.9057132 14.728583 -1.8050895 128.0 +-0.81417352 14.713058 -1.8024865 128.0 +-0.72271258 14.69399 -1.7995118 128.0 +-0.63300681 14.709052 -1.8008753 128.0 +-0.54336238 14.729517 -1.8029823 128.0 +-0.45288226 14.729598 -1.8026105 128.0 +-0.36220264 14.720196 -1.8011231 128.0 +-0.27110818 14.680472 -1.7959174 128.0 +-0.18091601 14.67293 -1.7948018 128.0 +-0.091008604 14.694601 -1.7974048 128.0 +-0.00084140874 14.74549 -1.8037261 128.0 +0.089916304 14.790862 -1.8094276 128.0 +0.18069403 14.792016 -1.8096756 128.0 +0.27116016 14.774755 -1.8076924 128.0 +0.3613725 14.754957 -1.8054613 128.0 +0.451078 14.725683 -1.8021147 128.0 +0.54054749 14.698839 -1.79914 128.0 +0.63055718 14.69128 -1.7986442 128.0 +0.72049451 14.68317 -1.7981484 128.0 +0.81161618 14.697298 -1.8005034 128.0 +0.90287751 14.709868 -1.8027345 128.0 +0.9924491 14.694151 -1.801495 128.0 +1.0798904 14.65117 -1.796909 128.0 +1.1680279 14.622507 -1.7941821 128.0 +1.2559396 14.594304 -1.7915791 128.0 +1.3439143 14.569526 -1.7894721 128.0 +1.440582 14.635068 -1.7987682 128.0 +1.5312841 14.634835 -1.7998837 128.0 +1.6305702 14.710967 -1.8106672 128.0 +1.725422 14.740108 -1.8156251 128.0 +1.8188703 14.753863 -1.8187238 128.0 +1.9098742 14.746362 -1.8192196 128.0 +1.9999195 14.731416 -1.8188477 128.0 +2.0894346 14.712973 -1.818104 128.0 +2.1773424 14.68417 -1.8161209 128.0 +2.2622461 14.637192 -1.8119066 128.0 +2.3405068 14.551518 -1.8028585 128.0 +2.4096186 14.416504 -1.7876128 128.0 +2.4878514 14.342787 -1.7801759 128.0 +2.5601764 14.240333 -1.7691447 128.0 +2.6273422 14.116073 -1.7553864 128.0 +2.7142825 14.101635 -1.7556343 128.0 +2.8011446 14.086661 -1.7558821 128.0 +2.887526 14.069208 -1.7558821 128.0 +2.9768817 14.065787 -1.7577415 128.0 +3.0631318 14.047257 -1.7577415 128.0 +3.1503537 14.033038 -1.7583611 128.0 +3.2370696 14.016345 -1.758733 128.0 +3.3264508 14.0107 -1.7605922 128.0 +3.4212945 14.026658 -1.7653022 128.0 +3.5138063 14.03139 -1.7686489 128.0 +3.4330907 13.360858 -1.684984 128.0 +3.5142479 13.336662 -1.6846122 128.0 +3.7924464 14.041928 -1.7786885 128.0 +3.8711236 13.991616 -1.775218 128.0 +3.9547374 13.959963 -1.7742264 128.0 +4.0491643 13.965931 -1.7781928 128.0 +4.1313944 13.929407 -1.7767054 128.0 +4.2153454 13.899047 -1.7760857 128.0 +4.3023124 13.878608 -1.7768294 128.0 +4.3822942 13.835867 -1.7747222 128.0 +4.4649687 13.802108 -1.7738546 128.0 +4.5582886 13.800834 -1.7773252 128.0 +4.6460538 13.782007 -1.7785647 128.0 +4.7366648 13.771068 -1.7809197 128.0 +4.8260016 13.75579 -1.7827789 128.0 +4.9139924 13.736197 -1.7841423 128.0 +4.9992037 13.708582 -1.7845142 128.0 +5.0897932 13.695322 -1.7868692 128.0 +5.1839223 13.690744 -1.7904637 128.0 +5.273901 13.674417 -1.7925707 128.0 +5.3704047 13.674126 -1.796909 128.0 +5.4648924 13.667634 -1.8005034 128.0 +5.5613723 13.665093 -1.8047177 128.0 +5.6470141 13.635296 -1.8053374 128.0 +5.7348113 13.610448 -1.8067008 128.0 +5.8205614 13.580476 -1.8074445 128.0 +5.904573 13.546325 -1.8076924 128.0 +5.9924064 13.520726 -1.8091798 128.0 +6.0874858 13.510843 -1.8128982 128.0 +6.1789503 13.492182 -1.8155011 128.0 +6.2679019 13.467508 -1.8173603 128.0 +6.3631473 13.455706 -1.8210788 128.0 +6.459343 13.445029 -1.8250451 128.0 +6.5517297 13.425653 -1.8278959 128.0 +6.6419172 13.401202 -1.830127 128.0 +6.7374053 13.386786 -1.8338454 128.0 +6.8261924 13.358447 -1.8357046 128.0 +6.9199119 13.339211 -1.8389273 128.0 +7.015964 13.323717 -1.8427696 128.0 +7.1041336 13.292668 -1.844505 128.0 +7.1983371 13.272378 -1.8478515 128.0 +7.2853808 13.238392 -1.8493389 128.0 +7.3751817 13.209035 -1.8515699 128.0 +7.4580483 13.166986 -1.8520657 128.0 +7.5065627 13.065054 -1.8440092 128.0 +7.6080732 13.055613 -1.8493389 128.0 +7.6991458 13.027477 -1.8520657 128.0 +7.8080153 13.028504 -1.8591307 128.0 +7.9115167 13.019356 -1.8648324 128.0 +8.0167608 13.011961 -1.8709058 128.0 +8.1316738 13.018911 -1.8792104 128.0 +8.2347622 13.005657 -1.8846641 128.0 +8.333169 12.984112 -1.8890022 128.0 +9.0723286 13.946638 -2.0400946 128.0 +9.1615562 13.896507 -2.0409622 128.0 +9.2554722 13.853232 -2.0429454 128.0 +9.3503141 13.810971 -2.0451765 128.0 +9.4438629 13.76643 -2.0471597 128.0 +9.5372171 13.72126 -2.0491428 128.0 +9.630372 13.675464 -2.051126 128.0 +9.7215939 13.626616 -2.0527372 128.0 +9.8085098 13.571534 -2.0534811 128.0 +9.8974609 13.5191 -2.0547204 128.0 +9.9961863 13.479635 -2.0580671 128.0 +10.098376 13.444227 -2.0621574 128.0 +10.199905 13.407282 -2.0661237 128.0 +10.294699 13.36095 -2.0687265 128.0 +10.39297 13.318651 -2.0720732 128.0 +10.484341 13.267087 -2.0740564 128.0 +10.572989 13.211802 -2.0755436 128.0 +10.666352 13.162097 -2.0780227 128.0 +10.767057 13.120947 -2.081989 128.0 +10.874634 13.08745 -2.0873187 128.0 +10.982843 13.053885 -2.0927725 128.0 +11.087188 13.014953 -2.0974824 128.0 +11.184338 12.966965 -2.1008291 128.0 +11.290454 12.928737 -2.105911 128.0 +11.373514 12.863676 -2.1066546 128.0 +11.382733 12.716022 -2.0936401 128.0 +11.330596 12.50257 -2.0694702 128.0 +11.410452 12.436467 -2.0700901 128.0 +11.481143 12.360404 -2.0690985 128.0 +11.546571 12.278882 -2.0672393 128.0 +11.60938 12.194866 -2.0650082 128.0 +11.667459 12.106256 -2.0620334 128.0 +11.721426 12.013843 -2.058439 128.0 +11.783763 11.930401 -2.0564559 128.0 +11.844114 11.845243 -2.0542247 128.0 +11.891158 11.747242 -2.0497625 128.0 +11.948099 11.659506 -2.0471597 128.0 +12.010842 11.577711 -2.0456722 128.0 +12.070157 11.492848 -2.043689 128.0 +12.129605 11.408374 -2.0418298 128.0 +12.184837 11.320227 -2.039351 128.0 +12.234326 11.227136 -2.0360043 128.0 +12.283133 11.133864 -2.0326579 128.0 +12.32608 11.035784 -2.0284436 128.0 +12.373491 10.942198 -2.0250969 128.0 +12.42545 10.853015 -2.0226181 128.0 +12.477533 10.764256 -2.020263 128.0 +12.530506 10.676553 -2.0181558 128.0 +12.582113 10.587967 -2.0159247 128.0 +12.630816 10.497248 -2.0133219 128.0 +12.677345 10.40507 -2.0104711 128.0 +12.710886 10.302722 -2.0056372 128.0 +12.763017 10.215855 -2.003902 128.0 +12.816117 10.129967 -2.0024145 128.0 +12.871774 10.046254 -2.0014229 128.0 +12.917454 9.9549723 -1.9989439 128.0 +12.961709 9.8629074 -1.996341 128.0 +13.002942 9.7688875 -1.9933662 128.0 +13.045103 9.6759148 -1.9906394 128.0 +13.073003 9.5728283 -1.9858055 128.0 +13.10013 9.4697647 -1.9809715 128.0 +13.147488 9.3817129 -1.9793602 128.0 +13.160185 9.2694407 -1.972543 128.0 +13.192369 9.171526 -1.9688246 128.0 +13.254943 9.0948973 -1.9698162 128.0 +13.303925 9.0089445 -1.9688246 128.0 +13.33915 8.9139137 -1.9658499 128.0 +13.36957 8.8160582 -1.9622554 128.0 +13.401786 8.7197895 -1.9590328 128.0 +13.433326 8.6234579 -1.9558101 128.0 +13.470895 8.5313148 -1.9535791 128.0 +13.512048 8.4416647 -1.9519677 128.0 +13.550919 8.3507891 -1.9501085 128.0 +13.592575 8.261817 -1.948745 128.0 +13.619181 8.1639748 -1.9452745 128.0 +13.643391 8.0651093 -1.9415561 128.0 +13.662614 7.9637556 -1.937218 128.0 +13.687131 7.8659315 -1.9337474 128.0 +13.718734 7.7725081 -1.9313923 128.0 +13.754038 7.6814122 -1.9296571 128.0 +13.783525 7.5873055 -1.9271781 128.0 +13.808886 7.4912343 -1.9242034 128.0 +13.837089 7.3970089 -1.9217244 128.0 +13.852364 7.2962461 -1.9175102 128.0 +13.89511 7.2101984 -1.9172623 128.0 +13.925836 7.1180305 -1.9154031 128.0 +13.935568 7.0154967 -1.910693 128.0 +13.954348 6.9179592 -1.9073465 128.0 +13.983156 6.8256783 -1.9054873 128.0 +14.007781 6.731586 -1.9031322 128.0 +14.036263 6.6395698 -1.901397 128.0 +14.065043 6.5478764 -1.8997856 128.0 +14.091423 6.4552536 -1.8979264 128.0 +14.118101 6.3629618 -1.8961911 128.0 +14.141456 6.2693791 -1.8940841 128.0 +14.166014 6.1765432 -1.8922248 128.0 +14.180844 6.0797324 -1.8891262 128.0 +14.178562 5.9760365 -1.8837963 128.0 +14.194795 5.8805723 -1.8810695 128.0 +14.221419 5.7896233 -1.87983 128.0 +14.207844 5.6827264 -1.8732609 128.0 +14.236903 5.5932651 -1.8725171 128.0 +14.259846 5.5015187 -1.8710297 128.0 +14.272918 5.4061871 -1.8683029 128.0 +14.289079 5.3122859 -1.8660718 128.0 +14.318609 5.2234898 -1.8657 128.0 +14.35039 5.1355338 -1.8657 128.0 +14.390058 5.0503416 -1.8668156 128.0 +14.427343 4.9642105 -1.8676832 128.0 +14.480099 4.8832006 -1.8706579 128.0 +14.516384 4.7964392 -1.8715255 128.0 +14.544598 4.7069726 -1.8714015 128.0 +14.566584 4.6155424 -1.8705339 128.0 +14.607899 4.5301905 -1.8722693 128.0 +14.616429 4.4347124 -1.8697903 128.0 +14.65478 4.3483305 -1.8712777 128.0 +14.704059 4.2649612 -1.8742524 128.0 +14.712766 4.1697893 -1.8720213 128.0 +14.666348 4.0595875 -1.8627253 128.0 +14.768576 3.9904797 -1.8727651 128.0 +14.843637 3.9131889 -1.8793342 128.0 +14.865447 3.8215425 -1.8790864 128.0 +14.885728 3.7295346 -1.8787146 128.0 +14.925684 3.6423604 -1.8809456 128.0 +14.960303 3.55369 -1.8825569 128.0 +14.975059 3.4602652 -1.8816893 128.0 +14.98439 3.365706 -1.8802019 128.0 +15.032875 3.2798321 -1.8837963 128.0 +15.06825 3.1908183 -1.8857795 128.0 +15.088516 3.0985007 -1.8859035 128.0 +15.113084 3.0070224 -1.8866472 128.0 +15.136122 2.9151716 -1.8872669 128.0 +15.166406 2.824604 -1.8888782 128.0 +15.194195 2.7334235 -1.8902416 128.0 +15.215569 2.6409903 -1.8908614 128.0 +15.22953 2.5472522 -1.8906136 128.0 +15.25369 2.4551761 -1.891729 128.0 +15.282197 2.3636575 -1.8934643 128.0 +15.30819 2.27159 -1.8949517 128.0 +15.330683 2.178874 -1.8960673 128.0 +15.346713 2.0851662 -1.8964391 128.0 +15.365123 1.9917263 -1.8971827 128.0 +15.380994 1.8978959 -1.8976785 128.0 +15.402205 1.8046381 -1.898918 128.0 +15.426796 1.7116289 -1.9006532 128.0 +15.445889 1.6178694 -1.9017688 128.0 +15.459476 1.5234537 -1.9022646 128.0 +15.478414 1.4294792 -1.9035041 128.0 +15.486894 1.3344786 -1.9035041 128.0 +15.510616 1.2406924 -1.9054873 128.0 +15.515958 1.1453518 -1.9052393 128.0 +15.526653 1.0503937 -1.9057351 128.0 +15.532806 0.95510411 -1.9057351 128.0 +15.553236 0.86059988 -1.9075943 128.0 +15.579037 0.76617283 -1.9101973 128.0 +15.599307 0.67124856 -1.9121804 128.0 +15.614039 0.57592189 -1.9135438 128.0 +15.633149 0.4805918 -1.915527 128.0 +15.645723 0.38490286 -1.9167665 128.0 +15.649775 0.28893176 -1.9170144 128.0 +15.683996 0.19330221 -1.9211047 128.0 +15.675957 0.097008787 -1.9199891 128.0 +15.67328 0.00082116749 -1.9196173 128.0 +15.658106 -0.095256627 -1.9177581 128.0 +15.633413 -0.1910384 -1.9147834 128.0 +15.64286 -0.28716078 -1.9161468 128.0 +15.647747 -0.38330877 -1.9170144 128.0 +15.653035 -0.47955802 -1.9180059 128.0 +15.655748 -0.57581347 -1.9187497 128.0 +15.65886 -0.67216289 -1.9196173 128.0 +15.663361 -0.76866961 -1.9207329 128.0 +15.667266 -0.86525685 -1.9218484 128.0 +15.666615 -0.96167743 -1.9224681 128.0 +15.664379 -1.0580556 -1.9229639 128.0 +15.675405 -1.1554649 -1.925195 128.0 +15.669009 -1.2517047 -1.925319 128.0 +15.668942 -1.3485056 -1.9263105 128.0 +15.678159 -1.4462651 -1.9285415 128.0 +15.686765 -1.5441883 -1.9307727 128.0 +15.742129 -1.6472318 -1.9389532 128.0 +15.728767 -1.7434646 -1.9385813 128.0 +15.627103 -1.8293209 -1.9271781 128.0 +15.574222 -1.9200701 -1.9219723 128.0 +15.344669 -1.9874116 -1.8945799 128.0 +14.7147 -1.997649 -1.8167406 128.0 +14.276777 -2.0274544 -1.7630712 128.0 +13.816483 -2.048614 -1.706551 128.0 +13.637926 -2.1077247 -1.6856037 128.0 +13.320055 -2.1423352 -1.647056 128.0 +13.243044 -2.213387 -1.6389993 128.0 +12.013962 -2.0837097 -1.4849322 128.0 +11.552683 -2.0767584 -1.4280401 128.0 +11.519238 -2.1437907 -1.4254372 128.0 +10.607481 -2.0414343 -1.3111572 128.0 +10.356317 -2.0590484 -1.2807901 128.0 +10.022724 -2.056695 -1.2398872 128.0 +9.5410337 -2.0188811 -1.1800205 128.0 +9.3161488 -2.0310698 -1.1528759 128.0 +8.7836018 -1.9714329 -1.0863159 128.0 +8.6234159 -1.9911156 -1.0673518 128.0 +8.4922886 -2.0157866 -1.0521063 128.0 +8.5038605 -2.0737369 -1.055205 128.0 +8.5102272 -2.1306992 -1.0576839 128.0 +8.4499016 -2.1707723 -1.0516105 128.0 +8.7309942 -2.300226 -1.0896624 128.0 +8.2770195 -2.2349639 -1.0327704 128.0 +8.3042727 -2.2970898 -1.0381001 128.0 +8.2604256 -2.3396139 -1.0342578 128.0 +7.9342775 -2.2998745 -0.99372679 128.0 +7.8734026 -2.3346856 -0.98765337 128.0 +7.8143001 -2.3694127 -0.9818278 128.0 +7.8403683 -2.4299529 -0.98715758 128.0 +7.8366623 -2.4816113 -0.98864496 128.0 +7.7882447 -2.5189569 -0.98430675 128.0 +7.7085724 -2.5455301 -0.9758783 128.0 +7.7191358 -2.6016586 -0.97934884 128.0 +7.7171021 -2.6538157 -0.98120809 128.0 +7.7062907 -2.7030885 -0.98195177 128.0 +7.6886258 -2.7499881 -0.9818278 128.0 +7.4991488 -2.7342057 -0.95889747 128.0 +7.6738324 -2.8513932 -0.98443073 128.0 +7.6422725 -2.8931534 -0.98257148 128.0 +7.582716 -2.9239197 -0.97699386 128.0 +7.1545625 -2.8093021 -0.92196101 128.0 +7.1427183 -2.8553596 -0.9227047 128.0 +7.1250634 -2.8991327 -0.9227047 128.0 +7.4793401 -3.0969763 -0.97302753 128.0 +7.3577838 -3.0996487 -0.95914537 128.0 +7.2957611 -3.1263611 -0.95331979 128.0 +7.2527914 -3.1607578 -0.95009714 128.0 +7.200603 -3.1907237 -0.94563502 128.0 +7.2143626 -3.2499304 -0.95022112 128.0 +7.149178 -3.2734737 -0.94402373 128.0 +7.1748371 -3.3386357 -0.95034504 128.0 +7.1981702 -3.4033864 -0.95641851 128.0 +7.1869903 -3.4522171 -0.95778191 128.0 +5.4089541 -2.6388013 -0.71360463 128.0 +5.3935499 -2.6723812 -0.71372861 128.0 +6.9219184 -3.483088 -0.92976969 128.0 +7.0780144 -3.6162651 -0.95468324 128.0 +7.0442419 -3.6536856 -0.95307189 128.0 +6.9883285 -3.6792684 -0.94836187 128.0 +6.9874988 -3.733773 -0.9514606 128.0 +6.9984741 -3.7950299 -0.95629454 128.0 +6.9715791 -3.8359864 -0.95579875 128.0 +6.904593 -3.8545003 -0.94960135 128.0 +6.8307371 -3.8684249 -0.94241238 128.0 +6.8163362 -3.9157031 -0.94377583 128.0 +6.8659096 -4.0004258 -0.95443535 128.0 +6.8762569 -4.0631809 -0.95951718 128.0 +6.8248119 -4.0894814 -0.95567483 128.0 +6.7648249 -4.1101503 -0.95059294 128.0 +6.7166691 -4.137526 -0.94724637 128.0 +6.6617002 -4.1602602 -0.94290817 128.0 +6.6653895 -4.2196383 -0.94724637 128.0 +6.7086821 -4.3049469 -0.95753402 128.0 +6.6605158 -4.3319602 -0.95431137 128.0 +6.5749927 -4.3339643 -0.9455111 128.0 +6.5837531 -4.3979321 -0.95084083 128.0 +6.5402112 -4.4271193 -0.94836187 128.0 +6.5865631 -4.5176907 -0.95951718 128.0 +6.6418247 -4.6157928 -0.97215986 128.0 +6.4908762 -4.5701799 -0.95344377 128.0 +6.4417105 -4.5949359 -0.95022112 128.0 +6.4109826 -4.6326313 -0.94984925 128.0 +6.3576179 -4.6537085 -0.94600689 128.0 +6.3201766 -4.6861281 -0.94464344 128.0 +6.3127246 -4.7409115 -0.94799006 128.0 +5.4898806 -4.175693 -0.82342243 128.0 +5.4594398 -4.2056656 -0.82267874 128.0 +10.176337 -7.9405737 -1.5741746 128.0 +10.130537 -8.0053263 -1.5746704 128.0 +10.085876 -8.0710554 -1.5754141 128.0 +10.044641 -8.1396618 -1.5767776 128.0 +9.9860716 -8.1942167 -1.5754141 128.0 +9.9188156 -8.2413836 -1.5726873 128.0 +9.8581896 -8.2937832 -1.5710759 128.0 +9.8010721 -8.3489676 -1.5700843 128.0 +9.733881 -8.3953381 -1.5674814 128.0 +9.6612587 -8.4366283 -1.5640109 128.0 +9.5877533 -8.4766874 -1.5604165 128.0 +9.5163393 -8.5181484 -1.5571938 128.0 +9.4477186 -8.5617189 -1.554467 128.0 +9.423521 -8.6456928 -1.5593009 128.0 +3.5252962 -3.2733884 -0.56276011 128.0 +3.5138187 -3.3031154 -0.56424749 128.0 +3.5157633 -3.345825 -0.56808984 128.0 +3.5015974 -3.3735321 -0.5692054 128.0 +3.4900644 -3.4039631 -0.5708167 128.0 +3.5100563 -3.46576 -0.57800567 128.0 +3.5483639 -3.546874 -0.58854127 128.0 +8.051445 -8.1495628 -1.392839 128.0 +8.0033674 -8.200943 -1.3932108 128.0 +3.2214954 -3.3408043 -0.541565 128.0 +3.1769888 -3.3353546 -0.53722686 128.0 +3.1897731 -3.3902056 -0.54330027 128.0 +7.7645783 -8.3570805 -1.3867655 128.0 +2.6575289 -2.8946235 -0.45269439 128.0 +7.6067977 -8.3914433 -1.3766017 128.0 +2.6085703 -2.912231 -0.45021543 128.0 +2.5913095 -2.9289255 -0.45033938 128.0 +2.5772054 -2.9492548 -0.45108306 128.0 +2.5707269 -2.9785376 -0.45331413 128.0 +2.551759 -2.9934998 -0.45319018 128.0 +7.3643284 -8.750782 -1.3904839 128.0 +7.2800555 -8.7591715 -1.3845344 128.0 +7.2507229 -8.8335915 -1.3893684 128.0 +7.2507396 -8.9449835 -1.4001518 128.0 +7.8647237 -9.8252392 -1.5338916 128.0 +7.8073654 -9.8772039 -1.5345113 128.0 +7.7521071 -9.9319639 -1.5356269 128.0 +7.6710329 -9.9534044 -1.5315366 128.0 +7.6098156 -10.000285 -1.5315366 128.0 +7.5423522 -10.038857 -1.530297 128.0 +7.4563785 -10.052268 -1.5252153 128.0 +7.3863516 -10.086621 -1.5234799 128.0 +7.3283911 -10.137383 -1.5243475 128.0 +7.2712383 -10.189428 -1.5254631 128.0 +7.2074375 -10.232229 -1.5252153 128.0 +7.1490488 -10.282779 -1.5262069 128.0 +7.0830135 -10.32236 -1.5255871 128.0 +7.0056357 -10.345084 -1.5224884 128.0 +6.9376173 -10.381275 -1.5214968 128.0 +6.8650494 -10.410393 -1.5195136 128.0 +6.7929263 -10.439843 -1.5176544 128.0 +6.7201653 -10.467966 -1.5156713 128.0 +6.6473145 -10.495589 -1.5136881 128.0 +6.5817385 -10.534496 -1.5134401 128.0 +6.5133324 -10.568769 -1.5125725 128.0 +6.4432077 -10.600056 -1.5113331 128.0 +6.375495 -10.635135 -1.5107133 128.0 +6.3065848 -10.668075 -1.5098457 128.0 +6.2290168 -10.685994 -1.506871 128.0 +6.1524553 -10.705086 -1.5041441 128.0 +6.0812745 -10.733137 -1.5027807 128.0 +6.0133677 -10.766784 -1.5022849 128.0 +5.9467125 -10.802609 -1.5021609 128.0 +5.8538232 -10.790049 -1.4952198 128.0 +5.7809582 -10.813512 -1.4934846 128.0 +5.6488433 -10.724106 -1.475884 128.0 +5.6459966 -10.880116 -1.4929888 128.0 +5.5384912 -10.835031 -1.4818335 128.0 +5.4241691 -10.773972 -1.4685711 128.0 +5.3434167 -10.777712 -1.4644808 128.0 +5.2719626 -10.799594 -1.4629934 128.0 +5.2030201 -10.826372 -1.4622498 128.0 +5.1390381 -10.863476 -1.4629934 128.0 +5.0722842 -10.894804 -1.4629934 128.0 +4.9983153 -10.910385 -1.4608862 128.0 +4.9263844 -10.929993 -1.4593989 128.0 +4.8423386 -10.921913 -1.4541931 128.0 +4.7764211 -10.954148 -1.4545649 128.0 +4.7016902 -10.965921 -1.4522099 128.0 +4.6246829 -10.971704 -1.4491112 128.0 +4.5458832 -10.972371 -1.4453928 128.0 +4.467998 -10.974323 -1.4419223 128.0 +4.4016824 -11.004295 -1.4422941 128.0 +4.3431478 -11.054187 -1.4453928 128.0 +4.2616687 -11.045447 -1.4406828 128.0 +4.1864352 -11.051901 -1.4380798 128.0 +4.1109376 -11.056917 -1.435353 128.0 +1.1622131 -3.1832147 -0.3851428 128.0 +3.9856396 -11.13643 -1.4393194 128.0 +3.9090192 -11.137267 -1.4362206 128.0 +1.1621698 -3.3748426 -0.40770131 128.0 +1.1430254 -3.3866115 -0.40832105 128.0 +3.6750333 -11.121592 -1.4249414 128.0 +3.6094725 -11.152429 -1.426057 128.0 +1.0343481 -3.261399 -0.38923308 128.0 +1.0090278 -3.2506242 -0.38700202 128.0 +0.97351003 -3.2054775 -0.38030884 128.0 +0.95495206 -3.2151959 -0.38080463 128.0 +0.935206 -3.2209947 -0.38080463 128.0 +0.91975272 -3.2419479 -0.38278779 128.0 +0.92604208 -3.3422089 -0.39505863 128.0 +0.89930695 -3.3248372 -0.39208388 128.0 +2.9279709 -11.105327 -1.3964334 128.0 +2.8600218 -11.124044 -1.3965573 128.0 +2.8006322 -11.176998 -1.4011434 128.0 +2.733645 -11.200721 -1.402011 128.0 +1.9378986 -8.1558647 -1.0089724 128.0 +0.73277074 -3.1671531 -0.36791405 128.0 +1.9889715 -8.8528872 -1.0952401 128.0 +2.4458897 -11.209172 -1.394946 128.0 +2.3692567 -11.187079 -1.390236 128.0 +1.7265141 -8.4049034 -1.033638 128.0 +1.6735551 -8.4085264 -1.0327704 128.0 +1.6211796 -8.4147396 -1.0322746 128.0 +1.5767814 -8.4635496 -1.0372325 128.0 +2.031127 -11.288673 -1.3945742 128.0 +1.9528328 -11.249106 -1.3880049 128.0 +1.3616612 -8.137826 -0.99248731 128.0 +1.817479 -11.289858 -1.390236 128.0 +1.7495358 -11.309624 -1.3913516 128.0 +1.2816626 -8.6336374 -1.0521063 128.0 +1.6021049 -11.270313 -1.3837907 128.0 +1.5317198 -11.271082 -1.3826752 128.0 +1.4596007 -11.257635 -1.3798244 128.0 +1.388676 -11.251606 -1.3779652 128.0 +1.3128027 -11.201768 -1.3706522 128.0 +1.2451388 -11.219475 -1.3718917 128.0 +1.1801991 -11.264405 -1.3766017 128.0 +1.1143661 -11.30501 -1.380816 128.0 +1.0470759 -11.334361 -1.3836668 128.0 +0.97606295 -11.323766 -1.3815596 128.0 +0.90395468 -11.2969 -1.3774694 128.0 +0.83484012 -11.305202 -1.3778412 128.0 +0.76706266 -11.333873 -1.380816 128.0 +0.69531512 -11.302711 -1.3763539 128.0 +0.62824935 -11.348377 -1.3815596 128.0 +0.5551011 -11.28066 -1.3726354 128.0 +0.48681068 -11.305664 -1.3753623 128.0 +0.41571569 -11.261832 -1.3695368 128.0 +0.34605908 -11.246318 -1.3673056 128.0 +0.27728975 -11.258149 -1.3685452 128.0 +0.20873487 -11.28841 -1.3721396 128.0 +0.14064562 -11.385724 -1.3841625 128.0 +0.070623748 -11.360573 -1.38094 128.0 +0.00091572758 -11.338963 -1.378213 128.0 +-0.068664968 -11.339746 -1.378337 128.0 +-0.13847482 -11.357965 -1.380692 128.0 +-0.20794393 -11.344995 -1.3792046 128.0 +-0.27747849 -11.340529 -1.3788328 128.0 +-0.34681377 -11.330679 -1.3778412 128.0 +-0.41859677 -11.389818 -1.3855259 128.0 +-0.48796394 -11.375138 -1.3840386 128.0 +-0.55336732 -11.282732 -1.3728833 128.0 +-0.6214906 -11.259309 -1.3704044 128.0 +-0.69360822 -11.304805 -1.3766017 128.0 +-0.76577187 -11.341917 -1.3818076 128.0 +-0.83702958 -11.359765 -1.3846583 128.0 +-0.91035414 -11.399916 -1.39036 128.0 +-0.99024898 -11.509785 -1.4048618 128.0 +-1.0557446 -11.448159 -1.3979207 128.0 +-1.1257747 -11.43949 -1.3976729 128.0 +-1.1961516 -11.434341 -1.3979207 128.0 +-1.2633353 -11.400159 -1.3945742 128.0 +-1.3348777 -11.40599 -1.3963095 128.0 +-1.399493 -11.354252 -1.3908558 128.0 +-1.4700277 -11.35234 -1.3917234 128.0 +-1.549674 -11.41685 -1.4010195 128.0 +-1.6318421 -11.492598 -1.4118029 128.0 +-1.7116483 -11.545187 -1.4197356 128.0 +-1.7860954 -11.558002 -1.4227103 128.0 +-1.8561921 -11.541927 -1.4220906 128.0 +-1.9340146 -11.572405 -1.4274204 128.0 +-2.0109234 -11.594539 -1.4317585 128.0 +-2.0872982 -11.61128 -1.435477 128.0 +-2.1574144 -11.592402 -1.4347333 128.0 +-2.2328191 -11.601357 -1.437584 128.0 +-2.312093 -11.628313 -1.4427899 128.0 +-2.3881893 -11.637236 -1.4457647 128.0 +-2.4659207 -11.652456 -1.449607 128.0 +-2.5411792 -11.654557 -1.4518381 128.0 +-2.6115551 -11.633904 -1.4512184 128.0 +-2.6846774 -11.625396 -1.4522099 128.0 +-2.7559588 -11.608705 -1.4522099 128.0 +-2.8311353 -11.607964 -1.4543171 128.0 +-2.9112289 -11.625988 -1.4589031 128.0 +-2.9869564 -11.625205 -1.4611342 128.0 +-3.0589898 -11.609537 -1.461506 128.0 +-3.1265438 -11.577138 -1.4597708 128.0 +-3.1946094 -11.547215 -1.4584073 128.0 +-3.2737882 -11.556993 -1.4622498 128.0 +-3.3427043 -11.530016 -1.461382 128.0 +-3.4212909 -11.535925 -1.4648526 128.0 +-3.4971948 -11.531807 -1.4670837 128.0 +-3.5440819 -11.433362 -1.4570439 128.0 +-3.6090741 -11.39532 -1.4549367 128.0 +-3.6746495 -11.359743 -1.4532015 128.0 +-3.7480178 -11.348289 -1.4546889 128.0 +-3.8156767 -11.319436 -1.4539452 128.0 +-3.8724697 -11.259216 -1.4491112 128.0 +-3.9470677 -11.251161 -1.4512184 128.0 +-4.0143576 -11.222058 -1.4505986 128.0 +-4.0882397 -11.211199 -1.4524578 128.0 +-4.1562619 -11.184043 -1.4522099 128.0 +-4.2304311 -11.173177 -1.4541931 128.0 +-4.2978373 -11.144232 -1.4538213 128.0 +-4.3621449 -11.107491 -1.4524578 128.0 +-4.4261642 -11.070382 -1.4510944 128.0 +-4.4928851 -11.040258 -1.4507226 128.0 +-4.5650992 -11.023483 -1.4522099 128.0 +-1.5188596 -3.6069164 -0.45071122 128.0 +-1.5448724 -3.6066492 -0.4519507 128.0 +-4.8045092 -11.02309 -1.463861 128.0 +-4.913877 -11.087747 -1.4767516 128.0 +-4.9777408 -11.04834 -1.4755121 128.0 +-5.027256 -10.977895 -1.4700584 128.0 +-4.0836201 -8.775218 -1.1708483 128.0 +-5.1883225 -10.971888 -1.4778671 128.0 +-1.5642214 -3.2579396 -0.41327897 128.0 +-1.5907111 -3.2616563 -0.41513819 128.0 +-1.61422 -3.2589469 -0.41612977 128.0 +-1.6373093 -3.2551851 -0.4169974 128.0 +-1.7186687 -3.3652434 -0.43385431 128.0 +-1.7424841 -3.3608 -0.43472195 128.0 +-1.766772 -3.3570688 -0.43571353 128.0 +-5.8537555 -10.953499 -1.5131923 128.0 +-5.9137578 -10.904291 -1.5113331 128.0 +-5.9882097 -10.881709 -1.5133163 128.0 +-6.0500274 -10.836098 -1.5120767 128.0 +-6.1134682 -10.793591 -1.5113331 128.0 +-6.1780982 -10.753295 -1.5109612 128.0 +-6.2804389 -10.777767 -1.5200094 128.0 +-1.9157344 -3.2432697 -0.43236694 128.0 +-1.9381495 -3.2357094 -0.43298668 128.0 +-6.4772429 -10.659492 -1.5198854 128.0 +-6.5185804 -10.580688 -1.5141839 128.0 +-6.5807509 -10.536283 -1.5135641 128.0 +-6.6394367 -10.486485 -1.5122007 128.0 +-6.7052636 -10.448053 -1.5125725 128.0 +-6.7762804 -10.417526 -1.5141839 128.0 +-6.8455358 -10.384036 -1.5154233 128.0 +-6.9113274 -10.345138 -1.5159191 128.0 +-6.9724483 -10.299249 -1.5154233 128.0 +-7.0377579 -10.259546 -1.5159191 128.0 +-7.1028423 -10.219429 -1.5164149 128.0 +-7.1642709 -10.174031 -1.516167 128.0 +-7.2346315 -10.14119 -1.5179023 128.0 +-7.3176475 -10.125559 -1.5223644 128.0 +-7.3849149 -10.087673 -1.5234799 128.0 +-7.4561305 -10.054922 -1.5254631 128.0 +-7.5266261 -10.020884 -1.5273223 128.0 +-7.6041946 -9.9958344 -1.530669 128.0 +-7.6726532 -9.9584188 -1.5321563 128.0 +-7.7299495 -9.9064598 -1.5314126 128.0 +-7.7948956 -9.8642931 -1.5322802 128.0 +-7.8633361 -9.8263493 -1.5338916 128.0 +-7.9372268 -9.7948751 -1.5366185 128.0 +-8.0072498 -9.7582617 -1.5386016 128.0 +-8.0783911 -9.722683 -1.5408326 128.0 +-8.1468401 -9.6835613 -1.542568 128.0 +-8.2041731 -9.6311255 -1.542196 128.0 +-8.2553368 -9.5715885 -1.5407087 128.0 +-8.315217 -9.5222492 -1.5409566 128.0 +-8.378089 -9.4762516 -1.5418242 128.0 +-8.4360771 -9.4246664 -1.5418242 128.0 +-8.5037422 -9.3837547 -1.5436834 128.0 +-8.5772619 -9.3489466 -1.5466582 128.0 +-8.6499977 -9.3128624 -1.549509 128.0 +-8.7076569 -9.260335 -1.5496329 128.0 +-8.777998 -9.2211037 -1.5521119 128.0 +-8.8481855 -9.1813583 -1.5545908 128.0 +-8.9161358 -9.1389675 -1.556698 128.0 +-8.9894772 -9.1017351 -1.5597967 128.0 +-9.0697136 -9.0709629 -1.5641348 128.0 +-9.1393204 -9.029088 -1.5666138 128.0 +-9.19526 -8.9735327 -1.5667378 128.0 +-9.2544346 -8.9210749 -1.5674814 128.0 +-9.2989378 -8.8545437 -1.5657462 128.0 +-9.3588762 -8.8027582 -1.5667378 128.0 +-9.4178019 -8.7498951 -1.5676054 128.0 +-9.4800863 -8.6999941 -1.5690928 128.0 +-9.5538769 -8.6603193 -1.5725633 128.0 +-9.6282768 -8.6207285 -1.5761578 128.0 +-9.7018051 -8.5798922 -1.5796283 128.0 +-9.7348356 -8.503231 -1.5764056 128.0 +-9.7778111 -8.4355612 -1.5749183 128.0 +-9.7931299 -8.3445196 -1.5689688 128.0 +-9.7963114 -8.2440252 -1.5611601 128.0 +-9.7963409 -8.1419048 -1.5529796 128.0 +-9.7486973 -8.0016985 -1.5372381 128.0 +-9.8022375 -7.9454794 -1.5379819 128.0 +-9.8771458 -7.9062653 -1.542196 128.0 +-10.00566 -7.9088831 -1.5549628 128.0 +-10.134574 -7.9102187 -1.5677294 128.0 +-10.254447 -7.9030004 -1.5790086 128.0 +-10.397511 -7.9120302 -1.5938823 128.0 +-10.510127 -7.8963571 -1.6039221 128.0 +-10.620548 -7.8778243 -1.61359 128.0 +-10.67349 -7.8160267 -1.6143337 128.0 +-10.738939 -7.763176 -1.6170605 128.0 +-10.793641 -7.7023239 -1.6181761 128.0 +-10.83502 -7.6319509 -1.6173085 128.0 +-10.893867 -7.5738201 -1.6191677 128.0 +-10.943406 -7.5090795 -1.6196635 128.0 +-10.997492 -7.4473538 -1.620903 128.0 +-11.080109 -7.4045415 -1.6264806 128.0 +-11.13776 -7.3446088 -1.6283399 128.0 +-11.205906 -7.2912812 -1.6318104 128.0 +-11.247929 -7.220778 -1.6314385 128.0 +-11.289508 -7.1500335 -1.6310667 128.0 +-11.347474 -7.0895643 -1.6331738 128.0 +-11.400054 -7.0255299 -1.6345372 128.0 +-11.459907 -6.965755 -1.6370162 128.0 +-11.508389 -6.8988781 -1.6378838 128.0 +-11.557338 -6.8321733 -1.6388754 128.0 +-6.6557264 -3.8802245 -0.92419207 128.0 +-6.7000585 -3.8511775 -0.92716682 128.0 +-11.746756 -6.6554527 -1.6482954 128.0 +-11.794302 -6.587121 -1.649287 128.0 +-11.846668 -6.5213265 -1.6510223 128.0 +-11.897799 -6.4546647 -1.6526337 128.0 +-11.951182 -6.3890233 -1.6546168 128.0 +-12.005085 -6.3234324 -1.6567239 128.0 +-7.4106259 -3.845999 -1.0047581 128.0 +-7.4323177 -3.7995527 -1.0045103 128.0 +-6.9369788 -3.4928942 -0.93200076 128.0 +-6.9360538 -3.4392469 -0.92890209 128.0 +-6.9472165 -3.3918362 -0.92753863 128.0 +-6.9678979 -3.3491449 -0.92753863 128.0 +-7.0224037 -3.3224487 -0.93224865 128.0 +-12.373769 -5.7606707 -1.6667637 128.0 +-6.6900516 -3.0653718 -0.88105822 128.0 +-12.479717 -5.6246977 -1.6717216 128.0 +-12.536674 -5.5580702 -1.6748203 128.0 +-12.57418 -5.4826283 -1.6753161 128.0 +-12.579311 -5.3932524 -1.6714737 128.0 +-12.621311 -5.319819 -1.6727132 128.0 +-12.744474 -5.2798672 -1.684984 128.0 +-7.4441514 -3.0311563 -0.96583855 128.0 +-12.827656 -5.1308126 -1.6875869 128.0 +-12.846889 -5.0472908 -1.6859756 128.0 +-12.870211 -4.9655123 -1.684984 128.0 +-12.878164 -4.8780146 -1.6820092 128.0 +-12.892041 -4.7930269 -1.6799022 128.0 +-12.932395 -4.7179127 -1.6813896 128.0 +-13.117126 -4.6942954 -1.7020888 128.0 +-13.234633 -4.6449323 -1.7138638 128.0 +-13.263824 -4.5639615 -1.7139878 128.0 +-13.283115 -4.4796371 -1.7128723 128.0 +-13.299988 -4.3946257 -1.7115089 128.0 +-13.254951 -4.289721 -1.7020888 128.0 +-13.27913 -4.2077103 -1.7018409 128.0 +-13.224136 -4.1011748 -1.6913054 128.0 +-13.192078 -4.0026741 -1.6838685 128.0 +-13.053715 -3.8733988 -1.6626734 128.0 +-12.698882 -3.6835182 -1.6134661 128.0 +-12.731747 -3.6085055 -1.6148295 128.0 +-13.010906 -3.6015038 -1.6481715 128.0 +-12.90631 -3.4874461 -1.6318104 128.0 +-12.759548 -3.363935 -1.6101195 128.0 +-12.766494 -3.2821226 -1.6083843 128.0 +-12.94714 -3.2439885 -1.6290835 128.0 +-13.109475 -3.199291 -1.6474278 128.0 +-13.136582 -3.1206267 -1.6484194 128.0 +-13.270535 -3.0665393 -1.6631691 128.0 +-13.340416 -2.9965768 -1.6697384 128.0 +-13.393453 -2.9222772 -1.6742005 128.0 +-13.438313 -2.8457954 -1.6776711 128.0 +-13.503151 -2.7730629 -1.6837445 128.0 +-13.514072 -2.6889956 -1.6830008 128.0 +-13.628732 -2.6249707 -1.6955196 128.0 +-13.756767 -2.5621817 -1.7097735 128.0 +-13.839617 -2.4898412 -1.718326 128.0 +-13.910361 -2.4145446 -1.725391 128.0 +-14.028658 -2.3464904 -1.7385294 128.0 +-14.11039 -2.2712433 -1.7470819 128.0 +-14.156422 -2.1896236 -1.7511722 128.0 +-14.134254 -2.0974793 -1.7467101 128.0 +-14.144894 -2.0104346 -1.7464621 128.0 +-14.489306 -1.9687356 -1.7883565 128.0 +-14.891788 -1.9304056 -1.8375639 128.0 +-15.587808 -1.9233994 -1.9237076 128.0 +-15.728424 -1.8428357 -1.9399447 128.0 +-15.786776 -1.751542 -1.9458942 128.0 +-15.84361 -1.6594982 -1.9517198 128.0 +-15.838681 -1.5607938 -1.9498606 128.0 +-15.813376 -1.4603888 -1.9455224 128.0 +-15.85071 -1.3658006 -1.9491169 128.0 +-15.857803 -1.2684376 -1.948993 128.0 +-15.853412 -1.1702365 -1.9475056 128.0 +-15.791982 -1.0683235 -1.9389532 128.0 +-15.748718 -0.96836424 -1.9327558 128.0 +-15.869294 -0.87806445 -1.9471338 128.0 +-15.859517 -0.77994579 -1.9452745 128.0 +-15.866978 -0.68274665 -1.9456464 128.0 +-15.796497 -0.58263826 -1.9363502 128.0 +-15.874162 -0.48798305 -1.9456464 128.0 +-15.891737 -0.39093679 -1.9475056 128.0 +-15.882923 -0.29321888 -1.9461422 128.0 +-15.927089 -0.19628026 -1.9514719 128.0 +-15.876395 -0.098234303 -1.9450266 128.0 +-15.869753 -0.00081688107 -1.944159 128.0 +-15.8129 0.096209824 -1.937094 128.0 +-15.746526 0.19242904 -1.9289134 128.0 +-15.781756 0.28972086 -1.9334995 128.0 +-15.772738 0.38637984 -1.9326319 128.0 +-15.799825 0.48406607 -1.9363502 128.0 +-15.790607 0.58078361 -1.9356066 128.0 +-15.799635 0.67821616 -1.937218 128.0 +-15.802114 0.77548915 -1.9380856 128.0 +-15.803002 0.87276322 -1.9388292 128.0 +-15.782494 0.96879917 -1.93697 128.0 +-15.762391 1.0646832 -1.9352348 128.0 +-14.390461 -0.36386102 -1.9309767 128.0 +-14.444923 -0.2765626 -1.9381605 128.0 +-14.450312 -0.18797666 -1.9387027 128.0 +-14.53937 -0.099916063 -1.9507661 128.0 +-14.276164 -0.010501053 -1.9147117 128.0 +-14.409712 0.077814609 -1.93301 128.0 +-14.357446 0.16563658 -1.9259617 128.0 +-14.425503 0.25495273 -1.9354497 128.0 +-14.284008 0.34013942 -1.9163382 128.0 +-14.264816 0.42727423 -1.914034 128.0 +-14.379751 0.51904309 -1.9301635 128.0 +-14.400053 0.60826868 -1.9334166 128.0 +-14.223857 0.68828684 -1.9098321 128.0 +-14.364793 0.7834776 -1.9297569 128.0 +-14.319168 0.86914355 -1.9241997 128.0 +-14.308623 0.95665765 -1.923522 128.0 +-14.347939 1.0477537 -1.9297569 128.0 +-14.326424 1.1345984 -1.9277238 128.0 +-14.333013 1.2236618 -1.9296213 128.0 +-14.323261 1.3114039 -1.9293503 128.0 +-14.311987 1.398976 -1.9289436 128.0 +-14.279483 1.4843086 -1.9256907 128.0 +-14.264197 1.5712472 -1.9248774 128.0 +-14.248383 1.6580541 -1.9240642 128.0 +-14.238925 1.7455698 -1.9241997 128.0 +-14.212223 1.8308804 -1.922031 128.0 +-14.203668 1.9184483 -1.9224377 128.0 +-14.176913 2.003485 -1.9204044 128.0 +-14.163373 2.0902905 -1.9202689 128.0 +-14.158114 2.1783612 -1.9213532 128.0 +-14.140569 2.2645662 -1.9208111 128.0 +-14.120543 2.3503125 -1.9199978 128.0 +-14.107809 2.4372478 -1.9202689 128.0 +-14.089663 2.5232418 -1.9198623 128.0 +-14.058329 2.6067572 -1.9176936 128.0 +-14.021635 2.6890502 -1.9148473 128.0 +-14.012647 2.7765751 -1.9159316 128.0 +-13.98661 2.8607161 -1.9147117 128.0 +-14.003694 2.9538431 -1.9195912 128.0 +-13.971751 3.0367668 -1.9176936 128.0 +-13.966392 3.1254675 -1.9195912 128.0 +-13.941157 3.2097712 -1.9187779 128.0 +-13.892277 3.2884064 -1.9147117 128.0 +-13.853546 3.369138 -1.9121364 128.0 +-13.810503 3.4485583 -1.9090189 128.0 +-13.773727 3.5292988 -1.9068502 128.0 +-13.747022 3.6124873 -1.9061725 128.0 +-13.75234 3.7042415 -1.9101032 128.0 +-13.824862 3.8149068 -1.9236575 128.0 +-13.766869 3.8899651 -1.9187779 128.0 +-13.711332 3.9652815 -1.9143051 128.0 +-13.732347 4.0628285 -1.9208111 128.0 +-13.67302 4.1366844 -1.9159316 128.0 +-13.519596 4.1809888 -1.8976333 128.0 +-13.422832 4.2414775 -1.8874676 128.0 +-13.493671 4.3551006 -1.9014285 128.0 +-13.424351 4.423861 -1.8953291 128.0 +-13.418552 4.5134125 -1.8984466 128.0 +-13.435588 4.6110983 -1.9049526 128.0 +-13.398625 4.690505 -1.9037328 128.0 +-13.363995 4.7706304 -1.9029195 128.0 +-13.348436 4.8576226 -1.9049526 128.0 +-13.323024 4.9411578 -1.9056304 128.0 +-13.297089 5.0245643 -1.9063081 128.0 +-13.267858 5.106771 -1.9065791 128.0 +-13.227971 5.1848311 -1.9053593 128.0 +-13.191308 5.2640629 -1.9046816 128.0 +-13.157842 5.3445311 -1.904546 128.0 +-13.107404 5.4179749 -1.9019706 128.0 +-13.052907 5.4894652 -1.8988532 128.0 +-13.032642 5.5752978 -1.9008863 128.0 +-13.008182 5.6595073 -1.9023774 128.0 +-12.969586 5.7376142 -1.9018351 128.0 +-12.971185 5.8337469 -1.9073924 128.0 +-12.969386 5.9288788 -1.9125431 128.0 +-12.941749 6.0125203 -1.9138985 128.0 +-12.926116 6.1019664 -1.9171515 128.0 +-12.911659 6.1923032 -1.9206755 128.0 +-12.882328 6.2757502 -1.922031 128.0 +-12.859563 6.3625846 -1.9244708 128.0 +-12.845955 6.4542685 -1.9284015 128.0 +-12.74433 6.5014534 -1.9189135 128.0 +-12.769303 6.6132445 -1.9289436 128.0 +-12.77058 6.7135997 -1.9354497 128.0 +-12.727397 6.7908993 -1.9351786 128.0 +-12.709885 6.8820739 -1.9389738 128.0 +-12.669155 6.9608846 -1.9392449 128.0 +-12.638321 7.0452437 -1.9411426 128.0 +-12.606928 7.1294861 -1.9430401 128.0 +-12.578415 7.21558 -1.9454799 128.0 +-12.543324 7.2981043 -1.9469708 128.0 +-12.502574 7.3774486 -1.9476485 128.0 +-12.454521 7.452498 -1.9472419 128.0 +-12.416183 7.5334024 -1.9484618 128.0 +-12.395041 7.6250181 -1.9525281 128.0 +-12.358951 7.7077446 -1.9542902 128.0 +-12.317286 7.7871385 -1.9552389 128.0 +-12.311818 7.8898315 -1.9621516 128.0 +-12.273977 7.9722424 -1.9639137 128.0 +-12.255449 8.0675592 -1.9689287 128.0 +-12.196651 8.1365576 -1.9674377 128.0 +-12.173583 8.2295523 -1.9719107 128.0 +-12.185799 8.3472042 -1.9823475 128.0 +-12.164469 8.4427195 -1.9873625 128.0 +-12.138371 8.5354357 -1.9916999 128.0 +-12.065596 8.5953836 -1.9883113 128.0 +-12.016645 8.6721544 -1.9889891 128.0 +-11.972007 8.7521553 -1.9904801 128.0 +-11.945948 8.8460855 -1.995224 128.0 +-11.91443 8.9364567 -1.9991548 128.0 +-11.89172 9.033967 -2.0047121 128.0 +-11.833709 9.10495 -2.0043054 128.0 +-11.783871 9.1822605 -2.0053897 128.0 +-11.757642 9.2783279 -2.0106759 128.0 +-11.686558 9.3391638 -2.0082362 128.0 +-11.633655 9.4144354 -2.0090494 128.0 +-11.594062 9.5007114 -2.0123024 128.0 +-11.541649 9.5767336 -2.0133867 128.0 +-11.497083 9.659481 -2.0159621 128.0 +-11.429296 9.7227821 -2.0144711 128.0 +-11.400952 9.8198843 -2.0201638 128.0 +-11.340485 9.8896542 -2.0201638 128.0 +-11.253593 9.936101 -2.01542 128.0 +-11.225656 10.034678 -2.0215192 128.0 +-11.202073 10.137938 -2.0285676 128.0 +-11.15719 10.222545 -2.0318205 128.0 +-11.11169 10.306981 -2.0350735 128.0 +-11.06196 10.387854 -2.0376489 128.0 +-11.00304 10.460311 -2.0385976 128.0 +-10.958638 10.546865 -2.042393 128.0 +-10.908621 10.628426 -2.0452392 128.0 +-10.835442 10.687507 -2.0437484 128.0 +-10.785786 10.769892 -2.0468657 128.0 +-10.709047 10.825304 -2.0448327 128.0 +-10.661813 10.91065 -2.0486279 128.0 +-10.615996 10.997963 -2.0528297 128.0 +-10.550365 11.065045 -2.0532362 128.0 +-10.493822 11.141833 -2.0555406 128.0 +-10.427283 11.208189 -2.0559471 128.0 +-10.38178 11.297491 -2.0606911 128.0 +-10.324251 11.374185 -2.0631309 128.0 +-10.267494 11.452073 -2.0658417 128.0 +-10.204914 11.523758 -2.0674682 128.0 +-10.145103 11.598835 -2.0697725 128.0 +-10.085402 11.67436 -2.0722122 128.0 +-10.024512 11.748837 -2.0745165 128.0 +-9.964365 11.824519 -2.0770917 128.0 +-9.9011307 11.89686 -2.0791249 128.0 +-9.8317213 11.961981 -2.0799382 128.0 +-9.759388 12.02362 -2.0802093 128.0 +-9.6872873 12.085595 -2.080616 128.0 +-9.6154089 12.147915 -2.0811582 128.0 +-9.544961 12.21215 -2.0821068 128.0 +-9.4807453 12.284605 -2.0845466 128.0 +-9.4147978 12.355155 -2.0867152 128.0 +-9.3513203 12.429317 -2.0895617 128.0 +-9.3044195 12.526228 -2.0963387 128.0 +-9.2367601 12.595866 -2.0985076 128.0 +-9.1598806 12.653108 -2.0986431 128.0 +-9.0884066 12.71794 -2.1001341 128.0 +-9.0141973 12.779134 -2.1010828 128.0 +-8.9254265 12.819567 -2.0986431 128.0 +-8.876339 12.917369 -2.1058269 128.0 +-8.8002491 12.976509 -2.1066401 128.0 +-8.7072353 13.010502 -2.1033871 128.0 +-8.6048536 13.029787 -2.0978298 128.0 +-8.4928284 13.033365 -2.0898328 128.0 +-8.3832264 13.039395 -2.0823779 128.0 +-8.2531748 13.011943 -2.0696368 128.0 +-8.1542597 13.032103 -2.0647573 128.0 +-8.0429192 13.031304 -2.0566249 128.0 +-7.9205618 13.011015 -2.0455103 128.0 +-7.8135486 13.01435 -2.0383265 128.0 +-7.7037644 13.011748 -2.0303295 128.0 +-7.6008019 13.019414 -2.0240946 128.0 +-7.5010018 13.03146 -2.0186729 128.0 +-7.4003625 13.041049 -2.0129802 128.0 +-7.2950521 13.041249 -2.0059319 128.0 +-7.1842775 13.030237 -1.9972571 128.0 +-7.0800643 13.029676 -1.9903445 128.0 +-6.9831448 13.04143 -1.9854649 128.0 +-6.8849607 13.049858 -1.9801788 128.0 +-6.7855663 13.054935 -1.974486 128.0 +-6.6782417 13.043411 -1.9663534 128.0 +-6.5735455 13.035488 -1.9588985 128.0 +-6.4806571 13.049844 -1.9549679 128.0 +-6.382618 13.052871 -1.9494106 128.0 +-6.2860751 13.057865 -1.94426 128.0 +-6.1969252 13.077388 -1.9414136 128.0 +-6.1031656 13.086432 -1.9370762 128.0 +-6.0008507 13.07591 -1.9298924 128.0 +-5.907865 13.084492 -1.9256907 128.0 +-5.8093705 13.079749 -1.9195912 128.0 +-5.7056041 13.061582 -1.9115942 128.0 +-5.6097102 13.059932 -1.9061725 128.0 +-5.5171356 13.064899 -1.9018351 128.0 +-5.4224329 13.063733 -1.8966845 128.0 +-5.3290753 13.064651 -1.8919405 128.0 +-5.2373853 13.068594 -1.8877387 128.0 +-5.1429448 13.064529 -1.8824525 128.0 +-5.0494661 13.061648 -1.8774375 128.0 +-4.9604363 13.069228 -1.8740489 128.0 +-4.8704658 13.073423 -1.8702537 128.0 +-4.7853942 13.090034 -1.8683561 128.0 +-4.6999679 13.105162 -1.866323 128.0 +-4.617166 13.127211 -1.8653742 128.0 +-4.5407314 13.16747 -1.8671362 128.0 +-4.4785709 13.250461 -1.8751333 128.0 +-4.4059057 13.304027 -1.8789284 128.0 +-4.3257194 13.335522 -1.8796061 128.0 +-4.2486115 13.376922 -1.8817748 128.0 +-4.1682172 13.408416 -1.882588 128.0 +-4.0806766 13.416677 -1.8801483 128.0 +-3.9898012 13.412973 -1.8760821 128.0 +-3.9043822 13.426737 -1.8745911 128.0 +-3.8094654 13.406602 -1.8683561 128.0 +-3.7205079 13.405856 -1.8649676 128.0 +-3.6412904 13.439908 -1.8665941 128.0 +-3.5529315 13.439967 -1.8634765 128.0 +-3.4607513 13.424098 -1.8581904 128.0 +-3.3746955 13.430667 -1.8561573 128.0 +-3.2886894 13.436686 -1.8541241 128.0 +-3.2027366 13.442155 -1.852091 128.0 +-3.1197493 13.459622 -1.8518199 128.0 +-3.0351434 13.469813 -1.8506 128.0 +-2.9484112 13.469793 -1.8480247 128.0 +-2.8659127 13.4886 -1.8481603 128.0 +-2.7840941 13.510783 -1.848838 128.0 +-2.699589 13.519839 -1.8477536 128.0 +-2.6130087 13.517667 -1.8451784 128.0 +-2.5283778 13.52468 -1.8439584 128.0 +-2.4437592 13.531164 -1.8427385 128.0 +-2.3632395 13.560545 -1.8447716 128.0 +-2.2809739 13.580653 -1.845585 128.0 +-2.1958621 13.583634 -1.8440939 128.0 +-2.112169 13.594894 -1.8438228 128.0 +-2.0287125 13.607598 -1.8438228 128.0 +-1.9436384 13.609001 -1.8423319 128.0 +-1.8563441 13.593184 -1.8385367 128.0 +-1.7705978 13.586635 -1.836097 128.0 +-1.685734 13.585444 -1.8344704 128.0 +-1.6017636 13.590612 -1.8337927 128.0 +-1.5182331 13.5992 -1.8336571 128.0 +-1.4336183 13.597421 -1.8321662 128.0 +-1.3501592 13.605962 -1.8321662 128.0 +-1.2685772 13.634706 -1.8350126 128.0 +-1.1848924 13.642234 -1.8350126 128.0 +-1.1005253 13.641347 -1.8339282 128.0 +-1.0160664 13.637962 -1.8325728 128.0 +-0.93250149 13.645917 -1.8328439 128.0 +-0.84826207 13.643471 -1.8317596 128.0 +-0.76286811 13.618743 -1.8276933 128.0 +-0.67914259 13.620198 -1.8272867 128.0 +-0.59594756 13.633018 -1.8285066 128.0 +-0.51280683 13.650279 -1.8304042 128.0 +-0.42925867 13.6601 -1.8313529 128.0 +-0.34520814 13.653563 -1.8301331 128.0 +-0.26117805 13.642547 -1.828371 128.0 +-0.17732199 13.632995 -1.8268801 128.0 +-0.093777537 13.649678 -1.8290488 128.0 +-0.010012331 13.636126 -1.8271512 128.0 +0.07369481 13.642865 -1.8281 128.0 +0.15745008 13.646119 -1.8286421 128.0 +0.24110821 13.640934 -1.8281 128.0 +0.32489711 13.64316 -1.8286421 128.0 +0.4089002 13.650812 -1.8299975 128.0 +0.49243805 13.642106 -1.8291843 128.0 +0.57626051 13.641797 -1.8295909 128.0 +0.65990633 13.637015 -1.8294554 128.0 +0.74286795 13.619848 -1.8276933 128.0 +0.82792377 13.639757 -1.8310819 128.0 +0.91430891 13.674952 -1.8366392 128.0 +0.99935371 13.684895 -1.8388078 128.0 +1.0821309 13.66369 -1.8367747 128.0 +1.1642643 13.637049 -1.8340638 128.0 +1.2480081 13.630635 -1.8341993 128.0 +1.3332587 13.639484 -1.8365036 128.0 +1.4191769 13.652727 -1.8394855 128.0 +1.5032471 13.646716 -1.8398921 128.0 +1.587068 13.63822 -1.8400277 128.0 +1.6713233 13.633142 -1.8407054 128.0 +1.7549433 13.622631 -1.8407054 128.0 +1.838497 13.611606 -1.8407054 128.0 +1.9219817 13.600069 -1.8407054 128.0 +2.0066957 13.596842 -1.8419253 128.0 +2.0887308 13.575459 -1.8407054 128.0 +2.1721456 13.563366 -1.8408409 128.0 +2.2527256 13.534145 -1.8386723 128.0 +2.3355584 13.519092 -1.8385367 128.0 +2.4200377 13.513284 -1.8397566 128.0 +2.5052559 13.510844 -1.8415186 128.0 +2.5961328 13.537059 -1.847347 128.0 +2.6847296 13.549059 -1.8512777 128.0 +2.7666235 13.526507 -1.8504645 128.0 +2.8538623 13.529635 -1.8533108 128.0 +2.9378767 13.51671 -1.8539885 128.0 +3.0183787 13.487794 -1.8524976 128.0 +3.095747 13.445848 -1.8492446 128.0 +3.1672378 13.380321 -1.8427385 128.0 +3.2570035 13.392405 -1.8472115 128.0 +3.3271163 13.324104 -1.8404343 128.0 +3.4033992 13.282324 -1.8374524 128.0 +3.4833231 13.255442 -1.8366392 128.0 +3.5661373 13.239559 -1.8374524 128.0 +3.657584 13.254677 -1.8427385 128.0 +3.7493501 13.269169 -1.8480247 128.0 +3.8240921 13.223071 -1.8447716 128.0 +3.9096525 13.214559 -1.8469404 128.0 +4.0058665 13.240582 -1.8541241 128.0 +4.0905461 13.227112 -1.8557507 128.0 +4.17342 13.207433 -1.8565639 128.0 +4.2485995 13.163661 -1.8539885 128.0 +4.3258796 13.126993 -1.8524976 128.0 +4.4038172 13.09269 -1.8514132 128.0 +4.4895363 13.081354 -1.8537174 128.0 +4.5772462 13.075068 -1.856835 128.0 +4.6613841 13.057935 -1.8584615 128.0 +4.7498879 13.052363 -1.86185 128.0 +4.8433218 13.059202 -1.8671362 128.0 +4.9349165 13.059823 -1.8716091 128.0 +5.0252771 13.056112 -1.8755399 128.0 +5.1143317 13.048093 -1.8789284 128.0 +5.2038441 13.040392 -1.8824525 128.0 +5.2964363 13.039427 -1.887061 128.0 +5.3831573 13.023165 -1.8895007 128.0 +5.4744868 13.017288 -1.8935671 128.0 +5.58426 13.053594 -1.9040039 128.0 +5.6840124 13.064509 -1.9107809 128.0 +5.7744889 13.052945 -1.9143051 128.0 +5.8581285 13.0254 -1.915525 128.0 +5.9544168 13.025254 -1.9209466 128.0 +6.0475836 13.017227 -1.925284 128.0 +6.1501799 13.028257 -1.9326034 128.0 +6.2467122 13.025116 -1.9378895 128.0 +6.3412671 13.016826 -1.942498 128.0 +6.4311228 12.998096 -1.9456154 128.0 +6.5298824 12.99646 -1.9514438 128.0 +6.6284127 12.993217 -1.9571365 128.0 +6.7298827 12.994531 -1.9636426 128.0 +6.832078 12.995965 -1.9702842 128.0 +6.9284811 12.985269 -1.9751637 128.0 +7.0297265 12.98259 -1.9813987 128.0 +7.1283364 12.973946 -1.9868203 128.0 +7.2381997 12.984484 -1.9953595 128.0 +7.3513851 12.999333 -2.0047121 128.0 +7.455658 12.996953 -2.0114892 128.0 +7.557188 12.988642 -2.017453 128.0 +7.6508398 12.96592 -2.0212481 128.0 +7.7526364 12.956141 -2.0272121 128.0 +7.856142 12.948139 -2.0335827 128.0 +7.978528 12.969734 -2.0448327 128.0 +8.088891 12.970136 -2.0528297 128.0 +8.1942635 12.961294 -2.0594711 128.0 +8.3062458 12.961658 -2.0677392 128.0 +8.4298725 12.978581 -2.0788538 128.0 +8.5828896 13.038335 -2.097152 128.0 +8.6929693 13.030758 -2.1046069 128.0 +8.7833033 12.992769 -2.1071823 128.0 +8.8623009 12.937814 -2.1070466 128.0 +8.9031057 12.827843 -2.0978298 128.0 +8.9457464 12.721913 -2.0892906 128.0 +8.9673042 12.587701 -2.0760074 128.0 +9.0501699 12.540476 -2.0773628 128.0 +9.1351318 12.495907 -2.0792606 128.0 +9.2110443 12.438824 -2.0791249 128.0 +9.2794657 12.371767 -2.0773628 128.0 +9.3342266 12.286983 -2.072619 128.0 +9.3852758 12.198069 -2.0671971 128.0 +9.4447212 12.120713 -2.0638087 128.0 +9.5023441 12.041533 -2.060149 128.0 +9.5636806 11.967521 -2.0574381 128.0 +9.6363087 11.907844 -2.0573025 128.0 +9.6909819 11.826268 -2.0533719 128.0 +9.7500782 11.75057 -2.0505254 128.0 +9.8086119 11.674594 -2.0476789 128.0 +9.8704309 11.602869 -2.045646 128.0 +9.9349737 11.53458 -2.0442905 128.0 +9.9983988 11.465189 -2.0427995 128.0 +10.062658 11.396939 -2.0415797 128.0 +10.125135 11.326856 -2.0400887 128.0 +10.187133 11.256435 -2.0385976 128.0 +10.246639 11.183489 -2.0367 128.0 +10.294853 11.098614 -2.0326338 128.0 +10.340379 11.011402 -2.0281608 128.0 +10.394096 10.933386 -2.02545 128.0 +10.446559 10.854412 -2.0226038 128.0 +10.501902 10.778754 -2.0204349 128.0 +10.555318 10.701416 -2.0179951 128.0 +10.612381 10.628035 -2.0163686 128.0 +10.668941 10.554357 -2.0147421 128.0 +10.727124 10.482462 -2.0135224 128.0 +10.780549 10.406122 -2.0114892 128.0 +10.833441 10.329523 -2.0094559 128.0 +10.88652 10.253345 -2.0075583 128.0 +10.944152 10.181629 -2.0066097 128.0 +10.999124 10.107582 -2.0052543 128.0 +11.052133 10.031911 -2.0036278 128.0 +11.095775 9.9480333 -2.0003746 128.0 +11.130646 9.8567734 -1.9956306 128.0 +11.171527 9.7713318 -1.9921066 128.0 +11.214778 9.6883507 -1.9891247 128.0 +11.261201 9.6084232 -1.9868203 128.0 +11.307066 9.5282907 -1.9845161 128.0 +11.350087 9.4460564 -1.9818053 128.0 +11.385636 9.3579912 -1.9778745 128.0 +11.422072 9.2710953 -1.9742149 128.0 +11.458644 9.1847239 -1.9706908 128.0 +11.498471 9.1013288 -1.9678444 128.0 +11.546293 9.0245028 -1.966489 128.0 +11.575566 8.9335098 -1.9620161 128.0 +11.646712 8.8749266 -1.9648625 128.0 +11.694614 8.7985306 -1.9637781 128.0 +11.728498 8.7118378 -1.9603896 128.0 +11.776938 8.6361942 -1.9595762 128.0 +11.819274 8.5562162 -1.9578142 128.0 +11.848981 8.4674034 -1.9540191 128.0 +11.869139 8.3722668 -1.9487329 128.0 +11.894267 8.2811651 -1.9443955 128.0 +11.932608 8.1996107 -1.9423624 128.0 +11.977775 8.1229019 -1.9415492 128.0 +12.019156 8.0437441 -1.9401937 128.0 +12.047618 7.9561944 -1.9368051 128.0 +12.079608 7.8713036 -1.9340943 128.0 +12.122677 7.7938213 -1.9332811 128.0 +12.146845 7.7044315 -1.9294858 128.0 +12.193049 7.6292295 -1.9293503 128.0 +12.210967 7.5365772 -1.9247419 128.0 +12.234978 7.4481149 -1.9212177 128.0 +12.253266 7.3565822 -1.9168804 128.0 +12.284534 7.2731824 -1.9147117 128.0 +12.311818 7.1876783 -1.9120009 128.0 +12.349678 7.1085391 -1.911052 128.0 +12.392201 7.0321398 -1.9109164 128.0 +12.418688 6.9467797 -1.9083412 128.0 +12.443726 6.8608813 -1.9056304 128.0 +12.456861 6.7687879 -1.9011574 128.0 +12.519122 6.7034516 -1.9044105 128.0 +12.549502 6.6209617 -1.902784 128.0 +12.602199 6.5502319 -1.9046816 128.0 +12.601586 6.4520116 -1.8984466 128.0 +12.580783 6.3442307 -1.8892297 128.0 +12.615924 6.2651544 -1.8886875 128.0 +12.628317 6.1750045 -1.8847568 128.0 +12.674003 6.1012702 -1.8859767 128.0 +12.698667 6.0174489 -1.8840791 128.0 +12.721881 5.9331365 -1.8820459 128.0 +12.740037 5.8466992 -1.879335 128.0 +12.759418 5.7610784 -1.8768953 128.0 +12.789095 5.6802664 -1.8760821 128.0 +12.810997 5.5961342 -1.8741845 128.0 +12.828707 5.5103831 -1.8717446 128.0 +12.855887 5.4288659 -1.8707958 128.0 +12.883466 5.3476024 -1.8699826 128.0 +12.901358 5.2624626 -1.8678139 128.0 +12.874546 5.1596122 -1.8591392 128.0 +12.945604 5.0961251 -1.8649676 128.0 +12.980327 5.0180254 -1.8655097 128.0 +13.011799 4.9386368 -1.8656453 128.0 +13.01029 4.8469439 -1.8610368 128.0 +13.077006 4.7806315 -1.8664585 128.0 +13.116352 4.7039819 -1.8679495 128.0 +13.192636 4.6401796 -1.8748622 128.0 +13.189013 4.548161 -1.8702537 128.0 +13.220426 4.4684181 -1.8707958 128.0 +13.243833 4.3859692 -1.8702537 128.0 +13.26861 4.3040128 -1.8699826 128.0 +13.308933 4.227016 -1.8720157 128.0 +13.357326 4.1523337 -1.8752688 128.0 +13.342741 4.0581865 -1.869576 128.0 +13.461405 4.004209 -1.8829947 128.0 +13.531386 3.9348166 -1.8895007 128.0 +13.535261 3.8460279 -1.8866544 128.0 +13.466956 3.7374666 -1.8736422 128.0 +13.489635 3.6547644 -1.8736422 128.0 +13.51468 3.5726845 -1.8740489 128.0 +13.561292 3.4961243 -1.877573 128.0 +13.602667 3.4179189 -1.8804194 128.0 +13.603173 3.3294432 -1.877573 128.0 +13.638767 3.2495875 -1.8797417 128.0 +13.669066 3.1683016 -1.8812326 128.0 +13.686316 3.0839345 -1.8809615 128.0 +13.705949 3.0001106 -1.8810971 128.0 +13.740575 2.9194572 -1.8834014 128.0 +13.757259 2.8348916 -1.8832659 128.0 +13.798684 2.755276 -1.8866544 128.0 +13.824085 2.6722496 -1.8878742 128.0 +13.851909 2.5895615 -1.8895007 128.0 +13.871437 2.5052235 -1.8900429 128.0 +13.881667 2.4192121 -1.8893652 128.0 +13.887456 2.3325131 -1.8881453 128.0 +13.900529 2.2470992 -1.8880098 128.0 +13.916013 2.1620691 -1.8882809 128.0 +13.955476 2.0805867 -1.8919405 128.0 +13.959152 1.9936574 -1.8907206 128.0 +13.977012 1.9087726 -1.8915339 128.0 +13.988461 1.8229754 -1.8915339 128.0 +14.02593 1.7404044 -1.8951936 128.0 +14.0452 1.655354 -1.8964134 128.0 +14.063955 1.5701327 -1.8976333 128.0 +14.10584 1.4872376 -1.9021062 128.0 +14.129489 1.4021257 -1.9041394 128.0 +14.15065 1.316596 -1.9059014 128.0 +14.160437 1.229916 -1.9061725 128.0 +14.167717 1.143006 -1.9061725 128.0 +14.180391 1.0564948 -1.9069858 128.0 +14.202422 0.97054696 -1.9091544 128.0 +14.206133 0.8832612 -1.9088833 128.0 +14.210296 0.796022 -1.9087478 128.0 +14.210954 0.70861679 -1.9082056 128.0 +14.206126 0.62101698 -1.9069858 128.0 +14.234421 0.5347687 -1.9103743 128.0 +14.228522 0.44713756 -1.9091544 128.0 +14.194351 0.35889694 -1.9041394 128.0 +14.226004 0.27236509 -1.9082056 128.0 +14.255146 0.18543245 -1.9120009 128.0 +14.256016 0.097961031 -1.9120009 128.0 +14.270219 0.010496514 -1.9138985 128.0 +14.257135 -0.076994903 -1.9121364 128.0 +14.257385 -0.16448499 -1.912272 128.0 +14.26007 -0.2520335 -1.9128141 128.0 +14.26915 -0.33978602 -1.9143051 128.0 +14.24699 -0.4267408 -1.9115942 128.0 +14.210439 -0.51293647 -1.9069858 128.0 +14.24761 -0.60183364 -1.9125431 128.0 +14.257504 -0.68991405 -1.9144406 128.0 +14.244098 -0.77689809 -1.9132208 128.0 +14.236096 -0.86410356 -1.9128141 128.0 +14.238435 -0.95196688 -1.9138985 128.0 +14.211575 -1.0377996 -1.911052 128.0 +14.228643 -1.1268573 -1.9143051 128.0 +14.217512 -1.2138044 -1.9137629 128.0 +14.200917 -1.3002058 -1.9125431 128.0 +14.222255 -1.3902073 -1.9166093 128.0 +14.214442 -1.4775497 -1.9167448 128.0 +14.205109 -1.5647399 -1.9167448 128.0 +14.177526 -1.6498106 -1.9143051 128.0 +14.173036 -1.7374943 -1.9151183 128.0 +14.153264 -1.8232867 -1.9138985 128.0 +14.138865 -1.9096974 -1.9134918 128.0 +14.103336 -1.9930892 -1.9102387 128.0 +13.449818 -1.9850014 -1.8215939 128.0 +12.98497 -1.9978952 -1.7589732 128.0 +12.717128 -2.0366476 -1.7235966 128.0 +12.44149 -2.0708885 -1.6871356 128.0 +12.292841 -2.1237483 -1.6682951 128.0 +12.223989 -2.189182 -1.6605692 128.0 +11.225439 -2.0815523 -1.5235356 128.0 +10.876756 -2.0860207 -1.4767734 128.0 +10.516789 -2.0839803 -1.4283847 128.0 +10.274723 -2.1016231 -1.3963966 128.0 +9.7555838 -2.0579 -1.3256433 128.0 +9.1444426 -1.9876904 -1.2418779 128.0 +8.8961601 -1.990975 -1.2088056 128.0 +8.7959137 -2.0252969 -1.1964712 128.0 +8.5789242 -2.0308533 -1.1677362 128.0 +8.2977037 -2.0181401 -1.1299198 128.0 +8.1323233 -2.0308552 -1.1083684 128.0 +7.8893642 -2.0217006 -1.0758382 128.0 +8.039712 -2.1128738 -1.0988804 128.0 +7.6831479 -2.0696659 -1.0502206 128.0 +7.8107014 -2.1555076 -1.0701454 128.0 +7.5170145 -2.1241956 -1.0302958 128.0 +7.675159 -2.2198191 -1.0546936 128.0 +7.5340843 -2.2292094 -1.0365309 128.0 +7.522161 -2.2759695 -1.0368019 128.0 +7.4436889 -2.3021786 -1.027585 128.0 +7.4464283 -2.3531818 -1.0300248 128.0 +7.3290744 -2.3656604 -1.0152507 128.0 +7.3802915 -2.432291 -1.0247387 128.0 +7.2290611 -2.4317336 -1.005085 128.0 +7.2149415 -2.476366 -1.0052205 128.0 +7.2042866 -2.5222263 -1.0058982 128.0 +7.1588154 -2.5557253 -1.0015608 128.0 +6.9586511 -2.5325229 -0.9747234 128.0 +7.0470238 -2.6137559 -0.98990417 128.0 +6.9604149 -2.6303322 -0.97960293 128.0 +6.9589391 -2.6786849 -0.98177159 128.0 +6.8934817 -2.7021725 -0.97458786 128.0 +7.0092831 -2.7972941 -0.99410599 128.0 +6.8423619 -2.7794788 -0.97201252 128.0 +6.7848902 -2.8047585 -0.96604866 128.0 +6.8113914 -2.8647721 -0.97255468 128.0 +6.7463169 -2.8862498 -0.96550649 128.0 +6.7121267 -2.9204757 -0.96306676 128.0 +6.6786776 -2.9547918 -0.9607625 128.0 +6.6721683 -3.0009985 -0.96252453 128.0 +6.614882 -3.0241699 -0.95669621 128.0 +6.5791292 -3.0567703 -0.95412093 128.0 +6.6184874 -3.1245716 -0.96293116 128.0 +6.5759635 -3.1539843 -0.95940709 128.0 +5.4217191 -2.6415002 -0.78672576 128.0 +5.400969 -2.6725209 -0.786048 128.0 +6.5628314 -3.2976208 -0.96645528 128.0 +6.5142317 -3.3234208 -0.96211791 128.0 +6.4910774 -3.3619618 -0.96171129 128.0 +6.4536638 -3.3929679 -0.95913601 128.0 +6.2849941 -3.3536849 -0.93622929 128.0 +6.264298 -3.3921859 -0.93622929 128.0 +6.3640666 -3.4968719 -0.95506972 128.0 +6.3528752 -3.5416439 -0.95669621 128.0 +6.2835908 -3.5537348 -0.9492414 128.0 +6.2676835 -3.595674 -0.95019019 128.0 +6.232657 -3.6265905 -0.94815701 128.0 +6.1565289 -3.6330457 -0.93961787 128.0 +6.1188173 -3.6615963 -0.93717808 128.0 +6.1114821 -3.7083223 -0.93961787 128.0 +6.0421991 -3.717201 -0.932163 128.0 +6.0840106 -3.7945743 -0.94259977 128.0 +6.0656376 -3.8350103 -0.94341302 128.0 +6.0570078 -3.881778 -0.94585282 128.0 +6.016458 -3.9080768 -0.94314194 128.0 +5.9435382 -3.9127796 -0.93514496 128.0 +5.9433203 -3.9651194 -0.93907565 128.0 +5.9082079 -3.9942989 -0.93731362 128.0 +5.9203715 -4.0556707 -0.94341302 128.0 +5.8677006 -4.0727148 -0.93880457 128.0 +5.8158545 -4.0898356 -0.93433172 128.0 +5.8269639 -4.1513119 -0.94043112 128.0 +5.8616385 -4.2304707 -0.95059681 128.0 +5.8915601 -4.3072863 -0.9600848 128.0 +5.8721862 -4.3486614 -0.96130466 128.0 +5.6781516 -4.2591777 -0.93270516 128.0 +5.4956985 -4.1752725 -0.90586776 128.0 +5.4676204 -4.2071028 -0.90546107 128.0 +5.7699485 -4.4963341 -0.96238899 128.0 +5.708806 -4.5052624 -0.95656067 128.0 +5.6903429 -4.5476279 -0.95818716 128.0 +5.6068778 -4.5375848 -0.94842809 128.0 +5.6279774 -4.6120915 -0.95710284 128.0 +5.613297 -4.6579247 -0.95954263 128.0 +5.5777831 -4.6865439 -0.95832276 128.0 +5.5315647 -4.7059155 -0.95520526 128.0 +5.4838181 -4.7236032 -0.95181668 128.0 +5.4046998 -4.7135344 -0.94273531 128.0 +5.244957 -4.6311989 -0.91887981 128.0 +5.2784915 -4.7187576 -0.93026543 128.0 +8.7844353 -7.950078 -1.5824966 128.0 +8.7267227 -7.9957972 -1.5808702 128.0 +3.5439742 -3.2876914 -0.62299019 128.0 +3.5143452 -3.3005581 -0.62122816 128.0 +3.4933093 -3.321377 -0.62109262 128.0 +3.4828582 -3.3523674 -0.62299019 128.0 +3.4239016 -3.3363397 -0.61567092 128.0 +3.3822038 -3.3364136 -0.61160463 128.0 +3.3532548 -3.3487029 -0.60997814 128.0 +3.320102 -3.3565371 -0.60753834 128.0 +7.788744 -7.9706812 -1.4862614 128.0 +7.7259278 -8.0040655 -1.4835505 128.0 +7.6588936 -8.0326767 -1.4800264 128.0 +7.5483236 -8.0146093 -1.4678276 128.0 +7.4720097 -8.0317593 -1.4624058 128.0 +7.3883963 -8.0402508 -1.4554932 128.0 +2.5849071 -2.8482277 -0.48785418 128.0 +7.1747503 -8.0026941 -1.4320443 128.0 +2.5602703 -2.8916016 -0.49002287 128.0 +2.5509593 -2.9169512 -0.49178493 128.0 +7.1739106 -8.3043394 -1.4629481 128.0 +7.1382556 -8.3662901 -1.4662011 128.0 +7.1519108 -8.4872093 -1.4800264 128.0 +7.0958967 -8.5263634 -1.4792131 128.0 +7.0755315 -8.608778 -1.4861258 128.0 +7.0494256 -8.6851082 -1.4919542 128.0 +7.0245075 -8.7637596 -1.4981891 128.0 +7.0136471 -8.8610754 -1.5076771 128.0 +7.0396843 -9.0069838 -1.5255687 128.0 +7.0242391 -9.1017752 -1.5345145 128.0 +6.9778676 -9.1573124 -1.5366832 128.0 +6.8965297 -9.1667032 -1.5309905 128.0 +6.8549242 -9.2287312 -1.534379 128.0 +6.795239 -9.2666235 -1.5337013 128.0 +6.7597494 -9.3378372 -1.5387163 128.0 +6.6942616 -9.3678532 -1.5368187 128.0 +6.6286597 -9.397418 -1.5349212 128.0 +6.5425668 -9.3972588 -1.528144 128.0 +6.497128 -9.4551907 -1.531126 128.0 +6.4412141 -9.4981585 -1.5316682 128.0 +6.381711 -9.5358553 -1.5313971 128.0 +6.3148899 -9.5624323 -1.5293639 128.0 +6.2463603 -9.5860577 -1.5269241 128.0 +6.2029629 -9.6483727 -1.5308549 128.0 +6.1340923 -9.6711922 -1.5284151 128.0 +6.0819931 -9.7204065 -1.5303128 128.0 +6.0196333 -9.7533264 -1.5296351 128.0 +5.9493704 -9.7731533 -1.5269241 128.0 +5.8750114 -9.7856894 -1.523129 128.0 +5.8199048 -9.8300791 -1.5244844 128.0 +5.7639751 -9.8733053 -1.5257043 128.0 +5.7092166 -9.9187908 -1.5273308 128.0 +5.6418915 -9.9424324 -1.5255687 128.0 +5.5740075 -9.9647579 -1.5236712 128.0 +5.5084543 -9.9909639 -1.5224513 128.0 +5.4508319 -10.031539 -1.5235356 128.0 +5.3891768 -10.064795 -1.5235356 128.0 +5.313911 -10.072262 -1.5196048 128.0 +5.2428694 -10.087095 -1.516894 128.0 +1.375152 -2.6865344 -0.37454054 128.0 +5.0950451 -10.103788 -1.5097102 128.0 +5.0593958 -10.188103 -1.5178428 128.0 +4.9941759 -10.213614 -1.5170295 128.0 +4.9296932 -10.240495 -1.5164874 128.0 +4.8633718 -10.263388 -1.515403 128.0 +4.796536 -10.284954 -1.5141832 128.0 +4.729619 -10.306087 -1.5129633 128.0 +4.656507 -10.313242 -1.5097102 128.0 +4.5939431 -10.343431 -1.5099813 128.0 +4.5331669 -10.377779 -1.5109302 128.0 +4.4709687 -10.40904 -1.5114723 128.0 +4.4043179 -10.429889 -1.5105236 128.0 +4.3390989 -10.453972 -1.5101168 128.0 +4.2718787 -10.47306 -1.5090325 128.0 +4.2016397 -10.48436 -1.5068638 128.0 +4.1404963 -10.518241 -1.5080837 128.0 +4.0751648 -10.5416 -1.5078126 128.0 +4.0037255 -10.548807 -1.5052373 128.0 +3.9306221 -10.550893 -1.5019844 128.0 +3.8804381 -10.614824 -1.5078126 128.0 +1.1653794 -3.2503781 -0.43404377 128.0 +3.7462692 -10.651363 -1.5063217 128.0 +1.1528616 -3.3440485 -0.4455649 128.0 +1.1408875 -3.3764014 -0.44922453 128.0 +1.1083115 -3.3475981 -0.44407392 128.0 +3.4360497 -10.593076 -1.485177 128.0 +1.052151 -3.3137329 -0.43729678 128.0 +1.018268 -3.2766056 -0.4310618 128.0 +0.98459244 -3.2382412 -0.42469132 128.0 +0.96300942 -3.2385237 -0.42387804 128.0 +0.94561017 -3.2529337 -0.42509794 128.0 +0.95054936 -3.346354 -0.43756786 128.0 +0.92204922 -3.323483 -0.43350157 128.0 +2.9333808 -10.827331 -1.4962915 128.0 +2.871449 -10.862367 -1.4987313 128.0 +2.8121655 -10.908563 -1.5027976 128.0 +2.7350371 -10.885255 -1.4971048 128.0 +1.9982306 -8.1648836 -1.1116215 128.0 +0.76579529 -3.21542 -0.41384789 128.0 +2.5333169 -10.929893 -1.4965626 128.0 +1.9887489 -8.8265944 -1.1994531 128.0 +2.3915834 -10.926283 -1.4918187 128.0 +2.324702 -10.941721 -1.4919542 128.0 +1.7377477 -8.4337683 -1.1396788 128.0 +1.677235 -8.4005508 -1.1335794 128.0 +1.6258466 -8.4116573 -1.1337149 128.0 +1.5789375 -8.4467955 -1.137239 128.0 +1.978991 -10.958158 -1.4850415 128.0 +1.9122262 -10.973022 -1.4854481 128.0 +1.842563 -10.97087 -1.4835505 128.0 +1.3106 -8.1084003 -1.0853262 128.0 +1.7061214 -10.981885 -1.4820596 128.0 +1.294436 -8.6834164 -1.162721 128.0 +1.5766926 -11.040247 -1.4873457 128.0 +1.5077144 -11.040878 -1.4861258 128.0 +1.4355863 -11.016519 -1.4815173 128.0 +1.3699157 -11.040852 -1.4836861 128.0 +1.3021445 -11.049049 -1.4836861 128.0 +1.2350941 -11.063724 -1.4846349 128.0 +1.1663537 -11.063211 -1.4835505 128.0 +1.0998193 -11.083962 -1.4854481 128.0 +1.031146 -11.083596 -1.4844993 128.0 +0.96191829 -11.075896 -1.4826018 128.0 +0.89505559 -11.095416 -1.4844993 128.0 +0.8272531 -11.10465 -1.4850415 128.0 +0.75808704 -11.094691 -1.4830084 128.0 +0.68845928 -11.074412 -1.4796197 128.0 +0.61955249 -11.061611 -1.4773155 128.0 +0.55196428 -11.071141 -1.4781288 128.0 +0.48376286 -11.068381 -1.4773155 128.0 +0.41528109 -11.05629 -1.4752824 128.0 +0.34730858 -11.054668 -1.4747403 128.0 +0.27804279 -11.000135 -1.4670143 128.0 +0.21122576 -11.037296 -1.4718938 128.0 +0.14354987 -11.042347 -1.4724361 128.0 +0.075717412 -11.032122 -1.470945 128.0 +0.0080226455 -11.030397 -1.4706739 128.0 +-0.059743915 -11.046091 -1.4728427 128.0 +-0.12754314 -11.047498 -1.4731138 128.0 +-0.19579887 -11.073254 -1.4767734 128.0 +-0.2636216 -11.066892 -1.4760957 128.0 +-0.331018 -11.04823 -1.4737915 128.0 +-0.39937383 -11.061833 -1.4759601 128.0 +-0.46611223 -11.032447 -1.4723005 128.0 +-0.5351373 -11.057089 -1.4760957 128.0 +-0.60297227 -11.053597 -1.4760957 128.0 +-0.67366451 -11.097159 -1.4826018 128.0 +-0.74260157 -11.105668 -1.4843638 128.0 +-0.81246185 -11.124618 -1.4876168 128.0 +-0.88054955 -11.117448 -1.4873457 128.0 +-0.94849557 -11.108874 -1.4869391 128.0 +-1.015015 -11.085086 -1.4844993 128.0 +-1.0813745 -11.061886 -1.4821951 128.0 +-1.1496383 -11.058984 -1.4827373 128.0 +-1.2240889 -11.111795 -1.4910053 128.0 +-1.2905291 -11.089314 -1.4889722 128.0 +-1.3632483 -11.119539 -1.4942584 128.0 +-1.4349946 -11.138479 -1.4980536 128.0 +-1.5027816 -11.125538 -1.4975114 128.0 +-1.567553 -11.091581 -1.4941229 128.0 +-1.6332662 -11.066072 -1.4919542 128.0 +-1.6982734 -11.037236 -1.4893788 128.0 +-1.7622052 -11.003129 -1.4861258 128.0 +-1.8311497 -11.000905 -1.4873457 128.0 +-1.9021569 -11.009965 -1.4901921 128.0 +-1.9684546 -10.991259 -1.4892433 128.0 +-2.0403738 -11.003328 -1.4926319 128.0 +-2.1201649 -11.054823 -1.5015777 128.0 +-2.1925774 -11.06493 -1.5048307 128.0 +-2.2687664 -11.092037 -1.5105236 128.0 +-2.3433259 -11.10893 -1.5148609 128.0 +-2.4110241 -11.092406 -1.5145898 128.0 +-2.4775262 -11.070636 -1.513641 128.0 +-2.5474081 -11.063915 -1.5148609 128.0 +-2.6090858 -11.022044 -1.5112013 128.0 +-2.6719847 -10.986573 -1.5084903 128.0 +-2.7424667 -10.982468 -1.5102524 128.0 +-2.8070974 -10.954876 -1.5087614 128.0 +-2.8762767 -10.945112 -1.5098457 128.0 +-2.9459572 -10.936825 -1.5112013 128.0 +-3.0093195 -10.905171 -1.5093036 128.0 +-3.0705187 -10.866479 -1.5064572 128.0 +-3.133008 -10.833158 -1.5044241 128.0 +-3.1968906 -10.805179 -1.5032042 128.0 +-3.2616954 -10.780618 -1.5025265 128.0 +-3.3356853 -10.785958 -1.5061861 128.0 +-3.404192 -10.772846 -1.5072705 128.0 +-3.4647515 -10.734783 -1.5048307 128.0 +-3.5259027 -10.699207 -1.5027976 128.0 +-3.5936964 -10.683945 -1.5037464 128.0 +-3.6569328 -10.655133 -1.5027976 128.0 +-3.7389369 -10.680186 -1.5097102 128.0 +-3.810394 -10.67384 -1.51215 128.0 +-3.8778486 -10.655845 -1.5129633 128.0 +-3.9379911 -10.617915 -1.5109302 128.0 +-3.9953632 -10.573163 -1.5079482 128.0 +-4.0583844 -10.543825 -1.5072705 128.0 +-4.1273422 -10.529795 -1.5088969 128.0 +-4.191874 -10.504272 -1.5088969 128.0 +-4.2532654 -10.471009 -1.5078126 128.0 +-1.497961 -3.6231759 -0.49801987 128.0 +-1.5259253 -3.6276159 -0.50005305 128.0 +-4.4569716 -10.418274 -1.511879 128.0 +-4.5164657 -10.380737 -1.510388 128.0 +-4.5720592 -10.334707 -1.5076771 128.0 +-4.6366048 -10.30917 -1.5080837 128.0 +-4.0337334 -8.8234596 -1.2889112 128.0 +-4.7615128 -10.2488 -1.5076771 128.0 +-1.5288742 -3.2379923 -0.45152876 128.0 +-1.555568 -3.2428441 -0.45369744 128.0 +-1.6366147 -3.3588288 -0.47280896 128.0 +-1.6730096 -3.3806927 -0.47768849 128.0 +-1.6919426 -3.3668222 -0.47714633 128.0 +-1.7161708 -3.3634379 -0.47823066 128.0 +-1.7408768 -3.3607626 -0.47945055 128.0 +-1.7596211 -3.3465097 -0.47890836 128.0 +-5.3889637 -10.099736 -1.5277374 128.0 +-5.4201703 -10.009848 -1.5189271 128.0 +-4.8350563 -8.7997875 -1.3352668 128.0 +-5.569612 -9.9910431 -1.5265175 128.0 +-5.6308112 -9.9566803 -1.5265175 128.0 +-5.7011647 -9.9382725 -1.5290928 128.0 +-5.7729988 -9.9219437 -1.5320748 128.0 +-4.8157272 -8.1609478 -1.2580075 128.0 +-1.9309673 -3.2264311 -0.47606197 128.0 +-1.9522697 -3.2170634 -0.47646859 128.0 +-6.0178714 -9.782342 -1.5328881 128.0 +-6.0856452 -9.757844 -1.5349212 128.0 +-6.1496391 -9.7270184 -1.5360055 128.0 +-6.1953092 -9.6674128 -1.5324814 128.0 +-6.2523518 -9.6258936 -1.5319393 128.0 +-6.312932 -9.5898314 -1.5323459 128.0 +-6.371655 -9.5509157 -1.5323459 128.0 +-6.440681 -9.527236 -1.5349212 128.0 +-6.5040565 -9.494894 -1.536141 128.0 +-6.5638885 -9.4572487 -1.5365477 128.0 +-6.6354704 -9.4362469 -1.5398008 128.0 +-6.7041674 -9.4106874 -1.542376 128.0 +-6.7548265 -9.3597326 -1.5407495 128.0 +-6.8285012 -9.3405056 -1.5445447 128.0 +-6.8998351 -9.3175411 -1.5477977 128.0 +-6.9497428 -9.2655172 -1.5461712 128.0 +-7.0052657 -9.2211227 -1.5459001 128.0 +-7.0617137 -9.1779652 -1.5459001 128.0 +-7.1215491 -9.1391516 -1.5467134 128.0 +-7.1879253 -9.1085052 -1.5490177 128.0 +-7.2480083 -9.0696478 -1.5499665 128.0 +-7.3172336 -9.0419483 -1.5529484 128.0 +-7.3889031 -9.0168056 -1.5564724 128.0 +-7.447886 -8.975873 -1.5572857 128.0 +-7.5047326 -8.9322805 -1.5576923 128.0 +-7.5638924 -8.8913469 -1.5586412 128.0 +-7.6241255 -8.8515253 -1.5598611 128.0 +-7.6848054 -8.8120451 -1.5612165 128.0 +-7.7361073 -8.761755 -1.5606743 128.0 +-7.8035889 -8.7296343 -1.5635207 128.0 +-7.8782797 -8.7050962 -1.5678581 128.0 +-7.949616 -8.6763163 -1.5715177 128.0 +-8.0242634 -8.6506205 -1.575855 128.0 +-8.0900774 -8.6149445 -1.5784304 128.0 +-8.1598511 -8.5830946 -1.5818189 128.0 +-8.1979351 -8.5178738 -1.5789726 128.0 +-8.2763186 -8.4943781 -1.5841231 128.0 +-8.3428936 -8.4582491 -1.5869696 128.0 +-8.4030361 -8.4153128 -1.5885961 128.0 +-8.4601479 -8.3691683 -1.5896804 128.0 +-8.5184269 -8.3240252 -1.5910358 128.0 +-8.5622129 -8.264719 -1.5896804 128.0 +-8.6134806 -8.2127104 -1.589816 128.0 +-8.6680384 -8.1637802 -1.5906292 128.0 +-8.7339249 -8.125288 -1.5936111 128.0 +-8.7916412 -8.0789194 -1.5951021 128.0 +-8.8513174 -8.0341454 -1.5969998 128.0 +-8.9092999 -7.9876204 -1.5986263 128.0 +-8.9863281 -7.9577646 -1.6037768 128.0 +-9.0618334 -7.9259591 -1.6086564 128.0 +-9.1252899 -7.8831615 -1.6113672 128.0 +-9.1561537 -7.8122301 -1.6082498 128.0 +-9.2046738 -7.7565403 -1.6083853 128.0 +-9.2627554 -7.7087889 -1.6102829 128.0 +-9.3160048 -7.6568418 -1.6113672 128.0 +-9.37358 -7.6082773 -1.6132648 128.0 +-9.4231796 -7.5530977 -1.613807 128.0 +-9.4910984 -7.5123539 -1.6176022 128.0 +-9.5479431 -7.4625182 -1.6194998 128.0 +-9.5998278 -7.4086356 -1.6205841 128.0 +-9.6529856 -7.355598 -1.6219395 128.0 +-9.7208967 -7.3135047 -1.6258703 128.0 +-9.7504768 -7.2424951 -1.6232949 128.0 +-9.8115101 -7.1948352 -1.6261414 128.0 +-9.8651028 -7.1414695 -1.6277679 128.0 +-9.9079304 -7.0802279 -1.6276324 128.0 +-9.9609022 -7.026154 -1.6292589 128.0 +-10.037163 -6.9881144 -1.6348162 128.0 +-10.097816 -6.9387407 -1.6377981 128.0 +-10.116423 -6.8605242 -1.6338673 128.0 +-10.181382 -6.8137517 -1.6376625 128.0 +-10.256068 -6.7729921 -1.6430842 128.0 +-10.312375 -6.7196712 -1.645524 128.0 +-10.365079 -6.6637707 -1.6474216 128.0 +-10.406609 -6.6005769 -1.6475571 128.0 +-10.458672 -6.5439568 -1.6494547 128.0 +-10.474178 -6.4645691 -1.645524 128.0 +-10.528033 -6.4089375 -1.6478282 128.0 +-10.583299 -6.3539081 -1.6504035 128.0 +-6.6313596 -3.9259496 -1.0159284 128.0 +-6.6519012 -3.8831882 -1.0153862 128.0 +-10.732807 -6.1777992 -1.6558253 128.0 +-10.791192 -6.1235638 -1.6590782 128.0 +-10.832886 -6.0596538 -1.6597559 128.0 +-10.878539 -5.9978542 -1.6611114 128.0 +-10.924712 -5.9361954 -1.6626023 128.0 +-10.965298 -5.8713894 -1.66328 128.0 +-11.003746 -5.8053842 -1.6636868 128.0 +-7.4814453 -3.8884399 -1.1151456 128.0 +-11.142946 -5.7051358 -1.6742591 128.0 +-6.9482746 -3.5036719 -1.0262296 128.0 +-6.9323726 -3.4424627 -1.0205368 128.0 +-6.9400139 -3.393333 -1.0185037 128.0 +-6.9598117 -3.3502562 -1.0183681 128.0 +-7.0088878 -3.3210659 -1.0227054 128.0 +-11.400158 -5.3166752 -1.6825272 128.0 +-6.6502099 -3.0517254 -0.96266007 128.0 +-6.6543622 -3.0043392 -0.96049142 128.0 +-11.461681 -5.0906515 -1.6773765 128.0 +-11.48907 -5.0186415 -1.6768343 128.0 +-11.506903 -4.9425769 -1.6749368 128.0 +-11.471297 -4.8441257 -1.6651777 128.0 +-11.51819 -4.7808652 -1.667753 128.0 +-11.545474 -4.7093525 -1.6674819 128.0 +-7.4734058 -2.9948666 -1.0630972 128.0 +-11.772025 -4.6340985 -1.6924218 128.0 +-11.805782 -4.5639234 -1.693235 128.0 +-11.828933 -4.4896402 -1.6925573 128.0 +-11.844189 -4.412478 -1.6907952 128.0 +-11.852429 -4.3329163 -1.6880844 128.0 +-11.768745 -4.2206392 -1.6720903 128.0 +-11.748625 -4.1322389 -1.6654488 128.0 +-11.739102 -4.048121 -1.6604337 128.0 +-11.745887 -3.9699867 -1.6578584 128.0 +-11.729583 -3.8844459 -1.65203 128.0 +-11.723981 -3.8029237 -1.6478282 128.0 +-11.755593 -3.7336147 -1.6490481 128.0 +-11.78585 -3.6637666 -1.6501324 128.0 +-11.800526 -3.5890744 -1.6490481 128.0 +-11.806182 -3.5117974 -1.6467439 128.0 +-11.824654 -3.4384599 -1.6463373 128.0 +-11.856965 -3.3690906 -1.6479638 128.0 +-11.904145 -3.3036935 -1.6517589 128.0 +-11.949056 -3.2373259 -1.6552831 128.0 +-11.980189 -3.166986 -1.6569096 128.0 +-12.032974 -3.1020749 -1.6616535 128.0 +-12.107514 -3.0421889 -1.669515 128.0 +-12.16156 -2.9765575 -1.6745301 128.0 +-12.202725 -2.9073915 -1.6777831 128.0 +-12.220335 -2.8324623 -1.6777831 128.0 +-12.237485 -2.7574263 -1.6777831 128.0 +-12.300631 -2.692457 -1.6842892 128.0 +-12.445814 -2.6443212 -1.7023164 128.0 +-12.502561 -2.5763049 -1.7080091 128.0 +-12.581286 -2.5121541 -1.7168194 128.0 +-12.690822 -2.4531519 -1.729967 128.0 +-12.75433 -2.384341 -1.7367442 128.0 +-12.861344 -2.322768 -1.7496208 128.0 +-12.938798 -2.2548671 -1.758431 128.0 +-12.978771 -2.1798654 -1.7620907 128.0 +-12.679898 -2.0497417 -1.7188525 128.0 +-12.891956 -2.0029361 -1.7465032 128.0 +-13.197004 -1.9674863 -1.7870305 128.0 +-13.605078 -1.9430779 -1.8417897 128.0 +-14.17138 -1.9353222 -1.9183713 128.0 +-14.368672 -1.8725356 -1.9439889 128.0 +-14.407422 -1.7877526 -1.9477841 128.0 +-14.434848 -1.7012887 -1.9500883 128.0 +-14.427291 -1.6107069 -1.9476485 128.0 +-14.421138 -1.5204897 -1.9454799 128.0 +-14.437098 -1.4326597 -1.9464287 128.0 +-14.39925 -1.3397331 -1.9400581 128.0 +-14.445695 -1.2547004 -1.9453443 128.0 +-14.455097 -1.1661991 -1.9456154 128.0 +-14.463957 -1.0776296 -1.9458865 128.0 +-14.459423 -0.9881168 -1.9443955 128.0 +-14.467192 -0.89949983 -1.9446666 128.0 +-14.434848 -0.80860716 -1.9395159 128.0 +-14.466256 -0.72135437 -1.9431757 128.0 +-14.437745 -0.6311487 -1.9387027 128.0 +-14.399763 -0.54098505 -1.93301 128.0 +-14.459257 -0.45439503 -1.9407359 128.0 +-13.182233 0.97150278 -1.9392607 128.0 +-13.217429 1.0556799 -1.9454761 128.0 +-13.170303 1.1332808 -1.9394088 128.0 +-13.163102 1.2140709 -1.9394088 128.0 +-13.148516 1.2941366 -1.9383729 128.0 +-13.141311 1.3748931 -1.9385208 128.0 +-13.139508 1.4562639 -1.9395567 128.0 +-13.137201 1.5376644 -1.9405926 128.0 +-13.144205 1.6203023 -1.9431083 128.0 +-13.130093 1.7004147 -1.9425163 128.0 +-13.104712 1.7789506 -1.9402966 128.0 +-13.080821 1.8575175 -1.9383729 128.0 +-13.054502 1.9355679 -1.9361532 128.0 +-13.036516 2.0147254 -1.9352652 128.0 +-12.991687 2.0894928 -1.9303819 128.0 +-12.969842 2.167701 -1.92905 128.0 +-12.953374 2.2467341 -1.928606 128.0 +-12.950051 2.3280983 -1.9302338 128.0 +-12.942329 2.4087818 -1.9312698 128.0 +-12.918565 2.4864659 -1.9299378 128.0 +-12.896276 2.5643353 -1.928902 128.0 +-12.872548 2.6418257 -1.9277182 128.0 +-12.864803 2.722604 -1.92905 128.0 +-12.851721 2.8023329 -1.929642 128.0 +-12.836214 2.8815703 -1.9299378 128.0 +-12.804801 2.9571607 -1.9278661 128.0 +-12.746964 3.026304 -1.9217988 128.0 +-12.741606 3.107743 -1.9238707 128.0 +-12.719419 3.1851447 -1.9234266 128.0 +-12.709215 3.2655916 -1.9249065 128.0 +-12.653554 3.3341854 -1.9194312 128.0 +-12.654818 3.417696 -1.9228348 128.0 +-12.635515 3.4958079 -1.9231308 128.0 +-12.606215 3.571115 -1.9219469 128.0 +-12.600213 3.6530812 -1.9244626 128.0 +-12.717886 3.7719576 -1.9463639 128.0 +-12.582828 3.8160434 -1.928902 128.0 +-12.601684 3.9063592 -1.9355612 128.0 +-12.519966 3.9653873 -1.9265343 128.0 +-12.495399 4.0421338 -1.9265343 128.0 +-12.43186 4.1060081 -1.920467 128.0 +-12.425176 4.1885309 -1.9234266 128.0 +-12.360898 4.2515001 -1.9173595 128.0 +-12.348577 4.3321772 -1.9195791 128.0 +-12.325487 4.4091978 -1.920171 128.0 +-12.261966 4.4715252 -1.9143997 128.0 +-12.255619 4.554605 -1.9178034 128.0 +-12.229292 4.6304188 -1.9180993 128.0 +-12.208032 4.7082167 -1.9192832 128.0 +-12.178913 4.7830353 -1.9192832 128.0 +-12.14199 4.8547359 -1.9180993 128.0 +-12.104645 4.9261632 -1.9169154 128.0 +-12.055916 4.9927731 -1.9139558 128.0 +-12.005004 5.0582032 -1.9107002 128.0 +-11.963743 5.1274829 -1.9090724 128.0 +-11.929337 5.1996088 -1.9086285 128.0 +-11.883646 5.266696 -1.9064088 128.0 +-11.874549 5.3500781 -1.9102563 128.0 +-11.858582 5.4306636 -1.9130679 128.0 +-11.838486 5.5095849 -1.9152876 128.0 +-11.839324 5.5986128 -1.921059 128.0 +-11.790486 5.6642985 -1.9186913 128.0 +-11.751064 5.7343678 -1.9179513 128.0 +-11.727178 5.8120732 -1.9198751 128.0 +-11.715145 5.895927 -1.9238707 128.0 +-11.704287 5.9807515 -1.9281621 128.0 +-11.657713 6.0474448 -1.9265343 128.0 +-11.638762 6.1285391 -1.929642 128.0 +-11.640189 6.220818 -1.9363011 128.0 +-11.603539 6.293067 -1.9365971 128.0 +-11.576836 6.3708229 -1.9386688 128.0 +-11.556523 6.4523458 -1.9419245 128.0 +-11.50639 6.5172839 -1.9401486 128.0 +-11.500484 6.6074734 -1.9460679 128.0 +-11.463141 6.6799068 -1.9466598 128.0 +-11.411722 6.7440786 -1.9448841 128.0 +-11.388788 6.8251586 -1.9481397 128.0 +-11.34416 6.8933697 -1.9476957 128.0 +-11.306702 6.9659595 -1.9485836 128.0 +-11.273811 7.0414929 -1.9503595 128.0 +-11.235407 7.1137099 -1.9512473 128.0 +-11.203198 7.1899943 -1.9533191 128.0 +-11.16799 7.264533 -1.9549469 128.0 +-11.147149 7.3487101 -1.9592383 128.0 +-11.115005 7.4257607 -1.961606 128.0 +-11.090524 7.5082388 -1.9654536 128.0 +-11.051585 7.581183 -1.9667854 128.0 +-11.026785 7.6640935 -1.970781 128.0 +-11.00866 7.75211 -1.9761083 128.0 +-10.963302 7.8212352 -1.9765522 128.0 +-10.928731 7.8982067 -1.9790679 128.0 +-10.880063 7.9651155 -1.9790679 128.0 +-10.850844 8.0464535 -1.9827675 128.0 +-10.801268 8.1128817 -1.9827675 128.0 +-10.778045 8.1993656 -1.9877988 128.0 +-10.735365 8.2713804 -1.9892787 128.0 +-10.721834 8.3663025 -1.9963818 128.0 +-10.657107 8.4215078 -1.9938661 128.0 +-10.628397 8.5052795 -1.9983056 128.0 +-10.579851 8.5734482 -1.9990455 128.0 +-10.528576 8.6394587 -1.9993415 128.0 +-10.482212 8.7095871 -2.0006733 128.0 +-10.435385 8.7794714 -2.0020051 128.0 +-10.409172 8.8670673 -2.0074804 128.0 +-10.372541 8.9462738 -2.0110321 128.0 +-10.312984 9.005847 -2.0101442 128.0 +-10.264939 9.0755081 -2.0116239 128.0 +-10.216428 9.1449184 -2.0131037 128.0 +-10.16965 9.2160673 -2.0150275 128.0 +-10.138413 9.3016968 -2.0202069 128.0 +-10.093467 9.3751736 -2.0227227 128.0 +-10.043676 9.4443827 -2.0243504 128.0 +-9.9798079 9.5003757 -2.0231667 128.0 +-9.9298706 9.5696678 -2.0249424 128.0 +-9.8773365 9.6366329 -2.0262742 128.0 +-9.8194284 9.6984472 -2.0265701 128.0 +-9.7660284 9.7648096 -2.0279019 128.0 +-9.7205238 9.839325 -2.0310097 128.0 +-9.6668749 9.9058628 -2.0324895 128.0 +-9.6072845 9.9664154 -2.0327854 128.0 +-9.5609531 10.040935 -2.036041 128.0 +-9.5133915 10.11454 -2.0391486 128.0 +-9.4524965 10.174172 -2.0394447 128.0 +-9.4119558 10.256028 -2.044328 128.0 +-9.3568192 10.322379 -2.0461037 128.0 +-9.2959442 10.382545 -2.0466957 128.0 +-9.2320633 10.439388 -2.0466957 128.0 +-9.1684847 10.496584 -2.0468438 128.0 +-9.1103659 10.560131 -2.0483234 128.0 +-9.0492468 10.62035 -2.0492115 128.0 +-8.9909153 10.683999 -2.0508392 128.0 +-8.9264545 10.740487 -2.0511351 128.0 +-8.8798332 10.818756 -2.0557227 128.0 +-8.8288507 10.892247 -2.0594223 128.0 +-8.7698851 10.956253 -2.0613458 128.0 +-8.7098522 11.019169 -2.0631218 128.0 +-8.6518106 11.084879 -2.0654895 128.0 +-8.5763884 11.128356 -2.0637136 128.0 +-8.528904 11.208318 -2.068893 128.0 +-8.470068 11.273882 -2.0714087 128.0 +-8.4001436 11.324847 -2.0712607 128.0 +-8.3334188 11.380166 -2.0720007 128.0 +-8.2744417 11.446314 -2.0748122 128.0 +-8.2235832 11.524242 -2.0798438 128.0 +-8.1663837 11.593891 -2.0833952 128.0 +-8.1024294 11.654338 -2.085319 128.0 +-8.0358019 11.711173 -2.0866508 128.0 +-7.9710007 11.770905 -2.0885746 128.0 +-7.9030213 11.826172 -2.0897584 128.0 +-7.835752 11.882698 -2.0912383 128.0 +-7.7702441 11.94216 -2.0933101 128.0 +-7.7037668 12.000432 -2.0952339 128.0 +-7.6373959 12.059174 -2.0973055 128.0 +-7.5695457 12.115874 -2.0990813 128.0 +-7.5018058 12.173038 -2.1010051 128.0 +-7.4310813 12.2256 -2.1021891 128.0 +-7.3599939 12.277753 -2.1033728 128.0 +-7.2890496 12.330344 -2.1047046 128.0 +-7.2187324 12.384236 -2.1063325 128.0 +-7.1445789 12.431726 -2.1069243 128.0 +-7.0710897 12.480494 -2.1078122 128.0 +-6.9982352 12.530555 -2.1089962 128.0 +-6.9274163 12.584522 -2.11092 128.0 +-6.8477111 12.622445 -2.1101799 128.0 +-6.7682676 12.660735 -2.1095881 128.0 +-6.7134967 12.745779 -2.1169872 128.0 +-6.6734214 12.860475 -2.1294177 128.0 +-6.5948353 12.902061 -2.1295657 128.0 +-6.5093207 12.929914 -2.1274939 128.0 +-6.4254699 12.960751 -2.126014 128.0 +-6.3371477 12.982157 -2.1230545 128.0 +-6.2440939 12.993162 -2.1184671 128.0 +-6.1486073 12.998151 -2.1129916 128.0 +-6.0595551 13.015907 -2.109736 128.0 +-5.9672217 13.025868 -2.1052966 128.0 +-5.8697133 13.023465 -2.0989335 128.0 +-5.7732615 13.022165 -2.0928662 128.0 +-5.6758614 13.017454 -2.086355 128.0 +-5.5767884 13.007495 -2.0791037 128.0 +-5.4761324 12.992254 -2.0711126 128.0 +-5.3872275 13.003681 -2.0675611 128.0 +-5.303236 13.026416 -2.0659335 128.0 +-5.209621 13.024734 -2.0604579 128.0 +-5.1097183 13.005825 -2.052319 128.0 +-5.0269723 13.029551 -2.0511351 128.0 +-4.9357224 13.030554 -2.0463998 128.0 +-4.8408589 13.020732 -2.0400364 128.0 +-4.7486749 13.016741 -2.0347092 128.0 +-4.6597214 13.020492 -2.0307136 128.0 +-4.5735197 13.031107 -2.0279019 128.0 +-4.4851122 13.034609 -2.0240545 128.0 +-4.3946218 13.030957 -2.019171 128.0 +-4.3074479 13.036077 -2.0157676 128.0 +-4.2179413 13.033092 -2.0111799 128.0 +-4.126842 13.023844 -2.0057046 128.0 +-4.0366011 13.015859 -2.0005252 128.0 +-3.9509199 13.021453 -1.9975656 128.0 +-3.8656034 13.027435 -1.994754 128.0 +-3.780638 13.033812 -1.9920903 128.0 +-3.6960099 13.040587 -1.9895747 128.0 +-3.6095946 13.040145 -1.9860231 128.0 +-3.5199714 13.026721 -1.9805478 128.0 +-3.4377062 13.039467 -1.9792159 128.0 +-3.3524635 13.040199 -1.9761083 128.0 +-3.2680621 13.043256 -1.9734446 128.0 +-3.1823432 13.040003 -1.969893 128.0 +-3.0977015 13.040039 -1.9669334 128.0 +-3.010731 13.028929 -1.962346 128.0 +-2.9270468 13.030753 -1.9598303 128.0 +-2.8424001 13.027209 -1.9565747 128.0 +-2.7628229 13.04634 -1.9568707 128.0 +-2.681129 13.055296 -1.9556868 128.0 +-2.5973072 13.053072 -1.9528751 128.0 +-2.5160444 13.062936 -1.9519873 128.0 +-2.4333103 13.064516 -1.9499154 128.0 +-2.346976 13.045133 -1.9447361 128.0 +-2.2640145 13.042723 -1.9422204 128.0 +-2.1805186 13.035884 -1.9391128 128.0 +-2.0981345 13.034371 -1.936893 128.0 +-2.0173621 13.042113 -1.9361532 128.0 +-1.9399109 13.071856 -1.9388168 128.0 +-1.8595279 13.082533 -1.9386688 128.0 +-1.7765585 13.074097 -1.9357092 128.0 +-1.6932544 13.061213 -1.9321576 128.0 +-1.6118701 13.061541 -1.9306778 128.0 +-1.5336509 13.087884 -1.9331934 128.0 +-1.4521173 13.086235 -1.9315656 128.0 +-1.370456 13.082111 -1.929642 128.0 +-1.2896752 13.085353 -1.928902 128.0 +-1.2075433 13.073324 -1.9259424 128.0 +-1.1257771 13.062751 -1.9232787 128.0 +-1.0437924 13.046739 -1.9198751 128.0 +-0.96422863 13.059801 -1.920911 128.0 +-0.88354361 13.057578 -1.9197271 128.0 +-0.80219471 13.043011 -1.9167675 128.0 +-0.72149438 13.035838 -1.9149917 128.0 +-0.64115489 13.033105 -1.9139558 128.0 +-0.56079119 13.027901 -1.912624 128.0 +-0.480661 13.026155 -1.9118841 128.0 +-0.40054309 13.022928 -1.9109962 128.0 +-0.32070112 13.028107 -1.9114401 128.0 +-0.24095613 13.040706 -1.9130679 128.0 +-0.16098379 13.045895 -1.9136598 128.0 +-0.080926605 13.045648 -1.9135119 128.0 +-0.00087844487 13.047877 -1.9138079 128.0 +0.079212286 13.052582 -1.9145478 128.0 +0.15921482 13.044928 -1.9135119 128.0 +0.239254 13.043705 -1.9135119 128.0 +0.31928417 13.041991 -1.9135119 128.0 +0.39921123 13.036821 -1.9130679 128.0 +0.47930542 13.037091 -1.9135119 128.0 +0.5595029 13.038845 -1.9142518 128.0 +0.63983709 13.042081 -1.9152876 128.0 +0.72034121 13.046797 -1.9166195 128.0 +0.80092728 13.051016 -1.9179513 128.0 +0.88132536 13.050789 -1.9186913 128.0 +0.9624058 13.058945 -1.920763 128.0 +1.0436982 13.067581 -1.9229827 128.0 +1.1237749 13.059945 -1.9228348 128.0 +1.2053428 13.068562 -1.9252025 128.0 +1.2854103 13.059935 -1.9250544 128.0 +1.3640784 13.038032 -1.9229827 128.0 +1.4460151 13.04711 -1.9256464 128.0 +1.5269639 13.04585 -1.9268303 128.0 +1.6075884 13.041142 -1.9275702 128.0 +1.6868144 13.025148 -1.9266822 128.0 +1.7664373 13.012593 -1.9263864 128.0 +1.8479174 13.013259 -1.9281621 128.0 +1.9296173 13.014394 -1.9300859 128.0 +2.0124586 13.021856 -1.9330455 128.0 +2.0937355 13.01805 -1.9343773 128.0 +2.1779773 13.031296 -1.9383729 128.0 +2.2584021 13.02061 -1.9388168 128.0 +2.3422794 13.028894 -1.9422204 128.0 +2.4256189 13.032751 -1.945032 128.0 +2.5074108 13.027333 -1.9465119 128.0 +2.5925078 13.037892 -1.9505074 128.0 +2.6722591 13.020771 -1.9503595 128.0 +2.7543561 13.014772 -1.9519873 128.0 +2.838588 13.017919 -1.9550948 128.0 +2.9218783 13.015696 -1.9574625 128.0 +3.0043576 13.009086 -1.9592383 128.0 +3.0870943 13.002915 -1.9611621 128.0 +3.1672895 12.98565 -1.9614581 128.0 +3.2555602 13.000507 -1.9667854 128.0 +3.3394539 12.996571 -1.9693011 128.0 +3.4294717 13.015045 -1.9753684 128.0 +3.5159726 13.01858 -1.9792159 128.0 +3.6037009 13.025357 -1.9836553 128.0 +3.6892176 13.022982 -1.986763 128.0 +3.7748406 13.020047 -1.9898707 128.0 +3.8616915 13.020344 -1.9935702 128.0 +3.9492619 13.021956 -1.9975656 128.0 +4.0331898 13.010703 -1.9996374 128.0 +4.1165304 12.997025 -2.0014131 128.0 +4.2007685 12.985636 -2.003633 128.0 +4.2906055 12.990605 -2.0085163 128.0 +4.3854022 13.009017 -2.0156195 128.0 +4.4735069 13.006179 -2.0194671 128.0 +4.5623965 13.004615 -2.0236106 128.0 +4.6511021 13.001517 -2.027606 128.0 +4.7358737 12.98667 -2.0298257 128.0 +4.8230505 12.977761 -2.0330813 128.0 +4.9137988 12.97752 -2.0378168 128.0 +5.0146923 13.002487 -2.0466957 128.0 +5.1052279 12.999088 -2.0511351 128.0 +5.1948085 12.992312 -2.0551307 128.0 +5.285243 12.986757 -2.0594223 128.0 +5.3735342 12.975098 -2.0628257 128.0 +5.4653378 12.971045 -2.0675611 128.0 +5.5685935 12.992715 -2.0765882 128.0 +5.6711349 13.010883 -2.085171 128.0 +5.7620835 13.001157 -2.0893145 128.0 +5.8527203 12.989902 -2.0933101 128.0 +5.9446702 12.980721 -2.0977495 128.0 +6.0421538 12.982553 -2.1041126 128.0 +6.1394596 12.982784 -2.110328 128.0 +6.2327123 12.973394 -2.1150634 128.0 +6.3269477 12.965125 -2.1200948 128.0 +6.4362502 12.986314 -2.1301575 128.0 +6.5162559 12.947461 -2.1303055 128.0 +6.5789242 12.874651 -2.1248302 128.0 +6.6108823 12.743622 -2.1095881 128.0 +6.6714387 12.669566 -2.1039648 128.0 +6.7248082 12.583038 -2.0962696 128.0 +6.8094349 12.555448 -2.0986373 128.0 +6.8367486 12.423323 -2.0832472 128.0 +6.935029 12.420859 -2.0900545 128.0 +6.9764996 12.316978 -2.0795476 128.0 +7.0682049 12.302236 -2.0844312 128.0 +7.1301107 12.235564 -2.0804355 128.0 +7.1990137 12.181368 -2.0786598 128.0 +7.2614183 12.116608 -2.0751083 128.0 +7.3525786 12.099714 -2.0799916 128.0 +7.4220128 12.046794 -2.0786598 128.0 +7.502079 12.011091 -2.0804355 128.0 +7.5703449 11.956478 -2.0789559 128.0 +7.6307445 11.889828 -2.0754042 128.0 +7.6927686 11.826202 -2.0724447 128.0 +7.7564774 11.765568 -2.0700769 128.0 +7.8208308 11.706242 -2.0680051 128.0 +7.880867 11.640836 -2.0648975 128.0 +7.9443121 11.580844 -2.0628257 128.0 +8.0112696 11.526196 -2.06179 128.0 +8.067605 11.456609 -2.0580902 128.0 +8.133729 11.401256 -2.0570545 128.0 +8.1977386 11.343118 -2.0555747 128.0 +8.2636786 11.287816 -2.0546868 128.0 +8.32866 11.231339 -2.0536509 128.0 +8.3902893 11.170534 -2.0518751 128.0 +8.4550791 11.11412 -2.0509872 128.0 +8.5164747 11.053414 -2.0493593 128.0 +8.5707502 10.983798 -2.0461037 128.0 +8.6232662 10.91238 -2.0425522 128.0 +8.6702852 10.834556 -2.0378168 128.0 +8.7278833 10.770395 -2.0357451 128.0 +8.7781191 10.697527 -2.0320456 128.0 +8.8328466 10.630533 -2.0295298 128.0 +8.8947248 10.572352 -2.02879 128.0 +8.9555798 10.51306 -2.0279019 128.0 +9.0115204 10.448176 -2.0259783 128.0 +9.0715561 10.388216 -2.0250902 128.0 +9.1331606 10.330136 -2.0246463 128.0 +9.1943941 10.271691 -2.0242023 128.0 +9.2506046 10.207754 -2.0227227 128.0 +9.3077154 10.144972 -2.0215387 128.0 +9.3630571 10.080424 -2.0200589 128.0 +9.4037285 10.00045 -2.0154715 128.0 +9.4410448 9.9174929 -2.0102921 128.0 +9.4934835 9.850832 -2.0085163 128.0 +9.5496044 9.7881489 -2.0076284 128.0 +9.6094837 9.7293692 -2.0076284 128.0 +9.6641054 9.665328 -2.0065925 128.0 +9.701417 9.5843039 -2.0020051 128.0 +9.7465925 9.5114737 -1.9991934 128.0 +9.7919531 9.4391365 -1.9965298 128.0 +9.8432398 9.3727398 -1.995198 128.0 +9.8940802 9.3060684 -1.9938661 128.0 +9.9444733 9.2391262 -1.9925343 128.0 +9.996604 9.1739225 -1.9916464 128.0 +10.04318 9.1037779 -1.9897226 128.0 +10.084113 9.0287905 -1.986763 128.0 +10.121541 8.9510221 -1.9832114 128.0 +10.177018 8.8893995 -1.9833595 128.0 +10.226129 8.8222656 -1.9823235 128.0 +10.264258 8.7458849 -1.9792159 128.0 +10.301081 8.6687317 -1.9759603 128.0 +10.343428 8.5965137 -1.9738885 128.0 +10.386806 8.5253572 -1.9721128 128.0 +10.438921 8.4614639 -1.9721128 128.0 +10.48215 8.3904552 -1.970485 128.0 +10.5249 8.3192348 -1.9688572 128.0 +10.56951 8.2496309 -1.9676733 128.0 +10.612096 8.178586 -1.9661934 128.0 +10.647124 8.1019402 -1.9633818 128.0 +10.680821 8.0245781 -1.9604222 128.0 +10.718738 7.9506431 -1.9583504 128.0 +10.75136 7.8730397 -1.9553908 128.0 +10.781832 7.7941771 -1.9521352 128.0 +10.807715 7.7123652 -1.9481397 128.0 +10.841897 7.6367941 -1.9457719 128.0 +10.87637 7.5616584 -1.9435523 128.0 +10.90136 7.4802332 -1.9397047 128.0 +10.933949 7.4043317 -1.937337 128.0 +10.975063 7.3343554 -1.9365971 128.0 +11.000869 7.254355 -1.9331934 128.0 +11.03191 7.1780896 -1.9308258 128.0 +11.0591 7.0995798 -1.9278661 128.0 +11.072373 7.0125413 -1.9225388 128.0 +11.112677 6.9428988 -1.9220948 128.0 +11.150859 6.8719883 -1.9213549 128.0 +11.191969 6.8029246 -1.921207 128.0 +11.217383 6.7244639 -1.9183953 128.0 +11.243958 6.6469541 -1.9158796 128.0 +11.276841 6.5733557 -1.9145478 128.0 +11.309245 6.4996042 -1.9132159 128.0 +11.341168 6.4257026 -1.9118841 128.0 +11.371747 6.3511715 -1.9104042 128.0 +11.380177 6.2645864 -1.9052249 128.0 +11.409709 6.1899257 -1.9037451 128.0 +11.433519 6.1123414 -1.9013773 128.0 +11.448057 6.0300903 -1.8975298 128.0 +11.46465 5.9492574 -1.8941263 128.0 +11.50182 5.8792496 -1.8942742 128.0 +11.539444 5.8094544 -1.8945702 128.0 +11.544745 5.7236071 -1.8895388 128.0 +11.566316 5.6461558 -1.8873191 128.0 +11.601633 5.5755081 -1.887467 128.0 +11.629367 5.5012569 -1.8864312 128.0 +11.648558 5.4231195 -1.8840635 128.0 +11.671722 5.3470135 -1.8824357 128.0 +11.706115 5.2761092 -1.8827317 128.0 +11.732843 5.2017779 -1.8818437 128.0 +11.757287 5.1265268 -1.8806598 128.0 +11.801248 5.0597439 -1.8827317 128.0 +11.833895 4.9880056 -1.8830276 128.0 +11.877069 4.9205985 -1.8850993 128.0 +11.909786 4.8487482 -1.8855432 128.0 +11.96778 4.7869635 -1.8901308 128.0 +12.004292 4.7163329 -1.8913146 128.0 +12.016396 4.6361804 -1.8886509 128.0 +12.050165 4.5644636 -1.8895388 128.0 +12.091851 4.4956079 -1.8917586 128.0 +12.105271 4.4162459 -1.8895388 128.0 +12.134934 4.3428855 -1.8899827 128.0 +12.145489 4.2627788 -1.887467 128.0 +12.195731 4.1965399 -1.8913146 128.0 +12.24468 4.129528 -1.8950142 128.0 +12.392808 4.0949559 -1.9143997 128.0 +12.324545 3.9886982 -1.8997495 128.0 +12.320502 3.9040413 -1.89531 128.0 +12.290381 3.8116772 -1.8868752 128.0 +12.340984 3.744518 -1.8911666 128.0 +12.360883 3.6678808 -1.8907226 128.0 +12.391705 3.5944457 -1.8920544 128.0 +12.424945 3.5215793 -1.8938303 128.0 +12.412958 3.4360435 -1.8886509 128.0 +12.465315 3.368325 -1.8935343 128.0 +12.502962 3.2963126 -1.896198 128.0 +12.543068 3.2247033 -1.8993056 128.0 +12.556862 3.1462381 -1.8984177 128.0 +12.549027 3.0625684 -1.8942742 128.0 +12.573357 2.9868822 -1.8951621 128.0 +12.608792 2.9136839 -1.8978258 128.0 +12.618713 2.8345296 -1.896642 128.0 +12.605913 2.7505162 -1.8920544 128.0 +12.643839 2.6776218 -1.89531 128.0 +12.672625 2.6025755 -1.8972338 128.0 +12.684475 2.5239973 -1.896642 128.0 +12.717204 2.4494846 -1.8993056 128.0 +12.727133 2.3705022 -1.8985656 128.0 +12.755066 2.2948158 -1.9006375 128.0 +12.788395 2.2198901 -1.9035971 128.0 +12.799825 2.1410542 -1.9033011 128.0 +12.809792 2.0620043 -1.9028572 128.0 +12.811452 1.981704 -1.9012294 128.0 +12.840001 1.9055238 -1.9037451 128.0 +12.859284 1.8278158 -1.9049289 128.0 +12.880057 1.7502091 -1.9064088 128.0 +12.903304 1.6727974 -1.9083325 128.0 +12.91627 1.5939559 -1.9087764 128.0 +12.930719 1.5152482 -1.9095163 128.0 +12.943705 1.4363142 -1.9101083 128.0 +12.951291 1.3567631 -1.9099603 128.0 +12.958387 1.277173 -1.9098123 128.0 +12.974843 1.1984557 -1.9111441 128.0 +12.978011 1.1184816 -1.9105523 128.0 +12.999417 1.0400108 -1.9127719 128.0 +13.019362 0.96124655 -1.9148437 128.0 +13.029949 0.88167655 -1.9155836 128.0 +13.03314 0.80158848 -1.9152876 128.0 +13.0388 0.72165811 -1.9154357 128.0 +13.06669 0.64280409 -1.9189873 128.0 +13.037782 0.56121564 -1.9141039 128.0 +13.061734 0.48197073 -1.9172114 128.0 +13.064445 0.40181634 -1.9172114 128.0 +13.067655 0.3216711 -1.9173595 128.0 +13.074327 0.24157433 -1.9180993 128.0 +13.073585 0.161323 -1.9178034 128.0 +13.080262 0.081138238 -1.9186913 128.0 +13.074579 0.00087786233 -1.9178034 128.0 +13.080273 -0.079382807 -1.9186913 128.0 +13.06075 -0.15940936 -1.9158796 128.0 +13.06447 -0.23963673 -1.9166195 128.0 +13.063743 -0.31981862 -1.9167675 128.0 +13.079328 -0.40051666 -1.9194312 128.0 +13.087496 -0.48116302 -1.921059 128.0 +13.097141 -0.56200963 -1.9229827 128.0 +13.086533 -0.64202178 -1.9219469 128.0 +13.109009 -0.72378159 -1.9259424 128.0 +13.107282 -0.80438536 -1.9263864 128.0 +13.103086 -0.88486171 -1.9265343 128.0 +13.092479 -0.96488017 -1.9257944 128.0 +13.099128 -1.0462207 -1.9277182 128.0 +13.075711 -1.1251329 -1.9252025 128.0 +13.061667 -1.2047063 -1.9241666 128.0 +13.063872 -1.2857981 -1.9256464 128.0 +13.037048 -1.3639754 -1.9228348 128.0 +13.036297 -1.4448158 -1.9240186 128.0 +13.017364 -1.5236272 -1.9225388 128.0 +13.012677 -1.604077 -1.9232787 128.0 +13.006514 -1.6843995 -1.9238707 128.0 +12.983193 -1.7624437 -1.9219469 128.0 +12.972135 -1.8420739 -1.9219469 128.0 +12.933196 -1.9175709 -1.9178034 128.0 +12.873295 -1.9894857 -1.9105523 128.0 +12.293541 -1.9771446 -1.8245747 128.0 +11.941723 -1.9957738 -1.7730769 128.0 +11.75483 -2.0387402 -1.7465881 128.0 +11.495836 -2.0665338 -1.7091488 128.0 +11.303069 -2.1035385 -1.681772 128.0 +11.137479 -2.1434929 -1.6585388 128.0 +11.005779 -2.1882493 -1.640485 128.0 +10.277185 -2.1089416 -1.5312743 128.0 +8.9027205 -1.8837343 -1.3230636 128.0 +9.0629892 -1.9758447 -1.3494045 128.0 +9.0873642 -2.0396519 -1.3550277 128.0 +8.9185734 -2.0593071 -1.3310547 128.0 +8.4342804 -2.0020094 -1.2585435 128.0 +8.3142281 -2.0274668 -1.2419695 128.0 +8.292037 -2.0760405 -1.2404896 128.0 +7.941021 -2.039969 -1.188252 128.0 +7.576427 -1.9958901 -1.1337945 128.0 +7.5392141 -2.0356343 -1.1299471 128.0 +7.3073549 -2.0211823 -1.0959111 128.0 +7.2453365 -2.05196 -1.0882162 128.0 +7.1927156 -2.0848081 -1.0820009 128.0 +6.7104578 -1.9896605 -1.0087498 128.0 +6.7426038 -2.0442917 -1.015705 128.0 +6.761106 -2.0952911 -1.0205884 128.0 +6.6783547 -2.1146331 -1.0096377 128.0 +6.685955 -2.1622696 -1.0128933 128.0 +6.6396942 -2.1923945 -1.0077139 128.0 +6.5577054 -2.2100251 -0.99691123 128.0 +6.5449567 -2.2505426 -0.99705923 128.0 +6.5515547 -2.297864 -1.0003148 128.0 +6.5326762 -2.3363543 -0.9995749 128.0 +6.4866276 -2.3648713 -0.99454349 128.0 +6.453455 -2.3977358 -0.99158388 128.0 +6.4145741 -2.4281809 -0.98773634 128.0 +6.4918256 -2.5030897 -1.0025345 128.0 +6.4597754 -2.5363667 -0.99987084 128.0 +6.4000139 -2.5583274 -0.99276775 128.0 +6.3063354 -2.5658545 -0.98018926 128.0 +6.2155495 -2.5734649 -0.96805471 128.0 +6.2506785 -2.6330633 -0.97634172 128.0 +6.3080325 -2.7029309 -0.98832828 128.0 +6.158062 -2.6834843 -0.96657491 128.0 +6.119781 -2.7115998 -0.96302336 128.0 +6.1210608 -2.757226 -0.96598297 128.0 +6.1031284 -2.7943203 -0.96583498 128.0 +6.2167726 -2.8926523 -0.98744035 128.0 +6.0138426 -2.8432097 -0.95680809 128.0 +5.9882612 -2.8762014 -0.95547628 128.0 +5.4239063 -2.6460996 -0.86446732 128.0 +5.4022517 -2.6766946 -0.86357939 128.0 +5.9316549 -2.9846044 -0.95503229 128.0 +5.9396491 -3.034447 -0.95947176 128.0 +5.9332085 -3.0772116 -0.9615435 128.0 +5.9098401 -3.1112547 -0.96080363 128.0 +5.9080825 -3.1567829 -0.96376324 128.0 +5.8912096 -3.1943893 -0.96420717 128.0 +5.8359756 -3.2109244 -0.95813996 128.0 +5.8187542 -3.2481194 -0.95858389 128.0 +5.8228083 -3.2974112 -0.96272737 128.0 +5.8033237 -3.33357 -0.96287537 128.0 +5.7989945 -3.3785779 -0.96568704 128.0 +5.796885 -3.4251678 -0.96894264 128.0 +5.8690696 -3.516603 -0.98522067 128.0 +5.7130051 -3.4708774 -0.9616915 128.0 +5.7336988 -3.5318081 -0.96909058 128.0 +5.7052102 -3.562731 -0.96790677 128.0 +5.3264666 -3.3717339 -0.9047184 128.0 +5.6910224 -3.6517072 -0.97323412 128.0 +5.6179409 -3.6536582 -0.96420717 128.0 +5.6251402 -3.7076595 -0.96953458 128.0 +5.5619917 -3.7151806 -0.96228343 128.0 +5.5046968 -3.7259493 -0.95606816 128.0 +5.5004873 -3.7725244 -0.95947176 128.0 +5.5292072 -3.8423326 -0.96894264 128.0 +5.5378699 -3.8989663 -0.97486192 128.0 +5.4856648 -3.9127672 -0.96968251 128.0 +5.4014392 -3.9029005 -0.95858389 128.0 +5.3470678 -3.9137673 -0.95296055 128.0 +5.3674364 -3.9794955 -0.96124756 128.0 +5.3642669 -4.0283933 -0.96524304 128.0 +5.3378744 -4.0600343 -0.9649471 128.0 +5.3825817 -4.1464376 -0.97811753 128.0 +5.2673783 -4.1094117 -0.96109957 128.0 +5.3134475 -4.1980734 -0.97471392 128.0 +5.2821836 -4.2262712 -0.97367805 128.0 +5.2699823 -4.2698116 -0.97634172 128.0 +5.3094296 -4.3560257 -0.98906815 128.0 +5.2787986 -4.3853612 -0.98832828 128.0 +5.2003336 -4.3743691 -0.97826546 128.0 +5.1613503 -4.3959332 -0.97589779 128.0 +5.1125631 -4.4087858 -0.97160631 128.0 +5.1271286 -4.4765053 -0.97989327 128.0 +5.1758747 -4.5753598 -0.99513543 128.0 +5.1852822 -4.6406755 -1.0026826 128.0 +5.0445948 -4.570785 -0.98004127 128.0 +5.0375862 -4.6210432 -0.98433274 128.0 +3.5440502 -3.2908106 -0.68511307 128.0 +3.5237916 -3.3124945 -0.68511307 128.0 +3.5112789 -3.3415554 -0.68674088 128.0 +3.4964058 -3.3685281 -0.68792474 128.0 +3.4544361 -3.3691971 -0.68348527 128.0 +4.7796545 -4.7199273 -0.96657491 128.0 +7.7275505 -7.726243 -1.5965344 128.0 +7.6737428 -7.7671804 -1.5952026 128.0 +7.6390624 -7.8275685 -1.5980142 128.0 +2.6665773 -2.7650459 -0.5362432 128.0 +2.6625178 -2.7949653 -0.53905481 128.0 +2.641253 -2.8069267 -0.53816694 128.0 +2.6226339 -2.8216312 -0.537871 128.0 +7.2462535 -7.8957076 -1.5650142 128.0 +2.6137125 -2.8821819 -0.54364228 128.0 +2.6071925 -2.910692 -0.54615796 128.0 +7.0636611 -7.987 -1.5568752 128.0 +7.0522523 -8.0733967 -1.5654582 128.0 +7.0303588 -8.1487179 -1.5718213 128.0 +6.998826 -8.2135344 -1.5761129 128.0 +6.9330158 -8.238162 -1.5725613 128.0 +6.8728557 -8.2691374 -1.5703416 128.0 +6.8257523 -8.3157396 -1.5712295 128.0 +6.7689948 -8.3505497 -1.5698977 128.0 +6.7058883 -8.3772554 -1.567086 128.0 +6.6463885 -8.4081573 -1.5651622 128.0 +6.586762 -8.4386444 -1.5632384 128.0 +6.5270123 -8.4687176 -1.5613147 128.0 +6.4845076 -8.5212002 -1.5636824 128.0 +6.4303184 -8.5584555 -1.5632384 128.0 +6.3829856 -8.6048994 -1.5645703 128.0 +6.3265615 -8.6391153 -1.5636824 128.0 +6.2734337 -8.6777716 -1.5636824 128.0 +6.2166233 -8.7112703 -1.5627944 128.0 +6.153944 -8.7363138 -1.5604268 128.0 +6.1041741 -8.7795935 -1.5614626 128.0 +6.0300474 -8.7875242 -1.5561353 128.0 +5.9760146 -8.824358 -1.5561353 128.0 +5.9201083 -8.8583937 -1.5556914 128.0 +5.8612881 -8.8879461 -1.5545075 128.0 +5.783452 -8.8880959 -1.5481442 128.0 +5.7410936 -8.9425583 -1.5515479 128.0 +5.6993423 -8.9985056 -1.5552474 128.0 +5.6335421 -9.016531 -1.5522878 128.0 +5.5843372 -9.0610313 -1.5540636 128.0 +5.50809 -9.0613194 -1.5481442 128.0 +5.4554377 -9.1000357 -1.5490322 128.0 +5.4020143 -9.1375952 -1.549772 128.0 +5.3368816 -9.1551886 -1.5471084 128.0 +5.2751861 -9.1783304 -1.5454806 128.0 +5.2212071 -9.2148285 -1.5462205 128.0 +5.1549244 -9.2294216 -1.5432608 128.0 +5.0824604 -9.2322855 -1.5383774 128.0 +5.024302 -9.2606888 -1.5379335 128.0 +4.9701819 -9.2965765 -1.5388213 128.0 +4.9268703 -9.3531504 -1.5432608 128.0 +4.8771305 -9.3981285 -1.5457766 128.0 +4.8162222 -9.4217129 -1.5447407 128.0 +4.7569871 -9.4484367 -1.5442967 128.0 +1.3538766 -2.7288237 -0.41726562 128.0 +1.3388424 -2.7406347 -0.41785756 128.0 +4.5775552 -9.5245905 -1.5426689 128.0 +4.5093021 -9.5319357 -1.5392654 128.0 +4.4494781 -9.556735 -1.5388213 128.0 +4.3915792 -9.5856552 -1.5391173 128.0 +4.3367429 -9.621438 -1.5405972 128.0 +4.2756214 -9.6433458 -1.5398573 128.0 +4.2136045 -9.6630526 -1.5388213 128.0 +4.1503372 -9.679635 -1.5373416 128.0 +4.0885615 -9.6994505 -1.5364537 128.0 +4.024807 -9.714304 -1.5348259 128.0 +3.9621427 -9.7314882 -1.5336421 128.0 +3.9019897 -9.7546988 -1.533494 128.0 +3.8431473 -9.7812185 -1.5339381 128.0 +3.7809229 -9.7990789 -1.5330501 128.0 +3.7165227 -9.8109951 -1.5312743 128.0 +3.6531527 -9.8252716 -1.5299425 128.0 +3.5958469 -9.8558636 -1.5312743 128.0 +1.1435463 -3.192765 -0.46891135 128.0 +1.1301557 -3.2174525 -0.47172302 128.0 +3.4118934 -9.9147711 -1.5303864 128.0 +1.1367183 -3.3679044 -0.49332839 128.0 +1.1185135 -3.3823283 -0.49451226 128.0 +1.0843434 -3.3477252 -0.48800105 128.0 +1.0566139 -3.3316879 -0.48444948 128.0 +1.0059856 -3.2408116 -0.46920732 128.0 +0.9817754 -3.2327271 -0.46698758 128.0 +0.95910877 -3.2292087 -0.46550778 128.0 +0.9447853 -3.25403 -0.46846741 128.0 +0.94852585 -3.3435009 -0.48148984 128.0 +0.93405908 -3.371181 -0.48489341 128.0 +0.92315656 -3.41313 -0.49051672 128.0 +2.6672239 -10.115949 -1.5268348 128.0 +2.6014109 -10.117756 -1.5246152 128.0 +2.5414431 -10.142161 -1.525947 128.0 +0.79411268 -3.2502816 -0.46210417 128.0 +2.1288905 -8.9601717 -1.3394896 128.0 +2.3498769 -10.167951 -1.5229874 128.0 +1.9880081 -8.8485966 -1.3184762 128.0 +1.9427388 -8.9021788 -1.3248394 128.0 +2.1596575 -10.196903 -1.5210636 128.0 +1.7325222 -8.4341726 -1.2498125 128.0 +1.674951 -8.4155445 -1.245373 128.0 +1.620852 -8.4130383 -1.2434493 128.0 +1.5720961 -8.4383821 -1.2458169 128.0 +1.8453281 -10.255432 -1.5206196 128.0 +1.7793242 -10.249022 -1.5179559 128.0 +1.7162408 -10.258771 -1.517808 128.0 +1.3032701 -8.0936117 -1.188104 128.0 +1.2529798 -8.0975466 -1.187512 128.0 +1.5201551 -10.241666 -1.5107048 128.0 +1.2378035 -8.7056847 -1.2771891 128.0 +1.3972872 -10.281109 -1.5139604 128.0 +1.3357021 -10.301258 -1.5157362 128.0 +1.2716223 -10.302389 -1.5147003 128.0 +1.207464 -10.302139 -1.5135164 128.0 +1.1440104 -10.307388 -1.5132205 128.0 +1.080538 -10.312247 -1.5129246 128.0 +1.0166615 -10.312778 -1.5120367 128.0 +0.95327348 -10.317837 -1.5118886 128.0 +0.88858914 -10.307726 -1.509521 128.0 +0.82406485 -10.297211 -1.5071533 128.0 +0.76188511 -10.315882 -1.509225 128.0 +0.70150763 -10.363779 -1.5157362 128.0 +0.63753974 -10.361965 -1.5148484 128.0 +0.57378423 -10.36272 -1.5144044 128.0 +0.51183814 -10.399631 -1.5194358 128.0 +0.44827226 -10.408504 -1.5203236 128.0 +0.3833434 -10.382397 -1.5160322 128.0 +0.31954005 -10.381588 -1.5155882 128.0 +0.25585806 -10.384342 -1.5157362 128.0 +0.19220884 -10.389672 -1.5163281 128.0 +0.1284554 -10.390656 -1.5163281 128.0 +0.064672932 -10.387293 -1.5157362 128.0 +0.00093652861 -10.385516 -1.5154402 128.0 +-0.062848717 -10.395216 -1.5169201 128.0 +-0.12678944 -10.40749 -1.5188438 128.0 +-0.19050039 -10.398605 -1.51766 128.0 +-0.25376701 -10.37549 -1.5144044 128.0 +-0.31660536 -10.347048 -1.5104089 128.0 +-0.38128966 -10.377524 -1.5152923 128.0 +-0.44585001 -10.39574 -1.5183998 128.0 +-0.50958014 -10.39182 -1.5182519 128.0 +-0.57202291 -10.364799 -1.5147003 128.0 +-0.63512403 -10.353196 -1.5135164 128.0 +-0.69863808 -10.349104 -1.5135164 128.0 +-0.76248974 -10.349554 -1.5142564 128.0 +-0.82597905 -10.344681 -1.5142564 128.0 +-0.89113474 -10.359125 -1.517216 128.0 +-0.95486218 -10.355432 -1.517512 128.0 +-1.0158631 -10.323788 -1.5136645 128.0 +-1.0786744 -10.312442 -1.5129246 128.0 +-1.1428024 -10.313493 -1.5141084 128.0 +-1.2066386 -10.311198 -1.5148484 128.0 +-1.2697631 -10.302619 -1.5147003 128.0 +-1.3320651 -10.287768 -1.5136645 128.0 +-1.3954308 -10.281361 -1.5139604 128.0 +-1.4590464 -10.276522 -1.5145524 128.0 +-1.5230904 -10.274224 -1.5155882 128.0 +-1.5873122 -10.272504 -1.516772 128.0 +-1.6539273 -10.285028 -1.5201757 128.0 +-1.7194507 -10.289319 -1.5223954 128.0 +-1.7820451 -10.275651 -1.5219514 128.0 +-1.845587 -10.267444 -1.5223954 128.0 +-1.9100004 -10.263704 -1.5235792 128.0 +-1.9714453 -10.244022 -1.5223954 128.0 +-2.0340714 -10.230762 -1.5222474 128.0 +-2.0991948 -10.229714 -1.5240232 128.0 +-2.1637673 -10.225349 -1.525355 128.0 +-2.2260466 -10.209948 -1.5250591 128.0 +-2.289952 -10.201887 -1.525947 128.0 +-2.3525064 -10.187644 -1.525947 128.0 +-2.415658 -10.175904 -1.5263909 128.0 +-2.4780507 -10.160891 -1.5263909 128.0 +-2.5391486 -10.140697 -1.525651 128.0 +-2.6028001 -10.130673 -1.5265388 128.0 +-2.6679368 -10.125988 -1.5283147 128.0 +-2.7336297 -10.122794 -1.5303864 128.0 +-2.794899 -10.102971 -1.5299425 128.0 +-2.8579156 -10.089437 -1.5305344 128.0 +-2.9194939 -10.070762 -1.5303864 128.0 +-2.9792631 -10.046021 -1.5293505 128.0 +-3.0408483 -10.027553 -1.5293505 128.0 +-3.1081769 -10.027597 -1.5323102 128.0 +-3.1705427 -10.011166 -1.5327542 128.0 +-3.2319105 -9.9915228 -1.5327542 128.0 +-3.2999818 -9.9921637 -1.5360098 128.0 +-3.3552265 -9.9539213 -1.5331981 128.0 +-3.4207439 -9.9462395 -1.5352699 128.0 +-3.4876032 -9.9418612 -1.5379335 128.0 +-3.5468736 -9.9156179 -1.5371935 128.0 +-3.6069701 -9.8918104 -1.5368977 128.0 +-3.6682866 -9.8713465 -1.5371935 128.0 +-3.7298377 -9.8514271 -1.5376376 128.0 +-3.7866552 -9.819128 -1.5361577 128.0 +-3.8471944 -9.796629 -1.5363057 128.0 +-3.9178834 -9.799469 -1.5405972 128.0 +-1.500919 -3.6902266 -0.55755258 128.0 +-1.5205055 -3.6736379 -0.55636871 128.0 +-4.0926027 -9.7138453 -1.5386734 128.0 +-4.1478419 -9.6785526 -1.5370456 128.0 +-4.2067552 -9.6520128 -1.5368977 128.0 +-4.269908 -9.6350603 -1.5383774 128.0 +-3.9977803 -8.873827 -1.4177721 128.0 +-4.0356793 -8.8131638 -1.4118528 128.0 +-4.0909319 -8.790925 -1.4122968 128.0 +-1.5255554 -3.228054 -0.4956961 128.0 +-1.5457619 -3.2195241 -0.4958441 128.0 +-1.6570207 -3.3975093 -0.52706832 128.0 +-1.6734437 -3.3784173 -0.52558845 128.0 +-1.6972545 -3.3742692 -0.52662432 128.0 +-1.7201772 -3.3681948 -0.52736425 128.0 +-1.7430891 -3.3619659 -0.52810419 128.0 +-1.76645 -3.3564575 -0.52899206 128.0 +-4.5703793 -8.552597 -1.4124447 128.0 +-4.623714 -8.5261307 -1.4127407 128.0 +-4.690249 -8.523592 -1.4171802 128.0 +-4.7487292 -8.5058784 -1.419104 128.0 +-4.813993 -8.499814 -1.4230994 128.0 +-4.8389544 -8.4229536 -1.4149604 128.0 +-5.4069853 -9.2791681 -1.5684178 128.0 +-4.8226833 -8.1611614 -1.3798887 128.0 +-4.8686008 -8.12463 -1.3787049 128.0 +-1.949941 -3.2105508 -0.52351671 128.0 +-1.9794617 -3.2145233 -0.52632838 128.0 +-5.6896014 -9.1097822 -1.5685657 128.0 +-5.7406287 -9.0671797 -1.5672339 128.0 +-5.8089776 -9.0517607 -1.5707855 128.0 +-5.864409 -9.0159464 -1.5707855 128.0 +-5.9130864 -8.9698858 -1.5690098 128.0 +-5.974607 -8.9433022 -1.5707855 128.0 +-6.0343599 -8.9138451 -1.5721173 128.0 +-6.1006908 -8.8937759 -1.575225 128.0 +-6.1528893 -8.8529272 -1.574633 128.0 +-6.2162056 -8.8279448 -1.5770007 128.0 +-6.2748513 -8.7960768 -1.5781846 128.0 +-6.3269668 -8.7550049 -1.5777407 128.0 +-6.3846574 -8.7216043 -1.5787766 128.0 +-6.4409976 -8.6862364 -1.5795164 128.0 +-6.5007086 -8.6552496 -1.5811442 128.0 +-6.5638742 -8.6285791 -1.58366 128.0 +-6.622128 -8.595192 -1.5849918 128.0 +-6.6735253 -8.5528383 -1.5846958 128.0 +-6.7344642 -8.5225916 -1.5867676 128.0 +-6.7952833 -8.4919195 -1.5888393 128.0 +-6.862206 -8.468504 -1.5923909 128.0 +-6.9240775 -8.4384708 -1.5947586 128.0 +-6.9788852 -8.3996296 -1.5954986 128.0 +-7.0156474 -8.3392448 -1.5920949 128.0 +-7.080153 -8.3118496 -1.5952026 128.0 +-7.1465244 -8.2862234 -1.5987542 128.0 +-7.2069921 -8.2533903 -1.6009738 128.0 +-7.2653599 -8.2179041 -1.6027496 128.0 +-7.3004746 -8.1562223 -1.599346 128.0 +-7.3596816 -8.1215334 -1.6014178 128.0 +-7.4187369 -8.0864239 -1.6034895 128.0 +-7.474946 -8.0479965 -1.6049694 128.0 +-7.5499339 -8.029356 -1.6105927 128.0 +-7.5963311 -7.9800143 -1.6100007 128.0 +-7.6430936 -7.9311175 -1.6095568 128.0 +-7.7095723 -7.9024749 -1.6134044 128.0 +-7.7891922 -7.8866825 -1.6200635 128.0 +-7.8668098 -7.8681111 -1.6262788 128.0 +-7.9050889 -7.8099632 -1.624207 128.0 +-7.9401193 -7.7488794 -1.6215434 128.0 +-7.9989095 -7.7109947 -1.623911 128.0 +-8.0510864 -7.666543 -1.624947 128.0 +-8.1066217 -7.6251283 -1.6267227 128.0 +-8.1634007 -7.5846667 -1.6287944 128.0 +-8.2199879 -7.5437951 -1.6308662 128.0 +-8.2631893 -7.4905596 -1.6302743 128.0 +-8.3119431 -7.4423552 -1.6308662 128.0 +-8.3633785 -7.3964548 -1.63205 128.0 +-8.4197788 -7.3547573 -1.6342698 128.0 +-8.4707394 -7.3081236 -1.6354537 128.0 +-8.5274668 -7.2662725 -1.6378213 128.0 +-8.5749187 -7.2163591 -1.6384133 128.0 +-8.6205568 -7.1648726 -1.6387093 128.0 +-8.6612997 -7.1093335 -1.6381173 128.0 +-8.7162838 -7.0653949 -1.6403371 128.0 +-8.7749157 -7.0241394 -1.6432967 128.0 +-8.8217287 -6.9732313 -1.6440367 128.0 +-8.8705873 -6.9238381 -1.6452205 128.0 +-8.9340563 -6.8855777 -1.6492159 128.0 +-8.980072 -6.8336239 -1.6499559 128.0 +-9.0242062 -6.7801762 -1.6503998 128.0 +-9.0791426 -6.7346921 -1.6529156 128.0 +-9.1258812 -6.6829467 -1.6539514 128.0 +-9.170723 -6.6297221 -1.6546913 128.0 +-9.2176704 -6.5779219 -1.6558752 128.0 +-9.2659435 -6.5269341 -1.657355 128.0 +-9.3318043 -6.4880199 -1.6620904 128.0 +-9.3910112 -6.4440665 -1.665642 128.0 +-9.441021 -6.3935313 -1.6675657 128.0 +-9.4932299 -6.3442726 -1.6699334 128.0 +-9.521245 -6.2788272 -1.6680098 128.0 +-9.5662241 -6.2246017 -1.6691935 128.0 +-9.6075668 -6.1679244 -1.6697855 128.0 +-9.6477385 -6.1104445 -1.6702294 128.0 +-9.6858883 -6.0516562 -1.6703774 128.0 +-9.7405205 -6.0030055 -1.673485 128.0 +-9.7839317 -5.9472346 -1.6746689 128.0 +-6.6060452 -3.9606712 -1.113965 128.0 +-9.8459597 -5.8206844 -1.6728932 128.0 +-9.9045601 -5.7736068 -1.6768886 128.0 +-9.9475174 -5.7171593 -1.6782205 128.0 +-9.9867125 -5.658452 -1.6789603 128.0 +-10.030743 -5.6023717 -1.6805881 128.0 +-10.096121 -5.5578856 -1.6859156 128.0 +-10.144813 -5.5038486 -1.6884313 128.0 +-10.180137 -5.44243 -1.6887271 128.0 +-10.222965 -5.3849325 -1.6903549 128.0 +-7.5414195 -3.9138556 -1.2327945 128.0 +-10.326145 -5.2784276 -1.6967182 128.0 +-6.9378152 -3.493315 -1.1237319 128.0 +-6.9298773 -3.4361856 -1.1188484 128.0 +-6.9454985 -3.3909974 -1.1179606 128.0 +-6.9670658 -3.3487451 -1.1181085 128.0 +-7.0071511 -3.3152351 -1.1213641 128.0 +-7.0470867 -3.281359 -1.1246197 128.0 +-6.587832 -3.0185544 -1.0457453 128.0 +-6.6269679 -2.9874203 -1.0491489 128.0 +-10.604461 -4.7016292 -1.6971622 128.0 +-10.669374 -4.6522813 -1.7030815 128.0 +-10.71408 -4.5937409 -1.7057451 128.0 +-10.730217 -4.5229216 -1.7038213 128.0 +-10.723046 -4.442616 -1.6981981 128.0 +-10.702471 -4.3573494 -1.690503 128.0 +-10.648195 -4.259284 -1.6774806 128.0 +-7.5194831 -2.9547758 -1.1703461 128.0 +-7.5347037 -2.9075136 -1.1699022 128.0 +-10.671147 -4.0422497 -1.6688976 128.0 +-10.683698 -3.9722173 -1.6669738 128.0 +-10.687429 -3.8991337 -1.6637182 128.0 +-10.704635 -3.8311512 -1.6626823 128.0 +-10.716742 -3.7614675 -1.6609066 128.0 +-10.725592 -3.6908143 -1.6586869 128.0 +-10.735853 -3.6208262 -1.6567631 128.0 +-10.732513 -3.5465086 -1.6527675 128.0 +-10.738075 -3.4754128 -1.6502519 128.0 +-10.77334 -3.4139397 -1.6524715 128.0 +-10.801642 -3.3501146 -1.6536554 128.0 +-10.808745 -3.2797549 -1.6515837 128.0 +-10.85711 -3.2218096 -1.6560231 128.0 +-10.896622 -3.1609151 -1.6591308 128.0 +-10.967195 -3.1085534 -1.6671218 128.0 +-11.010844 -3.0480592 -1.6709694 128.0 +-11.053208 -2.9868879 -1.6746689 128.0 +-11.097149 -2.9258156 -1.6786644 128.0 +-11.143628 -2.8650546 -1.6831039 128.0 +-11.258853 -2.8211339 -1.6981981 128.0 +-11.309579 -2.7602015 -1.7033774 128.0 +-11.355169 -2.6976099 -1.7078168 128.0 +-11.398489 -2.6341176 -1.7119603 128.0 +-11.483914 -2.5797281 -1.7226151 128.0 +-11.547841 -2.5197527 -1.7300142 128.0 +-11.598885 -2.4564271 -1.7354895 128.0 +-11.686398 -2.4001267 -1.7465881 128.0 +-11.750374 -2.3382142 -1.7541353 128.0 +-11.798491 -2.272615 -1.7593147 128.0 +-11.836519 -2.2047031 -1.7630142 128.0 +-11.797262 -2.1225822 -1.7550231 128.0 +-11.684362 -2.028347 -1.7359334 128.0 +-11.913138 -1.9928179 -1.7687855 128.0 +-12.162416 -1.9578551 -1.8047451 128.0 +-12.511395 -1.9353184 -1.8557988 128.0 +-13.039572 -1.9351228 -1.9339334 128.0 +-13.118762 -1.8646742 -1.9441441 128.0 +-13.127017 -1.7837447 -1.9437002 128.0 +-13.168118 -1.7071041 -1.9482876 128.0 +-13.235276 -1.6332943 -1.9568707 128.0 +-13.245049 -1.5520535 -1.9568707 128.0 +-13.252357 -1.4705362 -1.9565747 128.0 +-13.257195 -1.3887818 -1.9559827 128.0 +-13.24972 -1.3058603 -1.9536151 128.0 +-13.240741 -1.2229921 -1.9510993 128.0 +-13.24307 -1.1413013 -1.9503595 128.0 +-13.251795 -1.0601795 -1.9506553 128.0 +-13.261995 -0.97913891 -1.9512473 128.0 +-13.26282 -0.89741302 -1.9505074 128.0 +-13.266103 -0.81589574 -1.9502114 128.0 +-13.271847 -0.73453563 -1.9503595 128.0 +-13.284006 -0.65347534 -1.9515432 128.0 +-13.279861 -0.57161438 -1.9503595 128.0 +-13.28213 -0.49008355 -1.9502114 128.0 +-13.287852 -0.40866765 -1.9506553 128.0 +-13.277257 -0.32681197 -1.9487317 128.0 +-13.352185 -0.24668361 -1.9596822 128.0 +-13.27829 -0.16383077 -1.9484357 128.0 +-13.305747 -0.082516901 -1.9524312 128.0 +-13.351497 -0.0008718209 -1.9592383 128.0 +-13.254332 0.080454633 -1.9447361 128.0 +-13.287211 0.16219354 -1.9497675 128.0 +-13.295855 0.24390154 -1.9512473 128.0 +-13.259503 0.32462853 -1.9460679 128.0 +-13.154455 0.40282393 -1.9306778 128.0 +-13.238708 0.48673582 -1.9437002 128.0 +-13.312543 0.57127184 -1.9552429 128.0 +-13.287055 0.65187722 -1.9519873 128.0 +-13.233431 0.73066235 -1.9445881 128.0 +-13.222775 0.81148338 -1.9437002 128.0 +-13.246163 0.8945365 -1.9479917 128.0 +-12.254591 -0.30979642 -1.9401276 128.0 +-12.269093 -0.23484385 -1.9421993 128.0 +-12.267341 -0.15951909 -1.9417213 128.0 +-12.275987 -0.084299594 -1.9429961 128.0 +-12.24172 -0.0089475885 -1.9374185 128.0 +-12.31361 0.066553526 -1.949052 128.0 +-12.257689 0.14147095 -1.9401276 128.0 +-12.267448 0.21687165 -1.9418806 128.0 +-12.265886 0.29213923 -1.9418806 128.0 +-12.252022 0.36704144 -1.9399682 128.0 +-12.253486 0.44235384 -1.9406058 128.0 +-12.247581 0.51740658 -1.9401276 128.0 +-12.207692 0.59078217 -1.9342312 128.0 +-12.179193 0.66433257 -1.9302471 128.0 +-12.258647 0.74413192 -1.9437931 128.0 +-12.160274 0.81308168 -1.9286534 128.0 +-12.227916 0.89299899 -1.9404464 128.0 +-12.158237 0.96294695 -1.9300877 128.0 +-12.174724 1.0394613 -1.933753 128.0 +-12.172049 1.1145043 -1.9343905 128.0 +-12.164981 1.1891696 -1.9343905 128.0 +-12.153528 1.263382 -1.933753 128.0 +-12.143584 1.3377147 -1.9334344 128.0 +-12.092982 1.4072956 -1.9265816 128.0 +-12.063541 1.4789481 -1.9232351 128.0 +-12.086552 1.5571024 -1.9284941 128.0 +-12.112968 1.6361229 -1.9343905 128.0 +-12.079241 1.7071012 -1.9305657 128.0 +-12.065609 1.7807536 -1.9300877 128.0 +-12.068115 1.8568546 -1.9323188 128.0 +-12.045773 1.9291513 -1.9305657 128.0 +-12.001572 1.9976784 -1.9253068 128.0 +-12.002708 2.0736334 -1.9275378 128.0 +-12.005306 2.1500258 -1.9300877 128.0 +-11.997712 2.2247281 -1.9310439 128.0 +-11.914997 2.2851031 -1.919729 128.0 +-11.967571 2.3714073 -1.9307251 128.0 +-11.963434 2.4469702 -1.9324782 128.0 +-11.887339 2.5074954 -1.9224381 128.0 +-11.863048 2.5785007 -1.9210039 128.0 +-11.855673 2.6531827 -1.9224381 128.0 +-11.814157 2.7201195 -1.9182947 128.0 +-11.839514 2.802563 -1.9253068 128.0 +-11.806746 2.8714237 -1.9227569 128.0 +-11.811893 2.949554 -1.9265816 128.0 +-11.76584 3.0148695 -1.9219601 128.0 +-11.721339 3.0802329 -1.9176573 128.0 +-11.669807 3.1433666 -1.9122388 128.0 +-11.662672 3.2183256 -1.9143106 128.0 +-11.611355 3.2809682 -1.9090515 128.0 +-11.58816 3.3513298 -1.9085735 128.0 +-11.615658 3.4366527 -1.9167011 128.0 +-11.606636 3.5115764 -1.9187728 128.0 +-11.573553 3.5792277 -1.9168605 128.0 +-11.522192 3.640954 -1.9119202 128.0 +-11.490239 3.7085524 -1.9103265 128.0 +-11.536653 3.8018482 -1.9221195 128.0 +-11.439186 3.8477025 -1.9095297 128.0 +-11.466719 3.9354436 -1.9182947 128.0 +-11.486149 4.0210576 -1.9257848 128.0 +-11.38223 4.0632505 -1.9122388 128.0 +-11.385843 4.1434789 -1.9171792 128.0 +-11.272271 4.1806536 -1.9020395 128.0 +-11.290734 4.2664886 -1.9096891 128.0 +-11.252366 4.3310776 -1.9076173 128.0 +-11.210873 4.3942752 -1.9050674 128.0 +-11.176364 4.4600544 -1.9037926 128.0 +-11.192691 4.5463786 -1.911442 128.0 +-11.13995 4.6047888 -1.9071392 128.0 +-11.119676 4.6764994 -1.9085735 128.0 +-11.096218 4.7469702 -1.9095297 128.0 +-11.055114 4.8098459 -1.9074579 128.0 +-10.994697 4.8640099 -1.9020395 128.0 +-10.963745 4.9309754 -1.9018801 128.0 +-10.949444 5.0055428 -1.9047488 128.0 +-10.913153 5.0701375 -1.9037926 128.0 +-10.87291 5.1327896 -1.9021989 128.0 +-10.857233 5.2070918 -1.9050674 128.0 +-10.796679 5.259778 -1.8999678 128.0 +-10.800481 5.3438745 -1.9065018 128.0 +-10.775427 5.4140334 -1.9079361 128.0 +-10.74816 5.4831882 -1.9090515 128.0 +-10.714314 5.5490346 -1.9090515 128.0 +-10.66783 5.6082411 -1.9068205 128.0 +-10.64367 5.6791682 -1.9087329 128.0 +-10.618173 5.7495403 -1.9104859 128.0 +-10.609516 5.82932 -1.9154261 128.0 +-10.576998 5.8962317 -1.9160637 128.0 +-10.536324 5.9585905 -1.9152668 128.0 +-10.51669 6.0329518 -1.9184541 128.0 +-10.460702 6.0864458 -1.9149481 128.0 +-10.421459 6.1495132 -1.9146293 128.0 +-10.418263 6.2341247 -1.9211633 128.0 +-10.400916 6.3107347 -1.9251474 128.0 +-10.360317 6.3734002 -1.9248286 128.0 +-10.331067 6.4431186 -1.926741 128.0 +-10.300518 6.5121903 -1.9284941 128.0 +-10.313563 6.6093588 -1.9386934 128.0 +-10.277782 6.6757436 -1.9396496 128.0 +-10.230855 6.7348819 -1.938534 128.0 +-10.182768 6.7931476 -1.9372591 128.0 +-10.184242 6.8848023 -1.9457054 128.0 +-10.152394 6.9544144 -1.9477772 128.0 +-10.051137 6.9760509 -1.9363029 128.0 +-10.094553 7.0983505 -1.9533548 128.0 +-10.0492 7.1590104 -1.9530362 128.0 +-10.015491 7.2280464 -1.9551079 128.0 +-9.987689 7.3015985 -1.9584545 128.0 +-9.9403191 7.3609819 -1.9579765 128.0 +-9.8799601 7.4105816 -1.9549485 128.0 +-9.8437366 7.4782305 -1.9568609 128.0 +-9.7968836 7.5378881 -1.9567015 128.0 +-9.7473326 7.5954313 -1.9560641 128.0 +-9.6834946 7.641643 -1.952558 128.0 +-9.6811552 7.7366605 -1.9618012 128.0 +-9.6419439 7.8027487 -1.9635541 128.0 +-9.6259575 7.8880429 -1.9702475 128.0 +-9.5887718 7.9564137 -1.9726379 128.0 +-9.5813446 8.0500259 -1.981403 128.0 +-9.522747 8.1009884 -1.9794906 128.0 +-9.478097 8.1637764 -1.9806062 128.0 +-9.4211302 8.2159395 -1.9791719 128.0 +-9.3801613 8.2820864 -1.9812436 128.0 +-9.3402081 8.3493547 -1.9836341 128.0 +-9.3019772 8.4184313 -1.9865026 128.0 +-9.2829037 8.5053587 -1.993674 128.0 +-9.2218552 8.5541019 -1.9917617 128.0 +-9.1432867 8.5861969 -1.9860245 128.0 +-9.1283522 8.6781874 -1.9944708 128.0 +-9.0813341 8.7401953 -1.9959052 128.0 +-9.0225849 8.7909298 -1.9947896 128.0 +-8.980423 8.8579111 -1.9974988 128.0 +-8.9189167 8.9058723 -1.9959052 128.0 +-8.8738241 8.9702549 -1.9981363 128.0 +-8.8469067 9.053483 -2.0046701 128.0 +-8.8035297 9.1203814 -2.0075388 128.0 +-8.7474031 9.1742277 -2.0075388 128.0 +-8.6814699 9.2176666 -2.0053077 128.0 +-8.6334896 9.280158 -2.0073793 128.0 +-8.6271544 9.3882008 -2.019491 128.0 +-8.5229387 9.3897915 -2.0083356 128.0 +-8.4724131 9.449996 -2.0100884 128.0 +-8.4371777 9.5276709 -2.0156662 128.0 +-8.3954573 9.5985804 -2.0198097 128.0 +-8.3441486 9.6588774 -2.0217221 128.0 +-8.2763948 9.7001324 -2.0196505 128.0 +-8.219265 9.7537518 -2.020288 128.0 +-8.177577 9.8260059 -2.0249095 128.0 +-8.1190128 9.8782854 -2.0253875 128.0 +-8.0756683 9.949378 -2.0298498 128.0 +-8.0113811 9.9948912 -2.029053 128.0 +-7.9480648 10.041537 -2.0285747 128.0 +-7.8832617 10.086227 -2.0277779 128.0 +-7.8338919 10.150821 -2.0311246 128.0 +-7.7876163 10.219898 -2.0354276 128.0 +-7.7271357 10.270645 -2.0360649 128.0 +-7.6645594 10.318657 -2.0362244 128.0 +-7.5923438 10.35355 -2.0338337 128.0 +-7.5402513 10.415935 -2.0370212 128.0 +-7.4871044 10.477265 -2.0400491 128.0 +-7.432919 10.537529 -2.0429175 128.0 +-7.3726349 10.589419 -2.0441926 128.0 +-7.3097572 10.637712 -2.0448301 128.0 +-7.2526598 10.694619 -2.0472205 128.0 +-7.1836076 10.733996 -2.0462642 128.0 +-7.1214185 10.783639 -2.0473797 128.0 +-7.0745206 10.856908 -2.053117 128.0 +-7.0152454 10.911737 -2.0553479 128.0 +-6.9534483 10.962914 -2.0569417 128.0 +-6.8918104 11.014578 -2.0586946 128.0 +-6.8147631 11.041536 -2.0558262 128.0 +-6.760746 11.105911 -2.0601289 128.0 +-6.6939983 11.149724 -2.060607 128.0 +-6.6098671 11.164254 -2.0556667 128.0 +-6.5636387 11.242966 -2.0628381 128.0 +-6.4891119 11.273617 -2.0610852 128.0 +-6.432972 11.336403 -2.065388 128.0 +-6.3719678 11.39117 -2.0682566 128.0 +-6.2924194 11.412763 -2.0650692 128.0 +-6.2142601 11.436411 -2.06236 128.0 +-6.1542234 11.493472 -2.065866 128.0 +-6.0817423 11.527525 -2.0652287 128.0 +-6.0200028 11.582144 -2.0684159 128.0 +-5.9515224 11.624136 -2.0693722 128.0 +-5.8907547 11.681591 -2.0731969 128.0 +-5.8233581 11.726357 -2.0747905 128.0 +-5.7525983 11.764529 -2.0752685 128.0 +-5.6897254 11.819174 -2.0787747 128.0 +-5.6310487 11.883303 -2.0840335 128.0 +-5.5655394 11.933735 -2.0869021 128.0 +-5.4864454 11.955098 -2.084671 128.0 +-5.4109554 11.984038 -2.0838742 128.0 +-5.340126 12.02333 -2.0849898 128.0 +-5.2686234 12.061297 -2.0859461 128.0 +-5.2077656 12.124239 -2.0913644 128.0 +-5.1317382 12.152327 -2.0907269 128.0 +-5.0449648 12.154408 -2.0856273 128.0 +-4.9844613 12.219871 -2.0916831 128.0 +-4.912693 12.258472 -2.0931175 128.0 +-4.8417239 12.299408 -2.0950298 128.0 +-4.764029 12.32336 -2.0940735 128.0 +-4.6879745 12.351437 -2.0939143 128.0 +-4.6186476 12.397546 -2.0969422 128.0 +-4.5496097 12.445123 -2.1002889 128.0 +-4.4781618 12.486744 -2.1026793 128.0 +-4.404736 12.523298 -2.1042728 128.0 +-4.3265243 12.546357 -2.1036353 128.0 +-4.243453 12.554898 -2.1006074 128.0 +-4.1682 12.586322 -2.1015637 128.0 +-4.0930257 12.618234 -2.1026793 128.0 +-4.0134325 12.636525 -2.1015637 128.0 +-3.9331832 12.652429 -2.1001294 128.0 +-3.862083 12.698047 -2.1037948 128.0 +-3.7686143 12.669462 -2.0950298 128.0 +-3.675091 12.638314 -2.0859461 128.0 +-3.6444306 12.825861 -2.1136754 128.0 +-3.5767534 12.887934 -2.1203687 128.0 +-3.4996727 12.91726 -2.1216435 128.0 +-3.4231236 12.94899 -2.1233966 128.0 +-3.3335001 12.930555 -2.1168625 128.0 +-3.2553 12.955553 -2.1176596 128.0 +-3.1729283 12.963777 -2.115747 128.0 +-3.085315 12.949389 -2.1101694 128.0 +-3.0100369 12.98635 -2.1131973 128.0 +-2.9190116 12.954495 -2.1049104 128.0 +-2.8487587 13.014595 -2.1119223 128.0 +-2.767823 13.027001 -2.1111255 128.0 +-2.6856468 13.033103 -2.1093726 128.0 +-2.6027265 13.034815 -2.106982 128.0 +-2.5120161 12.995291 -2.0978982 128.0 +-2.4311426 13.004638 -2.0969422 128.0 +-2.3458619 12.989193 -2.0920019 128.0 +-2.2671347 13.009178 -2.092958 128.0 +-2.1805634 12.982927 -2.0864241 128.0 +-2.1022789 13.004834 -2.0878584 128.0 +-2.0203209 13.003831 -2.0856273 128.0 +-1.9400561 13.013054 -2.085149 128.0 +-1.8564036 12.998325 -2.0808463 128.0 +-1.7758107 13.003603 -2.07989 128.0 +-1.6956059 13.011317 -2.079412 128.0 +-1.6141573 13.00874 -2.0773404 128.0 +-1.5339601 13.015458 -2.0768621 128.0 +-1.4522073 13.007946 -2.0741529 128.0 +-1.3711222 13.00483 -2.0722406 128.0 +-1.2873021 12.972721 -2.0657067 128.0 +-1.2088681 12.993155 -2.0677783 128.0 +-1.1310008 13.021964 -2.0712845 128.0 +-1.0505223 13.02177 -2.070169 128.0 +-0.96928167 13.010251 -2.0673003 128.0 +-0.88835669 13.000195 -2.0647504 128.0 +-0.80863357 13.006386 -2.0649099 128.0 +-0.72881263 13.011103 -2.0649099 128.0 +-0.64911187 13.018288 -2.065388 128.0 +-0.56926411 13.023012 -2.0655472 128.0 +-0.48953113 13.031192 -2.0663443 128.0 +-0.40919161 13.02211 -2.0644319 128.0 +-0.32898197 13.012532 -2.0625193 128.0 +-0.24890527 13.002461 -2.060607 128.0 +-0.16892594 12.988937 -2.0582166 128.0 +-0.089183278 12.983806 -2.0572603 128.0 +-0.0095272791 13.000892 -2.0599697 128.0 +0.070361555 13.022424 -2.0634756 128.0 +0.15023023 13.018785 -2.0629976 128.0 +0.23000467 13.011696 -2.0620413 128.0 +0.30974472 13.006092 -2.0614038 128.0 +0.38951322 13.00296 -2.0612445 128.0 +0.46953964 13.007232 -2.06236 128.0 +0.54950821 13.008051 -2.0629976 128.0 +0.62945682 13.007392 -2.0634756 128.0 +0.70904189 12.999342 -2.0628381 128.0 +0.78908992 12.999674 -2.0636349 128.0 +0.86818129 12.984737 -2.0620413 128.0 +0.94977838 13.00575 -2.0663443 128.0 +1.0301076 13.006566 -2.0674598 128.0 +1.1098111 12.999018 -2.0673003 128.0 +1.1852314 12.944774 -2.0596509 128.0 +1.2693415 12.985402 -2.0674598 128.0 +1.3498108 12.985225 -2.0687346 128.0 +1.4321629 13.00123 -2.0727186 128.0 +1.5128226 13.000042 -2.0739937 128.0 +1.5911198 12.978757 -2.0720813 128.0 +1.6707259 12.968749 -2.0720813 128.0 +1.7541006 12.986626 -2.0767028 128.0 +1.8365142 12.995169 -2.07989 128.0 +1.9186664 13.000258 -2.0825994 128.0 +1.9992989 12.994095 -2.0835555 128.0 +2.0808647 12.99328 -2.0854678 128.0 +2.1633058 12.996823 -2.088177 128.0 +2.2470448 13.006652 -2.0920019 128.0 +2.3269839 12.993591 -2.0921612 128.0 +2.4034281 12.961596 -2.0892925 128.0 +2.4940684 13.004779 -2.0988545 128.0 +2.5718987 12.979547 -2.097261 128.0 +2.6584141 12.997374 -2.1028385 128.0 +2.7403555 12.991443 -2.1045916 128.0 +2.8168731 12.959913 -2.1022012 128.0 +2.8980651 12.950092 -2.103476 128.0 +2.98035 12.944573 -2.1055477 128.0 +3.0554001 12.907789 -2.1025198 128.0 +3.1478393 12.943478 -2.1116037 128.0 +3.2114162 12.860703 -2.1010857 128.0 +3.2853673 12.82163 -2.0978982 128.0 +3.3609669 12.789771 -2.0959859 128.0 +3.4293675 12.731731 -2.0897708 128.0 +3.5239658 12.770404 -2.0998106 128.0 +3.5781002 12.663038 -2.0854678 128.0 +3.6784933 12.71956 -2.098695 128.0 +3.7497487 12.674029 -2.0948703 128.0 +3.8254435 12.644168 -2.0937548 128.0 +3.8860393 12.565755 -2.0845118 128.0 +3.9514685 12.504961 -2.0782964 128.0 +4.0211496 12.458871 -2.0746312 128.0 +4.1154394 12.488346 -2.0838742 128.0 +4.187583 12.449759 -2.0816431 128.0 +4.276392 12.460247 -2.0878584 128.0 +4.3498306 12.425386 -2.0864241 128.0 +4.4332905 12.418918 -2.0899301 128.0 +4.5036693 12.37571 -2.0872209 128.0 +4.5788341 12.345992 -2.0869021 128.0 +4.6496162 12.304736 -2.084671 128.0 +4.7221923 12.268604 -2.0833962 128.0 +4.7966619 12.23756 -2.0830774 128.0 +4.8617811 12.183141 -2.0787747 128.0 +4.8985519 12.059785 -2.0625193 128.0 +4.9758511 12.037712 -2.0639536 128.0 +5.0637789 12.040626 -2.0698502 128.0 +5.118927 11.96576 -2.0622008 128.0 +5.2174559 11.992064 -2.0724001 128.0 +5.2949333 11.968852 -2.0739937 128.0 +5.36058 11.91903 -2.0709658 128.0 +5.4327917 11.884119 -2.070647 128.0 +5.4993706 11.83713 -2.0682566 128.0 +5.5668411 11.792451 -2.0663443 128.0 +5.6254334 11.729586 -2.0612445 128.0 +5.696002 11.692185 -2.0607665 128.0 +5.761508 11.644628 -2.0585353 128.0 +5.8186674 11.580828 -2.0534356 128.0 +5.8855791 11.536992 -2.0520015 128.0 +5.9853129 11.556767 -2.0622008 128.0 +6.1199613 11.641288 -2.0843523 128.0 +6.1675758 11.559096 -2.0762248 128.0 +6.2256937 11.497596 -2.0719218 128.0 +6.2842402 11.437548 -2.0679379 128.0 +6.3413239 11.375491 -2.0636349 128.0 +6.3517179 11.231528 -2.0441926 128.0 +6.4632487 11.266845 -2.0580573 128.0 +6.482614 11.141644 -2.0421207 128.0 +6.5904884 11.168827 -2.0547106 128.0 +6.6198649 11.062947 -2.0424395 128.0 +6.6860847 11.019588 -2.0419614 128.0 +6.7349534 10.948085 -2.0362244 128.0 +6.8249879 10.943412 -2.0432363 128.0 +6.876709 10.87713 -2.0386147 128.0 +6.9369287 10.824756 -2.0367024 128.0 +6.9843969 10.75301 -2.0311246 128.0 +7.0377607 10.690986 -2.0274594 128.0 +7.0900784 10.627892 -2.0236344 128.0 +7.1496277 10.576009 -2.0220408 128.0 +7.2088075 10.523796 -2.0204473 128.0 +7.2625504 10.463956 -2.0174193 128.0 +7.3198051 10.409506 -2.015507 128.0 +7.3978581 10.384498 -2.019491 128.0 +7.4568157 10.332505 -2.0182161 128.0 +7.5148306 10.279384 -2.0167818 128.0 +7.5853996 10.243395 -2.0188537 128.0 +7.6463323 10.194289 -2.0183754 128.0 +7.691421 10.124383 -2.0137539 128.0 +7.7425628 10.062915 -2.0108855 128.0 +7.7974873 10.006652 -2.0091324 128.0 +7.8489556 9.9462185 -2.0065825 128.0 +7.8956623 9.8801327 -2.0029171 128.0 +7.9573789 9.8330345 -2.0032358 128.0 +8.0063009 9.7702789 -2.0003674 128.0 +8.0629473 9.7171707 -1.9995705 128.0 +8.116704 9.6607113 -1.9981363 128.0 +8.1745491 9.6092224 -1.9978175 128.0 +8.2243366 9.5484114 -1.9955864 128.0 +8.2691441 9.4821434 -1.9922397 128.0 +8.3173695 9.420125 -1.9898493 128.0 +8.369092 9.3622885 -1.988415 128.0 +8.4323425 9.3173485 -1.9898493 128.0 +8.4840183 9.2596102 -1.9885744 128.0 +8.5353041 9.2015886 -1.9872994 128.0 +8.5861969 9.1432867 -1.9860245 128.0 +8.6468983 9.095439 -1.9871401 128.0 +8.6915913 9.0308304 -1.9845903 128.0 +8.7303057 8.9603586 -1.9807656 128.0 +8.780962 8.9024048 -1.9798093 128.0 +8.8172846 8.8301945 -1.9756659 128.0 +8.8516493 8.7564859 -1.9712037 128.0 +8.8734388 8.6709585 -1.9640323 128.0 +8.915822 8.6060648 -1.9616418 128.0 +8.9548845 8.5382519 -1.9586139 128.0 +9.0142927 8.4899139 -1.9602076 128.0 +9.062602 8.4310808 -1.9594107 128.0 +9.0988989 8.3612871 -1.9560641 128.0 +9.1273708 8.28473 -1.9511237 128.0 +9.1655378 8.2173662 -1.9484146 128.0 +9.2187424 8.1635904 -1.949052 128.0 +9.2619724 8.1010227 -1.9476178 128.0 +9.2965641 8.0311317 -1.9444305 128.0 +9.3366556 7.966248 -1.9425181 128.0 +9.3815851 7.9056287 -1.9417213 128.0 +9.4177752 7.837811 -1.9391714 128.0 +9.4664526 7.7805037 -1.9393308 128.0 +9.4971523 7.7085843 -1.9358248 128.0 +9.5419617 7.6483135 -1.9353467 128.0 +9.5569744 7.5644994 -1.9288127 128.0 +9.5993204 7.5026765 -1.9280159 128.0 +9.6334524 7.4345875 -1.9256254 128.0 +9.6616144 7.3621736 -1.9221195 128.0 +9.6900396 7.290288 -1.9187728 128.0 +9.7337971 7.2301049 -1.9186134 128.0 +9.7811613 7.1725788 -1.919251 128.0 +9.8121929 7.1031651 -1.9167011 128.0 +9.8676405 7.051435 -1.9190916 128.0 +9.909915 6.9901862 -1.9189322 128.0 +9.9437075 6.9230437 -1.9171792 128.0 +9.9713535 6.8518357 -1.9143106 128.0 +10.022196 6.7966189 -1.9160637 128.0 +10.022689 6.707541 -1.9080954 128.0 +10.062833 6.6453724 -1.9079361 128.0 +10.087704 6.5732622 -1.9049081 128.0 +10.13283 6.5144448 -1.9058644 128.0 +10.177612 6.4553213 -1.9068205 128.0 +10.215356 6.3917036 -1.9065018 128.0 +10.23254 6.3154216 -1.9023583 128.0 +10.271942 6.2530303 -1.9025177 128.0 +10.321119 6.1964912 -1.9045894 128.0 +10.337708 6.120471 -1.9006053 128.0 +10.358871 6.0474677 -1.8975774 128.0 +10.353858 5.9596601 -1.8897685 128.0 +10.362756 5.8804255 -1.8846688 128.0 +10.40295 5.81914 -1.8854656 128.0 +10.416847 5.7432818 -1.8814815 128.0 +10.456228 5.6816144 -1.8822784 128.0 +10.494374 5.6192131 -1.8829159 128.0 +10.522544 5.5514903 -1.8818003 128.0 +10.577432 5.4977484 -1.885625 128.0 +10.583726 5.4187951 -1.8806847 128.0 +10.60708 5.3488626 -1.8789318 128.0 +10.617595 5.2726998 -1.8749477 128.0 +10.620481 5.1931405 -1.8696886 128.0 +10.630798 5.117599 -1.8658639 128.0 +10.720879 5.0801764 -1.8763819 128.0 +10.755426 5.0159678 -1.8770194 128.0 +10.798563 4.9556446 -1.8792505 128.0 +10.797276 4.8750725 -1.8736727 128.0 +10.825181 4.8079286 -1.873354 128.0 +10.82372 4.7279787 -1.8679357 128.0 +10.925092 4.6926489 -1.8806847 128.0 +10.960046 4.6282139 -1.8818003 128.0 +11.008297 4.5692039 -1.8853064 128.0 +11.048923 4.5067925 -1.8875374 128.0 +11.028718 4.4198146 -1.8792505 128.0 +11.108908 4.3730359 -1.8884935 128.0 +11.121719 4.2994504 -1.8861032 128.0 +11.118356 4.2199173 -1.8810035 128.0 +11.155141 4.1557527 -1.8829159 128.0 +11.151687 4.0767193 -1.8779756 128.0 +11.223884 4.0252151 -1.8861032 128.0 +11.299591 3.974288 -1.8948681 128.0 +11.326564 3.9058459 -1.8953463 128.0 +11.283915 3.8138285 -1.8840314 128.0 +11.323973 3.7501068 -1.8868999 128.0 +11.312025 3.6692822 -1.8810035 128.0 +11.352203 3.6054823 -1.8840314 128.0 +11.389195 3.540448 -1.8865812 128.0 +11.357814 3.4544098 -1.8776568 128.0 +11.445032 3.4043593 -1.8888123 128.0 +11.481821 3.3387566 -1.8915216 128.0 +11.457458 3.255559 -1.8840314 128.0 +11.505756 3.1931169 -1.8888123 128.0 +11.492735 3.1136804 -1.8833939 128.0 +11.524986 3.0466366 -1.885625 128.0 +11.603688 2.9913912 -1.895665 128.0 +11.595973 2.9136395 -1.8913622 128.0 +11.613633 2.8424332 -1.8913622 128.0 +11.683673 2.7837059 -1.9001272 128.0 +11.673606 2.7057214 -1.895665 128.0 +11.689988 2.6340425 -1.895665 128.0 +11.722324 2.5658536 -1.8983742 128.0 +11.76199 2.4990087 -1.9023583 128.0 +11.757764 2.4228058 -1.899171 128.0 +11.771441 2.3504226 -1.8990116 128.0 +11.763347 2.2738402 -1.8953463 128.0 +11.770285 2.2003489 -1.8942307 128.0 +11.795222 2.130192 -1.8961431 128.0 +11.864479 2.06761 -1.9053862 128.0 +11.829237 1.986758 -1.8975774 128.0 +11.809045 1.9089379 -1.8923184 128.0 +11.857605 1.8422035 -1.8983742 128.0 +11.893095 1.7730519 -1.9023583 128.0 +11.884205 1.6972517 -1.899171 128.0 +11.911024 1.6265709 -1.9018801 128.0 +11.943295 1.5563906 -1.9055456 128.0 +11.9536 1.4832002 -1.905705 128.0 +11.941887 1.4073992 -1.9023583 128.0 +11.971882 1.336509 -1.9058644 128.0 +11.972985 1.262301 -1.9047488 128.0 +11.955945 1.1863745 -1.9007647 128.0 +11.971847 1.1138152 -1.9021989 128.0 +11.96862 1.0394819 -1.9006053 128.0 +11.960997 0.96491241 -1.8983742 128.0 +12.028715 0.89612567 -1.9084141 128.0 +12.008379 0.82055128 -1.9042706 128.0 +12.066395 0.75016344 -1.9128764 128.0 +11.991917 0.67169189 -1.9001272 128.0 +12.040182 0.60031193 -1.9072986 128.0 +12.021941 0.52547437 -1.9037926 128.0 +12.039737 0.45225558 -1.906183 128.0 +12.054126 0.37874505 -1.9080954 128.0 +12.061157 0.30490011 -1.9088923 128.0 +12.052931 0.23069924 -1.9072986 128.0 +12.061029 0.15682958 -1.9084141 128.0 +12.056828 0.082787491 -1.9076173 128.0 +12.041314 0.0087945629 -1.9050674 128.0 +12.053975 -0.065158665 -1.9071392 128.0 +12.064207 -0.13924421 -1.9088923 128.0 +12.033514 -0.21274364 -1.9041113 128.0 +12.030994 -0.2865524 -1.9039519 128.0 +12.048745 -0.3609584 -1.9071392 128.0 +12.046304 -0.43488133 -1.9071392 128.0 +12.061163 -0.50953734 -1.9100078 128.0 +12.066684 -0.5839628 -1.911442 128.0 +12.049073 -0.65723926 -1.9092109 128.0 +12.055654 -0.73181629 -1.910964 128.0 +12.050936 -0.80577457 -1.910964 128.0 +12.030996 -0.8786245 -1.9085735 128.0 +12.048998 -0.95429868 -1.9123982 128.0 +12.042915 -1.028212 -1.9123982 128.0 +12.062923 -1.1045161 -1.9167011 128.0 +12.00188 -1.1732312 -1.9079361 128.0 +12.025877 -1.2501166 -1.9130358 128.0 +11.996391 -1.3215051 -1.9095297 128.0 +12.003747 -1.396914 -1.9120796 128.0 +12.008668 -1.4722227 -1.9143106 128.0 +11.992555 -1.544996 -1.913195 128.0 +11.989697 -1.6194767 -1.9143106 128.0 +11.987354 -1.6941185 -1.9155855 128.0 +11.978687 -1.7679278 -1.9159043 128.0 +11.922729 -1.8344898 -1.9085735 128.0 +11.883955 -1.9032414 -1.9041113 128.0 +11.815571 -1.9667246 -1.8948681 128.0 +11.522138 -1.9906247 -1.8488119 128.0 +11.04909 -1.9788096 -1.7732732 128.0 +10.903757 -2.0219138 -1.7514403 128.0 +10.634213 -2.0395133 -1.7092087 128.0 +10.467524 -2.0742199 -1.6838698 128.0 +10.441059 -2.1356392 -1.6816387 128.0 +10.234564 -2.1589189 -1.6497658 128.0 +9.7599974 -2.1214635 -1.5735897 128.0 +9.5155811 -2.1295741 -1.5353423 128.0 +8.7894506 -2.0238092 -1.4172534 128.0 +8.5530291 -2.0247245 -1.3801215 128.0 +8.3888807 -2.0403113 -1.354942 128.0 +8.0476723 -2.0097198 -1.30028 128.0 +7.9978929 -2.0495059 -1.2940648 128.0 +7.6509829 -2.0107338 -1.2382872 128.0 +7.640408 -2.0581551 -1.238606 128.0 +7.3392825 -2.0254359 -1.1903186 128.0 +7.1253099 -2.0135274 -1.1565334 128.0 +7.0559192 -2.0407555 -1.1469715 128.0 +6.7990251 -2.0117583 -1.1058555 128.0 +6.6514282 -2.0125616 -1.0830665 128.0 +6.6097164 -2.0442951 -1.0781261 128.0 +6.2901683 -1.9878516 -1.0261734 128.0 +6.2412119 -2.0145853 -1.0199581 128.0 +6.2240448 -2.0512979 -1.0191613 128.0 +6.1879482 -2.0815816 -1.0151772 128.0 +6.2647009 -2.1502733 -1.0304762 128.0 +5.9923534 -2.0979989 -0.98617291 128.0 +6.0054011 -2.1440203 -0.9906351 128.0 +6.0088315 -2.1869047 -0.99350369 128.0 +6.0258451 -2.2350605 -0.99876267 128.0 +5.9917006 -2.2643158 -0.99525666 128.0 +6.1287942 -2.3591907 -1.0213925 128.0 +6.1151223 -2.3971121 -1.0215518 128.0 +5.9939361 -2.3921475 -1.0030656 128.0 +5.8831062 -2.389874 -0.9863323 128.0 +5.8856664 -2.4330919 -0.98936021 128.0 +5.8678961 -2.4680119 -0.98888212 128.0 +5.8517346 -2.503582 -0.98872274 128.0 +5.7765155 -2.5134478 -0.97820473 128.0 +5.7023005 -2.5228853 -0.96784604 128.0 +5.7038198 -2.5655196 -0.97087395 128.0 +5.6789923 -2.5963652 -0.9692803 128.0 +5.7032437 -2.6498785 -0.97645169 128.0 +5.6672363 -2.6755519 -0.97294569 128.0 +5.6863194 -2.7273502 -0.97932023 128.0 +5.4511476 -2.6558356 -0.94011664 128.0 +5.4188218 -2.6813533 -0.93724805 128.0 +5.6245685 -2.8262365 -0.97740787 128.0 +5.5877738 -2.8508258 -0.97390187 128.0 +5.5167012 -2.8573651 -0.96418065 128.0 +5.591692 -2.9398527 -0.98107326 128.0 +5.556128 -2.9648132 -0.97788596 128.0 +5.6072826 -3.0364525 -0.9906351 128.0 +5.4881783 -3.0156593 -0.97214884 128.0 +5.4609485 -3.0444708 -0.97055519 128.0 +5.4765387 -3.0973589 -0.97692978 128.0 +5.4540052 -3.1289392 -0.97629231 128.0 +5.3374262 -3.1057498 -0.95812482 128.0 +5.3174191 -3.1379395 -0.95796543 128.0 +5.2828159 -3.1613836 -0.9550969 128.0 +5.2835755 -3.2060287 -0.95892161 128.0 +5.2982798 -3.2595947 -0.96545553 128.0 +5.2949328 -3.3024907 -0.96864283 128.0 +5.2895899 -3.344413 -0.97151142 128.0 +5.2398772 -3.3581643 -0.96593362 128.0 +5.2175174 -3.3891768 -0.96561491 128.0 +5.2065191 -3.4276407 -0.96752727 128.0 +5.2059207 -3.4732189 -0.97151142 128.0 +5.1526141 -3.4835343 -0.96529621 128.0 +5.1620927 -3.5362842 -0.97135204 128.0 +5.1240764 -3.5566342 -0.96816474 128.0 +5.136075 -3.6118569 -0.97485805 128.0 +5.0712004 -3.6129463 -0.96641177 128.0 +5.0257206 -3.6272411 -0.9617902 128.0 +5.069519 -3.7063661 -0.97501743 128.0 +5.0482688 -3.7385771 -0.97533613 128.0 +5.0426092 -3.7825139 -0.97884214 128.0 +4.9249706 -3.7417228 -0.95971847 128.0 +4.8940945 -3.7658515 -0.95812482 128.0 +4.8919215 -3.8121932 -0.96242762 128.0 +4.9381881 -3.8971765 -0.9767704 128.0 +4.972796 -3.9742408 -0.98888212 128.0 +4.9682698 -4.0208249 -0.9930256 128.0 +4.9435053 -4.0512338 -0.9930256 128.0 +4.8327017 -4.0102577 -0.97501743 128.0 +4.868474 -4.0906372 -0.98776656 128.0 +4.8914084 -4.1613703 -0.99796587 128.0 +4.84409 -4.1726217 -0.99334431 128.0 +4.7945862 -4.1815033 -0.98824465 128.0 +4.8265638 -4.2618079 -1.0006751 128.0 +4.7730894 -4.2669997 -0.99477857 128.0 +4.683135 -4.2385764 -0.98091388 128.0 +4.6606789 -4.2705665 -0.98171073 128.0 +3.5957291 -3.3356955 -0.75302297 128.0 +3.5449677 -3.329313 -0.74632967 128.0 +3.5244727 -3.351002 -0.74632967 128.0 +3.5273187 -3.395155 -0.75158864 128.0 +4.5522356 -4.4356341 -0.98728848 128.0 +4.5326648 -4.471108 -0.98904145 128.0 +4.5435686 -4.5372005 -0.99780649 128.0 +4.5343895 -4.5839424 -1.0021093 128.0 +4.4606385 -4.5650792 -0.99159127 128.0 +4.4250016 -4.5845499 -0.9898383 128.0 +4.4131384 -4.6287622 -0.99366301 128.0 +4.367732 -4.6377878 -0.98967892 128.0 +4.342555 -4.6681142 -0.99047577 128.0 +2.5870314 -2.815661 -0.57851905 128.0 +2.5756779 -2.8380604 -0.57995331 128.0 +2.5496478 -2.8442557 -0.57788157 128.0 +2.5301843 -2.8576293 -0.57740349 128.0 +4.0731745 -4.6571989 -0.96003717 128.0 +6.6177149 -7.6605487 -1.5954226 128.0 +4.0291734 -4.7226033 -0.96338379 128.0 +6.5015798 -7.7155147 -1.5900042 128.0 +6.4427481 -7.7416039 -1.5871357 128.0 +6.3813338 -7.7642117 -1.5836297 128.0 +6.3254852 -7.7932563 -1.581558 128.0 +6.2726078 -7.8257599 -1.580283 128.0 +6.2275357 -7.8679709 -1.5810798 128.0 +6.1900849 -7.9200349 -1.5839484 128.0 +6.1268954 -7.9391108 -1.5801237 128.0 +6.0619106 -7.9553547 -1.5758208 128.0 +6.0094223 -7.9876666 -1.5748646 128.0 +5.9679503 -8.0346918 -1.5769364 128.0 +5.9296308 -8.0862846 -1.5799643 128.0 +5.8799028 -8.1225166 -1.5799643 128.0 +5.8087149 -8.1287241 -1.5740678 128.0 +5.7388115 -8.1359777 -1.56849 128.0 +5.6859617 -8.1669865 -1.5676932 128.0 +5.6592259 -8.2358932 -1.5743866 128.0 +5.5770001 -8.2238913 -1.5653028 128.0 +5.5341215 -8.2694426 -1.5675339 128.0 +5.4941583 -8.3197193 -1.5707211 128.0 +5.4440837 -8.354928 -1.5710399 128.0 +5.3927164 -8.388175 -1.5710399 128.0 +5.3511934 -8.4369459 -1.5740678 128.0 +5.2841377 -8.4453516 -1.5694462 128.0 +5.2197742 -8.4574537 -1.5656215 128.0 +5.1451941 -8.452219 -1.5586095 128.0 +5.1272831 -8.5403376 -1.5692869 128.0 +5.0561738 -8.5402069 -1.5633904 128.0 +5.0086546 -8.5795956 -1.5649841 128.0 +4.9283361 -8.562254 -1.5560597 128.0 +4.8961711 -8.6283932 -1.562753 128.0 +4.8383164 -8.6496572 -1.5611594 128.0 +4.7775249 -8.66535 -1.5586095 128.0 +4.7200232 -8.6866941 -1.5571752 128.0 +4.6582451 -8.6998272 -1.5543066 128.0 +4.5997086 -8.7186413 -1.5525537 128.0 +4.5392957 -8.7335615 -1.5501631 128.0 +4.4869719 -8.7638855 -1.5506413 128.0 +4.4353361 -8.7956591 -1.5514381 128.0 +4.3755746 -8.8112144 -1.5493664 128.0 +4.3222952 -8.8396702 -1.5496851 128.0 +4.2581253 -8.8455658 -1.5460197 128.0 +1.3356831 -2.8194282 -0.4648923 128.0 +1.3204447 -2.8320441 -0.46568909 128.0 +1.3092196 -2.8535516 -0.46807957 128.0 +4.0499187 -8.9698954 -1.5500038 128.0 +3.9803772 -8.9620962 -1.5442667 128.0 +3.9197788 -8.9736853 -1.5420356 128.0 +3.8607471 -8.9884968 -1.540442 128.0 +3.8009131 -9.0011034 -1.5385296 128.0 +3.7475042 -9.0288153 -1.5393264 128.0 +3.6976273 -9.0653505 -1.5417169 128.0 +3.6389956 -9.0805378 -1.540442 128.0 +3.5777853 -9.0889158 -1.5380515 128.0 +3.5230174 -9.1134605 -1.5385296 128.0 +3.4726374 -9.1496725 -1.5410794 128.0 +3.4009204 -9.129179 -1.533908 128.0 +3.3455188 -9.1517296 -1.5342268 128.0 +3.2933013 -9.1832361 -1.5361391 128.0 +1.1282215 -3.2085929 -0.51031113 128.0 +1.0927414 -3.1697247 -0.50250226 128.0 +3.1243424 -9.2441692 -1.5364579 128.0 +1.0754888 -3.2484965 -0.51365775 128.0 +1.0424371 -3.2146556 -0.50680512 128.0 +1.0200028 -3.2125232 -0.5053708 128.0 +0.99499643 -3.2017527 -0.50250226 128.0 +0.97590673 -3.2096865 -0.50282097 128.0 +0.95506811 -3.2118292 -0.50218356 128.0 +0.94113207 -3.2375357 -0.50553018 128.0 +0.93636149 -3.2964282 -0.5144546 128.0 +0.93169516 -3.3582358 -0.52385706 128.0 +0.92346495 -3.4096267 -0.53150654 128.0 +0.90681624 -3.4314539 -0.53421575 128.0 +2.4397771 -9.4642582 -1.5390077 128.0 +0.83817208 -3.3370039 -0.51668566 128.0 +0.80735284 -3.2998922 -0.50967366 128.0 +2.0484478 -8.5981293 -1.3880897 128.0 +1.9746956 -8.5201349 -1.3731095 128.0 +1.893731 -8.4049664 -1.3520733 128.0 +1.836423 -8.3903894 -1.3477706 128.0 +1.7754668 -8.3570795 -1.3404398 128.0 +1.7209669 -8.3523455 -1.3378899 128.0 +1.6776123 -8.4024401 -1.3444239 128.0 +1.6260242 -8.4125757 -1.3444239 128.0 +1.5745565 -8.4233646 -1.3445833 128.0 +1.5542537 -8.6067657 -1.3731095 128.0 +1.5180273 -8.7114515 -1.3887272 128.0 +1.4548968 -8.6631603 -1.3793247 128.0 +1.4009254 -8.6670513 -1.3785279 128.0 +1.2555526 -8.0823727 -1.2816343 128.0 +1.2673801 -8.501976 -1.348886 128.0 +1.2419937 -8.6972332 -1.3794841 128.0 +1.1875362 -8.6968651 -1.3782091 128.0 +1.1615856 -8.9144602 -1.4124724 128.0 +1.1355619 -9.1526299 -1.4500824 128.0 +1.1357845 -9.6378746 -1.5278522 128.0 +1.075421 -9.6338701 -1.5260992 128.0 +1.014114 -9.6196699 -1.5227525 128.0 +0.9544847 -9.6198177 -1.5217963 128.0 +0.89516622 -9.6225443 -1.5213182 128.0 +0.83585018 -9.6249046 -1.5208402 128.0 +0.77645946 -9.6259165 -1.5202026 128.0 +0.71804172 -9.6393595 -1.521637 128.0 +0.6594882 -9.6524487 -1.5230713 128.0 +0.60043335 -9.6592693 -1.5235493 128.0 +0.54065669 -9.6539001 -1.5221151 128.0 +0.48150969 -9.659008 -1.5224338 128.0 +0.42266551 -9.6716433 -1.5240275 128.0 +0.3630909 -9.6681356 -1.5230713 128.0 +0.30357531 -9.6642609 -1.5221151 128.0 +0.24444565 -9.6728506 -1.5232307 128.0 +0.18505171 -9.6721945 -1.5229119 128.0 +0.12571363 -9.6741343 -1.5230713 128.0 +0.066447243 -9.6885443 -1.5253024 128.0 +0.0069959415 -9.6858082 -1.5248243 128.0 +-0.052106366 -9.6244621 -1.5149437 128.0 +-0.11165985 -9.6673956 -1.5219557 128.0 +-0.17069709 -9.6507359 -1.5194058 128.0 +-0.22946368 -9.6307554 -1.5163779 128.0 +-0.28914315 -9.648901 -1.5195652 128.0 +-0.34848458 -9.6508923 -1.5202026 128.0 +-0.40798622 -9.6554766 -1.5213182 128.0 +-0.46641275 -9.6360283 -1.518609 128.0 +-0.52536833 -9.6300278 -1.518131 128.0 +-0.58480585 -9.632535 -1.5190872 128.0 +-0.64475477 -9.641571 -1.5211589 128.0 +-0.70469278 -9.6482639 -1.5229119 128.0 +-0.76325685 -9.6358852 -1.521637 128.0 +-0.82119191 -9.6172495 -1.5194058 128.0 +-0.88099658 -9.6208773 -1.5208402 128.0 +-0.94135684 -9.6290464 -1.5230713 128.0 +-0.99929935 -9.6122875 -1.5213182 128.0 +-1.0603137 -9.6246195 -1.5243461 128.0 +-1.1179802 -9.6061649 -1.5224338 128.0 +-1.1776221 -9.6050043 -1.5233899 128.0 +-1.2379223 -9.6083679 -1.525143 128.0 +-1.2996292 -9.6211367 -1.5284896 128.0 +-1.3578103 -9.6071157 -1.5275334 128.0 +-1.4137065 -9.5780935 -1.5241868 128.0 +-1.4719998 -9.5663118 -1.5237087 128.0 +-1.5336354 -9.5756216 -1.5267366 128.0 +-1.5981957 -9.6010885 -1.5324738 128.0 +-1.6595973 -9.6056938 -1.5348642 128.0 +-1.7172874 -9.5885277 -1.5337486 128.0 +-1.7737498 -9.5651913 -1.5316769 128.0 +-1.8337086 -9.560914 -1.5327924 128.0 +-1.8942574 -9.5591669 -1.5343862 128.0 +-1.9556448 -9.5609045 -1.5366172 128.0 +-2.0112166 -9.534236 -1.5342268 128.0 +-2.0652771 -9.5014572 -1.5308801 128.0 +-2.1256938 -9.4982395 -1.5324738 128.0 +-2.1837125 -9.4840555 -1.5323144 128.0 +-2.2461843 -9.4887314 -1.5353423 128.0 +-2.3097289 -9.4968338 -1.5390077 128.0 +-2.3689134 -9.4863138 -1.5396452 128.0 +-2.3996341 -9.3644905 -1.5217963 128.0 +-2.4766169 -9.4240656 -1.5342268 128.0 +-2.5390165 -9.4258509 -1.5370953 128.0 +-2.6023188 -9.4300785 -1.540442 128.0 +-2.664963 -9.4310341 -1.5433105 128.0 +-2.7219579 -9.4116602 -1.5428324 128.0 +-2.7704139 -9.3635406 -1.5375735 128.0 +-2.8192396 -9.318018 -1.5327924 128.0 +-2.8947346 -9.3599625 -1.5428324 128.0 +-2.9476504 -9.3279047 -1.540442 128.0 +-2.9951274 -9.2795782 -1.5353423 128.0 +-3.0714738 -9.320097 -1.5453823 128.0 +-3.1273441 -9.2973318 -1.5447448 128.0 +-3.1884985 -9.2901068 -1.5468166 128.0 +-3.230438 -9.2275057 -1.5394858 128.0 +-3.2952929 -9.2307549 -1.5434699 128.0 +-3.369086 -9.2576742 -1.5515975 128.0 +-3.4076338 -9.1877699 -1.5431511 128.0 +-3.4642937 -9.1676121 -1.5433105 128.0 +-3.5403371 -9.1977777 -1.5522349 128.0 +-3.6024706 -9.190588 -1.5547848 128.0 +-1.472712 -3.6897178 -0.60258305 128.0 +-1.4715486 -3.6220739 -0.59238374 128.0 +-3.7450094 -9.0597677 -1.5437886 128.0 +-3.7970843 -9.0284281 -1.5423543 128.0 +-3.8163018 -8.9205475 -1.5275334 128.0 +-3.8311889 -8.8055315 -1.5114377 128.0 +-3.8571904 -8.7186594 -1.5002822 128.0 +-3.883486 -8.6345034 -1.4896047 128.0 +-3.9257221 -8.5871677 -1.4854612 128.0 +-1.5002658 -3.2285597 -0.53596878 128.0 +-1.5213119 -3.2219718 -0.53644687 128.0 +-1.5939859 -3.3229558 -0.55620801 128.0 +-1.6567138 -3.4000897 -0.57182574 128.0 +-1.676232 -3.3872056 -0.57134765 128.0 +-1.694768 -3.3724461 -0.5705508 128.0 +-1.7163261 -3.3637424 -0.57086957 128.0 +-1.7423812 -3.3636677 -0.57278192 128.0 +-1.7657436 -3.3581564 -0.5737381 128.0 +-4.3714819 -8.1926613 -1.4602817 128.0 +-4.3939366 -8.1144638 -1.4508792 128.0 +-4.4426923 -8.0856199 -1.4505605 128.0 +-4.4979892 -8.0685558 -1.4524729 128.0 +-4.5721955 -8.084631 -1.4606005 128.0 +-4.6467671 -8.1000977 -1.4687281 128.0 +-4.7217002 -8.1149521 -1.4768556 128.0 +-4.7964873 -8.1283398 -1.4848238 128.0 +-4.8477921 -8.1012974 -1.485302 128.0 +-4.9358153 -8.1347017 -1.4972543 128.0 +-1.9773482 -3.213763 -0.57039148 128.0 +-1.98606 -3.1839786 -0.56704479 128.0 +-5.4001713 -8.5414772 -1.5925541 128.0 +-5.4274454 -8.4691153 -1.5850639 128.0 +-5.4744692 -8.4282026 -1.5836297 128.0 +-5.5201097 -8.3853827 -1.5818766 128.0 +-5.5763884 -8.3587456 -1.583311 128.0 +-5.6192784 -8.3121033 -1.5809205 128.0 +-5.6774273 -8.2880564 -1.5829922 128.0 +-5.7529411 -8.2887497 -1.5900042 128.0 +-5.8212943 -8.2783289 -1.5949446 128.0 +-5.8427682 -8.2014465 -1.586817 128.0 +-5.9033799 -8.1798515 -1.5896856 128.0 +-5.9552069 -8.1458654 -1.5901636 128.0 +-6.0174141 -8.1258335 -1.5935103 128.0 +-6.0618291 -8.0816498 -1.5920759 128.0 +-6.1328011 -8.0726042 -1.5978131 128.0 +-6.1930542 -8.0489054 -1.6006817 128.0 +-6.2550669 -8.0271072 -1.6040283 128.0 +-6.3078718 -7.9932261 -1.6049845 128.0 +-6.360496 -7.9589987 -1.6059407 128.0 +-6.424737 -7.9390073 -1.6099248 128.0 +-6.482089 -7.9101272 -1.6121559 128.0 +-6.539958 -7.8816013 -1.6145464 128.0 +-6.5888305 -7.8420801 -1.6147057 128.0 +-6.6317077 -7.7954888 -1.6134309 128.0 +-6.6871457 -7.7636266 -1.6153432 128.0 +-6.7411451 -7.7298899 -1.6169368 128.0 +-6.7956352 -7.6965218 -1.6186898 128.0 +-6.8486533 -7.661304 -1.6201241 128.0 +-6.890234 -7.6132812 -1.6188492 128.0 +-6.9368186 -7.5708604 -1.6188492 128.0 +-6.9851561 -7.5303259 -1.6193273 128.0 +-7.033257 -7.4894829 -1.6198053 128.0 +-7.0872412 -7.4547729 -1.6217178 128.0 +-7.1444869 -7.4232388 -1.624427 128.0 +-7.1919675 -7.3813825 -1.624905 128.0 +-7.2454424 -7.3455486 -1.6268175 128.0 +-7.3078156 -7.3184185 -1.6308016 128.0 +-7.3624086 -7.2831612 -1.6330327 128.0 +-7.40131 -7.2323289 -1.6317577 128.0 +-7.4498091 -7.1908932 -1.6327139 128.0 +-7.5095096 -7.1600347 -1.6362199 128.0 +-7.558332 -7.1185608 -1.6373354 128.0 +-7.6083732 -7.0781016 -1.6387697 128.0 +-7.6582026 -7.0372963 -1.6402041 128.0 +-7.6975837 -6.9868565 -1.6394072 128.0 +-7.7447195 -6.9434476 -1.6403633 128.0 +-7.7923512 -6.9003778 -1.6414789 128.0 +-7.8323154 -6.8504848 -1.6410009 128.0 +-7.8756957 -6.8035889 -1.6413195 128.0 +-7.932313 -6.7679524 -1.6445068 128.0 +-7.9963384 -6.7382383 -1.6492878 128.0 +-8.0337391 -6.6858892 -1.6484909 128.0 +-8.0929155 -6.6515141 -1.6523157 128.0 +-8.125144 -6.5948877 -1.6505626 128.0 +-8.1731596 -6.5510836 -1.6521564 128.0 +-8.2070103 -6.4959087 -1.6508814 128.0 +-8.2607145 -6.4563723 -1.6537499 128.0 +-8.2954855 -6.4019451 -1.6527938 128.0 +-8.3573818 -6.3682771 -1.6574154 128.0 +-8.4065542 -6.3245935 -1.6594871 128.0 +-8.4103336 -6.2469902 -1.6524751 128.0 +-8.457263 -6.2016897 -1.6542281 128.0 +-8.5191469 -6.167048 -1.659009 128.0 +-8.5592365 -6.1163816 -1.6594871 128.0 +-8.6208057 -6.0808196 -1.664268 128.0 +-8.6393204 -6.0148344 -1.6606027 128.0 +-8.6825733 -5.9661846 -1.6618775 128.0 +-8.7329073 -5.9222169 -1.6645868 128.0 +-8.7715416 -5.8701687 -1.6650648 128.0 +-8.855175 -5.8477921 -1.6743079 128.0 +-8.9504404 -5.8321548 -1.6857822 128.0 +-8.9246082 -5.7376175 -1.6739893 128.0 +-8.9671488 -5.6875081 -1.6754235 128.0 +-9.0211258 -5.644424 -1.679089 128.0 +-9.0513897 -5.5863724 -1.678292 128.0 +-6.5852752 -4.0086093 -1.2057769 128.0 +-9.065093 -5.4423542 -1.6680927 128.0 +-9.1790171 -5.434412 -1.6832324 128.0 +-9.2181568 -5.3814726 -1.6843479 128.0 +-9.2629814 -5.3317051 -1.686579 128.0 +-9.2877941 -5.2703824 -1.6851448 128.0 +-9.338913 -5.2238979 -1.6886507 128.0 +-9.3543644 -5.1574402 -1.6856228 128.0 +-9.3684855 -5.0905185 -1.6824355 128.0 +-9.4247828 -5.046454 -1.6870571 128.0 +-7.5966592 -4.0077248 -1.3477706 128.0 +-7.5913248 -3.9455559 -1.3423522 128.0 +-9.3658123 -4.7951798 -1.6598058 128.0 +-6.9339957 -3.4964709 -1.2148607 128.0 +-6.9128785 -3.432781 -1.2072113 128.0 +-6.9267163 -3.3868303 -1.2059363 128.0 +-6.9544835 -3.3476908 -1.2072113 128.0 +-6.9882751 -3.3112974 -1.2096016 128.0 +-9.6710615 -4.5102119 -1.6838698 128.0 +-9.7039366 -4.4532571 -1.684826 128.0 +-6.5864725 -2.9736838 -1.1278478 128.0 +-9.7199612 -4.317008 -1.6781328 128.0 +-9.6983194 -4.2363405 -1.6696864 128.0 +-9.7123394 -4.1716876 -1.6676147 128.0 +-9.72684 -4.1074061 -1.6657023 128.0 +-9.7272415 -4.0374269 -1.6613995 128.0 +-9.7308073 -3.9690893 -1.657734 128.0 +-9.7393999 -3.9030638 -1.6550249 128.0 +-9.7695951 -3.845762 -1.6561404 128.0 +-9.7570972 -3.7718606 -1.6499252 128.0 +-7.5621738 -2.870049 -1.2669728 128.0 +-9.7693462 -3.6394336 -1.6441882 128.0 +-9.8044739 -3.5841675 -1.6464192 128.0 +-9.8411493 -3.5292735 -1.6489691 128.0 +-9.8626194 -3.468823 -1.6489691 128.0 +-9.8818512 -3.407598 -1.6486503 128.0 +-9.9044447 -3.3475323 -1.6489691 128.0 +-9.9257355 -3.2870071 -1.6491284 128.0 +-9.9626198 -3.2315254 -1.651997 128.0 +-9.9982557 -3.1754158 -1.6547061 128.0 +-10.017551 -3.1140079 -1.6547061 128.0 +-10.059138 -3.0593779 -1.658531 128.0 +-10.128818 -3.0127993 -1.6671365 128.0 +-10.184083 -2.961345 -1.6733518 128.0 +-10.247643 -2.9117544 -1.6810013 128.0 +-10.296708 -2.8575342 -1.6862603 128.0 +-10.349303 -2.803854 -1.6921568 128.0 +-10.3959 -2.7481215 -1.6970971 128.0 +-10.469924 -2.6990702 -1.706659 128.0 +-10.515969 -2.642236 -1.7115992 128.0 +-10.561709 -2.584938 -1.7165395 128.0 +-10.642674 -2.535645 -1.7273763 128.0 +-10.689769 -2.4776521 -1.7326353 128.0 +-10.72981 -2.4176571 -1.7367787 128.0 +-10.771445 -2.3576863 -1.741241 128.0 +-10.846545 -2.3044772 -1.7512809 128.0 +-10.901091 -2.2462502 -1.7579743 128.0 +-10.916605 -2.1797066 -1.7582929 128.0 +-10.754335 -2.0787647 -1.7294481 128.0 +-10.851314 -2.0285234 -1.7433127 128.0 +-11.087 -2.0022643 -1.7799665 128.0 +-11.278028 -1.9653896 -1.8092896 128.0 +-11.534243 -1.9372027 -1.84929 128.0 +-11.950356 -1.9317859 -1.9154261 128.0 +-12.163916 -1.8898025 -1.9484146 128.0 +-12.195786 -1.8181882 -1.9517612 128.0 +-12.242873 -1.7484875 -1.9576577 128.0 +-12.264132 -1.6748034 -1.9594107 128.0 +-12.214461 -1.5917367 -1.9496895 128.0 +-12.21714 -1.5159091 -1.9485739 128.0 +-12.224251 -1.4406865 -1.9482552 128.0 +-12.247578 -1.3672961 -1.9506457 128.0 +-12.242973 -1.2907747 -1.9485739 128.0 +-12.25754 -1.2163115 -1.9496895 128.0 +-12.252976 -1.13998 -1.9477772 128.0 +-12.244987 -1.0634938 -1.9453866 128.0 +-12.198146 -0.98405153 -1.9367809 128.0 +-12.257116 -0.91314894 -1.9453866 128.0 +-12.253625 -0.83731747 -1.9439523 128.0 +-12.244737 -0.76125681 -1.9417213 128.0 +-12.273819 -0.6874913 -1.9457054 128.0 +-12.299499 -0.61324984 -1.9492114 128.0 +-12.3267 -0.53880543 -1.9530362 128.0 +-12.282421 -0.46137974 -1.9453866 128.0 +-12.246538 -0.38479713 -1.9391714 128.0 +-11.348278 0.83419335 -1.9429172 128.0 +-11.357677 0.90498459 -1.945491 128.0 +-11.323445 0.97221011 -1.940515 128.0 +-11.353564 1.0450158 -1.9468637 128.0 +-11.394979 1.1193845 -1.9552714 128.0 +-11.358502 1.186209 -1.9501238 128.0 +-11.363739 1.2572907 -1.9523544 128.0 +-11.36266 1.3277948 -1.9535555 128.0 +-11.290744 1.3896608 -1.9424025 128.0 +-11.227291 1.4518325 -1.9327937 128.0 +-11.27284 1.528111 -1.9424025 128.0 +-11.260325 1.5968357 -1.9418877 128.0 +-11.252264 1.6661866 -1.9422309 128.0 +-11.236961 1.7344459 -1.941373 128.0 +-11.217353 1.8019547 -1.9398288 128.0 +-11.213859 1.8720478 -1.9412013 128.0 +-11.20022 1.9404829 -1.9408582 128.0 +-11.189072 2.0093439 -1.9410298 128.0 +-11.176532 2.077961 -1.9410298 128.0 +-11.151962 2.1442664 -1.9389708 128.0 +-11.13763 2.212461 -1.9387991 128.0 +-11.074626 2.2706618 -1.9300483 128.0 +-11.080725 2.3428535 -1.9336517 128.0 +-11.066141 2.4107995 -1.9336517 128.0 +-11.049218 2.4782233 -1.9333085 128.0 +-11.029964 2.5450869 -1.9326221 128.0 +-10.997845 2.6088502 -1.9297051 128.0 +-10.98163 2.6762826 -1.9297051 128.0 +-10.949711 2.7397866 -1.9269598 128.0 +-10.960365 2.814029 -1.9319358 128.0 +-10.929555 2.8777142 -1.9295336 128.0 +-10.922154 2.9475472 -1.931421 128.0 +-10.876327 3.0068929 -1.926445 128.0 +-10.864307 3.0754514 -1.9276462 128.0 +-10.864157 3.1475406 -1.9310778 128.0 +-10.841806 3.2133024 -1.9305631 128.0 +-10.80303 3.274049 -1.9271314 128.0 +-10.796852 3.3446479 -1.9297051 128.0 +-10.766734 3.4078593 -1.9279894 128.0 +-10.726874 3.4677958 -1.9245576 128.0 +-10.713814 3.5363293 -1.9261019 128.0 +-10.667641 3.5938213 -1.9216406 128.0 +-10.665884 3.6662567 -1.9254155 128.0 +-10.623665 3.7247851 -1.9218123 128.0 +-10.668327 3.8141186 -1.934338 128.0 +-10.58271 3.8568981 -1.9228418 128.0 +-10.540376 3.9148974 -1.9194101 128.0 +-10.507863 3.9763594 -1.9178658 128.0 +-10.513601 4.0524554 -1.9235281 128.0 +-10.490372 4.1176095 -1.9238713 128.0 +-10.456676 4.1786084 -1.922327 128.0 +-10.381563 4.2226419 -1.9130614 128.0 +-10.396419 4.3032217 -1.9207827 128.0 +-10.339858 4.354311 -1.9151205 128.0 +-10.329246 4.4246573 -1.918209 128.0 +-10.304611 4.4891338 -1.9187237 128.0 +-10.268765 4.5486856 -1.9171795 128.0 +-10.26222 4.6213183 -1.9212976 128.0 +-10.205903 4.6714859 -1.9159783 128.0 +-10.199378 4.74441 -1.9202679 128.0 +-10.156714 4.8005867 -1.9176942 128.0 +-10.10309 4.8513007 -1.9130614 128.0 +-10.071362 4.9123368 -1.9127183 128.0 +-10.022493 4.9648557 -1.909115 128.0 +-9.9944811 5.0275874 -1.9096297 128.0 +-9.9853773 5.1000228 -1.9139193 128.0 +-9.9600182 5.1643705 -1.9151205 128.0 +-9.8880424 5.2042761 -1.9072275 128.0 +-9.8593988 5.2667074 -1.9079138 128.0 +-9.8398886 5.3341479 -1.9104877 128.0 +-9.8233728 5.4034472 -1.9137478 128.0 +-9.8080978 5.4737043 -1.917351 128.0 +-9.8249054 5.5624247 -1.9274746 128.0 +-9.7931528 5.6240768 -1.9279894 128.0 +-9.6971703 5.6483526 -1.9156352 128.0 +-9.6699638 5.7122574 -1.9171795 128.0 +-9.6507893 5.7811046 -1.9204396 128.0 +-9.6294489 5.8489075 -1.9233565 128.0 +-9.5950565 5.908916 -1.9236997 128.0 +-9.5828524 5.9828119 -1.9286757 128.0 +-9.5376387 6.0362291 -1.9269598 128.0 +-9.4954462 6.091445 -1.9259303 128.0 +-9.4455032 6.1415367 -1.9233565 128.0 +-9.4224472 6.2091365 -1.926445 128.0 +-9.4079294 6.2827039 -1.931421 128.0 +-9.3928614 6.3563261 -1.936397 128.0 +-9.3764315 6.4294419 -1.9412013 128.0 +-9.3448944 6.4924755 -1.9429172 128.0 +-9.2952156 6.5428867 -1.9408582 128.0 +-9.2524881 6.5980816 -1.9403435 128.0 +-9.1990519 6.6454978 -1.9375981 128.0 +-9.178772 6.7169456 -1.9420593 128.0 +-9.1405506 6.7754865 -1.9427457 128.0 +-9.1232262 6.8497834 -1.9480648 128.0 +-9.1116056 6.9288936 -1.9547566 128.0 +-9.0689192 6.9846706 -1.9547566 128.0 +-8.9909372 7.0129156 -1.9470353 128.0 +-8.9724741 7.0874949 -1.952526 128.0 +-8.9042015 7.1227202 -1.9470353 128.0 +-8.9162083 7.2224946 -1.959561 128.0 +-8.8618221 7.2689443 -1.9573303 128.0 +-8.8147812 7.3212938 -1.9568156 128.0 +-8.7998486 7.4006095 -1.9636791 128.0 +-8.7287741 7.4327464 -1.9578451 128.0 +-8.6837492 7.4868083 -1.9580168 128.0 +-8.6591682 7.5587401 -1.9629927 128.0 +-8.6451035 7.6404386 -1.9705424 128.0 +-8.6156788 7.7091084 -1.9746605 128.0 +-8.5791655 7.77175 -1.9772342 128.0 +-8.5342207 7.8269086 -1.9779207 128.0 +-8.5040827 7.8958859 -1.9822103 128.0 +-8.4655228 7.957365 -1.9846125 128.0 +-8.3908482 7.9847074 -1.9784354 128.0 +-8.3409872 8.0353584 -1.9782637 128.0 +-8.3070412 8.1015205 -1.9820386 128.0 +-8.2697926 8.1647997 -1.9851272 128.0 +-8.2327766 8.2286215 -1.9883873 128.0 +-8.1890564 8.2859898 -1.9901031 128.0 +-8.1415005 8.3396063 -1.9909611 128.0 +-8.0710306 8.3695459 -1.9861567 128.0 +-8.0460215 8.4467344 -1.9928485 128.0 +-7.9859414 8.4873343 -1.9907895 128.0 +-7.9719391 8.5773115 -2.0005698 128.0 +-7.9151626 8.6217098 -1.9995403 128.0 +-7.8746843 8.6839819 -2.0028005 128.0 +-7.8192806 8.7299347 -2.0022857 128.0 +-7.772747 8.7858658 -2.0041733 128.0 +-7.7212844 8.8363609 -2.0048594 128.0 +-7.6649895 8.8813334 -2.0043447 128.0 +-7.604599 8.9214497 -2.0028005 128.0 +-7.5535216 8.9724646 -2.00383 128.0 +-7.4945469 9.0140982 -2.0028005 128.0 +-7.4722266 9.1002703 -2.0118945 128.0 +-7.4249334 9.156662 -2.0142968 128.0 +-7.3636837 9.1958952 -2.012924 128.0 +-7.3089533 9.2432232 -2.0134387 128.0 +-7.2690744 9.3096399 -2.0182431 128.0 +-7.2106118 9.3525066 -2.0179 128.0 +-7.1578636 9.4028454 -2.0192726 128.0 +-7.1095033 9.4591904 -2.022018 128.0 +-7.0583725 9.5121298 -2.0240769 128.0 +-6.9998746 9.5552597 -2.0240769 128.0 +-6.941113 9.5980301 -2.0240769 128.0 +-6.8832345 9.6420431 -2.0244203 128.0 +-6.8267794 9.6881237 -2.0252781 128.0 +-6.7773294 9.7443886 -2.0283666 128.0 +-6.7274456 9.8004112 -2.0314553 128.0 +-6.6605554 9.8317165 -2.0293963 128.0 +-6.6121478 9.890419 -2.0331712 128.0 +-6.554049 9.9349165 -2.034029 128.0 +-6.4978023 9.9823761 -2.0355732 128.0 +-6.4481397 10.040296 -2.0393481 128.0 +-6.3763952 10.063859 -2.036088 128.0 +-6.3140025 10.101959 -2.0359163 128.0 +-6.2539673 10.143866 -2.0366027 128.0 +-6.1992846 10.194675 -2.0391765 128.0 +-6.131042 10.223228 -2.0372891 128.0 +-6.0697021 10.263198 -2.0378039 128.0 +-6.0110798 10.307908 -2.0393481 128.0 +-5.9545922 10.356554 -2.0417504 128.0 +-5.8977332 10.404896 -2.0441525 128.0 +-5.835701 10.444328 -2.0448389 128.0 +-5.7810092 10.497199 -2.0482705 128.0 +-5.7113223 10.522947 -2.0463831 128.0 +-5.663835 10.589938 -2.0527318 128.0 +-5.605638 10.637566 -2.0553055 128.0 +-5.5466151 10.684003 -2.0577078 128.0 +-5.4809551 10.717834 -2.0577078 128.0 +-5.4124298 10.745984 -2.0566783 128.0 +-5.3472672 10.780757 -2.0570214 128.0 +-5.2753978 10.801856 -2.0547907 128.0 +-5.2137146 10.843788 -2.0566783 128.0 +-5.1517153 10.885371 -2.0585656 128.0 +-5.0810838 10.908738 -2.0570214 128.0 +-5.0230818 10.959414 -2.0607963 128.0 +-4.9606004 11.000806 -2.0628552 128.0 +-4.8981991 11.042745 -2.0650859 128.0 +-4.8299561 11.071688 -2.0649142 128.0 +-4.7603774 11.097494 -2.0642281 128.0 +-4.6941085 11.131033 -2.0650859 128.0 +-4.626853 11.162356 -2.0656006 128.0 +-4.5612473 11.197836 -2.0669734 128.0 +-4.5019674 11.249393 -2.0714345 128.0 +-4.429975 11.26947 -2.0700619 128.0 +-4.3642902 11.305631 -2.0717778 128.0 +-4.2930932 11.327591 -2.0709198 128.0 +-4.2197299 11.343562 -2.0690324 128.0 +-4.156127 11.385899 -2.0721209 128.0 +-4.0901704 11.422317 -2.0741799 128.0 +-4.0183759 11.442551 -2.0733221 128.0 +-3.9448836 11.457676 -2.0716062 128.0 +-3.8779705 11.491934 -2.0734935 128.0 +-3.8141859 11.536091 -2.0772684 128.0 +-3.7463644 11.56865 -2.0789843 128.0 +-3.6770959 11.597054 -2.0800138 128.0 +-3.6090794 11.629748 -2.0819013 128.0 +-3.5410862 11.662987 -2.0839603 128.0 +-3.4728208 11.695828 -2.0860193 128.0 +-3.4004421 11.715025 -2.0856762 128.0 +-3.3319895 11.747991 -2.0879068 128.0 +-3.2606311 11.771063 -2.0884216 128.0 +-3.1916857 11.803211 -2.0906522 128.0 +-3.1229711 11.836862 -2.093226 128.0 +-3.0475833 11.845305 -2.0913384 128.0 +-2.9702938 11.845626 -2.0880783 128.0 +-2.9043303 11.891383 -2.0930543 128.0 +-2.8333616 11.917606 -2.0945985 128.0 +-2.7610707 11.938606 -2.0952849 128.0 +-2.6927328 11.97743 -2.0992315 128.0 +-2.6200304 11.997578 -2.0999177 128.0 +-2.5445275 12.004754 -2.0983734 128.0 +-2.4622943 11.978645 -2.0909953 128.0 +-2.3889408 11.994494 -2.091167 128.0 +-2.3197727 12.032144 -2.0952849 128.0 +-2.2525787 12.081985 -2.1016335 128.0 +-2.1777046 12.091702 -2.1009471 128.0 +-2.1044817 12.11066 -2.1019766 128.0 +-2.0301325 12.123344 -2.1019766 128.0 +-1.9497541 12.098613 -2.0954566 128.0 +-1.8809062 12.145397 -2.1016335 128.0 +-1.8060586 12.154761 -2.1012905 128.0 +-1.7333865 12.179269 -2.1036925 128.0 +-1.6596853 12.197485 -2.1050653 128.0 +-1.5822768 12.1879 -2.1016335 128.0 +-1.5079464 12.201289 -2.10232 128.0 +-1.4341998 12.220098 -2.1040359 128.0 +-1.353646 12.17873 -2.0952849 128.0 +-1.2859814 12.254414 -2.1071243 128.0 +-1.2112491 12.266975 -2.1079822 128.0 +-1.1363204 12.2781 -2.1086686 128.0 +-1.0628248 12.306435 -2.1124434 128.0 +-0.98721534 12.311743 -2.1122718 128.0 +-0.90961981 12.290059 -2.1074674 128.0 +-0.83332664 12.282631 -2.1052368 128.0 +-0.75697714 12.27178 -2.1024914 128.0 +-0.68171918 12.277177 -2.102663 128.0 +-0.60487181 12.250626 -2.0973439 128.0 +-0.52956462 12.251154 -2.0968292 128.0 +-0.45401889 12.244328 -2.0951133 128.0 +-0.37909317 12.253776 -2.0963144 128.0 +-0.30416587 12.266705 -2.0982018 128.0 +-0.22887477 12.267355 -2.0980303 128.0 +-0.15362386 12.270498 -2.0983734 128.0 +-0.078274854 12.262344 -2.0968292 128.0 +-0.0030336541 12.266534 -2.0975156 128.0 +0.072197072 12.260411 -2.0964861 128.0 +0.14741224 12.258752 -2.0963144 128.0 +0.22262776 12.257617 -2.0963144 128.0 +0.2981953 12.270793 -2.0988882 128.0 +0.37390283 12.282518 -2.1012905 128.0 +0.44940436 12.283931 -2.1019766 128.0 +0.52451575 12.275037 -2.1009471 128.0 +0.59939039 12.262732 -2.0994029 128.0 +0.6742422 12.251937 -2.0982018 128.0 +0.74934572 12.246586 -2.0980303 128.0 +0.82460785 12.243723 -2.0983734 128.0 +0.89979076 12.239416 -2.0985451 128.0 +0.97471672 12.2317 -2.0982018 128.0 +1.0485694 12.211747 -2.0957997 128.0 +1.122666 12.196255 -2.0942554 128.0 +1.1968048 12.182273 -2.0930543 128.0 +1.2732725 12.191358 -2.0959713 128.0 +1.3478365 12.181357 -2.095628 128.0 +1.4223256 12.1709 -2.0952849 128.0 +1.4975803 12.166833 -2.0961428 128.0 +1.569804 12.138852 -2.0928826 128.0 +1.64333 12.122158 -2.0916817 128.0 +1.7192019 12.122576 -2.093569 128.0 +1.7941298 12.115697 -2.0942554 128.0 +1.8687373 12.106407 -2.0945985 128.0 +1.9390769 12.070395 -2.0903089 128.0 +2.0139146 12.063129 -2.091167 128.0 +2.0818365 12.0156 -2.0849898 128.0 +2.1529102 11.988055 -2.0824161 128.0 +2.2217424 11.949437 -2.0779548 128.0 +2.3108408 12.017812 -2.0925395 128.0 +2.4047024 12.104864 -2.1105559 128.0 +2.4785354 12.087952 -2.1102128 128.0 +2.529619 11.963602 -2.0908237 128.0 +2.6132591 11.995021 -2.0992315 128.0 +2.6730049 11.91724 -2.0882499 128.0 +2.7276845 11.820941 -2.0740082 128.0 +2.811312 11.85095 -2.0824161 128.0 +2.883975 11.833477 -2.0824161 128.0 +2.9565296 11.815558 -2.0824161 128.0 +3.0238259 11.777157 -2.0788128 128.0 +3.1063209 11.797441 -2.0858476 128.0 +3.1683788 11.740114 -2.0789843 128.0 +3.2356284 11.703362 -2.0758958 128.0 +3.3041565 11.671913 -2.0738368 128.0 +3.3696785 11.630602 -2.0700619 128.0 +3.4378986 11.599318 -2.0681744 128.0 +3.5098636 11.580832 -2.0686891 128.0 +3.5858135 11.575076 -2.0716062 128.0 +3.6549852 11.547221 -2.0705767 128.0 +3.7288001 11.533951 -2.0722926 128.0 +3.7923965 11.489338 -2.068346 128.0 +3.8609347 11.46025 -2.0673165 128.0 +3.9366267 11.452182 -2.0702336 128.0 +4.0006266 11.410149 -2.0669734 128.0 +4.0825057 11.418781 -2.0731504 128.0 +4.1376462 11.352791 -2.0656006 128.0 +4.2058549 11.323495 -2.0649142 128.0 +4.2738605 11.29379 -2.0642281 128.0 +4.3381157 11.254484 -2.0618258 128.0 +4.4052901 11.223069 -2.0609679 128.0 +4.469317 11.183935 -2.0587373 128.0 +4.523376 11.120712 -2.0520453 128.0 +4.6005712 11.114594 -2.0561635 128.0 +4.6660056 11.079801 -2.0549624 128.0 +4.7276936 11.036473 -2.052217 128.0 +4.786665 10.987388 -2.0484421 128.0 +4.8547902 10.959612 -2.0487852 128.0 +4.9223504 10.930515 -2.0489569 128.0 +4.9885058 10.898315 -2.0486138 128.0 +5.0598545 10.877327 -2.0505011 128.0 +5.1265016 10.846075 -2.0505011 128.0 +5.1874104 10.802871 -2.0482705 128.0 +5.2419343 10.746932 -2.0436378 128.0 +5.3042784 10.707504 -2.0422652 128.0 +5.3729782 10.680916 -2.0434661 128.0 +5.4397583 10.650379 -2.0439808 128.0 +5.5072737 10.621174 -2.0448389 128.0 +5.5682096 10.579336 -2.0432947 128.0 +5.6269832 10.533675 -2.041064 128.0 +5.6797705 10.477299 -2.0367744 128.0 +5.7463255 10.446568 -2.0376322 128.0 +5.8021531 10.396488 -2.0347154 128.0 +5.8658357 10.360691 -2.0347154 128.0 +5.9238992 10.315107 -2.0328279 128.0 +5.9831128 10.271754 -2.0314553 128.0 +6.042017 10.228065 -2.0300825 128.0 +6.0950408 10.174742 -2.0268223 128.0 +6.14815 10.121997 -2.0237339 128.0 +6.2127247 10.088276 -2.0245917 128.0 +6.2703338 10.043281 -2.0232191 128.0 +6.3286786 9.9996223 -2.0221896 128.0 +6.386724 9.9556274 -2.0211601 128.0 +6.4433932 9.9096451 -2.0197873 128.0 +6.4970284 9.8592291 -2.0175569 128.0 +6.5584955 9.820817 -2.0179 128.0 +6.6186314 9.7803898 -2.0179 128.0 +6.6712742 9.7290325 -2.0156693 128.0 +6.7173524 9.668499 -2.0115514 128.0 +6.7595363 9.6029339 -2.0064037 128.0 +6.8171873 9.5596733 -2.0060606 128.0 +6.8734083 9.5144701 -2.0053742 128.0 +6.9258399 9.4641666 -2.0036583 128.0 +6.9814334 9.4183264 -2.0029721 128.0 +7.0432329 9.380826 -2.0041733 128.0 +7.1018529 9.3390017 -2.0045164 128.0 +7.1572185 9.2929087 -2.0040016 128.0 +7.1995602 9.230176 -1.9998835 128.0 +7.2383485 9.1634092 -1.9949075 128.0 +7.2827439 9.104207 -1.9916475 128.0 +7.3266854 9.0448055 -1.9883873 128.0 +7.3720474 8.9874935 -1.985642 128.0 +7.4182415 8.9314814 -1.9832398 128.0 +7.475441 8.8888111 -1.9839261 128.0 +7.5285635 8.8412752 -1.983583 128.0 +7.5826712 8.7949142 -1.983583 128.0 +7.6313095 8.7422857 -1.9822103 128.0 +7.6717577 8.6805334 -1.9787786 128.0 +7.7235622 8.6318293 -1.9784354 128.0 +7.7843184 8.5930367 -1.9804944 128.0 +7.8195829 8.5262356 -1.9760332 128.0 +7.8502989 8.4549942 -1.9705424 128.0 +7.8986559 8.4030771 -1.9696845 128.0 +7.947351 8.3515997 -1.9689982 128.0 +7.995028 8.2991314 -1.9681402 128.0 +8.0120926 8.2153625 -1.9597325 128.0 +8.0630417 8.166748 -1.9599042 128.0 +8.1088219 8.1129398 -1.9588747 128.0 +8.1556454 8.0602627 -1.9581883 128.0 +8.1950788 8.0004349 -1.9557861 128.0 +8.2489786 7.9547868 -1.9569873 128.0 +8.3040543 7.9101372 -1.9585315 128.0 +8.3474102 7.85431 -1.9573303 128.0 +8.3687439 7.7781305 -1.9509817 128.0 +8.4076023 7.7186403 -1.9489228 128.0 +8.4562645 7.6682305 -1.9492658 128.0 +8.503891 7.6168566 -1.9494375 128.0 +8.5423498 7.5573549 -1.9475501 128.0 +8.5566578 7.4769263 -1.9401718 128.0 +8.5889482 7.4126983 -1.9370834 128.0 +8.6245222 7.3515511 -1.9348527 128.0 +8.6574087 7.288343 -1.9321073 128.0 +8.7034817 7.2363443 -1.9324505 128.0 +8.7347746 7.1721778 -1.9295336 128.0 +8.7832088 7.12217 -1.9305631 128.0 +8.8221302 7.0644488 -1.9295336 128.0 +8.8421259 6.9918547 -1.924386 128.0 +8.8732128 6.9283757 -1.9218123 128.0 +8.9249201 6.8810177 -1.9238713 128.0 +8.9685411 6.8273191 -1.9242145 128.0 +9.0039635 6.767426 -1.9228418 128.0 +9.0326586 6.7026596 -1.9200964 128.0 +9.0680523 6.6430349 -1.9188954 128.0 +9.1086416 6.5872698 -1.9188954 128.0 +9.1416721 6.5261049 -1.917351 128.0 +9.1589937 6.4540029 -1.9125466 128.0 +9.1879072 6.3903713 -1.910316 128.0 +9.2301941 6.3361049 -1.9110024 128.0 +9.2640038 6.2760353 -1.9099729 128.0 +9.2925091 6.2125049 -1.9079138 128.0 +9.3353882 6.1586246 -1.9089434 128.0 +9.3407984 6.0802708 -1.9022515 128.0 +9.3630085 6.0132613 -1.899163 128.0 +9.4097157 5.9620237 -1.901222 128.0 +9.4285765 5.8932114 -1.8976188 128.0 +9.4645586 5.8352475 -1.8976188 128.0 +9.4833488 5.7668285 -1.894187 128.0 +9.511796 5.7044783 -1.8928144 128.0 +9.5305061 5.6364808 -1.8895543 128.0 +9.5640602 5.5774007 -1.8893826 128.0 +9.5801659 5.5083013 -1.8857794 128.0 +9.6206408 5.4533005 -1.8871521 128.0 +9.6547813 5.3946471 -1.8873236 128.0 +9.6540432 5.3167734 -1.8806318 128.0 +9.6648369 5.2456908 -1.8763422 128.0 +9.6673031 5.1704955 -1.8705083 128.0 +9.7206373 5.1225605 -1.8747979 128.0 +9.7711229 5.072804 -1.8785728 128.0 +9.8353977 5.0297956 -1.885093 128.0 +9.8352776 4.9538445 -1.8790876 128.0 +9.8637238 4.8925281 -1.8787444 128.0 +9.9431334 4.8561192 -1.8883531 128.0 +9.9869499 4.8018465 -1.8910985 128.0 +10.013554 4.7392135 -1.8905838 128.0 +10.026369 4.6701961 -1.8874952 128.0 +10.091557 4.6254139 -1.8945302 128.0 +10.073943 4.5427566 -1.8857794 128.0 +10.125043 4.4912424 -1.8902406 128.0 +10.123513 4.416429 -1.8847499 128.0 +10.118731 4.3406391 -1.8787444 128.0 +10.1715 4.2895689 -1.8837203 128.0 +10.173056 4.2168941 -1.8790876 128.0 +10.264433 4.1811461 -1.8914417 128.0 +10.299042 4.1217456 -1.8931575 128.0 +10.339725 4.0645995 -1.8960744 128.0 +10.393882 4.0124302 -1.9015652 128.0 +10.372243 3.9311264 -1.8929859 128.0 +10.417407 3.8753076 -1.8969324 128.0 +10.409523 3.7998321 -1.8910985 128.0 +10.415019 3.7295802 -1.8878384 128.0 +10.479537 3.6802897 -1.8955597 128.0 +10.506579 3.6175225 -1.8964176 128.0 +10.546314 3.5589705 -1.8996778 128.0 +10.525861 3.4802797 -1.8919564 128.0 +10.594818 3.4311035 -1.9007072 128.0 +10.612854 3.3651373 -1.9001925 128.0 +10.634243 3.3002467 -1.900364 128.0 +10.644866 3.2320728 -1.8986483 128.0 +10.65222 3.1630518 -1.8964176 128.0 +10.694135 3.1042204 -1.9005357 128.0 +10.693076 3.0329008 -1.8969324 128.0 +10.706738 2.9659178 -1.8960744 128.0 +10.750413 2.9071076 -1.9007072 128.0 +10.762332 2.8395822 -1.8996778 128.0 +10.772874 2.7717745 -1.8984767 128.0 +10.783945 2.7041841 -1.8974471 128.0 +10.801291 2.6381979 -1.8976188 128.0 +10.809608 2.5700505 -1.8962461 128.0 +10.831893 2.5052288 -1.8974471 128.0 +10.873975 2.4447663 -1.9022515 128.0 +10.888771 2.3779988 -1.9022515 128.0 +10.900266 2.3105292 -1.9017367 128.0 +10.921958 2.2451892 -1.9031094 128.0 +10.965481 2.1840937 -1.9084285 128.0 +10.961263 2.1134143 -1.9053401 128.0 +10.947875 2.0412447 -1.9007072 128.0 +10.973768 1.9764748 -1.9031094 128.0 +10.983747 1.9087666 -1.9027663 128.0 +11.038006 1.8484908 -1.910316 128.0 +11.034551 1.7783782 -1.9077423 128.0 +11.03844 1.7095833 -1.9065411 128.0 +11.067237 1.6445699 -1.9098012 128.0 +11.111257 1.5814869 -1.9158068 128.0 +11.119775 1.513147 -1.9156352 128.0 +11.154252 1.4481841 -1.9200964 128.0 +11.125773 1.3751274 -1.9135761 128.0 +11.136937 1.3071793 -1.9140909 128.0 +11.135936 1.2378411 -1.9125466 128.0 +11.155079 1.1707217 -1.9146056 128.0 +11.151268 1.1011895 -1.9127183 128.0 +11.157815 1.032746 -1.9127183 128.0 +11.140385 0.96223122 -1.9086002 128.0 +11.181432 0.8966884 -1.9147773 128.0 +11.177881 0.82740992 -1.913233 128.0 +11.164072 0.75754291 -1.9099729 128.0 +11.172443 0.68926942 -1.9106592 128.0 +11.195152 0.62173963 -1.9139193 128.0 +11.19974 0.55308425 -1.9140909 128.0 +11.207845 0.48456576 -1.9149488 128.0 +11.183041 0.41476709 -1.9101444 128.0 +11.221809 0.34726512 -1.9164931 128.0 +11.218804 0.27828124 -1.9156352 128.0 +11.240986 0.20982267 -1.9192384 128.0 +11.259793 0.14106564 -1.922327 128.0 +11.260447 0.071974203 -1.922327 128.0 +11.245899 0.0028777863 -1.9197532 128.0 +11.263437 -0.066231906 -1.9228418 128.0 +11.27464 -0.13548508 -1.9249008 128.0 +11.270641 -0.20460847 -1.924386 128.0 +11.251447 -0.2733275 -1.9212976 128.0 +11.23971 -0.34205922 -1.9195817 128.0 +11.232477 -0.4108378 -1.9187237 128.0 +11.226792 -0.47962481 -1.918209 128.0 +11.196086 -0.54715276 -1.9134046 128.0 +11.199404 -0.61621994 -1.9146056 128.0 +11.234745 -0.68733704 -1.9214691 128.0 +11.225402 -0.75592774 -1.9206111 128.0 +11.27459 -0.82876909 -1.9300483 128.0 +11.272239 -0.89816809 -1.9305631 128.0 +11.281239 -0.96858197 -1.9331368 128.0 +11.270178 -1.0373322 -1.932279 128.0 +11.181244 -1.0983664 -1.9178658 128.0 +11.25366 -1.1752491 -1.9317642 128.0 +11.228612 -1.2423263 -1.9286757 128.0 +11.202187 -1.309026 -1.9254155 128.0 +11.14701 -1.3719553 -1.9171795 128.0 +11.144244 -1.4410849 -1.918209 128.0 +11.132263 -1.5090402 -1.9176942 128.0 +11.142303 -1.5800866 -1.9211259 128.0 +11.205487 -1.659255 -1.9339948 128.0 +11.17757 -1.7252725 -1.9309063 128.0 +11.127866 -1.7875702 -1.9240428 128.0 +11.090452 -1.8514333 -1.9194101 128.0 +11.075972 -1.9189433 -1.9188954 128.0 +10.984478 -1.9725811 -1.9048253 128.0 +10.733904 -1.9956198 -1.8626153 128.0 +10.35867 -1.9916505 -1.7982709 128.0 +10.082463 -2.002743 -1.7514281 128.0 +9.9406652 -2.0380416 -1.7284358 128.0 +9.7727947 -2.0661712 -1.7008104 128.0 +9.6915913 -2.111201 -1.688628 128.0 +9.5515671 -2.1421547 -1.6659787 128.0 +9.4316921 -2.1761243 -1.6469327 128.0 +9.2964268 -2.2050645 -1.6251414 128.0 +8.5486021 -2.083076 -1.4935355 128.0 +8.4706736 -2.1192224 -1.4818678 128.0 +7.9708705 -2.0461617 -1.3943592 128.0 +8.4545088 -2.2257712 -1.4837552 128.0 +7.5200119 -2.0290411 -1.3176607 128.0 +7.4903293 -2.0704179 -1.3145721 128.0 +7.4518909 -2.109091 -1.3099394 128.0 +7.1341243 -2.0664685 -1.2546889 128.0 +6.8955679 -2.043273 -1.21368 128.0 +6.7575097 -2.0475287 -1.1908592 128.0 +6.4672179 -2.0029271 -1.1402416 128.0 +6.3035932 -1.9946927 -1.1126163 128.0 +6.1618781 -1.9914998 -1.0889376 128.0 +6.1037035 -2.0141354 -1.0805299 128.0 +5.9605289 -2.0075023 -1.0565079 128.0 +5.8586621 -2.0132847 -1.0400358 128.0 +5.8452687 -2.0488687 -1.0398642 128.0 +5.8168173 -2.0790563 -1.0369473 128.0 +5.7484164 -2.0944622 -1.0266521 128.0 +5.7493091 -2.134841 -1.0292259 128.0 +5.8982625 -2.2314615 -1.0594249 128.0 +5.7925386 -2.2321689 -1.0422664 128.0 +5.9318752 -2.3277977 -1.0709212 128.0 +5.7610512 -2.3016214 -1.0415801 128.0 +5.7824087 -2.3514071 -1.0482719 128.0 +5.7314625 -2.3717682 -1.0414085 128.0 +5.7149858 -2.4061263 -1.0410653 128.0 +5.6032214 -2.3996303 -1.0227057 128.0 +5.5034966 -2.3969712 -1.0065767 128.0 +5.4562597 -2.4163277 -1.0003996 128.0 +5.4494152 -2.4534025 -1.0019438 128.0 +5.4459033 -2.492125 -1.0041745 128.0 +5.3706641 -2.497648 -0.99267828 128.0 +5.3089242 -2.5086586 -0.98375583 128.0 +5.3769078 -2.5812807 -0.99988484 128.0 +5.3813329 -2.6241596 -1.0038313 128.0 +5.3774881 -2.6632531 -1.0062335 128.0 +5.3548851 -2.6930988 -1.0050324 128.0 +5.2829895 -2.6976686 -0.99422252 128.0 +5.2943225 -2.7445478 -0.99971324 128.0 +5.3139963 -2.7962568 -1.0069199 128.0 +5.2524242 -2.8051324 -0.998169 128.0 +5.2073998 -2.8222806 -0.99267828 128.0 +5.1994791 -2.8594036 -0.99456573 128.0 +5.1766748 -2.8883719 -0.99353617 128.0 +5.1597118 -2.9205666 -0.99370778 128.0 +5.2040558 -2.9879925 -1.0062335 128.0 +5.1439133 -2.9955668 -0.99782586 128.0 +5.0847235 -3.0030174 -0.98958975 128.0 +4.9766226 -2.9804871 -0.97140169 128.0 +5.0786414 -3.084115 -0.99593842 128.0 +5.0193596 -3.0904183 -0.98770231 128.0 +4.9743981 -3.1049819 -0.98238319 128.0 +4.9044762 -3.1033027 -0.97191644 128.0 +4.8762217 -3.1274853 -0.97002906 128.0 +4.9519157 -3.2191141 -0.98976135 128.0 +4.9041033 -3.2310042 -0.98392743 128.0 +4.8596091 -3.2446182 -0.97877985 128.0 +4.8738747 -3.2975683 -0.98598647 128.0 +4.8909221 -3.3530438 -0.99387938 128.0 +4.8354683 -3.3588166 -0.98650122 128.0 +4.7680464 -3.3555288 -0.97654927 128.0 +4.7842617 -3.4110374 -0.98444217 128.0 +4.7560554 -3.4351361 -0.98289794 128.0 +4.7817912 -3.4985847 -0.99302143 128.0 +4.7776451 -3.5407677 -0.99679631 128.0 +4.7566171 -3.5706077 -0.99696791 128.0 +4.7220726 -3.590184 -0.99422252 128.0 +4.7381968 -3.6485498 -1.0026302 128.0 +4.6939716 -3.6605866 -0.99782586 128.0 +4.6312256 -3.6575606 -0.9889034 128.0 +4.6210041 -3.695756 -0.99164879 128.0 +4.5737457 -3.7041945 -0.98615801 128.0 +4.6095777 -3.7803037 -0.9993701 128.0 +4.5953889 -3.8160708 -1.0014291 128.0 +4.5914888 -3.8606839 -1.0058904 128.0 +4.4867129 -3.8197956 -0.98735911 128.0 +4.4169335 -3.8073647 -0.97672087 128.0 +4.5196486 -3.9445443 -1.0058904 128.0 +4.3684025 -3.8599756 -0.97637767 128.0 +4.4672322 -3.9964252 -1.0050324 128.0 +4.4710989 -4.0495586 -1.0117242 128.0 +4.4962606 -4.1228671 -1.0235636 128.0 +3.6009998 -3.3425498 -0.8168034 128.0 +3.561043 -3.3463624 -0.81217062 128.0 +3.5325933 -3.3606782 -0.81028318 128.0 +3.5076497 -3.3781891 -0.80925369 128.0 +4.2682405 -4.1618538 -0.9993701 128.0 +4.2215939 -4.1671977 -0.99422252 128.0 +4.1910677 -4.1881471 -0.99302143 128.0 +4.1784472 -4.2270989 -0.99628156 128.0 +4.1331639 -4.2329173 -0.99147719 128.0 +4.0852323 -4.2355032 -0.98598647 128.0 +4.0231576 -4.2226796 -0.97689241 128.0 +4.0788507 -4.3341103 -0.99765426 128.0 +2.5754807 -2.7699034 -0.61982358 128.0 +2.5484438 -2.7747674 -0.61724979 128.0 +2.5280616 -2.7867029 -0.6163919 128.0 +2.4944847 -2.7838144 -0.61210227 128.0 +2.5080338 -2.8337505 -0.62016678 128.0 +3.966469 -4.5384326 -1.0108663 128.0 +3.980381 -4.611167 -1.0220194 128.0 +3.9085598 -4.584516 -1.0103515 128.0 +3.8625929 -4.5873079 -1.0055472 128.0 +3.8362622 -4.6131945 -1.0060619 128.0 +3.807884 -4.6366467 -1.0060619 128.0 +3.7923913 -4.6759949 -1.0096653 128.0 +3.7396157 -4.6691833 -1.0029734 128.0 +3.6876786 -4.6626735 -0.99645317 128.0 +3.6432376 -4.6650224 -0.99199194 128.0 +3.6157479 -4.6888494 -0.99233508 128.0 +3.5767665 -4.6976199 -0.98941815 128.0 +5.7370515 -7.6327705 -1.6241119 128.0 +5.6865878 -7.6630816 -1.6230824 128.0 +5.6173401 -7.6676273 -1.6165621 128.0 +5.5678778 -7.6987572 -1.6158758 128.0 +5.5399933 -7.7600398 -1.6217097 128.0 +5.4650397 -7.7552285 -1.6134737 128.0 +5.3847299 -7.7417026 -1.6035217 128.0 +5.3159428 -7.7437305 -1.5970014 128.0 +5.2898746 -7.8080144 -1.6036932 128.0 +5.2057338 -7.7862678 -1.5923686 128.0 +5.1312814 -7.7777658 -1.583961 128.0 +5.0651913 -7.7810297 -1.578127 128.0 +5.0684519 -7.8915462 -1.5945992 128.0 +5.0114999 -7.9091811 -1.5918539 128.0 +4.9675741 -7.9473014 -1.5933981 128.0 +4.925437 -7.9885349 -1.5956287 128.0 +4.8870749 -8.0362844 -1.5992321 128.0 +4.8326073 -8.0576706 -1.5975162 128.0 +4.7895937 -8.0981951 -1.5997468 128.0 +4.7408066 -8.1291332 -1.6000899 128.0 +4.6545062 -8.0948648 -1.5873927 128.0 +4.6042638 -8.1224146 -1.587221 128.0 +4.5447297 -8.1333122 -1.5837893 128.0 +4.4947391 -8.1610451 -1.5837893 128.0 +4.4511571 -8.200593 -1.5861915 128.0 +4.3882132 -8.2042933 -1.5815587 128.0 +4.3309021 -8.2179909 -1.578985 128.0 +4.2763109 -8.2365398 -1.5774407 128.0 +4.2283831 -8.2678871 -1.5784702 128.0 +4.1735849 -8.2857571 -1.576926 128.0 +4.1209149 -8.3076792 -1.5762396 128.0 +4.0594888 -8.3115616 -1.5721216 128.0 +4.0114012 -8.3425293 -1.5733227 128.0 +3.9672997 -8.3821239 -1.5762396 128.0 +3.9120505 -8.3982716 -1.5746953 128.0 +3.860446 -8.4221172 -1.5746953 128.0 +3.8010032 -8.4285822 -1.5714352 128.0 +3.7464194 -8.4454412 -1.5702342 128.0 +3.6945286 -8.4682703 -1.5702342 128.0 +3.6774445 -8.5722685 -1.5856768 128.0 +1.2572447 -2.979089 -0.52425063 128.0 +1.2491246 -3.0113206 -0.5288834 128.0 +1.2328534 -3.0244029 -0.52991295 128.0 +1.2186642 -3.0428867 -0.53197193 128.0 +3.3605134 -8.5480871 -1.560797 128.0 +3.3072908 -8.5667076 -1.5604538 128.0 +1.1774573 -3.1044171 -0.53935009 128.0 +1.1662848 -3.1328211 -0.54329658 128.0 +1.1490666 -3.1454713 -0.54432607 128.0 +3.1053541 -8.6712637 -1.5652581 128.0 +3.0478473 -8.6780701 -1.5630275 128.0 +1.0993104 -3.1903088 -0.5487873 128.0 +1.0781398 -3.1923265 -0.54792941 128.0 +1.0647153 -3.2175899 -0.55136108 128.0 +1.0476832 -3.2324977 -0.55290538 128.0 +1.0436058 -3.2886388 -0.56199938 128.0 +2.6863759 -8.6554651 -1.5395204 128.0 +0.99201179 -3.2644322 -0.55530757 128.0 +0.96102989 -3.2336245 -0.54861569 128.0 +0.93650359 -3.2233758 -0.54569876 128.0 +0.92315704 -3.2518089 -0.54981685 128.0 +0.92842555 -3.3485587 -0.56628901 128.0 +2.2204692 -8.2101908 -1.4424032 128.0 +2.1617601 -8.1922255 -1.4367409 128.0 +0.87472981 -3.3965666 -0.57195133 128.0 +0.84213585 -3.3550451 -0.56354362 128.0 +0.82176745 -3.3611062 -0.56371522 128.0 +1.9281728 -8.1086235 -1.4127189 128.0 +1.8763859 -8.1116629 -1.4111747 128.0 +1.8270104 -8.1249456 -1.4115179 128.0 +1.7720799 -8.1129036 -1.4073998 128.0 +1.718183 -8.1043482 -1.4039681 128.0 +1.6664406 -8.1050882 -1.4022522 128.0 +1.6141769 -8.1026001 -1.4000216 128.0 +1.5616337 -8.0978413 -1.3974478 128.0 +1.5088488 -8.090806 -1.3945309 128.0 +1.4567327 -8.086338 -1.3921287 128.0 +1.4054028 -8.0854177 -1.3904128 128.0 +1.34861 -8.051136 -1.382863 128.0 +1.3027867 -8.0816298 -1.3868096 128.0 +1.2543797 -8.0972605 -1.3881822 128.0 +1.2014887 -8.0833654 -1.3844073 128.0 +1.1714272 -8.2281113 -1.4086008 128.0 +1.128617 -8.2917624 -1.4185528 128.0 +1.0832951 -8.3415184 -1.4261025 128.0 +1.0665044 -8.6266651 -1.4750043 128.0 +1.0273212 -8.7504625 -1.4955946 128.0 +0.99927199 -8.9876804 -1.5360887 128.0 +0.94677669 -9.0191174 -1.5405499 128.0 +0.89209557 -9.03162 -1.541751 128.0 +0.83566415 -9.0261326 -1.5398636 128.0 +0.78221262 -9.0536652 -1.54381 128.0 +0.72648835 -9.0563307 -1.5434668 128.0 +0.67126924 -9.0655298 -1.5443248 128.0 +0.61656386 -9.0832396 -1.5467269 128.0 +0.56063682 -9.0839014 -1.5462122 128.0 +0.50450683 -9.0802851 -1.5450112 128.0 +0.44878176 -9.08321 -1.5450112 128.0 +0.39295486 -9.0838242 -1.544668 128.0 +0.3381933 -9.1126451 -1.5493008 128.0 +0.28196907 -9.104702 -1.5475849 128.0 +0.22675522 -9.1328516 -1.5522177 128.0 +0.17042027 -9.1183119 -1.5494723 128.0 +0.11389288 -9.0728865 -1.5414078 128.0 +0.058282513 -9.0832653 -1.5431237 128.0 +0.002543333 -9.0558672 -1.5383192 128.0 +-0.053087313 -9.0665493 -1.5402067 128.0 +-0.10884894 -9.076889 -1.5420941 128.0 +-0.16463156 -9.0809755 -1.5429521 128.0 +-0.22020411 -9.073885 -1.5419226 128.0 +-0.2762371 -9.0841799 -1.5439816 128.0 +-0.33215195 -9.0872364 -1.5448395 128.0 +-0.38794607 -9.0860109 -1.5450112 128.0 +-0.44479784 -9.1060915 -1.5489576 128.0 +-0.50093454 -9.1081095 -1.5498155 128.0 +-0.55614853 -9.0940475 -1.5479281 128.0 +-0.61187178 -9.0894814 -1.5477564 128.0 +-0.66567957 -9.0590277 -1.5431237 128.0 +-0.72062534 -9.046916 -1.541751 128.0 +-0.77671325 -9.0491953 -1.5429521 128.0 +-0.83231384 -9.0452394 -1.5431237 128.0 +-0.88799155 -9.0419235 -1.5434668 128.0 +-0.9437623 -9.0392447 -1.5439816 128.0 +-0.99942517 -9.0352411 -1.5443248 128.0 +-1.0551889 -9.0318747 -1.5448395 128.0 +-1.11396 -9.0526075 -1.5496439 128.0 +-1.1640478 -9.0035906 -1.5422658 128.0 +-1.2207277 -9.0070171 -1.5441532 128.0 +-1.2798465 -9.0266685 -1.5489576 128.0 +-1.3350646 -9.0176706 -1.5487859 128.0 +-1.3872129 -8.988863 -1.5451827 128.0 +-1.4456248 -9.0006084 -1.5487859 128.0 +-1.5034214 -9.0071163 -1.5515313 128.0 +-1.5615205 -9.0142231 -1.5544482 128.0 +-1.615059 -8.9947758 -1.5527325 128.0 +-1.6691384 -8.9788857 -1.551703 128.0 +-1.7297839 -8.9974976 -1.5568504 128.0 +-1.7863033 -8.9934788 -1.5580516 128.0 +-1.8365033 -8.9582224 -1.553762 128.0 +-1.888377 -8.9323273 -1.5511882 128.0 +-1.9439883 -8.9244223 -1.5518745 128.0 +-1.9984952 -8.9113655 -1.551703 128.0 +-2.0571256 -8.916213 -1.5547915 128.0 +-2.1072459 -8.8842525 -1.5513598 128.0 +-2.1719871 -8.913269 -1.5589095 128.0 +-2.2307038 -8.9160204 -1.5618265 128.0 +-2.2902713 -8.9212494 -1.5652581 128.0 +-2.3464737 -8.9127445 -1.5662876 128.0 +-2.399833 -8.893424 -1.5654298 128.0 +-2.4438524 -8.8405504 -1.5585663 128.0 +-2.5066409 -8.8557215 -1.5640571 128.0 +-2.5617542 -8.8430128 -1.5645719 128.0 +-2.6224067 -8.8488522 -1.5685183 128.0 +-2.6715078 -8.8156242 -1.5654298 128.0 +-2.7240911 -8.7943611 -1.5645719 128.0 +-2.7797852 -8.7831163 -1.5656013 128.0 +-2.833322 -8.7649574 -1.5654298 128.0 +-2.8916826 -8.7614393 -1.5680035 128.0 +-2.9570284 -8.7780743 -1.5743521 128.0 +-3.0057085 -8.7448587 -1.5716069 128.0 +-3.0544186 -8.712307 -1.569033 128.0 +-3.1021791 -8.6776314 -1.5661161 128.0 +-3.1685257 -8.6945305 -1.5728079 128.0 +-3.2146094 -8.6555319 -1.5692046 128.0 +-3.2645192 -8.6273527 -1.5676603 128.0 +-3.3237736 -8.6237049 -1.5707489 128.0 +-1.4539547 -3.7062724 -0.6544838 128.0 +-1.4788626 -3.70277 -0.65551335 128.0 +-3.4941969 -8.5911779 -1.5764112 128.0 +-3.543077 -8.5604734 -1.5746953 128.0 +-3.5901821 -8.5258617 -1.5722932 128.0 +-3.6412642 -8.5009556 -1.5717784 128.0 +-3.703589 -8.501935 -1.5762396 128.0 +-3.7656636 -8.5015688 -1.5805292 128.0 +-3.8064282 -8.4531517 -1.5757248 128.0 +-3.8438699 -8.3982859 -1.5697194 128.0 +-1.4777526 -3.1787179 -0.57160813 128.0 +-1.502703 -3.181169 -0.57383877 128.0 +-1.637785 -3.4125493 -0.62033832 128.0 +-1.6586932 -3.4024358 -0.62033832 128.0 +-1.6769145 -3.3868978 -0.61930883 128.0 +-1.6936792 -3.3686242 -0.61776459 128.0 +-1.7187989 -3.3669417 -0.61948043 128.0 +-1.7462293 -3.3694501 -0.62205422 128.0 +-1.7714603 -3.3673894 -0.62377006 128.0 +-4.2448425 -7.9469223 -1.5302547 128.0 +-4.3155951 -7.961431 -1.5383192 128.0 +-4.3672137 -7.93998 -1.5393488 128.0 +-4.4240136 -7.9276576 -1.5422658 128.0 +-4.4788842 -7.9115076 -1.5444963 128.0 +-4.5577679 -7.936841 -1.5551347 128.0 +-4.6177883 -7.9283037 -1.5590811 128.0 +-4.6788774 -7.9210248 -1.5633707 128.0 +-4.7441015 -7.9200544 -1.569033 128.0 +-4.8028393 -7.9076352 -1.5724647 128.0 +-4.8600526 -7.8922768 -1.5753816 128.0 +-1.99977 -3.2045512 -0.61896569 128.0 +-2.019922 -3.193053 -0.61913723 128.0 +-2.050117 -3.1971819 -0.62256896 128.0 +-5.1602345 -7.9366288 -1.6098703 128.0 +-5.2093778 -7.9056392 -1.6100419 128.0 +-5.2714677 -7.8940067 -1.6143315 128.0 +-5.3551474 -7.9137278 -1.625313 128.0 +-5.35847 -7.8149118 -1.6114146 128.0 +-5.4265594 -7.8110104 -1.6175916 128.0 +-5.4868617 -7.7952886 -1.6213665 128.0 +-5.5305848 -7.7558608 -1.6201655 128.0 +-5.582109 -7.7273693 -1.6213665 128.0 +-5.6299996 -7.6937675 -1.6215382 128.0 +-5.6847296 -7.6693659 -1.6237687 128.0 +-5.7281313 -7.6296139 -1.6227392 128.0 +-5.774838 -7.5943232 -1.6227392 128.0 +-5.814714 -7.5501614 -1.6208518 128.0 +-5.8494177 -7.4995828 -1.6175916 128.0 +-5.9014316 -7.4712806 -1.6193075 128.0 +-5.9502406 -7.4387755 -1.6201655 128.0 +-6.0069351 -7.4159036 -1.6232539 128.0 +-6.0585742 -7.3865228 -1.6249698 128.0 +-6.0993762 -7.3439045 -1.6237687 128.0 +-6.1633477 -7.3289585 -1.6289163 128.0 +-6.2235322 -7.3090034 -1.6330343 128.0 +-6.2624717 -7.2639642 -1.6314901 128.0 +-6.3082209 -7.2268858 -1.6318332 128.0 +-6.3615799 -7.1983771 -1.6342354 128.0 +-6.4207397 -7.1760921 -1.6381819 128.0 +-6.4692807 -7.1416707 -1.639383 128.0 +-6.5069857 -7.0953074 -1.6378387 128.0 +-6.5510697 -7.0559697 -1.6380103 128.0 +-6.6030135 -7.024971 -1.6402409 128.0 +-6.6480312 -6.9864645 -1.6407557 128.0 +-6.6955595 -6.9505072 -1.6419568 128.0 +-6.7483993 -6.9198718 -1.6445305 128.0 +-6.7941933 -6.8818388 -1.6453885 128.0 +-6.841167 -6.8448982 -1.6465895 128.0 +-6.8858409 -6.8055625 -1.6472759 128.0 +-6.9373393 -6.7728171 -1.6496781 128.0 +-6.9915318 -6.7424312 -1.6527666 128.0 +-7.037765 -6.7041612 -1.6539677 128.0 +-7.0837913 -6.6655769 -1.6551688 128.0 +-7.1195054 -6.6172919 -1.6539677 128.0 +-7.1599746 -6.573483 -1.6539677 128.0 +-7.2074723 -6.5360436 -1.6556835 128.0 +-7.2555141 -6.4989257 -1.657571 128.0 +-7.3033714 -6.4614639 -1.6594584 128.0 +-7.3510418 -6.4236598 -1.6613458 128.0 +-7.3903184 -6.3784337 -1.6613458 128.0 +-7.4225678 -6.3272161 -1.6598016 128.0 +-7.459744 -6.2802844 -1.6594584 128.0 +-7.5185938 -6.2513976 -1.6640912 128.0 +-7.5583329 -6.2063971 -1.6644344 128.0 +-7.6016293 -6.1642461 -1.6656355 128.0 +-7.6531525 -6.1285701 -1.6687241 128.0 +-7.6998868 -6.0888276 -1.670783 128.0 +-7.7316661 -6.0372238 -1.669582 128.0 +-7.7552996 -5.9794445 -1.6666651 128.0 +-7.8020344 -5.9395032 -1.6688956 128.0 +-7.8462071 -5.8974371 -1.6706115 128.0 +-7.8798718 -5.8474216 -1.6700968 128.0 +-7.9012966 -5.7884836 -1.6670082 128.0 +-7.9478421 -5.7479744 -1.6694103 128.0 +-8.0102253 -5.7185578 -1.6752443 128.0 +-8.0548277 -5.6761093 -1.6773033 128.0 +-8.1089153 -5.6400776 -1.6814214 128.0 +-8.1547422 -5.5980206 -1.6838236 128.0 +-8.1767015 -5.5395913 -1.6812497 128.0 +-8.2007093 -5.4827461 -1.6791908 128.0 +-8.2415981 -5.4372063 -1.680735 128.0 +-8.3103104 -5.4096413 -1.6881132 128.0 +-8.3458347 -5.3601451 -1.688628 128.0 +-8.3902178 -5.3162155 -1.6910301 128.0 +-6.5562568 -4.0983214 -1.3077087 128.0 +-6.5636683 -4.0471601 -1.3041054 128.0 +-8.4403515 -5.1327305 -1.6815929 128.0 +-8.4556322 -5.0712194 -1.6783328 128.0 +-8.5264463 -5.0428076 -1.6863973 128.0 +-8.5504198 -4.9864259 -1.6850246 128.0 +-8.5962286 -4.9427047 -1.6881132 128.0 +-8.5981102 -4.8738375 -1.6824509 128.0 +-8.5900106 -4.799849 -1.6749011 128.0 +-8.6184368 -4.7465763 -1.6747296 128.0 +-8.6984873 -4.7213268 -1.6848531 128.0 +-8.7698631 -4.6906276 -1.6932608 128.0 +-7.6270423 -4.0195651 -1.4626502 128.0 +-8.8739824 -4.607162 -1.7025263 128.0 +-8.896821 -4.5499349 -1.7014968 128.0 +-6.9192576 -3.4854853 -1.3104541 128.0 +-6.9060922 -3.4258947 -1.3037623 128.0 +-6.9207859 -3.3804295 -1.3025612 128.0 +-6.9413977 -3.3379009 -1.3025612 128.0 +-6.9813395 -3.3045161 -1.306336 128.0 +-7.0354214 -3.2774205 -1.3128563 128.0 +-8.8905277 -4.0750804 -1.6644344 128.0 +-8.9126701 -4.0192375 -1.6639197 128.0 +-6.5632076 -2.9117386 -1.211621 128.0 +-8.9559031 -3.9071996 -1.6628902 128.0 +-8.9597893 -3.8436315 -1.6591153 128.0 +-8.972311 -3.7839901 -1.6570562 128.0 +-9.0172033 -3.7379174 -1.6611743 128.0 +-9.0189838 -3.6739728 -1.6572279 128.0 +-9.0340395 -3.6156366 -1.6558552 128.0 +-9.0542202 -3.5594161 -1.655512 128.0 +-9.0777283 -3.5045028 -1.6558552 128.0 +-9.1128798 -3.4539726 -1.6584289 128.0 +-7.5844612 -2.8217795 -1.3705089 128.0 +-9.1693869 -3.3472869 -1.6611743 128.0 +-9.182332 -3.2883055 -1.6598016 128.0 +-9.1995478 -3.2309227 -1.6592869 128.0 +-9.2331724 -3.179224 -1.6618606 128.0 +-9.2646408 -3.1266043 -1.6640912 128.0 +-9.2976818 -3.0743363 -1.6666651 128.0 +-9.3201199 -3.0184426 -1.6673514 128.0 +-9.3872995 -2.9766774 -1.6762738 128.0 +-9.4195013 -2.9234006 -1.6788476 128.0 +-9.5013657 -2.885005 -1.6905154 128.0 +-9.5132217 -2.8249693 -1.6894859 128.0 +-9.5511923 -2.772584 -1.6932608 128.0 +-9.5879288 -2.7195699 -1.696864 128.0 +-9.6310196 -2.6680496 -1.7016684 128.0 +-9.6862011 -2.6194444 -1.7087034 128.0 +-9.7821102 -2.5810652 -1.7231165 128.0 +-9.8282948 -2.5288467 -1.7286073 128.0 +-9.8789835 -2.4773562 -1.7349559 128.0 +-9.9179249 -2.4225347 -1.7392455 128.0 +-9.9556065 -2.3671005 -1.7433636 128.0 +-9.9900999 -2.3106291 -1.746967 128.0 +-10.026197 -2.2542555 -1.7509134 128.0 +-10.044653 -2.1937442 -1.7517713 128.0 +-10.029975 -2.1261485 -1.7467953 128.0 +-9.9289608 -2.0411699 -1.7265483 128.0 +-10.052412 -2.0023282 -1.7462806 128.0 +-10.316993 -1.9892637 -1.7910643 128.0 +-10.472342 -1.9526323 -1.8164589 128.0 +-10.772094 -1.9401731 -1.8674197 128.0 +-11.132256 -1.9345585 -1.9290189 128.0 +-11.29938 -1.8922344 -1.9564725 128.0 +-11.335094 -1.8267834 -1.9607621 128.0 +-11.385034 -1.7632253 -1.9676255 128.0 +-11.35471 -1.6872574 -1.9604189 128.0 +-11.344366 -1.6146413 -1.9568156 128.0 +-11.351131 -1.5446049 -1.9563009 128.0 +-11.367234 -1.4758139 -1.957502 128.0 +-11.34381 -1.4020535 -1.9518397 128.0 +-11.342415 -1.3312753 -1.9501238 128.0 +-11.364078 -1.2631768 -1.952526 128.0 +-11.356917 -1.1918834 -1.9499522 128.0 +-11.359115 -1.1216928 -1.9490943 128.0 +-11.385404 -1.0537874 -1.952526 128.0 +-11.398525 -0.98450065 -1.9537271 128.0 +-11.366053 -0.9114747 -1.9470353 128.0 +-11.403853 -0.84411335 -1.9526976 128.0 +-11.420613 -0.77492386 -1.9547566 128.0 +-11.42712 -0.7049548 -1.9550998 128.0 +-11.38008 -0.63199067 -1.9461774 128.0 +-11.433927 -0.56462491 -1.9549282 128.0 +-11.468672 -0.49581549 -1.9604189 128.0 +-11.465591 -0.42521724 -1.9593894 128.0 +-11.45026 -0.35431102 -1.9563009 128.0 +-11.457143 -0.28416851 -1.9571588 128.0 +-11.4567 -0.21382689 -1.9568156 128.0 +-11.429229 -0.14317092 -1.9518397 128.0 +-11.420041 -0.072977841 -1.9501238 128.0 +-11.466577 -0.0029114876 -1.9581883 128.0 +-11.450616 0.067351848 -1.9554429 128.0 +-11.392852 0.13691777 -1.945491 128.0 +-11.379977 0.20660461 -1.943432 128.0 +-11.38736 0.27664319 -1.9449762 128.0 +-11.349998 0.34542701 -1.9387991 128.0 +-11.402797 0.41708499 -1.948408 128.0 +-11.428567 0.48826578 -1.9533839 128.0 +-11.399772 0.55712801 -1.9489228 128.0 +-11.433518 0.62912583 -1.9554429 128.0 +-11.41371 0.69830453 -1.9526976 128.0 +-11.491777 0.7738933 -1.9671108 128.0 +-10.59524 -0.26964146 -1.9367043 128.0 +-10.644856 -0.20555705 -1.9456842 128.0 +-10.616427 -0.13984799 -1.9401863 128.0 +-10.634781 -0.074829362 -1.943485 128.0 +-10.638971 -0.0095778545 -1.944218 128.0 +-10.659474 0.055809133 -1.9480667 128.0 +-10.71398 0.12183732 -1.9583296 128.0 +-10.671747 0.1868535 -1.9506323 128.0 +-10.682194 0.25260904 -1.9528315 128.0 +-10.665703 0.31771049 -1.9500825 128.0 +-10.63408 0.38209018 -1.9445846 128.0 +-10.629571 0.44724989 -1.944218 128.0 +-10.610916 0.51170623 -1.9412858 128.0 +-10.62819 0.57792407 -1.9451344 128.0 +-10.59795 0.64152378 -1.9401863 128.0 +-10.61147 0.70771641 -1.943485 128.0 +-10.556924 0.76917249 -1.9341385 128.0 +-10.601007 0.83780473 -1.9433018 128.0 +-10.612318 0.90425378 -1.9464172 128.0 +-10.555662 0.96470213 -1.9368875 128.0 +-10.550523 1.0295477 -1.9370707 128.0 +-10.550852 1.0949752 -1.9383537 128.0 +-10.534163 1.158619 -1.9365209 128.0 +-10.550291 1.225956 -1.9409193 128.0 +-10.465484 1.2812339 -1.9264414 128.0 +-10.524702 1.3540779 -1.9390867 128.0 +-10.530809 1.4206016 -1.9418356 128.0 +-10.47225 1.4781852 -1.9324892 128.0 +-10.474653 1.5441339 -1.9346883 128.0 +-10.413484 1.6004633 -1.9249753 128.0 +-10.436472 1.6696079 -1.9312062 128.0 +-10.462882 1.7397394 -1.9381703 128.0 +-10.442323 1.8022341 -1.9363377 128.0 +-10.420423 1.8643689 -1.9343218 128.0 +-10.404921 1.9275563 -1.9335887 128.0 +-10.356208 1.9843348 -1.9266247 128.0 +-10.33998 2.0470784 -1.9258916 128.0 +-10.344562 2.1140273 -1.9291904 128.0 +-10.334282 2.1780684 -1.9297402 128.0 +-10.309195 2.2389343 -1.927541 128.0 +-10.2684 2.2961423 -1.9224095 128.0 +-10.29723 2.3690217 -1.9306564 128.0 +-10.297807 2.4357796 -1.9335887 128.0 +-10.261651 2.4938135 -1.9295568 128.0 +-10.238525 2.554827 -1.9280908 128.0 +-10.196943 2.6110184 -1.9231426 128.0 +-10.241584 2.6895144 -1.9348716 128.0 +-10.201157 2.7459178 -1.93029 128.0 +-10.1699 2.8045397 -1.927541 128.0 +-10.161962 2.8695593 -1.9293736 128.0 +-10.147941 2.9329498 -1.9301066 128.0 +-10.085445 2.9820619 -1.9214932 128.0 +-10.049079 3.0384836 -1.9180112 128.0 +-10.025549 3.0986352 -1.9170948 128.0 +-10.056032 3.175781 -1.9268079 128.0 +-10.00174 3.2262588 -1.9200271 128.0 +-9.9789534 3.2866452 -1.9194773 128.0 +-9.9828272 3.3559566 -1.9242421 128.0 +-9.9676266 3.4190605 -1.9253418 128.0 +-9.9362526 3.4765854 -1.9233259 128.0 +-9.9462147 3.5487185 -1.9295568 128.0 +-9.9261007 3.6103525 -1.9299234 128.0 +-9.8733425 3.6599152 -1.9238757 128.0 +-9.7881622 3.6968114 -1.9114137 128.0 +-9.8386965 3.7850361 -1.9260749 128.0 +-9.8436623 3.8564494 -1.931756 128.0 +-9.7741575 3.8985677 -1.9225928 128.0 +-9.7518749 3.9592071 -1.9229593 128.0 +-9.7074089 4.0107112 -1.9189276 128.0 +-9.7034607 4.0789604 -1.9231426 128.0 +-9.685482 4.1415148 -1.9246087 128.0 +-9.6256294 4.1859694 -1.9176446 128.0 +-9.5709925 4.2322311 -1.9117801 128.0 +-9.571743 4.3029695 -1.9172782 128.0 +-9.4476976 4.3170886 -1.8973023 128.0 +-9.5458593 4.43294 -1.9229593 128.0 +-9.4980307 4.4817805 -1.9187442 128.0 +-9.4526224 4.5314765 -1.915079 128.0 +-9.4113817 4.5829358 -1.9123299 128.0 +-9.3927774 4.6453905 -1.9143459 128.0 +-9.3825464 4.7122006 -1.9181944 128.0 +-9.3613377 4.7737012 -1.9198438 128.0 +-9.3056803 4.8174939 -1.9143459 128.0 +-9.2550592 4.8635273 -1.9099475 128.0 +-9.2068272 4.9105091 -1.906099 128.0 +-9.1817112 4.9697161 -1.9071985 128.0 +-9.1303644 5.0146036 -1.9028002 128.0 +-9.1054344 5.0738811 -1.904083 128.0 +-9.0689955 5.1267533 -1.9029834 128.0 +-9.0416317 5.1847482 -1.9038998 128.0 +-8.9858541 5.2262907 -1.8987683 128.0 +-8.9951086 5.3058 -1.9077483 128.0 +-8.9615393 5.3603883 -1.9075651 128.0 +-8.9310017 5.4168038 -1.9081149 128.0 +-8.8984337 5.4720163 -1.9082981 128.0 +-8.8713646 5.5306735 -1.9097643 128.0 +-8.8339386 5.5829024 -1.9090312 128.0 +-8.8111048 5.6444249 -1.9115969 128.0 +-8.7688847 5.6935649 -1.9099475 128.0 +-8.736248 5.7488837 -1.9104973 128.0 +-8.68118 5.7892904 -1.906099 128.0 +-8.669116 5.8584099 -1.9114137 128.0 +-8.7084427 5.9631433 -1.9284573 128.0 +-8.6256495 5.9845247 -1.9180112 128.0 +-8.649087 6.0797358 -1.931756 128.0 +-8.6052132 6.1281295 -1.93029 128.0 +-8.5586796 6.1744881 -1.928274 128.0 +-8.5230131 6.2286272 -1.9288238 128.0 +-8.5146608 6.303031 -1.9357879 128.0 +-8.4703197 6.3510294 -1.934505 128.0 +-8.443718 6.412395 -1.9374373 128.0 +-8.4065514 6.4658823 -1.9379871 128.0 +-8.365943 6.5167379 -1.9378039 128.0 +-8.3173094 6.5612507 -1.9357879 128.0 +-8.3314285 6.6557236 -1.9487997 128.0 +-8.2613888 6.6832252 -1.9418356 128.0 +-8.2270708 6.7393966 -1.943485 128.0 +-8.2128038 6.8123436 -1.9500825 128.0 +-8.1557932 6.8499637 -1.9464172 128.0 +-8.096384 6.8852305 -1.9422022 128.0 +-8.0808039 6.9578705 -1.9487997 128.0 +-8.0379591 7.0073223 -1.9487997 128.0 +-7.9933376 7.0552092 -1.9484332 128.0 +-7.9528298 7.1067429 -1.9491663 128.0 +-7.9061575 7.1527686 -1.9484332 128.0 +-7.8526959 7.1925139 -1.9460508 128.0 +-7.805532 7.2378879 -1.9453176 128.0 +-7.8175983 7.3387976 -1.9597956 128.0 +-7.7617316 7.3764691 -1.9570466 128.0 +-7.680902 7.3898778 -1.9478834 128.0 +-7.6720352 7.4725342 -1.9574132 128.0 +-7.6162395 7.5098052 -1.9548475 128.0 +-7.6089811 7.5952873 -1.9651103 128.0 +-7.5560102 7.6355433 -1.9634609 128.0 +-7.5207 7.6937127 -1.9665765 128.0 +-7.4856424 7.7524433 -1.9698752 128.0 +-7.4379334 7.7982283 -1.9698752 128.0 +-7.4000564 7.8544521 -1.9726242 128.0 +-7.365118 7.9141026 -1.9762895 128.0 +-7.3217421 7.9649348 -1.9777555 128.0 +-7.2568717 7.9922433 -1.9733572 128.0 +-7.2168851 8.0468655 -1.9759229 128.0 +-7.1712856 8.0954113 -1.9770225 128.0 +-7.1195359 8.137042 -1.9764727 128.0 +-7.0913296 8.205862 -1.9827038 128.0 +-7.0516958 8.2619295 -1.9858192 128.0 +-7.0065718 8.3118076 -1.9874686 128.0 +-6.9529233 8.3516207 -1.9867356 128.0 +-6.9002991 8.3926067 -1.986369 128.0 +-6.8542504 8.4416571 -1.9880184 128.0 +-6.8023243 8.4835548 -1.9880184 128.0 +-6.7568555 8.5336113 -1.9900343 128.0 +-6.6928616 8.560195 -1.9865524 128.0 +-6.6450176 8.6073256 -1.9880184 128.0 +-6.5908866 8.6463737 -1.9876519 128.0 +-6.5489421 8.7015753 -1.9911339 128.0 +-6.5083265 8.758954 -1.9951658 128.0 +-6.4631824 8.8106127 -1.9979148 128.0 +-6.3951612 8.8309956 -1.9935164 128.0 +-6.3597217 8.8964605 -1.9995642 128.0 +-6.2931113 8.9184475 -1.9957156 128.0 +-6.2556882 8.9819002 -2.0013969 128.0 +-6.216609 9.0436087 -2.0067115 128.0 +-6.1709361 9.0962257 -2.0100102 128.0 +-6.1111784 9.1282005 -2.0087273 128.0 +-6.0425897 9.1466608 -2.0045123 128.0 +-5.982058 9.1769772 -2.0030463 128.0 +-5.9309549 9.2217779 -2.0048788 128.0 +-5.8842669 9.2737665 -2.0083609 128.0 +-5.8178644 9.2946987 -2.0050621 128.0 +-5.787581 9.3737173 -2.0145919 128.0 +-5.730979 9.4107313 -2.0149584 128.0 +-5.6761651 9.4507751 -2.016058 128.0 +-5.6240811 9.4955759 -2.0182571 128.0 +-5.5617452 9.5231152 -2.0167911 128.0 +-5.5017362 9.5545063 -2.0162413 128.0 +-5.4653335 9.627409 -2.0246716 128.0 +-5.4037571 9.6564732 -2.0237551 128.0 +-5.3543758 9.7075253 -2.0276036 128.0 +-5.2759295 9.7056484 -2.0202732 128.0 +-5.2376318 9.7776995 -2.0287032 128.0 +-5.1711135 9.7974815 -2.0261376 128.0 +-5.1145287 9.8360043 -2.0276036 128.0 +-5.0648365 9.8881998 -2.032002 128.0 +-4.9828129 9.8769627 -2.0232053 128.0 +-4.9295516 9.9223166 -2.0263209 128.0 +-4.8741927 9.9638567 -2.0287032 128.0 +-4.8163767 10.000663 -2.0301695 128.0 +-4.7641883 10.049569 -2.0342011 128.0 +-4.700357 10.074158 -2.0332849 128.0 +-4.6462488 10.119783 -2.036767 128.0 +-4.5739493 10.125705 -2.0321853 128.0 +-4.518919 10.16975 -2.0354841 128.0 +-4.4615517 10.208996 -2.0378666 128.0 +-4.3980503 10.234373 -2.0374999 128.0 +-4.338614 10.269317 -2.0391495 128.0 +-4.2709966 10.28485 -2.0369501 128.0 +-4.2100382 10.316323 -2.0380497 128.0 +-4.1539769 10.36021 -2.0417151 128.0 +-4.0964541 10.401053 -2.0448306 128.0 +-4.0389414 10.442496 -2.0481293 128.0 +-3.9702542 10.455134 -2.045747 128.0 +-3.9029374 10.471008 -2.0440977 128.0 +-3.8274701 10.464293 -2.0380497 128.0 +-3.7694993 10.505161 -2.0415318 128.0 +-3.707581 10.535511 -2.0429981 128.0 +-3.6463938 10.568284 -2.0450139 128.0 +-3.5843141 10.598841 -2.0466633 128.0 +-3.521378 10.627166 -2.0479462 128.0 +-3.4603539 10.661663 -2.0505118 128.0 +-3.3933811 10.67801 -2.0495956 128.0 +-3.3222499 10.680796 -2.0461135 128.0 +-3.2638075 10.724491 -2.0506952 128.0 +-3.2046733 10.766929 -2.0550935 128.0 +-3.1366255 10.779782 -2.0538106 128.0 +-3.0685408 10.792206 -2.0525277 128.0 +-3.0035787 10.815567 -2.0534441 128.0 +-2.9351008 10.826202 -2.0519779 128.0 +-2.8688688 10.844958 -2.0521612 128.0 +-2.8025169 10.86331 -2.0523446 128.0 +-2.7465973 10.923203 -2.0605915 128.0 +-2.6818612 10.949398 -2.0624242 128.0 +-2.6143985 10.964691 -2.0622408 128.0 +-2.5504036 10.994891 -2.0649898 128.0 +-2.4785664 10.991154 -2.0613246 128.0 +-2.4037154 10.972545 -2.0549102 128.0 +-2.3383889 10.996703 -2.0567429 128.0 +-2.2760339 11.035877 -2.0615077 128.0 +-2.2036517 11.026499 -2.0571094 128.0 +-2.1314704 11.016648 -2.052711 128.0 +-2.0687163 11.05561 -2.0576591 128.0 +-2.0036399 11.083572 -2.0605915 128.0 +-1.9416778 11.130522 -2.067189 128.0 +-1.8715523 11.131562 -2.0651731 128.0 +-1.8025868 11.138954 -2.06444 128.0 +-1.7296718 11.120664 -2.0589421 128.0 +-1.6634364 11.14468 -2.0615077 128.0 +-1.600451 11.19263 -2.068655 128.0 +-1.534142 11.219771 -2.0719538 128.0 +-1.4657789 11.232873 -2.0726869 128.0 +-1.3991315 11.26019 -2.076169 128.0 +-1.3212538 11.194366 -2.0622408 128.0 +-1.2592072 11.261858 -2.07342 128.0 +-1.1880165 11.24982 -2.0697546 128.0 +-1.1186748 11.253963 -2.0692048 128.0 +-1.0483229 11.246911 -2.0666392 128.0 +-0.978185 11.2404 -2.0642567 128.0 +-0.90848351 11.237371 -2.0626073 128.0 +-0.84061378 11.25744 -2.0653563 128.0 +-0.77219582 11.272193 -2.067189 128.0 +-0.70313877 11.278682 -2.0675554 128.0 +-0.63463825 11.295544 -2.0699379 128.0 +-0.56300771 11.253078 -2.0613246 128.0 +-0.49558854 11.293642 -2.0682886 128.0 +-0.42672801 11.308258 -2.0704877 128.0 +-0.35742703 11.313611 -2.0710375 128.0 +-0.28785101 11.309695 -2.0699379 128.0 +-0.21858373 11.318129 -2.0712209 128.0 +-0.14905496 11.313359 -2.0701213 128.0 +-0.079613827 11.311111 -2.0695715 128.0 +-0.010212346 11.315319 -2.0703044 128.0 +0.059145804 11.301406 -2.0677388 128.0 +0.12815458 11.27134 -2.0622408 128.0 +0.19734615 11.272307 -2.0626073 128.0 +0.26699528 11.291523 -2.0664558 128.0 +0.3359814 11.279846 -2.0646234 128.0 +0.40518692 11.277573 -2.0646234 128.0 +0.47404686 11.267016 -2.0631571 128.0 +0.54194087 11.238365 -2.0583923 128.0 +0.61328822 11.279001 -2.0666392 128.0 +0.68129611 11.255401 -2.062974 128.0 +0.74799138 11.215696 -2.0563762 128.0 +0.81565315 11.195209 -2.0534441 128.0 +0.88433027 11.189993 -2.0534441 128.0 +0.95505977 11.208844 -2.0580256 128.0 +1.0243546 11.208647 -2.0591252 128.0 +1.0944464 11.215848 -2.061691 128.0 +1.1583759 11.161986 -2.0528944 128.0 +1.2338262 11.218185 -2.0648065 128.0 +1.2929946 11.127401 -2.0492289 128.0 +1.3659042 11.157313 -2.0563762 128.0 +1.4330845 11.138972 -2.0545437 128.0 +1.5021932 11.135815 -2.0556433 128.0 +1.5630754 11.073823 -2.045747 128.0 +1.6456137 11.163224 -2.06444 128.0 +1.7042253 11.088787 -2.0523446 128.0 +1.7737854 11.08783 -2.054177 128.0 +1.8435589 11.087404 -2.0561931 128.0 +1.9095494 11.064259 -2.0539939 128.0 +1.969613 11.008787 -2.045747 128.0 +2.0346181 10.982962 -2.0431812 128.0 +2.0940166 10.928754 -2.0353007 128.0 +2.1789777 11.006349 -2.0525277 128.0 +2.2340722 10.932092 -2.040982 128.0 +2.3007028 10.916254 -2.0406156 128.0 +2.3665974 10.897129 -2.0396993 128.0 +2.4372771 10.899672 -2.0429981 128.0 +2.5005844 10.869183 -2.0400658 128.0 +2.560442 10.824934 -2.0345678 128.0 +2.644455 10.88162 -2.048496 128.0 +2.6876144 10.770761 -2.0303526 128.0 +2.7712069 10.822636 -2.0435479 128.0 +2.8572841 10.880545 -2.0580256 128.0 +2.9176049 10.839075 -2.0534441 128.0 +2.9762182 10.792539 -2.0479462 128.0 +3.0576096 10.828 -2.0583923 128.0 +3.1136205 10.773147 -2.0514281 128.0 +3.1651719 10.704818 -2.0418985 128.0 +3.239615 10.714366 -2.0475795 128.0 +3.3009422 10.680198 -2.0448306 128.0 +3.3625646 10.647555 -2.0424483 128.0 +3.4245141 10.616431 -2.0404322 128.0 +3.4788284 10.562538 -2.034018 128.0 +3.5382488 10.525152 -2.0309024 128.0 +3.5992551 10.493015 -2.0288866 128.0 +3.6700637 10.489291 -2.0325518 128.0 +3.7406318 10.484167 -2.0360339 128.0 +3.7958193 10.436073 -2.0310857 128.0 +3.8707154 10.442083 -2.0369501 128.0 +3.933672 10.415378 -2.0364003 128.0 +3.9982114 10.39288 -2.036767 128.0 +4.064774 10.375475 -2.038233 128.0 +4.1127009 10.311074 -2.0303526 128.0 +4.1755214 10.284734 -2.0301695 128.0 +4.2310414 10.240748 -2.026504 128.0 +4.2903695 10.206438 -2.0248547 128.0 +4.3471174 10.166362 -2.0221057 128.0 +4.4145112 10.151217 -2.0244882 128.0 +4.4810877 10.133829 -2.026504 128.0 +4.5435867 10.107039 -2.0266874 128.0 +4.6014314 10.070028 -2.0248547 128.0 +4.6552668 10.024664 -2.0213728 128.0 +4.7204647 10.003913 -2.0230222 128.0 +4.7770844 9.9650087 -2.0210061 128.0 +4.8407207 9.9408131 -2.0221057 128.0 +4.9055471 9.9188547 -2.0237551 128.0 +4.9544044 9.8648481 -2.0188069 128.0 +5.0268974 9.8579092 -2.0237551 128.0 +5.070569 9.7945766 -2.0169742 128.0 +5.1214266 9.7458754 -2.013309 128.0 +5.1811295 9.7142677 -2.013309 128.0 +5.2326832 9.6675959 -2.0101936 128.0 +5.2672973 9.5904999 -2.0006638 128.0 +5.3447051 9.5914917 -2.0078111 128.0 +5.4029732 9.5576601 -2.0076277 128.0 +5.4536924 9.5106831 -2.0046957 128.0 +5.5154057 9.4829893 -2.0059783 128.0 +5.5610027 9.4278002 -2.0013969 128.0 +5.6182413 9.3926573 -2.0012136 128.0 +5.6742387 9.3554859 -2.0006638 128.0 +5.7191777 9.300396 -1.9962654 128.0 +5.7574148 9.235095 -1.9896678 128.0 +5.8328772 9.2295122 -1.9962654 128.0 +5.8920498 9.1976871 -1.9971817 128.0 +5.9376688 9.1448708 -1.9935164 128.0 +5.992588 9.1066236 -1.9931499 128.0 +6.0309 9.0435095 -1.9872854 128.0 +6.0884781 9.0095921 -1.9880184 128.0 +6.1486435 8.9793644 -1.9896678 128.0 +6.1946583 8.928545 -1.9867356 128.0 +6.2561102 8.9000187 -1.9889348 128.0 +6.3043294 8.8526554 -1.9869188 128.0 +6.3453016 8.7954693 -1.9827038 128.0 +6.3846498 8.7365265 -1.9781221 128.0 +6.4381361 8.6971865 -1.9781221 128.0 +6.4807649 8.6433611 -1.9748234 128.0 +6.5515132 8.6269207 -1.9803213 128.0 +6.5983305 8.5787659 -1.9784887 128.0 +6.6478243 8.5342398 -1.9775723 128.0 +6.693367 8.4847994 -1.9755564 128.0 +6.7410078 8.4381933 -1.9742736 128.0 +6.7784367 8.3790932 -1.9700584 128.0 +6.8290997 8.3365831 -1.9698752 128.0 +6.8631783 8.2740936 -1.9649271 128.0 +6.9157147 8.2340841 -1.9654769 128.0 +6.9680185 8.1937418 -1.9660267 128.0 +6.9739056 8.0994291 -1.9533813 128.0 +7.0215335 8.0542622 -1.9528315 128.0 +7.0896859 8.032402 -1.9581462 128.0 +7.1525941 8.0041437 -1.9619948 128.0 +7.1765108 7.9324026 -1.9550307 128.0 +7.2057929 7.8671951 -1.9497161 128.0 +7.261282 7.8307629 -1.9517319 128.0 +7.3051572 7.7817602 -1.9506323 128.0 +7.3297429 7.7125611 -1.9444014 128.0 +7.3755651 7.6660247 -1.9440348 128.0 +7.3888555 7.5861163 -1.9350548 128.0 +7.4504485 7.5560369 -1.9390867 128.0 +7.4966712 7.51018 -1.9390867 128.0 +7.5593815 7.4806356 -1.943485 128.0 +7.594595 7.4238033 -1.9407361 128.0 +7.596159 7.3347254 -1.9293736 128.0 +7.6623616 7.3083344 -1.9348716 128.0 +7.6762938 7.2321925 -1.9269912 128.0 +7.7226844 7.186965 -1.927541 128.0 +7.7557817 7.1294641 -1.9247919 128.0 +7.8008366 7.0830631 -1.9251585 128.0 +7.8419552 7.0330958 -1.9246087 128.0 +7.880547 6.9809346 -1.9235091 128.0 +7.9269319 6.9356861 -1.9244255 128.0 +7.9447942 6.8657041 -1.9183778 128.0 +7.984529 6.8149118 -1.917828 128.0 +8.0119133 6.7537522 -1.9143459 128.0 +8.0396042 6.6931429 -1.9110471 128.0 +8.0706501 6.63557 -1.9086647 128.0 +8.1249495 6.5970788 -1.9119635 128.0 +8.1606741 6.5434108 -1.9108639 128.0 +8.2006702 6.4932146 -1.9108639 128.0 +8.2372599 6.440352 -1.9101307 128.0 +8.2711744 6.3854823 -1.9088479 128.0 +8.3023815 6.3286514 -1.9070153 128.0 +8.3229923 6.2639928 -1.9028002 128.0 +8.3636379 6.2145648 -1.90335 128.0 +8.4095383 6.1689444 -1.9051826 128.0 +8.3843327 6.0716753 -1.8907046 128.0 +8.4558182 6.0446997 -1.8985851 128.0 +8.4911423 5.9915686 -1.8982185 128.0 +8.4987059 5.9191279 -1.891621 128.0 +8.5486364 5.8763366 -1.8947365 128.0 +8.5707026 5.8143897 -1.891621 128.0 +8.6070347 5.7622385 -1.8918042 128.0 +8.6405888 5.7082343 -1.8914378 128.0 +8.6812153 5.6588674 -1.8927206 128.0 +8.6810484 5.5831585 -1.8850235 128.0 +8.7134829 5.5287337 -1.8846569 128.0 +8.7164116 5.4558654 -1.8778762 128.0 +8.7764902 5.4188075 -1.8837407 128.0 +8.8095741 5.3648539 -1.8837407 128.0 +8.8490686 5.3147478 -1.8852067 128.0 +8.7783232 5.1992283 -1.8628484 128.0 +8.8711786 5.1809654 -1.8760434 128.0 +8.8789482 5.112699 -1.8709121 128.0 +8.9366531 5.0731683 -1.8765932 128.0 +9.0353842 5.0561666 -1.8910712 128.0 +9.0722637 5.0039549 -1.892354 128.0 +9.0777502 4.9345779 -1.8870394 128.0 +9.0913925 4.8699646 -1.8835573 128.0 +9.1480541 4.8283153 -1.8892386 128.0 +9.1862297 4.7766285 -1.8910712 128.0 +9.2311144 4.7282405 -1.89437 128.0 +9.2459097 4.6644254 -1.8914378 128.0 +9.2444229 4.5927329 -1.8852067 128.0 +9.2521191 4.5259876 -1.8809916 128.0 +9.2859163 4.4721184 -1.8822745 128.0 +9.3273945 4.4217954 -1.8852067 128.0 +9.3641491 4.3690529 -1.8872226 128.0 +9.4247293 4.3271017 -1.8941867 128.0 +9.4663334 4.2760715 -1.8973023 128.0 +9.4986811 4.2207012 -1.8985851 128.0 +9.3676634 4.0938349 -1.866697 128.0 +9.4603453 4.0653915 -1.8804418 128.0 +9.5086555 4.0172153 -1.8852067 128.0 +9.5331259 3.9587955 -1.8852067 128.0 +9.6127577 3.9228871 -1.8963859 128.0 +9.5946751 3.8469996 -1.8879557 128.0 +9.6089525 3.7844527 -1.8861231 128.0 +9.7236786 3.7608881 -1.9044496 128.0 +9.688674 3.6791651 -1.8929039 128.0 +9.7258043 3.6251414 -1.8958361 128.0 +9.7284775 3.5583045 -1.8919876 128.0 +9.7630816 3.5031934 -1.8945533 128.0 +9.7593555 3.4344103 -1.889605 128.0 +9.8081236 3.3840837 -1.8951031 128.0 +9.8398781 3.3276181 -1.8973023 128.0 +9.8498459 3.2637773 -1.8952863 128.0 +9.8659468 3.2020643 -1.8945533 128.0 +9.9219475 3.1530807 -1.9017006 128.0 +9.9007435 3.0795848 -1.8938202 128.0 +9.9514284 3.0285096 -1.9000512 128.0 +9.9783039 2.9699159 -1.9017006 128.0 +9.9736853 2.9020419 -1.8973023 128.0 +9.9903584 2.8405209 -1.8971189 128.0 +10.028439 2.7849555 -1.9011508 128.0 +10.056724 2.7264571 -1.90335 128.0 +10.081817 2.6669619 -1.9049994 128.0 +10.072289 2.5984194 -1.9000512 128.0 +10.058489 2.5291355 -1.89437 128.0 +10.109147 2.4760246 -1.9011508 128.0 +10.128931 2.4150896 -1.9020671 128.0 +10.141644 2.3524499 -1.9017006 128.0 +10.147256 2.2882311 -1.9000512 128.0 +10.14094 2.2215073 -1.8962027 128.0 +10.174572 2.1635363 -1.9000512 128.0 +10.214614 2.1066265 -1.9051826 128.0 +10.243735 2.0471869 -1.9082981 128.0 +10.26093 1.9852278 -1.9092145 128.0 +10.271952 1.9220498 -1.9090312 128.0 +10.282584 1.8588111 -1.9088479 128.0 +10.287986 1.7946695 -1.9077483 128.0 +10.282323 1.7287383 -1.9046328 128.0 +10.312145 1.6687562 -1.9082981 128.0 +10.325105 1.6059041 -1.9088479 128.0 +10.338654 1.5431008 -1.9095809 128.0 +10.332356 1.4774079 -1.9066488 128.0 +10.371421 1.4181117 -1.9123299 128.0 +10.383826 1.354956 -1.913063 128.0 +10.33146 1.2836989 -1.9017006 128.0 +10.392838 1.2266216 -1.9117801 128.0 +10.410915 1.1640313 -1.9137961 128.0 +10.439369 1.1024013 -1.917828 128.0 +10.384308 1.0321975 -1.9062822 128.0 +10.457984 0.97475874 -1.9189276 128.0 +10.389338 0.90409142 -1.9049994 128.0 +10.479938 0.84722161 -1.9209434 128.0 +10.420237 0.77806824 -1.9088479 128.0 +10.436584 0.71492285 -1.9110471 128.0 +10.43783 0.65068811 -1.9104973 128.0 +10.432793 0.5861339 -1.9088479 128.0 +10.494121 0.5250088 -1.9196606 128.0 +10.512858 0.46129832 -1.9225928 128.0 +10.496826 0.39607891 -1.9191108 128.0 +10.497094 0.33160201 -1.9187442 128.0 +10.461587 0.26623499 -1.9117801 128.0 +10.544602 0.2036173 -1.9269912 128.0 +10.490606 0.1381858 -1.9167284 128.0 +10.529595 0.074085265 -1.9238757 128.0 +10.490529 0.0094385985 -1.916545 128.0 +10.505136 -0.055006903 -1.919294 128.0 +10.518362 -0.11962015 -1.9218597 128.0 +10.524311 -0.18427756 -1.9231426 128.0 +10.523965 -0.24887325 -1.9233259 128.0 +10.485882 -0.31236076 -1.916545 128.0 +10.510294 -0.37764713 -1.9214932 128.0 +10.484206 -0.44113901 -1.9170948 128.0 +10.499958 -0.50635958 -1.9205769 128.0 +10.510396 -0.57152337 -1.9231426 128.0 +10.533186 -0.63760591 -1.9280908 128.0 +10.534961 -0.70261663 -1.9291904 128.0 +10.504959 -0.76538831 -1.9244255 128.0 +10.512805 -0.83083755 -1.9268079 128.0 +10.513387 -0.89582777 -1.9279075 128.0 +10.517482 -0.96121418 -1.9297402 128.0 +10.531933 -1.0277344 -1.9335887 128.0 +10.510761 -1.0908161 -1.9308398 128.0 +10.432536 -1.1474454 -1.9174614 128.0 +10.462406 -1.2157471 -1.9244255 128.0 +10.465484 -1.2812339 -1.9264414 128.0 +10.451574 -1.3446724 -1.9253418 128.0 +10.472354 -1.4127183 -1.9308398 128.0 +10.436234 -1.4731028 -1.9257083 128.0 +10.4163 -1.5355339 -1.9236923 128.0 +10.40571 -1.5992689 -1.9235091 128.0 +10.442296 -1.6705394 -1.9323058 128.0 +10.403727 -1.7299056 -1.9269912 128.0 +10.380322 -1.791536 -1.9246087 128.0 +10.351716 -1.8520789 -1.9213099 128.0 +10.295692 -1.9073255 -1.9128797 128.0 +10.289588 -1.9715725 -1.9139793 128.0 +9.9793119 -1.9756887 -1.8573505 128.0 +9.6703472 -1.9762706 -1.8009048 128.0 +9.4733467 -1.9966508 -1.7657179 128.0 +9.3369894 -2.0278313 -1.7420768 128.0 +9.1843014 -2.0537682 -1.71532 128.0 +9.0450649 -2.0809941 -1.691129 128.0 +8.968029 -2.1212957 -1.6788503 128.0 +8.8851099 -2.1593382 -1.6654719 128.0 +8.6732969 -2.1643178 -1.6273527 128.0 +8.6712818 -2.2204213 -1.6295519 128.0 +7.8026948 -2.0491436 -1.4647967 128.0 +7.6010671 -2.0461397 -1.4283268 128.0 +7.4774885 -2.0621674 -1.4068849 128.0 +7.4467192 -2.1029344 -1.4034028 128.0 +7.0294633 -2.0317788 -1.3249654 128.0 +6.9273052 -2.0483954 -1.3075552 128.0 +6.6755919 -2.0186026 -1.2610059 128.0 +6.5851235 -2.0354342 -1.2457949 128.0 +6.9774837 -2.2036784 -1.3249654 128.0 +6.2078624 -2.0026295 -1.1768872 128.0 +6.1188917 -2.0154681 -1.1618594 128.0 +5.9852715 -2.0122566 -1.1380349 128.0 +5.8844724 -2.0186455 -1.1206248 128.0 +5.7903185 -2.0261467 -1.1044974 128.0 +5.7000012 -2.0338907 -1.0891032 128.0 +5.5331287 -2.0127165 -1.0584979 128.0 +5.503161 -2.040138 -1.0550159 128.0 +5.3801789 -2.0321901 -1.0330241 128.0 +5.3419175 -2.0552816 -1.0278927 128.0 +5.2367568 -2.0518055 -1.0093828 128.0 +5.191196 -2.0707889 -1.0027853 128.0 +5.2057185 -2.1136954 -1.0082833 128.0 +5.2389889 -2.1647401 -1.0176299 128.0 +5.3307343 -2.2410316 -1.0388886 128.0 +5.1523714 -2.2033606 -1.0055343 128.0 +5.0576181 -2.1996524 -0.98904043 128.0 +5.0557141 -2.2358119 -0.99142289 128.0 +5.141428 -2.3115292 -1.0117654 128.0 +5.145925 -2.3516121 -1.0156139 128.0 +5.1313992 -2.3831425 -1.0156139 128.0 +5.0988984 -2.4061937 -1.0119486 128.0 +5.1008811 -2.4455082 -1.0154306 128.0 +5.0504255 -2.4595463 -1.0081 128.0 +4.9312572 -2.4390676 -0.98647475 128.0 +5.0593958 -2.5411904 -1.0163469 128.0 +4.957881 -2.528424 -0.99838698 128.0 +4.8619547 -2.517221 -0.98152661 128.0 +4.8359752 -2.5415187 -0.97932738 128.0 +4.916573 -2.6224923 -0.99966985 128.0 +4.9021182 -2.6535463 -1.0000364 128.0 +4.8624787 -2.6707985 -0.99508822 128.0 +4.9215703 -2.7426908 -1.0112156 128.0 +4.8396077 -2.7360725 -0.99728739 128.0 +4.8491654 -2.780875 -1.0029685 128.0 +4.7555289 -2.7660973 -0.98647475 128.0 +4.7452412 -2.7992201 -0.98794085 128.0 +4.7726908 -2.8550277 -0.9976539 128.0 +4.7710533 -2.8939443 -1.0011359 128.0 +4.6954246 -2.887635 -0.98849064 128.0 +4.7276731 -2.9475939 -0.99948657 128.0 +4.6804113 -2.9581664 -0.99307227 128.0 +4.6572056 -2.9836478 -0.99197268 128.0 +4.6734409 -3.034651 -0.99966985 128.0 +4.7056489 -3.0967722 -1.0110322 128.0 +4.5695992 -3.0475957 -0.98482537 128.0 +4.5214901 -3.0557625 -0.97822779 128.0 +4.5213118 -3.0962224 -0.98244292 128.0 +4.5385761 -3.1491222 -0.99068981 128.0 +4.5111251 -3.1712582 -0.98885721 128.0 +4.4443355 -3.1652348 -0.97804457 128.0 +4.4750586 -3.2286785 -0.98959023 128.0 +4.4861188 -3.2786963 -0.9967376 128.0 +4.4493232 -3.2938788 -0.99288905 128.0 +4.4274554 -3.3199379 -0.99252248 128.0 +4.4414496 -3.3732007 -1.0005862 128.0 +4.4604106 -3.4309545 -1.0099326 128.0 +4.4392748 -3.4582584 -1.0099326 128.0 +4.3955884 -3.4677761 -1.0046179 128.0 +4.327374 -3.4572546 -0.99343884 128.0 +4.3450594 -3.5152731 -1.0027853 128.0 +4.3370972 -3.5530806 -1.0060841 128.0 +4.3106742 -3.57586 -1.0049845 128.0 +4.3165054 -3.6256347 -1.0117654 128.0 +4.3503461 -3.6998141 -1.0255102 128.0 +4.2821183 -3.6873116 -1.014331 128.0 +4.2482972 -3.7038271 -1.011582 128.0 +4.2218056 -3.726572 -1.0106658 128.0 +4.2193861 -3.7707467 -1.0157971 128.0 +4.1859632 -3.7873325 -1.0132314 128.0 +4.1901946 -3.8381763 -1.0201955 128.0 +3.5963542 -3.3351116 -0.87523282 128.0 +3.5564704 -3.3389499 -0.87028468 128.0 +3.5295024 -3.3546145 -0.8686353 128.0 +3.5109777 -3.3782525 -0.86918509 128.0 +3.5183532 -3.4271674 -0.87651569 128.0 +4.0131812 -3.9573658 -1.011582 128.0 +4.0055223 -3.9985831 -1.0159804 128.0 +3.9816036 -4.0237842 -1.0161637 128.0 +4.0131903 -4.105782 -1.0311915 128.0 +3.9797275 -4.1218433 -1.0289923 128.0 +3.9224706 -4.1127515 -1.0203788 128.0 +3.9153633 -4.1560602 -1.025327 128.0 +3.9205971 -4.2131085 -1.0337571 128.0 +3.8494303 -4.1878734 -1.0212951 128.0 +2.4695427 -2.7201879 -0.64578491 128.0 +2.455431 -2.7382169 -0.64651799 128.0 +2.4281533 -2.7414582 -0.64358574 128.0 +2.400281 -2.7437284 -0.64047027 128.0 +2.4142554 -2.794106 -0.64926696 128.0 +3.7884128 -4.438879 -1.0487849 128.0 +3.6704955 -4.3545599 -1.022578 128.0 +3.621063 -4.349802 -1.0159804 128.0 +3.6411321 -4.4288888 -1.0297253 128.0 +3.6213248 -4.4603047 -1.0319245 128.0 +3.5877385 -4.4747715 -1.0300919 128.0 +3.5687582 -4.5074906 -1.0326575 128.0 +3.585238 -4.5858364 -1.0460359 128.0 +3.5480206 -4.596077 -1.0432869 128.0 +3.4845896 -4.5716343 -1.0324743 128.0 +3.4458315 -4.5787916 -1.0291755 128.0 +3.403013 -4.580122 -1.0245938 128.0 +3.3818238 -4.6104283 -1.026793 128.0 +3.329253 -4.597652 -1.0190959 128.0 +3.2901168 -4.6027985 -1.0156139 128.0 +3.2595453 -4.6196871 -1.0148808 128.0 +5.122395 -7.3548489 -1.6317511 128.0 +3.136337 -4.5629368 -0.99307227 128.0 +3.0994494 -4.5690789 -0.99014002 128.0 +3.0866697 -4.6108832 -0.99527144 128.0 +3.0745769 -4.6543422 -1.0007694 128.0 +4.8084779 -7.3767519 -1.6024287 128.0 +4.7572751 -7.3970227 -1.6004127 128.0 +4.709691 -7.4227533 -1.5996797 128.0 +4.6635356 -7.4506783 -1.5994965 128.0 +4.6259952 -7.4925365 -1.6024287 128.0 +4.6535692 -7.6416831 -1.6288189 128.0 +2.8172238 -4.691052 -0.98097676 128.0 +4.4968176 -7.5924869 -1.6059108 128.0 +4.4521294 -7.6233315 -1.6066438 128.0 +4.4106665 -7.6598768 -1.6086597 128.0 +4.3611565 -7.6825213 -1.6077434 128.0 +4.3134551 -7.7082782 -1.6075602 128.0 +4.2618036 -7.7268529 -1.6059108 128.0 +4.2049212 -7.7355838 -1.6022455 128.0 +4.1485572 -7.7447748 -1.5987633 128.0 +4.115643 -7.797904 -1.6046278 128.0 +4.0327945 -7.7558527 -1.5905164 128.0 +3.9891634 -7.7883258 -1.5921658 128.0 +3.9426286 -7.8152895 -1.5927156 128.0 +3.8959129 -7.8419747 -1.5932654 128.0 +3.8593864 -7.8895745 -1.5982136 128.0 +3.8104777 -7.912221 -1.5980303 128.0 +3.7563827 -7.9239049 -1.5956479 128.0 +3.6935585 -7.9165154 -1.5894169 128.0 +3.6424527 -7.9336696 -1.5883173 128.0 +3.6034174 -7.9773712 -1.5927156 128.0 +3.5544014 -7.999331 -1.5927156 128.0 +3.5131257 -8.0390053 -1.5963809 128.0 +3.4575224 -8.0459595 -1.5934488 128.0 +3.3981402 -8.043479 -1.5886838 128.0 +3.3434436 -8.0514679 -1.5861181 128.0 +3.2898915 -8.0618191 -1.5841022 128.0 +3.2410948 -8.0836782 -1.5844687 128.0 +3.1925142 -8.1061573 -1.5850185 128.0 +3.1423609 -8.1246767 -1.5848353 128.0 +3.0907047 -8.1392097 -1.5839189 128.0 +3.0228493 -8.1101217 -1.5743891 128.0 +2.9875517 -8.1682158 -1.5822695 128.0 +2.961616 -8.2539387 -1.5956479 128.0 +1.1178461 -3.1773336 -0.58878952 128.0 +1.0983293 -3.1841328 -0.58878952 128.0 +1.0841255 -3.2066431 -0.591905 128.0 +1.0767994 -3.2505612 -0.59923559 128.0 +1.0777764 -3.3216245 -0.6118809 128.0 +1.071668 -3.3731456 -0.62067765 128.0 +2.5927944 -8.3359461 -1.5883173 128.0 +2.5358722 -8.3328886 -1.5846519 128.0 +0.96452188 -3.2415473 -0.5913552 128.0 +0.91302484 -3.1388552 -0.57027972 128.0 +0.89563024 -3.1510174 -0.57156259 128.0 +0.89022255 -3.2066555 -0.58127564 128.0 +2.1635561 -7.980742 -1.5023659 128.0 +2.1110263 -7.9805622 -1.4998002 128.0 +2.0617731 -7.992413 -1.499617 128.0 +0.84458572 -3.3600564 -0.60674948 128.0 +0.85436058 -3.4893034 -0.63057393 128.0 +1.9047318 -7.9888468 -1.4919199 128.0 +1.8545665 -7.9955955 -1.4910035 128.0 +1.8069855 -8.0135374 -1.4922863 128.0 +1.7588334 -8.0292749 -1.4932027 128.0 +1.7074885 -8.0303011 -1.4913701 128.0 +1.6510336 -8.0059662 -1.4847726 128.0 +1.6030351 -8.0217295 -1.4858721 128.0 +1.5466871 -7.9947386 -1.4789081 128.0 +1.4914545 -7.9712248 -1.472677 128.0 +1.444265 -7.9898996 -1.4745097 128.0 +1.3962265 -8.0044222 -1.4756093 128.0 +1.3480642 -8.0186548 -1.4767089 128.0 +1.3011935 -8.0413322 -1.4794579 128.0 +1.247748 -8.0229378 -1.4745097 128.0 +1.1980612 -8.0275259 -1.4739599 128.0 +1.1561598 -8.0863028 -1.483673 128.0 +1.1117167 -8.1312313 -1.4908203 128.0 +1.0721097 -8.2168579 -1.5056647 128.0 +1.0316145 -8.303277 -1.5206925 128.0 +0.9996658 -8.4705372 -1.5509312 128.0 +0.95269924 -8.521452 -1.5593615 128.0 +0.89967173 -8.5202942 -1.5580785 128.0 +0.8457216 -8.5090237 -1.554963 128.0 +0.79258257 -8.5042648 -1.5531304 128.0 +0.74192125 -8.5265961 -1.5564291 128.0 +0.69149107 -8.5545044 -1.5608275 128.0 +0.64030689 -8.5762329 -1.5641263 128.0 +0.58679819 -8.5672503 -1.5617439 128.0 +0.53464794 -8.5775576 -1.5630267 128.0 +0.48189658 -8.5787134 -1.5626602 128.0 +0.42880711 -8.5726728 -1.5610108 128.0 +0.37723327 -8.5987129 -1.5654092 128.0 +0.3239831 -8.5880947 -1.5630267 128.0 +0.27128142 -8.589921 -1.5630267 128.0 +0.21859461 -8.5924072 -1.56321 128.0 +0.16567831 -8.5837574 -1.5613773 128.0 +0.11300623 -8.5846128 -1.5613773 128.0 +0.060281236 -8.5782633 -1.5600945 128.0 +0.007638413 -8.5715904 -1.5588117 128.0 +-0.045073543 -8.5940857 -1.5630267 128.0 +-0.097771592 -8.5906982 -1.5624769 128.0 +-0.15079039 -8.6076288 -1.5657756 128.0 +-0.20253561 -8.5613337 -1.5573455 128.0 +-0.25643712 -8.6061134 -1.565959 128.0 +-0.30867422 -8.5886593 -1.5630267 128.0 +-0.3599636 -8.5532084 -1.5567957 128.0 +-0.41177589 -8.5370922 -1.55423 128.0 +-0.4636707 -8.5255699 -1.5525806 128.0 +-0.51716113 -8.5421896 -1.5562459 128.0 +-0.57178825 -8.5722065 -1.5624769 128.0 +-0.62587494 -8.5891256 -1.5663254 128.0 +-0.67995846 -8.6027641 -1.5696243 128.0 +-0.72705829 -8.5318232 -1.5571622 128.0 +-0.78189909 -8.5546131 -1.5622936 128.0 +-0.8354243 -8.5604172 -1.5643096 128.0 +-0.8884415 -8.5600185 -1.5652258 128.0 +-0.94470841 -8.5886078 -1.5716401 128.0 +-0.99444008 -8.5572605 -1.5668752 128.0 +-1.041912 -8.5100145 -1.5591781 128.0 +-1.0958645 -8.5171118 -1.5617439 128.0 +-1.1478412 -8.5082788 -1.5613773 128.0 +-1.2009869 -8.5078897 -1.5626602 128.0 +-1.2530245 -8.4993877 -1.5624769 128.0 +-1.311124 -8.530406 -1.5698075 128.0 +-1.362354 -8.5154047 -1.5685247 128.0 +-1.4121598 -8.4923391 -1.5657756 128.0 +-1.4700918 -8.5174208 -1.5721899 128.0 +-1.5150559 -8.4675961 -1.5644928 128.0 +-1.5705643 -8.4774733 -1.5681581 128.0 +-1.6231064 -8.4705734 -1.5687079 128.0 +-1.6792496 -8.4816704 -1.5727397 128.0 +-1.7273247 -8.4519434 -1.5690745 128.0 +-1.7791523 -8.441186 -1.5690745 128.0 +-1.8357108 -8.4522057 -1.5732895 128.0 +-1.8941872 -8.4705238 -1.5789708 128.0 +-1.9417182 -8.4395809 -1.5753055 128.0 +-1.9986696 -8.4495115 -1.5795206 128.0 +-2.0497808 -8.4342232 -1.5789708 128.0 +-2.1012557 -8.4205332 -1.5787874 128.0 +-2.1543465 -8.4131956 -1.5798872 128.0 +-2.213418 -8.4283438 -1.5853851 128.0 +-2.2643254 -8.4117556 -1.5848353 128.0 +-2.3161576 -8.3986511 -1.5850185 128.0 +-2.3684485 -8.3871202 -1.5855683 128.0 +-2.4185016 -8.3677073 -1.5846519 128.0 +-2.4678485 -8.3461113 -1.5833691 128.0 +-2.5215733 -8.3392811 -1.5850185 128.0 +-2.5770483 -8.3377399 -1.5877675 128.0 +-2.6246071 -8.3105211 -1.5855683 128.0 +-2.6725326 -8.2849045 -1.5837357 128.0 +-2.7199352 -8.2580795 -1.5817198 128.0 +-2.7749395 -8.2542801 -1.5842855 128.0 +-2.8386106 -8.2752237 -1.5917994 128.0 +-2.8734262 -8.212183 -1.5828193 128.0 +-2.9207883 -8.1860638 -1.58117 128.0 +-2.9800339 -8.1929321 -1.5861181 128.0 +-3.0415232 -8.2049122 -1.5921658 128.0 +-3.08799 -8.1759787 -1.59015 128.0 +-1.438697 -3.7390056 -0.70772856 128.0 +-1.4712932 -3.7548215 -0.7126767 128.0 +-3.2463357 -8.1387558 -1.594365 128.0 +-3.2984319 -8.1241484 -1.5954646 128.0 +-3.3459663 -8.0983047 -1.594365 128.0 +-3.4024503 -8.093935 -1.5976638 128.0 +-3.4369771 -8.037653 -1.5905164 128.0 +-3.4925029 -8.0308371 -1.5934488 128.0 +-3.542906 -8.0119534 -1.5939986 128.0 +-3.5940149 -7.9945474 -1.5949148 128.0 +-1.4748893 -3.2270715 -0.62232703 128.0 +-1.4996307 -3.2286606 -0.6245262 128.0 +-1.5508741 -3.2860787 -0.63827109 128.0 +-1.6338972 -3.4077003 -0.66539431 128.0 +-1.6534846 -3.3949592 -0.66484451 128.0 +-1.6703626 -3.3768189 -0.66319513 128.0 +-1.688404 -3.3612351 -0.66209555 128.0 +-1.7148014 -3.3621972 -0.664478 128.0 +-1.7394665 -3.3594694 -0.66612738 128.0 +-1.7682779 -3.3643973 -0.66942614 128.0 +-4.1444445 -7.7703815 -1.602612 128.0 +-4.1929803 -7.7465343 -1.6029785 128.0 +-4.2579422 -7.752543 -1.6097593 128.0 +-4.2925115 -7.7030845 -1.6048112 128.0 +-4.356627 -7.7065544 -1.6112254 128.0 +-4.4155674 -7.7001452 -1.6156238 128.0 +-4.4800286 -7.7026501 -1.622038 128.0 +-4.5297041 -7.6792498 -1.6229544 128.0 +-4.571692 -7.6428747 -1.6211218 128.0 +-4.6047378 -7.5919843 -1.6161736 128.0 +-4.655869 -7.5711241 -1.617823 128.0 +-4.7079573 -7.5515904 -1.6198388 128.0 +-2.0039556 -3.1704159 -0.6600796 128.0 +-2.0233712 -3.1580601 -0.6600796 128.0 +-2.0512757 -3.158778 -0.66301185 128.0 +-4.8799767 -7.4157095 -1.6158071 128.0 +-4.928659 -7.3905344 -1.6169066 128.0 +-4.9827204 -7.3731861 -1.6198388 128.0 +-5.0356426 -7.3538303 -1.6224046 128.0 +-5.0840325 -7.3276401 -1.6235042 128.0 +-5.1503797 -7.326869 -1.6304682 128.0 +-5.1940989 -7.2935276 -1.6301017 128.0 +-5.2261009 -7.2439799 -1.6260699 128.0 +-5.2646503 -7.2038393 -1.6242373 128.0 +-5.3099232 -7.1729808 -1.6246037 128.0 +-5.3732963 -7.1662207 -1.6306515 128.0 +-5.418355 -7.1346817 -1.631018 128.0 +-5.4686232 -7.1098728 -1.633034 128.0 +-5.5145617 -7.0792866 -1.633767 128.0 +-5.5621576 -7.0507193 -1.6350499 128.0 +-5.5924306 -7.0003281 -1.6312013 128.0 +-5.648262 -6.9819322 -1.6350499 128.0 +-5.7028317 -6.9615932 -1.6385319 128.0 +-5.7523432 -6.9347939 -1.6405479 128.0 +-5.7815094 -6.8835588 -1.6366993 128.0 +-5.843379 -6.8711705 -1.6423805 128.0 +-5.8770914 -6.8255019 -1.6399981 128.0 +-5.9363027 -6.8093204 -1.6449462 128.0 +-5.9636607 -6.7565522 -1.6409143 128.0 +-6.0187612 -6.7352271 -1.644763 128.0 +-6.0481038 -6.6850476 -1.6414641 128.0 +-6.0876803 -6.6463614 -1.6410977 128.0 +-6.1363678 -6.6175332 -1.6432968 128.0 +-6.2051148 -6.6098604 -1.6509939 128.0 +-6.2516503 -6.5780759 -1.6526433 128.0 +-6.2755375 -6.5225897 -1.648245 128.0 +-6.3257294 -6.494525 -1.6509939 128.0 +-6.3840952 -6.4744892 -1.6559421 128.0 +-6.4320354 -6.4435449 -1.6581413 128.0 +-6.4700541 -6.4025745 -1.6577748 128.0 +-6.5148416 -6.3682518 -1.6592408 128.0 +-6.5431862 -6.3179145 -1.6564919 128.0 +-6.5839629 -6.2796831 -1.6570417 128.0 +-6.6388268 -6.2546721 -1.6612568 128.0 +-6.6526127 -6.1910477 -1.6550258 128.0 +-6.7121863 -6.1700711 -1.6605238 128.0 +-6.7622914 -6.1400042 -1.6636392 128.0 +-6.80862 -6.1062727 -1.6658385 128.0 +-6.8437519 -6.0624251 -1.6652886 128.0 +-6.8993168 -6.0365028 -1.6698703 128.0 +-6.9406891 -5.9979124 -1.6709698 128.0 +-6.9878287 -5.9641476 -1.6735356 128.0 +-7.0182796 -5.9160895 -1.6720694 128.0 +-7.0514259 -5.870399 -1.6713364 128.0 +-7.0880728 -5.8276463 -1.6715196 128.0 +-7.1191182 -5.7803268 -1.6704201 128.0 +-7.176693 -5.7543707 -1.6757348 128.0 +-7.2118659 -5.710227 -1.6757348 128.0 +-7.2351508 -5.656785 -1.6729858 128.0 +-7.2588305 -5.6038737 -1.6704201 128.0 +-7.3087144 -5.5711489 -1.6740854 128.0 +-7.3576841 -5.5374308 -1.6775674 128.0 +-7.4191399 -5.5127029 -1.6839817 128.0 +-7.4092302 -5.4350939 -1.673902 128.0 +-7.4734912 -5.4120178 -1.6810495 128.0 +-7.5049586 -5.3649158 -1.6806829 128.0 +-7.5425553 -5.3221664 -1.6817825 128.0 +-7.5992694 -5.2926421 -1.6872804 128.0 +-7.6316013 -5.245914 -1.6872804 128.0 +-7.5953116 -5.1526265 -1.6718862 128.0 +-7.6357703 -5.1119418 -1.673902 128.0 +-7.7014418 -5.0877533 -1.6815993 128.0 +-7.7366323 -5.043087 -1.6825155 128.0 +-7.7839665 -5.0061569 -1.6861808 128.0 +-6.526298 -4.1408386 -1.4017534 128.0 +-6.5099196 -4.074635 -1.3925902 128.0 +-7.8296266 -4.8341408 -1.6762846 128.0 +-7.8297548 -4.7681108 -1.6698703 128.0 +-7.8605494 -4.7209911 -1.6702368 128.0 +-7.9392719 -4.70223 -1.6810495 128.0 +-8.0095701 -4.6777215 -1.6900294 128.0 +-8.0270462 -4.6221104 -1.687647 128.0 +-8.0706444 -4.5815063 -1.6909457 128.0 +-8.0943146 -4.5294991 -1.6900294 128.0 +-8.1322842 -4.485446 -1.6922286 128.0 +-8.1587896 -4.4349933 -1.6920453 128.0 +-8.1676512 -4.3750997 -1.6881968 128.0 +-7.671844 -4.0491023 -1.5780544 128.0 +-8.1683941 -4.2473273 -1.6772009 128.0 +-8.1908016 -4.195334 -1.6764678 128.0 +-6.926198 -3.4940519 -1.4070681 128.0 +-6.8929234 -3.4243672 -1.3957057 128.0 +-6.9102731 -3.3802805 -1.3949726 128.0 +-6.9264555 -3.3356833 -1.3940563 128.0 +-6.9698877 -3.3040705 -1.3988212 128.0 +-7.0212097 -3.2757909 -1.4052354 128.0 +-8.2928104 -3.8073592 -1.6619898 128.0 +-8.3079529 -3.7527611 -1.6603404 128.0 +-6.5431023 -2.9072642 -1.295643 128.0 +-8.3209515 -3.636354 -1.6537429 128.0 +-8.3223333 -3.5763013 -1.6495278 128.0 +-8.3540821 -3.5293779 -1.6515437 128.0 +-8.382843 -3.4810681 -1.6530099 128.0 +-8.3967638 -3.4265947 -1.6515437 128.0 +-8.4185429 -3.3753746 -1.651727 128.0 +-8.4573889 -3.3308613 -1.6553923 128.0 +-8.474 -3.2774866 -1.6546593 128.0 +-8.4939508 -3.2254293 -1.6546593 128.0 +-8.5356894 -3.1814919 -1.6590576 128.0 +-7.6188927 -2.7866063 -1.4732268 128.0 +-7.6423244 -2.7421296 -1.4745097 128.0 +-8.633605 -3.0381989 -1.6671213 128.0 +-8.6604481 -2.9880531 -1.6687707 128.0 +-8.668376 -2.9313927 -1.6667547 128.0 +-8.6712694 -2.8732014 -1.6638225 128.0 +-8.7186565 -2.8296537 -1.669687 128.0 +-8.7686462 -2.7865257 -1.6761012 128.0 +-8.8015366 -2.7376342 -1.6792167 128.0 +-8.8360376 -2.6890163 -1.6826988 128.0 +-8.8834629 -2.6440043 -1.6887466 128.0 +-8.9221735 -2.5960393 -1.6931449 128.0 +-9.008852 -2.5614119 -1.7068897 128.0 +-9.0679703 -2.5181882 -1.71532 128.0 +-9.1117153 -2.4702187 -1.7208179 128.0 +-9.1362047 -2.4167781 -1.7226506 128.0 +-9.1879854 -2.3702526 -1.729798 128.0 +-9.2633724 -2.3291762 -1.741527 128.0 +-9.3070889 -2.2795444 -1.7472081 128.0 +-9.3467197 -2.2285514 -1.7521563 128.0 +-9.365963 -2.172492 -1.7532558 128.0 +-9.3915844 -2.1177945 -1.7556384 128.0 +-9.2517166 -2.026675 -1.7264992 128.0 +-9.425519 -2.0042264 -1.7572877 128.0 +-9.6215334 -1.9842877 -1.7922913 128.0 +-9.7038994 -1.9392802 -1.8056697 128.0 +-10.126773 -1.9592665 -1.8837407 128.0 +-10.328962 -1.9327197 -1.9198438 128.0 +-10.544744 -1.9062128 -1.9585128 128.0 +-10.502977 -1.8321819 -1.9484332 128.0 +-10.527595 -1.7699848 -1.9509989 128.0 +-10.551843 -1.7075546 -1.9535646 128.0 +-10.575721 -1.6448932 -1.9561303 128.0 +-10.539917 -1.5731484 -1.9475169 128.0 +-10.571754 -1.5116484 -1.9517319 128.0 +-10.574986 -1.4459536 -1.9506323 128.0 +-10.558314 -1.3777313 -1.9458674 128.0 +-10.621201 -1.319711 -1.9561303 128.0 +-10.592976 -1.2502509 -1.9493495 128.0 +-10.605332 -1.1857765 -1.9502659 128.0 +-10.626096 -1.1221268 -1.9528315 128.0 +-10.632781 -1.0569053 -1.9528315 128.0 +-10.639066 -0.99164385 -1.9528315 128.0 +-10.649847 -0.9267714 -1.9537479 128.0 +-10.702366 -0.86521184 -1.9625446 128.0 +-10.642772 -0.79469335 -1.9504491 128.0 +-10.682755 -0.73179555 -1.9570466 128.0 +-10.671346 -0.66525435 -1.9541144 128.0 +-10.695838 -0.60092247 -1.957963 128.0 +-10.685578 -0.53459454 -1.9553972 128.0 +-10.674908 -0.46841514 -1.9528315 128.0 +-10.712946 -0.40424213 -1.9594291 128.0 +-10.703434 -0.33812818 -1.9572299 128.0 +-9.9108477 0.72838283 -1.9373915 128.0 +-9.9668083 0.79401702 -1.9494871 128.0 +-9.9656572 0.85549325 -1.9502676 128.0 +-9.9270144 0.91356552 -1.9436344 128.0 +-9.9212217 0.97445935 -1.9436344 128.0 +-9.9082279 1.0346026 -1.9422688 128.0 +-9.9143658 1.0967823 -1.944805 128.0 +-9.8782253 1.1541771 -1.9389523 128.0 +-9.8475952 1.2118891 -1.9342701 128.0 +-9.8672085 1.2758147 -1.9397327 128.0 +-9.8553066 1.3358073 -1.9389523 128.0 +-9.8362436 1.3947374 -1.9368063 128.0 +-9.8459339 1.4577966 -1.940513 128.0 +-9.8561897 1.5211769 -1.9444149 128.0 +-9.8205252 1.577422 -1.9391474 128.0 +-9.8184004 1.6389427 -1.940708 128.0 +-9.8081589 1.6991564 -1.940708 128.0 +-9.8004446 1.7598265 -1.9412934 128.0 +-9.7952471 1.821004 -1.9424639 128.0 +-9.7838898 1.8810723 -1.9424639 128.0 +-9.7721634 1.9410697 -1.9424639 128.0 +-9.73701 1.9962637 -1.9377817 128.0 +-9.7121038 2.0533326 -1.9352455 128.0 +-9.6974058 2.1124685 -1.9348553 128.0 +-9.6785192 2.1706424 -1.9336848 128.0 +-9.6822195 2.233959 -1.9371965 128.0 +-9.6587877 2.2910612 -1.9352455 128.0 +-9.6483593 2.3512125 -1.9360259 128.0 +-9.6242371 2.4079878 -1.934075 128.0 +-9.5912313 2.4623597 -1.9303683 128.0 +-9.5579224 2.5164173 -1.9266616 128.0 +-9.5555582 2.5785952 -1.9293928 128.0 +-9.5433369 2.6382241 -1.9301732 128.0 +-9.5458431 2.7020762 -1.934075 128.0 +-9.4932871 2.7502227 -1.9266616 128.0 +-9.4988012 2.8151116 -1.9313438 128.0 +-9.481349 2.8733423 -1.9313438 128.0 +-9.4391823 2.9239163 -1.9262714 128.0 +-9.4378948 2.9871082 -1.929783 128.0 +-9.4352531 3.0500922 -1.9330995 128.0 +-9.3995962 3.1023932 -1.929588 128.0 +-9.3339119 3.1443486 -1.9198334 128.0 +-9.3441229 3.2117665 -1.9260763 128.0 +-9.3075809 3.2631977 -1.9225646 128.0 +-9.3150883 3.3301549 -1.9284174 128.0 +-9.3110657 3.3932953 -1.931929 128.0 +-9.302021 3.4548037 -1.9344652 128.0 +-9.2806482 3.5118146 -1.9344652 128.0 +-9.2790575 3.5764561 -1.9387572 128.0 +-9.2231598 3.6200614 -1.9315388 128.0 +-9.1643448 3.6620238 -1.9237353 128.0 +-9.2171059 3.7488649 -1.9399277 128.0 +-9.1649313 3.7933433 -1.9336848 128.0 +-9.1685991 3.8609293 -1.9395375 128.0 +-9.1357212 3.9132512 -1.9375867 128.0 +-9.0782709 3.9547365 -1.9303683 128.0 +-9.045764 4.0067892 -1.9286125 128.0 +-9.0201139 4.0618148 -1.9284174 128.0 +-8.946866 4.095037 -1.9178826 128.0 +-8.9028969 4.1411681 -1.9137856 128.0 +-8.918107 4.2150006 -1.9227598 128.0 +-8.8461037 4.2475605 -1.9126151 128.0 +-8.835741 4.3095002 -1.9161267 128.0 +-8.8390121 4.3784394 -1.9227598 128.0 +-8.8216171 4.4374418 -1.9249058 128.0 +-8.7330847 4.4602523 -1.9112494 128.0 +-8.7725935 4.5485234 -1.9262714 128.0 +-8.6915789 4.5743947 -1.9143709 128.0 +-8.6841087 4.6387324 -1.9190531 128.0 +-8.6744509 4.7022147 -1.9233451 128.0 +-8.6694956 4.7685895 -1.9288076 128.0 +-8.5604286 4.777236 -1.9106642 128.0 +-8.5514374 4.8412714 -1.9153464 128.0 +-8.4943562 4.8780179 -1.9091034 128.0 +-8.4761295 4.9369588 -1.9118347 128.0 +-8.4304781 4.9798937 -1.908323 128.0 +-8.4132252 5.0395942 -1.9114445 128.0 +-8.3989086 5.1013064 -1.9153464 128.0 +-8.3599339 5.1481161 -1.9135906 128.0 +-8.3190374 5.1936002 -1.9114445 128.0 +-8.2803831 5.2403502 -1.9098839 128.0 +-8.2406445 5.2862921 -1.908128 128.0 +-8.2170973 5.342638 -1.910274 128.0 +-8.1751528 5.3870196 -1.908128 128.0 +-8.1313419 5.4299979 -1.9055918 128.0 +-8.0865002 5.4720917 -1.9028605 128.0 +-8.146596 5.5859561 -1.9254911 128.0 +-8.0364599 5.5832267 -1.9071525 128.0 +-8.012476 5.6397724 -1.9096887 128.0 +-7.9976821 5.7030683 -1.9145659 128.0 +-7.9720778 5.7589269 -1.9169071 128.0 +-7.9334259 5.8054171 -1.9161267 128.0 +-7.9205031 5.8709264 -1.9217843 128.0 +-7.890605 5.9241266 -1.9233451 128.0 +-7.893919 6.0027127 -1.9332947 128.0 +-7.8142047 6.0181165 -1.9225646 128.0 +-7.8080626 6.0900817 -1.9303683 128.0 +-7.7705474 6.1378765 -1.9303683 128.0 +-7.722784 6.1774745 -1.9278321 128.0 +-7.7030239 6.2395625 -1.9325143 128.0 +-7.6532197 6.2773786 -1.929588 128.0 +-7.6364369 6.3423948 -1.9352455 128.0 +-7.6048822 6.3954453 -1.9371965 128.0 +-7.525177 6.4076467 -1.9266616 128.0 +-7.5280561 6.4902086 -1.9377817 128.0 +-7.4947405 6.5420833 -1.9395375 128.0 +-7.4243293 6.5613146 -1.9315388 128.0 +-7.3846612 6.6073999 -1.931734 128.0 +-7.4035788 6.7065878 -1.9477314 128.0 +-7.3319325 6.7240434 -1.9395375 128.0 +-7.3005981 6.7782483 -1.9422688 128.0 +-7.2624431 6.8262753 -1.9432442 128.0 +-7.210475 6.8612418 -1.940513 128.0 +-7.1710644 6.9080772 -1.9412934 128.0 +-7.1222234 6.9457846 -1.9395375 128.0 +-7.0857515 6.9955573 -1.9412934 128.0 +-7.0572605 7.0534644 -1.9453902 128.0 +-7.0179844 7.1008201 -1.9465607 128.0 +-6.9831886 7.1528726 -1.9490969 128.0 +-6.9446139 7.2012343 -1.9506577 128.0 +-6.9104433 7.2543635 -1.9535841 128.0 +-6.8826017 7.3144879 -1.9584613 128.0 +-6.8369236 7.3558626 -1.9582663 128.0 +-6.7896705 7.3955069 -1.9576809 128.0 +-6.7533875 7.4472008 -1.9604121 128.0 +-6.6944795 7.473886 -1.9565104 128.0 +-6.6484947 7.514822 -1.9565104 128.0 +-6.6112933 7.5658154 -1.9592416 128.0 +-6.5826864 7.6270308 -1.9647042 128.0 +-6.5433979 7.6762357 -1.9670453 128.0 +-6.4980688 7.7184916 -1.9676305 128.0 +-6.446825 7.7536926 -1.96646 128.0 +-6.4041066 7.7991681 -1.9680207 128.0 +-6.3592196 7.8421254 -1.9689962 128.0 +-6.318337 7.8901849 -1.9713373 128.0 +-6.2910938 7.9557333 -1.9781654 128.0 +-6.2512131 8.0057821 -1.9810917 128.0 +-6.187602 8.0253448 -1.9764096 128.0 +-6.1400251 8.0655012 -1.9769949 128.0 +-6.0939555 8.107729 -1.9781654 128.0 +-6.0546117 8.1591463 -1.9816771 128.0 +-6.0108089 8.2048464 -1.9838231 128.0 +-5.9609265 8.2423687 -1.9840181 128.0 +-5.9176469 8.2891674 -1.9865543 128.0 +-5.8711934 8.3317356 -1.9881151 128.0 +-5.813241 8.3579407 -1.9857739 128.0 +-5.7707276 8.4063911 -1.9888954 128.0 +-5.7267389 8.4530106 -1.9916266 128.0 +-5.6605935 8.4667892 -1.9865543 128.0 +-5.6339164 8.5398426 -1.9957236 128.0 +-5.5814104 8.5742512 -1.9957236 128.0 +-5.5255156 8.603385 -1.994553 128.0 +-5.4852185 8.657012 -1.9992352 128.0 +-5.4325166 8.6913376 -1.9994303 128.0 +-5.3883486 8.7395353 -2.0029418 128.0 +-5.3274894 8.7607002 -2.0002105 128.0 +-5.2781734 8.8007946 -2.0019665 128.0 +-5.2085986 8.8068438 -1.9959186 128.0 +-5.1717529 8.8682928 -2.0027468 128.0 +-5.1275048 8.917716 -2.0068438 128.0 +-5.072207 8.9481564 -2.0066485 128.0 +-5.0224681 8.9885292 -2.0087945 128.0 +-4.9525561 8.9925432 -2.0027468 128.0 +-4.9057059 9.0382786 -2.0062585 128.0 +-4.872354 9.109725 -2.0156229 128.0 +-4.8177376 9.1420527 -2.0162079 128.0 +-4.7597451 9.1679602 -2.0154276 128.0 +-4.7092061 9.2083454 -2.0179639 128.0 +-4.6565862 9.2449512 -2.0197196 128.0 +-4.6089225 9.2918015 -2.0238166 128.0 +-4.5436463 9.3031607 -2.0201099 128.0 +-4.4915767 9.3414726 -2.0224509 128.0 +-4.4211702 9.3413734 -2.0164032 128.0 +-4.3679094 9.3772163 -2.0183539 128.0 +-4.3258152 9.4377232 -2.0257676 128.0 +-4.2770958 9.4846525 -2.0302546 128.0 +-4.2200117 9.5134077 -2.0308399 128.0 +-4.1576381 9.5301323 -2.0288889 128.0 +-4.0928988 9.5410414 -2.0257676 128.0 +-4.0430427 9.5867615 -2.0302546 128.0 +-3.9743812 9.5878305 -2.0251822 128.0 +-3.9162164 9.6138535 -2.0255723 128.0 +-3.8604321 9.6458979 -2.0273283 128.0 +-3.8033257 9.67488 -2.0284986 128.0 +-3.7481275 9.7090149 -2.0308399 128.0 +-3.6919584 9.7410021 -2.0327907 128.0 +-3.6266496 9.7487631 -2.0296693 128.0 +-3.5613844 9.7560911 -2.0265479 128.0 +-3.509058 9.7989979 -2.0310349 128.0 +-3.4407444 9.7972088 -2.0261576 128.0 +-3.3786497 9.8125725 -2.024987 128.0 +-3.3343661 9.8805141 -2.0349367 128.0 +-3.2773712 9.9119625 -2.0372777 128.0 +-3.216491 9.9318857 -2.0372777 128.0 +-3.1581566 9.9598494 -2.0390337 128.0 +-3.1022155 9.9959011 -2.0425453 128.0 +-3.0388293 10.008178 -2.0411797 128.0 +-2.9734559 10.013473 -2.0384483 128.0 +-2.9179714 10.052251 -2.0427403 128.0 +-2.8551669 10.066192 -2.04196 128.0 +-2.7946568 10.088247 -2.0429354 128.0 +-2.7337275 10.108993 -2.0437157 128.0 +-2.6761506 10.142647 -2.0472274 128.0 +-2.6111789 10.148427 -2.0450814 128.0 +-2.5436141 10.143329 -2.0407894 128.0 +-2.4766755 10.139688 -2.0368876 128.0 +-2.4166806 10.164237 -2.0388386 128.0 +-2.3578031 10.194163 -2.04196 128.0 +-2.2960687 10.212266 -2.0427403 128.0 +-2.2381749 10.248201 -2.0472274 128.0 +-2.1770804 10.270377 -2.0489831 128.0 +-2.1080999 10.254721 -2.0431304 128.0 +-2.0516491 10.300167 -2.0497637 128.0 +-1.9774605 10.255741 -2.0382533 128.0 +-1.9153936 10.272503 -2.0392287 128.0 +-1.8535428 10.290819 -2.0405943 128.0 +-1.793889 10.322291 -2.0446913 128.0 +-1.7316521 10.339875 -2.0460567 128.0 +-1.6700467 10.361925 -2.048398 128.0 +-1.6059856 10.36907 -2.0478127 128.0 +-1.5463656 10.405892 -2.0532751 128.0 +-1.4884256 10.456939 -2.0616641 128.0 +-1.4167029 10.41048 -2.050544 128.0 +-1.3476254 10.379099 -2.0425453 128.0 +-1.2906467 10.441682 -2.0534704 128.0 +-1.2297519 10.47668 -2.0589328 128.0 +-1.1668524 10.4967 -2.0614691 128.0 +-1.0980263 10.461719 -2.0530801 128.0 +-1.0382427 10.513157 -2.0620542 128.0 +-0.97317392 10.51347 -2.0608838 128.0 +-0.90653867 10.494815 -2.0560064 128.0 +-0.84353608 10.517777 -2.0595181 128.0 +-0.77601999 10.482653 -2.0515194 128.0 +-0.71188396 10.490152 -2.0521047 128.0 +-0.64696157 10.485513 -2.0503488 128.0 +-0.57935441 10.430528 -2.0386434 128.0 +-0.51611537 10.44956 -2.041765 128.0 +-0.45241103 10.462329 -2.0437157 128.0 +-0.38885936 10.48255 -2.0472274 128.0 +-0.32465327 10.48866 -2.0480077 128.0 +-0.26053214 10.500259 -2.0499587 128.0 +-0.19575299 10.483028 -2.046252 128.0 +-0.13170692 10.506588 -2.050739 128.0 +-0.067237236 10.507198 -2.050739 128.0 +-0.0027644085 10.50349 -2.0499587 128.0 +0.061578222 10.485656 -2.046447 128.0 +0.1261179 10.501753 -2.0497637 128.0 +0.19085743 10.517451 -2.0530801 128.0 +0.25455049 10.481766 -2.046252 128.0 +0.31829184 10.46138 -2.0425453 128.0 +0.38402152 10.501375 -2.0509341 128.0 +0.45000216 10.535077 -2.0581524 128.0 +0.51089364 10.455709 -2.0429354 128.0 +0.57568687 10.464128 -2.0452764 128.0 +0.63958275 10.455504 -2.044301 128.0 +0.70478046 10.46704 -2.0474224 128.0 +0.76726371 10.439043 -2.0427403 128.0 +0.83247203 10.448804 -2.0456667 128.0 +0.89278907 10.399526 -2.0368876 128.0 +0.95577258 10.385062 -2.0351317 128.0 +1.0234115 10.419022 -2.0431304 128.0 +1.0853847 10.394011 -2.0394237 128.0 +1.1524874 10.417376 -2.0454717 128.0 +1.2187781 10.430566 -2.0495684 128.0 +1.2809572 10.408289 -2.0466421 128.0 +1.3461819 10.410933 -2.0487881 128.0 +1.4044993 10.361658 -2.0405943 128.0 +1.4617116 10.308176 -2.0316203 128.0 +1.5246464 10.297073 -2.03123 128.0 +1.5897456 10.300125 -2.0337663 128.0 +1.6521378 10.285335 -2.0327907 128.0 +1.7126307 10.259526 -2.0296693 128.0 +1.790795 10.336764 -2.0474224 128.0 +1.844126 10.269592 -2.0361073 128.0 +1.9036962 10.239763 -2.0324006 128.0 +1.9789047 10.292418 -2.0454717 128.0 +2.0469916 10.305094 -2.050544 128.0 +2.1007235 10.246222 -2.0411797 128.0 +2.1617267 10.224504 -2.0394237 128.0 +2.2258844 10.217755 -2.0407894 128.0 +2.2732906 10.135959 -2.026938 128.0 +2.3356614 10.122775 -2.027133 128.0 +2.4054298 10.140698 -2.0337663 128.0 +2.475738 10.159099 -2.0405943 128.0 +2.5451715 10.17226 -2.046447 128.0 +2.5999753 10.127003 -2.0403993 128.0 +2.6538203 10.079561 -2.0339613 128.0 +2.7347903 10.134104 -2.048593 128.0 +2.7692075 10.016932 -2.0279136 128.0 +2.8370318 10.022399 -2.0325956 128.0 +2.880455 9.9426298 -2.0197196 128.0 +2.9402926 9.9210072 -2.0189393 128.0 +3.0050952 9.9159193 -2.0216706 128.0 +3.0684943 9.9057255 -2.0234263 128.0 +3.1369147 9.9110222 -2.0284986 128.0 +3.1919343 9.8738565 -2.024792 128.0 +3.2552269 9.8624678 -2.0265479 128.0 +3.3106689 9.8274374 -2.0234263 128.0 +3.3833444 9.8431101 -2.0310349 128.0 +3.4264729 9.7731133 -2.0206952 128.0 +3.4903386 9.7629871 -2.0230362 128.0 +3.5538726 9.751523 -2.0251822 128.0 +3.611932 9.7249365 -2.0242066 128.0 +3.6680629 9.6934185 -2.0222559 128.0 +3.7271187 9.6698141 -2.0220606 128.0 +3.7892489 9.6540661 -2.0236216 128.0 +3.8425891 9.6160622 -2.0204999 128.0 +3.9066947 9.6050224 -2.0232313 128.0 +3.9614294 9.5709019 -2.0210853 128.0 +4.012085 9.5274343 -2.0169883 128.0 +4.074718 9.5125532 -2.0191343 128.0 +4.1251731 9.4693899 -2.0152326 128.0 +4.1847878 9.4474869 -2.0160129 128.0 +4.2551646 9.4493532 -2.0220606 128.0 +4.2967334 9.3873959 -2.0142572 128.0 +4.3335643 9.3163929 -2.0045025 128.0 +4.3914857 9.2914009 -2.0048928 128.0 +4.4403458 9.2474823 -2.0011861 128.0 +4.4888325 9.2033148 -1.9974793 128.0 +4.546525 9.1782351 -1.9980646 128.0 +4.6031966 9.151042 -1.9982598 128.0 +4.6534591 9.11127 -1.9957236 128.0 +4.7124381 9.0886402 -1.9970891 128.0 +4.7726855 9.0682325 -1.9990401 128.0 +4.8273125 9.0370474 -1.99865 128.0 +4.8906198 9.0219145 -2.0019665 128.0 +4.9260278 8.9556456 -1.9937726 128.0 +4.9923592 8.9458046 -1.9984548 128.0 +5.0403895 8.9030561 -1.9957236 128.0 +5.0880833 8.860055 -1.9929923 128.0 +5.1423521 8.8286676 -1.9929923 128.0 +5.1994205 8.8020153 -1.9941628 128.0 +5.2432489 8.7531204 -1.9902611 128.0 +5.2856545 8.702343 -1.9859691 128.0 +5.3204341 8.6396837 -1.9789457 128.0 +5.3790603 8.6160269 -1.9810917 128.0 +5.4208097 8.5654564 -1.9769949 128.0 +5.4684973 8.5246048 -1.975239 128.0 +5.5244431 8.496645 -1.9766047 128.0 +5.586729 8.4781475 -1.9803114 128.0 +5.6413689 8.4477863 -1.9812869 128.0 +5.6958461 8.4170732 -1.9822624 128.0 +5.7318525 8.3593187 -1.9767998 128.0 +5.7819171 8.3223801 -1.9764096 128.0 +5.82271 8.2723112 -1.972898 128.0 +5.8648152 8.2244511 -1.9699717 128.0 +5.9134459 8.1859255 -1.9693863 128.0 +5.9635625 8.1494865 -1.9693863 128.0 +6.0076132 8.1048632 -1.9674355 128.0 +6.0531082 8.0623589 -1.9660698 128.0 +6.1006827 8.0227242 -1.9654845 128.0 +6.1372252 7.968823 -1.9613876 128.0 +6.1775589 7.9201899 -1.9586564 128.0 +6.2284722 7.8852143 -1.9594368 128.0 +6.2687721 7.8368926 -1.9569006 128.0 +6.3229146 7.8059015 -1.9588515 128.0 +6.3221688 7.7078142 -1.9436344 128.0 +6.400054 7.7058434 -1.9531939 128.0 +6.4314318 7.6476645 -1.9483166 128.0 +6.4725127 7.6013379 -1.9465607 128.0 +6.5203128 7.5629659 -1.9469509 128.0 +6.5459538 7.4991732 -1.940708 128.0 +6.5957422 7.4632759 -1.9418787 128.0 +6.6459904 7.4277806 -1.9432442 128.0 +6.6749773 7.3686914 -1.938367 128.0 +6.6928825 7.2979627 -1.9303683 128.0 +6.7669024 7.2883806 -1.9389523 128.0 +6.8114953 7.2467222 -1.9389523 128.0 +6.8565087 7.205502 -1.9391474 128.0 +6.8937864 7.1562328 -1.9371965 128.0 +6.9272938 7.1032672 -1.9342701 128.0 +6.9624782 7.0522542 -1.931929 128.0 +7.0014586 7.0052385 -1.9307585 128.0 +7.0394263 6.9573212 -1.9293928 128.0 +7.0833869 6.9153671 -1.929783 128.0 +7.1136823 6.8602014 -1.9264665 128.0 +7.152091 6.8130417 -1.9254911 128.0 +7.1873312 6.7629805 -1.9237353 128.0 +7.2301297 6.720088 -1.9241254 128.0 +7.2647243 6.6696291 -1.9223696 128.0 +7.3105979 6.6295395 -1.9237353 128.0 +7.3445625 6.5786691 -1.9219794 128.0 +7.370832 6.5211339 -1.9182727 128.0 +7.4136605 6.4783654 -1.9190531 128.0 +7.4755483 6.4519763 -1.9249058 128.0 +7.5015597 6.3945346 -1.9213941 128.0 +7.5263972 6.3363857 -1.9176874 128.0 +7.5394912 6.2687688 -1.9110544 128.0 +7.5808458 6.2248783 -1.9118347 128.0 +7.5899477 6.1547751 -1.9044213 128.0 +7.6344604 6.113605 -1.906177 128.0 +7.6787534 6.0721202 -1.9079329 128.0 +7.7135477 6.0230794 -1.9073477 128.0 +7.7309394 5.9606671 -1.9024704 128.0 +7.7595634 5.9071789 -1.9005195 128.0 +7.7690039 5.8394232 -1.8938864 128.0 +7.8212295 5.8039155 -1.8979833 128.0 +7.8416605 5.7448049 -1.8942766 128.0 +7.8775568 5.697156 -1.8944716 128.0 +7.9059792 5.6441545 -1.892911 128.0 +7.9661198 5.6136141 -1.8991538 128.0 +7.9601521 5.5366325 -1.8893993 128.0 +8.0424938 5.5209846 -1.9011047 128.0 +8.0413008 5.4478822 -1.8927158 128.0 +8.0574532 5.3869939 -1.8886189 128.0 +8.0788927 5.3298926 -1.8858877 128.0 +8.1007586 5.2732668 -1.8833516 128.0 +8.1346121 5.2245216 -1.8837417 128.0 +8.1731443 5.178709 -1.8853024 128.0 +8.1698332 5.1066327 -1.8771087 128.0 +8.2394199 5.080081 -1.8860828 128.0 +8.2628927 5.0248437 -1.8843269 128.0 +8.271699 4.9609356 -1.8792546 128.0 +8.3121138 4.9160781 -1.8815957 128.0 +8.3395796 4.8635015 -1.8810104 128.0 +8.3828697 4.8200598 -1.8841319 128.0 +8.4063139 4.7651477 -1.8827662 128.0 +8.4405317 4.7163477 -1.8839368 128.0 +8.5028191 4.6829181 -1.8915453 128.0 +8.5003595 4.6138177 -1.8845221 128.0 +8.5259142 4.5601864 -1.8839368 128.0 +8.575428 4.5192151 -1.8888141 128.0 +8.5899382 4.4597349 -1.8858877 128.0 +8.6215067 4.4091763 -1.8868631 128.0 +8.6510267 4.3575163 -1.8874484 128.0 +8.6960535 4.3135028 -1.8915453 128.0 +8.7038488 4.2510266 -1.8874484 128.0 +8.747448 4.206039 -1.8913503 128.0 +8.7996883 4.1648707 -1.897203 128.0 +8.8126297 4.1050019 -1.8944716 128.0 +8.8483515 4.0557542 -1.8968128 128.0 +8.856082 3.993727 -1.893106 128.0 +8.8741446 3.9365287 -1.8917404 128.0 +8.8810501 3.8745542 -1.8880337 128.0 +8.9037552 3.8196015 -1.8878386 128.0 +8.93787 3.7694695 -1.8901796 128.0 +8.9807644 3.7228172 -1.8944716 128.0 +9.0088882 3.6698616 -1.8956422 128.0 +9.0667496 3.6287236 -1.9032507 128.0 +9.0532446 3.5590324 -1.8956422 128.0 +9.0804014 3.5055344 -1.8968128 128.0 +9.1329241 3.4615672 -1.9034458 128.0 +9.128252 3.3958912 -1.8979833 128.0 +9.1645803 3.3455329 -1.9012998 128.0 +9.1969395 3.2935345 -1.903836 128.0 +9.1892128 3.2272944 -1.8979833 128.0 +9.2477922 3.1842563 -1.906177 128.0 +9.2141848 3.1095831 -1.895057 128.0 +9.2479916 3.0579121 -1.8981783 128.0 +9.3384295 3.02437 -1.9132004 128.0 +9.317543 2.954567 -1.9050065 128.0 +9.3570414 2.9040239 -1.9094937 128.0 +9.3962698 2.853107 -1.9139807 128.0 +9.3600054 2.7794909 -1.9028605 128.0 +9.4070263 2.7307527 -1.9091034 128.0 +9.3726501 2.6585345 -1.8985686 128.0 +9.385951 2.6001897 -1.8979833 128.0 +9.4074097 2.5440853 -1.8991538 128.0 +9.43612 2.4898162 -1.9018852 128.0 +9.474966 2.4379776 -1.9067624 128.0 +9.4669142 2.3740714 -1.9020802 128.0 +9.5060759 2.3219867 -1.9071525 128.0 +9.5449543 2.2695107 -1.9122249 128.0 +9.5481882 2.2084713 -1.9100789 128.0 +9.5338087 2.1436071 -1.9044213 128.0 +9.5592394 2.0877874 -1.9069575 128.0 +9.5737886 2.0295002 -1.9073477 128.0 +9.5774145 1.968942 -1.9055918 128.0 +9.5864296 1.9095646 -1.9050065 128.0 +9.610486 1.85312 -1.9075427 128.0 +9.6409597 1.7977096 -1.9114445 128.0 +9.6431208 1.7369562 -1.9096887 128.0 +9.7115765 1.6878239 -1.9213941 128.0 +9.7478676 1.6325741 -1.9266616 128.0 +9.7315578 1.5685209 -1.9213941 128.0 +9.7458448 1.5095297 -1.9223696 128.0 +9.715148 1.4437954 -1.9143709 128.0 +9.7238235 1.3841572 -1.9143709 128.0 +9.7933598 1.3327919 -1.9266616 128.0 +9.7750921 1.2692691 -1.9213941 128.0 +9.8479137 1.2173203 -1.9344652 128.0 +9.8094139 1.1515027 -1.9252959 128.0 +9.831892 1.0930238 -1.9284174 128.0 +9.8315849 1.0319599 -1.9270518 128.0 +9.7967377 0.96757114 -1.9188579 128.0 +9.774169 0.90482277 -1.9132004 128.0 +9.7658558 0.84365243 -1.9104691 128.0 +9.8197317 0.78762937 -1.9202236 128.0 +9.816555 0.72678339 -1.9186629 128.0 +9.8609495 0.66925466 -1.9266616 128.0 +9.8090715 0.60529977 -1.9155414 128.0 +9.8693991 0.54824954 -1.9268566 128.0 +9.8138018 0.48478529 -1.9151512 128.0 +9.8332491 0.42527828 -1.9184678 128.0 +9.8552761 0.36565956 -1.9223696 128.0 +9.8789015 0.30584702 -1.9266616 128.0 +9.9198112 0.24619424 -1.9344652 128.0 +9.8809299 0.18457647 -1.9264665 128.0 +9.8995295 0.12416409 -1.9299781 128.0 +9.8422394 0.063055485 -1.9184678 128.0 +9.873826 0.0026682485 -1.9247106 128.0 +9.8658104 -0.057869516 -1.9231499 128.0 +9.9005756 -0.1188318 -1.9301732 128.0 +9.8957376 -0.17950673 -1.9293928 128.0 +9.9120989 -0.24065302 -1.9329045 128.0 +9.8996515 -0.3011387 -1.9307585 128.0 +9.891737 -0.36166045 -1.929588 128.0 +9.8863916 -0.42222229 -1.9290026 128.0 +9.8826351 -0.48282814 -1.9288076 128.0 +9.8892803 -0.54399759 -1.9307585 128.0 +9.8563871 -0.60286707 -1.9249058 128.0 +9.8945808 -0.66617131 -1.9332947 128.0 +9.8482466 -0.72377467 -1.9249058 128.0 +9.8856611 -0.78754288 -1.9332947 128.0 +9.9128895 -0.85095727 -1.9397327 128.0 +9.8840418 -0.9096058 -1.9350505 128.0 +9.9075565 -0.97311556 -1.9409032 128.0 +9.8945713 -1.033175 -1.9395375 128.0 +9.8588009 -1.0906289 -1.9336848 128.0 +9.8402338 -1.1497335 -1.9313438 128.0 +9.8213129 -1.2086515 -1.9290026 128.0 +9.838028 -1.2720382 -1.93388 128.0 +9.8465595 -1.3346207 -1.9371965 128.0 +9.8090534 -1.3908787 -1.9313438 128.0 +9.7916031 -1.4497459 -1.929588 128.0 +9.7767076 -1.5089005 -1.9284174 128.0 +9.7846956 -1.5716627 -1.931929 128.0 +9.7980852 -1.6355492 -1.9366112 128.0 +9.7376137 -1.6869267 -1.9264665 128.0 +9.7251492 -1.746297 -1.9260763 128.0 +9.7026796 -1.803784 -1.9237353 128.0 +9.6798716 -1.8610611 -1.9213941 128.0 +9.6653843 -1.919847 -1.9208089 128.0 +9.593854 -1.9668968 -1.9087132 128.0 +9.3321218 -1.9729503 -1.8579898 128.0 +9.0649366 -1.9746149 -1.8060957 128.0 +8.9311123 -2.0029266 -1.7813193 128.0 +8.7581053 -2.0206261 -1.7485441 128.0 +8.6644278 -2.0550766 -1.7319615 128.0 +8.5115833 -2.0740502 -1.7032832 128.0 +8.4777651 -2.1209977 -1.6989912 128.0 +8.4037943 -2.1573603 -1.6865054 128.0 +8.377121 -2.2053869 -1.6837741 128.0 +7.7384882 -2.0880251 -1.5550145 128.0 +7.53269 -2.0821338 -1.5152161 128.0 +7.381052 -2.08903 -1.4865378 128.0 +7.0515771 -2.0425439 -1.4209875 128.0 +7.0163436 -2.079082 -1.4163053 128.0 +6.7049809 -2.0316031 -1.3542665 128.0 +6.507833 -2.0155134 -1.3158338 128.0 +6.4635525 -2.0453408 -1.3092008 128.0 +6.3099675 -2.0393913 -1.2797421 128.0 +6.0617089 -2.0002694 -1.2303842 128.0 +6.0074973 -2.0233307 -1.2216052 128.0 +5.7983422 -1.9925435 -1.180246 128.0 +5.7860069 -2.0280838 -1.180246 128.0 +5.7743773 -2.0638783 -1.1804411 128.0 +5.5671773 -2.0283878 -1.139277 128.0 +5.3863797 -1.9999994 -1.1035755 128.0 +5.3116322 -2.0094011 -1.0903094 128.0 +5.3019481 -2.0430133 -1.0908946 128.0 +5.0975962 -2.0002329 -1.0499257 128.0 +5.0287623 -2.0089028 -1.0378301 128.0 +5.0272427 -2.0441563 -1.0401711 128.0 +4.9874196 -2.0637088 -1.0343184 128.0 +4.9493551 -2.0836112 -1.0288559 128.0 +4.9914694 -2.1375041 -1.0407565 128.0 +4.965672 -2.1626055 -1.0380251 128.0 +4.9541025 -2.1938283 -1.0384153 128.0 +4.9503851 -2.2286158 -1.0405613 128.0 +4.8759775 -2.231185 -1.0272952 128.0 +4.894208 -2.2759566 -1.0343184 128.0 +4.8633037 -2.2979791 -1.0306118 128.0 +4.8747511 -2.340091 -1.0362693 128.0 +4.7739162 -2.3278127 -1.0171505 128.0 +4.7120872 -2.3335464 -1.0066156 128.0 +4.6713963 -2.3491902 -1.0007629 128.0 +4.7136655 -2.4068124 -1.0134438 128.0 +4.6631122 -2.417176 -1.0054451 128.0 +4.6308355 -2.436605 -1.0015433 128.0 +4.6261778 -2.4705198 -1.0038843 128.0 +4.5945506 -2.4899764 -1.0001776 128.0 +4.5766077 -2.5167027 -0.99959236 128.0 +4.5884838 -2.5600345 -1.0058353 128.0 +4.5931721 -2.5997398 -1.0105175 128.0 +4.6017971 -2.6420414 -1.016175 128.0 +4.5439744 -2.6460347 -1.0066156 128.0 +4.6213818 -2.7292469 -1.0282706 128.0 +4.5650063 -2.7338593 -1.0191014 128.0 +4.529705 -2.7506146 -1.0148094 128.0 +4.5528259 -2.8030469 -1.0241737 128.0 +4.5030966 -2.8106694 -1.0165652 128.0 +4.4459882 -2.8130667 -1.0072008 128.0 +4.4707427 -2.8673067 -1.0171505 128.0 +4.4292212 -2.8791778 -1.0114928 128.0 +4.4253931 -2.9154766 -1.0148094 128.0 +4.3307567 -2.891367 -0.99647093 128.0 +4.350296 -2.9431748 -1.0054451 128.0 +4.3305373 -2.9687028 -1.005055 128.0 +4.3235159 -3.0030544 -1.0077862 128.0 +4.3555317 -3.0650976 -1.0200769 128.0 +4.2935247 -3.0610101 -1.009542 128.0 +4.2221937 -3.0493853 -0.99666601 128.0 +4.3039155 -3.1488044 -1.0214425 128.0 +4.1994247 -3.112067 -1.0003728 128.0 +4.1747603 -3.1336529 -0.99900711 128.0 +4.1905828 -3.1859288 -1.0077862 128.0 +4.2284517 -3.2558734 -1.0222229 128.0 +4.1534905 -3.2389238 -1.0083715 128.0 +4.1774044 -3.2990055 -1.0194916 128.0 +4.1907802 -3.351536 -1.0280756 128.0 +4.1838536 -3.3883007 -1.0315871 128.0 +3.9658389 -3.2521656 -0.98086369 128.0 +3.955617 -3.2845857 -0.98339987 128.0 +4.0922561 -3.4407465 -1.0241737 128.0 +3.8597584 -3.2858205 -0.96896321 128.0 +4.0920615 -3.5272148 -1.0352939 128.0 +4.0503941 -3.5348403 -1.0300264 128.0 +3.9742503 -3.5115578 -1.0155897 128.0 +4.017674 -3.5940897 -1.0329528 128.0 +3.9584777 -3.5850883 -1.0230032 128.0 +3.877862 -3.5556073 -1.0072008 128.0 +3.5986853 -3.3404005 -0.93735856 128.0 +3.5588279 -3.3442798 -0.93209112 128.0 +3.5339782 -3.3619962 -0.9309206 128.0 +3.5111639 -3.3815753 -0.93033528 128.0 +3.7220361 -3.6290562 -0.99471509 128.0 +3.7318006 -3.6835268 -1.0036893 128.0 +3.6966434 -3.6938736 -1.0001776 128.0 +3.7600784 -3.8036935 -1.0245639 128.0 +3.7537951 -3.8442402 -1.0294412 128.0 +3.7301366 -3.8672006 -1.0294412 128.0 +3.640727 -3.8211234 -1.0105175 128.0 +3.6588783 -3.8876812 -1.022613 128.0 +3.7164063 -3.9977124 -1.046414 128.0 +3.6957862 -4.024776 -1.0475845 128.0 +3.6835375 -4.0611825 -1.0512913 128.0 +3.6467719 -4.0705566 -1.0477797 128.0 +3.6308241 -4.1031408 -1.0505109 128.0 +3.6088057 -4.129035 -1.0514864 128.0 +3.4994662 -4.0538249 -1.0259296 128.0 +3.480252 -4.0819392 -1.0276854 128.0 +3.4172456 -4.0581951 -1.01598 128.0 +3.4242556 -4.1175523 -1.0259296 128.0 +3.4617805 -4.2150497 -1.0456337 128.0 +3.3963223 -4.1874518 -1.0331479 128.0 +3.4116337 -4.2595105 -1.046219 128.0 +3.3769178 -4.2695923 -1.0434877 128.0 +3.339793 -4.2763166 -1.0399761 128.0 +3.2643919 -4.2330313 -1.0239787 128.0 +3.3351784 -4.3801956 -1.0557784 128.0 +3.3318069 -4.431941 -1.0635819 128.0 +3.3191597 -4.471993 -1.0684593 128.0 +3.2441361 -4.427392 -1.0524619 128.0 +3.2013931 -4.4257545 -1.0471944 128.0 +3.1718979 -4.4421215 -1.046414 128.0 +3.1468413 -4.4647074 -1.0471944 128.0 +3.1081884 -4.4678273 -1.0432926 128.0 +3.1106851 -4.5304823 -1.0538275 128.0 +3.0520272 -4.5040092 -1.0429025 128.0 +3.0172484 -4.5120506 -1.0403663 128.0 +2.9862661 -4.5255671 -1.0391957 128.0 +2.9466722 -4.5257201 -1.0349038 128.0 +2.8785737 -4.4809923 -1.0200769 128.0 +2.8405278 -4.4819999 -1.016175 128.0 +2.8218091 -4.5134845 -1.0194916 128.0 +2.8043544 -4.5474119 -1.0233934 128.0 +2.7631521 -4.5427442 -1.018321 128.0 +2.7639744 -4.6075597 -1.0294412 128.0 +2.719178 -4.5965719 -1.0230032 128.0 +2.6849949 -4.6030025 -1.0206621 128.0 +2.6361718 -4.5836778 -1.0124683 128.0 +4.0905848 -7.2159681 -1.6106153 128.0 +2.5998137 -4.6516447 -1.0206621 128.0 +2.5584505 -4.6443119 -1.0153947 128.0 +2.5359864 -4.6711297 -1.0179309 128.0 +2.4818411 -4.6390324 -1.0072008 128.0 +3.8855977 -7.3727593 -1.6184188 128.0 +3.8276353 -7.3720875 -1.6129563 128.0 +3.7769711 -7.3849554 -1.6106153 128.0 +3.7245293 -7.3939757 -1.6074938 128.0 +2.3187644 -4.6734385 -0.99842185 128.0 +3.6365256 -7.4452939 -1.6088594 128.0 +3.5776014 -7.4400644 -1.6028117 128.0 +3.5352385 -7.4689684 -1.6043724 128.0 +2.1897111 -4.6995955 -0.99198383 128.0 +2.1779935 -4.7503915 -1.0001776 128.0 +3.442709 -7.6338115 -1.6264175 128.0 +3.3799005 -7.6189284 -1.618614 128.0 +3.3170125 -7.6026645 -1.6106153 128.0 +3.2818978 -7.6499162 -1.616468 128.0 +3.2322297 -7.6635833 -1.6151023 128.0 +3.1765103 -7.6624317 -1.6106153 128.0 +3.1423812 -7.7135711 -1.6174434 128.0 +3.099 -7.7427235 -1.6195894 128.0 +3.0446174 -7.7442493 -1.6158826 128.0 +2.992805 -7.7518048 -1.6135416 128.0 +2.9420569 -7.7617679 -1.6117858 128.0 +2.8957436 -7.7833509 -1.6125661 128.0 +2.8489401 -7.8037367 -1.6131514 128.0 +2.8218286 -7.8792448 -1.6254421 128.0 +1.1044925 -3.1425643 -0.62326312 128.0 +1.0976381 -3.1854506 -0.63087165 128.0 +1.0718019 -3.1735389 -0.62696987 128.0 +1.0618509 -3.2089238 -0.63301766 128.0 +2.5422552 -7.8491898 -1.6018362 128.0 +1.0686225 -3.367564 -0.66345173 128.0 +1.0447427 -3.3637533 -0.66130573 128.0 +2.4204195 -7.970674 -1.6176385 128.0 +0.98105872 -3.3011014 -0.64569855 128.0 +0.94247317 -3.2439494 -0.63262749 128.0 +0.89660084 -3.1581426 -0.61370373 128.0 +0.87720597 -3.1635847 -0.61370373 128.0 +2.1371603 -7.9019885 -1.5889602 128.0 +2.0891345 -7.9168501 -1.5893505 128.0 +0.8466751 -3.2874808 -0.63594401 128.0 +1.9746565 -7.8733931 -1.5753039 128.0 +1.9267743 -7.8872666 -1.5756941 128.0 +0.84225738 -3.5391526 -0.68432641 128.0 +1.8282939 -7.9036283 -1.5743284 128.0 +1.7765383 -7.9003439 -1.5714021 128.0 +1.7271925 -7.9072628 -1.5706217 128.0 +1.675796 -7.9042792 -1.5678905 128.0 +1.6250936 -7.9038448 -1.5657445 128.0 +1.5754169 -7.907896 -1.5645739 128.0 +1.5224113 -7.8943 -1.5598918 128.0 +1.4732255 -7.8996363 -1.5591114 128.0 +1.4245528 -7.9075618 -1.5589163 128.0 +1.3729852 -7.8987598 -1.5554047 128.0 +1.3241696 -7.9051008 -1.5550145 128.0 +1.2761078 -7.9159822 -1.5555998 128.0 +1.2267622 -7.918817 -1.5546243 128.0 +1.1762774 -7.9135833 -1.5520881 128.0 +1.1265936 -7.9128838 -1.5505275 128.0 +1.0769627 -7.9118724 -1.5489668 128.0 +1.0296578 -7.9280581 -1.5509176 128.0 +0.99794203 -8.071475 -1.5784254 128.0 +0.95091075 -8.098877 -1.5827173 128.0 +0.90065783 -8.0996847 -1.5817419 128.0 +0.85022622 -8.0982304 -1.5803763 128.0 +0.80003899 -8.0984144 -1.5794008 128.0 +0.75105536 -8.1109838 -1.5809616 128.0 +0.70177895 -8.1213026 -1.5821321 128.0 +0.6506815 -8.1098137 -1.5790106 128.0 +0.59975159 -8.0980034 -1.5758892 128.0 +0.55078113 -8.1122952 -1.5780351 128.0 +0.50111526 -8.1174793 -1.5784254 128.0 +0.45048365 -8.1057129 -1.5754989 128.0 +0.40131873 -8.120079 -1.5778401 128.0 +0.35199448 -8.1341476 -1.5801811 128.0 +0.30211392 -8.1371336 -1.5803763 128.0 +0.25251228 -8.1496181 -1.5825223 128.0 +0.20281728 -8.1637602 -1.5850585 128.0 +0.15284899 -8.1717157 -1.5864241 128.0 +0.10291255 -8.1891718 -1.5897406 128.0 +0.052527115 -8.1680717 -1.5854486 128.0 +0.0024077778 -8.1682405 -1.5854486 128.0 +-0.047611888 -8.1514282 -1.5821321 128.0 +-0.097793624 -8.1647129 -1.5848633 128.0 +-0.14808646 -8.1747465 -1.5870093 128.0 +-0.19769281 -8.1511326 -1.5825223 128.0 +-0.24785317 -8.1546669 -1.5834976 128.0 +-0.29788461 -8.1529932 -1.5834976 128.0 +-0.34765303 -8.1451321 -1.5823271 128.0 +-0.39867955 -8.1643972 -1.5866191 128.0 +-0.44919971 -8.169632 -1.5881798 128.0 +-0.49871925 -8.1569319 -1.586229 128.0 +-0.54730791 -8.1321907 -1.581937 128.0 +-0.59913981 -8.1550884 -1.5872045 128.0 +-0.65010327 -8.1629915 -1.5895455 128.0 +-0.70160615 -8.1754608 -1.592862 128.0 +-0.74860686 -8.1368189 -1.5860338 128.0 +-0.80111092 -8.1584263 -1.5913013 128.0 +-0.84993136 -8.1416521 -1.5889602 128.0 +-0.90051931 -8.1421328 -1.5901308 128.0 +-0.94635993 -8.1013842 -1.5831075 128.0 +-1.0015671 -8.1402025 -1.5920817 128.0 +-1.048978 -8.1144505 -1.5881798 128.0 +-1.1004616 -8.1204958 -1.590716 128.0 +-1.1534369 -8.1359253 -1.5952032 128.0 +-1.1993109 -8.1015291 -1.5897406 128.0 +-1.2492977 -8.0959568 -1.5901308 128.0 +-1.2975492 -8.079423 -1.588375 128.0 +-1.3527551 -8.1051683 -1.5952032 128.0 +-1.4016243 -8.0918837 -1.5942277 128.0 +-1.452463 -8.0898876 -1.5955933 128.0 +-1.496693 -8.0518961 -1.5897406 128.0 +-1.5558907 -8.0936069 -1.6000804 128.0 +-1.6018901 -8.06563 -1.5963737 128.0 +-1.6517439 -8.0575705 -1.5967638 128.0 +-1.7031829 -8.05688 -1.5987147 128.0 +-1.7575998 -8.0692768 -1.6033969 128.0 +-1.8053609 -8.050684 -1.6018362 128.0 +-1.8545045 -8.0384998 -1.6016411 128.0 +-1.9049252 -8.0317402 -1.6026165 128.0 +-1.9555651 -8.0256186 -1.6037871 128.0 +-2.0045345 -8.012517 -1.603592 128.0 +-2.0551245 -8.0057659 -1.6047626 128.0 +-2.1072061 -8.0043859 -1.6071036 128.0 +-2.1573031 -7.9950938 -1.607884 128.0 +-2.2068424 -7.9835968 -1.6082742 128.0 +-2.2549856 -7.9670744 -1.6076889 128.0 +-2.3079236 -7.9672184 -1.6106153 128.0 +-2.3523052 -7.9378619 -1.6074938 128.0 +-2.3986902 -7.9157705 -1.6059331 128.0 +-2.4506991 -7.9121451 -1.6082742 128.0 +-2.5006812 -7.9016342 -1.6092496 128.0 +-2.5491178 -7.8861418 -1.6092496 128.0 +-2.6026859 -7.8861847 -1.6125661 128.0 +-2.6607354 -7.8988786 -1.618614 128.0 +-2.720314 -7.914866 -1.6254421 128.0 +-2.763634 -7.8832173 -1.6223207 128.0 +-2.7891634 -7.8023901 -1.6088594 128.0 +-2.8376575 -7.786972 -1.6092496 128.0 +-2.8847008 -7.7675753 -1.6088594 128.0 +-1.4180884 -3.7495263 -0.75807053 128.0 +-1.4258963 -3.7014043 -0.74968165 128.0 +-3.0379412 -7.7405496 -1.6147121 128.0 +-3.0963004 -7.7490849 -1.6205648 128.0 +-3.1522908 -7.7508354 -1.625052 128.0 +-3.1915355 -7.711411 -1.62076 128.0 +-3.2555447 -7.7314534 -1.6293439 128.0 +-3.2940381 -7.6905971 -1.6248568 128.0 +-3.3337204 -7.6531572 -1.6211501 128.0 +-3.3770406 -7.6244874 -1.6193943 128.0 +-3.4181206 -7.5911036 -1.6166631 128.0 +-1.4456315 -3.1602294 -0.65194142 128.0 +-1.4774078 -3.1779768 -0.65779412 128.0 +-1.6134185 -3.4153497 -0.71202922 128.0 +-1.6351936 -3.4071541 -0.71241939 128.0 +-1.6534884 -3.3917677 -0.71124887 128.0 +-1.672527 -3.3780429 -0.71046853 128.0 +-1.6919001 -3.3650885 -0.70988321 128.0 +-1.7138548 -3.357264 -0.71046853 128.0 +-1.7380347 -3.3536501 -0.71202922 128.0 +-1.7622347 -3.3498654 -0.71358997 128.0 +-3.9426486 -7.3813496 -1.625247 128.0 +-3.9939432 -7.3682275 -1.6277832 128.0 +-4.0452247 -7.3547535 -1.6303194 128.0 +-4.0926666 -7.3340759 -1.6312948 128.0 +-4.1240587 -7.2849293 -1.6258323 128.0 +-4.1940837 -7.3037114 -1.635977 128.0 +-4.2279572 -7.2591958 -1.631685 128.0 +-4.2664323 -7.2229838 -1.6293439 128.0 +-4.298573 -7.1764779 -1.6246618 128.0 +-4.3547482 -7.1700845 -1.6293439 128.0 +-4.3930025 -7.1340432 -1.627198 128.0 +-4.4460444 -7.1219282 -1.6307095 128.0 +-4.4891357 -7.0936852 -1.6305145 128.0 +-2.0193112 -3.1491723 -0.70481092 128.0 +-2.0428739 -3.1433003 -0.70637161 128.0 +-2.0642815 -3.1339819 -0.70715195 128.0 +-4.7196169 -7.0678306 -1.6511941 128.0 +-4.7365069 -6.999752 -1.6418297 128.0 +-4.7843599 -6.9778371 -1.6435856 128.0 +-4.8147721 -6.9306307 -1.6392936 128.0 +-4.8622885 -6.908175 -1.6410494 128.0 +-4.9114189 -6.8877921 -1.6433904 128.0 +-4.9581847 -6.8638864 -1.6449511 128.0 +-4.9990487 -6.8317513 -1.6445609 128.0 +-5.0344481 -6.7922826 -1.6424149 128.0 +-5.0689626 -6.751853 -1.6400739 128.0 +-5.1150455 -6.7268682 -1.6416346 128.0 +-5.1723852 -6.7163348 -1.6469021 128.0 +-5.203846 -6.6720986 -1.6437806 128.0 +-5.2544155 -6.6523561 -1.6469021 128.0 +-5.2914581 -6.6153951 -1.6457316 128.0 +-5.3449159 -6.5988059 -1.6498284 128.0 +-5.372241 -6.549963 -1.6457316 128.0 +-5.4254909 -6.5327187 -1.6498284 128.0 +-5.467998 -6.5023079 -1.6506088 128.0 +-5.5262346 -6.4902883 -1.6562663 128.0 +-5.5851698 -6.4785404 -1.6621192 128.0 +-5.6170754 -6.4352827 -1.659778 128.0 +-5.6486611 -6.3918777 -1.657437 128.0 +-5.70151 -6.3724456 -1.6615338 128.0 +-5.7326007 -6.32862 -1.6591928 128.0 +-5.7653575 -6.2868214 -1.657437 128.0 +-5.8044915 -6.2520461 -1.657632 128.0 +-5.8454313 -6.219171 -1.6584123 128.0 +-5.8848338 -6.184608 -1.6588025 128.0 +-5.9226713 -6.1483827 -1.6588025 128.0 +-5.9856248 -6.1379032 -1.6660209 128.0 +-6.0231738 -6.1010609 -1.6660209 128.0 +-6.0383067 -6.0417924 -1.659778 128.0 +-6.0780554 -6.0073857 -1.6605583 128.0 +-6.1477895 -6.0021763 -1.6697276 128.0 +-6.189445 -5.9691067 -1.6710932 128.0 +-6.2209826 -5.9262815 -1.6697276 128.0 +-6.2486558 -5.8799343 -1.6673865 128.0 +-6.2939572 -5.850162 -1.6699227 128.0 +-6.3333473 -5.8147488 -1.6708982 128.0 +-6.3718133 -5.7784138 -1.6716785 128.0 +-6.4173779 -5.7483683 -1.6744097 128.0 +-6.4613442 -5.7166815 -1.6767509 128.0 +-6.5073786 -5.6866069 -1.6796772 128.0 +-6.5503168 -5.6536198 -1.6818233 128.0 +-6.5863762 -5.6145935 -1.6822134 128.0 +-6.6282067 -5.5803905 -1.6841643 128.0 +-6.6638308 -5.5408692 -1.6845545 128.0 +-6.6999779 -5.5017433 -1.6851398 128.0 +-6.7282767 -5.4562058 -1.6837741 128.0 +-6.7677536 -5.419723 -1.6853348 128.0 +-6.8131914 -5.3878269 -1.6884563 128.0 +-6.8538532 -5.3519559 -1.6904072 128.0 +-6.8811255 -5.3056092 -1.6890416 128.0 +-6.9393058 -5.2828894 -1.6954795 128.0 +-6.9637494 -5.2343192 -1.6935287 128.0 +-6.9500499 -5.1575985 -1.6822134 128.0 +-6.9973903 -5.1264472 -1.6861153 128.0 +-7.0525579 -5.1006556 -1.691968 128.0 +-7.0956969 -5.0658321 -1.6948943 128.0 +-7.1146197 -5.0137258 -1.691968 128.0 +-7.1355867 -4.9632573 -1.6896268 128.0 +-7.1537762 -4.911056 -1.6867005 128.0 +-7.1374884 -4.8357182 -1.6755804 128.0 +-7.1711025 -4.7945576 -1.6765558 128.0 +-7.1962929 -4.747766 -1.6755804 128.0 +-7.2532382 -4.7217102 -1.6822134 128.0 +-6.4889565 -4.1678648 -1.4947315 128.0 +-7.3636613 -4.6659365 -1.6946992 128.0 +-7.4079556 -4.6305413 -1.6984059 128.0 +-7.4637809 -4.6019826 -1.7048439 128.0 +-7.4935536 -4.5571179 -1.7052341 128.0 +-7.5095983 -4.5039921 -1.7025028 128.0 +-7.5235848 -4.449842 -1.6993814 128.0 +-7.5414267 -4.3981605 -1.6972353 128.0 +-7.5733733 -4.3547373 -1.6984059 128.0 +-7.5999508 -4.3081861 -1.6984059 128.0 +-7.6236734 -4.2600374 -1.6978207 128.0 +-7.6574016 -4.2174368 -1.6995765 128.0 +-7.669342 -4.1628881 -1.696455 128.0 +-7.6610098 -4.0977149 -1.6888465 128.0 +-7.668654 -4.0414877 -1.6849446 128.0 +-7.6793795 -3.9871285 -1.6818233 128.0 +-7.6670222 -3.9211819 -1.6736294 128.0 +-6.903419 -3.4775097 -1.4982432 128.0 +-6.8929944 -3.4193997 -1.49122 128.0 +-6.9015069 -3.3710163 -1.4884887 128.0 +-6.9202929 -3.3277562 -1.4880985 128.0 +-6.9441276 -3.2869093 -1.4888788 128.0 +-7.005064 -3.2632842 -1.497853 128.0 +-7.7801714 -3.5662944 -1.6630945 128.0 +-7.814425 -3.5241323 -1.6658258 128.0 +-6.4802685 -2.874959 -1.3708493 128.0 +-6.49509 -2.8339665 -1.3702639 128.0 +-7.8635464 -3.3735123 -1.6627043 128.0 +-7.8813868 -3.3240559 -1.6621192 128.0 +-7.9161315 -3.2816415 -1.6652405 128.0 +-7.9533772 -3.2400355 -1.6689472 128.0 +-7.9585381 -3.1853442 -1.6658258 128.0 +-7.9852357 -3.1393216 -1.6673865 128.0 +-8.0034332 -3.0899127 -1.6671915 128.0 +-8.0194902 -3.0397038 -1.6666062 128.0 +-8.0462637 -2.9935169 -1.668362 128.0 +-8.0736942 -2.9474518 -1.6703129 128.0 +-7.9752784 -2.8562067 -1.6457316 128.0 +-7.7039251 -2.7058532 -1.5848633 128.0 +-8.1831503 -2.8178134 -1.6822134 128.0 +-8.2021446 -2.7681763 -1.6826036 128.0 +-8.2329435 -2.7224138 -1.6855299 128.0 +-8.2821522 -2.6824188 -1.6923581 128.0 +-8.3190241 -2.6380696 -1.69665 128.0 +-8.3500414 -2.5916252 -1.6997715 128.0 +-8.3958187 -2.5494566 -1.7060144 128.0 +-8.4338694 -2.504591 -1.7106966 128.0 +-8.4792204 -2.4615405 -1.7169394 128.0 +-8.5290775 -2.4193652 -1.7241578 128.0 +-8.5910234 -2.3800728 -1.7339123 128.0 +-8.6376562 -2.3360159 -1.7405454 128.0 +-8.6575174 -2.2844732 -1.7417159 128.0 +-8.7321644 -2.246943 -1.7542018 128.0 +-8.7362728 -2.1909366 -1.7522508 128.0 +-8.7466936 -2.1365929 -1.7516656 128.0 +-8.628912 -2.0518172 -1.7249382 128.0 +-8.7254305 -2.0182722 -1.7421061 128.0 +-8.8792744 -1.9965215 -1.7709795 128.0 +-9.0207176 -1.9702386 -1.7973167 128.0 +-9.1640873 -1.9427005 -1.8240441 128.0 +-9.3583708 -1.9239377 -1.8611113 128.0 +-9.7249451 -1.9371389 -1.9330995 128.0 +-9.8599205 -1.9011859 -1.9580711 128.0 +-9.8627224 -1.8390337 -1.9563153 128.0 +-9.863203 -1.7765714 -1.9541693 128.0 +-9.9376955 -1.7270949 -1.9670453 128.0 +-9.9906683 -1.6732091 -1.9756292 128.0 +-9.9988098 -1.611564 -1.975239 128.0 +-9.9280634 -1.5377314 -1.9590466 128.0 +-9.9179087 -1.4739038 -1.9551448 128.0 +-9.9646349 -1.418407 -1.9627533 128.0 +-9.9537134 -1.3545955 -1.9588515 128.0 +-9.9657288 -1.2939999 -1.9596318 128.0 +-9.9725075 -1.2327068 -1.9594368 128.0 +-10.011055 -1.1751488 -1.9656796 128.0 +-10.02685 -1.1146743 -1.9674355 128.0 +-10.005213 -1.050164 -1.9617778 128.0 +-10.001708 -0.98779052 -1.9598269 128.0 +-9.9851189 -0.92432588 -1.9553399 128.0 +-9.9974422 -0.86363101 -1.9567055 128.0 +-10.037748 -0.80509043 -1.9637288 128.0 +-10.00631 -0.74080968 -1.9565104 128.0 +-9.9891386 -0.67793965 -1.9522184 128.0 +-10.002899 -0.61723763 -1.9541693 128.0 +-10.008457 -0.55595791 -1.9545594 128.0 +-9.979353 -0.49294364 -1.9481215 128.0 +-9.9851294 -0.43182901 -1.9487067 128.0 +-9.9944525 -0.37080702 -1.9500724 128.0 +-9.9710512 -0.30868912 -1.9450001 128.0 +-10.021782 -0.24871306 -1.9547546 128.0 +-9.9731073 -0.18628754 -1.944805 128.0 +-9.9838705 -0.12521204 -1.9467559 128.0 +-9.9844503 -0.063949816 -1.9467559 128.0 +-10.008194 -0.0026887686 -1.9514381 128.0 +-9.9560413 0.058409389 -1.9410982 128.0 +-10.2095 0.12257588 -1.9916266 128.0 +-10.170312 0.18451966 -1.9840181 128.0 +-10.222915 0.24823564 -1.9947481 128.0 +-10.080032 0.30664685 -1.9666551 128.0 +-10.006412 0.36586663 -1.9524136 128.0 +-10.07747 0.4304052 -1.9670453 128.0 +-9.9894133 0.48805743 -1.9500724 128.0 +-9.991127 0.54961205 -1.9510479 128.0 +-9.9836502 0.61066616 -1.9502676 128.0 +-9.9904795 0.67263919 -1.9524136 128.0 +-9.4656487 -0.23920082 -1.9592985 128.0 +-9.468894 -0.1811537 -1.9597116 128.0 +-9.4659138 -0.12299924 -1.9588853 128.0 +-9.4557285 -0.064840905 -1.9566133 128.0 +-9.4539909 -0.0068189302 -1.9562002 128.0 +-9.471467 0.051284414 -1.959918 128.0 +-9.4308605 0.10893762 -1.9514498 128.0 +-9.4466448 0.16709571 -1.9549609 128.0 +-9.4112062 0.22424181 -1.9477319 128.0 +-9.3979177 0.28163245 -1.9452534 128.0 +-9.4370804 0.3407729 -1.9539282 128.0 +-9.3839779 0.3965255 -1.9431878 128.0 +-9.3852777 0.4542861 -1.9440141 128.0 +-9.3862209 0.51207757 -1.9448402 128.0 +-9.3877859 0.56995696 -1.9458729 128.0 +-9.3714209 0.6267004 -1.9431878 128.0 +-9.4005775 0.68661249 -1.9502105 128.0 +-9.3669262 0.74196386 -1.9440141 128.0 +-9.3738956 0.80042273 -1.9464926 128.0 +-9.3746538 0.85845989 -1.9477319 128.0 +-9.3721313 0.916251 -1.9483515 128.0 +-9.3488159 0.97191966 -1.9446337 128.0 +-9.3426762 1.0292646 -1.9446337 128.0 +-9.3118877 1.0837442 -1.9394701 128.0 +-9.3371115 1.1447884 -1.9462861 128.0 +-9.3337927 1.2025582 -1.9471122 128.0 +-9.3155727 1.2583663 -1.9448402 128.0 +-9.2979879 1.314133 -1.9427748 128.0 +-9.3226595 1.3760158 -1.9497973 128.0 +-9.2840624 1.428581 -1.9433944 128.0 +-9.2702913 1.4847466 -1.9423617 128.0 +-9.2600412 1.5414394 -1.9421551 128.0 +-9.23209 1.5950648 -1.9382308 128.0 +-9.2240553 1.6520267 -1.9386438 128.0 +-9.2195177 1.7096634 -1.9398831 128.0 +-9.156002 1.7560669 -1.9285231 128.0 +-9.1968832 1.8224822 -1.9396766 128.0 +-9.1807346 1.8778987 -1.9386438 128.0 +-9.1613798 1.93258 -1.9369915 128.0 +-9.1216221 1.982731 -1.9310017 128.0 +-9.1541615 2.0487044 -1.9407094 128.0 +-9.1576281 2.1085663 -1.9442205 128.0 +-9.1150017 2.1577308 -1.9378177 128.0 +-9.0949354 2.2120006 -1.9363718 128.0 +-9.1381493 2.2819853 -1.9487646 128.0 +-9.0860624 2.3282995 -1.9405028 128.0 +-9.0621414 2.3815203 -1.9384373 128.0 +-9.0105124 2.4271562 -1.930382 128.0 +-9.0180864 2.4886436 -1.9353391 128.0 +-8.9856987 2.5391424 -1.9316213 128.0 +-8.9718294 2.5947733 -1.9320344 128.0 +-8.9810715 2.6572688 -1.9376111 128.0 +-8.9505501 2.7080758 -1.934513 128.0 +-8.9328299 2.7626555 -1.9343064 128.0 +-8.9119787 2.8162351 -1.9334803 128.0 +-8.8945312 2.8708649 -1.9334803 128.0 +-8.8878994 2.9290612 -1.9359587 128.0 +-8.8753242 2.9854126 -1.937198 128.0 +-8.8170443 3.0261581 -1.9283166 128.0 +-8.823245 3.0889294 -1.9338933 128.0 +-8.7875385 3.1370893 -1.9301755 128.0 +-8.7947884 3.2006519 -1.9361653 128.0 +-8.7502146 3.2453699 -1.9305886 128.0 +-8.6843729 3.2817078 -1.9202613 128.0 +-8.7133827 3.35391 -1.9314147 128.0 +-8.6543789 3.3923156 -1.9227399 128.0 +-8.6752043 3.4620345 -1.932241 128.0 +-8.6293221 3.5052583 -1.9266642 128.0 +-8.6157894 3.5615046 -1.9285231 128.0 +-8.6000881 3.6169579 -1.929969 128.0 +-8.5741348 3.6681199 -1.9291427 128.0 +-8.5362139 3.7140253 -1.9256315 128.0 +-8.4533119 3.7398126 -1.9117929 128.0 +-8.5471048 3.8441813 -1.9388504 128.0 +-8.5002193 3.885977 -1.9334803 128.0 +-8.4389467 3.9207468 -1.9248053 128.0 +-8.3908405 3.9611766 -1.9192286 128.0 +-8.3893147 4.0235872 -1.9245987 128.0 +-8.3978949 4.09127 -1.9324474 128.0 +-8.3086138 4.1110487 -1.9173696 128.0 +-8.3042154 4.1724939 -1.9223268 128.0 +-8.2557955 4.2118092 -1.9169565 128.0 +-8.2350101 4.2650862 -1.9181958 128.0 +-8.2580509 4.3414855 -1.929969 128.0 +-8.1958628 4.3731904 -1.9215006 128.0 +-8.1740379 4.4261923 -1.9227399 128.0 +-8.1861725 4.4979358 -1.932241 128.0 +-8.1396179 4.5376 -1.9276969 128.0 +-8.1116219 4.5874586 -1.9276969 128.0 +-8.0485239 4.6171837 -1.9192286 128.0 +-8.0284986 4.671402 -1.921294 128.0 +-7.9356403 4.6827879 -1.9055965 128.0 +-7.9302673 4.7454581 -1.9113798 128.0 +-7.9076924 4.7980886 -1.9130322 128.0 +-7.8631024 4.8372912 -1.9093144 128.0 +-7.8349338 4.8864827 -1.9097275 128.0 +-7.7833004 4.9208713 -1.9043573 128.0 +-7.7529597 4.9685364 -1.9043573 128.0 +-7.7050958 5.0048223 -1.9000198 128.0 +-7.6824145 5.057385 -1.9020853 128.0 +-7.5958896 5.0675063 -1.8880402 128.0 +-7.5978875 5.1364846 -1.8965086 128.0 +-7.5751076 5.1890898 -1.8987806 128.0 +-7.511776 5.2137156 -1.8907253 128.0 +-7.5156612 5.2850342 -1.9000198 128.0 +-7.5452509 5.375329 -1.9161304 128.0 +-7.48277 5.4003396 -1.9084882 128.0 +-7.4502831 5.4467292 -1.9086947 128.0 +-7.3577476 5.4486713 -1.8932039 128.0 +-7.3547034 5.5166106 -1.9012591 128.0 +-7.3098078 5.5533485 -1.8983674 128.0 +-7.3027377 5.618978 -1.9055965 128.0 +-7.2758408 5.6696949 -1.907662 128.0 +-7.2516685 5.7227173 -1.9105537 128.0 +-7.1835504 5.7408404 -1.9016721 128.0 +-7.1649232 5.7983503 -1.9062161 128.0 +-7.1791601 5.8831334 -1.9198482 128.0 +-7.1805768 5.9583116 -1.9301755 128.0 +-7.1131668 5.9764543 -1.9217072 128.0 +-7.0592208 6.0054059 -1.9169565 128.0 +-7.0326185 6.0575471 -1.9198482 128.0 +-6.9886808 6.0947967 -1.9179893 128.0 +-6.9819584 6.1647615 -1.9266642 128.0 +-6.9396238 6.2035737 -1.9254249 128.0 +-6.9057817 6.2499771 -1.9266642 128.0 +-6.849988 6.2763691 -1.9217072 128.0 +-6.8185215 6.3249354 -1.9237726 128.0 +-6.7724514 6.3599563 -1.9217072 128.0 +-6.7538652 6.4209414 -1.9276969 128.0 +-6.713635 6.4615831 -1.9274904 128.0 +-6.6703572 6.4992418 -1.9264576 128.0 +-6.6428919 6.5524154 -1.9301755 128.0 +-6.6157174 6.6061869 -1.9340999 128.0 +-6.5915732 6.6633496 -1.939057 128.0 +-6.5567183 6.7099671 -1.9409158 128.0 +-6.4936781 6.7275457 -1.9343064 128.0 +-6.4779344 6.7941718 -1.9421551 128.0 +-6.4139857 6.8102875 -1.9353391 128.0 +-6.3894062 6.8681397 -1.9407094 128.0 +-6.3199992 6.8776779 -1.932241 128.0 +-6.2796526 6.9185009 -1.9328606 128.0 +-6.2566786 6.9787564 -1.939057 128.0 +-6.2215242 7.025805 -1.9415355 128.0 +-6.1995554 7.0881505 -1.9483515 128.0 +-6.1482711 7.1171722 -1.9458729 128.0 +-6.1159167 7.1681604 -1.9495908 128.0 +-6.0674052 7.200315 -1.9481449 128.0 +-6.0293698 7.2449288 -1.9502105 128.0 +-5.9848022 7.2817879 -1.9502105 128.0 +-5.9412427 7.3198924 -1.9506235 128.0 +-5.905396 7.3676605 -1.9537216 128.0 +-5.8594708 7.4029899 -1.9535152 128.0 +-5.8175516 7.4434285 -1.9547545 128.0 +-5.7765527 7.4851809 -1.9564068 128.0 +-5.7435627 7.5376053 -1.9609509 128.0 +-5.6824985 7.5531588 -1.9557872 128.0 +-5.6424642 7.5965238 -1.9580592 128.0 +-5.6003752 7.6373143 -1.9597116 128.0 +-5.5585723 7.6786666 -1.9615704 128.0 +-5.5022497 7.699892 -1.9582657 128.0 +-5.4498243 7.7263126 -1.9564068 128.0 +-5.4341822 7.8053761 -1.9681799 128.0 +-5.3839703 7.8353472 -1.9673537 128.0 +-5.3495221 7.8884792 -1.9725174 128.0 +-5.2830596 7.8943214 -1.9657013 128.0 +-5.2523155 7.9535322 -1.9725174 128.0 +-5.2034144 7.98561 -1.9725174 128.0 +-5.1606674 8.0272636 -1.9749959 128.0 +-5.1097441 8.0562992 -1.9743763 128.0 +-5.0659242 8.0966234 -1.9766483 128.0 +-4.9765778 8.0634441 -1.9607443 128.0 +-4.9702554 8.1648664 -1.9783007 128.0 +-4.927114 8.206954 -1.9811922 128.0 +-4.8721781 8.229454 -1.9793334 128.0 +-4.8289909 8.2718687 -1.9824315 128.0 +-4.7908363 8.323391 -1.9878018 128.0 +-4.738709 8.3509283 -1.9873886 128.0 +-4.6878572 8.3807011 -1.9875952 128.0 +-4.6495743 8.4332981 -1.9933785 128.0 +-4.5954051 8.4573698 -1.9923458 128.0 +-4.5300303 8.4603939 -1.9863559 128.0 +-4.4926438 8.5157223 -1.9929653 128.0 +-4.4357953 8.5344467 -1.9908999 128.0 +-4.3878045 8.5702124 -1.9929653 128.0 +-4.3377795 8.6022158 -1.9942046 128.0 +-4.2984076 8.6558361 -2.0006075 128.0 +-4.2387681 8.6688633 -1.9975094 128.0 +-4.1787062 8.680603 -1.9942046 128.0 +-4.1211743 8.697238 -1.9921392 128.0 +-4.0594597 8.704627 -1.9880083 128.0 +-4.0243387 8.7693872 -1.9973029 128.0 +-3.9603882 8.7716217 -1.9921392 128.0 +-3.9180105 8.8216887 -1.998129 128.0 +-3.8598909 8.8365974 -1.9960636 128.0 +-3.8167973 8.8861856 -2.0020535 128.0 +-3.7580135 8.8995228 -1.9997814 128.0 +-3.7127144 8.9450064 -2.004945 128.0 +-3.6529546 8.9558411 -2.00226 128.0 +-3.6132219 9.0162315 -2.0109348 128.0 +-3.5635662 9.0527983 -2.0142395 128.0 +-3.4959559 9.0434647 -2.0072169 128.0 +-3.4393587 9.0620012 -2.0065975 128.0 +-3.3908644 9.1021881 -2.0109348 128.0 +-3.3369663 9.1283369 -2.0121741 128.0 +-3.2818842 9.1514034 -2.0127938 128.0 +-3.223073 9.1639843 -2.0111413 128.0 +-3.1728442 9.2011623 -2.0150657 128.0 +-3.1207137 9.2334347 -2.0179574 128.0 +-3.064615 9.2542667 -2.0183706 128.0 +-2.9969049 9.2393913 -2.0109348 128.0 +-2.9457846 9.2753239 -2.0148592 128.0 +-2.8914311 9.3016338 -2.0167181 128.0 +-2.8394282 9.3360491 -2.020436 128.0 +-2.7832057 9.3570471 -2.0212622 128.0 +-2.7298381 9.3880415 -2.0243604 128.0 +-2.6753924 9.4159088 -2.0268388 128.0 +-2.6212306 9.4453468 -2.0297306 128.0 +-2.5619462 9.4565306 -2.0286977 128.0 +-2.5003726 9.4588289 -2.0258062 128.0 +-2.4337373 9.4408321 -2.0185771 128.0 +-2.3755252 9.4546385 -2.0183706 128.0 +-2.3107214 9.4414759 -2.0123806 128.0 +-2.2600038 9.4859333 -2.01899 128.0 +-2.2094901 9.5329828 -2.0262194 128.0 +-2.1561177 9.5692682 -2.0311763 128.0 +-2.1011276 9.5995226 -2.0348942 128.0 +-2.0405595 9.6045771 -2.0332417 128.0 +-1.971516 9.5680437 -2.0227079 128.0 +-1.9248424 9.6404085 -2.0357203 128.0 +-1.8600819 9.6232185 -2.0295241 128.0 +-1.7952454 9.6036739 -2.0229144 128.0 +-1.7470678 9.6742058 -2.0357203 128.0 +-1.6801146 9.6413679 -2.0264258 128.0 +-1.6207626 9.6505299 -2.0262194 128.0 +-1.5640162 9.6757479 -2.0295241 128.0 +-1.5046176 9.6851625 -2.0295241 128.0 +-1.446028 9.7000179 -2.0307631 128.0 +-1.3776273 9.646718 -2.0175443 128.0 +-1.3283416 9.7276964 -2.0330353 128.0 +-1.2669845 9.7230511 -2.0303502 128.0 +-1.2087473 9.7422943 -2.0328288 128.0 +-1.1496342 9.7553577 -2.0340681 128.0 +-1.0889947 9.7554216 -2.0326221 128.0 +-1.029424 9.7648392 -2.0332417 128.0 +-0.96968192 9.7729187 -2.0336549 128.0 +-0.9115116 9.7981691 -2.0377858 128.0 +-0.84883326 9.7743349 -2.0315895 128.0 +-0.79002368 9.7939882 -2.0346875 128.0 +-0.72984135 9.7976751 -2.034481 128.0 +-0.66790837 9.7756128 -2.0289044 128.0 +-0.60609144 9.7502308 -2.0227079 128.0 +-0.54789627 9.7830734 -2.0289044 128.0 +-0.48888201 9.8067722 -2.0332417 128.0 +-0.42818648 9.7978573 -2.0307631 128.0 +-0.3673982 9.7827005 -2.0270455 128.0 +-0.30767336 9.7945509 -2.0291109 128.0 +-0.24794072 9.8109255 -2.0322092 128.0 +-0.18753101 9.8015013 -2.029937 128.0 +-0.12700398 9.7731171 -2.0237408 128.0 +-0.067136131 9.7883892 -2.0268388 128.0 +-0.0070826625 9.7993793 -2.0291109 128.0 +0.052945457 9.7806482 -2.0251865 128.0 +0.11317133 9.798728 -2.0291109 128.0 +0.17324127 9.7949142 -2.0284913 128.0 +0.23303603 9.7809515 -2.0258062 128.0 +0.29275376 9.769557 -2.0237408 128.0 +0.35096505 9.7196646 -2.0136199 128.0 +0.41369215 9.7906456 -2.0291109 128.0 +0.47352231 9.7830362 -2.0280781 128.0 +0.5279488 9.6773634 -2.0063908 128.0 +0.58826607 9.6895676 -2.0096955 128.0 +0.64829624 9.694562 -2.0115545 128.0 +0.7100482 9.7216291 -2.0181639 128.0 +0.76621079 9.6731968 -2.0088694 128.0 +0.82663161 9.6809874 -2.0115545 128.0 +0.88789034 9.6961946 -2.015892 128.0 +0.94080228 9.6233711 -2.0016403 128.0 +1.0048891 9.6660776 -2.0119677 128.0 +1.0654655 9.6714001 -2.0144463 128.0 +1.1321374 9.7278528 -2.0278716 128.0 +1.1951379 9.7479162 -2.0336549 128.0 +1.2565523 9.7530146 -2.03634 128.0 +1.3060279 9.66852 -2.0200229 128.0 +1.3697085 9.6913261 -2.0266323 128.0 +1.4272909 9.6701565 -2.0239472 128.0 +1.4784169 9.6080284 -2.0125873 128.0 +1.5455416 9.6499805 -2.0235341 128.0 +1.6007082 9.6161871 -2.0183706 128.0 +1.6631793 9.6264315 -2.0227079 128.0 +1.7113502 9.5553684 -2.0096955 128.0 +1.7628143 9.5062065 -2.0014338 128.0 +1.8192675 9.4856014 -1.9993683 128.0 +1.8819994 9.4972944 -2.0043254 128.0 +1.9531766 9.5488358 -2.0179574 128.0 +2.007894 9.5184813 -2.0140331 128.0 +2.0602348 9.4782543 -2.0080433 128.0 +2.1204901 9.4749832 -2.0101087 128.0 +2.178807 9.4627466 -2.0103152 128.0 +2.2429128 9.4749079 -2.015892 128.0 +2.295459 9.4381495 -2.0109348 128.0 +2.3519051 9.418191 -2.0096955 128.0 +2.4213059 9.4490786 -2.0196097 128.0 +2.4628279 9.3715868 -2.0059779 128.0 +2.5164678 9.3421268 -2.0028796 128.0 +2.5724416 9.3217945 -2.0018468 128.0 +2.6269302 9.2964191 -1.9997814 128.0 +2.6985996 9.3308821 -2.0109348 128.0 +2.752749 9.3038273 -2.0086629 128.0 +2.8038347 9.2670946 -2.0043254 128.0 +2.8591986 9.2450418 -2.0032926 128.0 +2.9123337 9.2161283 -2.0008142 128.0 +2.9742372 9.2148466 -2.0045319 128.0 +3.0301099 9.1945648 -2.0041189 128.0 +3.0867815 9.1767263 -2.0043254 128.0 +3.1443012 9.1613159 -2.0051515 128.0 +3.1991618 9.1381559 -2.0043254 128.0 +3.2485938 9.0999241 -2.0001945 128.0 +3.308718 9.091773 -2.0028796 128.0 +3.3644419 9.0712996 -2.0028796 128.0 +3.4089725 9.0211964 -1.9962702 128.0 +3.4614499 8.9928045 -1.9946177 128.0 +3.5337012 9.0151224 -2.0045319 128.0 +3.579885 8.9705515 -1.9993683 128.0 +3.5987775 8.8595781 -1.9791268 128.0 +3.6646571 8.8653612 -1.9855298 128.0 +3.7186058 8.8418064 -1.9853232 128.0 +3.7604742 8.7900362 -1.9787138 128.0 +3.8080928 8.7524414 -1.975409 128.0 +3.8704331 8.7485962 -1.9799531 128.0 +3.923238 8.7228985 -1.9795399 128.0 +3.9713988 8.6870928 -1.9768548 128.0 +4.0431771 8.7024927 -1.9861494 128.0 +4.1002574 8.6854839 -1.9880083 128.0 +4.1555886 8.6645727 -1.989041 128.0 +4.2116747 8.6450691 -1.9904869 128.0 +4.2446823 8.578723 -1.9809858 128.0 +4.2972407 8.552516 -1.9809858 128.0 +4.3349648 8.4972258 -1.9741697 128.0 +4.3928704 8.4817619 -1.9768548 128.0 +4.4015808 8.3723717 -1.957233 128.0 +4.4648447 8.367651 -1.9626032 128.0 +4.5454526 8.3943043 -1.9756155 128.0 +4.5700192 8.3173761 -1.9638424 128.0 +4.6252551 8.2968702 -1.9657013 128.0 +4.7083449 8.3253975 -1.9795399 128.0 +4.7637215 8.3039894 -1.9813988 128.0 +4.7978549 8.2458487 -1.9743763 128.0 +4.8543267 8.226366 -1.9768548 128.0 +4.8810997 8.1569643 -1.9671472 128.0 +4.9153252 8.1009283 -1.9607443 128.0 +4.9623756 8.0664492 -1.9597116 128.0 +4.9946914 8.0084515 -1.9528955 128.0 +5.0646496 8.0107355 -1.9611573 128.0 +5.1031494 7.9630318 -1.9570265 128.0 +5.1439195 7.9192615 -1.9539282 128.0 +5.2026358 7.9030781 -1.9578526 128.0 +5.255374 7.8775182 -1.959505 128.0 +5.2811441 7.8118882 -1.9510366 128.0 +5.3262134 7.7753005 -1.9500039 128.0 +5.3503914 7.7087126 -1.941329 128.0 +5.4065948 7.6885443 -1.9446337 128.0 +5.4775114 7.6886959 -1.9533086 128.0 +5.5165696 7.6438341 -1.9504169 128.0 +5.543735 7.5829849 -1.9433944 128.0 +5.597146 7.5582623 -1.9458729 128.0 +5.6299148 7.5057735 -1.9411224 128.0 +5.6681695 7.460959 -1.9384373 128.0 +5.7120523 7.4237127 -1.9378177 128.0 +5.7761383 7.4124503 -1.9442205 128.0 +5.8354521 7.3945355 -1.9489712 128.0 +5.8684983 7.3433032 -1.9448402 128.0 +5.9035978 7.2949872 -1.9415355 128.0 +5.9445267 7.2540851 -1.9402962 128.0 +5.9758053 7.2016606 -1.9359587 128.0 +6.0104403 7.1536207 -1.9328606 128.0 +6.0618286 7.1255503 -1.9353391 128.0 +6.1041589 7.0867386 -1.934926 128.0 +6.1256638 7.0240779 -1.9279035 128.0 +6.1828938 7.0024958 -1.9324474 128.0 +6.2048779 6.941083 -1.925838 128.0 +6.2637639 6.9210167 -1.9310017 128.0 +6.2803349 6.8543167 -1.9229463 128.0 +6.3003168 6.7919793 -1.9161304 128.0 +6.3412032 6.75248 -1.9159238 128.0 +6.4007177 6.7325912 -1.9215006 128.0 +6.4405508 6.6917801 -1.9210875 128.0 +6.4896827 6.6605458 -1.923566 128.0 +6.489892 6.5794997 -1.9113798 128.0 +6.5329061 6.5423245 -1.9122061 128.0 +6.572926 6.5021162 -1.9122061 128.0 +6.6168971 6.465766 -1.9134452 128.0 +6.6451826 6.4141712 -1.9101405 128.0 +6.7176952 6.4050112 -1.9198482 128.0 +6.7404876 6.3482423 -1.9150976 128.0 +6.7556734 6.28477 -1.9082817 128.0 +6.7566466 6.2087722 -1.8975413 128.0 +6.8170748 6.1875839 -1.9039441 128.0 +6.8505416 6.1417198 -1.902705 128.0 +6.9144669 6.1229229 -1.9101405 128.0 +6.9276037 6.059123 -1.9033245 128.0 +6.9120831 5.971087 -1.8886598 128.0 +6.9493356 5.9291978 -1.8888663 128.0 +6.9998012 5.8984256 -1.8927907 128.0 +7.0456376 5.8635015 -1.8954757 128.0 +7.0799713 5.8189173 -1.8950627 128.0 +7.1185808 5.7778325 -1.8958889 128.0 +7.1485548 5.7297611 -1.894443 128.0 +7.186646 5.6882195 -1.8952693 128.0 +7.2252674 5.6470289 -1.896302 128.0 +7.187746 5.5469928 -1.8770932 128.0 +7.226316 5.5063434 -1.8783325 128.0 +7.2552748 5.4583702 -1.8770932 128.0 +7.2831321 5.4096661 -1.8756474 128.0 +7.3422256 5.3839703 -1.8824635 128.0 +7.3648195 5.3313589 -1.8797783 128.0 +7.4164987 5.2997222 -1.8847355 128.0 +7.3905125 5.2129436 -1.8696576 128.0 +7.4520693 5.1881843 -1.8772998 128.0 +7.4902139 5.1467948 -1.8789521 128.0 +7.5435171 5.1155667 -1.8845289 128.0 +7.5918388 5.0806127 -1.8888663 128.0 +7.6261358 5.0360913 -1.8896925 128.0 +7.6470566 4.9827933 -1.8872139 128.0 +7.6857162 4.9410696 -1.8892795 128.0 +7.7043223 4.8864803 -1.8863878 128.0 +7.7499194 4.8489771 -1.8903122 128.0 +7.7637067 4.7915688 -1.8863878 128.0 +7.7820964 4.737227 -1.8837026 128.0 +7.8361826 4.7044973 -1.889899 128.0 +7.8430114 4.6433659 -1.8845289 128.0 +7.9034634 4.6139011 -1.8923776 128.0 +7.8968577 4.5453062 -1.8839092 128.0 +7.9773579 4.5267072 -1.896715 128.0 +8.0118141 4.4814954 -1.8983674 128.0 +7.9320593 4.3731966 -1.8725492 128.0 +8.0679255 4.3837752 -1.8987806 128.0 +8.1283112 4.3522024 -1.9068358 128.0 +8.0804415 4.2629795 -1.8890729 128.0 +8.0856104 4.2024879 -1.8841158 128.0 +8.0973101 4.1456614 -1.8808111 128.0 +8.1531715 4.1113195 -1.8880402 128.0 +8.1826267 4.0633917 -1.8890729 128.0 +8.2408056 4.0294409 -1.8969216 128.0 +8.2909403 3.9911089 -1.9029114 128.0 +8.310853 3.9380665 -1.9018787 128.0 +8.3002777 3.8708682 -1.8938234 128.0 +8.3585529 3.835783 -1.9018787 128.0 +8.3418036 3.7663038 -1.8925842 128.0 +8.3710155 3.7178288 -1.89403 128.0 +8.4062223 3.6718788 -1.8969216 128.0 +8.3854427 3.6016934 -1.8870075 128.0 +8.416398 3.5539801 -1.8890729 128.0 +8.468771 3.5150251 -1.8960954 128.0 +8.4104548 3.4304736 -1.8779194 128.0 +8.5321569 3.4192078 -1.900846 128.0 +8.5802889 3.3775439 -1.9070424 128.0 +8.5853367 3.3188345 -1.9035311 128.0 +8.5982218 3.2633154 -1.9018787 128.0 +8.6043301 3.2053723 -1.8987806 128.0 +8.5788078 3.136054 -1.8886598 128.0 +8.6273603 3.0939269 -1.8952693 128.0 +8.6729488 3.0503478 -1.9012591 128.0 +8.7303505 3.0104723 -1.909934 128.0 +8.7069473 2.9427476 -1.9006394 128.0 +8.6960459 2.8797309 -1.8942366 128.0 +8.7191362 2.8281305 -1.8954757 128.0 +8.7307301 2.7728002 -1.8942366 128.0 +8.7737408 2.7273107 -1.9000198 128.0 +8.8052874 2.6779807 -1.9033245 128.0 +8.8009214 2.6177642 -1.8987806 128.0 +8.8656721 2.5779214 -1.9095209 128.0 +8.9048529 2.5301607 -1.9146845 128.0 +8.8589287 2.4584646 -1.9012591 128.0 +8.8540144 2.3986874 -1.8969216 128.0 +8.8997812 2.3525679 -1.9037377 128.0 +8.9263659 2.3010914 -1.9064227 128.0 +8.9763765 2.2553384 -1.9142715 128.0 +8.9444284 2.1890514 -1.9043573 128.0 +9.0090876 2.1463757 -1.9155108 128.0 +8.9572735 2.0760312 -1.9014657 128.0 +8.9832058 2.0240428 -1.9043573 128.0 +9.0155277 1.973279 -1.9086947 128.0 +9.0178957 1.9158899 -1.9066293 128.0 +9.0649385 1.8678285 -1.9142715 128.0 +9.0867825 1.8142798 -1.9165435 128.0 +9.0631609 1.751804 -1.9091078 128.0 +9.1064386 1.7022747 -1.9161304 128.0 +9.1051588 1.6442795 -1.9136518 128.0 +9.125679 1.5902284 -1.9159238 128.0 +9.1449137 1.5358254 -1.9179893 128.0 +9.12712 1.4753115 -1.9122061 128.0 +9.1824093 1.4264923 -1.9221202 128.0 +9.1513119 1.3642068 -1.9136518 128.0 +9.2060032 1.3146713 -1.923566 128.0 +9.1848135 1.254187 -1.9173696 128.0 +9.20786 1.1998298 -1.9206743 128.0 +9.2344675 1.1457192 -1.9248053 128.0 +9.2209187 1.0866303 -1.9204679 128.0 +9.1807375 1.0248193 -1.9105537 128.0 +9.2170172 0.97164917 -1.9169565 128.0 +9.2529888 0.9180724 -1.9233595 128.0 +9.2360401 0.8591944 -1.9186089 128.0 +9.2411385 0.80250692 -1.9186089 128.0 +9.2761221 0.74822927 -1.9250119 128.0 +9.2766352 0.69100708 -1.9241856 128.0 +9.2914381 0.63480777 -1.9264576 128.0 +9.2287531 0.57365406 -1.9124125 128.0 +9.2672682 0.51898772 -1.9198482 128.0 +9.284936 0.4628464 -1.9229463 128.0 +9.2739162 0.40526775 -1.9200548 128.0 +9.2654734 0.34795207 -1.9177828 128.0 +9.2527647 0.29063225 -1.9146845 128.0 +9.2758923 0.23439759 -1.9192286 128.0 +9.3016119 0.17794628 -1.9243922 128.0 +9.2271957 0.11988726 -1.9084882 128.0 +9.3050528 0.063801296 -1.9248053 128.0 +9.2808075 0.0066866907 -1.9196416 128.0 +9.2885017 -0.050301451 -1.921294 128.0 +9.2704077 -0.107091 -1.9175762 128.0 +9.3096857 -0.16467892 -1.9260446 128.0 +9.2439413 -0.22026347 -1.9124125 128.0 +9.3235893 -0.27940822 -1.9295559 128.0 +9.3578777 -0.33791628 -1.937198 128.0 +9.2559166 -0.39111966 -1.9161304 128.0 +9.2621384 -0.44833091 -1.9179893 128.0 +9.236742 -0.5039289 -1.9132388 128.0 +9.2559395 -0.56195784 -1.9179893 128.0 +9.2366972 -0.6176967 -1.9146845 128.0 +9.2015057 -0.67208093 -1.9080751 128.0 +9.2313471 -0.73123038 -1.9153042 128.0 +9.2325363 -0.78835827 -1.9165435 128.0 +9.2518845 -0.84722281 -1.9217072 128.0 +9.2728043 -0.90654469 -1.9272839 128.0 +9.2991829 -0.96676189 -1.9340999 128.0 +9.255146 -1.0196253 -1.9260446 128.0 +9.2458 -1.0760555 -1.9254249 128.0 +9.2584467 -1.135147 -1.9295559 128.0 +9.2600412 -1.1930592 -1.9314147 128.0 +9.226366 -1.24632 -1.925838 128.0 +9.2137012 -1.302224 -1.9248053 128.0 +9.2268324 -1.3618759 -1.9293493 128.0 +9.2057304 -1.4165311 -1.9266642 128.0 +9.2132893 -1.4756196 -1.9301755 128.0 +9.1760721 -1.5274655 -1.9241856 128.0 +9.1771326 -1.585572 -1.9264576 128.0 +9.2288704 -1.6528889 -1.9396766 128.0 +9.177187 -1.7018156 -1.9307951 128.0 +9.131979 -1.7514604 -1.9233595 128.0 +9.1201 -1.8072702 -1.9231529 128.0 +9.1213017 -1.8657445 -1.925838 128.0 +9.0704288 -1.9133981 -1.9173696 128.0 +9.0183611 -1.9602902 -1.9086947 128.0 +8.8228369 -1.9745686 -1.869038 128.0 +8.66467 -1.9950835 -1.8374364 128.0 +8.4094706 -1.9907473 -1.7847673 128.0 +8.2050495 -1.9956098 -1.7430451 128.0 +8.1679688 -2.0397549 -1.7376748 128.0 +8.0121784 -2.0531659 -1.7064865 128.0 +7.932241 -2.0846353 -1.6918217 128.0 +7.9797659 -2.1495521 -1.7050406 128.0 +7.9937787 -2.2060215 -1.7110305 128.0 +7.4914131 -2.1169624 -1.6038332 128.0 +7.1765656 -2.0756423 -1.5375321 128.0 +7.0820675 -2.0954902 -1.5195626 128.0 +6.7618971 -2.04598 -1.4518156 128.0 +6.5875015 -2.0374258 -1.4160831 128.0 +6.4853106 -2.0495086 -1.3962548 128.0 +6.3105927 -2.0369759 -1.3603158 128.0 +6.2477937 -2.0591235 -1.3491623 128.0 +6.0300884 -2.0284896 -1.3035157 128.0 +5.9823608 -2.0533829 -1.2956669 128.0 +5.7544746 -2.0147314 -1.2475418 128.0 +5.6682849 -2.0236883 -1.2310182 128.0 +5.5720901 -2.0279844 -1.2122225 128.0 +5.5182595 -2.0468266 -1.2029279 128.0 +5.4726462 -2.0681977 -1.1954923 128.0 +5.3283606 -2.0511312 -1.1657497 128.0 +5.0651579 -1.9856026 -1.1089497 128.0 +5.0083499 -1.9988763 -1.0988289 128.0 +4.9796734 -2.0229421 -1.095111 128.0 +4.8261051 -1.995155 -1.0628899 128.0 +4.7948318 -2.0167649 -1.0585525 128.0 +4.7553792 -2.0346031 -1.0523561 128.0 +4.6387291 -2.018466 -1.0283968 128.0 +4.6253619 -2.046495 -1.0281903 128.0 +4.6448426 -2.0892839 -1.0356259 128.0 +4.7146935 -2.1555746 -1.0548346 128.0 +4.6046562 -2.1395304 -1.0323212 128.0 +4.6179862 -2.1802735 -1.0385176 128.0 +4.5886412 -2.2009525 -1.0347997 128.0 +4.5266705 -2.2054996 -1.0234396 128.0 +4.5183144 -2.2358365 -1.0246789 128.0 +4.5080075 -2.2652752 -1.0255052 128.0 +4.5759525 -2.334686 -1.0449204 128.0 +4.4989843 -2.3303237 -1.0300492 128.0 +4.5131812 -2.3729088 -1.0368651 128.0 +4.4605532 -2.3802915 -1.0277772 128.0 +4.4363995 -2.4024916 -1.0255052 128.0 +4.4275775 -2.4329655 -1.026951 128.0 +4.4587159 -2.4858115 -1.0381044 128.0 +4.4289002 -2.5049353 -1.0345932 128.0 +4.3480954 -2.4945769 -1.0186892 128.0 +4.3623071 -2.5384307 -1.0259182 128.0 +4.3887839 -2.5900104 -1.0362456 128.0 +4.300602 -2.5736864 -1.0184826 128.0 +4.3424492 -2.6350446 -1.0327343 128.0 +4.3553677 -2.6795821 -1.0399634 128.0 +4.3139372 -2.6907234 -1.033767 128.0 +4.2576485 -2.6920466 -1.0238528 128.0 +4.2871838 -2.7476826 -1.0354193 128.0 +4.2554736 -2.7643437 -1.0317016 128.0 +4.254777 -2.801162 -1.0358324 128.0 +4.2904162 -2.862509 -1.0492579 128.0 +4.1106501 -2.7791901 -1.0079488 128.0 +4.1605201 -2.8502524 -1.0250921 128.0 +4.2530766 -2.9521539 -1.0533888 128.0 +4.0940146 -2.8791451 -1.0170368 128.0 +4.0483794 -2.8843424 -1.0098077 128.0 +4.0131502 -2.8965323 -1.0052637 128.0 +3.9984612 -2.9234116 -1.0060898 128.0 +4.0968256 -3.0340643 -1.0366586 128.0 +4.0577803 -3.0438812 -1.0312884 128.0 +4.0608425 -3.085294 -1.0370717 128.0 +4.038733 -3.1077662 -1.0362456 128.0 +4.0381117 -3.1469219 -1.0412027 128.0 +4.0002918 -3.1570938 -1.0362456 128.0 +3.9281037 -3.1394341 -1.0219939 128.0 +3.9285424 -3.1794801 -1.027364 128.0 +3.8499279 -3.1551547 -1.0112535 128.0 +3.7664909 -3.1256127 -0.99369711 128.0 +3.7839501 -3.1795039 -1.0038178 128.0 +3.9149148 -3.3307223 -1.0455401 128.0 +3.847698 -3.3144541 -1.0325277 128.0 +3.7550197 -3.274981 -1.0122862 128.0 +3.8558779 -3.404809 -1.0463663 128.0 +3.8130291 -3.4088423 -1.04017 128.0 +3.7194934 -3.3665221 -1.0195153 128.0 +3.6598094 -3.3535891 -1.0083618 128.0 +3.5997081 -3.3393862 -0.99700183 128.0 +3.5527594 -3.3366294 -0.98935968 128.0 +3.5336375 -3.3597143 -0.98977274 128.0 +3.5129564 -3.3813331 -0.98977274 128.0 +3.7121999 -3.617218 -1.0546281 128.0 +3.6801825 -3.6303086 -1.0517365 128.0 +3.612833 -3.6078849 -1.038311 128.0 +3.5899391 -3.6292894 -1.0381044 128.0 +3.6264141 -3.7114291 -1.0558674 128.0 +3.5138729 -3.6406882 -1.0286033 128.0 +3.5022712 -3.6735101 -1.031908 128.0 +3.5118661 -3.7291183 -1.0418223 128.0 +3.4762557 -3.7369859 -1.0378979 128.0 +3.4459777 -3.7503207 -1.0356259 128.0 +3.4367115 -3.7866082 -1.0399634 128.0 +3.4225571 -3.8178232 -1.042855 128.0 +3.3893366 -3.8277643 -1.0397568 128.0 +3.3496816 -3.8300774 -1.0345932 128.0 +3.3158832 -3.8387125 -1.0312884 128.0 +3.2751191 -3.8388898 -1.0257117 128.0 +3.3177071 -3.9374728 -1.047399 128.0 +3.2803404 -3.941963 -1.0430615 128.0 +3.2560914 -3.9620166 -1.0430615 128.0 +3.2693346 -4.0282607 -1.0556608 128.0 +3.2439442 -4.0474815 -1.0554543 128.0 +3.1898992 -4.0304852 -1.0455401 128.0 +3.2410302 -4.1471143 -1.0715649 128.0 +3.1515572 -4.0840435 -1.0494645 128.0 +3.058238 -4.0138087 -1.0257117 128.0 +3.0953197 -4.1145921 -1.047399 128.0 +3.0886853 -4.1586413 -1.0540085 128.0 +3.0411224 -4.1475325 -1.0461597 128.0 +2.9863541 -4.1256948 -1.0356259 128.0 +2.9899969 -4.1845393 -1.0461597 128.0 +2.9676487 -4.2076044 -1.047399 128.0 +2.918853 -4.1928124 -1.0389307 128.0 +2.9135749 -4.2404795 -1.0465728 128.0 +2.8567464 -4.2129297 -1.0350063 128.0 +2.8591416 -4.2726617 -1.0457467 128.0 +2.8296359 -4.2852259 -1.0445074 128.0 +2.817178 -4.3238211 -1.0498775 128.0 +2.7509081 -4.2793002 -1.0343866 128.0 +2.6968222 -4.2523084 -1.0234396 128.0 +2.6846929 -4.2911701 -1.0290164 128.0 +2.6300471 -4.2617693 -1.0176564 128.0 +2.655745 -4.3630724 -1.0387241 128.0 +2.6062591 -4.3415375 -1.0294296 128.0 +2.5975168 -4.3877568 -1.0368651 128.0 +2.5601854 -4.3858681 -1.0325277 128.0 +2.5185821 -4.3760548 -1.0263313 128.0 +2.4738157 -4.359941 -1.0186892 128.0 +2.4494054 -4.3793073 -1.0197219 128.0 +2.4442205 -4.4336677 -1.029223 128.0 +2.4188387 -4.4520206 -1.0300492 128.0 +2.3780813 -4.4417644 -1.0240593 128.0 +2.3407376 -4.4372344 -1.0195153 128.0 +2.3261027 -4.475822 -1.0252986 128.0 +2.3191087 -4.5300717 -1.0347997 128.0 +2.300962 -4.5634365 -1.0393437 128.0 +2.2576854 -4.5467978 -1.0321146 128.0 +2.2314637 -4.5640812 -1.0329407 128.0 +2.2360978 -4.6455693 -1.0488448 128.0 +2.1354811 -4.5071239 -1.013319 128.0 +2.1019957 -4.5077281 -1.0104274 128.0 +2.067359 -4.5054235 -1.006916 128.0 +2.0316222 -4.5001888 -1.0027851 128.0 +2.0039713 -4.5125699 -1.0027851 128.0 +1.9797701 -4.5328507 -1.004644 128.0 +1.9658223 -4.5772772 -1.0120797 128.0 +1.9335124 -4.5793381 -1.0098077 128.0 +1.9027519 -4.5847898 -1.0083618 128.0 +1.8841932 -4.6199336 -1.0137321 128.0 +1.8274181 -4.5605679 -0.99762148 128.0 +2.8793337 -7.3148003 -1.6199437 128.0 +1.792838 -4.6383185 -1.0102208 128.0 +1.750455 -4.6126418 -1.001959 128.0 +2.7442043 -7.36656 -1.6199437 128.0 +1.14373 -3.1294615 -0.66384357 128.0 +1.1225245 -3.1308944 -0.66260427 128.0 +1.1403052 -3.2429452 -0.68615049 128.0 +1.1749347 -3.4080515 -0.72146982 128.0 +1.5763571 -4.6646762 -0.99989349 128.0 +1.0708835 -3.2345917 -0.67974758 128.0 +1.0676221 -3.2922895 -0.69110763 128.0 +1.066358 -3.3584597 -0.70432651 128.0 +1.0492165 -3.3761516 -0.70680511 128.0 +1.0199389 -3.3544431 -0.70060873 128.0 +0.98678261 -3.3184364 -0.69131416 128.0 +0.96530956 -3.3206706 -0.69048798 128.0 +0.90452945 -3.1844144 -0.65929955 128.0 +0.88785172 -3.2002752 -0.66157156 128.0 +0.87178099 -3.2188842 -0.66446322 128.0 +0.85501498 -3.2355239 -0.66694176 128.0 +1.944926 -7.5449815 -1.6052791 128.0 +1.8962096 -7.5472841 -1.6032135 128.0 +1.8533542 -7.5730329 -1.6063118 128.0 +1.8068521 -7.5842619 -1.6063118 128.0 +0.83137321 -3.5881162 -0.73799348 128.0 +0.8102017 -3.5969679 -0.73881966 128.0 +1.677616 -7.6649814 -1.6168456 128.0 +1.6216044 -7.6330194 -1.6077576 128.0 +1.5751336 -7.6447425 -1.6081706 128.0 +1.5274302 -7.6504254 -1.6073445 128.0 +1.4832451 -7.6740632 -1.6104426 128.0 +1.4357704 -7.6810966 -1.6100296 128.0 +1.386526 -7.6782074 -1.6075511 128.0 +1.3365312 -7.6701837 -1.6040398 128.0 +1.2917119 -7.6917491 -1.6069314 128.0 +1.2413685 -7.6802125 -1.6028005 128.0 +1.195272 -7.6944523 -1.6042463 128.0 +1.1494802 -7.711319 -1.6063118 128.0 +1.0970232 -7.6823888 -1.5986695 128.0 +1.0464215 -7.6637697 -1.5932994 128.0 +1.0000101 -7.6748977 -1.5943321 128.0 +0.95229644 -7.676034 -1.5932994 128.0 +0.90357554 -7.668129 -1.5904077 128.0 +0.86215436 -7.724093 -1.6011481 128.0 +0.81351256 -7.7175612 -1.5986695 128.0 +0.76353371 -7.6961188 -1.5930928 128.0 +0.71638751 -7.7016335 -1.5932994 128.0 +0.67013395 -7.7175813 -1.595778 128.0 +0.62253106 -7.7186217 -1.5951583 128.0 +0.57414061 -7.7086363 -1.5922667 128.0 +0.52716422 -7.7168946 -1.5932994 128.0 +0.47889313 -7.7053356 -1.5902013 128.0 +0.43176931 -7.71106 -1.5908208 128.0 +0.38415447 -7.7077007 -1.5895816 128.0 +0.3380937 -7.7382603 -1.5955714 128.0 +0.29034892 -7.733345 -1.5941256 128.0 +0.24313864 -7.7428045 -1.595778 128.0 +0.19555083 -7.7412162 -1.5951583 128.0 +0.14765404 -7.7217269 -1.5908208 128.0 +0.10042468 -7.7342277 -1.5932994 128.0 +0.053128477 -7.7581806 -1.5982565 128.0 +0.0054950402 -7.7202015 -1.5902013 128.0 +-0.042127639 -7.7670541 -1.6001154 128.0 +-0.089604437 -7.7509952 -1.5968107 128.0 +-0.13752449 -7.7708435 -1.6011481 128.0 +-0.18457474 -7.743443 -1.5955714 128.0 +-0.232289 -7.749011 -1.5970172 128.0 +-0.28004327 -7.7533064 -1.5982565 128.0 +-0.32761139 -7.7514424 -1.5982565 128.0 +-0.37474179 -7.7404904 -1.5963975 128.0 +-0.42159039 -7.7263217 -1.593919 128.0 +-0.47112337 -7.7587485 -1.6013547 128.0 +-0.52067864 -7.7849994 -1.6075511 128.0 +-0.56793803 -7.774827 -1.6061052 128.0 +-0.61679107 -7.7858267 -1.6092035 128.0 +-0.66139072 -7.7448497 -1.6013547 128.0 +-0.70889974 -7.7406454 -1.6013547 128.0 +-0.7573337 -7.7458882 -1.6034201 128.0 +-0.80838698 -7.7751575 -1.6106492 128.0 +-0.85640055 -7.7729683 -1.6112689 128.0 +-0.89966881 -7.7296638 -1.6032135 128.0 +-0.9455328 -7.7113729 -1.6005285 128.0 +-0.9910813 -7.6918402 -1.5976368 128.0 +-1.0364257 -7.6720395 -1.5947452 128.0 +-1.0827966 -7.6606913 -1.5937124 128.0 +-1.1312096 -7.6635828 -1.595778 128.0 +-1.1783599 -7.6574645 -1.5959845 128.0 +-1.228881 -7.6723113 -1.6007351 128.0 +-1.2759343 -7.6646266 -1.6007351 128.0 +-1.3284353 -7.6884708 -1.6075511 128.0 +-1.3716195 -7.6580229 -1.6028005 128.0 +-1.4264302 -7.6917925 -1.6118885 128.0 +-1.4794955 -7.713645 -1.618498 128.0 +-1.5252765 -7.696744 -1.6168456 128.0 +-1.5685534 -7.6680679 -1.6127146 128.0 +-1.6159781 -7.6602139 -1.6131278 128.0 +-1.6712613 -7.6883988 -1.6213896 128.0 +-1.7239598 -7.7028251 -1.6267598 128.0 +-1.773386 -7.7016373 -1.6288253 128.0 +-1.8181301 -7.6801372 -1.6265533 128.0 +-1.8642956 -7.6650338 -1.6257271 128.0 +-1.9112923 -7.6534505 -1.6257271 128.0 +-1.9587027 -7.6434746 -1.6261401 128.0 +-2.0063112 -7.6341515 -1.6267598 128.0 +-2.0571868 -7.6368136 -1.6300645 128.0 +-2.0948985 -7.5910354 -1.6228354 128.0 +-2.1345201 -7.5535574 -1.6174653 128.0 +-2.1868072 -7.5609965 -1.6220093 128.0 +-2.2303839 -7.5380535 -1.6199437 128.0 +-2.2825439 -7.5438933 -1.6242813 128.0 +-2.314626 -7.4839425 -1.6141605 128.0 +-2.3631558 -7.4779959 -1.6160194 128.0 +-2.4065917 -7.4559059 -1.614367 128.0 +-2.4575005 -7.4567971 -1.6178783 128.0 +-2.5053916 -7.4480696 -1.6193242 128.0 +-2.553268 -7.4390345 -1.62077 128.0 +-2.5982184 -7.421381 -1.6203569 128.0 +-2.6450219 -7.4089851 -1.621183 128.0 +-2.6971242 -7.411005 -1.625314 128.0 +-1.3936325 -3.7568762 -0.80636013 128.0 +-2.7615826 -7.3077879 -1.6096165 128.0 +-2.8288624 -7.3491464 -1.6228354 128.0 +-2.8749738 -7.3343835 -1.623455 128.0 +-2.9199226 -7.3166051 -1.623455 128.0 +-2.9761753 -7.326653 -1.629858 128.0 +-3.0173373 -7.299211 -1.6277925 128.0 +-3.0563784 -7.2670307 -1.6246943 128.0 +-3.1066825 -7.2616343 -1.6277925 128.0 +-3.1527419 -7.2460241 -1.6286187 128.0 +-3.2034764 -7.2408595 -1.6319234 128.0 +-1.4179043 -3.1519349 -0.69007486 128.0 +-1.4359971 -3.1405058 -0.68945527 128.0 +-1.4733777 -3.1706796 -0.69854325 128.0 +-1.615597 -3.4217153 -0.75926769 128.0 +-1.6302156 -3.3985043 -0.7561695 128.0 +-1.6488953 -3.3840392 -0.75513679 128.0 +-1.6678928 -3.3703501 -0.75431061 128.0 +-1.6885415 -3.3600528 -0.75431061 128.0 +-1.7104604 -3.3522437 -0.75493026 128.0 +-1.732347 -3.3442917 -0.75554991 128.0 +-1.7582978 -3.3439922 -0.75802845 128.0 +-3.7670765 -7.0598178 -1.6496863 128.0 +-3.786099 -6.9918289 -1.6389459 128.0 +-3.8223331 -6.956461 -1.6360544 128.0 +-3.8744729 -6.9499693 -1.6401852 128.0 +-3.9151175 -6.9226584 -1.6393591 128.0 +-3.9643362 -6.9103875 -1.6422508 128.0 +-3.9973142 -6.869864 -1.6383264 128.0 +-4.0379 -6.8426795 -1.6377068 128.0 +-4.0813169 -6.8202934 -1.6383264 128.0 +-4.1378069 -6.8193817 -1.6443162 128.0 +-4.1693192 -6.7771964 -1.6401852 128.0 +-4.2320523 -6.7855258 -1.6486536 128.0 +-4.2558317 -6.7313113 -1.6416311 128.0 +-4.2859683 -6.6877713 -1.6372936 128.0 +-2.0342162 -3.13131 -0.74873388 128.0 +-2.0496256 -3.1130486 -0.74728805 128.0 +-2.074661 -3.1093671 -0.74956006 128.0 +-4.4625025 -6.6008391 -1.6424572 128.0 +-4.5200605 -6.5983577 -1.6488602 128.0 +-4.5504208 -6.5560303 -1.6451423 128.0 +-4.6040692 -6.547195 -1.6500995 128.0 +-4.6549411 -6.5339632 -1.6540239 128.0 +-4.6760507 -6.4790955 -1.6472079 128.0 +-4.7214918 -6.4581804 -1.6492733 128.0 +-4.7808261 -6.4558239 -1.6562959 128.0 +-4.7968655 -6.3950577 -1.648034 128.0 +-4.8496275 -6.3834243 -1.6527846 128.0 +-4.9071994 -6.3775873 -1.6591874 128.0 +-4.9528546 -6.3558474 -1.6614594 128.0 +-4.9875174 -6.3199606 -1.6600137 128.0 +-5.0365858 -6.3022332 -1.663525 128.0 +-5.0640821 -6.2575197 -1.6598071 128.0 +-5.0955606 -6.2180042 -1.6575351 128.0 +-5.1461129 -6.2016816 -1.661666 128.0 +-5.1891041 -6.175982 -1.6633184 128.0 +-5.2218294 -6.1380639 -1.661666 128.0 +-5.2581167 -6.104425 -1.661253 128.0 +-5.2903295 -6.0661473 -1.6596006 128.0 +-5.3365169 -6.0438409 -1.6624922 128.0 +-5.3839335 -6.0226545 -1.665797 128.0 +-5.4332604 -6.0032902 -1.6697214 128.0 +-5.4719768 -5.9720035 -1.6703409 128.0 +-5.5178328 -5.948359 -1.6732326 128.0 +-5.5662827 -5.9272289 -1.6769505 128.0 +-5.566144 -5.8546696 -1.665797 128.0 +-5.616889 -5.835916 -1.6703409 128.0 +-5.6539574 -5.802743 -1.6707541 128.0 +-5.6942654 -5.7728181 -1.6721998 128.0 +-5.7427149 -5.7509255 -1.6761242 128.0 +-5.7771983 -5.7148924 -1.6759176 128.0 +-5.8408461 -5.7073746 -1.684386 128.0 +-5.8419662 -5.6388102 -1.6744719 128.0 +-5.8743305 -5.6008329 -1.6738522 128.0 +-5.9320903 -5.5868216 -1.6806682 128.0 +-5.9676914 -5.5516505 -1.6810813 128.0 +-6.0189333 -5.5308185 -1.6860384 128.0 +-6.0505834 -5.4918098 -1.6854188 128.0 +-6.0593977 -5.432373 -1.6783962 128.0 +-6.1116605 -5.4119568 -1.6837664 128.0 +-6.1337061 -5.3646917 -1.6806682 128.0 +-6.1687288 -5.3288741 -1.6812879 128.0 +-6.2422466 -5.3258538 -1.6926479 128.0 +-6.2673264 -5.2811465 -1.6905824 128.0 +-6.288332 -5.2332029 -1.6874843 128.0 +-6.3354416 -5.2069454 -1.6916151 128.0 +-6.3194122 -5.1291256 -1.6786028 128.0 +-6.334733 -5.0774026 -1.6742653 128.0 +-6.364234 -5.0372233 -1.6738522 128.0 +-6.4435878 -5.0360389 -1.6868646 128.0 +-6.4914074 -5.0095592 -1.6914086 128.0 +-6.5220232 -4.9696341 -1.6914086 128.0 +-6.5023556 -4.8918734 -1.6781896 128.0 +-6.5063295 -4.8326297 -1.6713737 128.0 +-6.5169234 -4.7787294 -1.6664165 128.0 +-6.5746536 -4.7593083 -1.6738522 128.0 +-6.5973644 -4.7143264 -1.6721998 128.0 +-6.6829329 -4.7138009 -1.6868646 128.0 +-6.7591057 -4.7056928 -1.6990508 128.0 +-6.7862391 -4.6630225 -1.6986377 128.0 +-6.8260598 -4.628984 -1.7015294 128.0 +-6.8600264 -4.5908227 -1.7029752 128.0 +-6.4700441 -4.2725673 -1.5972238 128.0 +-6.5158119 -4.2456079 -1.6021808 128.0 +-6.903039 -4.4378457 -1.6928544 128.0 +-6.9350963 -4.3985505 -1.6940937 128.0 +-6.9602962 -4.3548765 -1.6936806 128.0 +-6.9852209 -4.311059 -1.6932676 128.0 +-7.0015125 -4.262012 -1.690789 128.0 +-6.999011 -4.2018471 -1.6837664 128.0 +-6.999404 -4.1438675 -1.6775701 128.0 +-7.0238533 -4.1003489 -1.6773635 128.0 +-6.9589949 -4.0054321 -1.6554697 128.0 +-6.9477005 -3.9423745 -1.6467947 128.0 +-6.9469962 -3.8858171 -1.6408049 128.0 +-6.9707084 -3.843118 -1.6408049 128.0 +-7.0285463 -3.8189609 -1.6490667 128.0 +-7.0846238 -3.7933147 -1.6569154 128.0 +-7.0073829 -3.6968083 -1.6329561 128.0 +-6.8762708 -3.5738673 -1.5963975 128.0 +-6.8797808 -3.5222435 -1.5920601 128.0 +-6.8951483 -3.4768794 -1.5906143 128.0 +-6.8856812 -3.4192736 -1.5833852 128.0 +-6.8915892 -3.3696525 -1.5798739 128.0 +-6.9033194 -3.3230588 -1.5778085 128.0 +-6.9421468 -3.2894375 -1.5821459 128.0 +-6.9737272 -3.2521558 -1.584831 128.0 +-7.0735836 -3.2460363 -1.6034201 128.0 +-7.3011432 -3.2963934 -1.6515453 128.0 +-7.3060308 -3.2447803 -1.648034 128.0 +-6.4516044 -2.8179905 -1.4466519 128.0 +-7.325521 -3.1463835 -1.64349 128.0 +-7.3582091 -3.1070857 -1.6465882 128.0 +-7.3798466 -3.0630035 -1.6472079 128.0 +-7.437458 -3.0335555 -1.6560893 128.0 +-7.5276799 -3.0166192 -1.6724064 128.0 +-7.5688086 -2.9793341 -1.6775701 128.0 +-7.5896845 -2.9338951 -1.6781896 128.0 +-7.6084585 -2.8876178 -1.6783962 128.0 +-7.6773777 -2.8600087 -1.6899627 128.0 +-7.7048903 -2.8165431 -1.6922348 128.0 +-7.734921 -2.7738383 -1.6951264 128.0 +-7.7564106 -2.7279489 -1.6961591 128.0 +-7.7591281 -2.6755202 -1.693061 128.0 +-7.8319407 -2.6469731 -1.7056602 128.0 +-7.866611 -2.60502 -1.7097912 128.0 +-7.8991995 -2.5621369 -1.713509 128.0 +-7.9380851 -2.5210252 -1.7186726 128.0 +-7.9720907 -2.4780803 -1.7228036 128.0 +-8.0358229 -2.4439242 -1.733544 128.0 +-8.0759878 -2.4021041 -1.7391207 128.0 +-8.1337929 -2.3650742 -1.7486218 128.0 +-8.1406221 -2.3129818 -1.7469695 128.0 +-8.1999149 -2.2755492 -1.7568836 128.0 +-8.2420549 -2.2328694 -1.76308 128.0 +-8.2697887 -2.1860065 -1.7661781 128.0 +-8.2839937 -2.1354671 -1.7663847 128.0 +-8.1536522 -2.048589 -1.7351964 128.0 +-8.2649078 -2.0227149 -1.756677 128.0 +-8.3894739 -1.9987271 -1.7810495 128.0 +-8.4816456 -1.9657731 -1.7983993 128.0 +-8.5966339 -1.9369251 -1.8207062 128.0 +-8.9103899 -1.9502621 -1.8859746 128.0 +-9.1107311 -1.9356173 -1.9266642 128.0 +-9.189517 -1.8935035 -1.9411224 128.0 +-9.2681265 -1.8504952 -1.9555806 128.0 +-9.2629757 -1.790435 -1.9520693 128.0 +-9.2785959 -1.7344638 -1.9531021 128.0 +-9.3728323 -1.6926301 -1.9710715 128.0 +-9.3232794 -1.6246709 -1.9582657 128.0 +-9.3263178 -1.566299 -1.9568199 128.0 +-9.3193331 -1.5063894 -1.9533086 128.0 +-9.3458033 -1.4518831 -1.9570265 128.0 +-9.356472 -1.3947996 -1.9574395 128.0 +-9.2951145 -1.3274008 -1.9425682 128.0 +-9.338953 -1.2752416 -1.9502105 128.0 +-9.3815308 -1.2224677 -1.957646 128.0 +-9.400507 -1.1663269 -1.9601246 128.0 +-9.3899956 -1.1065625 -1.9564068 128.0 +-9.3868847 -1.0478399 -1.9543413 128.0 +-9.403841 -0.99135208 -1.9566133 128.0 +-9.3961153 -0.93227953 -1.9537216 128.0 +-9.3997107 -0.87442714 -1.9533086 128.0 +-9.3961258 -0.81597292 -1.9514498 128.0 +-9.4263124 -0.76035041 -1.9568199 128.0 +-9.3937225 -0.69973385 -1.9489712 128.0 +-9.3890543 -0.64148128 -1.9471122 128.0 +-9.3918371 -0.58379829 -1.9469057 128.0 +-9.4216185 -0.52763838 -1.9524825 128.0 +-9.4002485 -0.46859956 -1.9473188 128.0 +-9.4332495 -0.41223744 -1.9537216 128.0 +-9.4228907 -0.35387045 -1.9510366 128.0 +-9.4180384 -0.29583073 -1.9495908 128.0 +-8.8513432 0.64729095 -1.9457129 128.0 +-8.8656883 0.70305771 -1.9498609 128.0 +-8.8563461 0.75702715 -1.9487693 128.0 +-8.8748579 0.81349534 -1.9540088 128.0 +-8.8813534 0.86907709 -1.9566286 128.0 +-8.8525591 0.92112875 -1.9513891 128.0 +-8.8428602 0.97500134 -1.9505159 128.0 +-8.8367109 1.0292418 -1.9505159 128.0 +-8.8118267 1.081183 -1.9463679 128.0 +-8.8166409 1.13673 -1.9489876 128.0 +-8.8027306 1.1898905 -1.9474595 128.0 +-8.7865677 1.2426496 -1.9454947 128.0 +-8.7932577 1.2986802 -1.9487693 128.0 +-8.7851238 1.3526101 -1.9487693 128.0 +-8.7458248 1.4015439 -1.9417833 128.0 +-8.7351351 1.4548599 -1.9413466 128.0 +-8.7500839 1.5125892 -1.9468045 128.0 +-8.7175846 1.5621161 -1.9415649 128.0 +-8.7279854 1.6193179 -1.9461496 128.0 +-8.7140512 1.6721052 -1.9452763 128.0 +-8.6557665 1.7160469 -1.9343606 128.0 +-8.6450739 1.7691253 -1.9343606 128.0 +-8.6245079 1.8201209 -1.9321774 128.0 +-8.6579952 1.8827577 -1.9424382 128.0 +-8.6319952 1.9326466 -1.9391636 128.0 +-8.6237783 1.9864519 -1.9400368 128.0 +-8.6370659 2.0454042 -1.9459312 128.0 +-8.6736584 2.1103649 -1.9572835 128.0 +-8.6037416 2.1493471 -1.9441848 128.0 +-8.6102419 2.2071896 -1.9487693 128.0 +-8.5757742 2.2545183 -1.9439664 128.0 +-8.5570679 2.3058255 -1.9428748 128.0 +-8.5418177 2.3580275 -1.9426565 128.0 +-8.5140419 2.4066768 -1.9396001 128.0 +-8.4850531 2.4548025 -1.9363254 128.0 +-8.4838667 2.5109758 -1.9396001 128.0 +-8.4626961 2.5612879 -1.9382902 128.0 +-8.4412279 2.6114345 -1.9369804 128.0 +-8.4017839 2.6558232 -1.9315225 128.0 +-8.4252615 2.7202239 -1.94091 128.0 +-8.3982172 2.768507 -1.9385086 128.0 +-8.3634987 2.81407 -1.9343606 128.0 +-8.3516121 2.8672366 -1.9356705 128.0 +-8.3182058 2.9129419 -1.9319592 128.0 +-8.3194742 2.9708209 -1.9365437 128.0 +-8.3295155 3.0321643 -1.9433115 128.0 +-8.273242 3.0692945 -1.9343606 128.0 +-8.2652073 3.1241424 -1.9369804 128.0 +-8.2513466 3.1769025 -1.9382902 128.0 +-8.1999006 3.2150002 -1.9306493 128.0 +-8.2126455 3.2782819 -1.9385086 128.0 +-8.1779108 3.3227327 -1.9350156 128.0 +-8.1483517 3.3691187 -1.9328324 128.0 +-8.1419172 3.4251091 -1.9363254 128.0 +-8.1010113 3.4665537 -1.9315225 128.0 +-8.0751143 3.5142477 -1.930431 128.0 +-8.0480452 3.5613594 -1.9291211 128.0 +-7.9993439 3.5986595 -1.9225717 128.0 +-7.9513764 3.6359026 -1.9162406 128.0 +-7.9112186 3.6763954 -1.9118743 128.0 +-7.8796878 3.7207005 -1.9096912 128.0 +-8.0168371 3.8458207 -1.9494243 128.0 +-7.9825621 3.8898075 -1.9468045 128.0 +-7.8824568 3.901046 -1.9278113 128.0 +-7.8845286 3.9624882 -1.9343606 128.0 +-7.8235607 3.9921579 -1.9251914 128.0 +-7.7902536 4.0355973 -1.9230083 128.0 +-7.7558446 4.0783243 -1.9206069 128.0 +-7.7401443 4.1308918 -1.9230083 128.0 +-7.6897683 4.1648254 -1.9166772 128.0 +-7.6435447 4.2006478 -1.9114376 128.0 +-7.6696148 4.2764659 -1.9247549 128.0 +-7.6423812 4.3229647 -1.9245365 128.0 +-7.60217 4.3620033 -1.9210435 128.0 +-7.5533342 4.395802 -1.9153674 128.0 +-7.5094128 4.4321432 -1.9110011 128.0 +-7.5155683 4.4981875 -1.9197336 128.0 +-7.4586291 4.5264935 -1.9120927 128.0 +-7.4465051 4.5818925 -1.9162406 128.0 +-7.4314981 4.6357627 -1.9197336 128.0 +-7.3592024 4.653625 -1.908163 128.0 +-7.3329744 4.700273 -1.9088179 128.0 +-7.2917218 4.7372026 -1.9055432 128.0 +-7.2739277 4.7893691 -1.9085996 128.0 +-7.2541437 4.8404121 -1.9112194 128.0 +-7.2129903 4.8771772 -1.908163 128.0 +-7.14429 4.8948631 -1.897684 128.0 +-7.1253433 4.9463997 -1.9007403 128.0 +-7.1004453 4.9939575 -1.9022685 128.0 +-7.0895367 5.0515914 -1.9077264 128.0 +-7.0433745 5.0841427 -1.9035784 128.0 +-7.0057449 5.1226554 -1.9018319 128.0 +-6.9781013 5.1684499 -1.9029235 128.0 +-6.9376712 5.2047267 -1.900522 128.0 +-6.9320207 5.2672749 -1.9079447 128.0 +-6.8841047 5.2978044 -1.9035784 128.0 +-6.8422332 5.3327446 -1.9009587 128.0 +-6.8262339 5.3879309 -1.9057615 128.0 +-6.7922831 5.4291053 -1.9055432 128.0 +-6.7474661 5.4614687 -1.9022685 128.0 +-6.7228842 5.5101919 -1.9048883 128.0 +-6.7047162 5.5644293 -1.9094728 128.0 +-6.6906166 5.6224179 -1.9153674 128.0 +-6.6500468 5.6583047 -1.9136208 128.0 +-6.6078105 5.6926317 -1.9114376 128.0 +-6.5529027 5.7157469 -1.9055432 128.0 +-6.5155139 5.7539091 -1.9048883 128.0 +-6.5200934 5.8295593 -1.9168955 128.0 +-6.5399036 5.9198909 -1.9337057 128.0 +-6.4667687 5.9262767 -1.9225717 128.0 +-6.4717722 6.0043464 -1.9352338 128.0 +-6.3999581 6.0112014 -1.9245365 128.0 +-6.3502259 6.0382519 -1.9206069 128.0 +-6.2968879 6.0615344 -1.9155856 128.0 +-6.2449012 6.0857525 -1.9110011 128.0 +-6.2421732 6.1582284 -1.9219167 128.0 +-6.2180772 6.2102079 -1.926283 128.0 +-6.2045565 6.2732258 -1.9341424 128.0 +-6.1707211 6.3160648 -1.9356705 128.0 +-6.1054249 6.3264194 -1.9271562 128.0 +-6.0759172 6.3736525 -1.9302126 128.0 +-6.0373635 6.4115243 -1.930431 128.0 +-6.0012326 6.4520216 -1.9315225 128.0 +-5.9714327 6.4995036 -1.9347973 128.0 +-5.9288173 6.5331302 -1.933924 128.0 +-5.8951321 6.5766535 -1.9361072 128.0 +-5.8313823 6.5863948 -1.9282478 128.0 +-5.794713 6.6264596 -1.9295577 128.0 +-5.7718029 6.6825719 -1.9356705 128.0 +-5.7382898 6.7267718 -1.9382902 128.0 +-5.7157674 6.7842464 -1.9448397 128.0 +-5.6796489 6.825942 -1.9468045 128.0 +-5.6128802 6.8305011 -1.938072 128.0 +-5.5880785 6.8860321 -1.9441848 128.0 +-5.5383997 6.9110508 -1.9415649 128.0 +-5.5176873 6.9724555 -1.9494243 128.0 +-5.469995 7.0000281 -1.9476777 128.0 +-5.4388614 7.0489135 -1.952044 128.0 +-5.3990555 7.0868111 -1.9533539 128.0 +-5.346086 7.1073265 -1.9498609 128.0 +-5.3064475 7.1454806 -1.9513891 128.0 +-5.2700038 7.188138 -1.9542271 128.0 +-5.2338076 7.2314076 -1.9572835 128.0 +-5.1853676 7.2578263 -1.9557554 128.0 +-5.1334267 7.2791381 -1.9529172 128.0 +-5.0970273 7.3225145 -1.956192 128.0 +-5.0531063 7.3552604 -1.9566286 128.0 +-5.0106177 7.3901663 -1.9577202 128.0 +-4.9722319 7.4313164 -1.9605583 128.0 +-4.9217024 7.4543552 -1.9585934 128.0 +-4.879066 7.4893208 -1.9599034 128.0 +-4.8346033 7.5215797 -1.9605583 128.0 +-4.8087382 7.5832472 -1.9690725 128.0 +-4.7512517 7.5952349 -1.9644879 128.0 +-4.70046 7.6176004 -1.9627414 128.0 +-4.656167 7.6504669 -1.963833 128.0 +-4.6000986 7.6638308 -1.9599034 128.0 +-4.5455332 7.6793141 -1.9566286 128.0 +-4.5229187 7.7492046 -1.9675443 128.0 +-4.4791784 7.7835779 -1.9692907 128.0 +-4.431335 7.8109155 -1.9692907 128.0 +-4.3914204 7.8524389 -1.9730021 128.0 +-4.3304396 7.8561592 -1.9671077 128.0 +-4.3017144 7.9186006 -1.9762769 128.0 +-4.2571898 7.9525905 -1.9782417 128.0 +-4.2201481 8.0010061 -1.9839178 128.0 +-4.1655769 8.0163574 -1.9812981 128.0 +-4.1296473 8.0678291 -1.9878474 128.0 +-4.0660119 8.0651293 -1.9808614 128.0 +-4.0194855 8.0960445 -1.9823896 128.0 +-3.957736 8.0960054 -1.9762769 128.0 +-3.9287167 8.163228 -1.9869742 128.0 +-3.8844018 8.1995277 -1.9900305 128.0 +-3.8241229 8.2019796 -1.984791 128.0 +-3.7826748 8.2448044 -1.989594 128.0 +-3.7416475 8.2892075 -1.9948335 128.0 +-3.6903195 8.3111181 -1.9946152 128.0 +-3.6556523 8.3711681 -2.0037844 128.0 +-3.5988297 8.380887 -2.0007279 128.0 +-3.5609972 8.4351788 -2.0085871 128.0 +-3.5043123 8.4451513 -2.0057492 128.0 +-3.4439552 8.4457092 -2.0007279 128.0 +-3.4018645 8.4911423 -2.0066223 128.0 +-3.3471992 8.5054989 -2.0050943 128.0 +-3.2896724 8.5122223 -2.0018196 128.0 +-3.2456863 8.5541458 -2.0070591 128.0 +-3.1781571 8.533659 -1.9974532 128.0 +-3.1294191 8.5630827 -1.9998547 128.0 +-3.0827441 8.5986595 -2.0037844 128.0 +-3.0328379 8.625699 -2.0057492 128.0 +-2.9817622 8.6496811 -2.0070591 128.0 +-2.9264467 8.6613426 -2.0055308 128.0 +-2.8772321 8.6911793 -2.008369 128.0 +-2.8175313 8.6891756 -2.0037844 128.0 +-2.7703614 8.7258329 -2.008369 128.0 +-2.7185054 8.7482595 -2.0096788 128.0 +-2.6613708 8.7535706 -2.0070591 128.0 +-2.6073318 8.7687998 -2.0068407 128.0 +-2.5529339 8.7827587 -2.0064042 128.0 +-2.4981964 8.7954416 -2.0057492 128.0 +-2.4460068 8.8171873 -2.0072773 128.0 +-2.3918593 8.8320303 -2.0072773 128.0 +-2.3498325 8.8927727 -2.0179746 128.0 +-2.2991176 8.9221449 -2.0214677 128.0 +-2.2393396 8.9162064 -2.0168831 128.0 +-2.1753173 8.891861 -2.0081506 128.0 +-2.1209428 8.9059906 -2.008369 128.0 +-2.0669172 8.921689 -2.0090239 128.0 +-2.0078499 8.9151621 -2.0046575 128.0 +-1.9524844 8.9244547 -2.0040026 128.0 +-1.8999168 8.9467669 -2.0064042 128.0 +-1.8489194 8.9773731 -2.0107703 128.0 +-1.7876928 8.9579239 -2.0037844 128.0 +-1.7360241 8.9859715 -2.007714 128.0 +-1.6803172 8.993577 -2.0070591 128.0 +-1.6266609 9.0123615 -2.0090239 128.0 +-1.5718335 9.0250568 -2.0096788 128.0 +-1.5154587 9.0287571 -2.008369 128.0 +-1.463141 9.0571537 -2.0127351 128.0 +-1.4114293 9.0910339 -2.0184114 128.0 +-1.3528913 9.0811834 -2.0142634 128.0 +-1.3025169 9.1269922 -2.0227776 128.0 +-1.2488631 9.1522169 -2.0267072 128.0 +-1.1914238 9.1500301 -2.0245242 128.0 +-1.1299802 9.1145554 -2.0149183 128.0 +-1.0738051 9.119379 -2.0144818 128.0 +-1.0154524 9.1044588 -2.0096788 128.0 +-0.96314275 9.1444864 -2.0173197 128.0 +-0.9068228 9.1482821 -2.0168831 128.0 +-0.85103363 9.1575603 -2.0177565 128.0 +-0.79819649 9.201499 -2.026489 128.0 +-0.73968768 9.180933 -2.0208127 128.0 +-0.68312377 9.1823788 -2.0201578 128.0 +-0.62656999 9.1834764 -2.0195029 128.0 +-0.56984746 9.181304 -2.018193 128.0 +-0.51219684 9.1612434 -2.0129535 128.0 +-0.45491067 9.1427708 -2.0081506 128.0 +-0.39846396 9.1375904 -2.0064042 128.0 +-0.34337232 9.166194 -2.0122986 128.0 +-0.28648424 9.147644 -2.007714 128.0 +-0.23091204 9.1716681 -2.0127351 128.0 +-0.17487128 9.1855965 -2.0155733 128.0 +-0.11854362 9.1894236 -2.0162282 128.0 +-0.061968293 9.1616783 -2.009897 128.0 +-0.0057579996 9.1735964 -2.012517 128.0 +0.050453264 9.1597977 -2.0094604 128.0 +0.10650646 9.1466303 -2.0066223 128.0 +0.16295911 9.1643429 -2.0107703 128.0 +0.21921085 9.1641464 -2.0109887 128.0 +0.27511296 9.1518984 -2.0085871 128.0 +0.33172336 9.1627169 -2.0114253 128.0 +0.38764861 9.1536837 -2.009897 128.0 +0.44418642 9.1589308 -2.0116436 128.0 +0.50149709 9.1764956 -2.0162282 128.0 +0.55684388 9.1576605 -2.0127351 128.0 +0.61295843 9.1530972 -2.012517 128.0 +0.66839623 9.139431 -2.0103338 128.0 +0.72631669 9.1585054 -2.0155733 128.0 +0.77925217 9.1159563 -2.0070591 128.0 +0.83668846 9.1275234 -2.0107703 128.0 +0.89210713 9.1163902 -2.0094604 128.0 +0.9459039 9.0903616 -2.0048759 128.0 +1.0059465 9.1231861 -2.0136085 128.0 +1.0587417 9.0897017 -2.0074956 128.0 +1.114971 9.0869083 -2.008369 128.0 +1.1704564 9.07796 -2.0079322 128.0 +1.2249581 9.061904 -2.0059674 128.0 +1.2795804 9.0474539 -2.0044394 128.0 +1.3349277 9.0384665 -2.004221 128.0 +1.3905102 9.0310698 -2.0044394 128.0 +1.4460522 9.0233316 -2.0046575 128.0 +1.5034769 9.026803 -2.0074956 128.0 +1.5580043 9.0125999 -2.0064042 128.0 +1.6244717 9.0653067 -2.0205944 128.0 +1.6706231 9.0043154 -2.0090239 128.0 +1.7258412 8.9938955 -2.0090239 128.0 +1.7741575 8.9486761 -2.0011647 128.0 +1.8341223 8.9624786 -2.0068407 128.0 +1.8880724 8.9462824 -2.0057492 128.0 +1.9485325 8.9602747 -2.0116436 128.0 +1.9855546 8.8681593 -1.9933053 128.0 +2.0504518 8.9014549 -2.0037844 128.0 +2.0915308 8.8317308 -1.9906855 128.0 +2.1629944 8.8898449 -2.0070591 128.0 +2.2075615 8.8366423 -1.9978899 128.0 +2.2704687 8.8569613 -2.0057492 128.0 +2.3183169 8.8183241 -2.000073 128.0 +2.3695872 8.7935686 -1.9976716 128.0 +2.4198618 8.7656946 -1.9946152 128.0 +2.4738669 8.7516212 -1.9948335 128.0 +2.5315893 8.7503376 -1.9981081 128.0 +2.5821848 8.7243462 -1.9957067 128.0 +2.6421726 8.7298203 -2.0007279 128.0 +2.6769331 8.6528482 -1.9865376 128.0 +2.7396858 8.6669645 -1.9937419 128.0 +2.7958133 8.6592779 -1.9959251 128.0 +2.8504212 8.646594 -1.9970165 128.0 +2.8968842 8.6095181 -1.992432 128.0 +2.9521925 8.5989647 -1.9941785 128.0 +2.9887664 8.5346394 -1.9832629 128.0 +3.0798175 8.6245813 -2.0090239 128.0 +3.1093035 8.5413342 -1.9937419 128.0 +3.1487505 8.4873285 -1.985446 128.0 +3.2090523 8.4897556 -1.9906855 128.0 +3.2354789 8.4034271 -1.9747486 128.0 +3.3097861 8.4415598 -1.9887207 128.0 +3.3437867 8.3766842 -1.9780233 128.0 +3.3899777 8.3433533 -1.9749669 128.0 +3.4601307 8.3683863 -1.9861009 128.0 +3.5015714 8.3236113 -1.9804248 128.0 +3.5452814 8.2849236 -1.9762769 128.0 +3.5968292 8.2648039 -1.9767134 128.0 +3.6439183 8.2345476 -1.9747486 128.0 +3.7003832 8.2253828 -1.9780233 128.0 +3.7467241 8.1936483 -1.9758402 128.0 +3.7808852 8.1359921 -1.9673259 128.0 +3.8465738 8.1461706 -1.9756218 128.0 +3.899863 8.1294537 -1.9773684 128.0 +3.9424019 8.0904589 -1.973657 128.0 +4.0084229 8.09935 -1.981953 128.0 +4.0519071 8.062396 -1.9788966 128.0 +4.090209 8.0156527 -1.9734387 128.0 +4.1280904 7.9687433 -1.9679809 128.0 +4.1814508 7.9519005 -1.9701641 128.0 +4.2025886 7.8744411 -1.9570652 128.0 +4.261518 7.8682413 -1.9620864 128.0 +4.3031349 7.8299727 -1.95903 128.0 +4.3615556 7.8221717 -1.963833 128.0 +4.4056249 7.7884679 -1.9620864 128.0 +4.4470158 7.7502856 -1.9592483 128.0 +4.4827037 7.7026124 -1.9540088 128.0 +4.5278969 7.6716008 -1.9531356 128.0 +4.5829043 7.6570702 -1.9566286 128.0 +4.623724 7.6187954 -1.9540088 128.0 +4.6765232 7.6002545 -1.9566286 128.0 +4.7225528 7.5705886 -1.9564103 128.0 +4.7631779 7.5323973 -1.9540088 128.0 +4.7971911 7.4841342 -1.9489876 128.0 +4.8446178 7.4570131 -1.9496425 128.0 +4.8833041 7.4165516 -1.9468045 128.0 +4.918426 7.3710265 -1.9426565 128.0 +4.9652014 7.3431339 -1.9433115 128.0 +5.0178881 7.3237996 -1.9463679 128.0 +5.0638447 7.2944756 -1.9468045 128.0 +5.1202993 7.2800283 -1.9513891 128.0 +5.1444817 7.2198648 -1.9435297 128.0 +5.1915417 7.1921191 -1.9446213 128.0 +5.2517052 7.1821837 -1.9507341 128.0 +5.2765045 7.1239486 -1.9435297 128.0 +5.3072305 7.0742664 -1.9387269 128.0 +5.3422704 7.0306916 -1.9356705 128.0 +5.3817377 6.9931402 -1.9343606 128.0 +5.4275455 6.9638348 -1.9354522 128.0 +5.4592876 6.9166141 -1.9315225 128.0 +5.5004058 6.8814621 -1.9310859 128.0 +5.5609479 6.8703361 -1.9376353 128.0 +5.5794878 6.8074079 -1.9293394 128.0 +5.6230221 6.7752972 -1.9299943 128.0 +5.6205339 6.6883755 -1.9147124 128.0 +5.6760149 6.6708555 -1.9197336 128.0 +5.7002764 6.6166816 -1.9140575 128.0 +5.7465425 6.5881991 -1.9160223 128.0 +5.8043027 6.5725622 -1.9219167 128.0 +5.8464732 6.5390062 -1.9225717 128.0 +5.884521 6.5008397 -1.9219167 128.0 +5.9368277 6.4782786 -1.9260647 128.0 +5.9558873 6.4195542 -1.919297 128.0 +5.9831371 6.3700867 -1.9153674 128.0 +6.0120225 6.322648 -1.9120927 128.0 +6.0486736 6.2835312 -1.9114376 128.0 +6.0768971 6.235817 -1.908163 128.0 +6.1088758 6.1921606 -1.9061981 128.0 +6.1495137 6.1573224 -1.9070715 128.0 +6.1920362 6.1242771 -1.9085996 128.0 +6.2155352 6.0725303 -1.9042333 128.0 +6.2695336 6.0505404 -1.9094728 128.0 +6.2938251 5.9998384 -1.9055432 128.0 +6.3362055 5.9664588 -1.9072897 128.0 +6.3712664 5.9261389 -1.9068531 128.0 +6.4125395 5.8915553 -1.9083813 128.0 +6.4557962 5.858655 -1.9105644 128.0 +6.4821749 5.8104658 -1.9077264 128.0 +6.4767833 5.7343616 -1.8955008 128.0 +6.5111122 5.6938705 -1.8952825 128.0 +6.5459266 5.6538119 -1.8952825 128.0 +6.5782671 5.6116409 -1.8946276 128.0 +6.615561 5.5736866 -1.8955008 128.0 +6.6631403 5.5442228 -1.8994304 128.0 +6.6955256 5.5019951 -1.8989938 128.0 +6.7041502 5.4405193 -1.8917894 128.0 +6.7351217 5.3974504 -1.8911345 128.0 +6.7642865 5.3529954 -1.8900429 128.0 +6.7885451 5.3047814 -1.8876415 128.0 +6.815558 5.2588553 -1.8861133 128.0 +6.8562369 5.2234411 -1.8885148 128.0 +6.9123373 5.1994557 -1.8952825 128.0 +6.9386253 5.1528726 -1.8937542 128.0 +6.9669638 5.1078935 -1.892881 128.0 +6.9831524 5.0541797 -1.888733 128.0 +7.0370622 5.0276852 -1.8950641 128.0 +7.0821357 4.994534 -1.8989938 128.0 +7.0950255 4.9387217 -1.8941909 128.0 +7.0841699 4.8669171 -1.8830569 128.0 +7.1607518 4.8551154 -1.8957192 128.0 +7.1928411 4.8127146 -1.8963741 128.0 +7.2222357 4.7684894 -1.8963741 128.0 +7.2309151 4.7107701 -1.8909162 128.0 +7.2654309 4.6700063 -1.8924444 128.0 +7.3013663 4.6300411 -1.8944092 128.0 +7.3428769 4.5934329 -1.8979023 128.0 +7.3700929 4.5477786 -1.897684 128.0 +7.3878546 4.4963841 -1.8950641 128.0 +7.4211621 4.4544835 -1.8965924 128.0 +7.4651518 4.4188037 -1.9009587 128.0 +7.5157251 4.3866858 -1.9070715 128.0 +7.5399623 4.3390279 -1.9064165 128.0 +7.5503159 4.2835345 -1.9022685 128.0 +7.5662355 4.2314115 -1.8996488 128.0 +7.558723 4.1665382 -1.8911345 128.0 +7.6561828 4.1592011 -1.9094728 128.0 +7.6290736 4.0840578 -1.8961557 128.0 +7.6462202 4.0330729 -1.8941909 128.0 +7.6864109 3.9941785 -1.8981205 128.0 +7.7498674 3.9669447 -1.9079447 128.0 +7.6790733 3.8714447 -1.8841485 128.0 +7.7035575 3.8246877 -1.8843668 128.0 +7.7435393 3.7854886 -1.8885148 128.0 +7.7771735 3.742981 -1.8911345 128.0 +7.8238068 3.7064681 -1.897029 128.0 +7.8959355 3.6814792 -1.9092546 128.0 +7.9361167 3.641098 -1.9136208 128.0 +7.9387393 3.583504 -1.9088179 128.0 +7.9338188 3.5228479 -1.9022685 128.0 +7.9678063 3.4795666 -1.9053249 128.0 +7.9916968 3.4317665 -1.9059799 128.0 +7.9919243 3.3739388 -1.9009587 128.0 +7.9908423 3.3158641 -1.8957192 128.0 +8.0444736 3.2804003 -1.9037967 128.0 +8.0590153 3.2288017 -1.9024868 128.0 +8.105011 3.189652 -1.9088179 128.0 +8.1408148 3.1461906 -1.9127476 128.0 +8.1490173 3.0920274 -1.9101278 128.0 +8.159605 3.0389035 -1.908163 128.0 +8.1808481 2.9897845 -1.9088179 128.0 +8.1595364 2.9253747 -1.8994304 128.0 +8.1865387 2.8784895 -1.9016136 128.0 +8.2049694 2.8285215 -1.9018319 128.0 +8.2582283 2.7903018 -1.9103462 128.0 +8.2538853 2.7325263 -1.9053249 128.0 +8.2909203 2.6884496 -1.9101278 128.0 +8.3156309 2.6401834 -1.9120927 128.0 +8.3288784 2.5882416 -1.9114376 128.0 +8.3474045 2.5379391 -1.9120927 128.0 +8.3590775 2.4855607 -1.9112194 128.0 +8.3779202 2.4353125 -1.9120927 128.0 +8.3823786 2.380929 -1.9096912 128.0 +8.3742599 2.3231928 -1.9044516 128.0 +8.3930674 2.2730405 -1.9055432 128.0 +8.398365 2.2192562 -1.9035784 128.0 +8.4165487 2.1689 -1.90467 128.0 +8.4391642 2.1195922 -1.9068531 128.0 +8.4776058 2.0740285 -1.9127476 128.0 +8.4844761 2.0206161 -1.9114376 128.0 +8.5043201 1.9702793 -1.9131842 128.0 +8.5010166 1.9146321 -1.9096912 128.0 +8.5230913 1.8647277 -1.9120927 128.0 +8.5544195 1.8166504 -1.9166772 128.0 +8.5558472 1.7621599 -1.914494 128.0 +8.5330019 1.7029488 -1.9068531 128.0 +8.5749102 1.6566639 -1.9140575 128.0 +8.5647688 1.6002568 -1.9094728 128.0 +8.6205254 1.5559886 -1.9199519 128.0 +8.6164503 1.5007223 -1.9168955 128.0 +8.6341581 1.4492773 -1.9188603 128.0 +8.6014614 1.3895849 -1.9094728 128.0 +8.6580429 1.3442609 -1.9203886 128.0 +8.6757812 1.2925476 -1.9225717 128.0 +8.6661587 1.2368102 -1.918642 128.0 +8.6726179 1.1834805 -1.9184238 128.0 +8.6622972 1.1279781 -1.914494 128.0 +8.6738977 1.0754057 -1.9155856 128.0 +8.6948709 1.0238734 -1.9188603 128.0 +8.7514229 0.97612208 -1.9302126 128.0 +8.7426901 0.92087454 -1.9269379 128.0 +8.7161283 0.86404043 -1.9197336 128.0 +8.7329264 0.81162518 -1.9223534 128.0 +8.7377415 0.75802565 -1.9223534 128.0 +8.7334738 0.70369339 -1.9203886 128.0 +8.7561178 0.65146583 -1.9245365 128.0 +8.7648182 0.59805858 -1.9256281 128.0 +8.7537127 0.54336244 -1.9223534 128.0 +8.7900105 0.49148843 -1.9297761 128.0 +8.7606964 0.43594837 -1.9225717 128.0 +8.718358 0.38023552 -1.9125292 128.0 +8.753684 0.32797143 -1.9199519 128.0 +8.7691879 0.2746796 -1.9230083 128.0 +8.7804632 0.22111209 -1.9251914 128.0 +8.7582378 0.16678916 -1.9199519 128.0 +8.7522659 0.11295922 -1.9184238 128.0 +8.7635288 0.059325453 -1.9208251 128.0 +8.7812939 0.0055611487 -1.9247549 128.0 +8.7801867 -0.048314463 -1.9245365 128.0 +8.8470554 -0.10298029 -1.9396001 128.0 +8.7935686 -0.15631932 -1.9278113 128.0 +8.8343945 -0.21128146 -1.9371986 128.0 +8.8241529 -0.2652193 -1.9352338 128.0 +8.8135824 -0.31903943 -1.933269 128.0 +8.8056087 -0.37286407 -1.9319592 128.0 +8.8236246 -0.42788252 -1.9365437 128.0 +8.8130379 -0.48158821 -1.9347973 128.0 +8.8050461 -0.53535819 -1.9337057 128.0 +8.738306 -0.58512849 -1.9195153 128.0 +8.7549896 -0.64023203 -1.9240999 128.0 +8.7645159 -0.69502139 -1.9271562 128.0 +8.781477 -0.75061768 -1.9319592 128.0 +8.7980862 -0.80644816 -1.9367621 128.0 +8.8055983 -0.86165416 -1.9396001 128.0 +8.8302345 -0.91880292 -1.9463679 128.0 +8.8079405 -0.97114658 -1.9426565 128.0 +8.8066626 -1.025738 -1.9437481 128.0 +8.7914858 -1.0786846 -1.9417833 128.0 +8.7876053 -1.1329825 -1.9424382 128.0 +8.7766199 -1.1863575 -1.9415649 128.0 +8.7807703 -1.2418289 -1.9441848 128.0 +8.7449884 -1.2915448 -1.9378536 128.0 +8.7205029 -1.3426521 -1.9341424 128.0 +8.7043915 -1.3948984 -1.9323958 128.0 +8.7418737 -1.455983 -1.9428748 128.0 +8.697196 -1.5034397 -1.9347973 128.0 +8.6887684 -1.5569485 -1.9350156 128.0 +8.673295 -1.6091636 -1.9337057 128.0 +8.6622992 -1.6621677 -1.9334874 128.0 +8.6500225 -1.7149075 -1.9330508 128.0 +8.6680183 -1.773824 -1.9396001 128.0 +8.6541071 -1.8263717 -1.9389452 128.0 +8.6045952 -1.8711382 -1.9302126 128.0 +8.5520048 -1.9147263 -1.9208251 128.0 +8.4887438 -1.9553287 -1.9090363 128.0 +8.3227539 -1.9709265 -1.8736694 128.0 +8.1436224 -1.9813306 -1.8352462 128.0 +7.8823166 -1.9690243 -1.7778298 128.0 +7.8020263 -1.9998959 -1.7621112 128.0 +7.7329817 -2.032836 -1.7490124 128.0 +7.5677209 -2.0390935 -1.7136456 128.0 +7.4986272 -2.0699012 -1.7005467 128.0 +7.3702826 -2.0832074 -1.6736943 128.0 +7.3189278 -2.1172667 -1.6647433 128.0 +7.2505918 -2.1457875 -1.6518629 128.0 +6.9832411 -2.1133103 -1.5924816 128.0 +6.9589553 -2.1526566 -1.5898618 128.0 +6.6729918 -2.1090989 -1.525896 128.0 +6.2875419 -2.0297208 -1.4383522 128.0 +6.2731156 -2.0676508 -1.4379156 128.0 +6.0614605 -2.0391667 -1.3909781 128.0 +5.9897652 -2.0560329 -1.3770061 128.0 +5.8250728 -2.0395081 -1.3409843 128.0 +5.6580572 -2.020057 -1.3043077 128.0 +5.6693969 -2.0634184 -1.3099838 128.0 +5.6429057 -2.0930729 -1.3067091 128.0 +5.4044952 -2.0424025 -1.2527857 128.0 +5.366363 -2.0657043 -1.2466729 128.0 +5.3072538 -2.0804195 -1.2355388 128.0 +5.1348815 -2.0492496 -1.1971157 128.0 +5.0652556 -2.0575681 -1.1833619 128.0 +4.8893127 -2.0210962 -1.1438472 128.0 +4.7769775 -2.009042 -1.1196144 128.0 +4.693687 -2.0079761 -1.1023676 128.0 +4.5604849 -1.9841509 -1.0728953 128.0 +4.5821338 -2.027107 -1.0811912 128.0 +4.6247845 -2.0800145 -1.0947267 128.0 +4.510766 -2.0620751 -1.0698389 128.0 +4.4228091 -2.0547469 -1.0512823 128.0 +4.4224715 -2.0876813 -1.0543386 128.0 +4.3638282 -2.092823 -1.0429863 128.0 +4.3684487 -2.1281116 -1.0473526 128.0 +4.277472 -2.1163414 -1.0279226 128.0 +4.3446202 -2.182874 -1.0480075 128.0 +4.3424444 -2.2152586 -1.0508456 128.0 +4.3019099 -2.2279427 -1.0440779 128.0 +4.2259736 -2.2215869 -1.0283593 128.0 +4.25875 -2.2722933 -1.0401483 128.0 +4.2198439 -2.2849007 -1.0338172 128.0 +4.2279792 -2.3229733 -1.0394933 128.0 +4.2562599 -2.3726401 -1.050409 128.0 +4.2229357 -2.3881385 -1.0456061 128.0 +4.203125 -2.4110904 -1.0442961 128.0 +4.1604199 -2.4206328 -1.0370919 128.0 +4.0875049 -2.4118817 -1.0220282 128.0 +4.0918865 -2.4484463 -1.0270494 128.0 +4.115159 -2.4968023 -1.0370919 128.0 +4.0474038 -2.4897799 -1.0233381 128.0 +4.0419855 -2.5207667 -1.0259578 128.0 +4.053659 -2.5627358 -1.0331622 128.0 +4.0501804 -2.5954614 -1.0364369 128.0 +4.0374522 -2.622391 -1.0373101 128.0 +4.0652952 -2.6761005 -1.0490991 128.0 +4.0114608 -2.6760733 -1.0390567 128.0 +4.0232573 -2.7197723 -1.0466976 128.0 +3.9871738 -2.7311671 -1.0414581 128.0 +4.0024037 -2.7778449 -1.0501907 128.0 +3.9685228 -2.7905591 -1.0456061 128.0 +3.9266903 -2.7972984 -1.0388384 128.0 +3.9387267 -2.8424764 -1.046916 128.0 +3.8747387 -2.8325996 -1.0340354 128.0 +3.9325612 -2.9120913 -1.0549935 128.0 +3.8435893 -2.8828642 -1.035127 128.0 +3.7931967 -2.881592 -1.0259578 128.0 +3.8960786 -2.9976747 -1.0600147 128.0 +3.8791511 -3.0227242 -1.0604514 128.0 +3.8053837 -3.0029297 -1.0447328 128.0 +3.7678313 -3.0109875 -1.0392749 128.0 +3.8516769 -3.1169493 -1.0687473 128.0 +3.7653131 -3.0854588 -1.0493174 128.0 +3.8349123 -3.1820571 -1.0750784 128.0 +3.7338896 -3.1370838 -1.0512823 128.0 +3.7376084 -3.179543 -1.0580499 128.0 +3.690676 -3.1788459 -1.0499723 128.0 +3.6321282 -3.1674285 -1.0384017 128.0 +3.6828384 -3.251678 -1.0593598 128.0 +3.6882768 -3.2969832 -1.0670009 128.0 +3.6838923 -3.333962 -1.0718037 128.0 +3.6238005 -3.3202348 -1.0597965 128.0 +3.565448 -3.3072248 -1.0482259 128.0 +3.5450881 -3.3290398 -1.0482259 128.0 +3.4736826 -3.3023055 -1.0325073 128.0 +3.4449189 -3.3154349 -1.0298876 128.0 +3.434993 -3.3467278 -1.0331622 128.0 +3.5019147 -3.454109 -1.0606697 128.0 +3.3418851 -3.3369007 -1.0167887 128.0 +3.4311316 -3.4683716 -1.0517188 128.0 +3.3681908 -3.4467738 -1.0384017 128.0 +3.3686612 -3.4898491 -1.0453877 128.0 +3.2455218 -3.4037809 -1.0124224 128.0 +3.2178862 -3.4165254 -1.0102392 128.0 +3.2327476 -3.4747965 -1.0220282 128.0 +3.2377715 -3.5233154 -1.0307608 128.0 +3.2311738 -3.5597389 -1.035782 128.0 +3.2587676 -3.6347318 -1.0523738 128.0 +3.1995361 -3.6130066 -1.03993 128.0 +3.1573954 -3.6097949 -1.0331622 128.0 +3.1645248 -3.6630771 -1.0432047 128.0 +3.1584535 -3.7017307 -1.0488808 128.0 +3.1312799 -3.7158163 -1.0473526 128.0 +3.1202788 -3.7492139 -1.0515006 128.0 +3.0272152 -3.6830812 -1.0268312 128.0 +2.9725881 -3.6621788 -1.0154788 128.0 +3.0074172 -3.7519395 -1.0360003 128.0 +3.0236957 -3.8200684 -1.0501907 128.0 +2.9971955 -3.8347044 -1.0490991 128.0 +2.9873188 -3.8707948 -1.0541203 128.0 +2.9753377 -3.9045787 -1.0584866 128.0 +2.921411 -3.8829837 -1.0473526 128.0 +2.8893864 -3.8898664 -1.0442961 128.0 +2.8620028 -3.9027996 -1.0429863 128.0 +2.8277047 -3.9060557 -1.0390567 128.0 +2.8127596 -3.9360385 -1.0425497 128.0 +2.7812455 -3.9428546 -1.0397116 128.0 +2.7547705 -3.9566417 -1.0388384 128.0 +2.7508833 -4.0032339 -1.046916 128.0 +2.7295532 -4.0248842 -1.0482259 128.0 +2.6885285 -4.0172224 -1.0416764 128.0 +2.6428626 -4.0018797 -1.0331622 128.0 +2.6187904 -4.0188384 -1.0333805 128.0 +2.580893 -4.0143065 -1.0279226 128.0 +2.5687535 -4.0498481 -1.0331622 128.0 +2.5485125 -4.0729804 -1.035127 128.0 +2.5198867 -4.082727 -1.0335988 128.0 +2.535368 -4.1648068 -1.0510639 128.0 +2.4957061 -4.1568551 -1.0449511 128.0 +2.4592195 -4.1536136 -1.0401483 128.0 +2.4828687 -4.2529135 -1.0619797 128.0 +2.427042 -4.2164688 -1.0486624 128.0 +2.3621283 -4.1625242 -1.030979 128.0 +2.3270187 -4.1599035 -1.0266128 128.0 +2.3278251 -4.2219667 -1.0388384 128.0 +2.3037388 -4.2396011 -1.0397116 128.0 +2.3002441 -4.2958174 -1.050409 128.0 +2.2260494 -4.2192116 -1.0274861 128.0 +2.2163138 -4.263967 -1.0353453 128.0 +2.1741054 -4.2462111 -1.0274861 128.0 +2.1330774 -4.2298412 -1.0200634 128.0 +2.1370189 -4.3031654 -1.035127 128.0 +2.0998631 -4.2942777 -1.0296692 128.0 +2.0459735 -4.2499204 -1.0154788 128.0 +2.0298824 -4.2835617 -1.0207183 128.0 +2.008508 -4.3065505 -1.0233381 128.0 +1.9747227 -4.3028269 -1.0194085 128.0 +1.9486853 -4.315752 -1.0196267 128.0 +1.9285023 -4.3418989 -1.0231198 128.0 +1.9092429 -4.3706436 -1.0272677 128.0 +1.8939373 -4.4091787 -1.0338172 128.0 +1.8520497 -4.3856516 -1.0253029 128.0 +1.8262267 -4.3996372 -1.0259578 128.0 +1.817615 -4.4559441 -1.0368736 128.0 +1.6886514 -4.2133536 -0.97574574 128.0 +1.6852736 -4.280848 -0.98949951 128.0 +1.6325998 -4.2228346 -0.97312599 128.0 +1.6779505 -4.4207377 -1.0180986 128.0 +1.155405 -3.1002679 -0.70045233 128.0 +1.1383696 -3.1127987 -0.7017622 128.0 +1.2934083 -3.6057003 -0.81725007 128.0 +1.264788 -3.5951552 -0.81288379 128.0 +1.5510933 -4.4978075 -1.024648 128.0 +1.5375178 -4.5488458 -1.0344721 128.0 +1.4951684 -4.5146503 -1.0242114 128.0 +1.0507066 -3.2379963 -0.72184706 128.0 +1.0302285 -3.2425222 -0.72141045 128.0 +1.0407082 -3.346638 -0.74433339 128.0 +1.0207216 -3.3548281 -0.74476999 128.0 +0.99122095 -3.3310938 -0.73778397 128.0 +0.96885717 -3.3305533 -0.73625576 128.0 +0.94627094 -3.3289251 -0.73450923 128.0 +0.87054795 -3.1353045 -0.68822676 128.0 +0.85180366 -3.1424708 -0.68866342 128.0 +1.2170081 -4.6034999 -1.0255213 128.0 +1.2089407 -4.6893191 -1.0436412 128.0 +1.1639884 -4.6322856 -1.028796 128.0 +1.1304442 -4.6184855 -1.023993 128.0 +1.1066036 -4.6443224 -1.0283593 128.0 +1.070381 -4.6177492 -1.0207183 128.0 +0 -0 -0 128.0 +0.79413766 -3.6266525 -0.79083413 128.0 +1.5490229 -7.2933698 -1.6282851 128.0 +1.5125053 -7.3428826 -1.6374542 128.0 +0.93032837 -4.6589375 -1.0231198 128.0 +0.90560889 -4.68468 -1.0277044 128.0 +0.87684721 -4.6901484 -1.0277044 128.0 +0.84718639 -4.6906385 -1.0266128 128.0 +1.2696526 -7.2887187 -1.6154045 128.0 +1.2394336 -7.3829913 -1.6350527 128.0 +1.1959753 -7.4020181 -1.6376724 128.0 +0.72463661 -4.6637282 -1.0161338 128.0 +1.1001661 -7.3833189 -1.6302499 128.0 +0.66197872 -4.6345911 -1.0076195 128.0 +0.63998806 -4.6859455 -1.0183169 128.0 +0.60908359 -4.6733332 -1.0146055 128.0 +0.57643896 -4.6450224 -1.0074012 128.0 +0.86986053 -7.3854852 -1.6239188 128.0 +0.81836879 -7.3354001 -1.6114749 128.0 +0.7779386 -7.3839574 -1.6212989 128.0 +0.73732775 -7.4361768 -1.6319963 128.0 +0.68564427 -7.3754568 -1.6173693 128.0 +0.64416611 -7.4232759 -1.6271935 128.0 +0.59860563 -7.4270887 -1.6271935 128.0 +0.55063742 -7.3985062 -1.619989 128.0 +0.50761765 -7.4367962 -1.6278484 128.0 +0.45944291 -7.3988624 -1.6186792 128.0 +0.41430748 -7.406414 -1.6197708 128.0 +0.36919338 -7.4156394 -1.6212989 128.0 +0.32669476 -7.4869871 -1.6367992 128.0 +0.27696279 -7.3874302 -1.6140946 128.0 +0.23153789 -7.3860641 -1.6134397 128.0 +0.18782645 -7.4517336 -1.6278484 128.0 +0.14136185 -7.4137177 -1.6191158 128.0 +0.060281403 -4.6285391 -0.9958306 128.0 +0.050373483 -7.4148941 -1.6191158 128.0 +0.0034819739 -4.6377134 -0.9977954 128.0 +-0.040677451 -7.4247127 -1.6212989 128.0 +-0.086233862 -7.4243231 -1.6212989 128.0 +-0.083036982 -4.7013893 -1.0122041 128.0 +-0.11183568 -4.6988401 -1.0117675 128.0 +-0.14090069 -4.7058692 -1.013514 128.0 +-0.26840991 -7.419971 -1.6212989 128.0 +-0.31293902 -7.3947845 -1.6160594 128.0 +-0.35844886 -7.395649 -1.6167144 128.0 +-0.40387434 -7.3942847 -1.6169326 128.0 +-0.44935593 -7.3936157 -1.6173693 128.0 +-0.49451783 -7.3877983 -1.6167144 128.0 +-0.34625503 -4.7421956 -1.023993 128.0 +-0.5886175 -7.4249501 -1.6265385 128.0 +-0.63141817 -7.389112 -1.6193341 128.0 +-0.67701262 -7.3880138 -1.619989 128.0 +-0.72280771 -7.388577 -1.6210806 128.0 +-0.76853406 -7.3878856 -1.6219538 128.0 +-0.81449324 -7.3888507 -1.6232638 128.0 +-0.85913688 -7.3778982 -1.6219538 128.0 +-0.90415269 -7.3705502 -1.6215173 128.0 +-0.94898582 -7.3619604 -1.6208624 128.0 +-0.99453264 -7.3589001 -1.6215173 128.0 +-1.0392569 -7.3497605 -1.6208624 128.0 +-1.0854763 -7.3509684 -1.6226088 128.0 +-1.1341276 -7.3673177 -1.6278484 128.0 +-1.1805476 -7.3679285 -1.6295949 128.0 +-1.2255737 -7.3595834 -1.6293765 128.0 +-1.2707082 -7.3519249 -1.6293765 128.0 +-1.3164839 -7.3478317 -1.6302499 128.0 +-1.3629696 -7.3472915 -1.6319963 128.0 +-1.4089463 -7.3435822 -1.6330879 128.0 +-1.4554983 -7.3424563 -1.6348344 128.0 +-1.5030684 -7.3458161 -1.6376724 128.0 +-1.5481132 -7.3364553 -1.6376724 128.0 +-1.5789903 -7.2619758 -1.6228272 128.0 +-1.6230925 -7.2502456 -1.6223905 128.0 +-1.6682062 -7.2430029 -1.6230454 128.0 +-1.712167 -7.2307315 -1.6226088 128.0 +-1.7528085 -7.2049189 -1.6191158 128.0 +-1.8014803 -7.2120166 -1.6232638 128.0 +-1.8469107 -7.2055535 -1.6243553 128.0 +-1.8928261 -7.2006917 -1.6258836 128.0 +-1.9357029 -7.1842308 -1.624792 128.0 +-1.9802676 -7.1740999 -1.6252286 128.0 +-2.0277023 -7.1740217 -1.6280667 128.0 +-2.0667992 -7.1445718 -1.624137 128.0 +-2.1144776 -7.1448555 -1.6271935 128.0 +-2.1650653 -7.1541629 -1.6324329 128.0 +-2.2034395 -7.1230307 -1.6282851 128.0 +-2.2535777 -7.1298466 -1.6330879 128.0 +-2.2954834 -7.1103129 -1.631778 128.0 +-2.3445699 -7.1127763 -1.6357076 128.0 +-2.396575 -7.1232285 -1.6416022 128.0 +-2.4342141 -7.0908532 -1.6374542 128.0 +-2.4815488 -7.0868354 -1.6400739 128.0 +-1.3509763 -3.78514 -0.8593846 128.0 +-1.37451 -3.7776964 -0.85960293 128.0 +-2.6159883 -7.0518513 -1.642912 128.0 +-2.6633501 -7.0466208 -1.6455318 128.0 +-2.6928577 -6.9946303 -1.6370175 128.0 +-2.7467718 -7.0061388 -1.6437852 128.0 +-2.7770422 -6.9574327 -1.6361443 128.0 +-2.820415 -6.9420705 -1.6365809 128.0 +-2.8603466 -6.9183216 -1.6350527 128.0 +-2.9133415 -6.9258256 -1.6411655 128.0 +-2.9515584 -6.8979511 -1.638764 128.0 +-2.996944 -6.886869 -1.6405106 128.0 +-3.0727212 -6.9442005 -1.6590672 128.0 +-1.4087988 -3.1332858 -0.72883308 128.0 +-1.4292156 -3.1272449 -0.72948802 128.0 +-3.1699901 -6.8218651 -1.6431303 128.0 +-1.6154478 -3.4227204 -0.80698937 128.0 +-1.6296635 -3.3986666 -0.80349636 128.0 +-1.6436452 -3.3745677 -0.80000329 128.0 +-1.6617223 -3.3591716 -0.79869342 128.0 +-1.6849325 -3.3541436 -0.80000329 128.0 +-1.7116928 -3.3559105 -0.8030597 128.0 +-1.737191 -3.3548758 -0.80546117 128.0 +-1.7704639 -3.3683364 -0.81157392 128.0 +-3.5573184 -6.6657672 -1.650553 128.0 +-3.6004763 -6.6481047 -1.6516446 128.0 +-3.6426108 -6.6284528 -1.6522995 128.0 +-3.6713297 -6.5846705 -1.6468416 128.0 +-3.7188721 -6.57476 -1.6501163 128.0 +-3.7499142 -6.5357366 -1.6459684 128.0 +-3.7884731 -6.5100741 -1.6453135 128.0 +-3.8288429 -6.4875464 -1.6455318 128.0 +-3.8730893 -6.4714665 -1.6474966 128.0 +-3.9339938 -6.4826164 -1.6566658 128.0 +-3.965512 -6.4450583 -1.6531727 128.0 +-3.9993007 -6.4114981 -1.6507713 128.0 +-4.0583897 -6.4181781 -1.6590672 128.0 +-4.0824189 -6.3693314 -1.6527361 128.0 +-4.1187649 -6.3400707 -1.6516446 128.0 +-4.1973104 -6.374989 -1.6677997 128.0 +-2.0741758 -3.1096783 -0.79651028 128.0 +-2.0954044 -3.1001263 -0.79738355 128.0 +-4.3117352 -6.2934303 -1.6669265 128.0 +-4.3241091 -6.2291813 -1.6566658 128.0 +-4.3712335 -6.215302 -1.6601588 128.0 +-4.3990927 -6.1740594 -1.6562291 128.0 +-4.449461 -6.1643572 -1.6610321 128.0 +-4.4860487 -6.1353645 -1.6605954 128.0 +-4.5189629 -6.10145 -1.6588489 128.0 +-4.5516295 -6.0673628 -1.6571023 128.0 +-4.6118026 -6.0696211 -1.6656166 128.0 +-4.665626 -6.0628614 -1.6717294 128.0 +-4.675139 -5.9987168 -1.661687 128.0 +-4.720324 -5.9806409 -1.6647433 128.0 +-4.7599788 -5.9553761 -1.6658349 128.0 +-4.8093262 -5.9419847 -1.6704195 128.0 +-4.8327022 -5.8965154 -1.6658349 128.0 +-4.8669214 -5.8644986 -1.66518 128.0 +-4.9379778 -5.876359 -1.6774056 128.0 +-4.9688816 -5.840004 -1.6756591 128.0 +-5.0129032 -5.819016 -1.6784971 128.0 +-5.0369654 -5.7749119 -1.6745675 128.0 +-5.0800576 -5.7526736 -1.6771872 128.0 +-5.1113563 -5.71703 -1.6758773 128.0 +-5.135859 -5.6739855 -1.6723844 128.0 +-5.2035484 -5.6783342 -1.6833 128.0 +-5.2409477 -5.6491604 -1.6841732 128.0 +-5.2781844 -5.619741 -1.6850466 128.0 +-5.2997885 -5.5738134 -1.6808985 128.0 +-5.3616409 -5.5700116 -1.6898494 128.0 +-5.3998041 -5.5412016 -1.6911592 128.0 +-5.42205 -5.4961562 -1.687448 128.0 +-5.4370494 -5.4441428 -1.6815535 128.0 +-5.4877 -5.4278331 -1.6870114 128.0 +-5.5257883 -5.3988323 -1.6885395 128.0 +-5.5665359 -5.3722782 -1.690941 128.0 +-5.6029272 -5.3413877 -1.6920326 128.0 +-5.6341748 -5.3055706 -1.6915959 128.0 +-5.6902065 -5.29283 -1.6988003 128.0 +-5.7024517 -5.2393317 -1.6926875 128.0 +-5.7409968 -5.210145 -1.6946523 128.0 +-5.7459674 -5.1507239 -1.6865747 128.0 +-5.792809 -5.128953 -1.6911592 128.0 +-5.8197627 -5.0894585 -1.6898494 128.0 +-5.8523588 -5.0549288 -1.690286 128.0 +-5.8788099 -5.0151248 -1.6889762 128.0 +-5.8885722 -4.9613562 -1.6828634 128.0 +-5.9234052 -4.9288754 -1.6841732 128.0 +-5.9082932 -4.855269 -1.6710745 128.0 +-5.9523726 -4.8306069 -1.6752224 128.0 +-5.949152 -4.7677555 -1.6658349 128.0 +-5.9737024 -4.7275295 -1.664525 128.0 +-6.0525842 -4.7298374 -1.6787155 128.0 +-6.1000371 -4.7069154 -1.683955 128.0 +-6.1878052 -4.7143359 -1.7005467 128.0 +-6.2212954 -4.6797986 -1.7018566 128.0 +-6.2498927 -4.6415377 -1.7018566 128.0 +-6.2640872 -4.5927172 -1.697927 128.0 +-6.3032184 -4.5622039 -1.7009834 128.0 +-6.3437986 -4.5325174 -1.7044765 128.0 +-6.3826566 -4.50138 -1.7075328 128.0 +-6.4149623 -4.4654765 -1.7088428 128.0 +-6.4333925 -4.4199533 -1.7064413 128.0 +-6.4337344 -4.3623266 -1.6992369 128.0 +-6.4449687 -4.312459 -1.695089 128.0 +-6.4941125 -4.2878847 -1.7012017 128.0 +-6.5366554 -4.2586088 -1.705568 128.0 +-6.534749 -4.2004833 -1.6981454 128.0 +-6.5496845 -4.1535153 -1.6953073 128.0 +-6.57091 -4.110662 -1.6942157 128.0 +-6.5827198 -4.0620685 -1.6907227 128.0 +-6.5883455 -4.0099344 -1.6857015 128.0 +-6.6178465 -3.9724464 -1.6870114 128.0 +-6.611022 -3.913377 -1.6789337 128.0 +-6.5902367 -3.8466728 -1.6673632 128.0 +-6.5807257 -3.7871847 -1.6588489 128.0 +-6.5622454 -3.7231445 -1.6481515 128.0 +-6.5713377 -3.6751897 -1.6446586 128.0 +-6.5510297 -3.6112504 -1.6337428 128.0 +-6.5361886 -3.5509598 -1.6243553 128.0 +-6.5793643 -3.5222991 -1.6298132 128.0 +-6.5930839 -3.477766 -1.6278484 128.0 +-6.6298871 -3.4453437 -1.631778 128.0 +-6.6248403 -3.3912625 -1.6252286 128.0 +-6.6795106 -3.3676782 -1.6337428 128.0 +-6.6056418 -3.2797747 -1.610165 128.0 +-6.633533 -3.2430377 -1.6121298 128.0 +-6.6453924 -3.1984663 -1.610165 128.0 +-6.68606 -3.167655 -1.6154045 128.0 +-6.7151003 -3.1311054 -1.617806 128.0 +-6.7723284 -3.1073372 -1.6271935 128.0 +-6.7983832 -3.0689354 -1.62894 128.0 +-6.8153019 -3.0263717 -1.6285033 128.0 +-6.4813609 -2.8306661 -1.5424877 128.0 +-6.8366823 -2.9359658 -1.624792 128.0 +-6.9543681 -2.9360778 -1.6490247 128.0 +-6.9902806 -2.9008296 -1.653391 128.0 +-7.0296364 -2.8667243 -1.6586306 128.0 +-7.0661187 -2.8311563 -1.6632152 128.0 +-7.182344 -2.8266864 -1.6870114 128.0 +-7.2122974 -2.7874866 -1.6900678 128.0 +-7.256639 -2.7535625 -1.6966171 128.0 +-7.2770562 -2.7103467 -1.6974903 128.0 +-7.3329649 -2.6800432 -1.7068778 128.0 +-7.3713193 -2.6429 -1.7121174 128.0 +-7.3800316 -2.595032 -1.7103709 128.0 +-7.4004288 -2.5512898 -1.7114625 128.0 +-7.4797392 -2.5273795 -1.7265261 128.0 +-7.5821943 -2.5102556 -1.7470475 128.0 +-7.5974541 -2.4636848 -1.7470475 128.0 +-7.6356821 -2.424401 -1.7525054 128.0 +-7.6578698 -2.3798196 -1.754252 128.0 +-7.6863337 -2.3370433 -1.7575266 128.0 +-7.7154961 -2.2942851 -1.7610196 128.0 +-7.7603536 -2.2558854 -1.768224 128.0 +-7.7928247 -2.2135568 -1.7725903 128.0 +-7.801558 -2.1643953 -1.7714987 128.0 +-7.6432514 -2.0700796 -1.7317656 128.0 +-7.6869459 -2.0313659 -1.7389699 128.0 +-7.8344054 -2.0189672 -1.7701888 128.0 +-7.919528 -1.9891529 -1.786999 128.0 +-8.0140562 -1.9606872 -1.8059922 128.0 +-8.1484032 -1.9406259 -1.8341547 128.0 +-8.4073458 -1.9478259 -1.8909162 128.0 +-8.5714684 -1.9304898 -1.9258463 128.0 +-8.6603746 -1.8947443 -1.9435297 128.0 +-8.7377062 -1.8555485 -1.9585934 128.0 +-8.7718668 -1.8066217 -1.963833 128.0 +-8.8019276 -1.7565818 -1.9681993 128.0 +-8.79146 -1.6984713 -1.9633963 128.0 +-8.8516006 -1.6538095 -1.9747486 128.0 +-8.8452549 -1.5965213 -1.9710373 128.0 +-8.8164272 -1.535525 -1.9623047 128.0 +-8.8179836 -1.4801081 -1.9605583 128.0 +-8.8355703 -1.4273738 -1.9625231 128.0 +-8.8152313 -1.368645 -1.9559736 128.0 +-8.8495245 -1.3184092 -1.9618682 128.0 +-8.836194 -1.2610542 -1.9570652 128.0 +-8.8157234 -1.2029898 -1.9507341 128.0 +-8.810359 -1.1472384 -1.947896 128.0 +-8.8520975 -1.0974754 -1.9557554 128.0 +-8.8480034 -1.0418854 -1.9533539 128.0 +-8.8910856 -0.99168134 -1.9616498 128.0 +-8.9086494 -0.93833315 -1.9642695 128.0 +-8.8841343 -0.88067269 -1.9575019 128.0 +-8.9029741 -0.82740659 -1.9605583 128.0 +-8.9244118 -0.77419508 -1.9642695 128.0 +-8.9017572 -0.71723038 -1.9581568 128.0 +-8.8884726 -0.66129571 -1.9542271 128.0 +-8.920598 -0.60866749 -1.9605583 128.0 +-8.8871527 -0.5516277 -1.9522623 128.0 +-8.8893957 -0.4970324 -1.952044 128.0 +-8.8601141 -0.44088244 -1.9448397 128.0 +-8.9094505 -0.38854432 -1.9553187 128.0 +-8.9272699 -0.33445218 -1.9588118 128.0 +-8.9135475 -0.2791824 -1.9553187 128.0 +-8.9180193 -0.22455795 -1.9559736 128.0 +-8.9719172 -0.17083022 -1.9677626 128.0 +-8.9152241 -0.11504091 -1.9548821 128.0 +-8.9264965 -0.060407203 -1.9572835 128.0 +-8.9179163 -0.0056297039 -1.9553187 128.0 +-8.9168072 0.049084213 -1.9551004 128.0 +-8.916338 0.10379579 -1.9551004 128.0 +-8.9067526 0.15834621 -1.9531356 128.0 +-8.9085398 0.2130644 -1.9537905 128.0 +-8.9099913 0.26781049 -1.9544455 128.0 +-8.8847742 0.32162583 -1.949206 128.0 +-8.8611832 0.37522462 -1.9444031 128.0 +-8.8460426 0.42897263 -1.9415649 128.0 +-8.8705282 0.48473734 -1.9476777 128.0 +-8.8732309 0.53951287 -1.9489876 128.0 +-8.856122 0.59303325 -1.9459312 128.0 +-8.4116583 -0.21105523 -1.9414054 128.0 +-8.4020901 -0.1592349 -1.9388843 128.0 +-8.3902559 -0.10751491 -1.9359046 128.0 +-8.3868647 -0.056005061 -1.9349878 128.0 +-8.3821831 -0.0045403079 -1.9338418 128.0 +-8.3986006 0.046983674 -1.9377382 128.0 +-8.5266314 0.10001668 -1.9679927 128.0 +-8.5063925 0.15198635 -1.9634087 128.0 +-8.4897308 0.2038047 -1.9597415 128.0 +-8.478591 0.25560001 -1.9574494 128.0 +-8.457408 0.30691376 -1.9528655 128.0 +-8.4505033 0.35859558 -1.9517194 128.0 +-8.4374495 0.40992105 -1.9491982 128.0 +-8.4279718 0.46131247 -1.9475938 128.0 +-8.4172096 0.51254392 -1.9457603 128.0 +-8.4119644 0.56405115 -1.9453019 128.0 +-8.4112568 0.61586845 -1.9459895 128.0 +-8.3937349 0.66638952 -1.9427806 128.0 +-8.3982172 0.71862644 -1.9448434 128.0 +-8.3936491 0.77014339 -1.9448434 128.0 +-8.3306408 0.81594115 -1.9310914 128.0 +-8.3535538 0.86996424 -1.9377382 128.0 +-8.3712788 0.92376554 -1.9432391 128.0 +-8.3635197 0.97488809 -1.9427806 128.0 +-8.3467531 1.0248829 -1.9402595 128.0 +-8.3557529 1.0780704 -1.9439267 128.0 +-8.3374062 1.1277549 -1.9411763 128.0 +-8.3216553 1.1776639 -1.9391134 128.0 +-8.3335314 1.2315476 -1.9436975 128.0 +-8.3142729 1.2808801 -1.9409471 128.0 +-8.3129845 1.3329499 -1.9425515 128.0 +-8.2950478 1.3823327 -1.9402595 128.0 +-8.290247 1.4338675 -1.9411763 128.0 +-8.2726698 1.483163 -1.9391134 128.0 +-8.2576714 1.5328295 -1.9377382 128.0 +-8.2414188 1.5821846 -1.9361339 128.0 +-8.251606 1.6366992 -1.9409471 128.0 +-8.1918211 1.6771494 -1.9290286 128.0 +-8.201376 1.7316036 -1.9338418 128.0 +-8.1867924 1.7810663 -1.932925 128.0 +-8.1909075 1.8346692 -1.9365922 128.0 +-8.1415548 1.8761519 -1.9274242 128.0 +-8.1298895 1.9260722 -1.9274242 128.0 +-8.1207552 1.9766104 -1.9281118 128.0 +-8.1793003 2.0440979 -1.9453019 128.0 +-8.1496325 2.0898952 -1.9411763 128.0 +-8.1253586 2.1368909 -1.9384258 128.0 +-8.117733 2.1882267 -1.939801 128.0 +-8.0760059 2.2302232 -1.932925 128.0 +-8.0631056 2.2799995 -1.9331542 128.0 +-8.0321341 2.3245609 -1.9290286 128.0 +-8.0139856 2.3726962 -1.9281118 128.0 +-7.9946184 2.4204144 -1.9269658 128.0 +-8.0019341 2.4763281 -1.9324666 128.0 +-7.953177 2.5148172 -1.9242154 128.0 +-7.9329653 2.5620742 -1.9230694 128.0 +-7.9466772 2.620455 -1.9304038 128.0 +-7.9461317 2.6744432 -1.9343002 128.0 +-7.9406195 2.7269428 -1.9370506 128.0 +-7.90169 2.7678921 -1.9315498 128.0 +-7.8368907 2.7993 -1.9196314 128.0 +-7.8451772 2.8566575 -1.926049 128.0 +-7.8320646 2.9064338 -1.9271951 128.0 +-7.8341141 2.9620082 -1.9322374 128.0 +-7.8157921 3.0100217 -1.9322374 128.0 +-7.7881141 3.0543683 -1.9299455 128.0 +-7.7764583 3.104985 -1.931779 128.0 +-7.704957 3.1313884 -1.9184854 128.0 +-7.7197795 3.1927409 -1.9271951 128.0 +-7.6973524 3.2389162 -1.9265074 128.0 +-7.682703 3.288383 -1.9278827 128.0 +-7.6454234 3.3280807 -1.9235278 128.0 +-7.6391006 3.3812323 -1.9271951 128.0 +-7.6288619 3.4328339 -1.9299455 128.0 +-7.6041141 3.4779596 -1.9290286 128.0 +-7.5790997 3.5229113 -1.9281118 128.0 +-7.5203738 3.5518918 -1.9184854 128.0 +-7.5247664 3.6106007 -1.9253614 128.0 +-7.5190954 3.6648059 -1.9297162 128.0 +-7.4798923 3.7026691 -1.9253614 128.0 +-7.4509444 3.7454355 -1.923757 128.0 +-7.4226203 3.7884283 -1.9223818 128.0 +-7.3957782 3.8321102 -1.921465 128.0 +-7.3514495 3.8665442 -1.9159642 128.0 +-7.3112707 3.9028704 -1.9116094 128.0 +-7.3051591 3.9573939 -1.9164226 128.0 +-7.262826 3.9922972 -1.9116094 128.0 +-7.2602963 4.0491118 -1.9175686 128.0 +-7.223454 4.086874 -1.9143598 128.0 +-7.1568732 4.1073804 -1.903129 128.0 +-7.1163931 4.1424031 -1.8990034 128.0 +-7.0891657 4.1850009 -1.8985449 128.0 +-7.0408034 4.2149229 -1.8923565 128.0 +-7.0048232 4.2519846 -1.8896061 128.0 +-7.0266833 4.3244729 -1.9028997 128.0 +-6.9785442 4.3541112 -1.8969406 128.0 +-6.9648595 4.4051728 -1.9006078 128.0 +-6.9647408 4.4651608 -1.9081714 128.0 +-6.8800764 4.4706888 -1.8921274 128.0 +-6.8801556 4.5310211 -1.8999202 128.0 +-6.9040422 4.6077309 -1.914589 128.0 +-6.853869 4.6352844 -1.9084005 128.0 +-6.8148599 4.6700993 -1.905421 128.0 +-6.7844772 4.7107162 -1.9049625 128.0 +-6.7355413 4.738256 -1.8992325 128.0 +-6.6999998 4.7749763 -1.8973989 128.0 +-6.6950407 4.8336587 -1.9045042 128.0 +-6.6283274 4.8476429 -1.8937317 128.0 +-6.5804682 4.8748965 -1.8884602 128.0 +-6.571455 4.9309545 -1.8946486 128.0 +-6.5627751 4.9876733 -1.9010662 128.0 +-6.525877 5.0230985 -1.8992325 128.0 +-6.4903269 5.0594554 -1.8978573 128.0 +-6.45152 5.0931535 -1.8955654 128.0 +-6.4133048 5.1271729 -1.8935026 128.0 +-6.3915596 5.1743894 -1.8964821 128.0 +-6.3280725 5.1875935 -1.8868557 128.0 +-6.2983699 5.228189 -1.8875433 128.0 +-6.2549944 5.2573428 -1.8841053 128.0 +-6.2737684 5.33915 -1.8999202 128.0 +-6.228354 5.3667436 -1.8960238 128.0 +-6.1901722 5.4003801 -1.8944193 128.0 +-6.1591082 5.4401937 -1.8951069 128.0 +-6.1510081 5.5005913 -1.903129 128.0 +-6.1236358 5.5441089 -1.9051918 128.0 +-6.0643868 5.5585599 -1.8971697 128.0 +-6.0208902 5.587059 -1.8941902 128.0 +-5.9886236 5.6258965 -1.8948778 128.0 +-5.9638662 5.671927 -1.8980865 128.0 +-5.9464822 5.7252908 -1.9038166 128.0 +-5.9244852 5.7745781 -1.9081714 128.0 +-5.8868628 5.8087707 -1.9074838 128.0 +-5.8717709 5.8654184 -1.9143598 128.0 +-5.856204 5.9220996 -1.9212358 128.0 +-5.7728233 5.9098778 -1.905421 128.0 +-5.7364521 5.945188 -1.905421 128.0 +-5.7441907 6.0267758 -1.9205482 128.0 +-5.7137756 6.068995 -1.9228402 128.0 +-5.6777554 6.1053653 -1.9232986 128.0 +-5.6480889 6.1486902 -1.926049 128.0 +-5.5827823 6.1529551 -1.9164226 128.0 +-5.5351782 6.1762218 -1.9129846 128.0 +-5.5300832 6.2472386 -1.9246738 128.0 +-5.4986949 6.289113 -1.9271951 128.0 +-5.4231014 6.2800069 -1.9139014 128.0 +-5.3970995 6.3279757 -1.9184854 128.0 +-5.3794928 6.3862829 -1.9262782 128.0 +-5.329 6.4057021 -1.9221526 128.0 +-5.3143129 6.4683623 -1.9313207 128.0 +-5.2788172 6.5061393 -1.932925 128.0 +-5.2083631 6.5004272 -1.921465 128.0 +-5.1913314 6.5612688 -1.9301746 128.0 +-5.1539712 6.5968337 -1.9313207 128.0 +-5.1246939 6.6429768 -1.9356754 128.0 +-5.0767584 6.6650043 -1.932925 128.0 +-5.0515647 6.7170329 -1.9391134 128.0 +-4.9928455 6.7244577 -1.9322374 128.0 +-4.9497647 6.7526116 -1.9315498 128.0 +-4.9225049 6.8025694 -1.9372798 128.0 +-4.8902912 6.8461099 -1.9411763 128.0 +-4.8263154 6.8449631 -1.9322374 128.0 +-4.7747717 6.8608661 -1.928341 128.0 +-4.7513232 6.9173131 -1.9361339 128.0 +-4.7289996 6.9761467 -1.9446143 128.0 +-4.663373 6.9710536 -1.9349878 128.0 +-4.6253381 7.0068469 -1.9370506 128.0 +-4.5870395 7.0424361 -1.9391134 128.0 +-4.5516357 7.0827317 -1.9425515 128.0 +-4.5206008 7.1302557 -1.9480523 128.0 +-4.4679904 7.1438303 -1.9441558 128.0 +-4.4210057 7.1661406 -1.9427806 128.0 +-4.3946624 7.2222357 -1.9508027 128.0 +-4.344254 7.2390494 -1.9480523 128.0 +-4.3071909 7.2781339 -1.9514903 128.0 +-4.2403741 7.2665944 -1.9411763 128.0 +-4.2170672 7.3295979 -1.951261 128.0 +-4.1801791 7.3697286 -1.9551575 128.0 +-4.1334553 7.3926902 -1.9544699 128.0 +-4.0875468 7.4170609 -1.9542407 128.0 +-4.0428891 7.4437127 -1.954699 128.0 +-3.9833586 7.4426341 -1.947823 128.0 +-3.9476063 7.485877 -1.9528655 128.0 +-3.9011507 7.5090942 -1.9526362 128.0 +-3.8700805 7.5623503 -1.9604291 128.0 +-3.8306165 7.5998611 -1.9640963 128.0 +-3.7886734 7.632813 -1.9666175 128.0 +-3.737066 7.6462965 -1.9640963 128.0 +-3.7027414 7.6953959 -1.9709723 128.0 +-3.6517034 7.7100534 -1.9689095 128.0 +-3.5878751 7.6970263 -1.9597415 128.0 +-3.5446382 7.7277431 -1.9620335 128.0 +-3.5091679 7.7759633 -1.9689095 128.0 +-3.4681039 7.8124728 -1.9728059 128.0 +-3.4239974 7.842526 -1.9750979 128.0 +-3.3819566 7.8776984 -1.9787651 128.0 +-3.3161438 7.8570504 -1.9682219 128.0 +-3.279808 7.9060202 -1.9755563 128.0 +-3.2224159 7.9043636 -1.9700555 128.0 +-3.1691494 7.912241 -1.9670758 128.0 +-3.1208975 7.9324431 -1.9673051 128.0 +-3.0721662 7.9514432 -1.9673051 128.0 +-3.022974 7.969234 -1.9670758 128.0 +-2.988625 8.0268564 -1.9769315 128.0 +-2.9443281 8.0587568 -1.9803694 128.0 +-2.8921974 8.0693417 -1.9785359 128.0 +-2.8461816 8.0970364 -1.981057 128.0 +-2.7881985 8.0904217 -1.9750979 128.0 +-2.7469156 8.1322765 -1.9812863 128.0 +-2.6997182 8.1572943 -1.9833491 128.0 +-2.6514163 8.1792612 -1.9847243 128.0 +-2.5970562 8.1823883 -1.9815155 128.0 +-2.5450683 8.1925917 -1.9801403 128.0 +-2.5069251 8.2480993 -1.989996 128.0 +-2.4562685 8.2633266 -1.989996 128.0 +-2.4030745 8.2698298 -1.9879332 128.0 +-2.3488297 8.2722473 -1.9849535 128.0 +-2.2962067 8.2799377 -1.9833491 128.0 +-2.2524822 8.320178 -1.9897667 128.0 +-2.1934319 8.3037281 -1.9824324 128.0 +-2.1540968 8.3622742 -1.993434 128.0 +-2.091367 8.330019 -1.9824324 128.0 +-2.0524731 8.392807 -1.9945799 128.0 +-1.9849291 8.3380117 -1.9783067 128.0 +-1.9302162 8.3348618 -1.9746395 128.0 +-1.8839562 8.3683891 -1.9799111 128.0 +-1.8388132 8.4083185 -1.9867871 128.0 +-1.7853667 8.4108734 -1.9847243 128.0 +-1.7411848 8.4578981 -1.993434 128.0 +-1.6823988 8.4340582 -1.9851828 128.0 +-1.6324626 8.4537802 -1.9874747 128.0 +-1.583599 8.4799032 -1.9913712 128.0 +-1.5272161 8.4655132 -1.9856411 128.0 +-1.4804201 8.5044518 -1.9927464 128.0 +-1.4270823 8.5066557 -1.9911419 128.0 +-1.3747044 8.5142908 -1.9909127 128.0 +-1.3164639 8.4840918 -1.9817446 128.0 +-1.2695439 8.5266685 -1.989996 128.0 +-1.215139 8.5198441 -1.986558 128.0 +-1.1640235 8.5358191 -1.9886208 128.0 +-1.1138884 8.5601749 -1.9927464 128.0 +-1.0613432 8.5668488 -1.9927464 128.0 +-1.0100098 8.5838337 -1.9952675 128.0 +-0.95872343 8.6024456 -1.9982471 128.0 +-0.90439302 8.5936451 -1.9948092 128.0 +-0.8522222 8.604845 -1.9961843 128.0 +-0.79751712 8.5895586 -1.9913712 128.0 +-0.7443772 8.5894413 -1.9902251 128.0 +-0.69439399 8.6278057 -1.9982471 128.0 +-0.63970941 8.6086073 -1.9927464 128.0 +-0.58707464 8.615284 -1.993434 128.0 +-0.53281516 8.5963793 -1.9881623 128.0 +-0.48157912 8.6266985 -1.9945799 128.0 +-0.42868596 8.6304636 -1.9948092 128.0 +-0.37508684 8.6183443 -1.9913712 128.0 +-0.32314503 8.6457739 -1.9973303 128.0 +-0.26975474 8.6368923 -1.9948092 128.0 +-0.21660791 8.6325464 -1.993434 128.0 +-0.16304384 8.6025705 -1.9860995 128.0 +-0.11051928 8.623848 -1.9909127 128.0 +-0.057693902 8.637991 -1.9941216 128.0 +-0.004695117 8.6449957 -1.995726 128.0 +0.048171494 8.6127405 -1.9881623 128.0 +0.10117657 8.6259098 -1.9913712 128.0 +0.154241 8.6329117 -1.9932047 128.0 +0.20709208 8.6269379 -1.9920588 128.0 +0.26054922 8.6430178 -1.9961843 128.0 +0.31209618 8.6004009 -1.986558 128.0 +0.36613926 8.6284714 -1.9936631 128.0 +0.41850939 8.6143961 -1.9909127 128.0 +0.47215578 8.6262445 -1.9943507 128.0 +0.52596325 8.6377592 -1.9977888 128.0 +0.57556969 8.5838671 -1.9858704 128.0 +0.62851262 8.5840569 -1.9867871 128.0 +0.67878485 8.5499582 -1.9796818 128.0 +0.73546368 8.5950937 -1.9913712 128.0 +0.7856105 8.5623093 -1.9847243 128.0 +0.83832276 8.5592651 -1.9851828 128.0 +0.89213574 8.5665464 -1.9881623 128.0 +0.94105387 8.5280161 -1.9803694 128.0 +0.99448961 8.5317497 -1.9826615 128.0 +1.0499039 8.5506058 -1.9886208 128.0 +1.1024742 8.5449686 -1.9888499 128.0 +1.1524062 8.5197153 -1.9844952 128.0 +1.2054785 8.5182667 -1.9858704 128.0 +1.2615639 8.5367088 -1.9920588 128.0 +1.3105127 8.5066805 -1.9867871 128.0 +1.3611434 8.4888678 -1.9844952 128.0 +1.4141642 8.4861174 -1.9858704 128.0 +1.4642173 8.4657707 -1.98312 128.0 +1.5123566 8.4355488 -1.9780775 128.0 +1.5706592 8.4615202 -1.986558 128.0 +1.6196129 8.436429 -1.9828907 128.0 +1.6743767 8.4416094 -1.986558 128.0 +1.7243853 8.4225941 -1.9844952 128.0 +1.777038 8.4166164 -1.9856411 128.0 +1.8180972 8.3570461 -1.9739519 128.0 +1.8797636 8.3922758 -1.9851828 128.0 +1.9196401 8.3303118 -1.9730351 128.0 +1.9767752 8.3439503 -1.9792235 128.0 +2.0274751 8.329772 -1.9787651 128.0 +2.0750082 8.30301 -1.9753271 128.0 +2.1280911 8.2986078 -1.9773899 128.0 +2.1740198 8.2665663 -1.9728059 128.0 +2.2262213 8.2587099 -1.9741811 128.0 +2.2745223 8.2364502 -1.9721183 128.0 +2.330049 8.2401352 -1.9764731 128.0 +2.380295 8.2247486 -1.9762439 128.0 +2.4174545 8.1651878 -1.9652423 128.0 +2.4754059 8.1762867 -1.9716599 128.0 +2.5332966 8.1860504 -1.9778483 128.0 +2.5773158 8.1508627 -1.9730351 128.0 +2.6281772 8.1376734 -1.9737227 128.0 +2.667697 8.0899639 -1.9659299 128.0 +2.725668 8.0983515 -1.9721183 128.0 +2.7579212 8.0308409 -1.9595122 128.0 +2.8171198 8.0422459 -1.9666175 128.0 +2.8687048 8.0312252 -1.9682219 128.0 +2.9255886 8.0345087 -1.9734935 128.0 +2.9683988 7.9990678 -1.9691387 128.0 +3.0260293 8.0034657 -1.9748687 128.0 +3.0544436 7.9311543 -1.9613459 128.0 +3.0998526 7.9041076 -1.9592831 128.0 +3.1522629 7.8948822 -1.9618043 128.0 +3.1951489 7.861865 -1.9583663 128.0 +3.2277057 7.8043327 -1.9487399 128.0 +3.2811937 7.7978392 -1.9521779 128.0 +3.3339572 7.7891927 -1.9551575 128.0 +3.3708112 7.7435994 -1.9487399 128.0 +3.4198372 7.7263308 -1.9496566 128.0 +3.4400227 7.6448402 -1.9340711 128.0 +3.5479941 7.7572546 -1.9686803 128.0 +3.5778842 7.697382 -1.9588246 128.0 +3.6150715 7.6541595 -1.9533238 128.0 +3.6623895 7.6327114 -1.9535531 128.0 +3.704037 7.5995955 -1.9508027 128.0 +3.7406664 7.5566607 -1.945531 128.0 +3.7970166 7.5535693 -1.9508027 128.0 +3.8468328 7.537065 -1.9526362 128.0 +3.9015145 7.5297408 -1.9569911 128.0 +3.9567039 7.5228901 -1.961575 128.0 +3.9468713 7.3937073 -1.9336126 128.0 +3.9907732 7.3667831 -1.932925 128.0 +4.0443392 7.357512 -1.9370506 128.0 +4.0751858 7.3070536 -1.9301746 128.0 +4.1338429 7.3064804 -1.9368215 128.0 +4.1689076 7.2640929 -1.9322374 128.0 +4.2295589 7.2661381 -1.939801 128.0 +4.2557564 7.209034 -1.9313207 128.0 +4.3189073 7.2145228 -1.9400302 128.0 +4.3630934 7.1878867 -1.9400302 128.0 +4.3729362 7.1054373 -1.9246738 128.0 +4.4473648 7.1280227 -1.9384258 128.0 +4.487896 7.095664 -1.9370506 128.0 +4.5302992 7.0663543 -1.9365922 128.0 +4.5550108 7.0098557 -1.9285703 128.0 +4.6065021 6.9947824 -1.9322374 128.0 +4.6304235 6.9380479 -1.9242154 128.0 +4.680541 6.920794 -1.9274242 128.0 +4.7179666 6.8847179 -1.9253614 128.0 +4.7257042 6.8060656 -1.9111509 128.0 +4.7718568 6.7833104 -1.9129846 128.0 +4.8099995 6.7491469 -1.9116094 128.0 +4.843914 6.7092466 -1.9086298 128.0 +4.8947577 6.6927557 -1.9125261 128.0 +4.9484777 6.6798034 -1.9175686 128.0 +4.9794402 6.6360784 -1.9136722 128.0 +5.0147643 6.5984254 -1.9116094 128.0 +5.0498142 6.5605888 -1.9095466 128.0 +5.1091228 6.5540471 -1.916881 128.0 +5.128736 6.4965978 -1.9090881 128.0 +5.1946363 6.4976993 -1.9189438 128.0 +5.2276711 6.4573812 -1.9164226 128.0 +5.2770672 6.4372277 -1.9200898 128.0 +5.284761 6.3665285 -1.9084005 128.0 +5.3387561 6.3518658 -1.9139014 128.0 +5.3549204 6.2923012 -1.9056501 128.0 +5.3985114 6.2652249 -1.9074838 128.0 +5.4253349 6.2187791 -1.9033582 128.0 +5.4517922 6.1722407 -1.8992325 128.0 +5.4778829 6.1256118 -1.8951069 128.0 +5.5120993 6.0882769 -1.893961 128.0 +5.5598755 6.0658221 -1.8976282 128.0 +5.6108932 6.0465775 -1.9024414 128.0 +5.6512208 6.015583 -1.9035873 128.0 +5.6786346 5.9709196 -1.9003786 128.0 +5.7050385 5.9254456 -1.8969406 128.0 +5.7460446 5.8952079 -1.8985449 128.0 +5.8080869 5.8861699 -1.9072546 128.0 +5.8103886 5.8166757 -1.8960238 128.0 +5.8169017 5.7521672 -1.8863974 128.0 +5.8660126 5.7299709 -1.8909813 128.0 +5.8961573 5.6891384 -1.889377 128.0 +5.9126353 5.6353917 -1.8834177 128.0 +5.9548974 5.6063461 -1.885939 128.0 +5.9792066 5.5604215 -1.8827301 128.0 +6.0031772 5.51441 -1.8795214 128.0 +6.0484333 5.487937 -1.8831885 128.0 +6.084167 5.4526701 -1.8838761 128.0 +6.1247978 5.4216881 -1.8861681 128.0 +6.1542854 5.3808012 -1.8850222 128.0 +6.1923423 5.3473916 -1.8866266 128.0 +6.1702347 5.2625504 -1.8696657 128.0 +6.2001758 5.2227101 -1.8689781 128.0 +6.2343497 5.1864357 -1.8696657 128.0 +6.290122 5.1678596 -1.8770001 128.0 +6.3338065 5.1389799 -1.8806673 128.0 +6.3781328 5.1103668 -1.8845637 128.0 +6.394866 5.059659 -1.880209 128.0 +6.4342284 5.0269184 -1.8827301 128.0 +6.4695759 4.9909115 -1.8841053 128.0 +6.4946575 4.9469919 -1.8825009 128.0 +6.5326686 4.912899 -1.8847929 128.0 +6.5962944 4.897676 -1.8946486 128.0 +6.6089511 4.8444486 -1.8896061 128.0 +6.6393404 4.8043766 -1.8898354 128.0 +6.6750307 4.7680745 -1.8916689 128.0 +6.6922288 4.7186131 -1.8882309 128.0 +6.7242517 4.6796861 -1.8891478 128.0 +6.7528391 4.6383386 -1.8891478 128.0 +6.8005085 4.6099257 -1.8946486 128.0 +6.8092499 4.5551214 -1.8891478 128.0 +6.8460073 4.5191541 -1.8916689 128.0 +6.8662667 4.472281 -1.8896061 128.0 +6.8960357 4.4316454 -1.8902937 128.0 +6.9329624 4.3955035 -1.8930441 128.0 +6.9771323 4.3637204 -1.8978573 128.0 +6.9930072 4.3141832 -1.8948778 128.0 +7.017684 4.2701817 -1.8944193 128.0 +6.9911733 4.1954842 -1.8799797 128.0 +7.0327001 4.1619282 -1.8843346 128.0 +7.0690336 4.1250758 -1.8873142 128.0 +7.1110854 4.0913329 -1.8918982 128.0 +7.1284356 4.0433006 -1.8898354 128.0 +7.1607566 4.0037608 -1.8918982 128.0 +7.182631 3.9583383 -1.8912106 128.0 +7.2341547 3.9290595 -1.8985449 128.0 +7.2512612 3.8809228 -1.8967113 128.0 +7.2689109 3.8331783 -1.8951069 128.0 +7.2845201 3.7844658 -1.8930441 128.0 +7.2894082 3.7303846 -1.8882309 128.0 +7.3199825 3.6895308 -1.8902937 128.0 +7.3607926 3.6536357 -1.8951069 128.0 +7.3804488 3.6071198 -1.8944193 128.0 +7.4077053 3.5642986 -1.8957945 128.0 +7.443511 3.5254459 -1.8994617 128.0 +7.4632382 3.4788845 -1.8990034 128.0 +7.479135 3.4305902 -1.8976282 128.0 +7.5089164 3.3886387 -1.8999202 128.0 +7.5144434 3.3357866 -1.8960238 128.0 +7.5320935 3.2884474 -1.8953362 128.0 +7.5574961 3.2444737 -1.8967113 128.0 +7.5826421 3.2003119 -1.8980865 128.0 +7.6021361 3.1537254 -1.8980865 128.0 +7.6078238 3.1015077 -1.8946486 128.0 +7.6420717 3.0609219 -1.8985449 128.0 +7.6679554 3.0168247 -1.9003786 128.0 +7.6845059 2.9690166 -1.8999202 128.0 +7.702579 2.9218094 -1.8999202 128.0 +7.7240105 2.8758509 -1.9008369 128.0 +7.7460823 2.8300736 -1.901983 128.0 +7.7706318 2.7851191 -1.9038166 128.0 +7.7793102 2.7344813 -1.9017538 128.0 +7.7913408 2.685111 -1.9006078 128.0 +7.7864599 2.6300883 -1.8953362 128.0 +7.8006029 2.5816503 -1.8948778 128.0 +7.8283339 2.5376406 -1.8978573 128.0 +7.8419018 2.48897 -1.8973989 128.0 +7.8588853 2.4413838 -1.8978573 128.0 +7.910038 2.4041576 -1.9067962 128.0 +7.9591627 2.3658407 -1.9152766 128.0 +7.9445534 2.3085382 -1.9081714 128.0 +7.9801049 2.2658641 -1.913443 128.0 +7.9807262 2.2132142 -1.9102342 128.0 +7.9622116 2.1555538 -1.9024414 128.0 +7.9846988 2.1091444 -1.9047334 128.0 +8.002203 2.0613258 -1.9058794 128.0 +8.0411339 2.0188243 -1.912297 128.0 +8.0316238 1.9641275 -1.9070253 128.0 +8.0605679 1.9188678 -1.9111509 128.0 +8.0541735 1.8651997 -1.9067962 128.0 +8.07971 1.8189524 -1.9102342 128.0 +8.0707502 1.7649741 -1.905421 128.0 +8.0728588 1.7136003 -1.9033582 128.0 +8.1118221 1.6699233 -1.9102342 128.0 +8.1448259 1.6246897 -1.915735 128.0 +8.1775789 1.5791137 -1.9212358 128.0 +8.1622362 1.5242603 -1.9152766 128.0 +8.1580248 1.471729 -1.9120678 128.0 +8.1784086 1.4236484 -1.9148182 128.0 +8.1889105 1.373762 -1.9152766 128.0 +8.2039118 1.3245763 -1.916881 128.0 +8.1695623 1.267644 -1.9067962 128.0 +8.1868143 1.2189267 -1.9090881 128.0 +8.2124481 1.1712825 -1.913443 128.0 +8.2638454 1.1269218 -1.9239862 128.0 +8.278326 1.0771998 -1.9258198 128.0 +8.2828484 1.0261452 -1.9253614 128.0 +8.2367868 0.96915853 -1.9129846 128.0 +8.2832079 0.92313033 -1.922611 128.0 +8.2848444 0.87188047 -1.9216942 128.0 +8.2755089 0.81958956 -1.9182562 128.0 +8.2261057 0.76375473 -1.905421 128.0 +8.2674875 0.71646112 -1.9141306 128.0 +8.297925 0.66782886 -1.920319 128.0 +8.2921591 0.61617941 -1.918027 128.0 +8.3210335 0.56700981 -1.9239862 128.0 +8.3117256 0.51515883 -1.9210066 128.0 +8.30404 0.46355206 -1.9184854 128.0 +8.282423 0.41138235 -1.9127554 128.0 +8.3207722 0.36212221 -1.9212358 128.0 +8.2926846 0.3099317 -1.9141306 128.0 +8.3537769 0.26089922 -1.9281118 128.0 +8.3211632 0.20878035 -1.9200898 128.0 +8.3602428 0.15843983 -1.9290286 128.0 +8.3493776 0.10698915 -1.9262782 128.0 +8.3557167 0.055795591 -1.9276534 128.0 +8.2760849 0.0044778106 -1.908859 128.0 +8.3450651 -0.04668672 -1.9251322 128.0 +8.3037424 -0.097412594 -1.9155058 128.0 +8.3068819 -0.14843094 -1.9164226 128.0 +8.3359804 -0.20012097 -1.9235278 128.0 +8.3092995 -0.2505044 -1.9175686 128.0 +8.3562431 -0.30324733 -1.9290286 128.0 +8.3444996 -0.35410234 -1.9267366 128.0 +8.353837 -0.40586281 -1.929487 128.0 +8.3191156 -0.45535928 -1.9219234 128.0 +8.3249092 -0.50692791 -1.9239862 128.0 +8.3129015 -0.55741334 -1.9219234 128.0 +8.3442726 -0.6109671 -1.9301746 128.0 +8.3034945 -0.65922952 -1.921465 128.0 +8.3177204 -0.71174228 -1.9258198 128.0 +8.3093195 -0.76240987 -1.924903 128.0 +8.2918911 -0.81214768 -1.9219234 128.0 +8.3032103 -0.86472368 -1.9258198 128.0 +8.2958126 -0.91544151 -1.9253614 128.0 +8.3229122 -0.97015667 -1.9331542 128.0 +8.2820225 -1.0169379 -1.924903 128.0 +8.3055534 -1.071596 -1.9320083 128.0 +8.2939987 -1.1218855 -1.9308622 128.0 +8.2869587 -1.1727555 -1.9308622 128.0 +8.2468672 -1.2187445 -1.9230694 128.0 +8.2373104 -1.269027 -1.922611 128.0 +8.2332125 -1.3201625 -1.9235278 128.0 +8.207675 -1.3677765 -1.9194022 128.0 +8.226943 -1.4229217 -1.926049 128.0 +8.2496748 -1.4790415 -1.9336126 128.0 +8.2088623 -1.5237718 -1.926049 128.0 +8.199358 -1.5741117 -1.926049 128.0 +8.2325106 -1.6329125 -1.936363 128.0 +8.2080317 -1.6804676 -1.932925 128.0 +8.1804237 -1.7271808 -1.9287994 128.0 +8.1972542 -1.7833419 -1.9354463 128.0 +8.1187181 -1.8185034 -1.919173 128.0 +8.077054 -1.8612916 -1.9118385 128.0 +8.084425 -1.9153035 -1.9164226 128.0 +8.068738 -1.9639518 -1.9155058 128.0 +7.8837194 -1.9702438 -1.8735621 128.0 +7.7705936 -1.9927136 -1.8490376 128.0 +7.5040474 -1.9735234 -1.7871536 128.0 +7.3931131 -1.9929339 -1.7630875 128.0 +7.3084989 -2.018312 -1.7454391 128.0 +7.2219806 -2.0421979 -1.7273322 128.0 +7.0877609 -2.0513008 -1.6975362 128.0 +6.977973 -2.0660179 -1.6736994 128.0 +7.0033617 -2.1203575 -1.6830966 128.0 +6.8935118 -2.1333666 -1.6592598 128.0 +6.6129985 -2.0911193 -1.59325 128.0 +6.550024 -2.1155047 -1.5808733 128.0 +6.4777565 -2.1361487 -1.5662044 128.0 +6.2615681 -2.1075554 -1.5157803 128.0 +5.9382691 -2.0394077 -1.4385397 128.0 +5.8760362 -2.0584311 -1.426163 128.0 +5.8403783 -2.0862627 -1.4204329 128.0 +6.3524742 -2.3132014 -1.551994 128.0 +5.7258158 -2.1249311 -1.3982005 128.0 +5.3949084 -2.0398986 -1.3182095 128.0 +5.2705617 -2.0299399 -1.290018 128.0 +5.189136 -2.0352349 -1.2725987 128.0 +5.1349664 -2.0504351 -1.2620555 128.0 +5.0230937 -2.0415957 -1.2368435 128.0 +4.8692498 -2.0139797 -1.200859 128.0 +4.7939963 -2.0173955 -1.1848149 128.0 +4.8343253 -2.0693684 -1.1983378 128.0 +4.552 -1.9816774 -1.1291193 128.0 +4.5023708 -1.9930257 -1.1194929 128.0 +4.4367967 -1.9966511 -1.1057408 128.0 +4.3837423 -2.0052154 -1.0951976 128.0 +4.3263383 -2.0111532 -1.0835084 128.0 +4.2883916 -2.0256073 -1.0768616 128.0 +4.2372675 -2.0333562 -1.0667768 128.0 +4.1617112 -2.0286145 -1.0502744 128.0 +4.1326103 -2.0459082 -1.0459195 128.0 +4.1399827 -2.0812809 -1.0511911 128.0 +4.1141291 -2.1000073 -1.0477531 128.0 +4.0899305 -2.1193907 -1.0447735 128.0 +4.0802951 -2.1462584 -1.0456903 128.0 +4.07306 -2.1744626 -1.0472947 128.0 +4.0682001 -2.2040496 -1.0495868 128.0 +4.0435104 -2.2228751 -1.0466071 128.0 +4.0365963 -2.2514362 -1.0484407 128.0 +3.9803452 -2.252198 -1.0369807 128.0 +4.064384 -2.3327768 -1.063568 128.0 +4.0575652 -2.3620782 -1.0656308 128.0 +3.9826422 -2.3513055 -1.0491283 128.0 +3.9798324 -2.3826973 -1.0523372 128.0 +3.944335 -2.3944461 -1.0466071 128.0 +3.9312265 -2.4196234 -1.0470655 128.0 +3.9518175 -2.4658537 -1.0569211 128.0 +3.951421 -2.4994199 -1.0610467 128.0 +3.9319131 -2.5209918 -1.0599008 128.0 +3.9024947 -2.5360546 -1.0560043 128.0 +3.9023066 -2.5701232 -1.0603591 128.0 +3.9204686 -2.6167119 -1.0699855 128.0 +3.9067578 -2.6423538 -1.0706731 128.0 +3.894486 -2.6690264 -1.0718192 128.0 +3.8676412 -2.6856558 -1.0688396 128.0 +3.9052279 -2.7474174 -1.0844252 128.0 +3.8550031 -2.7476025 -1.0747987 128.0 +3.778091 -2.7279046 -1.0573795 128.0 +3.7966387 -2.7768908 -1.0676936 128.0 +3.8217654 -2.8314209 -1.0800704 128.0 +3.7404754 -2.8069155 -1.061276 128.0 +3.6084824 -2.7426515 -1.0273542 128.0 +3.6656373 -2.8217342 -1.0493575 128.0 +3.6229198 -2.8244257 -1.0417939 128.0 +3.6169817 -2.855649 -1.0452319 128.0 +3.5841854 -2.865633 -1.0406479 128.0 +3.6119289 -2.9243171 -1.0544 128.0 +3.611232 -2.9606168 -1.0596715 128.0 +3.586257 -2.9771242 -1.0576087 128.0 +3.5790997 -3.008467 -1.0610467 128.0 +3.5679858 -3.0366793 -1.0633388 128.0 +3.6104922 -3.111249 -1.0823624 128.0 +3.5972021 -3.1384628 -1.084196 128.0 +3.5705814 -3.1540322 -1.0819039 128.0 +3.5272164 -3.1544707 -1.0743403 128.0 +3.5222268 -3.1891191 -1.0789244 128.0 +3.5198145 -3.226455 -1.0844252 128.0 +3.5898573 -3.3314114 -1.1133044 128.0 +3.4168136 -3.2100935 -1.0640264 128.0 +3.3737755 -3.2088628 -1.0564628 128.0 +3.2299047 -3.1100137 -1.0158943 128.0 +3.2790747 -3.196352 -1.0383559 128.0 +3.17556 -3.1336915 -1.0106226 128.0 +3.1604044 -3.1572449 -1.0119978 128.0 +3.1259146 -3.1613512 -1.0069554 128.0 +3.1567924 -3.2319965 -1.0239162 128.0 +3.165966 -3.2814243 -1.0337719 128.0 +3.1498015 -3.3050158 -1.0351471 128.0 +3.1194541 -3.3136504 -1.0317091 128.0 +3.072547 -3.3042181 -1.022541 128.0 +3.0528734 -3.3237255 -1.0227703 128.0 +3.0337303 -3.3438368 -1.0232286 128.0 +3.0488875 -3.4022546 -1.0358347 128.0 +2.9711757 -3.3567626 -1.0156651 128.0 +3.0312548 -3.4672577 -1.0445443 128.0 +3.0309181 -3.5101023 -1.0521079 128.0 +3.0200622 -3.5412233 -1.0560043 128.0 +2.9926326 -3.5529876 -1.0539415 128.0 +2.9601922 -3.5585625 -1.0500451 128.0 +2.9438632 -3.5834277 -1.0521079 128.0 +2.9224336 -3.6021793 -1.0523372 128.0 +2.9002759 -3.620043 -1.0523372 128.0 +2.8743851 -3.6331909 -1.050962 128.0 +2.8616271 -3.6630313 -1.0546291 128.0 +2.8272057 -3.6651077 -1.0500451 128.0 +2.8005347 -3.676966 -1.0484407 128.0 +2.7551022 -3.6637421 -1.0395019 128.0 +2.7105186 -3.6508818 -1.0307922 128.0 +2.6897926 -3.6697996 -1.0314798 128.0 +2.6826327 -3.7075255 -1.0376683 128.0 +2.6575699 -3.7207479 -1.0367515 128.0 +2.6386163 -3.7425528 -1.0383559 128.0 +2.676769 -3.8465533 -1.063568 128.0 +2.6244571 -3.8211851 -1.0516496 128.0 +2.6151628 -3.8581641 -1.0576087 128.0 +2.6185033 -3.9145887 -1.0690688 128.0 +2.5703018 -3.8940272 -1.0587547 128.0 +2.5293589 -3.883626 -1.0514203 128.0 +2.4607484 -3.8294711 -1.0319383 128.0 +2.426259 -3.8272347 -1.0271251 128.0 +2.3758881 -3.7991376 -1.0152067 128.0 +2.3857546 -3.8674896 -1.0301046 128.0 +2.4414244 -4.0126028 -1.0660892 128.0 +2.3386159 -3.8973098 -1.0303339 128.0 +2.3508503 -3.9727349 -1.0470655 128.0 +2.2817824 -3.9105825 -1.0262083 128.0 +2.2679393 -3.9422269 -1.0310215 128.0 +2.2446682 -3.9577618 -1.0314798 128.0 +2.2193913 -3.9697611 -1.0310215 128.0 +2.1926425 -3.9790421 -1.0298755 128.0 +2.1830537 -4.0197916 -1.0372099 128.0 +2.1661565 -4.0476999 -1.0411063 128.0 +2.1321981 -4.0436954 -1.0365223 128.0 +2.1136293 -4.0687947 -1.0397311 128.0 +2.0881803 -4.0808206 -1.0395019 128.0 +2.0595963 -4.0866032 -1.0376683 128.0 +2.0357811 -4.1017795 -1.0383559 128.0 +2.0028806 -4.0984526 -1.0342302 128.0 +1.9532145 -4.0597925 -1.0209366 128.0 +1.9132664 -4.0400324 -1.0126854 128.0 +1.9151748 -4.1090403 -1.0275835 128.0 +1.8968259 -4.1357546 -1.0314798 128.0 +1.8590003 -4.119812 -1.0243747 128.0 +1.8048533 -4.0661974 -1.0076431 128.0 +1.7970082 -4.1164451 -1.0177279 128.0 +1.7882296 -4.165854 -1.0275835 128.0 +1.7425723 -4.12922 -1.0154358 128.0 +1.7283939 -4.1668062 -1.0223119 128.0 +1.7351345 -4.2566509 -1.0424815 128.0 +1.672425 -4.1759562 -1.0193323 128.0 +1.6603141 -4.2205586 -1.0280418 128.0 +1.1863515 -3.0712156 -0.73535299 128.0 +1.1671393 -3.077527 -0.73512375 128.0 +0 -0 -0 128.0 +1.4920936 -4.084497 -0.98403543 128.0 +1.3175535 -3.6766655 -0.87974924 128.0 +1.2846384 -3.6552954 -0.87241483 128.0 +1.4918331 -4.3293686 -1.0383559 128.0 +1.4677328 -4.345818 -1.0401895 128.0 +1.447769 -4.3750715 -1.0452319 128.0 +1.4235986 -4.3922062 -1.0472947 128.0 +1.0361381 -3.2652864 -0.76675344 128.0 +1.0345672 -3.3310733 -0.78142226 128.0 +1.0220356 -3.363435 -0.78783989 128.0 +0.99333453 -3.3425853 -0.78119308 128.0 +0.96791631 -3.3317926 -0.77706742 128.0 +0.94506139 -3.3292418 -0.77500463 128.0 +0.86217606 -3.1098659 -0.71999657 128.0 +0.84053403 -3.1057022 -0.71770453 128.0 +0.81798106 -3.0976257 -0.71449572 128.0 +1.1438149 -4.4410734 -1.0399603 128.0 +1.1198623 -4.461225 -1.0431691 128.0 +1.0843732 -4.4349198 -1.0351471 128.0 +1.0562388 -4.4377022 -1.0342302 128.0 +1.025036 -4.427031 -1.0301046 128.0 +1.0017018 -4.4503298 -1.0342302 128.0 +0.97125632 -4.4421291 -1.0307922 128.0 +0.76870996 -3.6224866 -0.83207554 128.0 +0.74529046 -3.6214149 -0.83070034 128.0 +0.91389596 -4.5823927 -1.0603591 128.0 +0.87616259 -4.5382171 -1.0484407 128.0 +0.85223222 -4.5645576 -1.0534831 128.0 +0.82576424 -4.5783224 -1.0555459 128.0 +0.79364926 -4.560288 -1.0500451 128.0 +0.76500857 -4.5612321 -1.0491283 128.0 +0.73064393 -4.5264421 -1.0397311 128.0 +0.69628745 -4.4885182 -1.0296463 128.0 +0.67762357 -4.5523973 -1.0438567 128.0 +0.64816552 -4.5458694 -1.0413355 128.0 +0.61841846 -4.5362587 -1.0381267 128.0 +0.59094983 -4.5428634 -1.0388143 128.0 +0.56713474 -4.5792475 -1.0466071 128.0 +0.53914011 -4.5836082 -1.0468363 128.0 +0.51165259 -4.5926342 -1.0482115 128.0 +0.48193431 -4.5811667 -1.0447735 128.0 +0.4512243 -4.5578842 -1.0385851 128.0 +0.42414948 -4.5702591 -1.0408771 128.0 +0.39685568 -4.5815034 -1.0429399 128.0 +0.36561131 -4.5450425 -1.0337719 128.0 +0.33670607 -4.5336108 -1.0305631 128.0 +0.30914691 -4.5394759 -1.0314798 128.0 +0.28176948 -4.5490594 -1.0333135 128.0 +0.25341728 -4.5429277 -1.0314798 128.0 +0.22481261 -4.5298147 -1.0280418 128.0 +0.19714107 -4.5340261 -1.0287294 128.0 +0.16957191 -4.5419593 -1.0303339 128.0 +0.14103028 -4.5215101 -1.0252914 128.0 +0.11345539 -4.5291018 -1.0268959 128.0 +0.085478306 -4.5199809 -1.0246038 128.0 +0.058143198 -4.5515656 -1.0319383 128.0 +0.030004753 -4.5206895 -1.0246038 128.0 +0.0022628913 -4.5159216 -1.0234579 128.0 +-0.025505716 -4.5265574 -1.025979 128.0 +-0.05335927 -4.5331287 -1.0275835 128.0 +-0.081415832 -4.5463414 -1.0307922 128.0 +-0.10956658 -4.5564604 -1.0333135 128.0 +-0.13725887 -4.546946 -1.0312507 128.0 +-0.16557887 -4.5576911 -1.0340011 128.0 +-0.19448934 -4.5789566 -1.0392727 128.0 +-0.22248726 -4.5757327 -1.0388143 128.0 +-0.25289798 -4.6170464 -1.0488992 128.0 +-0.28453338 -4.669816 -1.0617343 128.0 +-0.31324655 -4.6689534 -1.0619636 128.0 +-0.3418178 -4.6659727 -1.0617343 128.0 +-0.37036422 -4.6628175 -1.0615051 128.0 +-0.39647952 -4.631362 -1.0546291 128.0 +-0.42497844 -4.6298113 -1.0548583 128.0 +-0.45119718 -4.6048355 -1.0495868 128.0 +-0.47873795 -4.5952029 -1.0479823 128.0 +-0.50212228 -4.5486412 -1.0376683 128.0 +-0.5346415 -4.585115 -1.0470655 128.0 +-0.87001359 -7.0849881 -1.6409237 128.0 +-0.90848953 -7.0409012 -1.6317557 128.0 +-0.94332707 -6.9734597 -1.6170869 128.0 +-0.99196053 -7.0089831 -1.6269425 128.0 +-1.0353749 -7.0056534 -1.6276301 128.0 +-1.0767115 -6.9885864 -1.625109 128.0 +-1.1226537 -7.0010705 -1.6296929 128.0 +-1.1647905 -6.9892492 -1.628547 128.0 +-1.2114683 -7.0040312 -1.6338185 128.0 +-1.257169 -7.0117955 -1.6374857 128.0 +-1.2962617 -6.9828949 -1.6324433 128.0 +-1.3359644 -6.958559 -1.628547 128.0 +-1.3765535 -6.9397278 -1.6260257 128.0 +-1.4228176 -6.9492693 -1.6303805 128.0 +-1.4634204 -6.9308844 -1.6280885 128.0 +-1.5057131 -6.9208236 -1.6278594 128.0 +-1.5496391 -6.9181032 -1.6294637 128.0 +-1.5857211 -6.8809571 -1.6228169 128.0 +-1.6339694 -6.8966718 -1.6290053 128.0 +-1.6730337 -6.8732748 -1.6257966 128.0 +-1.7177713 -6.8732677 -1.6283177 128.0 +-1.7475835 -6.8145113 -1.6166285 128.0 +-1.8017401 -6.8507295 -1.6280885 128.0 +-1.8498205 -6.8621011 -1.6335893 128.0 +-1.8981082 -6.8731403 -1.6390902 128.0 +-1.942099 -6.8679209 -1.6406945 128.0 +-1.9777099 -6.8334346 -1.6351937 128.0 +-2.0223646 -6.8305044 -1.6374857 128.0 +-2.0662119 -6.8244882 -1.6390902 128.0 +-2.114377 -6.8321395 -1.6441325 128.0 +-2.1542046 -6.8125405 -1.6425282 128.0 +-2.1917775 -6.7862263 -1.6393193 128.0 +-2.2345948 -6.7763476 -1.6402361 128.0 +-2.2727165 -6.7523608 -1.6377149 128.0 +-2.3201115 -6.7557807 -1.6420697 128.0 +-1.3319176 -3.8016927 -0.90862846 128.0 +-1.3555467 -3.7943654 -0.9088577 128.0 +-2.4280863 -6.6680274 -1.6310681 128.0 +-2.486901 -6.7013702 -1.6432158 128.0 +-2.5241868 -6.6759696 -1.6406945 128.0 +-2.5686002 -6.6694393 -1.6429865 128.0 +-2.6052105 -6.6426787 -1.6402361 128.0 +-2.6502509 -6.6374164 -1.6429865 128.0 +-2.6942255 -6.6291456 -1.6450493 128.0 +-2.727783 -6.5953989 -1.6406945 128.0 +-2.7693326 -6.5812292 -1.6413821 128.0 +-2.8131092 -6.5721669 -1.6434449 128.0 +-2.8689206 -6.5904822 -1.6526129 128.0 +-1.3781021 -3.1129167 -0.761711 128.0 +-1.3987741 -3.1079528 -0.76262784 128.0 +-2.9832666 -6.5223951 -1.6489457 128.0 +-3.0207696 -6.4986711 -1.6475705 128.0 +-1.6207594 -3.4311068 -0.85362041 128.0 +-1.6337819 -3.404423 -0.84926558 128.0 +-1.6444061 -3.3733342 -0.84376478 128.0 +-1.6607556 -3.3544569 -0.84147274 128.0 +-1.6839297 -3.349422 -0.84284794 128.0 +-1.7088742 -3.3476965 -0.84513998 128.0 +-1.7360997 -3.3501122 -0.84857798 128.0 +-1.7656842 -3.3566267 -0.85316199 128.0 +-3.3954859 -6.3606744 -1.6578846 128.0 +-3.4117339 -6.2977819 -1.6466538 128.0 +-3.4690659 -6.3108501 -1.6558218 128.0 +-3.5048788 -6.2843451 -1.6544466 128.0 +-3.5433729 -6.2627211 -1.6544466 128.0 +-3.5783422 -6.234952 -1.6528422 128.0 +-3.621428 -6.2212906 -1.6551342 128.0 +-3.6441946 -6.1729674 -1.648029 128.0 +-3.7064989 -6.1914153 -1.6592598 128.0 +-3.7368433 -6.1560745 -1.6558218 128.0 +-3.7776067 -6.1380038 -1.657197 128.0 +-3.8167434 -6.1171865 -1.6578846 128.0 +-3.8630505 -6.1076379 -1.661781 128.0 +-3.90308 -6.0879169 -1.6629269 128.0 +-3.9371793 -6.0589561 -1.6615517 128.0 +-3.9673231 -6.0241156 -1.6585722 128.0 +-3.9928653 -5.9826565 -1.653759 128.0 +-2.0965471 -3.0996282 -0.84124357 128.0 +-2.1177273 -3.0899177 -0.84216034 128.0 +-2.1410878 -3.083262 -0.84399396 128.0 +-4.1827254 -5.9457607 -1.6718658 128.0 +-4.2050071 -5.9001665 -1.6661358 128.0 +-4.2360029 -5.8671508 -1.664073 128.0 +-4.2552609 -5.8182635 -1.6574261 128.0 +-4.3285408 -5.842885 -1.6723242 128.0 +-4.3526268 -5.8006434 -1.6677402 128.0 +-4.3881373 -5.7738271 -1.6677402 128.0 +-4.4234819 -5.7467933 -1.6677402 128.0 +-4.4706283 -5.7348976 -1.6723242 128.0 +-4.5039239 -5.7050662 -1.6716366 128.0 +-4.5388446 -5.6773233 -1.6716366 128.0 +-4.5791063 -5.6561756 -1.6736994 128.0 +-4.6174283 -5.6324892 -1.6750746 128.0 +-4.6574965 -5.6107922 -1.6771374 128.0 +-4.7143812 -5.6089344 -1.6853886 128.0 +-4.7436619 -5.5739717 -1.683555 128.0 +-4.7752323 -5.5418105 -1.6826382 128.0 +-4.8181043 -5.522675 -1.685847 128.0 +-4.8332138 -5.4718499 -1.6792002 128.0 +-4.8628049 -5.4377375 -1.677825 128.0 +-4.9058776 -5.4186215 -1.681263 128.0 +-4.944952 -5.394876 -1.6833258 128.0 +-4.9859061 -5.3729954 -1.6860762 128.0 +-5.0247784 -5.3486862 -1.688139 128.0 +-5.0608563 -5.321281 -1.689285 128.0 +-5.0913868 -5.2880244 -1.6885974 128.0 +-5.1210198 -5.2538962 -1.6876806 128.0 +-5.1627316 -5.2320757 -1.6908894 128.0 +-5.1844196 -5.1899691 -1.6874514 128.0 +-5.189868 -5.132051 -1.6787418 128.0 +-5.2108159 -5.0899072 -1.6753038 128.0 +-5.2538562 -5.0693288 -1.6792002 128.0 +-5.2524519 -5.006103 -1.6686569 128.0 +-5.366694 -5.0525174 -1.6957027 128.0 +-5.3797755 -5.0029202 -1.6899726 128.0 +-5.3745308 -4.9368906 -1.6785126 128.0 +-5.3967929 -4.896625 -1.6759914 128.0 +-5.4028163 -4.8419795 -1.6684278 128.0 +-5.4331532 -4.8093824 -1.6686569 128.0 +-5.4889402 -4.7990208 -1.6769081 128.0 +-5.4910259 -4.7417111 -1.6684278 128.0 +-5.5096493 -4.6990857 -1.6652189 128.0 +-5.5741115 -4.6952929 -1.6762205 128.0 +-5.636488 -4.6890173 -1.6865346 128.0 +-5.6734257 -4.6611419 -1.6890558 128.0 +-5.7170362 -4.6385088 -1.6936399 128.0 +-5.7089295 -4.5741262 -1.6826382 128.0 +-5.7689476 -4.5643787 -1.6922646 128.0 +-5.8022146 -4.5330906 -1.693869 128.0 +-5.819901 -4.4896736 -1.6908894 128.0 +-5.8419194 -4.4497499 -1.689285 128.0 +-5.8667789 -4.4120655 -1.6885974 128.0 +-5.8718591 -4.3597364 -1.6821798 128.0 +-5.9283304 -4.3454938 -1.6908894 128.0 +-5.9525166 -4.3073244 -1.6902018 128.0 +-5.9550729 -4.2537451 -1.6833258 128.0 +-5.9739017 -4.2120767 -1.681263 128.0 +-6.0020308 -4.1770105 -1.6819506 128.0 +-5.9962573 -4.1186094 -1.6730118 128.0 +-6.0141644 -4.0768237 -1.670949 128.0 +-6.031785 -4.0349731 -1.6688862 128.0 +-6.0564299 -3.9978871 -1.6688862 128.0 +-6.083293 -3.962244 -1.6695738 128.0 +-6.1173167 -3.9311585 -1.6723242 128.0 +-6.1503649 -3.8992829 -1.6748453 128.0 +-6.1485925 -3.84547 -1.6677402 128.0 +-6.161303 -3.8010259 -1.6647606 128.0 +-6.1720371 -3.755559 -1.6613226 128.0 +-6.1866183 -3.7126083 -1.6590306 128.0 +-6.1866655 -3.6611919 -1.6528422 128.0 +-6.170342 -3.6005936 -1.6422989 128.0 +-6.1720705 -3.5510142 -1.6367981 128.0 +-6.2149091 -3.5250831 -1.6425282 128.0 +-6.2610593 -3.5006599 -1.6491749 128.0 +-6.262814 -3.4513702 -1.6439034 128.0 +-6.3052568 -3.4244926 -1.6496333 128.0 +-6.3407393 -3.393549 -1.6535298 128.0 +-6.3726349 -3.360482 -1.6565094 128.0 +-6.4302759 -3.3406148 -1.666365 128.0 +-6.4185925 -3.2846878 -1.6578846 128.0 +-6.4351492 -3.2434895 -1.6569678 128.0 +-6.4313898 -3.1922572 -1.6507794 128.0 +-6.4561028 -3.1552997 -1.6521546 128.0 +-6.4630623 -3.1097171 -1.6489457 128.0 +-6.4925776 -3.0750024 -1.6516961 128.0 +-6.517499 -3.0379858 -1.6533005 128.0 +-6.5298238 -2.9950969 -1.6516961 128.0 +-6.5436425 -2.9529722 -1.6505501 128.0 +-6.5660868 -2.9147403 -1.6516961 128.0 +-6.5651145 -2.8662169 -1.6468829 128.0 +-6.4582534 -2.7725 -1.6150241 128.0 +-6.6921592 -2.8244262 -1.6704906 128.0 +-6.7336388 -2.7933824 -1.676679 128.0 +-6.7776918 -2.7630382 -1.683555 128.0 +-6.8098788 -2.7275524 -1.6874514 128.0 +-6.8346386 -2.6889241 -1.6895142 128.0 +-6.8891425 -2.6616726 -1.6991407 128.0 +-6.9608598 -2.640413 -1.7131219 128.0 +-6.9696326 -2.5949349 -1.7112882 128.0 +-7.0037088 -2.5588028 -1.7158723 128.0 +-7.0431008 -2.5243206 -1.7218314 128.0 +-7.0850873 -2.4904196 -1.7284783 128.0 +-7.1039157 -2.4481683 -1.729395 128.0 +-7.1603017 -2.4185526 -1.7397091 128.0 +-7.163918 -2.3709018 -1.7369587 128.0 +-7.203331 -2.3350055 -1.7431471 128.0 +-7.2564883 -2.3031323 -1.7527735 128.0 +-7.2844267 -2.2628963 -1.7562115 128.0 +-7.3289075 -2.2274997 -1.7637751 128.0 +-7.3321738 -2.1794372 -1.761254 128.0 +-7.3080206 -2.1235406 -1.7520859 128.0 +-7.2647314 -2.0627046 -1.7383339 128.0 +-7.3447847 -2.0368221 -1.7548363 128.0 +-7.4022427 -2.0039284 -1.7658379 128.0 +-7.5273294 -1.9883076 -1.793342 128.0 +-7.6430736 -1.9687976 -1.818554 128.0 +-7.7579136 -1.9477038 -1.8435369 128.0 +-7.9644923 -1.9477073 -1.8907522 128.0 +-8.127799 -1.9348758 -1.9274242 128.0 +-8.2248621 -1.9047368 -1.9480523 128.0 +-8.2496891 -1.8572277 -1.951261 128.0 +-8.2866039 -1.8121895 -1.9574494 128.0 +-8.3023281 -1.7623205 -1.9585955 128.0 +-8.3244257 -1.713701 -1.9613459 128.0 +-8.3596029 -1.6675429 -1.9673051 128.0 +-8.375411 -1.6173255 -1.9686803 128.0 +-8.3220263 -1.5541084 -1.9535531 128.0 +-8.3017111 -1.4976575 -1.9464478 128.0 +-8.3203335 -1.4483608 -1.9487399 128.0 +-8.3549824 -1.4016303 -1.9549283 128.0 +-8.3663082 -1.3508043 -1.9556159 128.0 +-8.3802109 -1.3003399 -1.9569911 128.0 +-8.3851433 -1.2484653 -1.9563035 128.0 +-8.3830099 -1.1956167 -1.9540114 128.0 +-8.3892231 -1.1440254 -1.9537822 128.0 +-8.3960848 -1.0925286 -1.9537822 128.0 +-8.3968344 -1.0402722 -1.952407 128.0 +-8.3982258 -0.98816174 -1.951261 128.0 +-8.4031639 -0.93650472 -1.9510318 128.0 +-8.4223042 -0.88635314 -1.9542407 128.0 +-8.4624557 -0.83811337 -1.9624919 128.0 +-8.4247932 -0.78221148 -1.952407 128.0 +-8.4313736 -0.73067141 -1.9528655 128.0 +-8.4492817 -0.68001753 -1.9560742 128.0 +-8.4329109 -0.62664521 -1.951261 128.0 +-8.4657307 -0.57687664 -1.958137 128.0 +-8.4555101 -0.52407742 -1.9549283 128.0 +-8.4556503 -0.47202259 -1.9542407 128.0 +-8.4476938 -0.41959915 -1.9517194 128.0 +-8.4491367 -0.36771479 -1.9514903 128.0 +-8.4376163 -0.31535533 -1.9482814 128.0 +-8.4559317 -0.2640945 -1.9521779 128.0 +-8.0873137 0.59273446 -1.9741917 128.0 +-8.0806217 0.64211506 -1.9734684 128.0 +-8.0707283 0.69118702 -1.9720221 128.0 +-8.0344429 0.73776197 -1.9640665 128.0 +-8.0432863 0.78837383 -1.9674416 128.0 +-8.0189924 0.835697 -1.9626201 128.0 +-7.9760938 0.88072526 -1.9532182 128.0 +-7.9821067 0.93099993 -1.9561111 128.0 +-7.9675746 0.97889334 -1.9539413 128.0 +-7.9489059 1.0261459 -1.9508075 128.0 +-7.9414983 1.0747699 -1.9505663 128.0 +-7.9193797 1.1212987 -1.9467092 128.0 +-7.8989096 1.1678807 -1.9433341 128.0 +-7.9155741 1.2200249 -1.949361 128.0 +-7.9002733 1.2673402 -1.9474324 128.0 +-7.9114938 1.3189862 -1.9522538 128.0 +-7.8745632 1.3625371 -1.9450216 128.0 +-7.866055 1.4108289 -1.9450216 128.0 +-7.8582044 1.4592448 -1.9452627 128.0 +-7.8443375 1.5065186 -1.9440573 128.0 +-7.8511286 1.5578356 -1.9481556 128.0 +-7.8414221 1.6059799 -1.9481556 128.0 +-7.7991362 1.6472402 -1.939959 128.0 +-7.778451 1.6927921 -1.9373072 128.0 +-7.7641296 1.7396386 -1.936343 128.0 +-7.7372332 1.7835374 -1.9322447 128.0 +-7.7431417 1.8350093 -1.936584 128.0 +-7.726079 1.8811074 -1.9351375 128.0 +-7.7285137 1.932011 -1.9387537 128.0 +-7.7108731 1.9779482 -1.9373072 128.0 +-7.675128 2.019048 -1.9312804 128.0 +-7.7197523 2.0815241 -1.9459859 128.0 +-7.7030931 2.1278183 -1.9450216 128.0 +-7.6656127 2.1681724 -1.9387537 128.0 +-7.6456394 2.2132769 -1.9370662 128.0 +-7.6412201 2.2629051 -1.9394768 128.0 +-7.6206899 2.3077784 -1.9377893 128.0 +-7.6036048 2.3536332 -1.9370662 128.0 +-7.5621867 2.3917527 -1.9300749 128.0 +-7.5492158 2.4387052 -1.9305571 128.0 +-7.5295019 2.4834597 -1.9293517 128.0 +-7.5196404 2.531472 -1.9307982 128.0 +-7.5177336 2.5822952 -1.9344143 128.0 +-7.4989996 2.6274114 -1.9336911 128.0 +-7.490962 2.6763148 -1.9358608 128.0 +-7.4743991 2.7222281 -1.9358608 128.0 +-7.4520965 2.7660117 -1.9344143 128.0 +-7.4540462 2.8188968 -1.9394768 128.0 +-7.411253 2.8548093 -1.9327267 128.0 +-7.388176 2.898103 -1.9312804 128.0 +-7.3594398 2.9390604 -1.9283874 128.0 +-7.3385706 2.9830651 -1.9276642 128.0 +-7.319232 3.0276666 -1.9274231 128.0 +-7.2915721 3.0687535 -1.9250124 128.0 +-7.2913399 3.1214597 -1.9300749 128.0 +-7.3076406 3.1816416 -1.939718 128.0 +-7.2480488 3.2087355 -1.9288696 128.0 +-7.2326488 3.2551405 -1.9300749 128.0 +-7.2169518 3.3014772 -1.9312804 128.0 +-7.1895185 3.3424234 -1.9293517 128.0 +-7.1583452 3.3814986 -1.9264588 128.0 +-7.1383367 3.4257777 -1.9266999 128.0 +-7.1136928 3.4678116 -1.9257356 128.0 +-7.0801053 3.5053649 -1.9223605 128.0 +-7.0706019 3.5548465 -1.9257356 128.0 +-7.0512495 3.599488 -1.9264588 128.0 +-6.9859505 3.6203523 -1.9144051 128.0 +-6.9773464 3.6703804 -1.9182622 128.0 +-6.911891 3.6902628 -1.9062085 128.0 +-6.9514046 3.7663634 -1.923807 128.0 +-6.9961944 3.8463602 -1.9430931 128.0 +-6.9538169 3.8788121 -1.9377893 128.0 +-6.9155283 3.9132793 -1.9336911 128.0 +-6.8821287 3.9503226 -1.9310392 128.0 +-6.8493738 3.9875922 -1.9286286 128.0 +-6.8114071 4.0216475 -1.9247713 128.0 +-6.7766113 4.0573816 -1.9218785 128.0 +-6.7441225 4.0943518 -1.9197087 128.0 +-6.7073035 4.1285319 -1.9163337 128.0 +-6.6703191 4.162415 -1.9129586 128.0 +-6.6413732 4.201189 -1.9119943 128.0 +-6.6122026 4.2397647 -1.9110301 128.0 +-6.5925727 4.2844882 -1.9129586 128.0 +-6.5629177 4.3227234 -1.9119943 128.0 +-6.5403061 4.3656058 -1.9131997 128.0 +-6.518219 4.4089174 -1.9146461 128.0 +-6.4926443 4.4499269 -1.9151284 128.0 +-6.4492769 4.4786077 -1.9103068 128.0 +-6.4296117 4.5236807 -1.9127176 128.0 +-6.4072652 4.5669909 -1.9144051 128.0 +-6.3980041 4.6198578 -1.9201909 128.0 +-6.3648372 4.6555896 -1.9187444 128.0 +-6.3166585 4.680109 -1.9127176 128.0 +-6.2854943 4.7170315 -1.9119943 128.0 +-6.2363467 4.7402372 -1.9057264 128.0 +-6.2202158 4.7884798 -1.9098246 128.0 +-6.1539831 4.7979078 -1.8982531 128.0 +-6.1244278 4.8355775 -1.8982531 128.0 +-6.1090422 4.884583 -1.9028335 128.0 +-6.082727 4.9250293 -1.9040389 128.0 +-6.0546441 4.9641061 -1.904762 128.0 +-6.0285506 5.0048833 -1.9062085 128.0 +-5.9999561 5.0436535 -1.9069318 128.0 +-5.9666791 5.078486 -1.9062085 128.0 +-5.9155583 5.0978923 -1.8996994 128.0 +-5.8731995 5.1245208 -1.8960834 128.0 +-5.8205552 5.1418252 -1.8890922 128.0 +-5.7823863 5.1716189 -1.8869225 128.0 +-5.7411938 5.1985316 -1.8837886 128.0 +-5.7027507 5.2277579 -1.8816189 128.0 +-5.6819463 5.2732158 -1.8854761 128.0 +-5.7060595 5.3611517 -1.904762 128.0 +-5.6843061 5.4067664 -1.9086193 128.0 +-5.6636057 5.4536619 -1.9129586 128.0 +-5.603632 5.4625635 -1.9037977 128.0 +-5.5644836 5.4913893 -1.9018692 128.0 +-5.5739322 5.5686488 -1.9170569 128.0 +-5.5246491 5.5875597 -1.9117533 128.0 +-5.4950066 5.626214 -1.9134408 128.0 +-5.451623 5.650744 -1.9103068 128.0 +-5.4208646 5.6883039 -1.9117533 128.0 +-5.3845291 5.7200451 -1.9112711 128.0 +-5.3433838 5.7465787 -1.9091015 128.0 +-5.3145866 5.7864056 -1.9115121 128.0 +-5.2959332 5.8375974 -1.9177802 128.0 +-5.2794418 5.8916688 -1.9250124 128.0 +-5.227757 5.9065084 -1.9192266 128.0 +-5.2035513 5.9523582 -1.923807 128.0 +-5.1770768 5.9959297 -1.9276642 128.0 +-5.1200409 6.0039492 -1.9199498 128.0 +-5.08248 6.0345097 -1.9197087 128.0 +-5.0484595 6.0693126 -1.9209141 128.0 +-5.0185151 6.1091752 -1.923807 128.0 +-4.9833808 6.1428685 -1.9247713 128.0 +-4.9644022 6.1968131 -1.9322447 128.0 +-4.9118371 6.2088881 -1.9264588 128.0 +-4.8861918 6.2549725 -1.9315214 128.0 +-4.8566093 6.2963643 -1.9351375 128.0 +-4.8008351 6.3036523 -1.9281464 128.0 +-4.7620664 6.3329911 -1.9281464 128.0 +-4.7433615 6.3893676 -1.936584 128.0 +-4.7086563 6.4246154 -1.9385126 128.0 +-4.6782475 6.4659677 -1.9423698 128.0 +-4.6266422 6.4779649 -1.9373072 128.0 +-4.5795393 6.4959183 -1.9341732 128.0 +-4.5384865 6.5223022 -1.9336911 128.0 +-4.5000286 6.5524273 -1.9344143 128.0 +-4.4749818 6.6024122 -1.9411644 128.0 +-4.4354649 6.6313596 -1.9416466 128.0 +-4.3946919 6.6584501 -1.9416466 128.0 +-4.3569312 6.6901703 -1.9430931 128.0 +-4.3299603 6.7388248 -1.949602 128.0 +-4.2677507 6.7324758 -1.939959 128.0 +-4.234592 6.7717023 -1.9438162 128.0 +-4.2087531 6.8231664 -1.9512895 128.0 +-4.1718507 6.8571539 -1.9537003 128.0 +-4.1217098 6.8693066 -1.9498432 128.0 +-4.0908475 6.9136801 -1.9553878 128.0 +-4.0434594 6.9302673 -1.9529771 128.0 +-3.9897323 6.9355969 -1.9474324 128.0 +-3.9466224 6.9591026 -1.9471912 128.0 +-3.9014807 6.9789519 -1.9459859 128.0 +-3.869823 7.0231614 -1.9517717 128.0 +-3.8312869 7.0553031 -1.9541825 128.0 +-3.7696133 7.0444484 -1.9445394 128.0 +-3.7493966 7.1112318 -1.9568343 128.0 +-3.7271597 7.175447 -1.9684058 128.0 +-3.6649423 7.1627555 -1.9585218 128.0 +-3.6060779 7.1556392 -1.9503253 128.0 +-3.5621037 7.1776309 -1.9503253 128.0 +-3.524385 7.2124329 -1.9539413 128.0 +-3.4994121 7.2741556 -1.9650308 128.0 +-3.4422557 7.2691746 -1.9577986 128.0 +-3.4020963 7.2998362 -1.9604504 128.0 +-3.363308 7.333807 -1.9640665 128.0 +-3.3158512 7.3489976 -1.9626201 128.0 +-3.2714832 7.3709793 -1.9631022 128.0 +-3.2157147 7.3668971 -1.9565933 128.0 +-3.1876717 7.4266243 -1.9674416 128.0 +-3.1477005 7.4594564 -1.9710578 128.0 +-3.097039 7.4669757 -1.9679238 128.0 +-3.0526288 7.4894333 -1.968888 128.0 +-3.0026498 7.4981117 -1.9662362 128.0 +-2.9501934 7.5001369 -1.9618969 128.0 +-2.9177516 7.5534067 -1.9712988 128.0 +-2.8655014 7.5557404 -1.9672005 128.0 +-2.8238244 7.5859146 -1.9705756 128.0 +-2.7732308 7.5921588 -1.9676827 128.0 +-2.7285576 7.6145139 -1.9691291 128.0 +-2.684679 7.6393538 -1.9712988 128.0 +-2.6387024 7.6584358 -1.9720221 128.0 +-2.5975587 7.6919537 -1.9766024 128.0 +-2.5436087 7.6874757 -1.9712988 128.0 +-2.502373 7.7214036 -1.9761204 128.0 +-2.447613 7.7134852 -1.9700934 128.0 +-2.3996625 7.7265048 -1.9696113 128.0 +-2.3609512 7.7698708 -1.9770846 128.0 +-2.3124027 7.7814198 -1.9763614 128.0 +-2.2678607 7.8066463 -1.9792542 128.0 +-2.2246852 7.8372207 -1.9835936 128.0 +-2.1718903 7.8338885 -1.9792542 128.0 +-2.1235282 7.8461308 -1.9790132 128.0 +-2.0743546 7.8552594 -1.9780489 128.0 +-2.0309546 7.8866367 -1.9828705 128.0 +-1.9752051 7.8697686 -1.9753971 128.0 +-1.9284922 7.8883395 -1.9770846 128.0 +-1.8784821 7.8934145 -1.9753971 128.0 +-1.8343887 7.9237027 -1.9802185 128.0 +-1.7842447 7.9281812 -1.978531 128.0 +-1.7374289 7.9475131 -1.9807007 128.0 +-1.6874233 7.9523277 -1.9792542 128.0 +-1.638597 7.962532 -1.9792542 128.0 +-1.5868642 7.9581594 -1.9756382 128.0 +-1.5376364 7.9658408 -1.9751559 128.0 +-1.4970938 8.0199661 -1.9864866 128.0 +-1.444242 8.0089436 -1.981424 128.0 +-1.3977326 8.0329533 -1.9852811 128.0 +-1.3549919 8.0806217 -1.9951652 128.0 +-1.2951884 8.025547 -1.9792542 128.0 +-1.2506756 8.0640326 -1.9869686 128.0 +-1.2070235 8.1109133 -1.9968528 128.0 +-1.1514865 8.0778131 -1.9867276 128.0 +-1.1045189 8.1039591 -1.9915491 128.0 +-1.0555233 8.1163578 -1.9929955 128.0 +-1.0035583 8.1053448 -1.9886562 128.0 +-0.9534663 8.1084585 -1.9879329 128.0 +-0.90294474 8.1074038 -1.9862455 128.0 +-0.85145843 8.0963831 -1.9821472 128.0 +-0.80567706 8.1410532 -1.9920312 128.0 +-0.75356102 8.1226511 -1.9862455 128.0 +-0.70303851 8.1193867 -1.9843168 128.0 +-0.65289503 8.1196775 -1.9833525 128.0 +-0.60420877 8.1390162 -1.9872098 128.0 +-0.55504656 8.1541901 -1.9901026 128.0 +-0.50500298 8.1574421 -1.9901026 128.0 +-0.45445535 8.1516657 -1.9879329 128.0 +-0.40371007 8.139761 -1.9843168 128.0 +-0.3549335 8.1692343 -1.9910669 128.0 +-0.30361205 8.1392536 -1.9831115 128.0 +-0.25282237 8.113802 -1.9763614 128.0 +-0.20440796 8.1705027 -1.9901026 128.0 +-0.15399814 8.1570473 -1.9864866 128.0 +-0.10401789 8.163662 -1.9879329 128.0 +-0.053962283 8.1699696 -1.9893794 128.0 +-0.0038246077 8.149766 -1.9843168 128.0 +0.046034917 8.124403 -1.9780489 128.0 +0.096232213 8.1530809 -1.9852811 128.0 +0.14625676 8.1523371 -1.9852811 128.0 +0.19674581 8.1706905 -1.9901026 128.0 +0.2461991 8.1470184 -1.984558 128.0 +0.29703334 8.1686306 -1.9903437 128.0 +0.34719089 8.1676235 -1.9905849 128.0 +0.39791489 8.1779413 -1.9937187 128.0 +0.44542378 8.126894 -1.981665 128.0 +0.49255809 8.0794477 -1.9705756 128.0 +0.54596651 8.1334038 -1.984799 128.0 +0.59458244 8.1124783 -1.9804597 128.0 +0.64380938 8.1019058 -1.9787722 128.0 +0.69268012 8.0881329 -1.9763614 128.0 +0.74113947 8.071167 -1.9732274 128.0 +0.79282993 8.0886822 -1.9787722 128.0 +0.84113663 8.0711174 -1.9756382 128.0 +0.89256406 8.0831671 -1.9799775 128.0 +0.94349551 8.0891056 -1.9828705 128.0 +0.98813522 8.0427084 -1.9727453 128.0 +1.0360974 8.0259056 -1.9700934 128.0 +1.0833695 8.0049715 -1.9664773 128.0 +1.1353267 8.0183525 -1.9715399 128.0 +1.1911832 8.0563574 -1.9828705 128.0 +1.2423694 8.0604067 -1.9857633 128.0 +1.2918037 8.0526323 -1.9857633 128.0 +1.3365571 8.0167933 -1.9787722 128.0 +1.383238 7.9940977 -1.9751559 128.0 +1.4272902 7.9577579 -1.9681648 128.0 +1.4872628 8.0089626 -1.9833525 128.0 +1.5372928 8.0044518 -1.984558 128.0 +1.584488 7.9853492 -1.9821472 128.0 +1.6348195 7.982132 -1.9838347 128.0 +1.6735308 7.9235244 -1.9715399 128.0 +1.7231498 7.9178481 -1.9727453 128.0 +1.7770085 7.9308009 -1.9787722 128.0 +1.8129857 7.8648992 -1.9647897 128.0 +1.863673 7.8640141 -1.9674416 128.0 +1.9203904 7.8873191 -1.9763614 128.0 +1.9609782 7.8443179 -1.9684058 128.0 +2.0119684 7.8434181 -1.9712988 128.0 +2.0489399 7.788691 -1.9604504 128.0 +2.1068037 7.8134527 -1.9700934 128.0 +2.1580675 7.8125391 -1.9732274 128.0 +2.1998854 7.7776723 -1.9676827 128.0 +2.2470269 7.7621632 -1.9672005 128.0 +2.2904766 7.734272 -1.9635844 128.0 +2.3511169 7.7637262 -1.9749149 128.0 +2.3832059 7.6990924 -1.9618969 128.0 +2.4374287 7.7065315 -1.9676827 128.0 +2.4676566 7.6387925 -1.9539413 128.0 +2.519043 7.637332 -1.9575576 128.0 +2.5807266 7.6658788 -1.9691291 128.0 +2.6198297 7.6269541 -1.9631022 128.0 +2.6659362 7.6089039 -1.9626201 128.0 +2.7145333 7.5978861 -1.9640665 128.0 +2.7534602 7.5601139 -1.9585218 128.0 +2.7923636 7.5230613 -1.9532182 128.0 +2.8446534 7.5221248 -1.9575576 128.0 +2.8931975 7.5108681 -1.9592451 128.0 +2.9342654 7.4803262 -1.95587 128.0 +2.9743476 7.4477611 -1.9520128 128.0 +3.0240116 7.43926 -1.9546646 128.0 +3.0629213 7.4044232 -1.9503253 128.0 +3.116205 7.404274 -1.9553878 128.0 +3.1432381 7.3421917 -1.9438162 128.0 +3.1944306 7.3370032 -1.9476734 128.0 +3.2401755 7.3190389 -1.9481556 128.0 +3.2937889 7.3184886 -1.9534593 128.0 +3.3394399 7.2999058 -1.9539413 128.0 +3.368207 7.2449579 -1.9445394 128.0 +3.4080367 7.2145028 -1.9418876 128.0 +3.4556003 7.2004547 -1.9438162 128.0 +3.5201352 7.2209868 -1.9553878 128.0 +3.5484388 7.1670737 -1.9464681 128.0 +3.5914762 7.1434317 -1.9459859 128.0 +3.636564 7.1238537 -1.9467092 128.0 +3.6685932 7.0790038 -1.9404413 128.0 +3.7151237 7.0623727 -1.9421287 128.0 +3.7597592 7.0420122 -1.9428519 128.0 +3.8047473 7.0222235 -1.9438162 128.0 +3.8463602 6.9961944 -1.9430931 128.0 +3.8764474 6.9495792 -1.936584 128.0 +3.9151917 6.9189067 -1.9346554 128.0 +3.9483898 6.8787622 -1.9300749 128.0 +3.9963837 6.8644695 -1.9329679 128.0 +4.0438571 6.8490109 -1.9356197 128.0 +4.1017628 6.8507123 -1.9433341 128.0 +4.1386833 6.8171206 -1.9409233 128.0 +4.1773815 6.7866392 -1.9394768 128.0 +4.2096944 6.7460604 -1.9351375 128.0 +4.2499704 6.7184629 -1.9346554 128.0 +4.2827306 6.6791887 -1.9307982 128.0 +4.3257484 6.6560392 -1.9317625 128.0 +4.3611679 6.6212678 -1.9293517 128.0 +4.3963242 6.5863123 -1.926941 128.0 +4.4317594 6.5519786 -1.9247713 128.0 +4.4866953 6.5462747 -1.9312804 128.0 +4.5090604 6.4931154 -1.923566 128.0 +4.5722761 6.4986596 -1.9336911 128.0 +4.5878377 6.4365034 -1.9233248 128.0 +4.6278133 6.4090185 -1.923566 128.0 +4.6796589 6.3977332 -1.9288696 128.0 +4.6939778 6.3353715 -1.9185034 128.0 +4.7613125 6.3444815 -1.9303161 128.0 +4.7713695 6.2772923 -1.9185034 128.0 +4.8003221 6.2355943 -1.9146461 128.0 +4.8367023 6.2037268 -1.9139229 128.0 +4.8668566 6.1640315 -1.910789 128.0 +4.9209538 6.1545167 -1.917298 128.0 +4.9512949 6.1151562 -1.9144051 128.0 +4.9757991 6.068902 -1.9093425 128.0 +5.0067434 6.0307903 -1.9069318 128.0 +5.0517731 6.0096126 -1.9100658 128.0 +5.1269302 6.0235791 -1.9247713 128.0 +5.1625261 5.9905372 -1.9242891 128.0 +5.1723833 5.9280381 -1.9141641 128.0 +5.1887379 5.8736444 -1.9066907 128.0 +5.2207975 5.8373566 -1.9052442 128.0 +5.2330623 5.7793174 -1.8965656 128.0 +5.2526827 5.7299318 -1.8907797 128.0 +5.3095317 5.721066 -1.8987352 128.0 +5.3345661 5.6777716 -1.8951191 128.0 +5.3672967 5.6428227 -1.8943958 128.0 +5.425384 5.6342483 -1.9028335 128.0 +5.438849 5.5793123 -1.8953601 128.0 +5.4770713 5.5499792 -1.8968066 128.0 +5.5096502 5.5148954 -1.8963245 128.0 +5.5378637 5.4755268 -1.8943958 128.0 +5.572051 5.442122 -1.894637 128.0 +5.5941615 5.3970504 -1.8907797 128.0 +5.6229558 5.3586073 -1.8893332 128.0 +5.6408877 5.3100371 -1.8842707 128.0 +5.6705203 5.2726822 -1.8833064 128.0 +5.6934724 5.2292562 -1.8801724 128.0 +5.7297649 5.1981354 -1.8816189 128.0 +5.7478175 5.1505766 -1.8770385 128.0 +5.7916689 5.1261444 -1.8811368 128.0 +5.8215518 5.0892339 -1.8806546 128.0 +5.8938107 5.0889301 -1.8941548 128.0 +5.9131079 5.0425963 -1.8902975 128.0 +5.9320593 4.9962177 -1.8864404 128.0 +5.9931984 4.9851665 -1.8963245 128.0 +6.0094237 4.9365969 -1.891744 128.0 +6.0245256 4.8874044 -1.8869225 128.0 +6.0581884 4.8533797 -1.8881279 128.0 +6.09166 4.8191261 -1.8893332 128.0 +6.0943437 4.7607512 -1.8808956 128.0 +6.1618681 4.7528987 -1.8929495 128.0 +6.1716108 4.7003031 -1.8869225 128.0 +6.1855955 4.6512666 -1.8823421 128.0 +6.2522058 4.6415658 -1.8941548 128.0 +6.2876143 4.6082778 -1.8963245 128.0 +6.2890353 4.5502725 -1.8881279 128.0 +6.3405318 4.5285163 -1.8953601 128.0 +6.3681989 4.4895263 -1.8953601 128.0 +6.402 4.4548011 -1.8972888 128.0 +6.4420152 4.4242239 -1.9011459 128.0 +6.4561853 4.3759031 -1.8972888 128.0 +6.4821072 4.3356671 -1.8970476 128.0 +6.5191188 4.3027601 -1.9001817 128.0 +6.5616641 4.2732687 -1.9050032 128.0 +6.5518322 4.2098484 -1.8943958 128.0 +6.5726213 4.166451 -1.8929495 128.0 +6.6038227 4.1296449 -1.894637 128.0 +6.6257334 4.0870094 -1.8936726 128.0 +6.6490278 4.045269 -1.8931905 128.0 +6.6795497 4.0078897 -1.894878 128.0 +6.7157102 3.9737465 -1.8982531 128.0 +6.7592478 3.943711 -1.9037977 128.0 +6.7690163 3.8939381 -1.8996994 128.0 +6.7514129 3.8288777 -1.8878869 128.0 +6.7612243 3.7798045 -1.8840296 128.0 +6.7766385 3.7340331 -1.8818599 128.0 +6.8326869 3.7104397 -1.8912619 128.0 +6.8835654 3.6835518 -1.8992174 128.0 +6.8965936 3.6362681 -1.8965656 128.0 +6.9110236 3.5898578 -1.8943958 128.0 +6.9588418 3.5606434 -1.9016281 128.0 +6.9987597 3.5270469 -1.9066907 128.0 +7.0289636 3.4883502 -1.9091015 128.0 +7.0170984 3.4289689 -1.8999406 128.0 +7.0327582 3.3833246 -1.8984941 128.0 +7.051631 3.3392782 -1.8980119 128.0 +7.091342 3.3049638 -1.9033157 128.0 +7.1026649 3.2573457 -1.9009049 128.0 +7.1127863 3.2093141 -1.8982531 128.0 +7.1376672 3.1679718 -1.8996994 128.0 +7.1889935 3.1380889 -1.9083782 128.0 +7.2428966 3.1088428 -1.9177802 128.0 +7.2484226 3.0586851 -1.9141641 128.0 +7.2258143 2.9970543 -1.9030745 128.0 +7.2611446 2.9596186 -1.907655 128.0 +7.3052969 2.9254684 -1.9146461 128.0 +7.3240132 2.880944 -1.9148872 128.0 +7.330688 2.8317556 -1.9119943 128.0 +7.3560925 2.789818 -1.9141641 128.0 +7.3921733 2.7517366 -1.9192266 128.0 +7.4061837 2.7053289 -1.9185034 128.0 +7.397975 2.6509986 -1.9119943 128.0 +7.4250898 2.6094153 -1.9148872 128.0 +7.4281144 2.5593824 -1.9115121 128.0 +7.4455175 2.5143769 -1.9119943 128.0 +7.4838409 2.476263 -1.9180212 128.0 +7.4988942 2.4302964 -1.9180212 128.0 +7.4840622 2.3748496 -1.9103068 128.0 +7.5216651 2.3360765 -1.9163337 128.0 +7.5302854 2.2881882 -1.9148872 128.0 +7.5274377 2.2369664 -1.9105479 128.0 +7.5410218 2.1907368 -1.9105479 128.0 +7.5879335 2.1539607 -1.9192266 128.0 +7.5757551 2.1003642 -1.9127176 128.0 +7.6081738 2.0591624 -1.9177802 128.0 +7.6281724 2.0144219 -1.9197087 128.0 +7.6187716 1.9620149 -1.9141641 128.0 +7.6278429 1.9145217 -1.9134408 128.0 +7.6573596 1.8720586 -1.9180212 128.0 +7.6696463 1.8252633 -1.9182622 128.0 +7.7015033 1.7829814 -1.923566 128.0 +7.6782112 1.7280262 -1.9148872 128.0 +7.6905661 1.6812953 -1.9153694 128.0 +7.7320676 1.6407186 -1.9233248 128.0 +7.7629027 1.5975453 -1.9286286 128.0 +7.718307 1.539073 -1.9148872 128.0 +7.7685814 1.499589 -1.9252535 128.0 +7.7671423 1.449936 -1.9226016 128.0 +7.7892642 1.4046599 -1.9259766 128.0 +7.7872186 1.3550109 -1.9233248 128.0 +7.8193154 1.3112129 -1.9293517 128.0 +7.7936792 1.2578027 -1.9209141 128.0 +7.8089228 1.2111468 -1.9228427 128.0 +7.8315663 1.1654929 -1.9266999 128.0 +7.8491392 1.1189224 -1.9293517 128.0 +7.8414326 1.068776 -1.9257356 128.0 +7.8391809 1.0195166 -1.923566 128.0 +7.8520312 0.97223085 -1.9252535 128.0 +7.8636322 0.9247126 -1.9266999 128.0 +7.8527608 0.87462097 -1.9226016 128.0 +7.881144 0.82885373 -1.9283874 128.0 +7.8870473 0.78057575 -1.9286286 128.0 +7.88589 0.73162997 -1.9271821 128.0 +7.886363 0.68289495 -1.9262178 128.0 +7.9087853 0.63596761 -1.9307982 128.0 +7.8951173 0.58613741 -1.9264588 128.0 +7.8898506 0.5370909 -1.9242891 128.0 +7.8813739 0.48795164 -1.9213963 128.0 +7.927825 0.44200805 -1.9322447 128.0 +7.91294 0.39249262 -1.9279053 128.0 +7.9248953 0.34435225 -1.9303161 128.0 +7.9161911 0.2953231 -1.9276642 128.0 +7.9197941 0.24680488 -1.9281464 128.0 +7.9328017 0.1984949 -1.9310392 128.0 +7.918345 0.14952551 -1.9271821 128.0 +7.913291 0.10086328 -1.9257356 128.0 +7.9157019 0.052318886 -1.9262178 128.0 +7.8935523 0.0037407619 -1.920673 128.0 +7.9312754 -0.044913091 -1.9300749 128.0 +7.913383 -0.093368977 -1.9257356 128.0 +7.9340086 -0.14230885 -1.9310392 128.0 +7.9145517 -0.19054183 -1.9264588 128.0 +7.9287548 -0.23957226 -1.9303161 128.0 +7.9465327 -0.28892577 -1.9351375 128.0 +7.94558 -0.33772069 -1.9353787 128.0 +7.9443274 -0.38651478 -1.9356197 128.0 +7.9253325 -0.43434775 -1.9315214 128.0 +7.9186435 -0.4827317 -1.9305571 128.0 +7.9116592 -0.53104997 -1.9295928 128.0 +7.9179306 -0.58029574 -1.9320036 128.0 +7.9287329 -0.6300236 -1.9356197 128.0 +7.9343872 -0.67949104 -1.9380305 128.0 +7.9223371 -0.72745162 -1.9361018 128.0 +7.9109635 -0.77538484 -1.9344143 128.0 +7.9060569 -0.82391101 -1.9344143 128.0 +7.9240036 -0.87496585 -1.9402001 128.0 +7.9011345 -0.9215439 -1.9358608 128.0 +7.8779931 -0.96787423 -1.9315214 128.0 +7.8699808 -1.0159457 -1.9310392 128.0 +7.8828335 -1.0668218 -1.9358608 128.0 +7.8819046 -1.1159871 -1.9373072 128.0 +7.8998699 -1.1680228 -1.9435751 128.0 +7.8704934 -1.21307 -1.9380305 128.0 +7.8705678 -1.2625705 -1.939959 128.0 +7.8387413 -1.3068463 -1.9339322 128.0 +7.841094 -1.356741 -1.936584 128.0 +7.8383527 -1.4058563 -1.9380305 128.0 +7.8209915 -1.452329 -1.9358608 128.0 +7.7919188 -1.4964436 -1.9307982 128.0 +7.7778306 -1.5432806 -1.9295928 128.0 +7.7596579 -1.5892217 -1.9274231 128.0 +7.7981868 -1.6470394 -1.939718 128.0 +7.778451 -1.6927921 -1.9373072 128.0 +7.7821226 -1.7436728 -1.9409233 128.0 +7.7504725 -1.7865912 -1.9356197 128.0 +7.7185893 -1.829187 -1.9303161 128.0 +7.6893048 -1.8721483 -1.9257356 128.0 +7.6635499 -1.9157611 -1.9221195 128.0 +7.6394305 -1.9596111 -1.9189855 128.0 +7.4846048 -1.9688985 -1.8823421 128.0 +7.3074703 -1.9702941 -1.8399129 128.0 +7.1698952 -1.9804504 -1.8076088 128.0 +7.0212688 -1.9858226 -1.7724118 128.0 +6.96141 -2.0150969 -1.7601171 128.0 +6.8549323 -2.0299261 -1.7357684 128.0 +6.7764025 -2.0519683 -1.7186521 128.0 +6.6793213 -2.0673816 -1.6967143 128.0 +6.6276484 -2.0960288 -1.6865891 128.0 +6.4706011 -2.0900948 -1.6489815 128.0 +6.2963705 -2.0765357 -1.6067933 128.0 +6.281671 -2.114511 -1.6063112 128.0 +6.2153449 -2.1347206 -1.5923288 128.0 +5.8879867 -2.0627 -1.5096401 128.0 +5.7034097 -2.0373781 -1.4643179 128.0 +5.6670928 -2.0636966 -1.45805 128.0 +5.6534138 -2.0980926 -1.457809 128.0 +5.4398289 -2.0568457 -1.4045314 128.0 +5.347414 -2.0594745 -1.3833168 128.0 +5.2443333 -2.0567935 -1.3592092 128.0 +5.131577 -2.0489655 -1.3324499 128.0 +5.0254107 -2.0423918 -1.3073781 128.0 +4.9311795 -2.0394185 -1.2854402 128.0 +4.8801117 -2.0534434 -1.275074 128.0 +4.7969418 -2.0531642 -1.2560291 128.0 +4.8296318 -2.102324 -1.2683239 128.0 +4.7421017 -2.0989065 -1.2480736 128.0 +4.4919677 -2.021183 -1.1834655 128.0 +4.3700533 -1.9986287 -1.1535722 128.0 +4.3277879 -2.0114901 -1.1453756 128.0 +4.2767558 -2.0197623 -1.1347684 128.0 +4.2135382 -2.0216038 -1.120786 128.0 +4.1399927 -2.017642 -1.1039107 128.0 +4.0753541 -2.0171621 -1.0894462 128.0 +4.0394907 -2.0303564 -1.0829372 128.0 +4.0330067 -2.0581937 -1.0846248 128.0 +4.0297794 -2.0878143 -1.0872766 128.0 +3.9765272 -2.0912595 -1.075946 128.0 +3.8977041 -2.0804143 -1.0573833 128.0 +3.9915204 -2.1620982 -1.0875176 128.0 +3.8863373 -2.136039 -1.0614815 128.0 +3.88587 -2.1669383 -1.0650977 128.0 +3.8665888 -2.1873941 -1.0634102 128.0 +3.853936 -2.2115612 -1.0636512 128.0 +3.8352616 -2.2322364 -1.0622047 128.0 +3.8148077 -2.2517788 -1.0602762 128.0 +3.7992539 -2.2741463 -1.0597939 128.0 +3.7910352 -2.3009415 -1.0614815 128.0 +3.7793248 -2.3256862 -1.0622047 128.0 +3.7542808 -2.3421512 -1.0590708 128.0 +3.7365587 -2.3630669 -1.0581064 128.0 +3.7219887 -2.3859496 -1.0581064 128.0 +3.7658634 -2.4468286 -1.0754639 128.0 +3.7645562 -2.4789667 -1.0795622 128.0 +3.7500818 -2.5025578 -1.0798032 128.0 +3.6639214 -2.4776609 -1.0585886 128.0 +3.6526518 -2.5028396 -1.0597939 128.0 +3.6188934 -2.51247 -1.0542493 128.0 +3.6938858 -2.5983043 -1.0817318 128.0 +3.6660202 -2.6124692 -1.0781157 128.0 +3.5728207 -2.5792246 -1.0544903 128.0 +3.50915 -2.5661407 -1.0397848 128.0 +3.5471382 -2.6274974 -1.0564189 128.0 +3.5907128 -2.6940765 -1.0749817 128.0 +3.5169454 -2.6725905 -1.0571421 128.0 +3.4689541 -2.6698425 -1.0472581 128.0 +3.4532721 -2.6916742 -1.0474992 128.0 +3.4397378 -2.7152185 -1.0484635 128.0 +3.4230127 -2.7362733 -1.0484635 128.0 +3.4544261 -2.7963176 -1.0638922 128.0 +3.4882314 -2.8593106 -1.0802854 128.0 +3.4579287 -2.8701196 -1.0761871 128.0 +3.4350533 -2.8869107 -1.0744996 128.0 +3.4202306 -2.9104502 -1.0754639 128.0 +3.3493822 -2.8857574 -1.0581064 128.0 +3.4756551 -3.0319734 -1.1055982 128.0 +3.2649913 -2.8835852 -1.0419544 128.0 +3.4526525 -3.0873384 -1.1104198 128.0 +3.1984291 -2.8954194 -1.0315882 128.0 +3.1770263 -2.9117105 -1.0303829 128.0 +3.1932411 -2.9628437 -1.0419544 128.0 +3.2124829 -3.0176075 -1.0547314 128.0 +3.1601577 -3.0051515 -1.0431598 128.0 +3.1584346 -3.0406437 -1.0489457 128.0 +3.1015017 -3.022701 -1.0356865 128.0 +3.0822058 -3.0409927 -1.0354455 128.0 +3.0710397 -3.0673938 -1.0380973 128.0 +3.0610301 -3.0951526 -1.0412313 128.0 +3.0948653 -3.1680396 -1.0600351 128.0 +3.0342708 -3.1443584 -1.0453295 128.0 +3.0336645 -3.1825919 -1.0520796 128.0 +3.0014422 -3.1877177 -1.0474992 128.0 +2.9930592 -3.2181582 -1.0515975 128.0 +2.9660363 -3.2285991 -1.0489457 128.0 +2.9083548 -3.2050424 -1.0349633 128.0 +2.8912246 -3.2257187 -1.0359275 128.0 +2.87395 -3.2463057 -1.0368918 128.0 +2.8399267 -3.247802 -1.0315882 128.0 +2.8174086 -3.2622275 -1.0306239 128.0 +2.7828574 -3.2624669 -1.0250791 128.0 +2.764662 -3.281708 -1.0258024 128.0 +2.8195567 -3.3889022 -1.0549725 128.0 +2.8313539 -3.4458892 -1.0677495 128.0 +2.7997646 -3.4503832 -1.0636512 128.0 +2.800988 -3.4955251 -1.0725709 128.0 +2.7560084 -3.4829583 -1.063169 128.0 +2.7321961 -3.4967437 -1.0622047 128.0 +2.699429 -3.4988399 -1.0576243 128.0 +2.7037776 -3.5493131 -1.0682316 128.0 +2.6370454 -3.5061023 -1.0496688 128.0 +2.6467156 -3.5643005 -1.0626869 128.0 +2.5909536 -3.5342846 -1.0484635 128.0 +2.5692189 -3.5501158 -1.0484635 128.0 +2.5141149 -3.5192127 -1.03424 128.0 +2.4678743 -3.4996681 -1.0236328 128.0 +2.4663057 -3.543426 -1.0323114 128.0 +2.4285872 -3.5352898 -1.0253203 128.0 +2.4073939 -3.5509281 -1.0255613 128.0 +2.3828633 -3.561599 -1.024356 128.0 +2.3582923 -3.5721025 -1.0231506 128.0 +2.3405659 -3.5930121 -1.0250791 128.0 +2.320049 -3.6097558 -1.0258024 128.0 +2.2921422 -3.6149058 -1.0231506 128.0 +2.259115 -3.6116204 -1.018088 128.0 +2.2292709 -3.613023 -1.0144719 128.0 +2.2211807 -3.6498508 -1.021222 128.0 +2.2142193 -3.6892114 -1.0286953 128.0 +2.2019172 -3.7202697 -1.0337579 128.0 +2.2206104 -3.8049686 -1.0542493 128.0 +2.1870615 -3.8008547 -1.0491867 128.0 +2.1823657 -3.8471291 -1.0585886 128.0 +2.1639271 -3.8697665 -1.0612404 128.0 +2.14061 -3.8838212 -1.0614815 128.0 +2.0898843 -3.8474126 -1.0474992 128.0 +2.0488422 -3.8276446 -1.0383383 128.0 +2.0497534 -3.8865058 -1.0513563 128.0 +2.0339179 -3.9145133 -1.0556958 128.0 +1.9930668 -3.8940859 -1.0465349 128.0 +1.9442474 -3.8568377 -1.0327936 128.0 +1.9114882 -3.8504374 -1.0277311 128.0 +1.9001794 -3.8873825 -1.0347222 128.0 +1.8737675 -3.8937209 -1.0332757 128.0 +1.8369685 -3.8779519 -1.0258024 128.0 +1.8045326 -3.870676 -1.0207398 128.0 +1.7872196 -3.8957913 -1.024597 128.0 +1.7908139 -3.9677274 -1.0412313 128.0 +1.769977 -3.986625 -1.0434009 128.0 +1.7384958 -3.9813991 -1.0390615 128.0 +1.711355 -3.9857481 -1.037374 128.0 +1.6819633 -3.984549 -1.03424 128.0 +1.6571113 -3.9938979 -1.033999 128.0 +1.6340387 -4.0075855 -1.0349633 128.0 +1.6155491 -4.0328536 -1.0390615 128.0 +1.2051073 -3.061816 -0.77725405 128.0 +1.191891 -3.0836387 -0.78111124 128.0 +1.5523962 -4.0918541 -1.047017 128.0 +1.4802166 -3.9748707 -1.0135076 128.0 +1.3662621 -3.7386465 -0.94865841 128.0 +1.3521322 -3.7716284 -0.95516741 128.0 +1.4084097 -4.0060215 -1.0147129 128.0 +1.4138242 -4.1017613 -1.0376151 128.0 +1.4128393 -4.1820831 -1.0564189 128.0 +1.3731343 -4.1482878 -1.0453295 128.0 +1.3533374 -4.1741772 -1.0499099 128.0 +1.0419266 -3.2813613 -0.81510282 128.0 +1.0214852 -3.2867658 -0.81486171 128.0 +1.0072213 -3.3124728 -0.81992429 128.0 +0.98770636 -3.3213816 -0.82064754 128.0 +0.96379024 -3.3152633 -0.81751359 128.0 +0.94051629 -3.3108444 -0.81486171 128.0 +0.91914701 -3.3128119 -0.81389743 128.0 +0.82835495 -3.0579481 -0.74687856 128.0 +0.8056137 -3.0479593 -0.74302137 128.0 +1.1120013 -4.316041 -1.0670263 128.0 +1.0821919 -4.3096042 -1.0636512 128.0 +1.0573407 -4.3227625 -1.0653387 128.0 +1.0177729 -4.2744069 -1.0513563 128.0 +0.98758882 -4.2635517 -1.047017 128.0 +0.95864123 -4.2572222 -1.0438831 128.0 +0.92628735 -4.2345796 -1.0366508 128.0 +0.89968306 -4.2373357 -1.0359275 128.0 +0.84160686 -4.0868754 -0.99639124 128.0 +0.75203413 -3.7683516 -0.91442573 128.0 +0.73110348 -3.7843304 -0.91731864 128.0 +0.79613447 -4.2619548 -1.0368918 128.0 +0.77134538 -4.2744007 -1.0388205 128.0 +0.74443871 -4.2752285 -1.0378562 128.0 +0.72524834 -4.3218307 -1.0484635 128.0 +0.70242411 -4.349195 -1.0542493 128.0 +0.68256056 -4.3975396 -1.0653387 128.0 +0.64899993 -4.3574872 -1.0542493 128.0 +0.62485033 -4.379643 -1.0588297 128.0 +0.6029408 -4.4199367 -1.0679905 128.0 +0.56093144 -4.3090248 -1.0393026 128.0 +0.5461545 -4.406776 -1.062928 128.0 +0.5094825 -4.3281145 -1.0424366 128.0 +0.4793756 -4.2993288 -1.0344812 128.0 +0.45045224 -4.278059 -1.0284542 128.0 +0.43316567 -4.3715277 -1.0511153 128.0 +0.40624478 -4.373137 -1.0508742 128.0 +0.38007274 -4.3832827 -1.0528028 128.0 +0.34983137 -4.3439341 -1.0424366 128.0 +0.31743398 -4.2685704 -1.0231506 128.0 +0.29294661 -4.2956133 -1.0294186 128.0 +0.26754099 -4.3128285 -1.0332757 128.0 +0.24295889 -4.3483043 -1.0417134 128.0 +0.21699268 -4.364253 -1.0453295 128.0 +0.19050397 -4.3722892 -1.047017 128.0 +0.16313194 -4.3588285 -1.0434009 128.0 +0.13728622 -4.3888483 -1.0506332 128.0 +0.10963012 -4.3605022 -1.0434009 128.0 +0.082890704 -4.3620629 -1.0436419 128.0 +0.056013979 -4.3537555 -1.0414723 128.0 +0.029148243 -4.3307257 -1.0356865 128.0 +0.0025745439 -4.3298526 -1.0354455 128.0 +-0.024043716 -4.338521 -1.0376151 128.0 +-0.050466865 -4.3217945 -1.0335168 128.0 +-0.07744015 -4.3466325 -1.0397848 128.0 +-0.10349813 -4.3208499 -1.0335168 128.0 +-0.13260025 -4.4054985 -1.0547314 128.0 +-0.15987721 -4.4113913 -1.0564189 128.0 +-0.1879345 -4.433598 -1.0622047 128.0 +-0.21541883 -4.4381776 -1.0636512 128.0 +-0.24152867 -4.4164224 -1.0585886 128.0 +-0.27022105 -4.4410119 -1.0650977 128.0 +-0.2966187 -4.4266825 -1.0619637 128.0 +-0.32135808 -4.3918705 -1.0537671 128.0 +-0.34799197 -4.3859463 -1.0528028 128.0 +-0.37439939 -4.3779263 -1.0513563 128.0 +-0.40258801 -4.3900433 -1.0549725 128.0 +-0.4272418 -4.3643098 -1.0491867 128.0 +-0.45683321 -4.3886333 -1.0559368 128.0 +-0.48140636 -4.3645258 -1.0506332 128.0 +-0.50862783 -4.365346 -1.0515975 128.0 +-0.54286808 -4.4228272 -1.0667852 128.0 +-0.57621545 -4.4675379 -1.0788389 128.0 +-0.91163838 -6.7374249 -1.6487404 128.0 +-0.9517355 -6.7230558 -1.6465707 128.0 +-0.99353784 -6.7209301 -1.647535 128.0 +-1.0301707 -6.6849732 -1.6400616 128.0 +-1.0724005 -6.686192 -1.6419903 128.0 +-1.1126072 -6.6746998 -1.6407849 128.0 +-1.1585097 -6.6964355 -1.6480172 128.0 +-1.2021486 -6.7035298 -1.6516333 128.0 +-1.2390021 -6.6731272 -1.6458474 128.0 +-1.2802906 -6.6673055 -1.6463296 128.0 +-1.325146 -6.6793146 -1.6513922 128.0 +-1.3686377 -6.6834173 -1.6545261 128.0 +-1.405406 -6.6549535 -1.6494635 128.0 +-1.4441484 -6.6367221 -1.6470529 128.0 +-1.4837818 -6.6230011 -1.6458474 128.0 +-1.5182841 -6.5872931 -1.6390973 128.0 +-1.5609137 -6.5872965 -1.6415081 128.0 +-1.6026815 -6.5832524 -1.6429546 128.0 +-1.6517591 -6.60813 -1.6518743 128.0 +-1.6862428 -6.5743699 -1.6458474 128.0 +-1.722598 -6.548883 -1.6419903 128.0 +-1.7675519 -6.5559931 -1.6465707 128.0 +-1.8033502 -6.5291214 -1.6424724 128.0 +-1.8436425 -6.5188675 -1.6427135 128.0 +-1.8830668 -6.505568 -1.6422313 128.0 +-1.9301174 -6.5180845 -1.6484993 128.0 +-1.9785178 -6.5339832 -1.6557316 128.0 +-2.01283 -6.5031791 -1.65091 128.0 +-2.0570869 -6.5045853 -1.6545261 128.0 +-2.0996459 -6.5001521 -1.6566958 128.0 +-2.1376657 -6.481617 -1.6552494 128.0 +-2.182972 -6.4849339 -1.6595887 128.0 +-1.3212644 -3.8482838 -0.97059619 128.0 +-1.3419627 -3.8318615 -0.96842653 128.0 +-2.2921689 -6.4162374 -1.6523565 128.0 +-2.3374755 -6.4184651 -1.6566958 128.0 +-2.3761389 -6.4021826 -1.6562136 128.0 +-2.4105692 -6.3747745 -1.6528386 128.0 +-2.4440551 -6.3453736 -1.6489815 128.0 +-2.4964159 -6.3645883 -1.6581423 128.0 +-2.5278597 -6.330225 -1.6530797 128.0 +-2.5659225 -6.3127971 -1.6525975 128.0 +-2.6068354 -6.3023143 -1.654044 128.0 +-2.6450799 -6.285306 -1.653803 128.0 +-2.6965868 -6.2992902 -1.6619995 128.0 +-2.7685168 -6.3591461 -1.682732 128.0 +-1.3793254 -3.1173177 -0.80666518 128.0 +-1.3988254 -3.1096807 -0.80690628 128.0 +-2.8515785 -6.2338629 -1.6627227 128.0 +-2.8844547 -6.2048087 -1.6595887 128.0 +-1.6071776 -3.4036801 -0.89489865 128.0 +-1.6246717 -3.3867552 -0.89297003 128.0 +-1.6394663 -3.3645103 -0.88959503 128.0 +-1.6570646 -3.3482997 -0.88790751 128.0 +-1.6784502 -3.3398032 -0.88838965 128.0 +-1.7037665 -3.3389492 -0.89104146 128.0 +-1.7353886 -3.3499722 -0.89706832 128.0 +-1.7852879 -3.3950863 -0.9127382 128.0 +-2.0891013 -3.9139693 -1.0619637 128.0 +-3.2715337 -6.0384393 -1.6658567 128.0 +-3.3066525 -6.0148506 -1.6648924 128.0 +-3.3316743 -5.9732604 -1.6588656 128.0 +-3.3883426 -5.9881778 -1.6689907 128.0 +-3.446768 -6.0051479 -1.679839 128.0 +-3.4742703 -5.9679513 -1.6752586 128.0 +-3.5019395 -5.9314799 -1.6709193 128.0 +-3.5462472 -5.9232025 -1.6747764 128.0 +-3.5845397 -5.9046497 -1.6757407 128.0 +-3.6023839 -5.8527932 -1.667062 128.0 +-3.6449089 -5.8412819 -1.6701961 128.0 +-3.6822386 -5.8212676 -1.6709193 128.0 +-3.7409427 -5.8345079 -1.6815265 128.0 +-3.7793171 -5.8155127 -1.682732 128.0 +-3.7978425 -5.7662802 -1.6750176 128.0 +-3.834769 -5.7452898 -1.6757407 128.0 +-3.8514581 -5.6943231 -1.6675442 128.0 +-2.1066172 -3.0747278 -0.88573778 128.0 +-2.1304269 -3.0689175 -0.88790751 128.0 +-2.1525688 -3.0605497 -0.88935393 128.0 +-4.0559645 -5.6905432 -1.69575 128.0 +-4.0731883 -5.64116 -1.6882766 128.0 +-4.1037135 -5.6105785 -1.6865891 128.0 +-4.1392179 -5.5868526 -1.6870713 128.0 +-4.1769161 -5.5660067 -1.6885178 128.0 +-4.2162766 -5.5472255 -1.6906874 128.0 +-4.2502346 -5.5212507 -1.6906874 128.0 +-4.2744827 -5.4828229 -1.6868303 128.0 +-4.2797728 -5.4206963 -1.6754997 128.0 +-4.3184085 -5.401155 -1.6776694 128.0 +-4.366128 -5.3926563 -1.6834552 128.0 +-4.4003654 -5.3672657 -1.6839373 128.0 +-4.4350758 -5.3424044 -1.6846606 128.0 +-4.477766 -5.3269758 -1.6885178 128.0 +-4.5229502 -5.3141794 -1.6933392 128.0 +-4.5453339 -5.2745657 -1.6894821 128.0 +-4.5520859 -5.2173295 -1.679839 128.0 +-4.5975084 -5.2045727 -1.6849016 128.0 +-4.625474 -5.1719251 -1.6834552 128.0 +-4.6532121 -5.1391306 -1.6820087 128.0 +-4.6885929 -5.1147738 -1.6834552 128.0 +-4.7377167 -5.105113 -1.6899642 128.0 +-4.7556586 -5.0618029 -1.6851428 128.0 +-4.8066969 -5.0536208 -1.6923749 128.0 +-4.8450212 -5.0317211 -1.6950268 128.0 +-4.8595428 -4.9852214 -1.6892409 128.0 +-4.9057212 -4.9711957 -1.6947857 128.0 +-4.9080048 -4.9128556 -1.6849016 128.0 +-4.9339156 -4.8785548 -1.6834552 128.0 +-4.9540353 -4.838697 -1.6800802 128.0 +-4.9920144 -4.8162932 -1.682973 128.0 +-5.018662 -4.7828941 -1.6820087 128.0 +-5.0373135 -4.7420335 -1.6783926 128.0 +-5.0663152 -4.7110362 -1.6783926 128.0 +-5.1315846 -4.7133365 -1.6906874 128.0 +-5.1834126 -4.7026248 -1.6984018 128.0 +-5.2280731 -4.684978 -1.7037054 128.0 +-5.2632627 -4.6585989 -1.7058752 128.0 +-5.282979 -4.6185527 -1.7029823 128.0 +-5.3126879 -4.5873184 -1.7034644 128.0 +-5.3459048 -4.559041 -1.7051519 128.0 +-5.3715506 -4.5242782 -1.7044287 128.0 +-5.3798084 -4.4751005 -1.6981608 128.0 +-5.3906655 -4.4284558 -1.6928571 128.0 +-5.4222593 -4.3989639 -1.6943035 128.0 +-5.4446034 -4.3619704 -1.6928571 128.0 +-5.4682207 -4.3260732 -1.6918929 128.0 +-5.5091953 -4.3037887 -1.6964732 128.0 +-5.5247393 -4.2616072 -1.6930982 128.0 +-5.5662274 -4.2393856 -1.6979197 128.0 +-5.5696378 -4.1882405 -1.6909285 128.0 +-5.5765276 -4.1401057 -1.6851428 128.0 +-5.6026087 -4.1063848 -1.6853838 128.0 +-5.587595 -4.0429225 -1.6730889 128.0 +-5.6225648 -4.015893 -1.6762229 128.0 +-5.658999 -3.9897041 -1.679839 128.0 +-5.6961203 -3.9637735 -1.6836963 128.0 +-5.717134 -3.9265509 -1.682732 128.0 +-5.7379055 -3.8892198 -1.6817677 128.0 +-5.751173 -3.8469265 -1.6786337 128.0 +-5.7754793 -3.8121002 -1.6788747 128.0 +-5.8239746 -3.7930055 -1.6863481 128.0 +-5.7989612 -3.7262528 -1.6721246 128.0 +-5.8184366 -3.6885231 -1.6711603 128.0 +-5.821209 -3.6404057 -1.6653745 128.0 +-5.8153496 -3.5872996 -1.657178 128.0 +-5.8380809 -3.5520539 -1.6574191 128.0 +-5.8397913 -3.5041842 -1.6516333 128.0 +-5.8611827 -3.468286 -1.6516333 128.0 +-5.9100184 -3.4483929 -1.6595887 128.0 +-5.9293833 -3.4110973 -1.6591066 128.0 +-5.9392262 -3.3684287 -1.6559726 128.0 +-5.9851985 -3.3461263 -1.6632049 128.0 +-5.9869156 -3.2990375 -1.6579012 128.0 +-6.0121632 -3.2650185 -1.6593477 128.0 +-6.0457759 -3.2353914 -1.6632049 128.0 +-6.0449085 -3.1873741 -1.6574191 128.0 +-6.0540166 -3.1448565 -1.6545261 128.0 +-6.093936 -3.118257 -1.6603119 128.0 +-6.0921531 -3.0703275 -1.6545261 128.0 +-6.1213102 -3.0380645 -1.6574191 128.0 +-6.1503005 -3.0055594 -1.6603119 128.0 +-6.183495 -2.9749155 -1.6644102 128.0 +-6.2077727 -2.9398251 -1.6660978 128.0 +-6.243289 -2.9098763 -1.6709193 128.0 +-6.2874928 -2.8836465 -1.6781515 128.0 +-6.3360319 -2.8589785 -1.6865891 128.0 +-6.3605518 -2.8231962 -1.6885178 128.0 +-6.3777552 -2.7841153 -1.6885178 128.0 +-6.3866911 -2.7414858 -1.6863481 128.0 +-6.4159112 -2.7075267 -1.6897231 128.0 +-6.4557128 -2.6777723 -1.695991 128.0 +-6.4953899 -2.6476312 -1.7022591 128.0 +-6.5502563 -2.6232347 -1.7126253 128.0 +-6.5978408 -2.5954232 -1.7210629 128.0 +-6.6118312 -2.5541916 -1.7205807 128.0 +-6.6428061 -2.5194223 -1.724679 128.0 +-6.6999807 -2.4941838 -1.7357684 128.0 +-6.7379498 -2.4613478 -1.7417953 128.0 +-6.753839 -2.4202855 -1.7420365 128.0 +-6.8015265 -2.390378 -1.7507151 128.0 +-6.8252416 -2.3517599 -1.7531259 128.0 +-6.835865 -2.3085952 -1.7521616 128.0 +-6.8545089 -2.2681313 -1.7533669 128.0 +-6.8969183 -2.2353013 -1.7608403 128.0 +-6.9299312 -2.1991019 -1.7659029 128.0 +-7.0100288 -2.1772552 -1.7832602 128.0 +-6.8728194 -2.0885131 -1.7442061 128.0 +-6.8836441 -2.0457504 -1.743724 128.0 +-6.9957929 -2.0324299 -1.769519 128.0 +-7.0557485 -2.0029755 -1.7818139 128.0 +-7.1595616 -1.9850414 -1.8054391 128.0 +-7.228754 -1.9565318 -1.8201448 128.0 +-7.4799089 -1.9752923 -1.8816189 128.0 +-7.5698981 -1.9494364 -1.9016281 128.0 +-7.6899714 -1.9301058 -1.9293517 128.0 +-7.7912335 -1.904767 -1.9522538 128.0 +-7.8462062 -1.8672545 -1.9633434 128.0 +-7.8433328 -1.8157946 -1.9597272 128.0 +-7.8713698 -1.7714678 -1.9640665 128.0 +-7.8868322 -1.7241722 -1.9652719 128.0 +-7.9361882 -1.684001 -1.9751559 128.0 +-7.9340138 -1.6327324 -1.9720221 128.0 +-7.9448342 -1.5842092 -1.9722631 128.0 +-7.9277229 -1.5302842 -1.965513 128.0 +-7.9112039 -1.4768071 -1.9590039 128.0 +-7.8991036 -1.4244509 -1.9537003 128.0 +-7.9402051 -1.381608 -1.9618969 128.0 +-7.9695907 -1.3363898 -1.9672005 128.0 +-7.9565616 -1.2840655 -1.9618969 128.0 +-7.9863491 -1.2386386 -1.9674416 128.0 +-7.9899588 -1.1890411 -1.9664773 128.0 +-7.9788489 -1.1373936 -1.9618969 128.0 +-7.9818311 -1.0878912 -1.9609326 128.0 +-7.9777694 -1.0375199 -1.9582808 128.0 +-8.0042114 -0.99105114 -1.9633434 128.0 +-8.0159254 -0.94259876 -1.9647897 128.0 +-8.0389204 -0.89532739 -1.9691291 128.0 +-8.045228 -0.84608603 -1.9693702 128.0 +-8.0183964 -0.79355592 -1.9614147 128.0 +-8.0134506 -0.74344587 -1.9590039 128.0 +-8.0110931 -0.69367719 -1.9573164 128.0 +-8.0055246 -0.64373249 -1.9549057 128.0 +-8.0519094 -0.59775472 -1.965513 128.0 +-8.0622034 -0.54879826 -1.9672005 128.0 +-8.0731688 -0.49979782 -1.9691291 128.0 +-8.0557346 -0.44912079 -1.9640665 128.0 +-8.0118113 -0.39738229 -1.952495 128.0 +-8.0305815 -0.34892908 -1.9565933 128.0 +-8.0509987 -0.30033252 -1.9611737 128.0 +-8.0478392 -0.25077644 -1.9599683 128.0 +-8.032733 -0.2009808 -1.95587 128.0 +-8.0027647 -0.15110728 -1.9481556 128.0 +-8.0297422 -0.10233054 -1.9546646 128.0 +-8.0535107 -0.05320958 -1.9604504 128.0 +-8.0303936 -0.0037855431 -1.9546646 128.0 +-8.0302658 0.045488097 -1.9546646 128.0 +-8.0589485 0.095107786 -1.9618969 128.0 +-8.0378361 0.1441863 -1.9568343 128.0 +-8.0358295 0.19347931 -1.9565933 128.0 +-7.9947186 0.24157505 -1.9467092 128.0 +-8.0018148 0.2909438 -1.9488788 128.0 +-7.9824257 0.33929217 -1.9445394 128.0 +-7.9549904 0.38703513 -1.9382715 128.0 +-7.9447136 0.43541273 -1.936343 128.0 +-7.9748278 0.48616502 -1.9445394 128.0 +-8.0646534 0.54134172 -1.9676827 128.0 +-7.6650147 -0.19095019 -1.9540584 128.0 +-7.6641068 -0.14387852 -1.953555 128.0 +-7.6648455 -0.09684974 -1.953555 128.0 +-7.6652951 -0.049817309 -1.953555 128.0 +-7.6596498 -0.0027805967 -1.9520446 128.0 +-7.6517806 0.044173885 -1.9500308 128.0 +-7.6542687 0.091157921 -1.950786 128.0 +-7.6651769 0.13833088 -1.9538068 128.0 +-7.6661186 0.18540761 -1.9543102 128.0 +-7.62711 0.23130038 -1.9444927 128.0 +-7.6487589 0.27894041 -1.9505342 128.0 +-7.6353002 0.3253732 -1.9475135 128.0 +-7.6476598 0.37292269 -1.9512894 128.0 +-7.6432953 0.41973481 -1.950786 128.0 +-7.6454058 0.46692002 -1.9520446 128.0 +-7.6201878 0.51233047 -1.9462547 128.0 +-7.6159353 0.55900663 -1.9460031 128.0 +-7.6152563 0.60595679 -1.9467583 128.0 +-7.6027164 0.65192801 -1.9444927 128.0 +-7.6053195 0.69918495 -1.9462547 128.0 +-7.5893278 0.74470359 -1.943234 128.0 +-7.5923162 0.79205978 -1.9452479 128.0 +-7.5776939 0.83756775 -1.9427305 128.0 +-7.5762572 0.88449651 -1.9437375 128.0 +-7.57549 0.93155724 -1.9449961 128.0 +-7.5456362 0.97492301 -1.9387028 128.0 +-7.5519795 1.0228919 -1.9419754 128.0 +-7.5714335 1.0728754 -1.9487721 128.0 +-7.5407734 1.1157725 -1.9424788 128.0 +-7.5529151 1.1649704 -1.9475135 128.0 +-7.5236464 1.2077652 -1.9417236 128.0 +-7.5180035 1.2542251 -1.9422271 128.0 +-7.512073 1.3006613 -1.9427305 128.0 +-7.497283 1.3455336 -1.9409684 128.0 +-7.5079165 1.3950458 -1.9460031 128.0 +-7.4849586 1.4383484 -1.9422271 128.0 +-7.4664998 1.4823641 -1.9397098 128.0 +-7.4525228 1.5271785 -1.9384511 128.0 +-7.4458528 1.5734777 -1.9392062 128.0 +-7.4388947 1.6197526 -1.9399614 128.0 +-7.4165392 1.6626148 -1.936689 128.0 +-7.3929954 1.7050463 -1.9331647 128.0 +-7.3786273 1.7494839 -1.9321579 128.0 +-7.3837395 1.7986184 -1.9364372 128.0 +-7.3519087 1.8387254 -1.9308991 128.0 +-7.377985 1.8934222 -1.9409684 128.0 +-7.3381505 1.9312689 -1.9334165 128.0 +-7.2971954 1.9684464 -1.9256128 128.0 +-7.315764 2.0216894 -1.9339199 128.0 +-7.2845964 2.061271 -1.9288853 128.0 +-7.2178941 2.090318 -1.9142848 128.0 +-7.2671041 2.1529827 -1.9311509 128.0 +-7.2222648 2.1879935 -1.922592 128.0 +-7.2087035 2.2322671 -1.922592 128.0 +-7.2114801 2.2817111 -1.9271232 128.0 +-7.1605072 2.3140149 -1.9170539 128.0 +-7.1645555 2.3639712 -1.9220885 128.0 +-7.1957755 2.4233294 -1.9346751 128.0 +-7.1670413 2.4627194 -1.9308991 128.0 +-7.1326156 2.4999278 -1.9256128 128.0 +-7.114408 2.5426686 -1.9248576 128.0 +-7.1014004 2.5872676 -1.9256128 128.0 +-7.0844841 2.6304555 -1.925361 128.0 +-7.033813 2.6608651 -1.9157952 128.0 +-7.0218692 2.7057133 -1.9170539 128.0 +-7.0384698 2.761826 -1.926368 128.0 +-7.0213909 2.8049612 -1.926368 128.0 +-6.9771519 2.8370559 -1.9188161 128.0 +-6.9953837 2.894613 -1.9288853 128.0 +-6.9346757 2.9194589 -1.9168022 128.0 +-6.9397631 2.9718587 -1.9233472 128.0 +-6.9347072 3.0201802 -1.9271232 128.0 +-6.8974614 3.0544455 -1.9218369 128.0 +-6.8882976 3.1010797 -1.9246058 128.0 +-6.8506589 3.1348314 -1.9193195 128.0 +-6.8391929 3.1804798 -1.9215851 128.0 +-6.8037982 3.2149427 -1.9170539 128.0 +-6.7821989 3.2557919 -1.9165505 128.0 +-6.733387 3.2833493 -1.9082433 128.0 +-6.7599478 3.3477936 -1.9218369 128.0 +-6.7012343 3.3700788 -1.9107606 128.0 +-6.7071505 3.4247754 -1.9185643 128.0 +-6.6997581 3.472991 -1.922592 128.0 +-6.6757526 3.5126827 -1.9218369 128.0 +-6.6412678 3.5467403 -1.9180609 128.0 +-6.6108718 3.5828125 -1.9155436 128.0 +-6.5904593 3.6242414 -1.916047 128.0 +-6.5520391 3.655653 -1.9112641 128.0 +-6.5193782 3.6900666 -1.9082433 128.0 +-6.4907384 3.7266264 -1.9064811 128.0 +-6.4869862 3.7775831 -1.912271 128.0 +-6.4811854 3.8276494 -1.9175574 128.0 +-6.4509349 3.8633676 -1.9155436 128.0 +-6.4254537 3.9018724 -1.91504 128.0 +-6.4055123 3.9437616 -1.9162987 128.0 +-6.3902245 3.9886272 -1.9190677 128.0 +-6.350091 4.0179305 -1.9142848 128.0 +-6.3016925 4.0416679 -1.9069847 128.0 +-6.2832661 4.0844774 -1.9089985 128.0 +-6.2435384 4.1133709 -1.9044673 128.0 +-6.2423291 4.1677237 -1.9120193 128.0 +-6.2022099 4.1961865 -1.9074881 128.0 +-6.1308451 4.2029738 -1.8931395 128.0 +-6.1287875 4.2570753 -1.9006914 128.0 +-6.1096745 4.299613 -1.902957 128.0 +-6.0808134 4.3353348 -1.9022018 128.0 +-6.0454674 4.3663316 -1.8994327 128.0 +-6.0013781 4.3907728 -1.8938947 128.0 +-5.9968734 4.4442234 -1.9011948 128.0 +-5.9834237 4.4913931 -1.905726 128.0 +-5.9611459 4.5321221 -1.9074881 128.0 +-5.9278569 4.5644808 -1.905726 128.0 +-5.8951592 4.5971971 -1.9042156 128.0 +-5.8698783 4.6356816 -1.9052225 128.0 +-5.8345213 4.6661711 -1.902957 128.0 +-5.8012676 4.6982293 -1.9014466 128.0 +-5.7738276 4.7349639 -1.90195 128.0 +-5.7722154 4.7931771 -1.9112641 128.0 +-5.7182503 4.8079524 -1.902957 128.0 +-5.6982222 4.8511033 -1.9062295 128.0 +-5.6639504 4.882185 -1.9047191 128.0 +-5.6287832 4.9123921 -1.902957 128.0 +-5.587656 4.9372253 -1.899181 128.0 +-5.5673552 4.9804506 -1.9027052 128.0 +-5.5158877 4.9956779 -1.8954051 128.0 +-5.4865575 5.0307369 -1.8959085 128.0 +-5.4527488 5.0616736 -1.8949015 128.0 +-5.4441576 5.1162434 -1.902957 128.0 +-5.4105587 5.1475506 -1.9022018 128.0 +-5.3558679 5.1584978 -1.8938947 128.0 +-5.3012471 5.1689692 -1.8855875 128.0 +-5.2721868 5.2041192 -1.8865944 128.0 +-5.2292013 5.2254257 -1.8825667 128.0 +-5.2018032 5.2622309 -1.8843288 128.0 +-5.2126923 5.3383632 -1.9004396 128.0 +-5.1825261 5.3730335 -1.9014466 128.0 +-5.1434517 5.3984256 -1.899181 128.0 +-5.1002808 5.419313 -1.8954051 128.0 +-5.0629787 5.4462528 -1.8938947 128.0 +-5.0851083 5.5378056 -1.9152918 128.0 +-5.0230732 5.5380797 -1.9044673 128.0 +-4.9747896 5.5529389 -1.8989292 128.0 +-4.9406238 5.5833592 -1.8989292 128.0 +-4.9190106 5.6281424 -1.9039639 128.0 +-4.8913412 5.6662769 -1.9067329 128.0 +-4.8432946 5.6807184 -1.9014466 128.0 +-4.8108411 5.7132902 -1.9024535 128.0 +-4.7794075 5.7471657 -1.9039639 128.0 +-4.7624817 5.7988195 -1.9115158 128.0 +-4.7383952 5.8422132 -1.9162987 128.0 +-4.7351313 5.9119658 -1.9298922 128.0 +-4.6759515 5.9120655 -1.9203265 128.0 +-4.6431623 5.9452214 -1.9218369 128.0 +-4.5971389 5.9613376 -1.9178091 128.0 +-4.5510931 5.9771137 -1.9137814 128.0 +-4.52073 6.0134349 -1.9165505 128.0 +-4.4722104 6.0255184 -1.9115158 128.0 +-4.4174204 6.0286465 -1.9037122 128.0 +-4.4109783 6.0979805 -1.9173057 128.0 +-4.3852901 6.1414704 -1.922592 128.0 +-4.3263354 6.1382036 -1.9130262 128.0 +-4.3046198 6.1876721 -1.9203265 128.0 +-4.2484932 6.1876407 -1.9120193 128.0 +-4.2283635 6.2400308 -1.9203265 128.0 +-4.194838 6.273098 -1.922592 128.0 +-4.1530695 6.2938724 -1.9210817 128.0 +-4.1138449 6.3184257 -1.9208299 128.0 +-4.0880761 6.363905 -1.9271232 128.0 +-4.0396252 6.3741555 -1.922592 128.0 +-4.018909 6.4283633 -1.9316543 128.0 +-3.9722769 6.44137 -1.9281301 128.0 +-3.9432411 6.4829855 -1.9334165 128.0 +-3.8939281 6.4912906 -1.9286336 128.0 +-3.835299 6.4834094 -1.9190677 128.0 +-3.8154397 6.5410938 -1.9293888 128.0 +-3.7771628 6.5677376 -1.9303957 128.0 +-3.7425213 6.6008925 -1.9334165 128.0 +-3.7071426 6.6330247 -1.9361855 128.0 +-3.6738455 6.669209 -1.9402132 128.0 +-3.6365492 6.6984301 -1.9422271 128.0 +-3.5935538 6.7172041 -1.9412202 128.0 +-3.5306065 6.6980338 -1.929137 128.0 +-3.5112987 6.7616553 -1.9414719 128.0 +-3.4547572 6.7537789 -1.9329131 128.0 +-3.4280584 6.8042355 -1.9414719 128.0 +-3.3862438 6.8251414 -1.9414719 128.0 +-3.3430274 6.8431821 -1.9407167 128.0 +-3.3143997 6.8914742 -1.9487721 128.0 +-3.2662539 6.8994355 -1.9452479 128.0 +-3.2234495 6.9184699 -1.9449961 128.0 +-3.1591551 6.8906131 -1.9314026 128.0 +-3.1347246 6.9495659 -1.9427305 128.0 +-3.0986974 6.9837074 -1.9470099 128.0 +-3.0503681 6.9901714 -1.9434857 128.0 +-3.0181067 7.0336585 -1.9505342 128.0 +-2.980159 7.0645285 -1.9540584 128.0 +-2.9271169 7.0594382 -1.9475135 128.0 +-2.8932421 7.1005678 -1.9540584 128.0 +-2.8575335 7.1379528 -1.9595965 128.0 +-2.8094316 7.1445441 -1.9565758 128.0 +-2.7624023 7.1535225 -1.9543102 128.0 +-2.7174277 7.167623 -1.953555 128.0 +-2.676435 7.1923251 -1.9558206 128.0 +-2.6325855 7.2095208 -1.9560723 128.0 +-2.5847085 7.2155166 -1.9533032 128.0 +-2.5394237 7.2285008 -1.952548 128.0 +-2.494077 7.2412014 -1.9517928 128.0 +-2.4561005 7.2756243 -1.9570793 128.0 +-2.4074602 7.2786131 -1.9538068 128.0 +-2.3657374 7.3024545 -1.9563241 128.0 +-2.3217638 7.3196006 -1.9570793 128.0 +-2.277956 7.3374057 -1.9580861 128.0 +-2.2222013 7.3160567 -1.9485204 128.0 +-2.1844356 7.3536749 -1.9550654 128.0 +-2.1462915 7.3911037 -1.9616104 128.0 +-2.1040709 7.4153066 -1.9646312 128.0 +-2.0523274 7.405694 -1.9585897 128.0 +-2.0131679 7.4415026 -1.964883 128.0 +-1.9482002 7.3807278 -1.9452479 128.0 +-1.9154239 7.4412789 -1.9583379 128.0 +-1.8711423 7.4585238 -1.9598483 128.0 +-1.8104067 7.4087563 -1.9434857 128.0 +-1.7763377 7.4677424 -1.9563241 128.0 +-1.7267731 7.4624724 -1.9520446 128.0 +-1.6869 7.4993649 -1.9590931 128.0 +-1.6462257 7.5341568 -1.9656382 128.0 +-1.5985601 7.5374889 -1.963876 128.0 +-1.5511107 7.5414681 -1.9623656 128.0 +-1.5061324 7.557487 -1.9641278 128.0 +-1.4593654 7.5646858 -1.9636242 128.0 +-1.4129219 7.5734978 -1.9636242 128.0 +-1.3679705 7.5905972 -1.9658898 128.0 +-1.3217014 7.6007547 -1.9663934 128.0 +-1.2753592 7.6106305 -1.9668968 128.0 +-1.2292538 7.6221342 -1.9679037 128.0 +-1.1824621 7.6295333 -1.9679037 128.0 +-1.1369075 7.6452608 -1.9701693 128.0 +-1.0925697 7.6702971 -1.9749522 128.0 +-1.047706 7.6931581 -1.9792316 128.0 +-0.99561638 7.6620131 -1.9694141 128.0 +-0.94751459 7.6593337 -1.9671485 128.0 +-0.89733678 7.6380901 -1.9601001 128.0 +-0.85109586 7.6492233 -1.9616104 128.0 +-0.80546027 7.6668139 -1.964883 128.0 +-0.75668776 7.6542764 -1.9603517 128.0 +-0.70997578 7.6616659 -1.9611069 128.0 +-0.6637857 7.6755199 -1.9636242 128.0 +-0.61706465 7.6842718 -1.964883 128.0 +-0.57119197 7.705286 -1.9694141 128.0 +-0.52337706 7.7009215 -1.9674002 128.0 +-0.47623476 7.7059197 -1.9679037 128.0 +-0.42818969 7.6951685 -1.9643794 128.0 +-0.38039032 7.6860518 -1.9613587 128.0 +-0.3333483 7.6911416 -1.9621139 128.0 +-0.28575382 7.682404 -1.9593449 128.0 +-0.23854992 7.6820779 -1.9588413 128.0 +-0.19152984 7.6882343 -1.9601001 128.0 +-0.14480749 7.7134557 -1.9663934 128.0 +-0.09800382 7.7558107 -1.9772178 128.0 +-0.050121602 7.7117486 -1.9656382 128.0 +-0.0028034633 7.7148142 -1.9663934 128.0 +0.044544876 7.7166219 -1.9668968 128.0 +0.091720209 7.7016873 -1.9631208 128.0 +0.13874878 7.6884003 -1.9598483 128.0 +0.18603805 7.6922417 -1.9611069 128.0 +0.23247182 7.6658044 -1.9545619 128.0 +0.27936307 7.6603646 -1.953555 128.0 +0.32693708 7.6720433 -1.9570793 128.0 +0.37475908 7.6853595 -1.9611069 128.0 +0.42121929 7.6703529 -1.9578345 128.0 +0.46851152 7.6714878 -1.9588413 128.0 +0.51499021 7.6597781 -1.9565758 128.0 +0.56346679 7.676743 -1.9618621 128.0 +0.61017621 7.6683178 -1.9606035 128.0 +0.65647292 7.6557508 -1.9583379 128.0 +0.70308113 7.6477237 -1.9573309 128.0 +0.75131589 7.6567502 -1.9608552 128.0 +0.7976805 7.6462207 -1.9593449 128.0 +0.84468806 7.6421442 -1.9595965 128.0 +0.8919 7.6397014 -1.9603517 128.0 +0.93840533 7.6312032 -1.9595965 128.0 +0.98657542 7.6358595 -1.9623656 128.0 +1.0261381 7.5759559 -1.9482687 128.0 +1.0738255 7.5781407 -1.9505342 128.0 +1.1224281 7.5857701 -1.9543102 128.0 +1.1671826 7.5672622 -1.9512894 128.0 +1.2135924 7.559958 -1.9512894 128.0 +1.261867 7.5638247 -1.9543102 128.0 +1.3070986 7.5492644 -1.952548 128.0 +1.3501482 7.5230031 -1.9477651 128.0 +1.3994646 7.5317044 -1.9522964 128.0 +1.4432783 7.5106201 -1.9490238 128.0 +1.4927269 7.5187101 -1.953555 128.0 +1.5409693 7.5198383 -1.9563241 128.0 +1.5850806 7.5007725 -1.9538068 128.0 +1.6318982 7.494688 -1.9548136 128.0 +1.6820871 7.5034213 -1.9598483 128.0 +1.7091779 7.4109135 -1.9379476 128.0 +1.768235 7.4577303 -1.9533032 128.0 +1.8130455 7.4429789 -1.9522964 128.0 +1.8640802 7.4533086 -1.9580861 128.0 +1.9032837 7.41642 -1.9512894 128.0 +1.9551572 7.4289365 -1.9578345 128.0 +1.9946553 7.3943739 -1.9517928 128.0 +2.0410197 7.3857274 -1.9527998 128.0 +2.0881433 7.3795834 -1.9545619 128.0 +2.1309619 7.3582654 -1.9522964 128.0 +2.1757963 7.3441238 -1.9520446 128.0 +2.2194154 7.326004 -1.950786 128.0 +2.2643251 7.3122478 -1.950786 128.0 +2.3088577 7.2972937 -1.9505342 128.0 +2.3541846 7.2848315 -1.9510376 128.0 +2.3988392 7.2702494 -1.9510376 128.0 +2.4344473 7.2287946 -1.9437375 128.0 +2.4796999 7.2164669 -1.9444927 128.0 +2.5239327 7.2011161 -1.9444927 128.0 +2.5680704 7.1854939 -1.9444927 128.0 +2.6150925 7.1777854 -1.9467583 128.0 +2.6540332 7.147995 -1.9429823 128.0 +2.6992121 7.1351962 -1.9439892 128.0 +2.7467692 7.1284337 -1.9467583 128.0 +2.7876289 7.1042385 -1.9447443 128.0 +2.8125 7.0402646 -1.9316543 128.0 +2.868767 7.0551505 -1.9407167 128.0 +2.903863 7.0177407 -1.9351786 128.0 +2.9427381 6.9899793 -1.9324095 128.0 +2.9996669 7.0047092 -1.9417236 128.0 +3.0263624 6.9489045 -1.9311509 128.0 +3.0791304 6.9532123 -1.9376959 128.0 +3.111011 6.9103603 -1.9308991 128.0 +3.16342 6.9131432 -1.9371924 128.0 +3.207819 6.8979902 -1.9384511 128.0 +3.2422287 6.8615518 -1.9336683 128.0 +3.2909698 6.8554883 -1.9376959 128.0 +3.3270347 6.8229876 -1.9341717 128.0 +3.3671193 6.7989759 -1.9331647 128.0 +3.3887739 6.7384143 -1.9215851 128.0 +3.4370975 6.7312856 -1.9256128 128.0 +3.4698734 6.6937437 -1.9208299 128.0 +3.5275528 6.7040172 -1.930144 128.0 +3.5617838 6.6694403 -1.926368 128.0 +3.5966454 6.6363983 -1.9230955 128.0 +3.6363652 6.6125088 -1.922592 128.0 +3.6778133 6.5917625 -1.9230955 128.0 +3.6986468 6.5345387 -1.9127744 128.0 +3.7357812 6.5066853 -1.9112641 128.0 +3.7736874 6.4802952 -1.9102572 128.0 +3.8232205 6.4736853 -1.9152918 128.0 +3.8817642 6.4816566 -1.9248576 128.0 +3.9068954 6.4337263 -1.9175574 128.0 +3.9305704 6.3840842 -1.9097537 128.0 +3.9896522 6.3918662 -1.9195713 128.0 +4.0189657 6.3517265 -1.9147884 128.0 +4.0599532 6.3302059 -1.9157952 128.0 +4.0786757 6.2743402 -1.9062295 128.0 +4.1325374 6.2726336 -1.9135296 128.0 +4.1387067 6.1988635 -1.8984258 128.0 +4.1940174 6.1990037 -1.9064811 128.0 +4.2418242 6.1875215 -1.9110124 128.0 +4.2625957 6.1367364 -1.9032087 128.0 +4.299613 6.1096745 -1.902957 128.0 +4.3325262 6.0768733 -1.9009432 128.0 +4.3793635 6.0635128 -1.9052225 128.0 +4.4062009 6.0224676 -1.9006914 128.0 +4.4447999 5.9976511 -1.9014466 128.0 +4.4733834 5.9594288 -1.8979223 128.0 +4.5151372 5.9388027 -1.9001878 128.0 +4.5544438 5.9148207 -1.9014466 128.0 +4.5971971 5.8951592 -1.9042156 128.0 +4.6410794 5.8767142 -1.9074881 128.0 +4.6963925 5.8723135 -1.9155436 128.0 +4.7067556 5.8117976 -1.9049708 128.0 +4.692008 5.7214413 -1.8843288 128.0 +4.7418637 5.7104144 -1.8903704 128.0 +4.7836633 5.6893597 -1.8931395 128.0 +4.8172278 5.6584268 -1.8926359 128.0 +4.8455381 5.6214314 -1.8901186 128.0 +4.8678493 5.5777392 -1.8853358 128.0 +4.9045453 5.5506668 -1.8863426 128.0 +4.9307685 5.5118127 -1.8833219 128.0 +4.9800868 5.4986711 -1.8893634 128.0 +5.0032678 5.4565964 -1.8853358 128.0 +5.0340214 5.4229569 -1.8843288 128.0 +5.074491 5.3997245 -1.8870978 128.0 +5.1215358 5.3832116 -1.8923842 128.0 +5.15447 5.3516855 -1.8923842 128.0 +5.1162724 5.2471962 -1.8659524 128.0 +5.1626487 5.2301693 -1.8712388 128.0 +5.2028522 5.2066092 -1.8742596 128.0 +5.2291951 5.1691437 -1.8722457 128.0 +5.2580447 5.1342559 -1.8712388 128.0 +5.3089519 5.1207099 -1.8782873 128.0 +5.3563867 5.103394 -1.8840771 128.0 +5.3854856 5.0684419 -1.8833219 128.0 +5.412231 5.0313478 -1.8818115 128.0 +5.438724 4.9941168 -1.8803011 128.0 +5.4706984 4.9619517 -1.8808045 128.0 +5.4794178 4.908916 -1.8732526 128.0 +5.5239301 4.8880301 -1.8782873 128.0 +5.5749497 4.8725147 -1.8855875 128.0 +5.5659161 4.8046966 -1.8722457 128.0 +5.6416874 4.8100142 -1.8881048 128.0 +5.6629519 4.7684493 -1.8853358 128.0 +5.6906157 4.7323747 -1.8848323 128.0 +5.7195458 4.6973686 -1.8848323 128.0 +5.7700577 4.6798663 -1.8921325 128.0 +5.7948875 4.6413484 -1.8908738 128.0 +5.8065581 4.5924954 -1.8853358 128.0 +5.8147974 4.5412917 -1.8787907 128.0 +5.8954315 4.546309 -1.8961602 128.0 +5.9224458 4.5094638 -1.8959085 128.0 +5.9020438 4.4369802 -1.8803011 128.0 +5.9563565 4.4208717 -1.8891118 128.0 +5.975564 4.3785205 -1.8865944 128.0 +5.9678159 4.3168135 -1.8755182 128.0 +6.0414467 4.3138604 -1.8906221 128.0 +6.0195498 4.2426963 -1.8752664 128.0 +6.0812182 4.2305541 -1.8865944 128.0 +6.1254115 4.2057614 -1.8923842 128.0 +6.1366816 4.1583242 -1.887853 128.0 +6.1846066 4.1356564 -1.8949015 128.0 +6.2235975 4.1066928 -1.899181 128.0 +6.2413797 4.0636754 -1.8969154 128.0 +6.2710819 4.028441 -1.8984258 128.0 +6.2940469 3.9888504 -1.8979223 128.0 +6.305274 3.9419465 -1.8938947 128.0 +6.3342853 3.9062321 -1.8954051 128.0 +6.3523464 3.8637712 -1.8936429 128.0 +6.3726149 3.8227296 -1.8926359 128.0 +6.400948 3.7865129 -1.8941463 128.0 +6.4056706 3.7364373 -1.8886082 128.0 +6.4402213 3.7038181 -1.8921325 128.0 +6.4661937 3.6661413 -1.8931395 128.0 +6.5054626 3.6358404 -1.898174 128.0 +6.5259538 3.5949214 -1.8976706 128.0 +6.5453377 3.5534256 -1.8969154 128.0 +6.5661645 3.5127409 -1.8966637 128.0 +6.6021485 3.480058 -1.9009432 128.0 +6.6139297 3.4345758 -1.898174 128.0 +6.625402 3.38908 -1.8954051 128.0 +6.6547151 3.3527186 -1.8979223 128.0 +6.6768956 3.3126831 -1.8984258 128.0 +6.6997046 3.2729268 -1.899181 128.0 +6.7170444 3.2304981 -1.8984258 128.0 +6.7446122 3.1929495 -1.9006914 128.0 +6.7614455 3.1502788 -1.8999362 128.0 +6.783287 3.1099422 -1.9006914 128.0 +6.7969484 3.0658743 -1.899181 128.0 +6.8218246 3.0268593 -1.9009432 128.0 +6.8411555 2.9853315 -1.9011948 128.0 +6.8584552 2.9429171 -1.9009432 128.0 +6.8674664 2.897017 -1.8984258 128.0 +6.882431 2.8537123 -1.8976706 128.0 +6.905189 2.8136201 -1.899181 128.0 +6.9286122 2.773716 -1.9009432 128.0 +6.9418983 2.7297337 -1.8999362 128.0 +6.9774761 2.6944098 -1.9052225 128.0 +6.9911623 2.6505167 -1.9044673 128.0 +6.994596 2.6028438 -1.9009432 128.0 +7.0049806 2.5578847 -1.8994327 128.0 +7.0223656 2.5155077 -1.8999362 128.0 +7.0340161 2.4710886 -1.8989292 128.0 +7.0655165 2.4335561 -1.9034604 128.0 +7.0812325 2.3904667 -1.9037122 128.0 +7.1040363 2.3497076 -1.9059777 128.0 +7.1358128 2.3117418 -1.9107606 128.0 +7.1258783 2.2603047 -1.9042156 128.0 +7.1137338 2.2085025 -1.8971671 128.0 +7.1549311 2.1732516 -1.9047191 128.0 +7.1839027 2.1339946 -1.9089985 128.0 +7.1884966 2.0874455 -1.9067329 128.0 +7.213273 2.0467334 -1.9100055 128.0 +7.2154369 1.9995914 -1.9072363 128.0 +7.2322416 1.9565445 -1.9084951 128.0 +7.2506604 1.9138608 -1.9102572 128.0 +7.2528949 1.8669226 -1.9077399 128.0 +7.2754779 1.825211 -1.9107606 128.0 +7.2856002 1.7803054 -1.9105089 128.0 +7.3076849 1.7382563 -1.9135296 128.0 +7.2984128 1.6888018 -1.9082433 128.0 +7.3143029 1.6452624 -1.9097537 128.0 +7.3138599 1.5980787 -1.9069847 128.0 +7.3225813 1.5529708 -1.9067329 128.0 +7.3442955 1.5105463 -1.9100055 128.0 +7.3695607 1.4686705 -1.9142848 128.0 +7.3993397 1.4274583 -1.9198229 128.0 +7.3965425 1.3798995 -1.9168022 128.0 +7.3886786 1.3315703 -1.9125228 128.0 +7.3805008 1.2833897 -1.9082433 128.0 +7.4178257 1.2430396 -1.916047 128.0 +7.4320011 1.1985801 -1.9178091 128.0 +7.4210443 1.1501385 -1.9130262 128.0 +7.4327483 1.1052942 -1.9142848 128.0 +7.4690919 1.0638993 -1.9220885 128.0 +7.4668489 1.016874 -1.9198229 128.0 +7.4758267 0.97141331 -1.9205781 128.0 +7.4701209 0.92409784 -1.9175574 128.0 +7.4554658 0.87587225 -1.912271 128.0 +7.478013 0.83203715 -1.9168022 128.0 +7.4550653 0.78320342 -1.909502 128.0 +7.5040331 0.74182719 -1.9210817 128.0 +7.5055523 0.69550133 -1.9203265 128.0 +7.5067863 0.6491847 -1.9195713 128.0 +7.526063 0.604352 -1.9235989 128.0 +7.5141873 0.55701602 -1.9195713 128.0 +7.4856 0.50873214 -1.9112641 128.0 +7.5223889 0.46488294 -1.9200747 128.0 +7.5328302 0.41914821 -1.9220885 128.0 +7.5400934 0.3731592 -1.9233472 128.0 +7.5538435 0.32739049 -1.926368 128.0 +7.5470061 0.28071061 -1.9241024 128.0 +7.55826 0.23469865 -1.9266198 128.0 +7.5585899 0.18829347 -1.926368 128.0 +7.5402508 0.14154699 -1.9213333 128.0 +7.5254936 0.095081776 -1.9173057 128.0 +7.5520654 0.049075592 -1.9241024 128.0 +7.5377073 0.0027300497 -1.9203265 128.0 +7.5617766 -0.043658935 -1.9266198 128.0 +7.4994321 -0.089321889 -1.9105089 128.0 +7.5461569 -0.13618909 -1.9228437 128.0 +7.5355043 -0.18225537 -1.9203265 128.0 +7.5342441 -0.22848892 -1.9203265 128.0 +7.5452733 -0.27517176 -1.9235989 128.0 +7.5386081 -0.32125771 -1.9223403 128.0 +7.5577612 -0.36854362 -1.9278784 128.0 +7.5292664 -0.41347876 -1.9210817 128.0 +7.5546017 -0.46137911 -1.9283818 128.0 +7.5439034 -0.50720561 -1.926368 128.0 +7.5589881 -0.55482972 -1.9311509 128.0 +7.5564065 -0.60127705 -1.9314026 128.0 +7.5467892 -0.6471352 -1.9298922 128.0 +7.5378575 -0.69298649 -1.9286336 128.0 +7.5190163 -0.73780793 -1.9248576 128.0 +7.5355239 -0.786138 -1.9303957 128.0 +7.5161295 -0.8307662 -1.9266198 128.0 +7.4897423 -0.87440079 -1.9210817 128.0 +7.4871178 -0.92069477 -1.9218369 128.0 +7.5062833 -0.96984053 -1.9283818 128.0 +7.4896417 -1.0144516 -1.9256128 128.0 +7.4765682 -1.059438 -1.9238507 128.0 +7.4996057 -1.1096833 -1.9316543 128.0 +7.5117855 -1.1586287 -1.936689 128.0 +7.5226908 -1.2076119 -1.9414719 128.0 +7.4893651 -1.249449 -1.9346751 128.0 +7.4872794 -1.2963697 -1.9361855 128.0 +7.4229813 -1.3322027 -1.9213333 128.0 +7.4127641 -1.3773707 -1.9208299 128.0 +7.3813634 -1.4184465 -1.9147884 128.0 +7.4019485 -1.4695519 -1.922592 128.0 +7.4022732 -1.5168841 -1.9251094 128.0 +7.380517 -1.5596744 -1.9218369 128.0 +7.3708081 -1.604931 -1.9218369 128.0 +7.4146504 -1.6621915 -1.9361855 128.0 +7.4080844 -1.7085254 -1.9371924 128.0 +7.3484931 -1.7423407 -1.9241024 128.0 +7.3404846 -1.7880844 -1.9248576 128.0 +7.3162308 -1.8298043 -1.9213333 128.0 +7.2870541 -1.8700916 -1.9165505 128.0 +7.2716985 -1.9137838 -1.9155436 128.0 +7.2523437 -1.95635 -1.9135296 128.0 +7.1478515 -1.9752967 -1.8886082 128.0 +6.9735599 -1.9732765 -1.8448069 128.0 +6.7893419 -1.9662328 -1.7982366 128.0 +6.7001305 -1.9850407 -1.7773429 128.0 +6.6359549 -2.0104036 -1.7632459 128.0 +6.5606279 -2.0316195 -1.7461282 128.0 +6.4677615 -2.0464413 -1.7242275 128.0 +6.3933816 -2.0661521 -1.7073616 128.0 +6.3594446 -2.0983686 -1.7015717 128.0 +6.3455324 -2.1370411 -1.7013199 128.0 +6.2993498 -2.1646161 -1.6922576 128.0 +6.2128825 -2.1776221 -1.6721191 128.0 +6.1064453 -2.1824851 -1.6464425 128.0 +6.0847545 -2.2169311 -1.644177 128.0 +5.5720258 -2.0689723 -1.5057245 128.0 +5.4496956 -2.0616944 -1.475265 128.0 +5.3764353 -2.0717828 -1.4583991 128.0 +5.3753343 -2.109328 -1.4616716 128.0 +5.3326316 -2.1304243 -1.4533644 128.0 +5.0137405 -2.0388117 -1.3675239 128.0 +4.9278054 -2.0391979 -1.346882 128.0 +4.8732767 -2.051749 -1.3350506 128.0 +4.7698488 -2.0427568 -1.309374 128.0 +4.6826901 -2.0395291 -1.2882285 128.0 +4.585134 -2.0306079 -1.2640623 128.0 +4.4746294 -2.0146091 -1.2361201 128.0 +4.4384222 -2.0311553 -1.2293234 128.0 +4.3653235 -2.0301955 -1.2119539 128.0 +4.3370333 -2.0495007 -1.2074227 128.0 +4.2432342 -2.0371268 -1.1840117 128.0 +4.1375742 -2.0177424 -1.1570764 128.0 +4.0930257 -2.0272019 -1.1477623 128.0 +4.0614882 -2.0427132 -1.1422242 128.0 +3.9618201 -2.0231483 -1.1167994 128.0 +3.9192584 -2.0318322 -1.1079887 128.0 +3.9032917 -2.0540395 -1.1069818 128.0 +3.8726869 -2.068378 -1.1016954 128.0 +3.8224831 -2.0718133 -1.0906192 128.0 +3.8190274 -2.100358 -1.0933883 128.0 +3.7916999 -2.115736 -1.0891088 128.0 +3.7727509 -2.1356249 -1.0873468 128.0 +3.75454 -2.1558428 -1.0858363 128.0 +3.702769 -2.1564388 -1.0742567 128.0 +3.6628006 -2.1633708 -1.0662013 128.0 +3.6494575 -2.1858046 -1.0662013 128.0 +3.6467309 -2.2146859 -1.0694737 128.0 +3.6569736 -2.2517333 -1.076774 128.0 +3.6619718 -2.2859149 -1.0825639 128.0 +3.6576912 -2.3145506 -1.0855846 128.0 +3.5269225 -2.2622414 -1.049587 128.0 +5.2778792 -3.4309947 -1.5971031 128.0 +3.5223336 -2.3207915 -1.0568873 128.0 +3.4822698 -2.3251653 -1.0488318 128.0 +3.4615245 -2.34215 -1.0468179 128.0 +3.4734309 -2.3814025 -1.0551251 128.0 +3.5318832 -2.4534607 -1.0782844 128.0 +3.5064733 -2.4678457 -1.0750118 128.0 +3.4258564 -2.4426866 -1.0541182 128.0 +3.3966811 -2.4534621 -1.049587 128.0 +3.3792198 -2.4725435 -1.0488318 128.0 +3.3243282 -2.4638455 -1.0359935 128.0 +3.2913451 -2.4708347 -1.0302037 128.0 +3.3169563 -2.5220253 -1.0435455 128.0 +3.296818 -2.5387878 -1.0420351 128.0 +3.336129 -2.6018164 -1.0601597 128.0 +3.3406093 -2.6384315 -1.0669565 128.0 +3.3175547 -2.6534395 -1.0646909 128.0 +3.2598443 -2.6402481 -1.0508456 128.0 +3.3027041 -2.708679 -1.0707325 128.0 +3.2845325 -2.7276566 -1.0702289 128.0 +3.2951431 -2.770802 -1.0795431 128.0 +3.2567084 -2.7727759 -1.0722429 128.0 +3.2345018 -2.7882838 -1.0704807 128.0 +3.2012901 -2.7940786 -1.0649426 128.0 +3.1811845 -2.8111057 -1.0639358 128.0 +3.1530561 -2.8208938 -1.0601597 128.0 +3.109863 -2.8168006 -1.0510974 128.0 +3.1096418 -2.851526 -1.0571389 128.0 +3.0197344 -2.8033969 -1.0314623 128.0 +3.0469091 -2.8636248 -1.0473214 128.0 +3.0587311 -2.9102824 -1.0578941 128.0 +3.03036 -2.9189255 -1.0541182 128.0 +2.9971476 -2.9226015 -1.0485801 128.0 +2.9646935 -2.9266598 -1.0432937 128.0 +2.92888 -2.9270105 -1.0367486 128.0 +2.9244733 -2.9586914 -1.0417833 128.0 +2.925873 -2.9966598 -1.0490836 128.0 +2.9188533 -3.0263972 -1.053363 128.0 +2.9028993 -3.0470526 -1.0543699 128.0 +2.8596056 -3.0387321 -1.0450559 128.0 +2.8389297 -3.0540946 -1.0443007 128.0 +2.7991889 -3.0486465 -1.0362452 128.0 +2.75247 -3.0349412 -1.0254208 128.0 +2.6944013 -3.0078042 -1.0100652 128.0 +2.7156608 -3.0692143 -1.0256726 128.0 +2.7076051 -3.098207 -1.0299519 128.0 +2.6910737 -3.1176925 -1.0309589 128.0 +2.6863358 -3.1510837 -1.0367486 128.0 +2.6644568 -3.1645465 -1.0357418 128.0 +2.634469 -3.1681862 -1.0314623 128.0 +2.6149797 -3.1842914 -1.0314623 128.0 +2.5539343 -3.1491668 -1.0143446 128.0 +2.6011188 -3.2478659 -1.0420351 128.0 +2.5577254 -3.2341623 -1.0322175 128.0 +2.5568964 -3.2742021 -1.040273 128.0 +2.5544896 -3.31282 -1.0478249 128.0 +2.4924848 -3.2737641 -1.0299519 128.0 +2.4781663 -3.2967315 -1.0324693 128.0 +2.4578915 -3.3118751 -1.0324693 128.0 +2.4043443 -3.2816179 -1.0178689 128.0 +2.3824618 -3.2939565 -1.0171137 128.0 +2.3655803 -3.3132384 -1.0186241 128.0 +2.3474364 -3.3308551 -1.0196309 128.0 +2.3324819 -3.3531404 -1.0221483 128.0 +2.3189852 -3.3777606 -1.0254208 128.0 +2.3041885 -3.4007387 -1.0281898 128.0 +2.3096411 -3.454232 -1.0405247 128.0 +2.2692125 -3.4392595 -1.0314623 128.0 +2.2274711 -3.4214888 -1.0216448 128.0 +2.2017272 -3.4277637 -1.0193793 128.0 +2.2039683 -3.4779932 -1.0307071 128.0 +2.1579583 -3.4520624 -1.0186241 128.0 +2.1418166 -3.4734757 -1.0211413 128.0 +2.1179485 -3.4824181 -1.0198827 128.0 +2.0925577 -3.488709 -1.0178689 128.0 +2.0814607 -3.5189745 -1.0231552 128.0 +2.0622678 -3.5358598 -1.0244138 128.0 +2.0525966 -3.5694201 -1.0307071 128.0 +2.0363848 -3.5920498 -1.0337279 128.0 +2.0204449 -3.6154594 -1.0370004 128.0 +1.9982227 -3.6277885 -1.0370004 128.0 +1.9463704 -3.5855484 -1.0208896 128.0 +1.9316384 -3.6110768 -1.0249174 128.0 +1.9103475 -3.6245735 -1.0254208 128.0 +1.8925322 -3.6448154 -1.0279381 128.0 +1.874981 -3.6658368 -1.0307071 128.0 +1.856372 -3.685051 -1.0329727 128.0 +1.84319 -3.7154446 -1.0385108 128.0 +1.8156843 -3.7171192 -1.0357418 128.0 +1.7848717 -3.7116191 -1.0309589 128.0 +1.7695187 -3.7382457 -1.03549 128.0 +1.7547234 -3.7665775 -1.0405247 128.0 +1.7473111 -3.8115826 -1.0503422 128.0 +1.7246867 -3.8239965 -1.0508456 128.0 +1.6823479 -3.7920458 -1.0387626 128.0 +1.6640812 -3.8138282 -1.0420351 128.0 +1.6280535 -3.7946184 -1.0337279 128.0 +1.6250548 -3.8526871 -1.0473214 128.0 +1.6058333 -3.8733137 -1.0503422 128.0 +1.2496701 -3.0675225 -0.82126647 128.0 +1.2265078 -3.0643511 -0.81824571 128.0 +1.2299976 -3.1285598 -0.83410478 128.0 +1.4485775 -3.75176 -1.0057857 128.0 +1.4217554 -3.7506235 -1.0030167 128.0 +1.3993903 -3.7610905 -1.0035201 128.0 +1.3865786 -3.7977874 -1.0113238 128.0 +1.3789177 -3.849956 -1.023407 128.0 +1.3616854 -3.876606 -1.0284415 128.0 +1.3514274 -3.9242342 -1.039266 128.0 +1.334444 -3.9535422 -1.0450559 128.0 +1.3071208 -3.9524674 -1.0425385 128.0 +1.284336 -3.9650168 -1.0437971 128.0 +1.2585195 -3.9682102 -1.0425385 128.0 +1.0140206 -3.2669473 -0.84946042 128.0 +0.9964878 -3.2814417 -0.851726 128.0 +0.98102021 -3.3032656 -0.85600543 128.0 +0.96100324 -3.3101521 -0.8562572 128.0 +0.93908906 -3.3104002 -0.85474676 128.0 +0.89781982 -3.2405567 -0.83435655 128.0 +0.82407647 -3.04702 -0.7807377 128.0 +0.81030571 -3.0707335 -0.78577232 128.0 +0 -0 -0 128.0 +1.0304835 -4.1083179 -1.0614184 128.0 +1.0031879 -4.1061025 -1.0591528 128.0 +0.97215021 -4.0877013 -1.0526078 128.0 +0.96188962 -4.1577048 -1.0697255 128.0 +0.93721008 -4.167305 -1.0707325 128.0 +0.91554844 -4.1909413 -1.0755154 128.0 +0.88479525 -4.172812 -1.0692221 128.0 +0.85780954 -4.1715269 -1.0674599 128.0 +0.83068377 -4.1691189 -1.0654461 128.0 +0.72880334 -3.7788267 -0.96072578 128.0 +0.69903415 -3.7480266 -0.95141172 128.0 +0.74092579 -4.1122694 -1.0465662 128.0 +0.71717209 -4.1253195 -1.0488318 128.0 +0.69712603 -4.16114 -1.0571389 128.0 +0.67974997 -4.2159777 -1.0704807 128.0 +0.64526856 -4.1645999 -1.0558803 128.0 +0.62126935 -4.1790104 -1.0586493 128.0 +0.59438699 -4.1741209 -1.0563837 128.0 +0.56366879 -4.1402907 -1.0465662 128.0 +0.54074895 -4.1628656 -1.0516008 128.0 +0.51448274 -4.1603427 -1.0500904 128.0 +0.48668623 -4.1441975 -1.0450559 128.0 +0.45782247 -4.1163263 -1.0370004 128.0 +0.43235421 -4.1171331 -1.036497 128.0 +0.40603596 -4.1091142 -1.0337279 128.0 +0.38001111 -4.1028552 -1.0314623 128.0 +0.35507962 -4.1080027 -1.0322175 128.0 +0.3318046 -4.1342211 -1.0385108 128.0 +0.30757681 -4.1516213 -1.0425385 128.0 +0.28190011 -4.1505337 -1.0417833 128.0 +0.25606912 -4.14639 -1.040273 128.0 +0.23062254 -4.1478829 -1.040273 128.0 +0.20478417 -4.1414871 -1.038259 128.0 +0.1785295 -4.1233277 -1.0332245 128.0 +0.15311781 -4.1214442 -1.0324693 128.0 +0.12839788 -4.1406856 -1.0372522 128.0 +0.10279549 -4.1336555 -1.0352383 128.0 +0.077083834 -4.1158233 -1.0304554 128.0 +0.051803607 -4.1142836 -1.0299519 128.0 +0.026710013 -4.1377506 -1.0359935 128.0 +0.0013291743 -4.1581602 -1.0412799 128.0 +-0.024445087 -4.2035756 -1.0531112 128.0 +-0.050030731 -4.1859274 -1.0485801 128.0 +-0.075348489 -4.1652212 -1.0432937 128.0 +-0.10148814 -4.1888685 -1.049587 128.0 +-0.12689577 -4.1784935 -1.0470697 128.0 +-0.15394098 -4.2163224 -1.0571389 128.0 +-0.18054974 -4.2327032 -1.0616701 128.0 +-0.20807157 -4.2634149 -1.0699773 128.0 +-0.23364429 -4.2514281 -1.0672082 128.0 +-0.25901884 -4.2383227 -1.0641874 128.0 +-0.2857334 -4.2472754 -1.0669565 128.0 +-0.31143484 -4.2406163 -1.0656978 128.0 +-0.33629814 -4.224154 -1.0619218 128.0 +-0.35907063 -4.185369 -1.052356 128.0 +-0.38412496 -4.1763411 -1.050594 128.0 +-0.41937834 -4.2721491 -1.0762706 128.0 +-0.44267315 -4.241581 -1.0689703 128.0 +-0.46465224 -4.2022309 -1.0594045 128.0 +-0.49760708 -4.2608223 -1.0755154 128.0 +-0.51831037 -4.2135029 -1.0639358 128.0 +-0.5470053 -4.2323189 -1.0697255 128.0 +-0.86603391 -6.3934512 -1.6378837 128.0 +-0.90551853 -6.3899336 -1.6383871 128.0 +-0.94513422 -6.3871293 -1.6391423 128.0 +-0.99123865 -6.4261651 -1.6509737 128.0 +-1.0277367 -6.4018059 -1.6461908 128.0 +-1.070819 -6.4182901 -1.6522323 128.0 +-1.1086951 -6.4030161 -1.6499667 128.0 +-1.1486461 -6.3999033 -1.6509737 128.0 +-1.1878935 -6.392735 -1.6509737 128.0 +-1.2238097 -6.3682184 -1.6464425 128.0 +-1.2675717 -6.3843212 -1.6527358 128.0 +-1.3022538 -6.3546166 -1.646946 128.0 +-1.343021 -6.3550286 -1.6492115 128.0 +-1.3801367 -6.3381577 -1.646946 128.0 +-1.4228108 -6.3465686 -1.6514771 128.0 +-1.4623781 -6.340548 -1.6522323 128.0 +-1.493889 -6.3003798 -1.6439252 128.0 +-1.5345802 -6.2995577 -1.6461908 128.0 +-1.573909 -6.2928395 -1.646946 128.0 +-1.6146562 -6.2915006 -1.6492115 128.0 +-1.644364 -6.2477813 -1.6401492 128.0 +-1.6947651 -6.2824259 -1.6522323 128.0 +-1.7317351 -6.2663116 -1.6507219 128.0 +-1.7664634 -6.2425303 -1.6471977 128.0 +-1.8068869 -6.2390108 -1.6492115 128.0 +-1.8476086 -6.2361579 -1.6514771 128.0 +-1.8892047 -6.2358189 -1.6544979 128.0 +-1.9311525 -6.2361279 -1.6577704 128.0 +-1.9682127 -6.2204704 -1.6567636 128.0 +-2.0102119 -6.2202487 -1.660036 128.0 +-2.0534952 -6.2234211 -1.6643155 128.0 +-1.3025745 -3.8672614 -1.0211413 128.0 +-1.3291092 -3.8674338 -1.023407 128.0 +-2.1558578 -6.1507754 -1.6550014 128.0 +-2.1896496 -6.1264949 -1.6519806 128.0 +-2.233825 -6.1311312 -1.6570152 128.0 +-2.274771 -6.1263824 -1.6595325 128.0 +-2.3116341 -6.1104989 -1.6590291 128.0 +-2.3431692 -6.0808473 -1.6547496 128.0 +-2.3878591 -6.0852752 -1.660036 128.0 +-2.4258707 -6.0723062 -1.6605395 128.0 +-2.4645419 -6.0608935 -1.6615463 128.0 +-2.5046444 -6.0528111 -1.6635603 128.0 +-2.5451159 -6.0453572 -1.6658258 128.0 +-2.5810187 -6.026958 -1.6650707 128.0 +-1.3428726 -3.0828528 -0.83435655 128.0 +-1.3641143 -3.0798647 -0.83586693 128.0 +-2.662519 -5.9140053 -1.6466942 128.0 +-2.7217078 -5.9477201 -1.6610429 128.0 +-2.7365248 -5.884397 -1.6477011 128.0 +-1.6054835 -3.3972301 -0.93706298 128.0 +-1.6212729 -3.3768451 -0.93404222 128.0 +-1.6394175 -3.3616142 -0.93253183 128.0 +-1.6570069 -3.3454206 -0.93076974 128.0 +-1.6796767 -3.3395135 -0.93202835 128.0 +-1.7049768 -3.3386259 -0.93479741 128.0 +-1.7258754 -3.3289607 -0.93504918 128.0 +-1.7971886 -3.4150918 -0.96349484 128.0 +-2.0857008 -3.9051278 -1.1112612 128.0 +-3.1277146 -5.7710366 -1.6670845 128.0 +-3.1649313 -5.7551289 -1.6680914 128.0 +-3.1883969 -5.7144713 -1.6617981 128.0 +-3.2353172 -5.715857 -1.6680914 128.0 +-3.2698464 -5.6950583 -1.6678396 128.0 +-3.3091118 -5.682415 -1.6701052 128.0 +-3.342932 -5.660337 -1.6696018 128.0 +-3.3741198 -5.6339064 -1.6678396 128.0 +-3.4181688 -5.6288147 -1.6726226 128.0 +-3.4516275 -5.6060872 -1.6721191 128.0 +-3.4869857 -5.5864449 -1.6726226 128.0 +-3.5341334 -5.5853906 -1.6789159 128.0 +-3.5557997 -5.5440483 -1.6728743 128.0 +-3.6061008 -5.5472808 -1.680678 128.0 +-3.6528478 -5.5444465 -1.6867195 128.0 +-3.686799 -5.5219288 -1.6867195 128.0 +-3.695667 -5.4623294 -1.6751399 128.0 +-3.7367742 -5.450726 -1.6786641 128.0 +-2.1354682 -3.0740268 -0.93328702 128.0 +-2.1520622 -3.0577002 -0.93228012 128.0 +-2.1719069 -3.0460138 -0.93278354 128.0 +-3.8881145 -5.3832707 -1.6869713 128.0 +-3.9199295 -5.3577499 -1.6864678 128.0 +-3.9590683 -5.3421507 -1.6892369 128.0 +-3.9865441 -5.310791 -1.6869713 128.0 +-3.9997275 -5.2608056 -1.6786641 128.0 +-4.0396075 -5.2461333 -1.6819366 128.0 +-4.0794573 -5.2311697 -1.6852092 128.0 +-4.1138773 -5.2090783 -1.6862161 128.0 +-4.1572461 -5.1980991 -1.690999 128.0 +-4.189672 -5.173245 -1.6912507 128.0 +-4.2293129 -5.1571693 -1.6945232 128.0 +-4.2478943 -5.1154852 -1.6892369 128.0 +-4.2723517 -5.0811753 -1.6864678 128.0 +-4.3272872 -5.0828691 -1.6960336 128.0 +-4.3407021 -5.0356956 -1.6889851 128.0 +-4.3689737 -5.0060496 -1.6879783 128.0 +-4.3989673 -4.9784226 -1.6877265 128.0 +-4.3913631 -4.9087787 -1.6728743 128.0 +-4.4207506 -4.8810244 -1.6726226 128.0 +-4.4506168 -4.853807 -1.6726226 128.0 +-4.43752 -4.7803006 -1.65626 128.0 +-4.4999046 -4.7882466 -1.6688466 128.0 +-4.5352035 -4.7668562 -1.6711122 128.0 +-4.5636954 -4.7382421 -1.6708604 128.0 +-4.60079 -4.7184658 -1.6738813 128.0 +-4.6575289 -4.7183881 -1.6842022 128.0 +-4.6898131 -4.6931443 -1.6854609 128.0 +-4.7309093 -4.6765275 -1.6899921 128.0 +-4.7574377 -4.6453824 -1.6892369 128.0 +-4.7921209 -4.6221514 -1.6915025 128.0 +-4.8161874 -4.5886545 -1.6899921 128.0 +-4.8597565 -4.5736094 -1.6955302 128.0 +-4.8593764 -4.5173454 -1.6854609 128.0 +-4.9076748 -4.5064278 -1.6927611 128.0 +-4.9316492 -4.4729786 -1.6915025 128.0 +-4.9690933 -4.4516759 -1.6950268 128.0 +-4.9774714 -4.4044261 -1.6884817 128.0 +-4.9869146 -4.3585162 -1.6824402 128.0 +-5.0120988 -4.32657 -1.6819366 128.0 +-5.040761 -4.2976189 -1.6826918 128.0 +-5.0655556 -4.2653613 -1.6821884 128.0 +-5.0521955 -4.2014003 -1.6688466 128.0 +-5.086854 -4.1776929 -1.6718674 128.0 +-5.1116405 -4.145792 -1.6716157 128.0 +-5.105258 -4.0889378 -1.6610429 128.0 +-5.124938 -4.0533323 -1.6592808 128.0 +-5.1573396 -4.0277677 -1.6617981 128.0 +-5.1781244 -3.9930916 -1.6605395 128.0 +-5.2210073 -3.975316 -1.666581 128.0 +-5.2429805 -3.9414608 -1.6658258 128.0 +-5.2717285 -3.9126775 -1.6673362 128.0 +-5.2769022 -3.8665276 -1.6612947 128.0 +-5.3240509 -3.8510942 -1.6688466 128.0 +-5.36412 -3.8301651 -1.6741329 128.0 +-5.3716998 -3.7860274 -1.6690984 128.0 +-5.4099236 -3.7634978 -1.6738813 128.0 +-5.4193516 -3.7209191 -1.6696018 128.0 +-5.4380751 -3.6848817 -1.6683432 128.0 +-5.4790854 -3.6638193 -1.6741329 128.0 +-5.4901543 -3.6226685 -1.6706088 128.0 +-5.5236335 -3.5963066 -1.6741329 128.0 +-5.5203547 -3.5461299 -1.6663293 128.0 +-5.5550885 -3.5204806 -1.670357 128.0 +-5.54212 -3.4647796 -1.6597843 128.0 +-5.5624514 -3.4302006 -1.6595325 128.0 +-5.5850477 -3.3970113 -1.660036 128.0 +-5.6082759 -3.364172 -1.6607912 128.0 +-5.6371417 -3.3346248 -1.6633085 128.0 +-5.6574965 -3.299973 -1.6633085 128.0 +-5.6700883 -3.2608545 -1.6610429 128.0 +-5.6925154 -3.2274342 -1.6617981 128.0 +-5.7020736 -3.1867783 -1.6587774 128.0 +-5.7461023 -3.1652744 -1.6660776 128.0 +-5.7654161 -3.1299574 -1.6660776 128.0 +-5.7990193 -3.1022842 -1.670357 128.0 +-5.8342113 -3.0752189 -1.6751399 128.0 +-5.857265 -3.0415933 -1.6763985 128.0 +-5.8904648 -3.0130899 -1.680678 128.0 +-5.9287205 -2.9869063 -1.6864678 128.0 +-5.9564724 -2.955204 -1.6892369 128.0 +-5.9588408 -2.9109528 -1.6847057 128.0 +-5.9992661 -2.8852425 -1.6912507 128.0 +-6.0247288 -2.8521047 -1.6935163 128.0 +-6.0693097 -2.8277559 -1.7013199 128.0 +-6.0707111 -2.7832012 -1.6967888 128.0 +-6.0903211 -2.7470937 -1.697544 128.0 +-6.1106005 -2.7112427 -1.6985509 128.0 +-6.1351047 -2.6771817 -1.7008165 128.0 +-6.1878796 -2.6551356 -1.7111375 128.0 +-6.1897879 -2.6110983 -1.7071098 128.0 +-6.2289357 -2.5827081 -1.7136549 128.0 +-6.2625904 -2.5517442 -1.7186894 128.0 +-6.2978959 -2.521184 -1.7242275 128.0 +-6.3402662 -2.4931197 -1.7317795 128.0 +-6.3608613 -2.4562616 -1.7332898 128.0 +-6.4102001 -2.4302249 -1.7428557 128.0 +-6.4222698 -2.3898342 -1.7421005 128.0 +-6.4631758 -2.3600111 -1.7494007 128.0 +-6.4893789 -2.3245528 -1.7526733 128.0 +-6.490737 -2.2801993 -1.749149 128.0 +-6.5210762 -2.2460039 -1.7536801 128.0 +-6.5558248 -2.2130697 -1.75947 128.0 +-6.5959263 -2.181617 -1.7667702 128.0 +-6.5079141 -2.1082892 -1.7390797 128.0 +-6.5142703 -2.0662692 -1.7373176 128.0 +-6.5443873 -2.0317123 -1.7421005 128.0 +-6.6326632 -2.0145867 -1.7627425 128.0 +-6.7219 -1.9967291 -1.7836362 128.0 +-6.7916474 -1.9721829 -1.7992436 128.0 +-6.9153438 -1.9621803 -1.8294513 128.0 +-7.0671482 -1.9584882 -1.8672111 128.0 +-7.2462544 -1.9603363 -1.912271 128.0 +-7.3535914 -1.9410359 -1.9379476 128.0 +-7.4103498 -1.9074609 -1.9500308 128.0 +-7.4435043 -1.8673736 -1.9558206 128.0 +-7.466104 -1.8244233 -1.9588413 128.0 +-7.4884558 -1.7812659 -1.9618621 128.0 +-7.4671869 -1.7278643 -1.9533032 128.0 +-7.5059743 -1.6883872 -1.9608552 128.0 +-7.5218654 -1.6435393 -1.9623656 128.0 +-7.5053 -1.5917318 -1.9553171 128.0 +-7.5225091 -1.5472103 -1.9573309 128.0 +-7.5290136 -1.5004563 -1.9565758 128.0 +-7.5513821 -1.4567982 -1.9601001 128.0 +-7.5744495 -1.4130994 -1.963876 128.0 +-7.5582137 -1.3621327 -1.9573309 128.0 +-7.571197 -1.31656 -1.9585897 128.0 +-7.5915408 -1.2721592 -1.9618621 128.0 +-7.6030254 -1.226171 -1.962869 128.0 +-7.5845838 -1.1754932 -1.9560723 128.0 +-7.6213288 -1.1333475 -1.963876 128.0 +-7.6166425 -1.0849242 -1.9608552 128.0 +-7.6001415 -1.0350335 -1.9548136 128.0 +-7.6159463 -0.98962802 -1.9573309 128.0 +-7.6093893 -0.94133353 -1.9540584 128.0 +-7.583303 -0.89089739 -1.9457513 128.0 +-7.637681 -0.84981102 -1.9585897 128.0 +-7.6437144 -0.80303228 -1.9588413 128.0 +-7.6571655 -0.75697356 -1.9611069 128.0 +-7.6337199 -0.70738471 -1.9538068 128.0 +-7.6543078 -0.66195011 -1.9580861 128.0 +-7.6524372 -0.6145066 -1.9565758 128.0 +-7.6560636 -0.56754059 -1.9565758 128.0 +-7.6680923 -0.52114421 -1.9588413 128.0 +-7.6556902 -0.47312793 -1.9548136 128.0 +-7.6613479 -0.42630607 -1.9555688 128.0 +-7.6589866 -0.37904945 -1.9543102 128.0 +-7.6495657 -0.33154419 -1.9512894 128.0 +-7.6620941 -0.28499734 -1.9540584 128.0 +-7.6733718 -0.23827912 -1.9565758 128.0 +-7.278903 0.53464299 -1.9479595 128.0 +-7.2889504 0.58036971 -1.9516397 128.0 +-7.2496843 0.62202555 -1.9419137 128.0 +-7.2457314 0.66649705 -1.9419137 128.0 +-7.2616696 0.71292639 -1.9474338 128.0 +-7.2773104 0.75957632 -1.9529539 128.0 +-7.2456613 0.80124116 -1.9455938 128.0 +-7.2597747 0.84792626 -1.9508511 128.0 +-7.2707143 0.89446074 -1.9553198 128.0 +-7.2784853 0.94078982 -1.9589999 128.0 +-7.2544103 0.98296773 -1.9540055 128.0 +-7.2520633 1.0280037 -1.9550569 128.0 +-7.2446647 1.0723407 -1.954794 128.0 +-7.198854 1.1107346 -1.9440167 128.0 +-7.1709456 1.1515162 -1.9382336 128.0 +-7.1551805 1.1940639 -1.9358679 128.0 +-7.1676826 1.2414057 -1.941388 128.0 +-7.1580315 1.2850212 -1.9408623 128.0 +-7.1604462 1.3308588 -1.9437538 128.0 +-7.1246691 1.3694835 -1.9361308 128.0 +-7.1511459 1.420133 -1.9458567 128.0 +-7.1422973 1.4639848 -1.9458567 128.0 +-7.1294045 1.5069829 -1.9448053 128.0 +-7.1068258 1.5478231 -1.9411252 128.0 +-7.1075501 1.5937245 -1.9440167 128.0 +-7.0769553 1.632531 -1.9382336 128.0 +-7.0724373 1.6772604 -1.9398109 128.0 +-7.0460773 1.7167392 -1.9353422 128.0 +-7.0223079 1.7566607 -1.9316621 128.0 +-7.0160694 1.8009158 -1.9329764 128.0 +-7.009552 1.8451606 -1.9342908 128.0 +-6.9897151 1.8858722 -1.9319249 128.0 +-6.9659233 1.9253814 -1.9285077 128.0 +-6.9484081 1.9665099 -1.9269305 128.0 +-6.9158235 2.0031986 -1.9211476 128.0 +-6.9709291 2.0656171 -1.9403366 128.0 +-6.941504 2.103312 -1.935605 128.0 +-6.9422913 2.1501486 -1.939548 128.0 +-6.9032125 2.1845505 -1.9321878 128.0 +-6.8905964 2.2271636 -1.9324507 128.0 +-6.9189453 2.2833171 -1.9445424 128.0 +-6.9093766 2.3272686 -1.9458567 128.0 +-6.861208 2.3580117 -1.9361308 128.0 +-6.8429685 2.3987896 -1.9350793 128.0 +-6.8281207 2.4407322 -1.9350793 128.0 +-6.8275199 2.4878705 -1.9392852 128.0 +-6.7949419 2.5233319 -1.9342908 128.0 +-6.7730145 2.5625863 -1.9324507 128.0 +-6.7445602 2.5992372 -1.9287705 128.0 +-6.7159114 2.6356354 -1.9250906 128.0 +-6.7148433 2.6828818 -1.9295592 128.0 +-6.6982551 2.7240329 -1.9295592 128.0 +-6.6858721 2.7669268 -1.9308735 128.0 +-6.6732144 2.8097713 -1.9321878 128.0 +-6.6487536 2.8476243 -1.9300849 128.0 +-6.6081586 2.8783455 -1.9232504 128.0 +-6.5930195 2.9200108 -1.9240391 128.0 +-6.5925727 2.9683349 -1.9292964 128.0 +-6.5768666 3.0099354 -1.9300849 128.0 +-6.5486517 3.0457563 -1.9271934 128.0 +-6.5350738 3.0883551 -1.9287705 128.0 +-6.527307 3.1338258 -1.9321878 128.0 +-6.4897456 3.1649334 -1.9266677 128.0 +-6.4494553 3.1944132 -1.920359 128.0 +-6.4366283 3.2373955 -1.9224619 128.0 +-6.3994589 3.26805 -1.9172046 128.0 +-6.4092631 3.3228023 -1.9264048 128.0 +-6.3597269 3.3467846 -1.9174675 128.0 +-6.3399224 3.3861988 -1.9177303 128.0 +-6.319026 3.4250362 -1.9177303 128.0 +-6.3097258 3.4702559 -1.9214104 128.0 +-6.2967386 3.5136089 -1.9240391 128.0 +-6.2800984 3.5550315 -1.9256163 128.0 +-6.2364144 3.5810037 -1.9187818 128.0 +-6.2068214 3.6148307 -1.916416 128.0 +-6.1936617 3.658246 -1.9193076 128.0 +-6.16365 3.6917176 -1.9169418 128.0 +-6.102951 3.706423 -1.9048501 128.0 +-6.0858445 3.7473423 -1.9066901 128.0 +-6.1052923 3.8111885 -1.920359 128.0 +-6.0067916 3.8011005 -1.8961756 128.0 +-6.0523791 3.8821754 -1.9185189 128.0 +-6.0171208 3.9118748 -1.9148389 128.0 +-5.9744763 3.9365089 -1.908793 128.0 +-5.9582329 3.9784527 -1.9114217 128.0 +-5.9448957 4.0225081 -1.9151018 128.0 +-0 0 -0 128.0 +-5.8887472 4.0907536 -1.9129988 128.0 +-5.8564358 4.1218104 -1.9106331 128.0 +-5.8365331 4.1615891 -1.9124731 128.0 +-5.8171444 4.2018437 -1.9145761 128.0 +-5.7717886 4.2232113 -1.9080044 128.0 +-5.7139902 4.2349868 -1.897227 128.0 +-5.7311015 4.3024125 -1.9119474 128.0 +-5.6976833 4.3322401 -1.9095817 128.0 +-5.7214403 4.4059796 -1.9269305 128.0 +-5.6433301 4.4012399 -1.9093188 128.0 +-5.6063766 4.4280081 -1.9059016 128.0 +-5.6084828 4.4858327 -1.9161532 128.0 +-5.5823522 4.5213761 -1.9166789 128.0 +-5.5597258 4.5598273 -1.9185189 128.0 +-5.5160575 4.5809083 -1.9129988 128.0 +-5.4856305 4.6128044 -1.9122102 128.0 +-5.4535508 4.643249 -1.9108959 128.0 +-5.3913469 4.6476398 -1.8988042 128.0 +-5.3867121 4.7015734 -1.9074787 128.0 +-5.3476419 4.7255912 -1.9037986 128.0 +-5.2933822 4.7357945 -1.8945985 128.0 +-5.2670841 4.7707763 -1.8956499 128.0 +-5.2654414 4.8284407 -1.9059016 128.0 +-5.2145057 4.8409615 -1.8980156 128.0 +-5.2079015 4.8946748 -1.9066901 128.0 +-5.1735768 4.9225469 -1.905113 128.0 +-5.1099257 4.9220643 -1.8924955 128.0 +-5.100348 4.973537 -1.9003814 128.0 +-5.0663028 5.001349 -1.899067 128.0 +-5.0191431 5.0159698 -1.8927584 128.0 +-5.0215006 5.0803013 -1.9056387 128.0 +-4.9895601 5.1103268 -1.9053758 128.0 +-4.955431 5.1380672 -1.9043244 128.0 +-4.9364538 5.1816516 -1.9093188 128.0 +-4.8939891 5.2005997 -1.905113 128.0 +-4.8619866 5.2305307 -1.905113 128.0 +-4.7913079 5.218327 -1.8896041 128.0 +-4.7591987 5.2476277 -1.8896041 128.0 +-4.7339907 5.2846375 -1.8924955 128.0 +-4.7577281 5.377182 -1.9156275 128.0 +-4.7062359 5.3852024 -1.9080044 128.0 +-4.6642799 5.4037509 -1.9043244 128.0 +-4.6285319 5.4293313 -1.9032729 128.0 +-4.5994802 5.4627967 -1.905113 128.0 +-4.5819101 5.5102067 -1.9119474 128.0 +-4.5455651 5.535234 -1.9108959 128.0 +-4.515162 5.5675178 -1.9124731 128.0 +-4.4857392 5.6011429 -1.9145761 128.0 +-4.4530821 5.6308322 -1.9153646 128.0 +-4.4297285 5.6724997 -1.920359 128.0 +-4.3889489 5.6919317 -1.9177303 128.0 +-4.3434234 5.7049351 -1.9129988 128.0 +-4.3141327 5.7391915 -1.9156275 128.0 +-4.2719383 5.7562561 -1.9124731 128.0 +-4.2291265 5.7722411 -1.9090558 128.0 +-4.2213297 5.8363934 -1.9219362 128.0 +-4.1815152 5.8566875 -1.9200962 128.0 +-4.134387 5.8664598 -1.9148389 128.0 +-4.0966606 5.8893414 -1.9140503 128.0 +-4.0560799 5.9080029 -1.9119474 128.0 +-4.0267863 5.9431643 -1.9153646 128.0 +-3.9982862 5.9797926 -1.9193076 128.0 +-3.9519577 5.9897151 -1.9145761 128.0 +-3.9388132 6.0502415 -1.9264048 128.0 +-3.8995304 6.0710478 -1.9253534 128.0 +-3.859108 6.0899706 -1.9237761 128.0 +-3.8068402 6.0898066 -1.9161532 128.0 +-3.7850966 6.1385117 -1.924302 128.0 +-3.7498662 6.1657434 -1.9256163 128.0 +-3.7179172 6.198566 -1.9287705 128.0 +-3.6734295 6.210465 -1.9253534 128.0 +-3.6469166 6.252892 -1.9316621 128.0 +-3.6080003 6.2743149 -1.9313992 128.0 +-3.5851316 6.3240361 -1.9400737 128.0 +-3.5406144 6.3358068 -1.9369193 128.0 +-3.507256 6.3675547 -1.9400737 128.0 +-3.4561553 6.3669062 -1.9332392 128.0 +-3.4174786 6.388844 -1.9335021 128.0 +-3.381361 6.415668 -1.9353422 128.0 +-3.3463764 6.4448586 -1.9379708 128.0 +-3.299741 6.4515252 -1.9337649 128.0 +-3.2635646 6.4785447 -1.9358679 128.0 +-3.2340388 6.5191927 -1.9421766 128.0 +-3.1812773 6.5129037 -1.9342908 128.0 +-3.1454349 6.540997 -1.9369193 128.0 +-3.1056535 6.5610461 -1.9371822 128.0 +-3.06493 6.5791035 -1.9369193 128.0 +-3.0160632 6.5793662 -1.9313992 128.0 +-2.9859462 6.6206174 -1.9382336 128.0 +-2.9448755 6.6379323 -1.9379708 128.0 +-2.9118044 6.6735644 -1.943228 128.0 +-2.864717 6.6771178 -1.9390223 128.0 +-2.8296902 6.7087941 -1.943228 128.0 +-2.7881033 6.7251391 -1.9429651 128.0 +-2.7424195 6.7313972 -1.9398109 128.0 +-2.705724 6.7597432 -1.943228 128.0 +-2.6716068 6.7950754 -1.9487482 128.0 +-2.634726 6.8239422 -1.9524282 128.0 +-2.5856266 6.821033 -1.9469081 128.0 +-2.5528052 6.8611865 -1.9540055 128.0 +-2.4947817 6.8332152 -1.941388 128.0 +-2.4508557 6.8429437 -1.9398109 128.0 +-2.4155338 6.8769708 -1.945331 128.0 +-2.3798862 6.910821 -1.9508511 128.0 +-2.3318861 6.9088378 -1.9461195 128.0 +-2.2840002 6.9065266 -1.941388 128.0 +-2.2493057 6.9442768 -1.9482224 128.0 +-2.2084033 6.9634662 -1.9497997 128.0 +-2.1659205 6.977807 -1.9500625 128.0 +-2.1157792 6.9669609 -1.943228 128.0 +-2.0743635 6.984437 -1.9445424 128.0 +-2.0341575 7.0062995 -1.947171 128.0 +-1.9916557 7.0205054 -1.9476967 128.0 +-1.9544631 7.0539804 -1.9537426 128.0 +-1.9129063 7.07236 -1.9555826 128.0 +-1.8591411 7.0447807 -1.9445424 128.0 +-1.8146787 7.0513835 -1.943228 128.0 +-1.7734892 7.0708084 -1.9455938 128.0 +-1.7238917 7.0562501 -1.9384965 128.0 +-1.6957321 7.1305256 -1.9563712 128.0 +-1.6460806 7.1154151 -1.9492739 128.0 +-1.6083134 7.1517396 -1.956634 128.0 +-1.557405 7.1294236 -1.9476967 128.0 +-1.5204295 7.1709375 -1.956634 128.0 +-1.4750415 7.1735158 -1.954794 128.0 +-1.4247816 7.1512051 -1.9461195 128.0 +-1.3803281 7.1569705 -1.945331 128.0 +-1.3482299 7.2288551 -1.9629427 128.0 +-1.3047037 7.2417393 -1.9642571 128.0 +-1.260905 7.2534108 -1.9653085 128.0 +-1.2109604 7.2286568 -1.9563712 128.0 +-1.1698052 7.2559547 -1.9618913 128.0 +-1.1218673 7.241066 -1.9558455 128.0 +-1.0730226 7.2182279 -1.9476967 128.0 +-1.0348258 7.2676606 -1.9595256 128.0 +-0.98735297 7.252841 -1.9537426 128.0 +-0.94494194 7.2750282 -1.9582112 128.0 +-0.90111315 7.2873926 -1.9600513 128.0 +-0.85447121 7.276494 -1.9555826 128.0 +-0.80533475 7.2413244 -1.9445424 128.0 +-0.76461005 7.2816339 -1.9542683 128.0 +-0.72029531 7.290029 -1.9553198 128.0 +-0.67404097 7.2779789 -1.9508511 128.0 +-0.63044947 7.2944741 -1.9542683 128.0 +-0.58452415 7.2837787 -1.9503254 128.0 +-0.54088759 7.3016615 -1.9542683 128.0 +-0.49946666 7.3548994 -1.9679371 128.0 +-0.45326084 7.3404913 -1.9632056 128.0 +-0.40709046 7.3229041 -1.9576855 128.0 +-0.36139047 7.3098454 -1.9534796 128.0 +-0.31736282 7.3312039 -1.958737 128.0 +-0.27162457 7.3127656 -1.9532168 128.0 +-0.22722505 7.3297243 -1.9574226 128.0 +-0.18210347 7.3251934 -1.9558455 128.0 +-0.13695653 7.3155618 -1.9529539 128.0 +-0.092246316 7.3307357 -1.9568969 128.0 +-0.047136612 7.3109026 -1.9513768 128.0 +-0.0022773135 7.3139486 -1.9521654 128.0 +0.042831186 7.3524175 -1.9626799 128.0 +0.087791964 7.3394747 -1.9592627 128.0 +0.13215522 7.3021402 -1.9492739 128.0 +0.17787552 7.338809 -1.9595256 128.0 +0.22296116 7.3395081 -1.9600513 128.0 +0.26781452 7.3331809 -1.958737 128.0 +0.31189683 7.3101931 -1.9529539 128.0 +0.35712302 7.3158507 -1.9550569 128.0 +0.40258971 7.3241191 -1.9579483 128.0 +0.44893849 7.3446236 -1.9642571 128.0 +0.49074954 7.2935982 -1.9511139 128.0 +0.53655541 7.3048835 -1.9550569 128.0 +0.57967913 7.2802944 -1.9492739 128.0 +0.62508297 7.2852521 -1.9516397 128.0 +0.66844469 7.2668681 -1.9476967 128.0 +0.71368176 7.2693515 -1.9495368 128.0 +0.75937569 7.2753911 -1.9524282 128.0 +0.79986054 7.2331948 -1.9421766 128.0 +0.84927124 7.2712741 -1.9540055 128.0 +0.89434278 7.2697568 -1.9550569 128.0 +0.94066596 7.2775283 -1.958737 128.0 +0.98802608 7.291697 -1.9642571 128.0 +1.0270548 7.2453761 -1.9532168 128.0 +1.0676737 7.2131691 -1.9461195 128.0 +1.1138275 7.2188778 -1.9495368 128.0 +1.1579475 7.2109551 -1.9492739 128.0 +1.2058276 7.2256021 -1.9553198 128.0 +1.2473387 7.2019062 -1.9508511 128.0 +1.2935529 7.2055125 -1.9540055 128.0 +1.3361526 7.1889029 -1.9516397 128.0 +1.3835187 7.1976233 -1.9563712 128.0 +1.4282206 7.1918378 -1.9571598 128.0 +1.4694138 7.1687617 -1.9532168 128.0 +1.5103775 7.1454515 -1.9492739 128.0 +1.5539873 7.1351066 -1.9490111 128.0 +1.596682 7.1207299 -1.9476967 128.0 +1.6355693 7.0901165 -1.9419137 128.0 +1.6772604 7.0724373 -1.9398109 128.0 +1.7192532 7.0563884 -1.9382336 128.0 +1.7615808 7.0419626 -1.9371822 128.0 +1.8114772 7.0571876 -1.9445424 128.0 +1.854008 7.0431404 -1.9437538 128.0 +1.8946741 7.0223169 -1.9411252 128.0 +1.9341259 6.9975405 -1.937445 128.0 +1.9830722 7.0068927 -1.9434909 128.0 +2.0246854 6.9899592 -1.9421766 128.0 +2.0721993 6.9931302 -1.9466453 128.0 +2.1117101 6.9692035 -1.9434909 128.0 +2.1598589 6.9736257 -1.9484853 128.0 +2.2034814 6.9630013 -1.9492739 128.0 +2.2440858 6.9429235 -1.9474338 128.0 +2.2772667 6.9006219 -1.9392852 128.0 +2.3229547 6.8965764 -1.9421766 128.0 +2.3611491 6.8703318 -1.9387594 128.0 +2.403899 6.8575358 -1.9392852 128.0 +2.4443061 6.8381143 -1.9379708 128.0 +2.4815915 6.810297 -1.9342908 128.0 +2.5270281 6.8048906 -1.9371822 128.0 +2.5622447 6.7721124 -1.9321878 128.0 +2.608609 6.7688665 -1.9358679 128.0 +2.6416299 6.7311788 -1.9295592 128.0 +2.6853888 6.7211146 -1.9313992 128.0 +2.7243965 6.6991487 -1.9298221 128.0 +2.763974 6.6787405 -1.9287705 128.0 +2.8071494 6.6669903 -1.9303478 128.0 +2.8533244 6.662056 -1.9340279 128.0 +2.8856688 6.6249642 -1.9282448 128.0 +2.9411168 6.6406536 -1.9382336 128.0 +2.9687312 6.593452 -1.9295592 128.0 +3.0035088 6.5628304 -1.9258791 128.0 +3.0473843 6.5521507 -1.9282448 128.0 +3.0920665 6.5429239 -1.9311364 128.0 +3.1363323 6.5325255 -1.9337649 128.0 +3.1678948 6.4958158 -1.9285077 128.0 +3.2016954 6.4641523 -1.9248277 128.0 +3.2439005 6.4495564 -1.9264048 128.0 +3.276829 6.4166427 -1.9224619 128.0 +3.3205812 6.4049807 -1.9250906 128.0 +3.3607178 6.3861928 -1.9256163 128.0 +3.3893816 6.3458796 -1.9195704 128.0 +3.4167578 6.3037586 -1.9129988 128.0 +3.456768 6.2852111 -1.9137874 128.0 +3.4995008 6.2714648 -1.9161532 128.0 +3.5369649 6.2481952 -1.9156275 128.0 +3.5795617 6.2339048 -1.9179932 128.0 +3.6109452 6.2001524 -1.9143132 128.0 +3.64254 6.1670804 -1.9108959 128.0 +3.6902299 6.1611671 -1.9161532 128.0 +3.7249589 6.1334605 -1.9145761 128.0 +3.765559 6.1154184 -1.9161532 128.0 +3.8244755 6.1265697 -1.9271934 128.0 +3.8341284 6.0589662 -1.9129988 128.0 +3.867065 6.0288301 -1.9108959 128.0 +3.9039843 6.0049887 -1.9108959 128.0 +3.9200487 5.9495034 -1.9006443 128.0 +3.9763091 5.9550238 -1.9103702 128.0 +4.0295391 5.9552827 -1.9185189 128.0 +4.0660043 5.9304457 -1.9185189 128.0 +4.1072712 5.9125166 -1.9208847 128.0 +4.1273646 5.864325 -1.9132617 128.0 +4.1475825 5.8168955 -1.9059016 128.0 +4.1628532 5.7631836 -1.8964385 128.0 +4.1969976 5.7359753 -1.8959128 128.0 +4.2401586 5.7209654 -1.8995929 128.0 +4.2803965 5.7017841 -1.9019586 128.0 +4.3094602 5.6677337 -1.89933 128.0 +4.3447447 5.6419487 -1.8995929 128.0 +4.3656311 5.5976872 -1.8935469 128.0 +4.3933163 5.5624671 -1.8906555 128.0 +4.4189253 5.5248585 -1.8869754 128.0 +4.4545641 5.4998894 -1.887764 128.0 +4.4845552 5.4679775 -1.8861868 128.0 +4.5093899 5.4299679 -1.8825067 128.0 +4.5680871 5.4324689 -1.8932841 128.0 +4.5969548 5.3991957 -1.8914441 128.0 +4.622436 5.3621197 -1.8882897 128.0 +4.6558852 5.334383 -1.8885525 128.0 +4.6904454 5.3078833 -1.8893412 128.0 +4.7242126 5.2804413 -1.8898669 128.0 +4.7506933 5.2449198 -1.8875011 128.0 +4.7716985 5.2035842 -1.8830324 128.0 +4.8153553 5.1869335 -1.887764 128.0 +4.8497348 5.1601009 -1.8888154 128.0 +4.8819704 5.1309452 -1.8890783 128.0 +4.9213948 5.109231 -1.8922327 128.0 +4.9492836 5.0754843 -1.8909184 128.0 +4.9884682 5.0532589 -1.8940727 128.0 +5.027566 5.0307431 -1.897227 128.0 +5.0343184 4.9760647 -1.8880268 128.0 +5.0668278 4.947103 -1.8888154 128.0 +5.1123681 4.9306531 -1.8945985 128.0 +5.1418271 4.8985257 -1.8943356 128.0 +5.1331358 4.8305235 -1.8798782 128.0 +5.1796417 4.8146987 -1.8861868 128.0 +5.2062435 4.7802167 -1.8851354 128.0 +5.2497721 4.7611432 -1.8903927 128.0 +5.2817621 4.7314162 -1.8914441 128.0 +5.3099718 4.6982794 -1.8911812 128.0 +5.3437858 4.670053 -1.8930212 128.0 +5.3686881 4.6340246 -1.8917069 128.0 +5.3977551 4.6016216 -1.8919698 128.0 +5.4295793 4.5715218 -1.8932841 128.0 +5.4575272 4.5381203 -1.8932841 128.0 +5.4912357 4.5094457 -1.8953871 128.0 +5.4985662 4.4592619 -1.8882897 128.0 +5.5664964 4.4580011 -1.9024843 128.0 +5.5876904 4.4189749 -1.9003814 128.0 +5.6017704 4.3745131 -1.8959128 128.0 +5.6376762 4.3471274 -1.899067 128.0 +5.6680827 4.3153753 -1.9003814 128.0 +5.6851983 4.27356 -1.897227 128.0 +5.7058892 4.2345715 -1.8953871 128.0 +5.7255378 4.1949205 -1.8932841 128.0 +5.741787 4.1529264 -1.8901298 128.0 +5.771873 4.1209803 -1.8917069 128.0 +5.8167686 4.0993791 -1.8982785 128.0 +5.8204246 4.0487385 -1.8911812 128.0 +5.8539085 4.0189543 -1.8940727 128.0 +5.8984289 3.9964867 -1.9006443 128.0 +5.9244442 3.9612916 -1.90117 128.0 +5.9945478 3.9551451 -1.9161532 128.0 +5.961288 3.8809235 -1.8974899 128.0 +5.976058 3.8385384 -1.8945985 128.0 +5.9693408 3.7826943 -1.8848726 128.0 +6.0578961 3.7868998 -1.9059016 128.0 +6.0276308 3.7167504 -1.8888154 128.0 +6.0569186 3.6837053 -1.8909184 128.0 +6.0868545 3.6509368 -1.8932841 128.0 +6.1307354 3.6262875 -1.9001186 128.0 +6.1437016 3.5832562 -1.897227 128.0 +6.1722646 3.5493383 -1.89933 128.0 +6.1972842 3.5133021 -1.9003814 128.0 +6.2103014 3.4705048 -1.8977528 128.0 +6.2272534 3.430007 -1.8964385 128.0 +6.2549663 3.3954141 -1.8985413 128.0 +6.2858925 3.3624296 -1.9016957 128.0 +6.3098202 3.3255959 -1.9027472 128.0 +6.3164053 3.2797053 -1.8985413 128.0 +6.3389874 3.2422044 -1.89933 128.0 +6.3303242 3.1889284 -1.8906555 128.0 +6.3843474 3.1671717 -1.90117 128.0 +6.398459 3.1253984 -1.8995929 128.0 +6.4305592 3.0923493 -1.9035357 128.0 +6.4415631 3.0491202 -1.90117 128.0 +6.4793935 3.0184984 -1.906953 128.0 +6.5021782 2.9806945 -1.9082673 128.0 +6.5185857 2.9399486 -1.9077415 128.0 +6.5338564 2.8987226 -1.906953 128.0 +6.5541725 2.8597343 -1.9077415 128.0 +6.5875578 2.8263097 -1.9124731 128.0 +6.594996 2.7817128 -1.9095817 128.0 +6.6021352 2.7371314 -1.9066901 128.0 +6.6125507 2.6940227 -1.9048501 128.0 +6.6343312 2.6555486 -1.9064273 128.0 +6.637929 2.6098506 -1.9027472 128.0 +6.6556177 2.5697665 -1.9032729 128.0 +6.6784782 2.5316148 -1.9053758 128.0 +6.7065468 2.4952972 -1.9090558 128.0 +6.7235441 2.454761 -1.9095817 128.0 +6.7348461 2.4121592 -1.9085301 128.0 +6.7513409 2.3714287 -1.9090558 128.0 +6.7767124 2.3337269 -1.9122102 128.0 +6.7744484 2.2865505 -1.9074787 128.0 +6.8149176 2.253721 -1.9151018 128.0 +6.8231101 2.2100801 -1.9135245 128.0 +6.8282647 2.165549 -1.9111588 128.0 +6.8423452 2.1238966 -1.9114217 128.0 +6.882946 2.0902793 -1.9193076 128.0 +6.8817677 2.0438888 -1.9153646 128.0 +6.8904729 2.0005491 -1.9143132 128.0 +6.9165421 1.96218 -1.918256 128.0 +6.942399 1.9235661 -1.922199 128.0 +6.9438257 1.8781626 -1.9193076 128.0 +6.9356275 1.8303539 -1.9137874 128.0 +6.9635477 1.7920889 -1.9185189 128.0 +6.988451 1.7528462 -1.9224619 128.0 +6.9775167 1.7046698 -1.916416 128.0 +6.9728255 1.6582553 -1.9122102 128.0 +7.0120106 1.6221763 -1.920359 128.0 +7.0274801 1.5803901 -1.9219362 128.0 +7.0285611 1.5353887 -1.9195704 128.0 +7.0369062 1.4920334 -1.9193076 128.0 +7.0402579 1.4476626 -1.9177303 128.0 +7.0632024 1.4072628 -1.9216733 128.0 +7.0574927 1.3611588 -1.9177303 128.0 +7.0723515 1.3190664 -1.9195704 128.0 +7.0755644 1.2747918 -1.918256 128.0 +7.088006 1.2321784 -1.9195704 128.0 +7.085917 1.1870716 -1.9169418 128.0 +7.0997353 1.1446447 -1.9187818 128.0 +7.1199737 1.103126 -1.9224619 128.0 +7.1371064 1.0609767 -1.9253534 128.0 +7.1272435 1.0148548 -1.9208847 128.0 +7.1295123 0.97058374 -1.9198333 128.0 +7.1468153 0.92830908 -1.9229876 128.0 +7.1389709 0.88278407 -1.9193076 128.0 +7.1442533 0.83896357 -1.9193076 128.0 +7.1598148 0.79628289 -1.922199 128.0 +7.1597681 0.75183302 -1.9208847 128.0 +7.1584854 0.70731908 -1.9193076 128.0 +7.1655726 0.66364861 -1.9200962 128.0 +7.1647034 0.61925435 -1.9187818 128.0 +7.180871 0.57628226 -1.922199 128.0 +7.1948562 0.53299278 -1.9250906 128.0 +7.2008791 0.48903158 -1.9258791 128.0 +7.1873732 0.44383031 -1.9214104 128.0 +7.214045 0.40105611 -1.927982 128.0 +7.2192607 0.35692647 -1.9287705 128.0 +7.2126398 0.31224903 -1.9264048 128.0 +7.2086349 0.26777327 -1.9248277 128.0 +7.2101421 0.22353686 -1.9248277 128.0 +7.2219877 0.17955415 -1.9277191 128.0 +7.2268124 0.1353091 -1.9287705 128.0 +7.2275066 0.090963669 -1.9287705 128.0 +7.2211747 0.046572343 -1.9269305 128.0 +7.2058873 0.0022608107 -1.9227247 128.0 +7.2395344 -0.042155772 -1.9319249 128.0 +7.2401042 -0.086587615 -1.9321878 128.0 +7.2259312 -0.13076386 -1.9285077 128.0 +7.2307801 -0.17524007 -1.9300849 128.0 +7.2218533 -0.21936841 -1.927982 128.0 +7.2377267 -0.26431331 -1.9327135 128.0 +7.2407885 -0.30892462 -1.9340279 128.0 +7.2329745 -0.35306427 -1.9324507 128.0 +7.2287455 -0.3973321 -1.9319249 128.0 +7.2040215 -0.44032198 -1.9258791 128.0 +7.2233253 -0.48601002 -1.9319249 128.0 +7.2076979 -0.52940154 -1.9285077 128.0 +7.2273965 -0.57545877 -1.9348165 128.0 +7.2025814 -0.61797649 -1.9290335 128.0 +7.1967325 -0.661982 -1.9285077 128.0 +7.1877341 -0.70565575 -1.9271934 128.0 +7.1938248 -0.75084901 -1.9300849 128.0 +7.191 -0.79518777 -1.9306107 128.0 +7.1821523 -0.83884764 -1.9295592 128.0 +7.1854882 -0.88396233 -1.9319249 128.0 +7.193325 -0.92976868 -1.935605 128.0 +7.2113867 -0.97713113 -1.9421766 128.0 +7.1651344 -1.0156672 -1.9311364 128.0 +7.1587672 -1.0596125 -1.9311364 128.0 +7.1378284 -1.1013088 -1.9271934 128.0 +7.1442728 -1.1472287 -1.9308735 128.0 +7.1171145 -1.1877052 -1.9253534 128.0 +7.1163473 -1.2325063 -1.9271934 128.0 +7.0887089 -1.2725649 -1.9216733 128.0 +7.0902524 -1.317801 -1.924302 128.0 +7.0782433 -1.3605521 -1.9232504 128.0 +7.0943666 -1.4088479 -1.9300849 128.0 +7.0562887 -1.446341 -1.9219362 128.0 +7.1152453 -1.5039877 -1.9408623 128.0 +7.0983415 -1.5459739 -1.9387594 128.0 +7.0868387 -1.5890769 -1.9382336 128.0 +7.0666142 -1.6301438 -1.9353422 128.0 +7.0536623 -1.6728046 -1.9345536 128.0 +7.0620127 -1.7206244 -1.9398109 128.0 +7.0363469 -1.7601751 -1.935605 128.0 +7.0226107 -1.8025961 -1.9348165 128.0 +7.012351 -1.8458978 -1.9350793 128.0 +6.9664283 -1.8795853 -1.9253534 128.0 +6.9380255 -1.9176656 -1.9206219 128.0 +6.8889952 -1.9496847 -1.9101074 128.0 +6.8092537 -1.9723116 -1.8909184 128.0 +6.6527185 -1.97127 -1.8499118 128.0 +6.5435481 -1.9826599 -1.8223112 128.0 +6.440022 -1.9944991 -1.7962878 128.0 +6.3246422 -2.0013573 -1.7668471 128.0 +6.2810302 -2.0300329 -1.7579098 128.0 +6.2034068 -2.0470562 -1.7392465 128.0 +6.1514144 -2.0718315 -1.7279434 128.0 +6.0665064 -2.0847523 -1.7071773 128.0 +6.0035253 -2.1043735 -1.6927198 128.0 +5.9432588 -2.1242759 -1.6790509 128.0 +5.8829761 -2.1435184 -1.665382 128.0 +5.8805661 -2.1836078 -1.6685364 128.0 +5.4637074 -2.066967 -1.5510367 128.0 +5.414012 -2.0862215 -1.5402594 128.0 +5.3786573 -2.1105866 -1.5336878 128.0 +5.2554088 -2.0995007 -1.5013556 128.0 +5.0368781 -2.0480766 -1.4408972 128.0 +5.0046048 -2.0708239 -1.4351143 128.0 +4.8113036 -2.0254583 -1.3817531 128.0 +4.7686324 -2.042022 -1.3728157 128.0 +4.70825 -2.0504296 -1.3586211 128.0 +4.6541204 -2.0609102 -1.3462666 128.0 +4.5454993 -2.046236 -1.3176146 128.0 +4.3837247 -2.0058076 -1.2729279 128.0 +4.3538394 -2.0245273 -1.2676706 128.0 +4.3038278 -2.0334711 -1.2563674 128.0 +4.2225623 -2.02684 -1.2356013 128.0 +4.1875005 -2.0417116 -1.2287669 128.0 +4.1714358 -2.0656536 -1.2277155 128.0 +4.0552573 -2.03917 -1.1961719 128.0 +3.9859617 -2.0350435 -1.178823 128.0 +3.95627 -2.0505784 -1.1735657 128.0 +3.9094634 -2.0568366 -1.1630512 128.0 +3.8278403 -2.043956 -1.1417593 128.0 +3.7745144 -2.0453296 -1.1291419 128.0 +3.7001843 -2.0344989 -1.1099529 128.0 +3.6648846 -2.044467 -1.1028556 128.0 +3.6489129 -2.0650141 -1.1018041 128.0 +3.5968518 -2.0647774 -1.0894496 128.0 +3.6066239 -2.0999224 -1.0965469 128.0 +3.5695817 -2.107779 -1.0889239 128.0 +3.5491326 -2.1251788 -1.0865581 128.0 +3.5112886 -2.131887 -1.0786722 128.0 +3.487462 -2.1468136 -1.075255 128.0 +3.4578564 -2.1579509 -1.0699978 128.0 +3.4184632 -2.1626134 -1.0615861 128.0 +3.4108136 -2.1871953 -1.0634261 128.0 +3.4312997 -2.2301755 -1.0744665 128.0 +3.3941891 -2.2357893 -1.0668434 128.0 +3.3964529 -2.2672918 -1.0721006 128.0 +3.3808792 -2.2870076 -1.0715749 128.0 +3.3787177 -2.3158948 -1.0755179 128.0 +3.3676133 -2.3387852 -1.0765693 128.0 +3.328743 -2.3421857 -1.0684205 128.0 +3.2946715 -2.3485599 -1.061849 128.0 +3.2551737 -2.3506489 -1.0534374 128.0 +3.2220037 -2.3569012 -1.0471287 128.0 +3.1927555 -2.3657086 -1.0421343 128.0 +3.2236986 -2.4194376 -1.0576432 128.0 +3.2517972 -2.4718819 -1.0723635 128.0 +3.2090526 -2.4705913 -1.0629004 128.0 +3.2394755 -2.5258439 -1.0786722 128.0 +3.1966622 -2.5241406 -1.0692092 128.0 +3.182621 -2.5449128 -1.0697349 128.0 +3.1317117 -2.5358462 -1.0573803 128.0 +3.1384706 -2.5733733 -1.0652663 128.0 +3.1300433 -2.5987477 -1.0678948 128.0 +3.0977948 -2.6042407 -1.0621119 128.0 +3.0707393 -2.6138153 -1.0581689 128.0 +3.0487981 -2.6275671 -1.056066 128.0 +3.0449736 -2.6570122 -1.0605347 128.0 +3.0249989 -2.6724508 -1.0592204 128.0 +2.9517467 -2.6401303 -1.0384542 128.0 +2.8818669 -2.6096046 -1.0187395 128.0 +2.9937813 -2.7446358 -1.0660548 128.0 +2.9196181 -2.7097723 -1.044763 128.0 +2.8902833 -2.71574 -1.0400314 128.0 +2.8910375 -2.7500529 -1.046603 128.0 +2.8692455 -2.7630539 -1.044763 128.0 +2.8625977 -2.7907131 -1.0487058 128.0 +2.8406146 -2.8034794 -1.0468658 128.0 +2.8404179 -2.8379097 -1.0534374 128.0 +2.8338017 -2.8662658 -1.0576432 128.0 +2.8316615 -2.8994801 -1.063689 128.0 +2.8077903 -2.9105492 -1.0613233 128.0 +2.8497643 -2.9906034 -1.084981 128.0 +2.81285 -2.9883561 -1.0776207 128.0 +2.7432325 -2.9504297 -1.0571175 128.0 +2.7041998 -2.9444606 -1.0487058 128.0 +2.674417 -2.9481313 -1.0439743 128.0 +2.653059 -2.960892 -1.04266 128.0 +2.6316452 -2.9735017 -1.0413457 128.0 +2.6089072 -2.9845071 -1.0395057 128.0 +2.5987394 -3.0099552 -1.0429229 128.0 +2.5677054 -3.0111573 -1.0376656 128.0 +2.5659561 -3.0467861 -1.044763 128.0 +2.5324109 -3.0446661 -1.0384542 128.0 +2.4861326 -3.0265894 -1.0266254 128.0 +2.4620464 -3.0350418 -1.0242596 128.0 +2.4500105 -3.0583766 -1.0271511 128.0 +2.4246163 -3.0650263 -1.0242596 128.0 +2.4289188 -3.1095066 -1.0345113 128.0 +2.3797529 -3.0853794 -1.0211053 128.0 +2.3455839 -3.0799613 -1.0142708 128.0 +2.442564 -3.2485619 -1.0668434 128.0 +2.4041893 -3.238692 -1.0584317 128.0 +2.3563368 -3.2152421 -1.0455515 128.0 +2.3009491 -3.180382 -1.0289911 128.0 +2.265697 -3.1724513 -1.021631 128.0 +2.2600806 -3.2060125 -1.0282025 128.0 +2.2365105 -3.2142746 -1.0263625 128.0 +2.2200217 -3.2327101 -1.0279397 128.0 +2.1985214 -3.2438745 -1.0271511 128.0 +2.1828651 -3.2637205 -1.029254 128.0 +2.162267 -3.2762475 -1.0289911 128.0 +2.1500177 -3.3015833 -1.0329341 128.0 +2.1427515 -3.3350103 -1.0395057 128.0 +2.1387699 -3.3741772 -1.0479172 128.0 +2.1210938 -3.3921463 -1.0494945 128.0 +2.0966961 -3.399348 -1.0476544 128.0 +2.0908351 -3.4368818 -1.0555403 128.0 +2.0930266 -3.4885383 -1.0678948 128.0 +2.0833673 -3.5212476 -1.0742036 128.0 +1.9936881 -3.4172726 -1.0374027 128.0 +1.9471984 -3.3851078 -1.023471 128.0 +1.9263911 -3.3969917 -1.023471 128.0 +1.8942184 -3.3885322 -1.0171623 128.0 +1.8938669 -3.4372795 -1.0287282 128.0 +1.8870054 -3.4751244 -1.036877 128.0 +1.865647 -3.4866374 -1.036877 128.0 +1.8536624 -3.515945 -1.0423971 128.0 +1.8467216 -3.5555124 -1.0510716 128.0 +1.7954435 -3.5092192 -1.0334598 128.0 +1.7717079 -3.515861 -1.0321455 128.0 +1.7389572 -3.5041916 -1.0253111 128.0 +1.7275828 -3.535604 -1.0316198 128.0 +1.7020943 -3.5383112 -1.029254 128.0 +1.6729238 -3.5329902 -1.0245225 128.0 +1.650807 -3.5423138 -1.0242596 128.0 +1.6290407 -3.5523763 -1.0242596 128.0 +1.6143507 -3.5781376 -1.0289911 128.0 +1.6005788 -3.6064978 -1.0345113 128.0 +1.5896051 -3.6418979 -1.0421343 128.0 +1.5676092 -3.6524696 -1.0423971 128.0 +1.5624105 -3.7029159 -1.0544889 128.0 +1.2630084 -3.0448244 -0.85760462 128.0 +1.2479408 -3.0614524 -0.86023325 128.0 +1.4645987 -3.6575918 -1.0329341 128.0 +1.4403641 -3.6620197 -1.0316198 128.0 +1.4202989 -3.6770897 -1.0334598 128.0 +1.4004447 -3.6929531 -1.0355628 128.0 +1.3784314 -3.7032852 -1.0360885 128.0 +1.3589901 -3.7207372 -1.038717 128.0 +1.3397114 -3.7389979 -1.0416086 128.0 +1.3295282 -3.7835624 -1.0521231 128.0 +1.3342346 -3.872844 -1.0755179 128.0 +1.314147 -3.8919284 -1.0786722 128.0 +1.2866083 -3.8889256 -1.0755179 128.0 +1.2511327 -3.8609476 -1.0652663 128.0 +1.2268358 -3.8667123 -1.0647405 128.0 +1.1945107 -3.8465219 -1.0568546 128.0 +0.99070668 -3.2601323 -0.88783383 128.0 +0.97480243 -3.2800241 -0.89177674 128.0 +0.95788461 -3.2970629 -0.89493114 128.0 +0.93737304 -3.30195 -0.89466828 128.0 +0.91838235 -3.3122888 -0.89598256 128.0 +0.87336826 -3.2265837 -0.87022203 128.0 +0.81024992 -3.0676856 -0.82395816 128.0 +0.79165202 -3.0735338 -0.82422101 128.0 +0.94706994 -3.7736943 -1.0195282 128.0 +0.92984676 -3.8038042 -1.0263625 128.0 +0.91808951 -3.8582499 -1.0400314 128.0 +0.91417384 -3.9493544 -1.063952 128.0 +0.86898136 -3.8616948 -1.0379285 128.0 +0.85308897 -3.9027743 -1.0479172 128.0 +0.83632493 -3.9419153 -1.0573803 128.0 +0.8165881 -3.9687097 -1.0634261 128.0 +0.78562814 -3.9405262 -1.054226 128.0 +0.76216495 -3.9490621 -1.0552775 128.0 +0.72961247 -3.9090846 -1.0429229 128.0 +0.69911796 -3.877404 -1.0329341 128.0 +0.67646915 -3.8882749 -1.0347742 128.0 +0.67330205 -4.0160604 -1.0689464 128.0 +0.63483977 -3.9343858 -1.0452887 128.0 +0.61393338 -3.9591837 -1.0510716 128.0 +0.59841514 -4.022047 -1.0673691 128.0 +0.5745402 -4.0313745 -1.0689464 128.0 +0.53848386 -3.9516487 -1.0460773 128.0 +0.52490169 -4.0371647 -1.0686834 128.0 +0.50059319 -4.0441394 -1.0697349 128.0 +0.46902695 -3.989639 -1.0539631 128.0 +0.44496414 -3.9962776 -1.0550146 128.0 +0.41872475 -3.9826198 -1.0505459 128.0 +0.39551127 -3.9975963 -1.0539631 128.0 +0.36937621 -3.9826546 -1.0492316 128.0 +0.34227851 -3.9540856 -1.04082 128.0 +0.31893456 -3.9676526 -1.0439743 128.0 +0.29266316 -3.9435551 -1.036877 128.0 +0.26885176 -3.9510524 -1.0384542 128.0 +0.24685733 -3.989222 -1.048443 128.0 +0.22381711 -4.0166721 -1.0555403 128.0 +0.19869216 -4.0083332 -1.0529116 128.0 +0.17480053 -4.0258636 -1.0573803 128.0 +0.14913219 -4.0008278 -1.0502831 128.0 +0.12434281 -3.9939525 -1.0481801 128.0 +0.10007229 -4.0042858 -1.0508088 128.0 +0.075178258 -3.9874604 -1.0460773 128.0 +0.050638318 -3.982058 -1.0445001 128.0 +0.026185716 -3.9793994 -1.0437114 128.0 +0.001770002 -3.992028 -1.0471287 128.0 +-0.022724655 -3.9919636 -1.0471287 128.0 +-0.048317567 -4.0824366 -1.0718378 128.0 +-0.071886599 -4.0010309 -1.0497574 128.0 +-0.096058615 -3.9850819 -1.0455515 128.0 +-0.12121558 -4.0075626 -1.0518602 128.0 +-0.14654592 -4.0269914 -1.0573803 128.0 +-0.17211922 -4.0462594 -1.0629004 128.0 +-0.19708495 -4.048018 -1.063689 128.0 +-0.22160076 -4.0409522 -1.0621119 128.0 +-0.24816193 -4.0684071 -1.0699978 128.0 +-0.27071831 -4.0311899 -1.0602719 128.0 +-0.29431483 -4.0140576 -1.056066 128.0 +-0.31901583 -4.0131378 -1.0563289 128.0 +-0.34603032 -4.0389819 -1.063952 128.0 +-0.37231156 -4.0531158 -1.0684205 128.0 +-0.3984015 -4.0632377 -1.0718378 128.0 +-0.42563277 -4.0827875 -1.0778836 128.0 +-0.45099488 -4.0829759 -1.0786722 128.0 +-0.47514239 -4.0724654 -1.0765693 128.0 +-0.49611101 -4.0369153 -1.067632 128.0 +-0.5152992 -3.9907367 -1.0558032 128.0 +-0.53899801 -3.9817634 -1.054226 128.0 +-0.87427199 -6.1687965 -1.6569704 128.0 +-0.58258706 -3.9395359 -1.0445001 128.0 +-0.95241052 -6.1738133 -1.6614391 128.0 +-0.98659939 -6.1449904 -1.6551304 128.0 +-1.0263524 -6.1511927 -1.6585476 128.0 +-1.0653945 -6.1523843 -1.6606505 128.0 +-1.1026129 -6.1428828 -1.6598619 128.0 +-1.1390489 -6.1293616 -1.6580219 128.0 +-1.1777302 -6.1279421 -1.6595991 128.0 +-1.2119228 -6.1035662 -1.6548675 128.0 +-1.248963 -6.0941248 -1.6543418 128.0 +-1.2915241 -6.110889 -1.6611762 128.0 +-1.3285846 -6.1009641 -1.6606505 128.0 +-1.3672619 -6.0983458 -1.6622277 128.0 +-1.4013995 -6.0757399 -1.6582848 128.0 +-1.4370936 -6.0604553 -1.6564447 128.0 +-1.4765383 -6.0608974 -1.6590734 128.0 +-1.5148709 -6.0564032 -1.6603876 128.0 +-1.5546441 -6.0572734 -1.6632792 128.0 +-1.5925189 -6.0504193 -1.6640677 128.0 +-1.6278533 -6.0340137 -1.6622277 128.0 +-1.6653609 -6.0257716 -1.6627535 128.0 +-1.7015144 -6.0126548 -1.6619649 128.0 +-1.7386439 -6.0030279 -1.6622277 128.0 +-1.7740737 -5.9876218 -1.6609133 128.0 +-1.8146988 -5.9895501 -1.6645935 128.0 +-1.8497022 -5.9727731 -1.6630163 128.0 +-1.8886456 -5.9686694 -1.6651192 128.0 +-1.9246393 -5.9551325 -1.6645935 128.0 +-1.2783766 -3.8753872 -1.0713121 128.0 +-1.3076777 -3.8839278 -1.0760436 128.0 +-2.0285945 -5.9031863 -1.6601248 128.0 +-2.067332 -5.897912 -1.6622277 128.0 +-2.1044567 -5.8878412 -1.6630163 128.0 +-2.1355872 -5.8612208 -1.6590734 128.0 +-2.1772232 -5.8633819 -1.663542 128.0 +-2.2138424 -5.851717 -1.6640677 128.0 +-2.2517889 -5.8434243 -1.6656449 128.0 +-2.2844274 -5.8214149 -1.6632792 128.0 +-2.3315639 -5.8359575 -1.6716907 128.0 +-2.3618746 -5.808136 -1.6677479 128.0 +-2.3908246 -5.7774882 -1.6630163 128.0 +-2.4340951 -5.7813821 -1.6685364 128.0 +-1.3135597 -3.0685415 -0.86890769 128.0 +-1.3331339 -3.0621929 -0.8694334 128.0 +-1.3491621 -3.0477805 -0.86759341 128.0 +-2.5716779 -5.711988 -1.6661706 128.0 +-2.606276 -5.6952238 -1.6659077 128.0 +-2.6448352 -5.6869974 -1.6682736 128.0 +-1.6058267 -3.3992922 -0.98377877 128.0 +-1.6224769 -3.3806779 -0.98115015 128.0 +-1.6393822 -3.3628547 -0.97878438 128.0 +-1.656987 -3.3466806 -0.97694433 128.0 +-1.6787915 -3.3390362 -0.9777329 128.0 +-1.7023206 -3.334687 -0.97957295 128.0 +-1.7298572 -3.3378828 -0.98377877 128.0 +-1.7655871 -3.3562334 -0.99271607 128.0 +-2.1121595 -3.9554868 -1.1811887 128.0 +-3.0203221 -5.5726357 -1.686411 128.0 +-3.0428309 -5.5328655 -1.6798395 128.0 +-3.0786037 -5.5174603 -1.6808909 128.0 +-3.1043179 -5.4841943 -1.6764222 128.0 +-3.1220508 -5.4374347 -1.6677479 128.0 +-3.1752694 -5.4523559 -1.6785252 128.0 +-3.2096462 -5.4344316 -1.6790509 128.0 +-3.2414432 -5.4121523 -1.6782624 128.0 +-3.2755923 -5.3938103 -1.6787881 128.0 +-3.3141928 -5.3826466 -1.6816795 128.0 +-3.3446023 -5.3581181 -1.6803652 128.0 +-3.3799965 -5.3415709 -1.6816795 128.0 +-3.431987 -5.3507767 -1.6914054 128.0 +-3.4773786 -5.3490295 -1.6977142 128.0 +-3.4766827 -5.2768402 -1.6811538 128.0 +-3.5143545 -5.2634315 -1.6837825 128.0 +-3.5346861 -5.2241907 -1.6779995 128.0 +-3.5928688 -5.2405963 -1.6906168 128.0 +-3.6293616 -5.2247906 -1.6927198 128.0 +-2.1505597 -3.0565662 -0.9777329 128.0 +-2.1687136 -3.0425277 -0.97747004 128.0 +-2.1862111 -3.0275993 -0.97694433 128.0 +-3.7861242 -5.174633 -1.7063886 128.0 +-3.802289 -5.1303782 -1.6992913 128.0 +-3.8203712 -5.0892062 -1.6932455 128.0 +-3.852694 -5.067205 -1.6937712 128.0 +-3.890779 -5.0526423 -1.6969256 128.0 +-3.9270494 -5.0355201 -1.6992913 128.0 +-3.9578729 -5.0113292 -1.6992913 128.0 +-3.9746838 -4.9696226 -1.6932455 128.0 +-3.9801993 -4.9144044 -1.6824682 128.0 +-4.004159 -4.8824306 -1.6798395 128.0 +-4.0297256 -4.8525748 -1.6779995 128.0 +-4.0470033 -4.8129902 -1.6727422 128.0 +-4.113369 -4.8314052 -1.6882511 128.0 +-4.1429367 -4.8060751 -1.6882511 128.0 +-4.1590223 -4.7653012 -1.682731 128.0 +-4.1664572 -4.7151141 -1.6737937 128.0 +-4.2152567 -4.7117481 -1.6819425 128.0 +-4.2447357 -4.6865101 -1.6822053 128.0 +-4.277977 -4.6653533 -1.6840453 128.0 +-4.3242497 -4.6581054 -1.6911426 128.0 +-4.3527498 -4.6314845 -1.6911426 128.0 +-4.35847 -4.5809274 -1.6822053 128.0 +-4.3777928 -4.5450659 -1.6787881 128.0 +-4.4136829 -4.5264068 -1.6819425 128.0 +-4.4610338 -4.5191483 -1.6895654 128.0 +-4.4900432 -4.4930558 -1.6900911 128.0 +-4.5058599 -4.4538922 -1.6856225 128.0 +-4.5386276 -4.4315524 -1.6877254 128.0 +-4.5622606 -4.4002724 -1.686411 128.0 +-4.5821877 -4.3655419 -1.6837825 128.0 +-4.5976439 -4.3267665 -1.6795766 128.0 +-4.6241059 -4.2984743 -1.6795766 128.0 +-4.63831 -4.2589293 -1.675108 128.0 +-4.6607809 -4.2271485 -1.6737937 128.0 +-4.6916618 -4.2029767 -1.6756337 128.0 +-4.7021861 -4.160686 -1.6701136 128.0 +-4.7210875 -4.1260424 -1.6677479 128.0 +-4.7499681 -4.1001487 -1.6690621 128.0 +-4.7713647 -4.0677967 -1.6677479 128.0 +-4.7925439 -4.0353374 -1.6664335 128.0 +-4.817956 -4.0064716 -1.6666963 128.0 +-4.8372283 -3.9725482 -1.6648563 128.0 +-4.8660092 -3.9464386 -1.6664335 128.0 +-4.9006772 -3.9249489 -1.6701136 128.0 +-4.8966637 -3.8726656 -1.6603876 128.0 +-4.9203334 -3.8425472 -1.6603876 128.0 +-4.9415259 -3.8105173 -1.6595991 128.0 +-4.9655814 -3.7807093 -1.6598619 128.0 +-5.0048842 -3.7623417 -1.665382 128.0 +-5.041048 -3.7413342 -1.6698507 128.0 +-5.0670228 -3.7126129 -1.6709021 128.0 +-5.0990901 -3.6882362 -1.6740565 128.0 +-5.1310487 -3.6636055 -1.6772109 128.0 +-5.1258254 -3.6126041 -1.6680107 128.0 +-5.1779966 -3.6020162 -1.6779995 128.0 +-5.1888638 -3.5625334 -1.6743194 128.0 +-5.2130218 -3.5322511 -1.675108 128.0 +-5.2281799 -3.495909 -1.6730051 128.0 +-5.2463107 -3.4616387 -1.6719537 128.0 +-5.2585568 -3.4235938 -1.6690621 128.0 +-5.2680979 -3.3839653 -1.665382 128.0 +-5.3238101 -3.3737783 -1.6766851 128.0 +-5.3378654 -3.3369582 -1.6745822 128.0 +-5.3598828 -3.3051555 -1.675108 128.0 +-5.399024 -3.2837336 -1.6811538 128.0 +-5.4066586 -3.2431018 -1.6772109 128.0 +-5.4156594 -3.2034822 -1.6737937 128.0 +-5.427712 -3.1658185 -1.6714278 128.0 +-5.4328146 -3.1242809 -1.6669593 128.0 +-5.4904957 -3.1127689 -1.6790509 128.0 +-5.5052805 -3.0766685 -1.6777366 128.0 +-5.5156031 -3.0381773 -1.675108 128.0 +-5.5180283 -2.9955339 -1.6701136 128.0 +-5.5507689 -2.9693537 -1.6745822 128.0 +-5.5979071 -2.9505293 -1.6835196 128.0 +-5.6287513 -2.9227929 -1.6874626 128.0 +-5.644002 -2.8868828 -1.686674 128.0 +-5.6667795 -2.8548012 -1.6882511 128.0 +-5.7179008 -2.8366935 -1.6985028 128.0 +-5.7603421 -2.813832 -1.7061257 128.0 +-5.7905431 -2.7847042 -1.7100687 128.0 +-5.8136253 -2.7520103 -1.7119088 128.0 +-5.8583908 -2.72932 -1.7203203 128.0 +-5.860116 -2.6864896 -1.7158517 128.0 +-5.8773694 -2.6508787 -1.7161145 128.0 +-5.9243941 -2.6284552 -1.7253147 128.0 +-5.9589825 -2.6001542 -1.7308348 128.0 +-5.9774847 -2.5646825 -1.7316235 128.0 +-5.9904418 -2.5268326 -1.7308348 128.0 +-6.0174208 -2.4948301 -1.7342521 128.0 +-6.0478063 -2.464047 -1.7387208 128.0 +-6.1004353 -2.4419446 -1.749761 128.0 +-6.1188955 -2.4058785 -1.7508124 128.0 +-6.1569462 -2.3773203 -1.7576469 128.0 +-6.1795373 -2.3425736 -1.7600126 128.0 +-6.2308722 -2.3184011 -1.7707901 128.0 +-6.239542 -2.2781413 -1.7692128 128.0 +-6.2452273 -2.2368865 -1.7668471 128.0 +-6.2843256 -2.2074733 -1.7742072 128.0 +-6.3086996 -2.1726398 -1.7773616 128.0 +-6.1792941 -2.0857782 -1.7363551 128.0 +-6.2167106 -2.0559988 -1.7434523 128.0 +-6.2677622 -2.0302961 -1.7544925 128.0 +-6.3352857 -2.0092912 -1.7702643 128.0 +-6.4092364 -1.9895345 -1.7878761 128.0 +-6.492413 -1.9717474 -1.8081166 128.0 +-6.566361 -1.9502683 -1.8257284 128.0 +-6.712563 -1.9489268 -1.8638434 128.0 +-6.8636317 -1.947179 -1.9032729 128.0 +-6.9702945 -1.9312903 -1.9300849 128.0 +-7.0490746 -1.9066122 -1.9490111 128.0 +-7.0681043 -1.8652923 -1.9511139 128.0 +-7.1167932 -1.8315008 -1.9616284 128.0 +-7.1400638 -1.790848 -1.9650457 128.0 +-7.1499805 -1.7467748 -1.9647828 128.0 +-7.1849699 -1.7086705 -1.9716172 128.0 +-7.1887383 -1.663031 -1.9697772 128.0 +-7.2025728 -1.6197366 -1.9708287 128.0 +-7.198236 -1.5724255 -1.9668857 128.0 +-7.2068048 -1.5280284 -1.9666228 128.0 +-7.21699 -1.4839736 -1.9668857 128.0 +-7.244885 -1.4434305 -1.9721429 128.0 +-7.2194991 -1.3923774 -1.9626799 128.0 +-7.236443 -1.3496438 -1.9650457 128.0 +-7.2616806 -1.3082931 -1.9697772 128.0 +-7.239152 -1.2584286 -1.9613656 128.0 +-7.2629142 -1.2166938 -1.9658343 128.0 +-7.2502394 -1.1688846 -1.9603142 128.0 +-7.2572751 -1.1243761 -1.9603142 128.0 +-7.2793074 -1.0820925 -1.96452 128.0 +-7.2676606 -1.0348258 -1.9595256 128.0 +-7.2633572 -0.98878288 -1.956634 128.0 +-7.2616329 -0.94320416 -1.9545312 128.0 +-7.2845197 -0.90075839 -1.9592627 128.0 +-7.3033252 -0.85761774 -1.9629427 128.0 +-7.3046145 -0.81236321 -1.9618913 128.0 +-7.3046637 -0.76702464 -1.960577 128.0 +-7.314033 -0.72266322 -1.9618913 128.0 +-7.3068008 -0.67670566 -1.958737 128.0 +-7.2896676 -0.63003486 -1.9529539 128.0 +-7.3097463 -0.58660388 -1.9574226 128.0 +-7.3093591 -0.54145658 -1.9563712 128.0 +-7.3183193 -0.49698833 -1.9579483 128.0 +-7.3270092 -0.45243046 -1.9595256 128.0 +-7.3383174 -0.40794489 -1.9618913 128.0 +-7.3493557 -0.36333752 -1.9642571 128.0 +-7.334096 -0.31748754 -1.9595256 128.0 +-7.3503685 -0.27301529 -1.9634686 128.0 +-7.3085084 -0.2265707 -1.9516397 128.0 +-7.3174772 -0.18191287 -1.9537426 128.0 +-7.3117032 -0.1368849 -1.9519025 128.0 +-7.3345947 -0.092294268 -1.9579483 128.0 +-7.3330932 -0.047276165 -1.9574226 128.0 +-7.3023705 -0.0022755454 -1.9490111 128.0 +-7.3543472 0.042842731 -1.9632056 128.0 +-7.3394747 0.087791964 -1.9592627 128.0 +-7.2915287 0.13196148 -1.9463824 128.0 +-7.3281989 0.17761669 -1.956634 128.0 +-7.3192563 0.22234273 -1.9545312 128.0 +-7.307148 0.26685965 -1.9516397 128.0 +-7.3169403 0.31218579 -1.954794 128.0 +-7.3187418 0.35726461 -1.9558455 128.0 +-7.2855844 0.40046543 -1.9474338 128.0 +-7.2695074 0.44433513 -1.9437538 128.0 +-7.3041873 0.49146372 -1.9540055 128.0 +-7.0090799 -0.17823984 -1.9578735 128.0 +-7.0100417 -0.13522957 -1.9578735 128.0 +-7.021317 -0.092353962 -1.9608889 128.0 +-7.005403 -0.04915458 -1.9562287 128.0 +-7.0199986 -0.006182842 -1.9603406 128.0 +-7.0141339 0.036861181 -1.9586959 128.0 +-7.0214691 0.079985604 -1.9608889 128.0 +-7.0006533 0.12271423 -1.9551322 128.0 +-6.9988074 0.16564442 -1.9548581 128.0 +-7.0043879 0.20878536 -1.956777 128.0 +-6.9952865 0.25148359 -1.954584 128.0 +-6.9849639 0.29403758 -1.9521168 128.0 +-6.9945555 0.33744642 -1.9554063 128.0 +-6.9894724 0.38020134 -1.954584 128.0 +-6.9850879 0.42296463 -1.9540358 128.0 +-6.9574127 0.46415338 -1.9469084 128.0 +-6.9755349 0.50837117 -1.9529392 128.0 +-6.9646149 0.55055684 -1.9507462 128.0 +-6.9764371 0.59458631 -1.9551322 128.0 +-6.9736152 0.63746923 -1.9554063 128.0 +-6.9705296 0.68033987 -1.9556805 128.0 +-6.903091 0.71654791 -1.9375881 128.0 +-6.9339337 0.76277977 -1.9477308 128.0 +-6.9329443 0.80575514 -1.9488273 128.0 +-6.9125962 0.84641045 -1.9444413 128.0 +-6.922534 0.89077234 -1.9488273 128.0 +-6.917891 0.93335998 -1.9491014 128.0 +-6.8996549 0.97404289 -1.9455378 128.0 +-6.8973536 1.0169209 -1.9466343 128.0 +-6.8871822 1.0586389 -1.9455378 128.0 +-6.8805566 1.100878 -1.9455378 128.0 +-6.8679805 1.1421293 -1.943893 128.0 +-6.8655815 1.1850666 -1.9452636 128.0 +-6.8619676 1.2278479 -1.9463601 128.0 +-6.864706 1.2718557 -1.9493755 128.0 +-6.8416605 1.3110577 -1.9449896 128.0 +-6.8127327 1.3489046 -1.9389588 128.0 +-6.8071547 1.3912588 -1.9397811 128.0 +-6.8041358 1.4341904 -1.9414259 128.0 +-6.7801709 1.4726478 -1.9370399 128.0 +-6.7775769 1.5156912 -1.9389588 128.0 +-6.7606516 1.5555243 -1.9367657 128.0 +-6.7463007 1.5958711 -1.9353951 128.0 +-6.7373161 1.6374626 -1.9356692 128.0 +-6.7103462 1.6745808 -1.9307349 128.0 +-6.7101932 1.718347 -1.9337503 128.0 +-6.6930118 1.7577779 -1.9318314 128.0 +-6.680243 1.7983125 -1.9312831 128.0 +-6.6700101 1.8395234 -1.9315573 128.0 +-6.6604486 1.8809379 -1.9321055 128.0 +-6.6663361 1.9268429 -1.9373139 128.0 +-6.6211872 1.9578952 -1.9274454 128.0 +-6.6044464 1.9970937 -1.9260747 128.0 +-6.6150384 2.0446787 -1.932928 128.0 +-6.5941143 2.0826232 -1.9304608 128.0 +-6.5821271 2.1233399 -1.9307349 128.0 +-6.5680609 2.1633863 -1.9304608 128.0 +-6.5391665 2.1984375 -1.9258006 128.0 +-6.5601215 2.2503755 -1.9362174 128.0 +-6.5371127 2.2874095 -1.9334762 128.0 +-6.5003099 2.3193991 -1.926623 128.0 +-6.493186 2.3618701 -1.928816 128.0 +-6.4722595 2.3993275 -1.9268972 128.0 +-6.4682117 2.4430726 -1.9301866 128.0 +-6.4405336 2.477881 -1.9263489 128.0 +-6.4234176 2.5166512 -1.9258006 128.0 +-6.4096413 2.5567296 -1.9263489 128.0 +-6.386704 2.5931165 -1.9241558 128.0 +-6.3840051 2.6377635 -1.9282677 128.0 +-6.3721328 2.6787486 -1.9296384 128.0 +-6.3555765 2.7177968 -1.9296384 128.0 +-6.3273158 2.7517574 -1.9260747 128.0 +-6.3015165 2.7866404 -1.9233335 128.0 +-6.2930708 2.8291962 -1.9260747 128.0 +-6.2790918 2.869355 -1.9271712 128.0 +-6.2596231 2.9070189 -1.926623 128.0 +-6.2407985 2.944962 -1.9263489 128.0 +-6.2156734 2.9798739 -1.9241558 128.0 +-6.1981368 3.0183775 -1.92443 128.0 +-6.1657071 3.049531 -1.9200439 128.0 +-6.1657863 3.0968003 -1.9260747 128.0 +-6.1483822 3.1354482 -1.926623 128.0 +-6.1213412 3.1691363 -1.9241558 128.0 +-6.1009293 3.2061889 -1.9238818 128.0 +-6.0735044 3.2394903 -1.9214146 128.0 +-6.0501299 3.2748647 -1.9203181 128.0 +-6.0307646 3.3123889 -1.9205922 128.0 +-6.0086465 3.3483944 -1.9200439 128.0 +-5.9712443 3.3757353 -1.9145614 128.0 +-5.9495845 3.4118321 -1.9142873 128.0 +-5.9318628 3.4502077 -1.9153838 128.0 +-5.9246631 3.4948456 -1.9200439 128.0 +-5.8948545 3.5261965 -1.9173027 128.0 +-5.8722849 3.5618017 -1.9170285 128.0 +-5.8593307 3.6033072 -1.9200439 128.0 +-5.8411918 3.6417353 -1.9214146 128.0 +-5.8138585 3.6744251 -1.9197699 128.0 +-5.7968717 3.7136602 -1.9216887 128.0 +-5.7505846 3.7339725 -1.9137391 128.0 +-5.7436328 3.7797594 -1.9192215 128.0 +-5.7419357 3.8293362 -1.926623 128.0 +-5.7087693 3.8580346 -1.9233335 128.0 +-5.6714997 3.883754 -1.9186733 128.0 +-5.6538839 3.9228659 -1.9208664 128.0 +-5.634428 3.9608018 -1.9225111 128.0 +-5.6108022 3.9958572 -1.9227853 128.0 +-5.5799389 4.0257082 -1.9205922 128.0 +-5.5559092 4.0604377 -1.9208664 128.0 +-5.5270252 4.0915909 -1.9194957 128.0 +-5.4971991 4.1219659 -1.917851 128.0 +-5.4564857 4.1439862 -1.9123684 128.0 +-5.429431 4.1762161 -1.9118202 128.0 +-5.3976345 4.2047243 -1.9096271 128.0 +-5.3694682 4.2359776 -1.9088048 128.0 +-5.3441267 4.2694445 -1.9090788 128.0 +-5.3275495 4.3100176 -1.9126425 128.0 +-5.3069553 4.3475008 -1.9148356 128.0 +-5.2772188 4.3775263 -1.9137391 128.0 +-5.2561507 4.414772 -1.9159321 128.0 +-5.2311611 4.4488091 -1.9167545 128.0 +-5.1964774 4.4745483 -1.9140131 128.0 +-5.1602254 4.4987659 -1.9107237 128.0 +-5.1267557 4.5252528 -1.9085306 128.0 +-5.1017613 4.5591879 -1.9096271 128.0 +-5.0694118 4.586535 -1.9079823 128.0 +-5.0340819 4.6110587 -1.9052411 128.0 +-5.0078096 4.6438222 -1.9060634 128.0 +-4.9715085 4.667222 -1.903048 128.0 +-4.9448686 4.699626 -1.9038705 128.0 +-4.9020786 4.7165442 -1.8983879 128.0 +-4.884069 4.7572694 -1.902774 128.0 +-4.8513632 4.783772 -1.9014033 128.0 +-4.8205576 4.8120909 -1.9008551 128.0 +-4.799058 4.849781 -1.9041445 128.0 +-4.7725716 4.8825746 -1.9055152 128.0 +-4.7391825 4.9083076 -1.9041445 128.0 +-4.7036662 4.9317274 -1.9019516 128.0 +-4.6654034 4.9520965 -1.8986621 128.0 +-4.6421371 4.9883733 -1.9016775 128.0 +-4.6166487 5.0224266 -1.9038705 128.0 +-4.5825119 5.0470996 -1.9024998 128.0 +-4.5508151 5.0744066 -1.9022257 128.0 +-4.5170426 5.0993547 -1.9011291 128.0 +-4.4837689 5.1248035 -1.9003068 128.0 +-4.4503527 5.1500363 -1.8994844 128.0 +-4.4167957 5.1750517 -1.8986621 128.0 +-4.3911576 5.2094083 -1.9014033 128.0 +-4.3449578 5.219255 -1.8950984 128.0 +-4.3061328 5.2376461 -1.892083 128.0 +-4.2630019 5.2505312 -1.8871487 128.0 +-4.2908678 5.3516164 -1.9145614 128.0 +-4.2573533 5.37709 -1.9142873 128.0 +-4.203547 5.3765955 -1.9046929 128.0 +-4.1769423 5.4106603 -1.9077083 128.0 +-4.1576571 5.4545426 -1.9142873 128.0 +-4.1015558 5.4499846 -1.9035963 128.0 +-4.055419 5.4580669 -1.8975655 128.0 +-4.0252657 5.4875002 -1.8992103 128.0 +-3.9920831 5.5128741 -1.8994844 128.0 +-3.9609783 5.5411773 -1.9008551 128.0 +-3.9285669 5.5677342 -1.9016775 128.0 +-3.9031246 5.6043606 -1.9060634 128.0 +-3.886642 5.6543565 -1.9151096 128.0 +-3.862133 5.6932187 -1.9203181 128.0 +-3.8121464 5.6944337 -1.9126425 128.0 +-3.7739534 5.7129035 -1.9109977 128.0 +-3.7456563 5.7464252 -1.9145614 128.0 +-3.709806 5.7684913 -1.9142873 128.0 +-3.6846466 5.8073859 -1.9197699 128.0 +-3.6555774 5.8404822 -1.9233335 128.0 +-3.6338193 5.8857136 -1.9310091 128.0 +-3.5821297 5.8824377 -1.9225111 128.0 +-3.5479491 5.9076042 -1.9236076 128.0 +-3.5033021 5.9151964 -1.9189475 128.0 +-3.4679112 5.938242 -1.9194957 128.0 +-3.4275701 5.9527416 -1.9173027 128.0 +-3.3957283 5.9820237 -1.9200439 128.0 +-3.3505054 5.9876413 -1.9151096 128.0 +-3.3197415 6.0190339 -1.9186733 128.0 +-3.2933114 6.058723 -1.9249783 128.0 +-3.2569821 6.0805116 -1.9255265 128.0 +-3.2200603 6.1012321 -1.9258006 128.0 +-3.1870003 6.1294074 -1.9285419 128.0 +-3.1423156 6.1351523 -1.9241558 128.0 +-3.1093769 6.1637626 -1.9271712 128.0 +-3.0821962 6.2042561 -1.9340245 128.0 +-3.0347719 6.2040467 -1.9279937 128.0 +-3.0100017 6.2502766 -1.9367657 128.0 +-2.9695339 6.2642832 -1.9353951 128.0 +-2.9310412 6.2823858 -1.9353951 128.0 +-2.8924379 6.3002524 -1.9353951 128.0 +-2.8481829 6.3056116 -1.9315573 128.0 +-2.8141253 6.3335147 -1.9348468 128.0 +-2.7759809 6.3524251 -1.9353951 128.0 +-2.7335334 6.3613868 -1.932928 128.0 +-2.7000637 6.3913274 -1.9370399 128.0 +-2.6593208 6.404222 -1.9359434 128.0 +-2.6228826 6.4275417 -1.9381363 128.0 +-2.5780256 6.4301252 -1.9340245 128.0 +-2.5490959 6.4726663 -1.9422482 128.0 +-2.4996178 6.4630713 -1.9345727 128.0 +-2.4681087 6.4998641 -1.9411517 128.0 +-2.4295235 6.5184903 -1.9422482 128.0 +-2.3855164 6.5224371 -1.9389588 128.0 +-2.3564949 6.5677271 -1.948279 128.0 +-2.3040195 6.5475912 -1.9378622 128.0 +-2.2622323 6.5570598 -1.9364916 128.0 +-2.223805 6.576283 -1.9381363 128.0 +-2.1949077 6.6244931 -1.9485532 128.0 +-2.1527345 6.6332626 -1.9471825 128.0 +-2.1233537 6.6820908 -1.9578735 128.0 +-2.0723147 6.6628537 -1.948279 128.0 +-2.0277529 6.6634836 -1.9447154 128.0 +-1.9851822 6.67027 -1.9430707 128.0 +-1.9423357 6.6758614 -1.9411517 128.0 +-1.9047564 6.6996789 -1.9447154 128.0 +-1.8625827 6.7075338 -1.9436189 128.0 +-1.8178675 6.7058415 -1.9397811 128.0 +-1.7813606 6.7345338 -1.9449896 128.0 +-1.736641 6.7323008 -1.9411517 128.0 +-1.6948305 6.7409644 -1.9406035 128.0 +-1.6534369 6.7512369 -1.9406035 128.0 +-1.6115348 6.7593842 -1.9400553 128.0 +-1.5689429 6.764461 -1.9386846 128.0 +-1.5231757 6.755198 -1.933202 128.0 +-1.4810804 6.7615986 -1.9323797 128.0 +-1.4459661 6.8006601 -1.9411517 128.0 +-1.4032394 6.8046951 -1.9397811 128.0 +-1.3631567 6.8216643 -1.9422482 128.0 +-1.325111 6.8497276 -1.948005 128.0 +-1.2821723 6.853003 -1.9466343 128.0 +-1.2378745 6.8484387 -1.9430707 128.0 +-1.1954994 6.8540106 -1.9425224 128.0 +-1.1566112 6.8801847 -1.948005 128.0 +-1.114527 6.8881011 -1.948279 128.0 +-1.075346 6.9147658 -1.9540358 128.0 +-1.0358796 6.9412079 -1.9597924 128.0 +-0.98877627 6.9160171 -1.9507462 128.0 +-0.94371539 6.9028974 -1.9452636 128.0 +-0.9055742 6.9409804 -1.954584 128.0 +-0.86261225 6.9435434 -1.9537616 128.0 +-0.81965297 6.9458404 -1.9529392 128.0 +-0.77659106 6.9469161 -1.9518427 128.0 +-0.73415303 6.9534631 -1.9523909 128.0 +-0.689951 6.9425254 -1.948005 128.0 +-0.64671451 6.9399252 -1.946086 128.0 +-0.60395294 6.9418468 -1.9455378 128.0 +-0.56157976 6.9482975 -1.9463601 128.0 +-0.52051145 6.9727111 -1.9523909 128.0 +-0.47725758 6.9690576 -1.9504721 128.0 +-0.43430766 6.9689751 -1.9496497 128.0 +-0.3917006 6.9743891 -1.9504721 128.0 +-0.34803358 6.9593725 -1.9455378 128.0 +-0.3063378 6.9844356 -1.9521168 128.0 +-0.26318595 6.9784956 -1.9499238 128.0 +-0.22072656 6.9915137 -1.9532133 128.0 +-0.17772527 6.9888906 -1.9521168 128.0 +-0.13491331 6.9936957 -1.9532133 128.0 +-0.091731489 6.9741983 -1.9474567 128.0 +-0.048896067 6.9688597 -1.9458119 128.0 +-0.00613232 6.9661436 -1.9449896 128.0 +0.036656238 6.9747052 -1.9474567 128.0 +0.079440631 6.9733872 -1.9471825 128.0 +0.12232783 6.978538 -1.9488273 128.0 +0.16507694 6.9747715 -1.948005 128.0 +0.20801322 6.9784336 -1.9493755 128.0 +0.25082818 6.977026 -1.9493755 128.0 +0.29403758 6.9849639 -1.9521168 128.0 +0.33693728 6.9839892 -1.9523909 128.0 +0.38009697 6.9875517 -1.9540358 128.0 +0.42162898 6.9630094 -1.9477308 128.0 +0.46319398 6.9430194 -1.9427965 128.0 +0.50711393 6.9582701 -1.948005 128.0 +0.54926938 6.9483166 -1.946086 128.0 +0.59197474 6.9457741 -1.9463601 128.0 +0.63204485 6.9142375 -1.9384105 128.0 +0.67520487 6.9178863 -1.9406035 128.0 +0.71883029 6.9250917 -1.943893 128.0 +0.76193899 6.9262862 -1.9455378 128.0 +0.8047564 6.9243464 -1.9463601 128.0 +0.84746194 6.9211874 -1.9469084 128.0 +0.88745993 6.8967805 -1.9414259 128.0 +0.92500544 6.8559418 -1.9312831 128.0 +0.96813029 6.8577552 -1.9334762 128.0 +1.0117328 6.8621516 -1.9364916 128.0 +1.0538192 6.8558145 -1.9364916 128.0 +1.0961696 6.8511186 -1.9370399 128.0 +1.1394483 6.8518529 -1.9392328 128.0 +1.1817961 6.8466277 -1.9397811 128.0 +1.2256466 6.8496609 -1.9427965 128.0 +1.26485 6.8268819 -1.9384105 128.0 +1.3054485 6.8123808 -1.9364916 128.0 +1.346477 6.8004689 -1.9353951 128.0 +1.3877935 6.7901945 -1.9348468 128.0 +1.431216 6.7900205 -1.9373139 128.0 +1.4704031 6.7698336 -1.9340245 128.0 +1.5152715 6.7757001 -1.9384105 128.0 +1.5555243 6.7606516 -1.9367657 128.0 +1.5969777 6.7509799 -1.9367657 128.0 +1.6429123 6.7597442 -1.9422482 128.0 +1.6878502 6.7635326 -1.9463601 128.0 +1.7243098 6.7334843 -1.9406035 128.0 +1.7655933 6.7227774 -1.9406035 128.0 +1.8070601 6.7127457 -1.9408776 128.0 +1.8443804 6.6876249 -1.9367657 128.0 +1.8895611 6.6909904 -1.9411517 128.0 +1.9273769 6.6681838 -1.9378622 128.0 +1.9679831 6.6553097 -1.9375881 128.0 +2.0065558 6.6357446 -1.9353951 128.0 +2.044111 6.6132007 -1.9323797 128.0 +2.088994 6.6142898 -1.9364916 128.0 +2.1271775 6.5940251 -1.9342985 128.0 +2.1724107 6.5954642 -1.9386846 128.0 +2.213758 6.5847449 -1.939507 128.0 +2.2485037 6.5546637 -1.9345727 128.0 +2.2880447 6.538928 -1.9340245 128.0 +2.3268313 6.5211425 -1.932928 128.0 +2.3654857 6.5031276 -1.9318314 128.0 +2.4030039 6.4821787 -1.9299126 128.0 +2.4444315 6.4718103 -1.9312831 128.0 +2.4865127 6.4629731 -1.933202 128.0 +2.5264726 6.4484897 -1.9334762 128.0 +2.5674171 6.4364395 -1.9345727 128.0 +2.6046917 6.4152184 -1.932928 128.0 +2.6418025 6.3937826 -1.9312831 128.0 +2.6746497 6.3623805 -1.926623 128.0 +2.7136381 6.3458495 -1.926623 128.0 +2.7525244 6.3290796 -1.926623 128.0 +2.7913072 6.3120713 -1.926623 128.0 +2.8252532 6.2842994 -1.9233335 128.0 +2.8609622 6.2607226 -1.9214146 128.0 +2.9066138 6.2587509 -1.9263489 128.0 +2.9457827 6.242538 -1.9268972 128.0 +2.9794581 6.2148061 -1.9238818 128.0 +3.0179565 6.1972718 -1.9241558 128.0 +3.0537939 6.1743274 -1.9227853 128.0 +3.0808318 6.1339879 -1.9159321 128.0 +3.1210322 6.1201096 -1.9175768 128.0 +3.1510103 6.0863252 -1.9129167 128.0 +3.1963477 6.0822001 -1.917851 128.0 +3.2331548 6.0616245 -1.9175768 128.0 +3.2611325 6.0247569 -1.9120942 128.0 +3.3022046 6.0122199 -1.9145614 128.0 +3.3437135 6.0002456 -1.9173027 128.0 +3.3695831 5.9603605 -1.9109977 128.0 +3.4065702 5.9404073 -1.9112719 128.0 +3.4482739 5.9285378 -1.9142873 128.0 +3.4855628 5.9089246 -1.9148356 128.0 +3.5252092 5.8932037 -1.9167545 128.0 +3.5667884 5.8805075 -1.9197699 128.0 +3.5851731 5.8298392 -1.9101753 128.0 +3.600527 5.7750869 -1.8992103 128.0 +3.6287022 5.7415042 -1.8953725 128.0 +3.6809807 5.7458539 -1.9044187 128.0 +3.7151201 5.7215466 -1.9038705 128.0 +3.741699 5.6857896 -1.8994844 128.0 +3.7887871 5.6811266 -1.9057894 128.0 +3.8434968 5.6872549 -1.9159321 128.0 +3.8201859 5.5786586 -1.8866005 128.0 +3.8521514 5.5519528 -1.8855039 128.0 +3.9010763 5.5494552 -1.8929054 128.0 +3.9333801 5.5230637 -1.892083 128.0 +3.9913881 5.5323625 -1.9038705 128.0 +3.9997258 5.4728265 -1.8915347 128.0 +4.0349474 5.4505005 -1.8923571 128.0 +4.0469704 5.3971701 -1.8822144 128.0 +4.0794291 5.3714709 -1.8819402 128.0 +4.1205192 5.3570113 -1.8857781 128.0 +4.1846318 5.3718386 -1.9003068 128.0 +4.1907125 5.3120832 -1.887971 128.0 +4.2016196 5.2592196 -1.8781025 128.0 +4.2428827 5.2445555 -1.8822144 128.0 +4.2652326 5.2065191 -1.8778284 128.0 +4.3099918 5.1957946 -1.8835851 128.0 +4.3541613 5.18398 -1.8890676 128.0 +4.4095612 5.1850057 -1.8994844 128.0 +4.4199586 5.1330729 -1.8901641 128.0 +4.4494758 5.1036811 -1.8893417 128.0 +4.487071 5.0834937 -1.892083 128.0 +4.5098481 5.0465431 -1.8885193 128.0 +4.5568576 5.0366058 -1.8953725 128.0 +4.5753345 4.9950757 -1.8901641 128.0 +4.6065516 4.9676132 -1.8904382 128.0 +4.6349711 4.937151 -1.8896159 128.0 +4.6896892 4.934412 -1.8997586 128.0 +4.7138772 4.8993063 -1.8972914 128.0 +4.7431788 4.8696012 -1.8970172 128.0 +4.7709436 4.8383517 -1.8961949 128.0 +4.7923884 4.8008184 -1.8929054 128.0 +4.8190217 4.7686167 -1.8918089 128.0 +4.8626318 4.7530756 -1.8975655 128.0 +4.8923965 4.7238178 -1.8978397 128.0 +4.9025002 4.6757874 -1.8904382 128.0 +4.9289985 4.64364 -1.8896159 128.0 +4.9595103 4.6152744 -1.8904382 128.0 +4.9856119 4.5828037 -1.8896159 128.0 +5.0207572 4.5585914 -1.8923571 128.0 +5.0550766 4.5334778 -1.8948243 128.0 +5.1087127 4.5253329 -1.9046929 128.0 +5.1219087 4.4812355 -1.8992103 128.0 +5.150764 4.4509816 -1.8997586 128.0 +5.180172 4.4211664 -1.9005809 128.0 +5.1910262 4.3756614 -1.8945501 128.0 +5.2236896 4.34865 -1.8967432 128.0 +5.2473025 4.3140731 -1.8956467 128.0 +5.2684488 4.2775512 -1.8937278 128.0 +5.3013482 4.2505589 -1.8961949 128.0 +5.3303452 4.2203383 -1.8972914 128.0 +5.3667469 4.1958461 -1.9011291 128.0 +5.3908687 4.1616616 -1.9005809 128.0 +5.4201264 4.1314211 -1.9019516 128.0 +5.4476795 4.0998206 -1.902774 128.0 +5.4704175 4.0645967 -1.9019516 128.0 +5.4859495 4.024128 -1.8986621 128.0 +5.5097589 3.9898269 -1.8983879 128.0 +5.5317893 3.9542665 -1.8975655 128.0 +5.5575194 3.9213586 -1.8981137 128.0 +5.5783195 3.8849859 -1.8970172 128.0 +5.5925422 3.8441472 -1.8937278 128.0 +5.6398988 3.8259575 -1.9019516 128.0 +5.6440897 3.7784388 -1.8953725 128.0 +5.6679697 3.7442665 -1.8956467 128.0 +5.7045331 3.7183461 -1.9003068 128.0 +5.7361379 3.6889966 -1.9033222 128.0 +5.7570415 3.6527002 -1.902774 128.0 +5.783421 3.6198583 -1.9041445 128.0 +5.7940679 3.57723 -1.9003068 128.0 +5.8150868 3.5411108 -1.9000326 128.0 +5.830934 3.5018971 -1.8981137 128.0 +5.8605862 3.4709544 -1.9008551 128.0 +5.8875861 3.4383245 -1.902774 128.0 +5.9110723 3.403574 -1.9035963 128.0 +5.9318452 3.3672402 -1.9035963 128.0 +5.9523945 3.3307796 -1.9035963 128.0 +5.9744039 3.2951226 -1.9041445 128.0 +5.9784565 3.2496753 -1.8989362 128.0 +6.0067606 3.2174723 -1.9016775 128.0 +6.0365953 3.1859419 -1.904967 128.0 +6.0654159 3.1537228 -1.9079823 128.0 +6.0743814 3.1111853 -1.9046929 128.0 +6.0847712 3.0695231 -1.9019516 128.0 +6.1112418 3.0359812 -1.9044187 128.0 +6.130619 2.9988487 -1.9046929 128.0 +6.1463051 2.9599235 -1.9038705 128.0 +6.1686959 2.9242148 -1.9052411 128.0 +6.183908 2.8850894 -1.9044187 128.0 +6.2172256 2.8543148 -1.909353 128.0 +6.197813 2.7994838 -1.8978397 128.0 +6.2491479 2.7766333 -1.9085306 128.0 +6.2678294 2.7390072 -1.9090788 128.0 +6.276566 2.6970794 -1.9066117 128.0 +6.2965403 2.6600134 -1.9077083 128.0 +6.3207364 2.6246483 -1.9101753 128.0 +6.3287086 2.582545 -1.9077083 128.0 +6.3435431 2.5433064 -1.9074341 128.0 +6.362608 2.5057449 -1.9085306 128.0 +6.369791 2.4635348 -1.9060634 128.0 +6.3928785 2.4274771 -1.9085306 128.0 +6.4193673 2.3925724 -1.9120942 128.0 +6.4303145 2.3518174 -1.9109977 128.0 +6.4382877 2.3100436 -1.9090788 128.0 +6.4505262 2.2698569 -1.9085306 128.0 +6.4616051 2.2292936 -1.9077083 128.0 +6.4660521 2.1865227 -1.904967 128.0 +6.4884753 2.1498318 -1.9077083 128.0 +6.4997149 2.109385 -1.9071599 128.0 +6.5143685 2.0700464 -1.9077083 128.0 +6.5379672 2.033464 -1.9109977 128.0 +6.5356007 1.988829 -1.9066117 128.0 +6.5587416 1.9519825 -1.9099013 128.0 +6.5825992 1.9151953 -1.9134649 128.0 +6.5979266 1.8758215 -1.9145614 128.0 +6.6139455 1.8365889 -1.9159321 128.0 +6.6297312 1.7972302 -1.9173027 128.0 +6.6350555 1.7550412 -1.9156579 128.0 +6.6391811 1.7126144 -1.9137391 128.0 +6.6486316 1.6716104 -1.9134649 128.0 +6.6681042 1.6330719 -1.9162061 128.0 +6.6798701 1.5925726 -1.9167545 128.0 +6.6923265 1.5522077 -1.9175768 128.0 +6.7045388 1.51175 -1.9183992 128.0 +6.7042947 1.4685249 -1.9156579 128.0 +6.7178826 1.4283608 -1.9170285 128.0 +6.7255783 1.3869195 -1.9167545 128.0 +6.7283034 1.3444949 -1.9151096 128.0 +6.7420917 1.3042818 -1.9167545 128.0 +6.7603655 1.2648346 -1.9197699 128.0 +6.762321 1.2223034 -1.918125 128.0 +6.7706413 1.1809528 -1.9183992 128.0 +6.7938824 1.1420979 -1.9230593 128.0 +6.7998128 1.1002363 -1.9227853 128.0 +6.8054857 1.058345 -1.9225111 128.0 +6.8004375 1.0148633 -1.9192215 128.0 +6.7941604 0.97134739 -1.9156579 128.0 +6.8123794 0.93133503 -1.9192215 128.0 +6.8208265 0.88989097 -1.9200439 128.0 +6.8442912 0.85027611 -1.9252523 128.0 +6.8560648 0.80905366 -1.9271712 128.0 +6.8322282 0.76376349 -1.9189475 128.0 +6.8597388 0.7242521 -1.9255265 128.0 +6.8774509 0.68348014 -1.9293643 128.0 +6.8728976 0.64046443 -1.9268972 128.0 +6.866159 0.59736359 -1.9238818 128.0 +6.8744879 0.55561 -1.9252523 128.0 +6.8710546 0.51291698 -1.9233335 128.0 +6.8731132 0.47068155 -1.9230593 128.0 +6.8797112 0.42873955 -1.9241558 128.0 +6.8898935 0.38695022 -1.9263489 128.0 +6.8930988 0.34471542 -1.926623 128.0 +6.8970056 0.30249807 -1.9271712 128.0 +6.9016151 0.26028204 -1.9279937 128.0 +6.9059658 0.21802083 -1.928816 128.0 +6.8994823 0.1754465 -1.926623 128.0 +6.9090829 0.13327619 -1.9290901 128.0 +6.9184251 0.090994678 -1.9315573 128.0 +6.9150062 0.0485151 -1.9304608 128.0 +6.9219055 0.0060908198 -1.9323797 128.0 +6.9189277 -0.036366314 -1.9315573 128.0 +6.9099197 -0.078721277 -1.9290901 128.0 +6.9093065 -0.12111826 -1.9290901 128.0 +6.8997803 -0.1633064 -1.926623 128.0 +6.9034548 -0.20578258 -1.9279937 128.0 +6.8866849 -0.24758556 -1.9236076 128.0 +6.9071355 -0.29076582 -1.9299126 128.0 +6.8927341 -0.33254001 -1.9263489 128.0 +6.9068885 -0.37571383 -1.9310091 128.0 +6.9092531 -0.41837698 -1.9323797 128.0 +6.912313 -0.46114725 -1.9340245 128.0 +6.8920889 -0.50229448 -1.9290901 128.0 +6.894629 -0.54502851 -1.9307349 128.0 +6.895946 -0.58773094 -1.9321055 128.0 +6.8902946 -0.6298576 -1.9315573 128.0 +6.8815145 -0.67165697 -1.9301866 128.0 +6.8868294 -0.71486086 -1.932928 128.0 +6.8670187 -0.75542259 -1.9285419 128.0 +6.8737173 -0.79887515 -1.9318314 128.0 +6.8734589 -0.84162062 -1.933202 128.0 +6.87675 -0.88488364 -1.9356692 128.0 +6.8692851 -0.9268049 -1.9351209 128.0 +6.8539462 -0.96759278 -1.9323797 128.0 +6.845026 -1.0092089 -1.9315573 128.0 +6.8453584 -1.0522126 -1.9334762 128.0 +6.8482695 -1.095714 -1.9362174 128.0 +6.8594422 -1.1407099 -1.9414259 128.0 +6.852314 -1.1827772 -1.9414259 128.0 +6.8591275 -1.22734 -1.9455378 128.0 +6.8249903 -1.2644998 -1.9378622 128.0 +6.8180475 -1.3065343 -1.9381363 128.0 +6.7976384 -1.3459169 -1.9345727 128.0 +6.7760611 -1.3849058 -1.9307349 128.0 +6.7552023 -1.423879 -1.9271712 128.0 +6.7801709 -1.4726478 -1.9370399 128.0 +6.7578683 -1.5112848 -1.933202 128.0 +6.7587771 -1.5550932 -1.9362174 128.0 +6.7500439 -1.5967563 -1.9364916 128.0 +6.7457266 -1.6395062 -1.9381363 128.0 +6.7224765 -1.6776072 -1.9342985 128.0 +6.7073979 -1.7176313 -1.932928 128.0 +6.6883612 -1.7565567 -1.9304608 128.0 +6.688601 -1.8005619 -1.9337503 128.0 +6.6644478 -1.8379897 -1.9299126 128.0 +6.6511936 -1.8783247 -1.9293643 128.0 +6.6275325 -1.9156296 -1.9258006 128.0 +6.5713863 -1.9431722 -1.9126425 128.0 +6.4995041 -1.9653673 -1.8948243 128.0 +6.3761454 -1.9708532 -1.8616549 128.0 +6.2593875 -1.9769276 -1.8304044 128.0 +6.1345615 -1.9789879 -1.7966868 128.0 +6.0665836 -1.9982423 -1.779965 128.0 +5.988575 -2.0133672 -1.7602279 128.0 +5.913341 -2.0285468 -1.7413131 128.0 +5.849041 -2.0466905 -1.7256879 128.0 +5.7693448 -2.058629 -1.7054025 128.0 +5.7303953 -2.0844584 -1.6974528 128.0 +5.6814275 -2.1062112 -1.6864877 128.0 +5.6171155 -2.1216662 -1.6708624 128.0 +5.5465465 -2.1339951 -1.6533183 128.0 +5.4840989 -2.1486957 -1.6382413 128.0 +5.2215881 -2.0829098 -1.5617598 128.0 +5.1757398 -2.1015255 -1.5516171 128.0 +5.0187564 -2.0737591 -1.5072086 128.0 +4.8924575 -2.0568168 -1.4721203 128.0 +4.8240366 -2.0629792 -1.4548503 128.0 +4.7081027 -2.047672 -1.4227774 128.0 +4.6365194 -2.0504661 -1.404411 128.0 +4.5256095 -2.0347168 -1.3737087 128.0 +4.5716457 -2.0892243 -1.3920752 128.0 +4.3703351 -2.0297523 -1.3328638 128.0 +4.3186598 -2.0380638 -1.320528 128.0 +4.2514386 -2.0383358 -1.3032581 128.0 +4.2103186 -2.0504906 -1.2942119 128.0 +4.1830029 -2.0690389 -1.2895517 128.0 +4.1624942 -2.0907822 -1.2870846 128.0 +4.1187439 -2.1005569 -1.277216 128.0 +4.0348911 -2.0890954 -1.2544634 128.0 +3.8772719 -2.0377679 -1.2078618 128.0 +3.7730505 -2.0126455 -1.1782562 128.0 +3.7124214 -2.0096674 -1.1626309 128.0 +3.6713603 -2.016669 -1.1533105 128.0 +3.6488359 -2.0335412 -1.150021 128.0 +3.6195457 -2.046427 -1.1445385 128.0 +3.598578 -2.0638142 -1.1417972 128.0 +3.5767024 -2.0805376 -1.1387818 128.0 +3.5265934 -2.0804594 -1.1264461 128.0 +3.4939535 -2.0902116 -1.1198671 128.0 +3.4588606 -2.0981462 -1.1124656 128.0 +3.4295371 -2.1092553 -1.1069831 128.0 +3.3936794 -2.116014 -1.0993075 128.0 +3.316407 -2.0962119 -1.0776515 128.0 +3.3051021 -2.117559 -1.0781997 128.0 +3.3565755 -2.1796932 -1.1001298 128.0 +3.309396 -2.1780457 -1.0886165 128.0 +3.2743661 -2.1839051 -1.0812151 128.0 +3.2441709 -2.1926482 -1.0754584 128.0 +3.1703491 -2.1712205 -1.0546248 128.0 +3.2130687 -2.229553 -1.0740879 128.0 +3.1843789 -2.2387187 -1.0688794 128.0 +3.1658821 -2.2548687 -1.0672346 128.0 +3.1473074 -2.2708759 -1.0655899 128.0 +3.1271026 -2.2856054 -1.0633968 128.0 +3.0998788 -2.2950234 -1.0587367 128.0 +3.0788133 -2.3088088 -1.0562695 128.0 +3.0814385 -2.3404517 -1.0623003 128.0 +3.0693069 -2.3610737 -1.0631227 128.0 +3.0585554 -2.382817 -1.0644934 128.0 +3.0310409 -2.3914139 -1.0598332 128.0 +3.0072937 -2.4027646 -1.0565437 128.0 +3.0111864 -2.4362922 -1.0633968 128.0 +3.0423071 -2.4925048 -1.0803927 128.0 +2.9980876 -2.4871814 -1.0697018 128.0 +2.9820337 -2.5049119 -1.0694276 128.0 +2.956351 -2.5144403 -1.0655899 128.0 +2.9474261 -2.5381801 -1.0680571 128.0 +2.8991749 -2.5277805 -1.0557213 128.0 +2.898752 -2.5588856 -1.061478 128.0 +2.8521602 -2.5490706 -1.0496905 128.0 +2.845737 -2.5749102 -1.0532541 128.0 +2.8270473 -2.5897248 -1.0521576 128.0 +2.8287339 -2.6233692 -1.0590109 128.0 +2.828711 -2.6558146 -1.0653157 128.0 +2.7761114 -2.6386728 -1.0510612 128.0 +2.7806599 -2.6756592 -1.0592849 128.0 +2.7958815 -2.7235355 -1.0718948 128.0 +2.7866504 -2.7480667 -1.0749102 128.0 +2.7588458 -2.7542434 -1.0705242 128.0 +2.726335 -2.755398 -1.0642192 128.0 +2.7241669 -2.7872036 -1.07025 128.0 +2.7043417 -2.8010991 -1.0691535 128.0 +2.6632073 -2.7925882 -1.0592849 128.0 +2.6512983 -2.8144763 -1.061478 128.0 +2.613668 -2.8088682 -1.0529801 128.0 +2.5944314 -2.8227284 -1.0521576 128.0 +2.5835276 -2.8457141 -1.054899 128.0 +2.5602388 -2.8550694 -1.0524318 128.0 +2.5535135 -2.8829625 -1.057092 128.0 +2.5307097 -2.8927863 -1.054899 128.0 +2.5047374 -2.8988011 -1.0513352 128.0 +2.4819086 -2.9082634 -1.0491422 128.0 +2.4621575 -2.9212317 -1.0483198 128.0 +2.4349568 -2.9251983 -1.0442079 128.0 +2.4108543 -2.9326556 -1.0414667 128.0 +2.3831151 -2.9354479 -1.0370806 128.0 +2.3494163 -2.9305084 -1.0299534 128.0 +2.3385551 -2.9539163 -1.0332428 128.0 +2.3120928 -2.9576035 -1.0294051 128.0 +2.2915509 -2.9686897 -1.0283086 128.0 +2.2756245 -2.9857538 -1.0294051 128.0 +2.2659364 -3.0111861 -1.033517 128.0 +2.250859 -3.0296643 -1.0351617 128.0 +2.240191 -3.0542738 -1.0389996 128.0 +2.2287412 -3.0780876 -1.0425632 128.0 +2.2193205 -3.1050043 -1.0472233 128.0 +2.1941276 -3.1099203 -1.0442079 128.0 +2.1865468 -3.1398964 -1.0499647 128.0 +2.1677845 -3.1540463 -1.0502387 128.0 +2.1559498 -3.1784296 -1.0540766 128.0 +2.1299863 -3.182009 -1.050787 128.0 +2.0923975 -3.1677372 -1.0414667 128.0 +2.0466616 -3.1402352 -1.0277604 128.0 +2.0330777 -3.1616313 -1.0307758 128.0 +2.0342507 -3.206527 -1.0417408 128.0 +2.0048423 -3.2034605 -1.0365324 128.0 +1.9967694 -3.2345219 -1.0428374 128.0 +2.0184045 -3.3148854 -1.0655899 128.0 +1.9772291 -3.2925825 -1.0540766 128.0 +1.9408151 -3.2773473 -1.0450304 128.0 +1.9221243 -3.2916856 -1.0458528 128.0 +1.8846134 -3.2734158 -1.0359842 128.0 +1.861169 -3.2790637 -1.0340652 128.0 +1.8386657 -3.2862258 -1.0326946 128.0 +1.8128932 -3.2873409 -1.0294051 128.0 +1.8064681 -3.32375 -1.0376289 128.0 +1.7942144 -3.3500307 -1.0425632 128.0 +1.7754209 -3.3643785 -1.0436597 128.0 +1.7582936 -3.3820348 -1.0458528 128.0 +1.7283012 -3.3747852 -1.040096 128.0 +1.6984643 -3.3672957 -1.0343394 128.0 +1.683334 -3.3888502 -1.0379031 128.0 +1.6646218 -3.4034343 -1.0392736 128.0 +1.6395342 -3.4049199 -1.0365324 128.0 +1.6087233 -3.3940604 -1.0299534 128.0 +1.5964072 -3.4221687 -1.03571 128.0 +1.5866154 -3.4563706 -1.0433856 128.0 +1.5697329 -3.4756813 -1.046401 128.0 +1.5452526 -3.4782171 -1.0442079 128.0 +1.527733 -3.4964452 -1.0469493 128.0 +1.4849857 -3.4562745 -1.0315981 128.0 +1.2829634 -3.0374491 -0.89919472 128.0 +1.3535653 -3.2601948 -0.96553349 128.0 +1.4629065 -3.5854175 -1.0631227 128.0 +1.4501854 -3.6175339 -1.07025 128.0 +1.4254942 -3.6201005 -1.0683311 128.0 +1.4129695 -3.653893 -1.0760067 128.0 +1.3826699 -3.6418161 -1.0697018 128.0 +1.3693678 -3.6745617 -1.0771033 128.0 +1.3517511 -3.6964421 -1.0812151 128.0 +1.3313186 -3.7110031 -1.0831341 128.0 +1.3136317 -3.7336164 -1.08752 128.0 +1.310461 -3.7988789 -1.1047901 128.0 +1.2772671 -3.7776964 -1.096018 128.0 +1.2440803 -3.7553377 -1.0869718 128.0 +1.1978552 -3.6915531 -1.0655899 128.0 +1.1472173 -3.6108479 -1.0392736 128.0 +1.1198978 -3.6012902 -1.0343394 128.0 +1.0188117 -3.3486481 -0.95703554 128.0 +0.98946559 -3.3253412 -0.94826347 128.0 +0.96259385 -3.3091884 -0.94168442 128.0 +0.93964046 -3.3057823 -0.93894315 128.0 +0.92191249 -3.3207519 -0.94168442 128.0 +0.90655291 -3.3449097 -0.94716698 128.0 +0.80680794 -3.0510442 -0.85889804 128.0 +0.78759134 -3.054075 -0.8583498 128.0 +0.94685864 -3.7667336 -1.0664122 128.0 +0.90107536 -3.6799991 -1.0392736 128.0 +0.88026303 -3.6929426 -1.0414667 128.0 +0.85693496 -3.6954637 -1.0406443 128.0 +0.83805245 -3.7175386 -1.0455786 128.0 +0.81666708 -3.7291865 -1.0474975 128.0 +0.79897141 -3.7585845 -1.0546248 128.0 +0.77511704 -3.7596486 -1.0535283 128.0 +0.75863123 -3.7973402 -1.0631227 128.0 +0.73714399 -3.8113654 -1.065864 128.0 +0.71781307 -3.837558 -1.0721689 128.0 +0.67269272 -3.7226503 -1.0376289 128.0 +0.64289558 -3.6869178 -1.0261155 128.0 +0.62153691 -3.6983802 -1.0283086 128.0 +0.61066443 -3.7752233 -1.0494164 128.0 +0.59177583 -3.8064568 -1.057366 128.0 +0.56400663 -3.7805305 -1.0488682 128.0 +0.54488403 -3.8124802 -1.057092 128.0 +0.53138512 -3.8881662 -1.0779256 128.0 +0.50166768 -3.8465343 -1.0650417 128.0 +0.4758026 -3.8314073 -1.0598332 128.0 +0.44856352 -3.8027377 -1.050787 128.0 +0.43056676 -3.8532052 -1.0644934 128.0 +0.40418801 -3.8299525 -1.057092 128.0 +0.37963349 -3.8218336 -1.0540766 128.0 +0.35751531 -3.8384542 -1.0581884 128.0 +0.33445671 -3.846324 -1.0598332 128.0 +0.30852395 -3.8195469 -1.0516094 128.0 +0.28680134 -3.8443847 -1.0581884 128.0 +0.26373333 -3.8537476 -1.0603814 128.0 +0.24139941 -3.8764095 -1.0664122 128.0 +0.2180955 -3.8864594 -1.0688794 128.0 +0.19443688 -3.8915663 -1.0699759 128.0 +0.17004868 -3.8811569 -1.0666864 128.0 +0.14652154 -3.8898153 -1.0688794 128.0 +0.12231691 -3.8800678 -1.065864 128.0 +0.0980414 -3.862479 -1.0606556 128.0 +0.074284017 -3.8601234 -1.0598332 128.0 +0.050622754 -3.8624296 -1.0603814 128.0 +0.026895167 -3.8588209 -1.0592849 128.0 +0.0031975335 -3.8377559 -1.0532541 128.0 +-0.020400541 -3.8473201 -1.0559955 128.0 +-0.043995973 -3.8461609 -1.0557213 128.0 +-0.067829937 -3.8592803 -1.0595591 128.0 +-0.091463357 -3.8568685 -1.0590109 128.0 +-0.11558451 -3.8716149 -1.0633968 128.0 +-0.13913114 -3.8650665 -1.0617521 128.0 +-0.16304608 -3.8689442 -1.0631227 128.0 +-0.18622696 -3.856344 -1.0598332 128.0 +-0.209729 -3.852248 -1.0590109 128.0 +-0.23243287 -3.8355296 -1.0546248 128.0 +-0.25896898 -3.8791306 -1.0675088 128.0 +-0.28374386 -3.8908968 -1.0713465 128.0 +-0.30943015 -3.9120915 -1.0779256 128.0 +-0.33293879 -3.9043698 -1.0762808 128.0 +-0.36056387 -3.9424772 -1.0877942 128.0 +-0.38381404 -3.930619 -1.0850528 128.0 +-0.40752769 -3.9243639 -1.0839564 128.0 +-0.43265048 -3.9313488 -1.0866977 128.0 +-0.4542124 -3.9066489 -1.0803927 128.0 +-0.47572124 -3.8837423 -1.0746361 128.0 +-0.50027859 -3.8864732 -1.0762808 128.0 +-0.52501583 -3.8900018 -1.0781997 128.0 +-0.8348285 -5.9131145 -1.6615422 128.0 +-0.87516123 -5.9354715 -1.6694918 128.0 +-0.90995759 -5.9195342 -1.6664764 128.0 +-0.94413567 -5.9005446 -1.6626387 128.0 +-0.97984982 -5.8917942 -1.6618162 128.0 +-1.016964 -5.8913574 -1.663461 128.0 +-1.0515695 -5.8764863 -1.6609938 128.0 +-1.0877823 -5.8708692 -1.661268 128.0 +-1.1252322 -5.8716402 -1.663461 128.0 +-1.1603051 -5.8599086 -1.6620904 128.0 +-1.1989342 -5.86587 -1.6659281 128.0 +-1.2301449 -5.8358183 -1.6593491 128.0 +-1.2724597 -5.8582339 -1.6681212 128.0 +-1.3117385 -5.8653321 -1.6725072 128.0 +-1.3420976 -5.8328056 -1.6653799 128.0 +-1.3749845 -5.8122945 -1.6618162 128.0 +-1.4094869 -5.7990756 -1.6604456 128.0 +-1.4510955 -5.8145785 -1.667573 128.0 +-1.4826909 -5.7897272 -1.6629127 128.0 +-1.5213631 -5.7926126 -1.6664764 128.0 +-1.5536282 -5.7710962 -1.6629127 128.0 +-1.5895209 -5.763309 -1.663461 128.0 +-1.6277285 -5.763628 -1.6664764 128.0 +-1.6622618 -5.7507601 -1.6656541 128.0 +-1.6969712 -5.7386079 -1.6651058 128.0 +-1.7254715 -5.7059946 -1.6585268 128.0 +-1.7664131 -5.7145948 -1.6642834 128.0 +-1.8040502 -5.7119026 -1.6667506 128.0 +-1.2666739 -3.9260244 -1.1352181 128.0 +-1.2856259 -3.9026499 -1.130558 128.0 +-1.9116397 -5.6859322 -1.6692177 128.0 +-1.9455559 -5.6713667 -1.6683953 128.0 +-1.9749194 -5.6438904 -1.6637352 128.0 +-2.0159752 -5.6497822 -1.6692177 128.0 +-2.052247 -5.6418247 -1.6705884 128.0 +-2.0881629 -5.6327333 -1.6716849 128.0 +-2.1220059 -5.6180153 -1.6711366 128.0 +-2.1567829 -5.6057863 -1.6714107 128.0 +-2.1928926 -5.5969243 -1.6727813 128.0 +-2.231112 -5.5931897 -1.6757967 128.0 +-2.2664745 -5.582068 -1.6766192 128.0 +-2.3043547 -5.5769444 -1.6793604 128.0 +-2.3359222 -5.5564942 -1.6774415 128.0 +-1.3004117 -3.0404825 -0.90193599 128.0 +-1.3190433 -3.0324461 -0.90193599 128.0 +-2.4424701 -5.5231109 -1.6807311 128.0 +-2.4798617 -5.5159144 -1.6831982 128.0 +-2.5064664 -5.4848495 -1.6782639 128.0 +-2.5445287 -5.4789615 -1.6812793 128.0 +-1.6039016 -3.3984685 -1.0305016 128.0 +-1.618073 -3.3746879 -1.0261155 128.0 +-1.6353812 -3.3577788 -1.0239226 128.0 +-1.6529692 -3.3416469 -1.0220037 128.0 +-1.6747369 -3.3340197 -1.0228261 128.0 +-1.696473 -3.3262513 -1.0236484 128.0 +-1.7252504 -3.3320062 -1.0288569 128.0 +-1.7586353 -3.346046 -1.0368066 128.0 +-2.1198983 -3.97416 -1.2432243 128.0 +-2.8940239 -5.3464494 -1.6922444 128.0 +-2.9239969 -5.3235335 -1.6905996 128.0 +-2.9308619 -5.2592869 -1.6755226 128.0 +-2.9626038 -5.2403674 -1.6752485 128.0 +-2.9884837 -5.2112451 -1.6716849 128.0 +-3.0189526 -5.1903157 -1.6708624 128.0 +-3.0531857 -5.1758361 -1.6722331 128.0 +-3.0972276 -5.1776381 -1.6790862 128.0 +-3.1294372 -5.1593585 -1.6793604 128.0 +-3.1575096 -5.134325 -1.6774415 128.0 +-3.2016723 -5.1352568 -1.6842947 128.0 +-3.2146266 -5.0862479 -1.6744261 128.0 +-3.2545929 -5.0801945 -1.6790862 128.0 +-3.2919874 -5.0698085 -1.6823758 128.0 +-3.3246191 -5.0519238 -1.6831982 128.0 +-3.3582222 -5.03543 -1.6845688 128.0 +-3.3659029 -4.9804654 -1.6727813 128.0 +-3.4300847 -5.0089169 -1.6897773 128.0 +-3.4278638 -4.9403663 -1.6733296 128.0 +-3.466408 -4.9310417 -1.6774415 128.0 +-3.4397004 -4.8297753 -1.6494806 128.0 +-2.201673 -3.0513749 -1.0318723 128.0 +-2.2197869 -3.0370317 -1.0315981 128.0 +-3.5400333 -4.7818756 -1.6552372 128.0 +-3.6148818 -4.8208513 -1.6768932 128.0 +-3.6193852 -4.7656465 -1.6651058 128.0 +-3.680218 -4.7845135 -1.6799086 128.0 +-3.7142334 -4.7679114 -1.6821016 128.0 +-3.7517574 -4.7556028 -1.6859394 128.0 +-3.7616596 -4.7084479 -1.6771674 128.0 +-3.7965274 -4.6927552 -1.6799086 128.0 +-3.8252501 -4.6693721 -1.6799086 128.0 +-3.8581264 -4.6509943 -1.6818275 128.0 +-3.9045277 -4.6485906 -1.6897773 128.0 +-3.9392073 -4.6318717 -1.6925185 128.0 +-3.9669263 -4.606885 -1.6922444 128.0 +-3.9951189 -4.5824575 -1.6922444 128.0 +-4.0212522 -4.5556946 -1.691422 128.0 +-4.0561781 -4.5388231 -1.6944374 128.0 +-4.0684676 -4.4967337 -1.6878583 128.0 +-4.0972815 -4.4731035 -1.6884066 128.0 +-4.1200738 -4.4429426 -1.6864877 128.0 +-4.1492319 -4.419682 -1.6873101 128.0 +-4.1610355 -4.3781056 -1.6810051 128.0 +-4.1871543 -4.3517985 -1.6807311 128.0 +-4.2157903 -4.3280916 -1.6815534 128.0 +-4.2483444 -4.3083057 -1.6840205 128.0 +-4.2604327 -4.2678638 -1.6782639 128.0 +-4.2865396 -4.241642 -1.6782639 128.0 +-4.3124852 -4.21526 -1.6782639 128.0 +-4.3251243 -4.1760273 -1.6730554 128.0 +-4.3388362 -4.1381259 -1.6683953 128.0 +-4.3746448 -4.1213179 -1.6725072 128.0 +-4.4061861 -4.1002946 -1.6749743 128.0 +-4.4213505 -4.0640697 -1.6711366 128.0 +-4.447628 -4.0381575 -1.6716849 128.0 +-4.4465489 -3.9876747 -1.6618162 128.0 +-4.4666142 -3.9564898 -1.6601715 128.0 +-4.5016627 -3.938508 -1.6642834 128.0 +-4.5388412 -3.9221313 -1.6692177 128.0 +-4.5233226 -3.8604922 -1.6544148 128.0 +-4.5616307 -3.8450623 -1.6598973 128.0 +-4.5747905 -3.8083854 -1.6560596 128.0 +-4.5936155 -3.7765787 -1.6544148 128.0 +-4.6301398 -3.7592337 -1.6593491 128.0 +-4.665123 -3.7403789 -1.6637352 128.0 +-4.6894937 -3.7128778 -1.6642834 128.0 +-4.7083993 -3.681072 -1.6629127 128.0 +-4.7461214 -3.6638668 -1.6683953 128.0 +-4.7654538 -3.632344 -1.6672988 128.0 +-4.7907252 -3.6053486 -1.6683953 128.0 +-4.80581 -3.5707231 -1.6659281 128.0 +-4.8369341 -3.5479941 -1.6692177 128.0 +-4.8648438 -3.5227611 -1.6714107 128.0 +-4.8777623 -3.4866924 -1.6683953 128.0 +-4.9108505 -3.4650147 -1.6725072 128.0 +-4.9391212 -3.439764 -1.6749743 128.0 +-4.9696441 -3.415931 -1.6782639 128.0 +-4.9857354 -3.382134 -1.6766192 128.0 +-4.9944072 -3.3434529 -1.6725072 128.0 +-5.024457 -3.3191063 -1.6757967 128.0 +-5.0423107 -3.2866387 -1.6749743 128.0 +-5.0769415 -3.2650023 -1.6799086 128.0 +-5.060339 -3.2106023 -1.667573 128.0 +-5.0750527 -3.1764305 -1.6659281 128.0 +-5.1189957 -3.1603887 -1.674152 128.0 +-5.1440406 -3.1324213 -1.6760708 128.0 +-5.1598663 -3.0988183 -1.6749743 128.0 +-5.180438 -3.0680797 -1.6755226 128.0 +-5.1966743 -3.0347805 -1.6747003 128.0 +-5.235199 -3.0143552 -1.6812793 128.0 +-5.2519236 -2.9812262 -1.6807311 128.0 +-5.2877407 -2.9588079 -1.6864877 128.0 +-5.3209534 -2.9346683 -1.691422 128.0 +-5.33886 -2.9019642 -1.691422 128.0 +-5.3811493 -2.8823209 -1.6993717 128.0 +-5.3953314 -2.8474529 -1.6982752 128.0 +-5.4220872 -2.8191748 -1.7012906 128.0 +-5.4521222 -2.7924292 -1.7054025 128.0 +-5.4837499 -2.7662873 -1.7100626 128.0 +-5.4937301 -2.7291644 -1.7078696 128.0 +-5.5103726 -2.6954041 -1.7078696 128.0 +-5.5424032 -2.669054 -1.7128038 128.0 +-5.5838761 -2.646944 -1.7207536 128.0 +-5.613956 -2.6191385 -1.7251396 128.0 +-5.6640058 -2.6002934 -1.7358305 128.0 +-5.6605735 -2.5567803 -1.7297997 128.0 +-5.6875796 -2.5270765 -1.7333634 128.0 +-5.7338204 -2.5056107 -1.7429578 128.0 +-5.7517371 -2.4715207 -1.7437803 128.0 +-5.772995 -2.4388022 -1.7456992 128.0 +-5.7878504 -2.4033339 -1.7456992 128.0 +-5.8265285 -2.3775868 -1.7531005 128.0 +-5.8383298 -2.3407173 -1.7522782 128.0 +-5.853477 -2.3052025 -1.7525523 128.0 +-5.8872437 -2.2768757 -1.7585831 128.0 +-5.8867188 -2.2352464 -1.7541971 128.0 +-5.9030266 -2.2000918 -1.7550194 128.0 +-5.9426069 -2.1734111 -1.7629691 128.0 +-5.9341063 -2.1291111 -1.7563901 128.0 +-5.8908157 -2.072865 -1.7393942 128.0 +-5.9470601 -2.0517383 -1.7525523 128.0 +-5.9886889 -2.025069 -1.7613244 128.0 +-6.0621643 -2.008554 -1.7796909 128.0 +-6.1283426 -1.9888374 -1.7958643 128.0 +-6.2018371 -1.9707141 -1.8142309 128.0 +-6.3102322 -1.9626184 -1.8430142 128.0 +-6.4472785 -1.9619464 -1.8802955 128.0 +-6.6039057 -1.9654269 -1.9233335 128.0 +-6.70541 -1.9509346 -1.9499238 128.0 +-6.7459297 -1.9179088 -1.9584217 128.0 +-6.7557178 -1.8759657 -1.9578735 128.0 +-6.7745266 -1.8364915 -1.9600666 128.0 +-6.7949648 -1.797349 -1.9628078 128.0 +-6.8095899 -1.7565831 -1.9639043 128.0 +-6.8277011 -1.7166435 -1.9660974 128.0 +-6.8446445 -1.676319 -1.9680161 128.0 +-6.8594785 -1.6354048 -1.9693868 128.0 +-6.8778152 -1.5952412 -1.971854 128.0 +-6.8649588 -1.5479316 -1.9652749 128.0 +-6.8348727 -1.497135 -1.9537616 128.0 +-6.8862596 -1.4641715 -1.9660974 128.0 +-6.9252534 -1.4281079 -1.9748694 128.0 +-6.886734 -1.3761632 -1.961163 128.0 +-6.8997693 -1.3347948 -1.9625336 128.0 +-6.9116106 -1.2931411 -1.9636302 128.0 +-6.9260392 -1.2519057 -1.965549 128.0 +-6.9222221 -1.2074012 -1.9622595 128.0 +-6.9437261 -1.1672966 -1.9663714 128.0 +-6.9526563 -1.1249762 -1.9669197 128.0 +-6.9594278 -1.0822942 -1.9669197 128.0 +-6.9764004 -1.0411336 -1.9699351 128.0 +-6.9759936 -0.99735457 -1.9680161 128.0 +-6.9953213 -0.95635635 -1.971854 128.0 +-7.002965 -0.91366482 -1.9724022 128.0 +-6.9779 -0.8668825 -1.9636302 128.0 +-7.0060091 -0.82675678 -1.9702092 128.0 +-7.0071273 -0.78332555 -1.9691128 128.0 +-6.9974561 -0.73880047 -1.9650007 128.0 +-7.0075994 -0.69642192 -1.9666456 128.0 +-6.99259 -0.65162528 -1.961163 128.0 +-7.000289 -0.60904092 -1.9622595 128.0 +-6.9981427 -0.5656113 -1.9606148 128.0 +-6.9947686 -0.52215934 -1.9586959 128.0 +-6.9911246 -0.47877008 -1.956777 128.0 +-6.9977698 -0.43610382 -1.9578735 128.0 +-6.9859114 -0.39234838 -1.9537616 128.0 +-7.0035553 -0.35024568 -1.9581476 128.0 +-7.010376 -0.30747706 -1.9595182 128.0 +-7.0207801 -0.26478308 -1.9619853 128.0 +-7.0107379 -0.22133459 -1.9586959 128.0 +-6.6750374 0.49019194 -1.9493195 128.0 +-6.6833696 0.53205472 -1.9527397 128.0 +-6.6790242 0.57297099 -1.9524547 128.0 +-6.6839733 0.61473352 -1.9550198 128.0 +-6.6943841 0.65714109 -1.9592952 128.0 +-6.687366 0.69790572 -1.9584401 128.0 +-6.6772418 0.73829246 -1.95673 128.0 +-6.6697297 0.77891535 -1.9558749 128.0 +-6.6724358 0.82076287 -1.958155 128.0 +-6.6777306 0.86304194 -1.9612902 128.0 +-6.6485639 0.90077817 -1.9541649 128.0 +-6.6277275 0.93940115 -1.9496045 128.0 +-6.6360612 0.98215795 -1.9538798 128.0 +-6.6223311 1.021687 -1.9515996 128.0 +-6.6178303 1.0626059 -1.9521697 128.0 +-6.5970044 1.1008232 -1.9478943 128.0 +-6.4900155 1.1239259 -1.9176823 128.0 +-6.4999785 1.1667781 -1.9228127 128.0 +-0 0 -0 128.0 +-6.5341167 1.2558713 -1.9376336 128.0 +-6.534749 1.297622 -1.9401989 128.0 +-6.528542 1.3380792 -1.940769 128.0 +-6.5258355 1.3793026 -1.942479 128.0 +-6.5256782 1.4211556 -1.9450442 128.0 +-6.5187058 1.4615895 -1.9456142 128.0 +-6.5040112 1.5002663 -1.9439042 128.0 +-6.4946833 1.5401459 -1.9439042 128.0 +-6.4683485 1.5758806 -1.9387738 128.0 +-6.4529781 1.6141435 -1.9370637 128.0 +-6.4262414 1.6494155 -1.9319333 128.0 +-6.4289765 1.6922333 -1.9359236 128.0 +-6.422174 1.7326483 -1.9370637 128.0 +-6.3947926 1.7674222 -1.9319333 128.0 +-6.3912053 1.8087159 -1.9342134 128.0 +-6.3809075 1.8481644 -1.9344984 128.0 +-6.4135585 1.9003608 -1.9481794 128.0 +-6.3742585 1.9313347 -1.9396288 128.0 +-6.3503857 1.9667217 -1.9359236 128.0 +-6.3071294 1.9958123 -1.9262329 128.0 +-6.3257728 2.0445025 -1.9359236 128.0 +-6.3249416 2.0871851 -1.9396288 128.0 +-6.2847657 2.1167717 -1.9310782 128.0 +-6.267127 2.1537361 -1.9296532 128.0 +-6.250176 2.190881 -1.9285131 128.0 +-6.2492509 2.2337089 -1.9325033 128.0 +-6.2759519 2.2867856 -1.9453292 128.0 +-6.2366443 2.3159037 -1.9373487 128.0 +-6.1945267 2.3436081 -1.9285131 128.0 +-6.1862903 2.3839867 -1.9305083 128.0 +-6.191175 2.4296069 -1.9367787 128.0 +-6.1832709 2.4703958 -1.9390588 128.0 +-6.17066 2.5093729 -1.9399139 128.0 +-6.1516042 2.5457213 -1.9387738 128.0 +-6.140285 2.5852795 -1.9401989 128.0 +-6.1199012 2.6210194 -1.9387738 128.0 +-6.1001887 2.6569893 -1.9376336 128.0 +-6.0793891 2.6924279 -1.9362086 128.0 +-6.0277963 2.713933 -1.9248078 128.0 +-6.0197453 2.754858 -1.927658 128.0 +-6.0122881 2.7961905 -1.9307932 128.0 +-5.9872189 2.8293414 -1.928228 128.0 +-5.980114 2.8710051 -1.9316483 128.0 +-5.9684157 2.9105864 -1.9336435 128.0 +-5.9470086 2.9454508 -1.9325033 128.0 +-5.9219742 2.9784389 -1.9302232 128.0 +-5.895905 3.0107946 -1.927658 128.0 +-5.8679605 3.0420601 -1.9245228 128.0 +-5.8568177 3.0820267 -1.927088 128.0 +-5.833569 3.1156468 -1.9256629 128.0 +-5.8202405 3.1545806 -1.927658 128.0 +-5.8007751 3.1902335 -1.927658 128.0 +-5.7861123 3.2285695 -1.9293681 128.0 +-5.7545166 3.2573991 -1.9253778 128.0 +-5.7302651 3.2902596 -1.9239528 128.0 +-5.7165947 3.3292181 -1.9262329 128.0 +-5.6869817 3.3588684 -1.9230977 128.0 +-5.6687317 3.3951776 -1.9239528 128.0 +-5.6535268 3.4333801 -1.9259479 128.0 +-5.6315374 3.4675024 -1.9256629 128.0 +-5.6142201 3.50453 -1.927088 128.0 +-5.5950408 3.5404503 -1.927943 128.0 +-5.5651445 3.5695376 -1.9250928 128.0 +-5.5431376 3.6036177 -1.9250928 128.0 +-5.5129185 3.6322868 -1.9222426 128.0 +-5.4801655 3.6591239 -1.9185374 128.0 +-5.4425287 3.6824722 -1.9131221 128.0 +-5.409555 3.7087498 -1.9094168 128.0 +-5.3866968 3.7418723 -1.9094168 128.0 +-5.3628516 3.7743022 -1.9091318 128.0 +-5.365344 3.8255048 -1.9185374 128.0 +-5.3223467 3.8443193 -1.9114119 128.0 +-5.2986584 3.8769045 -1.9114119 128.0 +-5.2747703 3.9093435 -1.9114119 128.0 +-5.2644801 3.9519956 -1.9165423 128.0 +-5.2256365 3.9731982 -1.9111269 128.0 +-5.2133088 4.0145464 -1.9156872 128.0 +-5.205204 4.0594306 -1.9219576 128.0 +-5.1832061 4.0936694 -1.9230977 128.0 +-5.1594872 4.1265936 -1.9236678 128.0 +-5.1340699 4.158174 -1.9236678 128.0 +-5.1092 4.1902056 -1.9239528 128.0 +-5.0738087 4.2135139 -1.9202476 128.0 +-5.0478592 4.2445669 -1.9202476 128.0 +-5.0012879 4.2580576 -1.912267 128.0 +-4.9663558 4.2811532 -1.9088467 128.0 +-4.929163 4.3020897 -1.9045714 128.0 +-4.9285269 4.3551073 -1.9148321 128.0 +-4.8859982 4.3712029 -1.9085617 128.0 +-4.8882079 4.4274883 -1.9202476 128.0 +-4.8517671 4.4489751 -1.9165423 128.0 +-4.7822351 4.4395256 -1.8994411 128.0 +-4.7912192 4.5029263 -1.9142621 128.0 +-4.7475305 4.5170407 -1.9077066 128.0 +-4.7390518 4.5647082 -1.9156872 128.0 +-4.6951723 4.5783067 -1.9091318 128.0 +-4.6717663 4.6117439 -1.9111269 128.0 +-4.6298237 4.6267691 -1.9054265 128.0 +-4.6101055 4.6639538 -1.9091318 128.0 +-4.5747061 4.6852937 -1.9062816 128.0 +-4.5571814 4.7250056 -1.9111269 128.0 +-4.5307479 4.7556558 -1.912267 128.0 +-4.4922876 4.773592 -1.9082767 128.0 +-4.4570403 4.7947469 -1.9057115 128.0 +-4.4430923 4.8389525 -1.912552 128.0 +-4.397222 4.8483706 -1.9054265 128.0 +-4.3673902 4.8752604 -1.9054265 128.0 +-4.3431096 4.9084277 -1.9079916 128.0 +-4.301559 4.9219909 -1.9028614 128.0 +-4.2900629 4.9700632 -1.9114119 128.0 +-4.2464299 4.9809728 -1.9054265 128.0 +-4.2065287 4.995935 -1.9011512 128.0 +-4.178246 5.0246 -1.9022913 128.0 +-4.1734891 5.0819993 -1.9145471 128.0 +-4.1132536 5.0717721 -1.9008662 128.0 +-4.0988297 5.1178665 -1.9088467 128.0 +-4.0649724 5.1399126 -1.9077066 128.0 +-4.0251002 5.15418 -1.9037164 128.0 +-3.9852066 5.1681523 -1.8997262 128.0 +-3.9603865 5.2016606 -1.9031464 128.0 +-3.9266677 5.2235641 -1.9022913 128.0 +-3.9059649 5.2629557 -1.9079916 128.0 +-3.888324 5.3069286 -1.9154022 128.0 +-3.8714135 5.3524365 -1.9233828 128.0 +-3.8329303 5.3682885 -1.9205326 128.0 +-3.7894301 5.3768177 -1.9151171 128.0 +-3.7476115 5.3873763 -1.9105569 128.0 +-3.7096033 5.4031572 -1.9079916 128.0 +-3.6758428 5.4250236 -1.9077066 128.0 +-3.6478126 5.4554448 -1.9105569 128.0 +-3.583133 5.4305158 -1.8937408 128.0 +-3.5638609 5.4740906 -1.9014362 128.0 +-3.5447063 5.5184388 -1.9094168 128.0 +-3.5292444 5.5692353 -1.9196775 128.0 +-3.5011013 5.6005397 -1.9230977 128.0 +-3.4656653 5.6202846 -1.9225277 128.0 +-3.4296207 5.6389866 -1.9216726 128.0 +-3.390027 5.6517034 -1.9188224 128.0 +-3.3513823 5.6657972 -1.9165423 128.0 +-3.3160715 5.6854262 -1.9162573 128.0 +-3.2792132 5.702342 -1.9151171 128.0 +-3.2474706 5.7281933 -1.9171124 128.0 +-3.2141318 5.7513585 -1.9182523 128.0 +-3.1801686 5.7734909 -1.9191074 128.0 +-3.1391976 5.7827859 -1.9156872 128.0 +-3.1081755 5.8103914 -1.9185374 128.0 +-3.0961444 5.874299 -1.9336435 128.0 +-3.0679903 5.9084992 -1.9387738 128.0 +-3.0290606 5.9220924 -1.9370637 128.0 +-2.9930975 5.9414229 -1.9373487 128.0 +-2.9553077 5.9571004 -1.9364936 128.0 +-2.9132328 5.9639239 -1.9327884 128.0 +-2.8662026 5.9600897 -1.9256629 128.0 +-2.8361373 5.9914269 -1.9302232 128.0 +-2.7798991 5.9670076 -1.9165423 128.0 +-2.7663927 6.0344934 -1.9330734 128.0 +-2.7230108 6.0373731 -1.9285131 128.0 +-2.6793091 6.0390716 -1.9236678 128.0 +-2.6452692 6.0624266 -1.9259479 128.0 +-2.608021 6.0785437 -1.9259479 128.0 +-2.5740261 6.1023808 -1.9285131 128.0 +-2.5416713 6.1304569 -1.9325033 128.0 +-2.5101533 6.1610284 -1.9373487 128.0 +-2.4662497 6.1611853 -1.9325033 128.0 +-2.4343591 6.1913676 -1.9373487 128.0 +-2.3890765 6.1874094 -1.9313632 128.0 +-2.3592169 6.223464 -1.9382037 128.0 +-2.3149722 6.2216516 -1.9330734 128.0 +-2.285625 6.2600508 -1.940769 128.0 +-2.2468481 6.2730546 -1.9404839 128.0 +-2.2051399 6.277679 -1.9376336 128.0 +-2.1659553 6.2892785 -1.9370637 128.0 +-2.1282434 6.3051748 -1.9379187 128.0 +-2.0952308 6.3354068 -1.9433341 128.0 +-2.0551374 6.3444958 -1.942194 128.0 +-2.017328 6.3606415 -1.9433341 128.0 +-1.9782618 6.3728995 -1.9433341 128.0 +-1.9352238 6.3720775 -1.9393438 128.0 +-1.8999076 6.3966961 -1.9433341 128.0 +-1.8595541 6.404551 -1.942194 128.0 +-1.8207443 6.417685 -1.942764 128.0 +-1.7731465 6.3991756 -1.9336435 128.0 +-1.738851 6.428441 -1.9393438 128.0 +-1.7093959 6.4769897 -1.9510295 128.0 +-1.663653 6.4641485 -1.9439042 128.0 +-1.6123062 6.4277468 -1.9296532 128.0 +-1.576928 6.4542799 -1.9347835 128.0 +-1.5410631 6.4796877 -1.9396288 128.0 +-1.4999801 6.483418 -1.9379187 128.0 +-1.4584892 6.4850183 -1.9356385 128.0 +-1.4203057 6.5013371 -1.9379187 128.0 +-1.3819768 6.5174313 -1.9401989 128.0 +-1.3444684 6.5379939 -1.9439042 128.0 +-1.3018938 6.5338993 -1.9401989 128.0 +-1.2625035 6.5455294 -1.9413389 128.0 +-1.221966 6.5512681 -1.940769 128.0 +-1.1820848 6.5605292 -1.9413389 128.0 +-1.1416439 6.5667148 -1.9410539 128.0 +-1.1022791 6.5792685 -1.942764 128.0 +-1.0621935 6.5878005 -1.9433341 128.0 +-1.0227778 6.6008248 -1.9453292 128.0 +-0.9828198 6.6107688 -1.9464693 128.0 +-0.94439787 6.6318583 -1.9510295 128.0 +-0.90239632 6.6280303 -1.9481794 128.0 +-0.86084729 6.6267886 -1.9461843 128.0 +-0.82146215 6.6424103 -1.9493195 128.0 +-0.78102458 6.6501813 -1.9501746 128.0 +-0.73925292 6.6462746 -1.9476093 128.0 +-0.69466025 6.61446 -1.9367787 128.0 +-0.65829593 6.6615233 -1.9496045 128.0 +-0.61652678 6.6558924 -1.9467543 128.0 +-0.57658166 6.6700549 -1.9498895 128.0 +-0.53556758 6.6725116 -1.9496045 128.0 +-0.49405044 6.668025 -1.9473244 128.0 +-0.45273817 6.6651926 -1.9456142 128.0 +-0.41195065 6.6697588 -1.9461843 128.0 +-0.37059361 6.6645045 -1.9439042 128.0 +-0.32945809 6.6618662 -1.942479 128.0 +-0.28799722 6.6503553 -1.9384887 128.0 +-0.24750482 6.6606183 -1.9410539 128.0 +-0.20704505 6.6754241 -1.9450442 128.0 +-0.16612886 6.6784854 -1.9456142 128.0 +-0.12473815 6.6573367 -1.9390588 128.0 +-0.083791882 6.6503096 -1.9367787 128.0 +-0.043008883 6.6545324 -1.9379187 128.0 +-0.0021770701 6.6575465 -1.9387738 128.0 +0.03871879 6.6651025 -1.9410539 128.0 +0.079730518 6.674324 -1.9439042 128.0 +0.12052443 6.6650839 -1.9413389 128.0 +0.16141835 6.6642189 -1.9413389 128.0 +0.20251098 6.6698098 -1.9433341 128.0 +0.2427648 6.6502419 -1.9379187 128.0 +0.28438556 6.6677799 -1.9436191 128.0 +0.32519916 6.6639948 -1.9430491 128.0 +0.36529115 6.6475177 -1.9387738 128.0 +0.40695214 6.659502 -1.9430491 128.0 +0.44554892 6.6234074 -1.9330734 128.0 +0.48674393 6.6281967 -1.9353535 128.0 +0.52702343 6.6203079 -1.9339285 128.0 +0.56903058 6.6331844 -1.9387738 128.0 +0.6109516 6.6429305 -1.942764 128.0 +0.6473853 6.5951767 -1.9296532 128.0 +0.69043142 6.6158667 -1.9370637 128.0 +0.73175114 6.6181746 -1.9390588 128.0 +0.77034146 6.5964236 -1.9339285 128.0 +0.80798936 6.5687404 -1.927088 128.0 +0.85320008 6.6016831 -1.9384887 128.0 +0.89459318 6.6029725 -1.9404839 128.0 +0.93468738 6.594512 -1.9396288 128.0 +0.97358745 6.5782228 -1.9364936 128.0 +1.0143713 6.5749669 -1.9373487 128.0 +1.0546955 6.5686193 -1.9373487 128.0 +1.0964012 6.5705328 -1.9399139 128.0 +1.1355505 6.5570707 -1.9379187 128.0 +1.175932 6.5509229 -1.9382037 128.0 +1.2154045 6.5398149 -1.9370637 128.0 +1.2538794 6.5237627 -1.9344984 128.0 +1.2981825 6.5375695 -1.9410539 128.0 +1.336153 6.5191522 -1.9379187 128.0 +1.3791043 6.5248976 -1.942194 128.0 +1.4203391 6.5219316 -1.9439042 128.0 +1.4630585 6.5252523 -1.9476093 128.0 +1.4953073 6.4825301 -1.9373487 128.0 +1.5341699 6.4695024 -1.9362086 128.0 +1.5738372 6.4599671 -1.9362086 128.0 +1.6099538 6.4362411 -1.9319333 128.0 +1.6484617 6.4225283 -1.9307932 128.0 +1.6897918 6.4197078 -1.9330734 128.0 +1.7274017 6.4027405 -1.9310782 128.0 +1.7712548 6.4086499 -1.9362086 128.0 +1.8087159 6.3912053 -1.9342134 128.0 +1.8481644 6.3809075 -1.9344984 128.0 +1.8864648 6.3666906 -1.9336435 128.0 +1.924104 6.350409 -1.9322183 128.0 +1.9627495 6.3375678 -1.9319333 128.0 +2.0033352 6.3308883 -1.9336435 128.0 +2.0421431 6.3184767 -1.9336435 128.0 +2.0826771 6.3112888 -1.9353535 128.0 +2.1201389 6.2947574 -1.9342134 128.0 +2.1543593 6.26894 -1.9302232 128.0 +2.190881 6.250176 -1.9285131 128.0 +2.2324178 6.2456408 -1.9313632 128.0 +2.2621622 6.2084112 -1.9239528 128.0 +2.301883 6.1989064 -1.9253778 128.0 +2.3371606 6.177494 -1.9230977 128.0 +2.369159 6.1478333 -1.9182523 128.0 +2.4145436 6.1528096 -1.9245228 128.0 +2.4536743 6.1414385 -1.9256629 128.0 +2.4938397 6.1324825 -1.927658 128.0 +2.5288544 6.1108656 -1.9256629 128.0 +2.565186 6.0925841 -1.9248078 128.0 +2.6062963 6.0855403 -1.927658 128.0 +2.6343975 6.0483446 -1.9208175 128.0 +2.6668003 6.0215502 -1.9173973 128.0 +2.706847 6.0120649 -1.9196775 128.0 +2.738498 5.9840131 -1.9159722 128.0 +2.7703114 5.9566689 -1.912552 128.0 +2.8076279 5.9412913 -1.9131221 128.0 +2.8481801 5.9325929 -1.9159722 128.0 +2.8828471 5.9115591 -1.9148321 128.0 +2.9267256 5.9092188 -1.9199625 128.0 +2.9668064 5.8988557 -1.9225277 128.0 +3.0116668 5.8976121 -1.928228 128.0 +3.0495622 5.8824253 -1.9293681 128.0 +3.0677381 5.8296762 -1.9179673 128.0 +3.0849302 5.7760816 -1.9062816 128.0 +3.1175721 5.7519879 -1.9045714 128.0 +3.161124 5.7478671 -1.9097018 128.0 +3.1832511 5.7049279 -1.9017212 128.0 +3.2092218 5.6694412 -1.8963059 128.0 +3.2563617 5.6712532 -1.9037164 128.0 +3.2954414 5.6586199 -1.9062816 128.0 +3.3315628 5.6407685 -1.9071367 128.0 +3.3276842 5.5560865 -1.8849051 128.0 +3.3706715 5.5503092 -1.8900355 128.0 +3.415221 5.5466609 -1.8960209 128.0 +3.4527442 5.5312924 -1.898016 128.0 +3.4963596 5.5253906 -1.9034314 128.0 +3.527091 5.4989929 -1.9017212 128.0 +3.5571077 5.4716225 -1.8997262 128.0 +3.5827014 5.4376888 -1.8954508 128.0 +3.6090777 5.405242 -1.8917456 128.0 +3.6453996 5.3877578 -1.8934557 128.0 +3.680016 5.36766 -1.8943107 128.0 +3.7281976 5.3670182 -1.9022913 128.0 +3.7770612 5.3667707 -1.9105569 128.0 +3.7854295 5.3091583 -1.898016 128.0 +3.7780764 5.2306695 -1.8777796 128.0 +3.8372748 5.2445159 -1.8914605 128.0 +3.8836541 5.2401214 -1.898586 128.0 +3.9019196 5.1977978 -1.8917456 128.0 +3.9447646 5.1882539 -1.897161 128.0 +4.0005078 5.1950846 -1.9088467 128.0 +4.0099044 5.1417222 -1.898016 128.0 +4.0336528 5.1072435 -1.8943107 128.0 +4.0673099 5.085391 -1.8954508 128.0 +4.0960226 5.0573597 -1.8943107 128.0 +4.1251531 5.0299087 -1.8934557 128.0 +4.1577759 5.0067143 -1.8943107 128.0 +4.1865673 4.9789081 -1.8934557 128.0 +4.2133093 4.9487476 -1.8917456 128.0 +4.2511067 4.9315128 -1.8951658 128.0 +4.2831774 4.9075017 -1.8960209 128.0 +4.3132086 4.8811283 -1.8960209 128.0 +4.3219829 4.8310008 -1.8866153 128.0 +4.3599105 4.8136249 -1.8903205 128.0 +4.384829 4.7818379 -1.8883253 128.0 +4.4219141 4.7632713 -1.8917456 128.0 +4.4569669 4.7423344 -1.8943107 128.0 +4.4866424 4.7155924 -1.8945957 128.0 +4.538105 4.711442 -1.9042864 128.0 +4.5675979 4.6841941 -1.9045714 128.0 +4.594233 4.6540337 -1.9037164 128.0 +4.6172814 4.6203332 -1.9014362 128.0 +4.6332717 4.5797887 -1.8963059 128.0 +4.657856 4.5479255 -1.8948808 128.0 +4.7029247 4.535892 -1.9020063 128.0 +4.7285857 4.5049667 -1.9011512 128.0 +4.749157 4.4693003 -1.898301 128.0 +4.794045 4.456388 -1.9054265 128.0 +4.8057632 4.4126287 -1.8991561 128.0 +4.8355885 4.3856335 -1.9002962 128.0 +4.8688335 4.3616352 -1.9028614 128.0 +4.8904786 4.3272333 -1.9008662 128.0 +4.9068322 4.2883153 -1.896876 128.0 +4.9374065 4.2618842 -1.898586 128.0 +4.9634643 4.2315087 -1.898586 128.0 +4.9937348 4.2046771 -1.9002962 128.0 +5.0083838 4.1647658 -1.8960209 128.0 +5.0301394 4.1309156 -1.8945957 128.0 +5.0501795 4.0957484 -1.8926007 128.0 +5.0707259 4.0610895 -1.8908905 128.0 +5.0978045 4.031683 -1.8917456 128.0 +5.1247134 4.0020971 -1.8926007 128.0 +5.1499324 3.9711623 -1.8928857 128.0 +5.1963215 3.9563229 -1.9011512 128.0 +5.1975107 3.9070897 -1.8926007 128.0 +5.2375522 3.8871181 -1.898586 128.0 +5.247385 3.8447132 -1.8934557 128.0 +5.2584491 3.8034577 -1.8888954 128.0 +5.3011923 3.7850418 -1.8960209 128.0 +5.3219662 3.750787 -1.8951658 128.0 +5.3661284 3.7328365 -1.9028614 128.0 +5.3604808 3.6803143 -1.8926007 128.0 +5.394866 3.6554167 -1.896876 128.0 +5.4315381 3.6318333 -1.9020063 128.0 +5.4905272 3.622714 -1.9151171 128.0 +5.4861412 3.5717032 -1.9057115 128.0 +5.4837561 3.5224371 -1.897161 128.0 +5.5028372 3.4871843 -1.8963059 128.0 +5.5233178 3.4528458 -1.8960209 128.0 +5.5550075 3.4254289 -1.8997262 128.0 +5.5824733 3.395263 -1.9020063 128.0 +5.6204648 3.3712966 -1.9079916 128.0 +5.6237178 3.3265018 -1.9020063 128.0 +5.653132 3.2972431 -1.9051415 128.0 +5.6840601 3.2687042 -1.9088467 128.0 +5.6764898 3.2181706 -1.8994411 128.0 +5.6961293 3.1832798 -1.8994411 128.0 +5.7281494 3.1552038 -1.9037164 128.0 +5.7625661 3.1282258 -1.9088467 128.0 +5.787569 3.0959723 -1.9108418 128.0 +5.8123927 3.0635297 -1.912837 128.0 +5.8098121 3.0167687 -1.9057115 128.0 +5.8367476 2.9854269 -1.9085617 128.0 +5.841258 2.9426596 -1.9040014 128.0 +5.8583455 2.906337 -1.9037164 128.0 +5.8855429 2.8749623 -1.9068516 128.0 +5.8996167 2.8371341 -1.9057115 128.0 +5.9047837 2.7951422 -1.9017212 128.0 +5.9270372 2.7612863 -1.9034314 128.0 +5.9569392 2.7308559 -1.9077066 128.0 +5.9762049 2.6954353 -1.9085617 128.0 +5.9891262 2.657161 -1.9074216 128.0 +6.0176182 2.6257269 -1.9114119 128.0 +6.05652 2.5985763 -1.9188224 128.0 +6.0697012 2.5602481 -1.9179673 128.0 +6.0888381 2.5244248 -1.9191074 128.0 +6.0997744 2.4852095 -1.9176823 128.0 +6.1122389 2.446667 -1.9168273 128.0 +6.1101861 2.4024558 -1.9114119 128.0 +6.1149755 2.3611231 -1.9082767 128.0 +6.136519 2.3262746 -1.9105569 128.0 +6.1273184 2.2798913 -1.9031464 128.0 +6.1546988 2.2471805 -1.9074216 128.0 +6.1855178 2.2155118 -1.912837 128.0 +6.1818118 2.1714838 -1.9074216 128.0 +6.2158651 2.140687 -1.9139771 128.0 +6.2415986 2.1067963 -1.9179673 128.0 +6.2407565 2.0639467 -1.9136921 128.0 +6.2414484 2.0217774 -1.9099869 128.0 +6.2546496 1.9837322 -1.9102719 128.0 +6.2731123 1.9473051 -1.912267 128.0 +6.2858601 1.9090557 -1.912552 128.0 +6.3002119 1.8712687 -1.9134071 128.0 +6.3069725 1.8312405 -1.9119819 128.0 +6.3328447 1.7966906 -1.9165423 128.0 +6.32897 1.7537065 -1.9119819 128.0 +6.3414617 1.7153398 -1.912552 128.0 +6.3546481 1.6771303 -1.9134071 128.0 +6.3685322 1.6390624 -1.9145471 128.0 +6.4063625 1.6069462 -1.9230977 128.0 +6.4142394 1.5671526 -1.9225277 128.0 +6.4237347 1.5277661 -1.9225277 128.0 +6.4217811 1.4857314 -1.9191074 128.0 +6.4307766 1.4463001 -1.9191074 128.0 +6.4488945 1.4088585 -1.9219576 128.0 +6.4452276 1.3666797 -1.9182523 128.0 +6.4675756 1.3300004 -1.9225277 128.0 +6.5028768 1.2957182 -1.9307932 128.0 +6.4871745 1.2512586 -1.9236678 128.0 +6.4984994 1.2121328 -1.9248078 128.0 +6.5095878 1.1729152 -1.9259479 128.0 +6.5147734 1.1326231 -1.9253778 128.0 +6.5064745 1.0900964 -1.9208175 128.0 +6.5357528 1.0538108 -1.927658 128.0 +6.5402012 1.0133951 -1.927088 128.0 +6.522593 0.96972638 -1.9199625 128.0 +6.542655 0.93171078 -1.9242377 128.0 +6.5397005 0.89038599 -1.9216726 128.0 +6.5507441 0.85098225 -1.9233828 128.0 +6.5701118 0.8125338 -1.927658 128.0 +6.5806856 0.77287489 -1.9293681 128.0 +6.5881619 0.73279941 -1.9302232 128.0 +6.5896745 0.69206154 -1.9293681 128.0 +6.5880733 0.65105045 -1.927658 128.0 +6.5862174 0.61008507 -1.9259479 128.0 +6.5812421 0.5689199 -1.9233828 128.0 +6.5941639 0.52929264 -1.9262329 128.0 +6.6068463 0.48952827 -1.9290831 128.0 +6.6202455 0.4496929 -1.9322183 128.0 +6.6276636 0.40935799 -1.9336435 128.0 +6.6290936 0.36863068 -1.9333584 128.0 +6.6408043 0.32842016 -1.9362086 128.0 +6.6388636 0.28750157 -1.9350685 128.0 +6.6443343 0.24690256 -1.9362086 128.0 +6.6438079 0.20606993 -1.9356385 128.0 +6.6459055 0.16532409 -1.9359236 128.0 +6.6429615 0.12447131 -1.9347835 128.0 +6.6483927 0.083768062 -1.9362086 128.0 +6.6363206 0.042894356 -1.9325033 128.0 +6.6613808 0.0021776557 -1.9399139 128.0 +6.6459327 -0.038604088 -1.9353535 128.0 +6.6350274 -0.079254262 -1.9322183 128.0 +6.6324997 -0.11992954 -1.9316483 128.0 +6.6345139 -0.16069366 -1.9325033 128.0 +6.6372352 -0.20151627 -1.9336435 128.0 +6.6435366 -0.24251886 -1.9359236 128.0 +6.640008 -0.28319624 -1.9353535 128.0 +6.6362309 -0.32383946 -1.9347835 128.0 +6.6168914 -0.36360285 -1.9296532 128.0 +6.6164494 -0.40431374 -1.9302232 128.0 +6.6100187 -0.44464591 -1.9290831 128.0 +6.6129017 -0.48561805 -1.9307932 128.0 +6.6021533 -0.52557504 -1.9285131 128.0 +6.6226792 -0.56812751 -1.9356385 128.0 +6.607615 -0.60769743 -1.9322183 128.0 +6.6047158 -0.64832336 -1.9325033 128.0 +6.6120534 -0.69003284 -1.9359236 128.0 +6.6153164 -0.73143464 -1.9382037 128.0 +6.6097517 -0.77190036 -1.9379187 128.0 +6.5963292 -0.81138784 -1.9353535 128.0 +6.5988312 -0.85283107 -1.9376336 128.0 +6.5887251 -0.89266038 -1.9362086 128.0 +6.5688887 -0.93105108 -1.9319333 128.0 +6.5763264 -0.97330648 -1.9359236 128.0 +6.5787563 -1.0149566 -1.9384887 128.0 +6.5506382 -1.051805 -1.9319333 128.0 +6.5639148 -1.0952957 -1.9379187 128.0 +6.5627375 -1.1365329 -1.9396288 128.0 +6.5556402 -1.1767797 -1.9396288 128.0 +6.5454688 -1.2164563 -1.9387738 128.0 +6.5322342 -1.2555091 -1.9370637 128.0 +6.5497913 -1.3006116 -1.9447591 128.0 +6.5276031 -1.3378866 -1.9404839 128.0 +6.5155196 -1.3771205 -1.9393438 128.0 +6.4947724 -1.4144194 -1.9356385 128.0 +6.4990649 -1.4571822 -1.9396288 128.0 +6.4881339 -1.496601 -1.9390588 128.0 +6.4611087 -1.5321779 -1.9336435 128.0 +6.4404111 -1.5690691 -1.9302232 128.0 +6.4697151 -1.6183331 -1.942194 128.0 +6.4624486 -1.6587155 -1.9430491 128.0 +6.4679065 -1.7024877 -1.9478943 128.0 +6.4119945 -1.7299 -1.9339285 128.0 +6.4234314 -1.7753429 -1.940769 128.0 +6.4004278 -1.8113277 -1.9370637 128.0 +6.3910346 -1.8510996 -1.9376336 128.0 +6.3676095 -1.8867372 -1.9339285 128.0 +6.350409 -1.924104 -1.9322183 128.0 +6.2991142 -1.950833 -1.9199625 128.0 +6.213007 -1.9660103 -1.896876 128.0 +6.1360736 -1.9831548 -1.8766396 128.0 +5.9836206 -1.9744858 -1.8327466 128.0 +5.8687515 -1.9765729 -1.8005394 128.0 +5.7957821 -1.9916632 -1.7814431 128.0 +5.7364182 -2.0106916 -1.7666222 128.0 +5.6743331 -2.0280991 -1.750946 128.0 +5.6257606 -2.0497456 -1.7395453 128.0 +5.5654564 -2.0665331 -1.7244393 128.0 +5.4881277 -2.076211 -1.7039179 128.0 +5.4511375 -2.1005359 -1.6962224 128.0 +5.4131641 -2.1241353 -1.6882418 128.0 +5.3217049 -2.1260011 -1.6631601 128.0 +5.2819242 -2.1477773 -1.6546096 128.0 +5.1827416 -2.1445787 -1.6269627 128.0 +4.9645486 -2.0900114 -1.5608382 128.0 +4.8846712 -2.0917428 -1.5391767 128.0 +4.786509 -2.0845325 -1.5115299 128.0 +4.6351657 -2.0525115 -1.4664968 128.0 +4.6294761 -2.0840631 -1.4687769 128.0 +4.5059185 -2.0617537 -1.4325795 128.0 +4.414968 -2.0529699 -1.4069278 128.0 +4.3225651 -2.0423298 -1.3807061 128.0 +4.2520623 -2.0410092 -1.3616097 128.0 +4.208446 -2.0519304 -1.3513491 128.0 +4.160563 -2.060266 -1.3396633 128.0 +4.0605063 -2.0418112 -1.3105913 128.0 +3.9949799 -2.0396507 -1.2929201 128.0 +3.9679244 -2.0566227 -1.2880747 128.0 +3.9611676 -2.0840564 -1.2900699 128.0 +3.8916631 -2.0780575 -1.2709737 128.0 +3.9344521 -2.1320522 -1.2897849 128.0 +3.7373793 -2.0549634 -1.2273657 128.0 +3.7447867 -2.0890696 -1.2342062 128.0 +3.6343119 -2.0567458 -1.200859 128.0 +3.5808969 -2.0556123 -1.186893 128.0 +3.5317752 -2.0563145 -1.174352 128.0 +3.4943342 -2.0633183 -1.1658015 128.0 +3.4618747 -2.0728967 -1.1589611 128.0 +3.4253342 -2.0796664 -1.1506954 128.0 +3.3798642 -2.0805364 -1.1392947 128.0 +3.3418312 -2.0854969 -1.1304592 128.0 +3.2803786 -2.0752017 -1.113358 128.0 +3.1183388 -1.9995267 -1.0606294 128.0 +3.1285105 -2.0332551 -1.06861 128.0 +3.1031706 -2.043973 -1.0640496 128.0 +3.1120913 -2.0773501 -1.0717452 128.0 +3.2183535 -2.1769993 -1.114498 128.0 +3.1322119 -2.1468284 -1.0882763 128.0 +3.0819852 -2.1402984 -1.0748804 128.0 +3.0437143 -2.1415112 -1.0657598 128.0 +3.012569 -2.1473448 -1.0592043 128.0 +2.981467 -2.1528773 -1.0526489 128.0 +2.9712949 -2.1733954 -1.0537889 128.0 +2.9586732 -2.1921568 -1.0540739 128.0 +2.9712265 -2.2298396 -1.0637646 128.0 +2.9727468 -2.2596343 -1.069465 128.0 +3.0150173 -2.3211184 -1.0905564 128.0 +3.0143216 -2.3501873 -1.0956868 128.0 +3.0021007 -2.3704212 -1.0965419 128.0 +2.9695368 -2.3744254 -1.0897014 128.0 +2.9243767 -2.3678617 -1.0780156 128.0 +2.8890436 -2.3687377 -1.0700351 128.0 +2.8700311 -2.3827448 -1.0683249 128.0 +2.8450875 -2.3916719 -1.0643346 128.0 +2.8442237 -2.4208927 -1.0697501 128.0 +2.8140719 -2.4251535 -1.0637646 128.0 +2.8171897 -2.4581351 -1.0708901 128.0 +2.7848179 -2.4601388 -1.0640496 128.0 +2.7660992 -2.4739838 -1.0626246 128.0 +2.73524 -2.4767504 -1.0563542 128.0 +2.7242296 -2.4973745 -1.0580642 128.0 +2.7453775 -2.5479608 -1.0728853 128.0 +2.7164233 -2.5522835 -1.0674698 128.0 +2.7111263 -2.5788157 -1.0717452 128.0 +2.7380469 -2.6366372 -1.0894164 128.0 +2.6772177 -2.6098833 -1.0708901 128.0 +2.6420567 -2.6074033 -1.0629096 128.0 +2.6307533 -2.6283092 -1.0649047 128.0 +2.6165979 -2.6464472 -1.0657598 128.0 +2.5942848 -2.6562791 -1.0631946 128.0 +2.5679579 -2.6617968 -1.0589193 128.0 +2.5456276 -2.6712563 -1.0563542 128.0 +2.5370705 -2.6952035 -1.0597744 128.0 +2.5452795 -2.7374022 -1.070605 128.0 +2.5076942 -2.7303712 -1.0614845 128.0 +2.4915376 -2.7464168 -1.0617695 128.0 +2.4778361 -2.7652233 -1.0631946 128.0 +2.4620924 -2.7818108 -1.0637646 128.0 +2.4405627 -2.7918127 -1.0617695 128.0 +2.4183772 -2.8009295 -1.0594894 128.0 +2.3930631 -2.8062317 -1.0557841 128.0 +2.3696268 -2.813529 -1.0529339 128.0 +2.3480296 -2.8228562 -1.0509387 128.0 +2.32884 -2.8349876 -1.0500838 128.0 +2.3126085 -2.850713 -1.0506537 128.0 +2.2998657 -2.8708353 -1.0529339 128.0 +2.2822073 -2.8848929 -1.0529339 128.0 +2.2650528 -2.8995974 -1.053219 128.0 +2.2407815 -2.9050903 -1.0500838 128.0 +2.2234945 -2.9195476 -1.0503687 128.0 +2.2032354 -2.9300704 -1.0492287 128.0 +2.1874998 -2.9466133 -1.0503687 128.0 +2.1756086 -2.9684863 -1.053504 128.0 +2.1629696 -2.9895473 -1.0563542 128.0 +2.1301074 -2.9824779 -1.0489436 128.0 +2.1156316 -3.000977 -1.0509387 128.0 +2.0895169 -3.0028844 -1.0469484 128.0 +2.0650859 -3.0069554 -1.0438132 128.0 +2.0498219 -3.0243318 -1.0455234 128.0 +2.034955 -3.0424306 -1.0475185 128.0 +2.0326087 -3.0796642 -1.0563542 128.0 +2.0058317 -3.0800276 -1.0520788 128.0 +1.9894847 -3.0963099 -1.053504 128.0 +1.9694227 -3.1068394 -1.0529339 128.0 +1.95591 -3.1278067 -1.0560691 128.0 +1.9452314 -3.1536205 -1.0609144 128.0 +1.9293302 -3.1712301 -1.0629096 128.0 +1.9201865 -3.2002721 -1.068895 128.0 +1.9019774 -3.2144692 -1.0697501 128.0 +1.9029776 -3.2616856 -1.0820059 128.0 +1.8265611 -3.1752415 -1.0483736 128.0 +1.7772712 -3.133852 -1.0304173 128.0 +1.7598786 -3.1480453 -1.0315574 128.0 +1.7400671 -3.1579449 -1.0312724 128.0 +1.7288862 -3.183727 -1.0364028 128.0 +1.7025392 -3.1815963 -1.0321275 128.0 +1.7039838 -3.2318404 -1.0455234 128.0 +1.6841215 -3.2422349 -1.0455234 128.0 +1.6589597 -3.2422659 -1.0421032 128.0 +1.6407588 -3.2558086 -1.0432433 128.0 +1.6181957 -3.2606623 -1.0415331 128.0 +1.5943731 -3.262778 -1.038968 128.0 +1.5813825 -3.2871859 -1.0438132 128.0 +1.5501142 -3.2734334 -1.0361178 128.0 +1.5461848 -3.3176403 -1.0475185 128.0 +1.5261983 -3.3279366 -1.0478035 128.0 +1.4986589 -3.3215096 -1.0426732 128.0 +1.4638734 -3.2982221 -1.0321275 128.0 +1.3761681 -3.1525087 -0.98196411 128.0 +1.331865 -3.102752 -0.96315283 128.0 +1.3604654 -3.2239196 -0.99963528 128.0 +1.396067 -3.3659174 -1.0426732 128.0 +1.3934631 -3.4188073 -1.0569242 128.0 +1.3521645 -3.3765664 -1.040678 128.0 +1.332122 -3.3865838 -1.0412481 128.0 +1.3099369 -3.3911169 -1.0401081 128.0 +1.2826521 -3.3820601 -1.0346926 128.0 +1.290609 -3.4671297 -1.0592043 128.0 +1.2854115 -3.5191052 -1.0731703 128.0 +1.2608869 -3.5188041 -1.070605 128.0 +1.2453049 -3.5436583 -1.0760205 128.0 +1.2207304 -3.5430756 -1.0734553 128.0 +1.200193 -3.554132 -1.0745953 128.0 +1.1690376 -3.5332165 -1.0657598 128.0 +1.1461554 -3.5366752 -1.0646197 128.0 +1.122985 -3.5390728 -1.0631946 128.0 +1.0981245 -3.5358264 -1.0600594 128.0 +1.0441158 -3.4361019 -1.0269971 128.0 +0.99000973 -3.3312573 -0.99250978 128.0 +0.96287322 -3.3142555 -0.98538435 128.0 +0.94251919 -3.320101 -0.98538435 128.0 +0.92366445 -3.3313644 -0.98709446 128.0 +0.9122104 -3.3702805 -0.99735516 128.0 +0.92109036 -3.4879608 -1.0318425 128.0 +0.77815044 -3.0210354 -0.88676769 128.0 +0.78080606 -3.1103613 -0.91270441 128.0 +0.8724184 -3.5685749 -1.0515088 128.0 +0.85693252 -3.6009047 -1.0597744 128.0 +0.83503753 -3.607029 -1.0600594 128.0 +0.81288952 -3.6120849 -1.0600594 128.0 +0.79929626 -3.6563363 -1.0720302 128.0 +0.777641 -3.6649227 -1.0731703 128.0 +0.75205231 -3.6546028 -1.06861 128.0 +0.72998822 -3.6610286 -1.06918 128.0 +0.70479029 -3.6513207 -1.0649047 128.0 +0.68114376 -3.6489804 -1.0629096 128.0 +0.65874124 -3.6530912 -1.0629096 128.0 +0.63467377 -3.6476204 -1.0600594 128.0 +0.6211406 -3.7043869 -1.0760205 128.0 +0.59702748 -3.6996117 -1.0734553 128.0 +0.57299644 -3.69468 -1.0708901 128.0 +0.54778129 -3.6810601 -1.0657598 128.0 +0.52666909 -3.6947906 -1.068895 128.0 +0.50011402 -3.6694591 -1.0603443 128.0 +0.47845244 -3.6791127 -1.0623395 128.0 +0.45586884 -3.6819789 -1.0623395 128.0 +0.43349132 -3.6866109 -1.0629096 128.0 +0.41424802 -3.7196867 -1.0720302 128.0 +0.40271083 -3.829881 -1.1042373 128.0 +0.38240284 -3.864712 -1.113928 128.0 +0.35647616 -3.8431244 -1.1068026 128.0 +0.3243205 -3.7459221 -1.0771605 128.0 +0.29689148 -3.6924248 -1.0606294 128.0 +0.27097929 -3.6502049 -1.0475185 128.0 +0.2490305 -3.658493 -1.0495137 128.0 +0.22952388 -3.7077878 -1.0637646 128.0 +0.20857278 -3.7416661 -1.0734553 128.0 +0.18674271 -3.765852 -1.0802958 128.0 +0.16412801 -3.7784185 -1.083716 128.0 +0.14094096 -3.7793546 -1.083716 128.0 +0.11739405 -3.7686512 -1.0802958 128.0 +0.094149485 -3.7645097 -1.0788707 128.0 +0.071227007 -3.7746 -1.0817208 128.0 +0.04804134 -3.7730491 -1.0811508 128.0 +0.024895471 -3.7742312 -1.0814358 128.0 +0.0017338258 -3.7551427 -1.0757354 128.0 +-0.021244243 -3.744539 -1.0726002 128.0 +-0.044115357 -3.7357121 -1.0700351 128.0 +-0.067193896 -3.7439964 -1.0726002 128.0 +-0.090399131 -3.7530959 -1.0754504 128.0 +-0.11409888 -3.7745063 -1.0820059 128.0 +-0.13627291 -3.7469146 -1.0740253 128.0 +-0.159302 -3.7469656 -1.0743103 128.0 +-0.18200862 -3.7401733 -1.0726002 128.0 +-0.20516551 -3.7428143 -1.0737402 128.0 +-0.22818576 -3.7424419 -1.0740253 128.0 +-0.25275716 -3.7648799 -1.0811508 128.0 +-0.27817538 -3.7948041 -1.0905564 128.0 +-0.29924393 -3.7653167 -1.0822909 128.0 +-0.32734951 -3.8216646 -1.0996771 128.0 +-0.35000107 -3.8109939 -1.0971119 128.0 +-0.3699075 -3.7734795 -1.0865662 128.0 +-0.39474833 -3.7873452 -1.0914115 128.0 +-0.41513097 -3.759129 -1.083716 128.0 +-0.43974763 -3.7698395 -1.0877062 128.0 +-0.46580034 -3.7908535 -1.0948317 128.0 +-0.48757553 -3.7765169 -1.0914115 128.0 +-0.51048094 -3.7715545 -1.0908414 128.0 +-0.54196322 -3.8271902 -1.1085126 128.0 +-0.84713787 -5.7248707 -1.6799762 128.0 +-0.88254166 -5.7214599 -1.6805463 128.0 +-0.91595793 -5.7055268 -1.6774111 128.0 +-0.95000154 -5.6941266 -1.675701 128.0 +-0.98426729 -5.6844125 -1.6745609 128.0 +-1.0196362 -5.6810966 -1.675416 128.0 +-1.0523719 -5.663425 -1.6719958 128.0 +-1.0880077 -5.6615672 -1.6734208 128.0 +-1.1240338 -5.661366 -1.675416 128.0 +-1.1585575 -5.6534233 -1.675131 128.0 +-1.1920342 -5.6405816 -1.6734208 128.0 +-1.2251929 -5.6266055 -1.6714257 128.0 +-1.2609532 -5.6245933 -1.6731358 128.0 +-1.2995379 -5.6344957 -1.6785512 128.0 +-1.3320941 -5.6180224 -1.6759861 128.0 +-1.3758495 -5.6479239 -1.6876718 128.0 +-1.4074528 -5.6272879 -1.6839665 128.0 +-1.4402854 -5.6120472 -1.6819714 128.0 +-1.4771347 -5.6123729 -1.6848216 128.0 +-1.5070467 -5.5865469 -1.6796912 128.0 +-1.5402747 -5.5734992 -1.6785512 128.0 +-1.5739218 -5.562099 -1.6779811 128.0 +-1.6133571 -5.5707493 -1.6836815 128.0 +-1.6496879 -5.5680971 -1.6859617 128.0 +-1.686047 -5.5652084 -1.6882418 128.0 +-1.2233562 -3.9516003 -1.1891731 128.0 +-1.2472904 -3.9431059 -1.1888881 128.0 +-1.7787604 -5.5040464 -1.6791213 128.0 +-1.8239193 -5.5276155 -1.6899519 128.0 +-1.8274969 -5.4263959 -1.6617351 128.0 +-1.8626282 -5.4205189 -1.6634451 128.0 +-1.9072733 -5.4415503 -1.6737058 128.0 +-1.9409488 -5.4306474 -1.6739908 128.0 +-1.971936 -5.4123321 -1.6719958 128.0 +-2.0111172 -5.4163036 -1.677126 128.0 +-2.0453312 -5.4065509 -1.6779811 128.0 +-2.0784667 -5.3938994 -1.6779811 128.0 +-2.1146767 -5.3890743 -1.6805463 128.0 +-2.1477036 -5.3759975 -1.6805463 128.0 +-2.1806498 -5.3627186 -1.6805463 128.0 +-2.2175472 -5.3589787 -1.6836815 128.0 +-1.2844099 -3.0520997 -0.94377154 128.0 +-1.3031131 -3.0441613 -0.94377154 128.0 +-1.3210013 -3.0343509 -0.94320148 128.0 +-2.3437357 -5.2924275 -1.6802613 128.0 +-2.3651426 -5.2534761 -1.6722808 128.0 +-2.4013228 -5.2475805 -1.675131 128.0 +-1.6114048 -3.4659615 -1.0956868 128.0 +-1.6056018 -3.3988161 -1.0768756 128.0 +-1.6189563 -3.373348 -1.0717452 128.0 +-1.6358416 -3.3555975 -1.06918 128.0 +-1.6529958 -3.3386261 -1.0668999 128.0 +-1.6730193 -3.3275645 -1.0666149 128.0 +-1.6934054 -3.3172364 -1.0666149 128.0 +-1.7375582 -3.3527315 -1.0820059 128.0 +-1.7670279 -3.3589702 -1.0877062 128.0 +-2.1571076 -4.0396099 -1.320852 128.0 +-2.1909916 -4.0431504 -1.3265524 128.0 +-2.8081136 -5.1062579 -1.6919471 128.0 +-2.8277123 -5.0680079 -1.6848216 128.0 +-2.857811 -5.0488935 -1.6842515 128.0 +-2.8882592 -5.0304322 -1.6839665 128.0 +-2.919071 -5.0126157 -1.6839665 128.0 +-2.9497728 -4.9946103 -1.6839665 128.0 +-2.9838123 -4.982172 -1.6859617 128.0 +-2.9929256 -4.928545 -1.6737058 128.0 +-3.0231102 -4.9100881 -1.6737058 128.0 +-3.0536888 -4.8922591 -1.6739908 128.0 +-3.0903144 -4.8839583 -1.6776961 128.0 +-3.1238472 -4.8705516 -1.6796912 128.0 +-3.1521058 -4.8488817 -1.6788362 128.0 +-3.1833811 -4.8318505 -1.6796912 128.0 +-3.2108393 -4.8090386 -1.6785512 128.0 +-3.2343764 -4.7805152 -1.675416 128.0 +-3.259311 -4.7542558 -1.6731358 128.0 +-3.2922502 -4.7396774 -1.675131 128.0 +-3.3251328 -4.7248735 -1.677126 128.0 +-3.3601842 -4.712966 -1.6802613 128.0 +-3.3721976 -4.6689515 -1.6717107 128.0 +-2.2067976 -3.0169294 -1.070605 128.0 +-2.2246966 -3.002562 -1.0703201 128.0 +-3.5116718 -4.6781368 -1.6985025 128.0 +-3.531606 -4.6450577 -1.6942272 128.0 +-3.5612109 -4.6248198 -1.6947973 128.0 +-3.5960069 -4.6111946 -1.6979325 128.0 +-3.629581 -4.5958118 -1.7004976 128.0 +-3.6660955 -4.5839329 -1.7044879 128.0 +-3.6826882 -4.5472016 -1.6990726 128.0 +-3.6965368 -4.5074754 -1.6925172 128.0 +-3.7314746 -4.4935565 -1.6959374 128.0 +-3.7602103 -4.472043 -1.6965073 128.0 +-3.784472 -4.4452381 -1.6950823 128.0 +-3.8179357 -4.4291925 -1.6979325 128.0 +-3.8500843 -4.411459 -1.7002126 128.0 +-3.8580351 -4.3662071 -1.6916621 128.0 +-3.8758039 -4.3324533 -1.6876718 128.0 +-3.9209785 -4.3291893 -1.6959374 128.0 +-3.9209025 -4.2760887 -1.6842515 128.0 +-3.9398913 -4.2442241 -1.6811163 128.0 +-3.9599502 -4.2136841 -1.6785512 128.0 +-3.9943213 -4.1983333 -1.6822565 128.0 +-4.0180111 -4.1716747 -1.6814014 128.0 +-4.0234537 -4.1263576 -1.6728508 128.0 +-4.0385942 -4.091362 -1.6685755 128.0 +-4.0744648 -4.0773506 -1.6731358 128.0 +-4.1103153 -4.0630531 -1.6776961 128.0 +-4.1193919 -4.0223575 -1.6711407 128.0 +-4.1446853 -3.9976707 -1.6714257 128.0 +-4.1705246 -3.9734862 -1.6719958 128.0 +-4.1801658 -3.9340293 -1.6660104 128.0 +-4.2168651 -3.9200509 -1.6711407 128.0 +-4.2316585 -3.8856769 -1.6674354 128.0 +-4.2497396 -3.8544881 -1.6651553 128.0 +-4.26617 -3.8219454 -1.6623051 128.0 +-4.2873869 -3.7937915 -1.66145 128.0 +-4.3033657 -3.761107 -1.6585999 128.0 +-4.3256369 -3.734005 -1.6583148 128.0 +-4.3440895 -3.7036626 -1.6566046 128.0 +-4.3755331 -3.684345 -1.6600249 128.0 +-4.3928976 -3.6531386 -1.6580298 128.0 +-4.4226389 -3.6321976 -1.66088 128.0 +-4.4575 -3.6152542 -1.6657254 128.0 +-4.4878297 -3.594425 -1.6688606 128.0 +-4.5113039 -3.5680096 -1.6694306 128.0 +-4.5678678 -3.5673935 -1.6825415 128.0 +-4.5820794 -3.5334468 -1.6796912 128.0 +-4.6135893 -3.5128117 -1.6833965 128.0 +-4.6342907 -3.4838614 -1.6831114 128.0 +-4.6409535 -3.4445093 -1.6776961 128.0 +-4.6666412 -3.4193664 -1.6794063 128.0 +-4.6805434 -3.3856134 -1.676841 128.0 +-4.723074 -3.372422 -1.6848216 128.0 +-4.7397599 -3.3406179 -1.6833965 128.0 +-4.7593813 -3.3109252 -1.6831114 128.0 +-4.784349 -3.2849143 -1.6848216 128.0 +-4.7964787 -3.2501209 -1.6819714 128.0 +-4.8227062 -3.2248902 -1.6842515 128.0 +-4.8328009 -3.188905 -1.6808313 128.0 +-4.8490634 -3.1571002 -1.6796912 128.0 +-4.8973799 -3.1459315 -1.6899519 128.0 +-4.9117327 -3.1127448 -1.6882418 128.0 +-4.9144821 -3.0723894 -1.6825415 128.0 +-4.9707761 -3.0653129 -1.6956524 128.0 +-4.9575486 -3.0153353 -1.6845366 128.0 +-4.9882879 -2.9922533 -1.6888119 128.0 +-5.0065541 -2.9615893 -1.6888119 128.0 +-5.0130391 -2.9240551 -1.6848216 128.0 +-5.0391965 -2.8980174 -1.6876718 128.0 +-5.0768976 -2.8783851 -1.6945122 128.0 +-5.1011581 -2.8509192 -1.6967924 128.0 +-5.1387067 -2.8306608 -1.7036328 128.0 +-5.1829381 -2.8137059 -1.7127535 128.0 +-5.1882715 -2.7755234 -1.7087632 128.0 +-5.2331891 -2.7583802 -1.7181689 128.0 +-5.2432094 -2.7226856 -1.7158887 128.0 +-5.267498 -2.6943896 -1.7184539 128.0 +-5.2899241 -2.6650357 -1.720449 128.0 +-5.3233514 -2.6410439 -1.7261494 128.0 +-5.3463469 -2.6116951 -1.7284296 128.0 +-5.3752298 -2.5850704 -1.7327049 128.0 +-5.4074526 -2.559829 -1.7381202 128.0 +-5.4221888 -2.5261967 -1.7378352 128.0 +-5.4637289 -2.5048578 -1.7463858 128.0 +-5.4746265 -2.4693162 -1.7449607 128.0 +-5.504571 -2.4422836 -1.749806 128.0 +-5.5431747 -2.4188082 -1.7575015 128.0 +-5.5649595 -2.3877726 -1.7597817 128.0 +-5.5848055 -2.3558159 -1.7614918 128.0 +-5.6053538 -2.3240726 -1.7634869 128.0 +-5.6079679 -2.2849355 -1.7597817 128.0 +-5.625442 -2.2519069 -1.7609217 128.0 +-5.6159587 -2.2082322 -1.7535112 128.0 +-5.6472874 -2.1806338 -1.7592117 128.0 +-5.6928296 -2.1581676 -1.7694724 128.0 +-5.6296 -2.0947976 -1.7452457 128.0 +-5.6450486 -2.0612013 -1.7461008 128.0 +-5.682858 -2.0355706 -1.7540812 128.0 +-5.7476969 -2.0190785 -1.7706124 128.0 +-5.7953243 -1.9959396 -1.7817281 128.0 +-5.8537822 -1.9759684 -1.7962642 128.0 +-5.9249525 -1.9595658 -1.8147904 128.0 +-6.0162024 -1.9488581 -1.8395871 128.0 +-6.1651053 -1.9553496 -1.88234 128.0 +-6.2731123 -1.9473051 -1.912267 128.0 +-6.3757463 -1.9363374 -1.9404839 128.0 +-6.48491 -1.9260917 -1.970696 128.0 +-6.5177794 -1.8924083 -1.9772514 128.0 +-6.539412 -1.8552563 -1.9803866 128.0 +-6.5349684 -1.8107479 -1.9755412 128.0 +-6.5376282 -1.7683649 -1.9729761 128.0 +-6.5594778 -1.7311507 -1.9763963 128.0 +-6.5170627 -1.6772615 -1.9601502 128.0 +-6.5523348 -1.6435342 -1.9678457 128.0 +-6.5706763 -1.6053449 -1.9704109 128.0 +-6.5897284 -1.5672139 -1.9732611 128.0 +-6.6001549 -1.5269665 -1.9735461 128.0 +-6.605659 -1.4855993 -1.972406 128.0 +-6.6240149 -1.447084 -1.9752562 128.0 +-6.5755692 -1.394294 -1.95787 128.0 +-6.619679 -1.3612512 -1.9687008 128.0 +-6.6175661 -1.3185495 -1.9655656 128.0 +-6.6377678 -1.2802778 -1.9692708 128.0 +-6.6662288 -1.2433882 -1.9755412 128.0 +-6.6558089 -1.1992352 -1.9701259 128.0 +-6.6639862 -1.1585374 -1.9704109 128.0 +-6.6596251 -1.1157275 -1.9669907 128.0 +-6.6635065 -1.0743866 -1.9661356 128.0 +-6.6661844 -1.0328934 -1.9649955 128.0 +-6.6572266 -0.98971844 -1.9604353 128.0 +-6.6736131 -0.95033652 -1.9635705 128.0 +-6.6907158 -0.91091979 -1.9669907 128.0 +-6.6847725 -0.86836946 -1.9635705 128.0 +-6.7099519 -0.82980317 -1.9695559 128.0 +-6.7139654 -0.78850442 -1.9692708 128.0 +-6.7110558 -0.74644709 -1.9669907 128.0 +-6.7298088 -0.70675397 -1.9712659 128.0 +-6.7244802 -0.66450638 -1.9684157 128.0 +-6.7465653 -0.62490982 -1.9738312 128.0 +-6.7321281 -0.5819366 -1.9684157 128.0 +-6.7307949 -0.54023546 -1.9669907 128.0 +-6.7454538 -0.49977386 -1.9704109 128.0 +-6.7388301 -0.45772719 -1.9675608 128.0 +-6.7338581 -0.4158985 -1.9652805 128.0 +-6.7334123 -0.37441334 -1.9644254 128.0 +-6.7279239 -0.33271343 -1.9621453 128.0 +-6.7260084 -0.29126018 -1.9610052 128.0 +-6.7247953 -0.24987841 -1.9601502 128.0 +-6.7003341 -0.20781332 -1.9524547 128.0 +-6.7033997 -0.16674426 -1.9530247 128.0 +-0 -0 -0 128.0 +-6.734653 -0.084839866 -1.9618603 128.0 +-6.741756 -0.043557409 -1.9638555 128.0 +-6.7380624 -0.0021893661 -1.9627154 128.0 +-6.7293224 0.039103035 -1.9601502 128.0 +-6.7270389 0.080369413 -1.9595802 128.0 +-6.7225857 0.12157425 -1.9584401 128.0 +-6.7293792 0.16300799 -1.9607203 128.0 +-6.714839 0.20388602 -1.95673 128.0 +-6.724956 0.24550527 -1.9601502 128.0 +-6.7089586 0.28614905 -1.9558749 128.0 +-6.7003751 0.32698086 -1.9538798 128.0 +-6.6963282 0.36798191 -1.9533098 128.0 +-6.7111654 0.41011822 -1.9584401 128.0 +-6.6731377 0.44890293 -1.9478943 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-6.4821138 -0.044324111 -1.9655252 128.0 +-6.4832191 -0.0045505031 -1.9658209 128.0 +-6.4745278 0.035183679 -1.9631594 128.0 +-6.4713244 0.074876994 -1.9622724 128.0 +-6.4678779 0.11453232 -1.9613853 128.0 +-6.4641881 0.15414818 -1.9604981 128.0 +-6.4631205 0.19380878 -1.9604981 128.0 +-6.460855 0.23342766 -1.9602025 128.0 +-6.4583468 0.27302605 -1.9599067 128.0 +-6.4575043 0.31269473 -1.9602025 128.0 +-6.4382944 0.35137537 -1.9548796 128.0 +-6.4140859 0.38954282 -1.9480784 128.0 +-6.4268255 0.42991078 -1.9528097 128.0 +-6.4221611 0.46919784 -1.9522183 128.0 +-6.4305887 0.50949937 -1.9557668 128.0 +-6.4568481 0.55146533 -1.9649338 128.0 +-6.4685636 0.59246659 -1.9696651 128.0 +-6.4828706 0.63391107 -1.9752835 128.0 +-6.5130649 0.67723191 -1.985929 128.0 +-6.4973927 0.71592778 -1.9823805 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-6.4153848 0.86672872 -1.9628638 128.0 +-6.4023786 0.9050073 -1.9604981 128.0 +-6.3711886 0.94050944 -1.9525141 128.0 +-6.3634095 0.97929418 -1.9519225 128.0 +-6.3346429 1.0146961 -1.9448256 128.0 +-6.3179317 1.0518206 -1.9415728 128.0 +-6.3151245 1.0912173 -1.9427556 128.0 +-6.3327584 1.1343232 -1.9504441 128.0 +-6.3341327 1.1747262 -1.9531054 128.0 +-6.3277435 1.2137495 -1.9534011 128.0 +-6.3164287 1.2518103 -1.9522183 128.0 +-6.3142443 1.291692 -1.9539925 128.0 +-6.3108735 1.3313968 -1.955471 128.0 +-6.2689795 1.3627914 -1.9448256 128.0 +-6.2903309 1.4079064 -1.9542882 128.0 +-6.2787809 1.4458337 -1.9534011 128.0 +-6.2595658 1.4819123 -1.9501483 128.0 +-6.2466421 1.5193894 -1.9489655 128.0 +-6.2381287 1.5579209 -1.9492612 128.0 +-6.2136459 1.5923746 -1.9445299 128.0 +-6.2203884 1.6348405 -1.9498526 128.0 +-6.2120852 1.6734742 -1.9504441 128.0 +-6.2109089 1.7141001 -1.9534011 128.0 +-6.1965971 1.7511384 -1.9522183 128.0 +-0 0 -0 128.0 +-6.1709771 1.8259643 -1.9510355 128.0 +-0 0 -0 128.0 +-6.1344156 1.8973211 -1.9465998 128.0 +-6.0953317 1.9262913 -1.9377286 128.0 +-6.0688515 1.9589611 -1.9329972 128.0 +-6.0485516 1.9934714 -1.9303359 128.0 +-6.0579367 2.0378556 -1.9374329 128.0 +-6.0453186 2.0749881 -1.9374329 128.0 +-6.0135384 2.1054146 -1.931223 128.0 +-6.0059047 2.1442001 -1.9329972 128.0 +-5.9872489 2.1790514 -1.931223 128.0 +-5.9710789 2.214751 -1.9303359 128.0 +-5.9600577 2.2523601 -1.931223 128.0 +-5.9541492 2.291976 -1.9338844 128.0 +-5.9426422 2.3295126 -1.9347715 128.0 +-5.9353347 2.3687644 -1.9371371 128.0 +-5.9100676 2.4008245 -1.9335887 128.0 +-5.8978739 2.4381375 -1.9344758 128.0 +-5.8836832 2.4746506 -1.9347715 128.0 +-5.8683882 2.5107057 -1.9347715 128.0 +-5.8502445 2.5455229 -1.9338844 128.0 +-5.8275266 2.5782797 -1.9315187 128.0 +-5.8176951 2.6167309 -1.9335887 128.0 +-5.7989235 2.6511869 -1.9327016 128.0 +-5.7747498 2.6830964 -1.9300402 128.0 +-5.7495389 2.7144012 -1.9270831 128.0 +-5.7293301 2.7479765 -1.9259002 128.0 +-5.6977611 2.7759674 -1.9208733 128.0 +-5.7037392 2.8223133 -1.9288573 128.0 +-5.6829 2.8555422 -1.9276745 128.0 +-5.6703773 2.8929627 -1.9294487 128.0 +-5.6550646 2.9290187 -1.9303359 128.0 +-5.62853 2.9592175 -1.9273788 128.0 +-5.5832963 2.9793084 -1.9179162 128.0 +-5.5875921 3.0257914 -1.9259002 128.0 +-5.5513387 3.0503595 -1.9196904 128.0 +-5.5358553 3.086225 -1.9208733 128.0 +-5.5126567 3.1177831 -1.9193947 128.0 +-5.490108 3.1496482 -1.9182118 128.0 +-5.480587 3.1890402 -1.9217603 128.0 +-5.4304752 3.2046471 -1.9108192 128.0 +-5.4246454 3.2462456 -1.9158462 128.0 +-5.3956404 3.274019 -1.9125934 128.0 +-5.4014874 3.3230805 -1.9220561 128.0 +-5.3769426 3.3536334 -1.9205775 128.0 +-5.3562641 3.3865626 -1.9205775 128.0 +-5.3434267 3.4245183 -1.9235346 128.0 +-5.3046885 3.4457934 -1.917029 128.0 +-5.2930207 3.4845803 -1.9205775 128.0 +-5.2755136 3.5196426 -1.9220561 128.0 +-5.2451129 3.5460615 -1.9188033 128.0 +-5.2398062 3.5895145 -1.9250132 128.0 +-5.2066956 3.6139727 -1.9208733 128.0 +-5.1797342 3.6425555 -1.919099 128.0 +-5.164289 3.6792574 -1.9217603 128.0 +-5.1431656 3.7119937 -1.9223518 128.0 +-5.1233768 3.7457366 -1.9235346 128.0 +-5.1018324 3.7782395 -1.924126 128.0 +-5.073204 3.8054605 -1.9220561 128.0 +-5.0528016 3.8388288 -1.9232389 128.0 +-5.0230947 3.8650999 -1.9208733 128.0 +-4.9940095 3.8917382 -1.9188033 128.0 +-4.9850349 3.9341428 -1.9247174 128.0 +-4.9570704 3.9616747 -1.9232389 128.0 +-4.9267278 3.9872086 -1.9208733 128.0 +-4.9043865 4.0191798 -1.9217603 128.0 +-0 0 -0 128.0 +-4.8649354 4.0876641 -1.9259002 128.0 +-4.8281202 4.1075349 -1.9211689 128.0 +-4.8049974 4.1389523 -1.9220561 128.0 +-4.7759113 4.1652184 -1.9205775 128.0 +-4.7402382 4.1855927 -1.9164376 128.0 +-4.7116179 4.2120533 -1.9152548 128.0 +-4.6835594 4.2389607 -1.9143677 128.0 +-4.6595745 4.2695546 -1.9152548 128.0 +-4.6297874 4.294817 -1.9137763 128.0 +-4.6068296 4.3264136 -1.9152548 128.0 +-4.5698113 4.3447261 -1.9108192 128.0 +-4.53756 4.3673849 -1.9084535 128.0 +-4.5407829 4.4244761 -1.9214647 128.0 +-4.5135493 4.4522548 -1.9214647 128.0 +-4.4705982 4.4643412 -1.9146633 128.0 +-4.4484959 4.4971209 -1.917029 128.0 +-4.4128065 4.5161333 -1.9134805 128.0 +-4.3850131 4.5431247 -1.9134805 128.0 +-4.3537579 4.5664883 -1.912002 128.0 +-4.3132119 4.5799041 -1.9063835 128.0 +-4.2908854 4.6125779 -1.9090449 128.0 +-4.2612095 4.6374125 -1.9084535 128.0 +-4.2320328 4.6627645 -1.9081578 128.0 +-4.205256 4.6907778 -1.9090449 128.0 +-4.1744947 4.7143469 -1.9081578 128.0 +-4.1511497 4.7463436 -1.9108192 128.0 +-4.1200752 4.7695565 -1.909932 128.0 +-4.0907321 4.7947469 -1.909932 128.0 +-4.0630822 4.8219485 -1.9108192 128.0 +-4.0346408 4.8482566 -1.9114106 128.0 +-3.9987507 4.8655419 -1.9084535 128.0 +-3.9790556 4.9025946 -1.9134805 128.0 +-3.9441192 4.9209547 -1.9111149 128.0 +-3.90555 4.9345765 -1.9069749 128.0 +-3.8628442 4.9426422 -1.9007651 128.0 +-3.8371134 4.972301 -1.9031308 128.0 +-3.8123219 5.0033493 -1.9060879 128.0 +-3.7781041 5.0220671 -1.9043136 128.0 +-3.74437 5.0413203 -1.902835 128.0 +-3.7077172 5.0564971 -1.899878 128.0 +-3.6956677 5.1054606 -1.909932 128.0 +-3.6603837 5.1226001 -1.9078621 128.0 +-3.6294336 5.1457443 -1.9081578 128.0 +-3.5917873 5.1592937 -1.904905 128.0 +-3.5562756 5.175724 -1.902835 128.0 +-3.5276682 5.2021914 -1.9046093 128.0 +-3.4908998 5.2165937 -1.901948 128.0 +-3.455667 5.2331324 -1.9001737 128.0 +-3.4141042 5.2398314 -1.894851 128.0 +-3.3777559 5.2542529 -1.8924853 128.0 +-3.3495462 5.281333 -1.894851 128.0 +-3.3500149 5.3544235 -1.9140719 128.0 +-3.316596 5.3740649 -1.9137763 128.0 +-3.2850492 5.3967619 -1.9146633 128.0 +-3.2425303 5.4012561 -1.9090449 128.0 +-3.2078679 5.4185843 -1.9081578 128.0 +-3.1634817 5.4191914 -1.9013565 128.0 +-3.1430383 5.4608536 -1.9093406 128.0 +-3.1391757 5.5323772 -1.9279703 128.0 +-3.0921118 5.5281916 -1.9196904 128.0 +-3.0535207 5.5386949 -1.9167334 128.0 +-3.0035143 5.5279493 -1.9063835 128.0 +-2.9668331 5.5412216 -1.9046093 128.0 +-2.9403553 5.5736847 -1.9096364 128.0 +-2.8906798 5.561955 -1.8992865 128.0 +-2.8556271 5.5778866 -1.8986951 128.0 +-2.8290908 5.6106563 -1.9040179 128.0 +-2.8171318 5.6732554 -1.9196904 128.0 +-2.7810094 5.6878595 -1.9188033 128.0 +-2.7381837 5.6884627 -1.9131849 128.0 +-2.7044556 5.7077465 -1.9140719 128.0 +-2.6718054 5.7294278 -1.9158462 128.0 +-2.6250443 5.7205358 -1.9072707 128.0 +-2.5957913 5.7495947 -1.9117063 128.0 +-2.5647295 5.7750173 -1.9149591 128.0 +-2.5315409 5.795898 -1.9167334 128.0 +-2.5162904 5.8587189 -1.9327016 128.0 +-2.4717467 5.8538079 -1.9259002 128.0 +-2.4471354 5.8962145 -1.9350672 128.0 +-2.3899832 5.8598175 -1.9179162 128.0 +-2.3568261 5.8814654 -1.9202818 128.0 +-2.3266428 5.9109268 -1.9253088 128.0 +-2.2830961 5.9063802 -1.919099 128.0 +-2.2566435 5.946178 -1.9276745 128.0 +-2.2214501 5.9634933 -1.9288573 128.0 +-2.1851449 5.9779086 -1.9291531 128.0 +-2.1584218 6.0190787 -1.93832 128.0 +-2.1128902 6.0078783 -1.9303359 128.0 +-2.0738065 6.0144081 -1.9282659 128.0 +-2.0402288 6.036974 -1.9315187 128.0 +-1.9980423 6.0339627 -1.9264917 128.0 +-1.9527273 6.0206666 -1.9182118 128.0 +-1.9250026 6.0616693 -1.9276745 128.0 +-1.8903251 6.0815768 -1.9303359 128.0 +-1.8424096 6.0583315 -1.919099 128.0 +-1.8131009 6.0960755 -1.9276745 128.0 +-1.7767291 6.110755 -1.9288573 128.0 +-1.7394619 6.1224604 -1.9291531 128.0 +-1.7028844 6.1367002 -1.9303359 128.0 +-1.6482095 6.0843353 -1.9102278 128.0 +-1.625496 6.1497469 -1.9279703 128.0 +-1.5839152 6.1448045 -1.9232389 128.0 +-1.5438534 6.145143 -1.9202818 128.0 +-1.5072541 6.1591396 -1.9217603 128.0 +-1.4692125 6.1673427 -1.9214647 128.0 +-1.4380304 6.20509 -1.9306316 128.0 +-1.3997196 6.2128649 -1.9303359 128.0 +-1.3548301 6.1905417 -1.9205775 128.0 +-1.3245641 6.2351804 -1.9321102 128.0 +-1.2855096 6.2394476 -1.9309273 128.0 +-1.2515037 6.268764 -1.9377286 128.0 +-1.2113838 6.2678838 -1.9350672 128.0 +-1.1716729 6.2686257 -1.9329972 128.0 +-1.1347156 6.2841578 -1.9356587 128.0 +-1.0958073 6.2891197 -1.9350672 128.0 +-1.0567225 6.2928987 -1.9341801 128.0 +-1.0191575 6.3058653 -1.9362501 128.0 +-0.97971284 6.3072805 -1.9347715 128.0 +-0.94183898 6.3188419 -1.9365457 128.0 +-0.90291446 6.3235564 -1.9362501 128.0 +-0.86422616 6.3299241 -1.9365457 128.0 +-0.82549369 6.3360548 -1.9368415 128.0 +-0.78671849 6.341949 -1.9371371 128.0 +-0.7464481 6.3352723 -1.9335887 128.0 +-0.70830369 6.3463788 -1.9356587 128.0 +-0.66804725 6.3382554 -1.9318144 128.0 +-0.62848336 6.3355808 -1.9297445 128.0 +-0.59057087 6.3497806 -1.9329972 128.0 +-0.55093676 6.3456712 -1.9306316 128.0 +-0.51306593 6.3622627 -1.9347715 128.0 +-0.47423115 6.3681488 -1.9356587 128.0 +-0.43534347 6.3737979 -1.9365457 128.0 +-0.3964043 6.3792095 -1.9374329 128.0 +-0.35693401 6.3757992 -1.9356587 128.0 +-0.31756812 6.3730989 -1.9341801 128.0 +-0.27891675 6.3854256 -1.9374329 128.0 +-0.23991072 6.3917894 -1.9389114 128.0 +-0.2002064 6.3778644 -1.9341801 128.0 +-0.16118966 6.3837476 -1.9356587 128.0 +-0.12219981 6.3941674 -1.9386157 128.0 +-0.082851574 6.3862004 -1.9359543 128.0 +-0.043665022 6.3865886 -1.9359543 128.0 +-0.0044761011 6.3857808 -1.9356587 128.0 +0.034711529 6.3866434 -1.9359543 128.0 +0.07373368 6.3719821 -1.9315187 128.0 +0.11286375 6.3733196 -1.9321102 128.0 +0.15210387 6.3782372 -1.9338844 128.0 +0.1914943 6.3857775 -1.9365457 128.0 +0.2304665 6.3787546 -1.9347715 128.0 +0.26911798 6.365767 -1.931223 128.0 +0.3076188 6.3525462 -1.9276745 128.0 +0.34690347 6.3562622 -1.9294487 128.0 +0.38520405 6.3425717 -1.9259002 128.0 +0.42455998 6.3467607 -1.9279703 128.0 +0.46279952 6.3345089 -1.9250132 128.0 +0.50241256 6.341073 -1.9279703 128.0 +0.54074252 6.3312082 -1.9259002 128.0 +0.57766432 6.3068423 -1.9193947 128.0 +0.62062526 6.3469133 -1.9329972 128.0 +0.65353441 6.2850261 -1.9149591 128.0 +0.69679183 6.323627 -1.9282659 128.0 +0.73690444 6.3306189 -1.9318144 128.0 +0.77375895 6.3098593 -1.9267874 128.0 +0.81002039 6.2860436 -1.9208733 128.0 +0.85304993 6.3140893 -1.931223 128.0 +0.88896984 6.2888727 -1.9250132 128.0 +0.92712259 6.2804642 -1.924126 128.0 +0.96476984 6.2689924 -1.9223518 128.0 +1.0056341 6.2780471 -1.9270831 128.0 +1.0413138 6.2547965 -1.9217603 128.0 +1.0796728 6.2482896 -1.9217603 128.0 +1.1173178 6.2377858 -1.9205775 128.0 +1.1597505 6.253355 -1.9276745 128.0 +1.1961195 6.2358012 -1.9244218 128.0 +1.237144 6.2424006 -1.9288573 128.0 +1.2744664 6.2300124 -1.9273788 128.0 +1.3152318 6.2342267 -1.931223 128.0 +1.3518366 6.2185712 -1.9288573 128.0 +1.3922621 6.2204142 -1.9321102 128.0 +1.427189 6.1977901 -1.9276745 128.0 +1.4656311 6.1907754 -1.9282659 128.0 +1.5002036 6.1677427 -1.9238303 128.0 +1.5444994 6.1843724 -1.9321102 128.0 +1.5781493 6.1581225 -1.9267874 128.0 +1.6156623 6.1473989 -1.9264917 128.0 +1.6483831 6.1189218 -1.9205775 128.0 +1.688946 6.1197429 -1.924126 128.0 +1.7241267 6.1009908 -1.9214647 128.0 +1.7615293 6.0902967 -1.9214647 128.0 +1.7975105 6.0747933 -1.9199861 128.0 +1.8339211 6.0609069 -1.919099 128.0 +1.8716401 6.0513649 -1.9196904 128.0 +1.909023 6.040678 -1.9199861 128.0 +1.9457587 6.0279417 -1.9196904 128.0 +1.9830078 6.0167966 -1.9199861 128.0 +2.0186708 6.0008941 -1.9188033 128.0 +2.0548334 5.9865875 -1.9182118 128.0 +2.091212 5.9729648 -1.9179162 128.0 +2.1307123 5.9681182 -1.9205775 128.0 +2.1604323 5.9360805 -1.9143677 128.0 +2.1954861 5.9191298 -1.9131849 128.0 +2.229738 5.9001856 -1.9114106 128.0 +2.266242 5.8872843 -1.9117063 128.0 +2.3047631 5.8794942 -1.9137763 128.0 +2.3468142 5.8803248 -1.9188033 128.0 +2.3839295 5.8684697 -1.9196904 128.0 +2.422812 5.8607945 -1.9220561 128.0 +2.4720585 5.8775191 -1.9327016 128.0 +2.4975562 5.8376479 -1.9244218 128.0 +2.50932 5.7670269 -1.9057921 128.0 +2.5407941 5.742785 -1.902835 128.0 +2.5622702 5.6965938 -1.8924853 128.0 +2.6142526 5.7181239 -1.9052007 128.0 +2.6508992 5.705441 -1.9063835 128.0 +2.689527 5.6968427 -1.9090449 128.0 +2.7318668 5.6957374 -1.9143677 128.0 +2.7667637 5.6788673 -1.9143677 128.0 +2.7846124 5.6275353 -1.9025394 128.0 +2.8135147 5.5992465 -1.8986951 128.0 +2.8443453 5.5750699 -1.8963295 128.0 +2.8754249 5.5515747 -1.8942596 128.0 +2.9054341 5.5262165 -1.8915981 128.0 +2.9329922 5.4964857 -1.8874582 128.0 +2.9816723 5.5061073 -1.8972166 128.0 +3.0154011 5.4877086 -1.8972166 128.0 +3.0485511 5.4682684 -1.8969209 128.0 +3.0829868 5.4511232 -1.8975123 128.0 +3.1178021 5.4345894 -1.8983995 128.0 +3.1443641 5.4037971 -1.8942596 128.0 +3.1847436 5.3967428 -1.8986951 128.0 +3.2207403 5.3820186 -1.9004694 128.0 +3.2487481 5.3539877 -1.8975123 128.0 +3.2845416 5.3388352 -1.8992865 128.0 +3.2965131 5.2853475 -1.8871626 128.0 +3.3156095 5.2440271 -1.8794742 128.0 +3.3678243 5.2549524 -1.8910067 128.0 +3.37659 5.1981378 -1.8776999 128.0 +3.4289057 5.2084408 -1.8892325 128.0 +3.4528477 5.1753826 -1.8847969 128.0 +3.4898882 5.1620135 -1.887754 128.0 +3.5301332 5.1531124 -1.8924853 128.0 +3.5600517 5.1290007 -1.8915981 128.0 +3.5947526 5.1117487 -1.8933724 128.0 +3.6288211 5.0934858 -1.894851 128.0 +3.6577699 5.0680251 -1.8936681 128.0 +3.6876702 5.0439439 -1.8930767 128.0 +3.7253716 5.0304346 -1.8966252 128.0 +3.7527285 5.0028958 -1.894851 128.0 +3.7879779 4.9858608 -1.8972166 128.0 +3.8184993 4.9625244 -1.8972166 128.0 +3.8529868 4.9442759 -1.8992865 128.0 +3.8779261 4.9137921 -1.8966252 128.0 +3.9133706 4.8966217 -1.8992865 128.0 +3.9391358 4.8673191 -1.8972166 128.0 +3.9701378 4.8445354 -1.897808 128.0 +4.0010085 4.8215542 -1.8983995 128.0 +4.0268307 4.7925253 -1.8966252 128.0 +4.0567803 4.7684546 -1.8969209 128.0 +4.0803518 4.7369585 -1.8942596 128.0 +4.1212697 4.7255125 -1.899878 128.0 +4.1451292 4.694407 -1.8975123 128.0 +4.1700358 4.6646109 -1.895738 128.0 +4.1966558 4.6368113 -1.894851 128.0 +4.203732 4.5877304 -1.8850926 128.0 +4.2376494 4.5681539 -1.887754 128.0 +4.2897944 4.567832 -1.8986951 128.0 +4.3144503 4.5379629 -1.8972166 128.0 +4.3547993 4.5244823 -1.902835 128.0 +4.3764796 4.4915185 -1.9001737 128.0 +4.4113355 4.4720616 -1.9034264 128.0 +4.4427423 4.448966 -1.9052007 128.0 +4.4523001 4.4041543 -1.8975123 128.0 +4.4819727 4.3794231 -1.8986951 128.0 +4.4874535 4.3312726 -1.8895282 128.0 +4.5429821 4.3313441 -1.901948 128.0 +4.5444393 4.2798085 -1.8913025 128.0 +4.5657187 4.2472887 -1.8892325 128.0 +4.5923967 4.2198405 -1.8895282 128.0 +4.6252761 4.1980033 -1.8924853 128.0 +4.6473913 4.1663556 -1.8910067 128.0 +4.6692924 4.1345944 -1.8895282 128.0 +4.6952929 4.1064954 -1.8898239 128.0 +4.7131729 4.071363 -1.8868668 128.0 +4.7402453 4.0442271 -1.887754 128.0 +4.7649713 4.0150657 -1.887754 128.0 +4.8012652 3.9955301 -1.8924853 128.0 +4.8234773 3.9641752 -1.8915981 128.0 +4.8536434 3.9393208 -1.8939638 128.0 +4.873251 3.9058802 -1.8921895 128.0 +4.9195962 3.893692 -1.9010608 128.0 +4.9561896 3.8734336 -1.9060879 128.0 +4.9685197 3.8341951 -1.9016522 128.0 +4.9744768 3.7903194 -1.894851 128.0 +4.9961133 3.7585766 -1.8942596 128.0 +5.0229158 3.7306983 -1.895738 128.0 +5.0534158 3.7054574 -1.8986951 128.0 +5.0791521 3.6766212 -1.899878 128.0 +5.1039472 3.6470532 -1.9007651 128.0 +5.1246681 3.6145661 -1.9001737 128.0 +5.1585097 3.5912416 -1.9046093 128.0 +5.1733623 3.5546525 -1.901948 128.0 +5.1974473 3.524451 -1.902835 128.0 +5.2189751 3.4924939 -1.902835 128.0 +5.2426982 3.4619844 -1.9037222 128.0 +5.2662425 3.4313152 -1.9046093 128.0 +5.2871976 3.3989377 -1.9046093 128.0 +5.3127937 3.3695021 -1.9063835 128.0 +5.3398471 3.3408937 -1.9087492 128.0 +5.3537426 3.3040524 -1.9063835 128.0 +5.3714671 3.2696497 -1.9054965 128.0 +5.4061704 3.2454808 -1.9108192 128.0 +5.4226942 3.2103014 -1.9096364 128.0 +5.4464149 3.1793761 -1.9111149 128.0 +5.4633369 3.1444678 -1.9102278 128.0 +5.4792051 3.1090004 -1.9090449 128.0 +5.4906754 3.0711246 -1.9063835 128.0 +5.5069065 3.0359929 -1.9054965 128.0 +5.5212345 2.9998653 -1.9040179 128.0 +5.5361686 2.9641275 -1.902835 128.0 +5.5601664 2.9332228 -1.904905 128.0 +5.5772119 2.8986106 -1.9046093 128.0 +5.5940423 2.8638995 -1.9043136 128.0 +5.6166272 2.8321021 -1.9060879 128.0 +5.6347547 2.7980106 -1.9063835 128.0 +5.6415186 2.758348 -1.902835 128.0 +5.6505909 2.7199509 -1.9001737 128.0 +5.6723533 2.6876829 -1.901948 128.0 +5.6930666 2.6548462 -1.9034264 128.0 +5.7153268 2.6226535 -1.9054965 128.0 +5.7374058 2.5902874 -1.9075664 128.0 +5.7496996 2.5534835 -1.9063835 128.0 +5.7652588 2.5181561 -1.9063835 128.0 +5.7779684 2.4816024 -1.9054965 128.0 +5.7842865 2.4423864 -1.9025394 128.0 +5.8026929 2.4083138 -1.9037222 128.0 +5.820014 2.3737462 -1.9046093 128.0 +5.8362432 2.3387012 -1.9052007 128.0 +5.8540387 2.3042464 -1.9063835 128.0 +5.8787594 2.2724173 -1.909932 128.0 +5.892592 2.2363031 -1.909932 128.0 +5.9169445 2.2041068 -1.9134805 128.0 +5.9303575 2.1677597 -1.9134805 128.0 +5.949841 2.1335886 -1.9155505 128.0 +5.9619193 2.0967238 -1.9152548 128.0 +5.969254 2.058234 -1.9134805 128.0 +5.9826756 2.0218744 -1.9137763 128.0 +5.9995031 1.9866291 -1.9152548 128.0 +6.0061278 1.9480108 -1.9134805 128.0 +6.0179677 1.9111212 -1.9134805 128.0 +6.0314054 1.8747269 -1.9140719 128.0 +6.0363975 1.8357376 -1.912002 128.0 +6.0466318 1.7983921 -1.9117063 128.0 +6.0291171 1.752987 -1.9025394 128.0 +6.0765157 1.7264054 -1.9143677 128.0 +6.0952787 1.6913874 -1.917029 128.0 +6.1000099 1.6524566 -1.9152548 128.0 +6.1100345 1.6149966 -1.9152548 128.0 +6.1392541 1.5824842 -1.9214647 128.0 +6.1303191 1.5401282 -1.9155505 128.0 +6.1582117 1.507027 -1.9214647 128.0 +6.161767 1.4678839 -1.9196904 128.0 +6.1753106 1.4311271 -1.9211689 128.0 +6.18118 1.3925791 -1.9202818 128.0 +6.1830764 1.3531958 -1.9182118 128.0 +6.1968694 1.3164231 -1.9199861 128.0 +6.2113795 1.2797248 -1.9220561 128.0 +6.2181778 1.2414013 -1.9217603 128.0 +6.22474 1.2030426 -1.9214647 128.0 +6.2263703 1.1637722 -1.9196904 128.0 +6.2277536 1.1245272 -1.9179162 128.0 +6.242065 1.0876056 -1.9202818 128.0 +6.2570996 1.0507088 -1.9229432 128.0 +6.2643719 1.0124487 -1.9232389 128.0 +6.278018 0.97516561 -1.9256046 128.0 +6.2848282 0.93676692 -1.9259002 128.0 +6.2847838 0.89737576 -1.924126 128.0 +6.2977433 0.85983044 -1.9264917 128.0 +6.3029008 0.82117206 -1.9264917 128.0 +6.3125606 0.78307104 -1.9279703 128.0 +6.3020673 0.74253368 -1.9232389 128.0 +6.312201 0.70448703 -1.9250132 128.0 +6.302155 0.66424 -1.9205775 128.0 +6.3004084 0.62499201 -1.9188033 128.0 +6.2946129 0.58543646 -1.9158462 128.0 +6.2581153 0.54332954 -1.9034264 128.0 +6.3165579 0.5093773 -1.9205775 128.0 +6.3424277 0.47231409 -1.9276745 128.0 +6.3290048 0.43228117 -1.9226475 128.0 +6.3458395 0.39432856 -1.9270831 128.0 +6.3557696 0.35581145 -1.9294487 128.0 +6.3425679 0.31604487 -1.9247174 128.0 +6.3462963 0.27720514 -1.9253088 128.0 +6.3555145 0.23854689 -1.9276745 128.0 +6.3625875 0.1997259 -1.9294487 128.0 +6.3780179 0.16104463 -1.9338844 128.0 +6.358829 0.12152224 -1.9276745 128.0 +6.3489475 0.082365938 -1.9244218 128.0 +6.3426466 0.043361843 -1.9223518 128.0 +6.3427935 0.0044432767 -1.9223518 128.0 +6.3455667 -0.03449085 -1.9232389 128.0 +6.3481016 -0.07345885 -1.924126 128.0 +6.3542171 -0.11252666 -1.926196 128.0 +6.3667774 -0.1518313 -1.9303359 128.0 +6.3628612 -0.19080852 -1.9294487 128.0 +6.3692079 -0.23012218 -1.9318144 128.0 +6.3686304 -0.26923886 -1.9321102 128.0 +6.3764 -0.30877241 -1.9350672 128.0 +6.3677087 -0.34752747 -1.9329972 128.0 +6.3692703 -0.38682386 -1.9341801 128.0 +6.3543859 -0.42506957 -1.9303359 128.0 +6.3564219 -0.4643991 -1.9318144 128.0 +6.3515482 -0.50324184 -1.931223 128.0 +6.3454852 -0.54196101 -1.9303359 128.0 +6.3448944 -0.58114719 -1.931223 128.0 +6.3516674 -0.62108982 -1.9344758 128.0 +6.3420358 -0.65945876 -1.9327016 128.0 +6.3416681 -0.69877863 -1.9338844 128.0 +6.3258748 -0.7363525 -1.9303359 128.0 +6.3278747 -0.77596694 -1.9324058 128.0 +6.3391008 -0.81685394 -1.9374329 128.0 +6.3178759 -0.85356128 -1.9324058 128.0 +6.2803597 -0.88776702 -1.9223518 128.0 +6.3031454 -0.93046927 -1.931223 128.0 +6.3039269 -0.97014385 -1.933293 128.0 +6.2808766 -1.0060872 -1.9279703 128.0 +6.2821236 -1.0458615 -1.9303359 128.0 +6.2718229 -1.0837379 -1.9291531 128.0 +6.2631745 -1.1218638 -1.9285617 128.0 +6.2758975 -1.1639297 -1.9347715 128.0 +6.2564411 -1.2000773 -1.9309273 128.0 +6.2536454 -1.2393718 -1.9324058 128.0 +6.2665129 -1.2819308 -1.9389114 128.0 +6.2510514 -1.3187802 -1.9365457 128.0 +6.2475095 -1.3581254 -1.9380243 128.0 +6.245584 -1.397894 -1.9400942 128.0 +6.2322345 -1.4351183 -1.9386157 128.0 +6.2205229 -1.4726715 -1.9377286 128.0 +6.1890922 -1.5053951 -1.9306316 128.0 +6.1760311 -1.5424167 -1.9294487 128.0 +6.1942124 -1.5873957 -1.93832 128.0 +6.1584864 -1.6185755 -1.9300402 128.0 +6.1641197 -1.6605561 -1.9350672 128.0 +6.1556563 -1.6988553 -1.9356587 128.0 +6.1460361 -1.7368534 -1.9359543 128.0 +6.1380162 -1.7753282 -1.9368415 128.0 +6.120595 -1.81106 -1.9347715 128.0 +6.1011381 -1.8460917 -1.9321102 128.0 +6.0760064 -1.8792597 -1.9276745 128.0 +6.0598068 -1.915067 -1.926196 128.0 +6.0043049 -1.9381306 -1.912002 128.0 +5.9532862 -1.9620805 -1.8992865 128.0 +5.865078 -1.9729924 -1.8744471 128.0 +5.7064853 -1.958711 -1.8265424 128.0 +5.6213269 -1.968124 -1.80259 128.0 +5.5614619 -1.9855585 -1.7869174 128.0 +5.4890285 -1.9977601 -1.7671051 128.0 +5.4256139 -2.0124698 -1.7502497 128.0 +5.3756313 -2.0315418 -1.7378299 128.0 +5.3309698 -2.0521355 -1.7271844 128.0 +5.2746968 -2.0677266 -1.7126948 128.0 +5.2388415 -2.0908477 -1.7050064 128.0 +5.157764 -2.095274 -1.6822368 128.0 +5.1006684 -2.1086371 -1.6674515 128.0 +5.0673804 -2.1313777 -1.6606501 128.0 +5.0199537 -2.147778 -1.6491176 128.0 +4.9751453 -2.1648204 -1.6384721 128.0 +4.925077 -2.1790757 -1.6260523 128.0 +4.7600188 -2.1410804 -1.5745991 128.0 +4.4913611 -2.0534871 -1.487661 128.0 +4.7195244 -2.1928923 -1.5698677 128.0 +4.5375252 -2.1422935 -1.5122048 128.0 +4.3304901 -2.0771546 -1.4456704 128.0 +4.300487 -2.0953202 -1.4397563 128.0 +4.2233329 -2.0898974 -1.4175781 128.0 +4.1472635 -2.0840368 -1.3956957 128.0 +4.1029124 -2.0933838 -1.3847545 128.0 +4.0382457 -2.0917225 -1.3667164 128.0 +4.0414004 -2.1249065 -1.3723348 128.0 +3.9558036 -2.1109924 -1.3469039 128.0 +4.4031229 -2.3844745 -1.5089519 128.0 +3.9572296 -2.1745565 -1.3566623 128.0 +3.9154425 -2.1829829 -1.3466082 128.0 +4.5455818 -2.5709171 -1.5754862 128.0 +3.5892222 -2.059279 -1.2398576 128.0 +3.5583539 -2.0706947 -1.2333521 128.0 +3.5118489 -2.0725861 -1.221228 128.0 +3.5171001 -2.1048861 -1.2277336 128.0 +3.4306138 -2.0818315 -1.2011199 128.0 +3.3779058 -2.0783172 -1.1866301 128.0 +3.3302352 -2.0772684 -1.1739147 128.0 +3.2657492 -2.0649941 -1.1549894 128.0 +3.2264748 -2.0679853 -1.145231 128.0 +3.1584468 -2.051841 -1.1248271 128.0 +3.1043053 -2.0438704 -1.1094503 128.0 +3.0766068 -2.0528073 -1.1038319 128.0 +3.0465417 -2.0598767 -1.0973263 128.0 +3.014142 -2.0650353 -1.0899336 128.0 +2.9778705 -2.0671513 -1.0810624 128.0 +2.9541905 -2.0776918 -1.0769224 128.0 +2.9094863 -2.0730553 -1.0647985 128.0 +2.9036832 -2.0958996 -1.0674598 128.0 +2.8977091 -2.1187506 -1.0701212 128.0 +2.9023116 -2.1495655 -1.0769224 128.0 +2.8959455 -2.1724918 -1.0795839 128.0 +2.8939712 -2.1988878 -1.0840194 128.0 +2.8910244 -2.2247586 -1.0881593 128.0 +2.8908827 -2.2530243 -1.0934821 128.0 +2.8522565 -2.2511921 -1.0837238 128.0 +2.8145089 -2.2495677 -1.0742611 128.0 +2.7828305 -2.2523732 -1.0671641 128.0 +2.7504852 -2.2542694 -1.0597714 128.0 +2.7564511 -2.2875731 -1.0677555 128.0 +2.7182262 -2.2841654 -1.0579971 128.0 +2.7034321 -2.3001821 -1.0577015 128.0 +2.6979532 -2.3242078 -1.06125 128.0 +2.6829214 -2.3400905 -1.0609542 128.0 +2.7014539 -2.3855917 -1.0745568 128.0 +2.6689596 -2.3862071 -1.0671641 128.0 +2.6769338 -2.4230502 -1.0766268 128.0 +2.613415 -2.3949027 -1.0562229 128.0 +2.620383 -2.4310319 -1.0653899 128.0 +2.6242194 -2.46472 -1.0733739 128.0 +2.5951996 -2.467612 -1.0674598 128.0 +2.5910227 -2.4940882 -1.0721911 128.0 +2.5681441 -2.5026066 -1.0689384 128.0 +2.5282552 -2.4941683 -1.0582929 128.0 +2.5074959 -2.5042346 -1.0559272 128.0 +2.4934266 -2.5209312 -1.0565186 128.0 +2.4939356 -2.5525804 -1.0636156 128.0 +2.472255 -2.5616491 -1.0609542 128.0 +2.4584682 -2.5788445 -1.0618414 128.0 +2.450458 -2.6022253 -1.0653899 128.0 +2.4363971 -2.6193104 -1.066277 128.0 +2.4280362 -2.6426508 -1.0698255 128.0 +2.4111335 -2.6567919 -1.0695298 128.0 +2.3941486 -2.6708252 -1.069234 128.0 +2.3827825 -2.6911864 -1.0715997 128.0 +2.3693695 -2.7093513 -1.0730783 128.0 +2.3414593 -2.7108269 -1.0677555 128.0 +2.3210614 -2.7207825 -1.0659813 128.0 +2.3030922 -2.7335122 -1.0653899 128.0 +2.2826097 -2.7431867 -1.0636156 128.0 +2.2566361 -2.7460713 -1.05918 128.0 +2.2373359 -2.7568994 -1.0579971 128.0 +2.2102203 -2.7579043 -1.0529702 128.0 +2.186142 -2.7624259 -1.0494217 128.0 +2.1632679 -2.7682612 -1.0464646 128.0 +2.1450741 -2.7799702 -1.0458732 128.0 +2.1245019 -2.7885211 -1.0440989 128.0 +2.114244 -2.8106644 -1.0476474 128.0 +2.1055031 -2.8350871 -1.052083 128.0 +2.0897624 -2.8502638 -1.0529702 128.0 +2.0800769 -2.8738656 -1.0571101 128.0 +2.0651813 -2.8904607 -1.0585886 128.0 +2.0468562 -2.9022973 -1.0582929 128.0 +2.0339222 -2.9218576 -1.0609542 128.0 +2.0202839 -2.9405811 -1.0633199 128.0 +1.9914789 -2.9371097 -1.0574057 128.0 +1.973951 -2.9500678 -1.0577015 128.0 +1.9689739 -2.9820523 -1.0650941 128.0 +1.9402083 -2.9780707 -1.05918 128.0 +1.8976171 -2.9521539 -1.0452816 128.0 +1.9081218 -3.0089161 -1.0618414 128.0 +1.8941841 -3.0278556 -1.0645027 128.0 +1.8795838 -3.0459244 -1.0668684 128.0 +1.8037325 -2.9635644 -1.0328619 128.0 +1.7835475 -2.9713001 -1.0316792 128.0 +1.7652824 -2.9821877 -1.0316792 128.0 +1.7464691 -2.9921381 -1.0313834 128.0 +1.7442806 -3.0309467 -1.0414375 128.0 +1.732251 -3.0532238 -1.0455774 128.0 +1.7139505 -3.0646291 -1.0458732 128.0 +1.6978816 -3.0801072 -1.0476474 128.0 +1.6798627 -3.0921459 -1.0482388 128.0 +1.6626619 -3.1057637 -1.0494217 128.0 +1.6453571 -3.1192868 -1.0506045 128.0 +1.6266271 -3.1301713 -1.0509001 128.0 +1.6030363 -3.1315901 -1.0479431 128.0 +1.5794895 -3.1328378 -1.044986 128.0 +1.5602371 -3.1424704 -1.044986 128.0 +1.534631 -3.1391122 -1.0405504 128.0 +1.5290155 -3.1768732 -1.0503087 128.0 +1.4988574 -3.1637509 -1.0426203 128.0 +1.4705334 -3.1538417 -1.0361148 128.0 +1.4352154 -3.1280773 -1.0242864 128.0 +1.3762882 -3.0488908 -0.99441993 128.0 +1.3311852 -2.9979122 -0.97431177 128.0 +1.3548317 -3.1023169 -1.0068396 128.0 +1.3776224 -3.2079985 -1.0396632 128.0 +1.3541961 -3.2075911 -1.0367062 128.0 +1.3513364 -3.2564249 -1.0503087 128.0 +1.3360206 -3.2761538 -1.054153 128.0 +1.3244226 -3.3055708 -1.06125 128.0 +1.3016655 -3.3074131 -1.05918 128.0 +1.2772133 -3.3046455 -1.0556315 128.0 +1.2558954 -3.3097408 -1.0547444 128.0 +1.2415669 -3.3334975 -1.0600671 128.0 +1.2374907 -3.3859127 -1.0748525 128.0 +1.2218519 -3.407829 -1.0795839 128.0 +1.1952131 -3.3990414 -1.0742611 128.0 +1.1780719 -3.4171481 -1.0778096 128.0 +1.1549412 -3.4179773 -1.0757396 128.0 +1.1636814 -3.5147762 -1.1050147 128.0 +1.1535895 -3.5572882 -1.1165473 128.0 +1.1375245 -3.5825083 -1.1224616 128.0 +1.0494417 -3.3768759 -1.0535616 128.0 +1.0167478 -3.3439524 -1.0408461 128.0 +0.98940086 -3.3272376 -1.0334533 128.0 +0.96416497 -3.316735 -1.0281307 128.0 +0.93987876 -3.308805 -1.023695 128.0 +0.92058057 -3.3181918 -1.0248779 128.0 +0.89845437 -3.3173237 -1.0228078 128.0 +0.88052446 -3.3320093 -1.0257649 128.0 +0.79113609 -3.0700169 -0.94030535 128.0 +0.74993306 -2.985872 -0.91191739 128.0 +0.79769343 -3.2604315 -0.99796844 128.0 +0.82860273 -3.4789944 -1.0659813 128.0 +0.81651676 -3.524029 -1.0786967 128.0 +0.79571837 -3.5327003 -1.0798795 128.0 +0.78097314 -3.5692441 -1.0899336 128.0 +0.76124215 -3.5842476 -1.0931864 128.0 +0.73962092 -3.5907223 -1.0937778 128.0 +0.71757472 -3.5951929 -1.0937778 128.0 +0.69550157 -3.5995281 -1.0937778 128.0 +0.67147088 -3.5933988 -1.090525 128.0 +0.64771152 -3.5880506 -1.0875679 128.0 +0.6151852 -3.5317276 -1.0686426 128.0 +0.60030842 -3.5759451 -1.0813581 128.0 +0.58094758 -3.5955927 -1.0863851 128.0 +0.56034136 -3.6085293 -1.0893422 128.0 +0.53903461 -3.6175685 -1.0911164 128.0 +0.51588184 -3.6141882 -1.0890465 128.0 +0.49046379 -3.5936232 -1.0816538 128.0 +0.46507069 -3.5709889 -1.0736697 128.0 +0.44703352 -3.6050594 -1.083428 128.0 +0.42367464 -3.5972986 -1.0801753 128.0 +0.39968574 -3.5827417 -1.0748525 128.0 +0.37749454 -3.5832267 -1.0742611 128.0 +0.35540679 -3.5845251 -1.0739654 128.0 +0.33331737 -3.5856872 -1.0736697 128.0 +0.31172314 -3.5924232 -1.0751482 128.0 +0.29028937 -3.6018858 -1.0775139 128.0 +0.26903516 -3.6150308 -1.0810624 128.0 +0.24789117 -3.6318624 -1.0857937 128.0 +0.22637281 -3.6457098 -1.0896379 128.0 +0.20464034 -3.6584754 -1.0931864 128.0 +0.18304534 -3.6768358 -1.0985092 128.0 +0.16018903 -3.6712093 -1.0964392 128.0 +0.13755223 -3.6692593 -1.0955521 128.0 +0.11512559 -3.6728985 -1.0964392 128.0 +0.092175998 -3.6573012 -1.0914122 128.0 +0.069843359 -3.6635287 -1.0931864 128.0 +0.047512483 -3.6753507 -1.0967349 128.0 +0.024900744 -3.6669757 -1.0940735 128.0 +0.0024008646 -3.6680148 -1.0943693 128.0 +-0.020157017 -3.6775131 -1.0973263 128.0 +-0.042622492 -3.6687231 -1.0946649 128.0 +-0.065031424 -3.6626618 -1.0928907 128.0 +-0.087367587 -3.6564639 -1.0911164 128.0 +-0.11051593 -3.6797302 -1.0985092 128.0 +-0.13326441 -3.6837561 -1.0999877 128.0 +-0.15606645 -3.6876411 -1.1014662 128.0 +-0.17813671 -3.6751642 -1.0979178 128.0 +-0.20005976 -3.6625557 -1.0943693 128.0 +-0.22212406 -3.6545844 -1.0922993 128.0 +-0.24467139 -3.6550591 -1.0928907 128.0 +-0.26778927 -3.6630163 -1.0958477 128.0 +-0.29071242 -3.6670182 -1.097622 128.0 +-0.31353229 -3.6689725 -1.0988048 128.0 +-0.33647415 -3.6717362 -1.1002834 128.0 +-0.36020496 -3.6819623 -1.1041276 128.0 +-0.38111171 -3.6635301 -1.0991006 128.0 +-0.40389723 -3.6639712 -1.0999877 128.0 +-0.42725447 -3.6690149 -1.1023533 128.0 +-0.45034015 -3.6710653 -1.1038319 128.0 +-0.4737111 -3.674865 -1.1059018 128.0 +-0.73467082 -5.437458 -1.6573974 128.0 +-0.51917261 -3.6716127 -1.106789 128.0 +-0.80845326 -5.4762306 -1.6724784 128.0 +-0.84596115 -5.4966593 -1.6804626 128.0 +-0.88163555 -5.5036278 -1.6843069 128.0 +-0.90754765 -5.4509988 -1.6695215 128.0 +-0.93805051 -5.4283834 -1.6641986 128.0 +-0.97033054 -5.4168835 -1.6624244 128.0 +-1.0030272 -5.4080095 -1.6615373 128.0 +-1.0369109 -5.4055061 -1.6627201 128.0 +-1.0709871 -5.4037275 -1.6641986 128.0 +-1.1046978 -5.3998618 -1.6650858 128.0 +-1.1368243 -5.3883085 -1.6636072 128.0 +-1.1745309 -5.4027019 -1.6704085 128.0 +-1.2076591 -5.3953934 -1.6704085 128.0 +-1.2394561 -5.3822961 -1.6686343 128.0 +-1.2722379 -5.3736601 -1.6683385 128.0 +-1.3081204 -5.3778195 -1.6721828 128.0 +-1.3466471 -5.3919358 -1.6792798 128.0 +-1.3825512 -5.3946762 -1.6828283 128.0 +-1.4090717 -5.3611455 -1.6748441 128.0 +-1.4382141 -5.3385625 -1.6704085 128.0 +-1.4833939 -5.3747597 -1.6848983 128.0 +-1.5184226 -5.372911 -1.6872638 128.0 +-1.5463197 -5.3460569 -1.6816454 128.0 +-1.5801774 -5.3401327 -1.6828283 128.0 +-1.1971774 -3.9560595 -1.2383791 128.0 +-1.223122 -3.9541152 -1.2401533 128.0 +-1.6678431 -5.2773499 -1.6721828 128.0 +-1.7019532 -5.2724714 -1.673957 128.0 +-1.7318808 -5.2546711 -1.6715914 128.0 +-1.761654 -5.236702 -1.6692257 128.0 +-1.7937527 -5.2257938 -1.6692257 128.0 +-1.8257838 -5.2146893 -1.6692257 128.0 +-1.8615998 -5.2141848 -1.6727742 128.0 +-1.894865 -5.2062545 -1.673957 128.0 +-1.9347459 -5.2160263 -1.681054 128.0 +-1.9673898 -5.2058439 -1.6816454 128.0 +-2.0030694 -5.2034807 -1.6848983 128.0 +-2.0339141 -5.1884241 -1.6840111 128.0 +-2.0653572 -5.1749592 -1.6837153 128.0 +-2.0967119 -5.161304 -1.6834197 128.0 +-1.256242 -3.0383518 -0.97667742 128.0 +-1.2744911 -3.0297058 -0.97638172 128.0 +-1.2934327 -3.022707 -0.97667742 128.0 +-2.2189343 -5.099534 -1.6804626 128.0 +-2.252115 -5.0901909 -1.6819412 128.0 +-2.2864397 -5.0832462 -1.6843069 128.0 +-2.3163955 -5.066515 -1.6834197 128.0 +-1.5871806 -3.4156544 -1.1248271 128.0 +-1.6019921 -3.3928933 -1.1203916 128.0 +-1.6141059 -3.3649113 -1.1141816 128.0 +-1.6305388 -3.3463559 -1.1112247 128.0 +-1.648923 -3.3320072 -1.1097461 128.0 +-1.6701945 -3.323534 -1.1103375 128.0 +-1.6922922 -3.3166273 -1.1115203 128.0 +-1.7253503 -3.330781 -1.1200958 128.0 +-1.7582009 -3.3438077 -1.1283756 128.0 +-2.1712484 -4.0687418 -1.3865288 128.0 +-2.1979921 -4.0587029 -1.3877116 128.0 +-2.638217 -4.8011699 -1.654736 128.0 +-2.6611152 -4.77321 -1.6505961 128.0 +-2.7006979 -4.7750854 -1.6571016 128.0 +-2.7318475 -4.7617388 -1.6582845 128.0 +-2.7744646 -4.7680068 -1.6665643 128.0 +-2.809979 -4.7615886 -1.6704085 128.0 +-2.8450286 -4.7540941 -1.673957 128.0 +-2.8786051 -4.7438984 -1.6766183 128.0 +-2.9161675 -4.7399788 -1.6816454 128.0 +-2.9426692 -4.7179432 -1.6801668 128.0 +-2.9736044 -4.7030287 -1.6813498 128.0 +-3.0106521 -4.6975632 -1.6860811 128.0 +-3.048785 -4.6934223 -1.6914037 128.0 +-3.0896063 -4.6929793 -1.6982051 128.0 +-3.1141026 -4.6675758 -1.6958394 128.0 +-3.1400089 -4.644423 -1.6943609 128.0 +-3.1571109 -4.6085186 -1.688151 128.0 +-3.1864181 -4.5906296 -1.6887424 128.0 +-3.2084818 -4.562396 -1.6854897 128.0 +-3.2430665 -4.5519595 -1.6890382 128.0 +-3.2536066 -4.5079613 -1.6798712 128.0 +-3.2823331 -4.4894547 -1.6804626 128.0 +-2.2246039 -3.0036509 -1.1159559 128.0 +-2.2464311 -2.9945297 -1.1177301 128.0 +-3.3707695 -4.436645 -1.6837153 128.0 +-3.4305494 -4.4582777 -1.7002751 128.0 +-3.4384644 -4.4122777 -1.6905167 128.0 +-3.4625142 -4.3873467 -1.6890382 128.0 +-3.4673045 -4.3384066 -1.6780969 128.0 +-3.5166938 -4.3452687 -1.6893338 128.0 +-3.5463171 -4.3273034 -1.6908123 128.0 +-3.5569427 -4.2863479 -1.6831239 128.0 +-3.5592115 -4.2359166 -1.6715914 128.0 +-3.5987527 -4.2300062 -1.6780969 128.0 +-3.591599 -4.1694822 -1.6624244 128.0 +-3.6152313 -4.1452065 -1.6615373 128.0 +-3.6361721 -4.1179328 -1.6594673 128.0 +-3.6651905 -4.0998173 -1.6612415 128.0 +-3.6973283 -4.0850425 -1.6644944 128.0 +-3.7145803 -4.0538268 -1.6609459 128.0 +-3.7517271 -4.0442657 -1.6665643 128.0 +-3.7627394 -4.0065451 -1.6603545 128.0 +-3.7931759 -3.9896133 -1.6630158 128.0 +-3.8195715 -3.9683287 -1.663903 128.0 +-3.8305163 -3.9311328 -1.6579888 128.0 +-3.8404784 -3.8932726 -1.6517789 128.0 +-3.8649697 -3.8703105 -1.6520746 128.0 +-3.890003 -3.8478663 -1.6526661 128.0 +-3.9101236 -3.8205869 -1.6511875 128.0 +-3.9286816 -3.7918789 -1.6491176 128.0 +-3.9663928 -3.7815454 -1.6553274 128.0 +-3.9811766 -3.7492771 -1.6517789 128.0 +-4.0013094 -3.7221756 -1.6505961 128.0 +-4.0170388 -3.6910901 -1.647639 128.0 +-4.0544653 -3.6798561 -1.6538489 128.0 +-4.0719895 -3.650445 -1.6517789 128.0 +-4.1014628 -3.6317244 -1.654736 128.0 +-4.1351738 -3.6165528 -1.6594673 128.0 +-4.1493354 -3.5842421 -1.6562146 128.0 +-4.151629 -3.5419731 -1.6482304 128.0 +-4.1776671 -3.5201261 -1.6500046 128.0 +-4.2035928 -3.4980927 -1.6517789 128.0 +-4.2013621 -3.4528234 -1.6423162 128.0 +-4.2528787 -3.4516633 -1.6544403 128.0 +-4.2456536 -3.4027987 -1.6432034 128.0 +-4.2716961 -3.3808341 -1.6452733 128.0 +-4.3111758 -3.369267 -1.6526661 128.0 +-4.3476491 -3.3550076 -1.6588759 128.0 +-4.3772712 -3.335216 -1.6624244 128.0 +-4.4029965 -3.3123152 -1.6644944 128.0 +-4.4408751 -3.2983384 -1.6712956 128.0 +-4.4764366 -3.2823262 -1.6772099 128.0 +-4.50423 -3.2603993 -1.6801668 128.0 +-4.5233736 -3.2321451 -1.6798712 128.0 +-4.5384369 -3.2010255 -1.6780969 128.0 +-4.5540724 -3.1703887 -1.6766183 128.0 +-4.5939097 -3.1564524 -1.6843069 128.0 +-4.6187253 -3.1319587 -1.6863768 128.0 +-4.6283288 -3.0971839 -1.6828283 128.0 +-4.6448545 -3.0671473 -1.6819412 128.0 +-4.6675882 -3.0411971 -1.6834197 128.0 +-4.6829467 -3.0104334 -1.6822368 128.0 +-4.699717 -2.9806194 -1.6816454 128.0 +-4.7179174 -2.9517264 -1.6816454 128.0 +-4.7465076 -2.929245 -1.6854897 128.0 +-4.7619438 -2.8985755 -1.6846025 128.0 +-4.7780018 -2.8683188 -1.6840111 128.0 +-4.8020873 -2.8428411 -1.6863768 128.0 +-4.8153152 -2.8109143 -1.6848983 128.0 +-4.8515139 -2.7922764 -1.6916995 128.0 +-4.8560934 -2.7553833 -1.6872638 128.0 +-4.9170947 -2.7502532 -1.7029364 128.0 +-4.9263482 -2.7158794 -1.7002751 128.0 +-4.9563498 -2.6928988 -1.7050064 128.0 +-5.0030966 -2.6786709 -1.7156519 128.0 +-5.0287323 -2.6528256 -1.7189046 128.0 +-5.0423722 -2.6205981 -1.7180176 128.0 +-5.0813146 -2.6013646 -1.7260016 128.0 +-5.1057105 -2.574439 -1.7289587 128.0 +-5.1496444 -2.5570846 -1.7387171 128.0 +-5.1746774 -2.530055 -1.7419698 128.0 +-5.1918254 -2.4990849 -1.7425613 128.0 +-5.2234635 -2.4749541 -1.7481798 128.0 +-5.2498059 -2.4481063 -1.7520239 128.0 +-5.2768836 -2.4214265 -1.7561638 128.0 +-5.3029599 -2.3941135 -1.7600081 128.0 +-5.3236613 -2.3642445 -1.762078 128.0 +-5.338943 -2.331917 -1.7623737 128.0 +-5.3461294 -2.2960978 -1.7600081 128.0 +-5.3574772 -2.2621362 -1.7591209 128.0 +-5.3791971 -2.232517 -1.7617823 128.0 +-5.4034085 -2.2037988 -1.7653308 128.0 +-5.3769269 -2.1546102 -1.7520239 128.0 +-5.3464913 -2.1044302 -1.7375343 128.0 +-5.3842511 -2.0812306 -1.7458141 128.0 +-5.4103169 -2.0532393 -1.7502497 128.0 +-5.4630957 -2.035012 -1.7635566 128.0 +-5.5176477 -2.0168698 -1.7774549 128.0 +-5.5514998 -1.9907165 -1.7845519 128.0 +-5.6266909 -1.9788047 -1.8052514 128.0 +-5.7037482 -1.9666673 -1.8265424 128.0 +-5.7989659 -1.9597759 -1.8537475 128.0 +-5.8915896 -1.950888 -1.8800656 128.0 +-5.995224 -1.9444735 -1.909932 128.0 +-6.0507441 -1.9215323 -1.924126 128.0 +-6.1417828 -1.909043 -1.9498526 128.0 +-6.1698313 -1.8763257 -1.9551754 128.0 +-6.1931314 -1.841974 -1.9590195 128.0 +-6.2281661 -1.8108749 -1.9667079 128.0 +-6.2520247 -1.7762814 -1.9708478 128.0 +-6.2388735 -1.7312435 -1.9631594 128.0 +-6.2558331 -1.6946788 -1.9652294 128.0 +-6.2661138 -1.6562618 -1.9652294 128.0 +-6.2752333 -1.6175439 -1.9649338 128.0 +-6.2822609 -1.578311 -1.9640466 128.0 +-6.3011055 -1.5420053 -1.9670037 128.0 +-6.2937217 -1.4993277 -1.961681 128.0 +-6.3130398 -1.4630549 -1.9649338 128.0 +-6.3312173 -1.4263914 -1.9678909 128.0 +-6.3323846 -1.3858826 -1.9655252 128.0 +-6.3360972 -1.3460089 -1.9640466 128.0 +-6.3423653 -1.3067204 -1.9634552 128.0 +-6.3540111 -1.2685281 -1.964638 128.0 +-6.3607373 -1.2293354 -1.9643424 128.0 +-6.3700385 -1.1906346 -1.9649338 128.0 +-6.3800445 -1.1520358 -1.9658209 128.0 +-6.3926396 -1.1138511 -1.9675951 128.0 +-6.3965273 -1.0741309 -1.9667079 128.0 +-6.4029975 -1.0348623 -1.9667079 128.0 +-6.4205542 -0.99731499 -1.9702564 128.0 +-6.4189944 -0.95677328 -1.9678909 128.0 +-6.4313636 -0.9183147 -1.9699608 128.0 +-6.4491816 -0.88051605 -1.973805 128.0 +-6.4487796 -0.84018719 -1.9720308 128.0 +-6.4595013 -0.80130833 -1.973805 128.0 +-6.4766297 -0.76311243 -1.9776492 128.0 +-6.483089 -0.72357023 -1.9782406 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-6.2061787 0.49072126 -1.9647394 128.0 +-6.2087407 0.52927852 -1.9665796 128.0 +-6.1731501 0.56441218 -1.9561521 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-6.1670794 0.98684627 -1.97118 128.0 +-6.0735917 1.0101295 -1.9426576 128.0 +-6.0841618 1.0502949 -1.9481781 128.0 +-6.0738554 1.0869354 -1.9469513 128.0 +-6.0680075 1.124357 -1.947258 128.0 +-6.0441685 1.1583406 -1.9417375 128.0 +-6.0565538 1.1992913 -1.9481781 128.0 +-6.0854483 1.2438716 -1.960139 128.0 +-6.0749078 1.2805983 -1.959219 128.0 +-6.0557747 1.3154225 -1.9555386 128.0 +-6.0578065 1.3548424 -1.9589123 128.0 +-6.055872 1.3934822 -1.9610591 128.0 +-6.0296097 1.4264474 -1.955232 128.0 +-6.0050216 1.4595929 -1.9500182 128.0 +-5.9968762 1.4966422 -1.9503249 128.0 +-5.9811258 1.531756 -1.9481781 128.0 +-5.9697738 1.5679429 -1.9475647 128.0 +-5.9434977 1.6000862 -1.9420443 128.0 +-5.9363203 1.6372845 -1.9429643 128.0 +-5.9334898 1.6757492 -1.9454179 128.0 +-5.9194388 1.7110668 -1.9441911 128.0 +-5.8905749 1.741954 -1.9380572 128.0 +-5.8934407 1.7822002 -1.9426576 128.0 +-5.8905778 1.8208596 -1.9454179 128.0 +-5.878387 1.8566823 -1.9451112 128.0 +-5.8831878 1.8979797 -1.9506316 128.0 +-5.8397923 1.9236141 -1.9398974 128.0 +-5.8125434 1.9542508 -1.9346836 128.0 +-5.7725353 1.9802994 -1.9251761 128.0 +-5.7764459 2.0213435 -1.9306966 128.0 +-5.7791729 2.0621898 -1.9359103 128.0 +-5.7619386 2.0959837 -1.934377 128.0 +-5.7454 2.1299746 -1.9331502 128.0 +-5.7331128 2.1655242 -1.9334568 128.0 +-5.7170525 2.1996353 -1.9325367 128.0 +-5.7016759 2.2339783 -1.9319234 128.0 +-5.6940494 2.2713909 -1.9340702 128.0 +-5.6844139 2.3080773 -1.9356037 128.0 +-5.65871 2.3381853 -1.9316167 128.0 +-5.6591721 2.3791361 -1.9368304 128.0 +-5.6470923 2.4149387 -1.9377506 128.0 +-5.6286774 2.448024 -1.9365238 128.0 +-5.6239953 2.4871364 -1.940204 128.0 +-5.6103649 2.5223787 -1.9408175 128.0 +-5.5965137 2.5575473 -1.9414308 128.0 +-5.578989 2.5910366 -1.9408175 128.0 +-5.5595431 2.6235943 -1.9395907 128.0 +-5.5364747 2.6543646 -1.9371371 128.0 +-5.5200834 2.6882856 -1.9371371 128.0 +-5.4301205 2.6858015 -1.9107616 128.0 +-5.4722204 2.7485578 -1.9319234 128.0 +-5.4620352 2.7855437 -1.934377 128.0 +-5.4499116 2.8216324 -1.9362171 128.0 +-5.4375505 2.857677 -1.9380572 128.0 +-5.4098372 2.8856101 -1.934377 128.0 +-5.4020729 2.9241889 -1.9380572 128.0 +-5.3840289 2.9572804 -1.9380572 128.0 +-5.3607941 2.9874794 -1.9362171 128.0 +-5.3373914 3.0175049 -1.934377 128.0 +-5.3146482 3.0478294 -1.9328434 128.0 +-5.2835069 3.0732014 -1.928243 128.0 +-5.2596326 3.1026599 -1.9264029 128.0 +-5.2470298 3.1387844 -1.9288565 128.0 +-5.23174 3.1733892 -1.9303899 128.0 +-5.2073064 3.2024384 -1.9285498 128.0 +-5.1915965 3.2368481 -1.9300833 128.0 +-5.172442 3.269151 -1.9303899 128.0 +-5.1482787 3.2982588 -1.9288565 128.0 +-5.1255498 3.3282306 -1.9279364 128.0 +-5.1058264 3.360141 -1.928243 128.0 +-5.0724449 3.3829544 -1.923336 128.0 +-5.04213 3.4076173 -1.9196557 128.0 +-5.0384011 3.4503257 -1.9264029 128.0 +-5.0147896 3.4795475 -1.9254829 128.0 +-4.9949021 3.5113473 -1.9260962 128.0 +-4.9794645 3.5463479 -1.9285498 128.0 +-4.9545236 3.5746062 -1.927323 128.0 +-4.9378753 3.6088717 -1.9294698 128.0 +-4.9064603 3.6323044 -1.9257895 128.0 +-4.887126 3.6646261 -1.9270163 128.0 +-4.8668218 3.6962714 -1.9279364 128.0 +-4.8395243 3.7225814 -1.9260962 128.0 +-4.8098354 3.7469404 -1.923336 128.0 +-4.7867541 3.7763824 -1.923336 128.0 +-4.764236 3.8062766 -1.9236426 128.0 +-4.74893 3.8420243 -1.9270163 128.0 +-4.725266 3.8710909 -1.9270163 128.0 +-4.7702751 3.9571476 -1.9558454 128.0 +-4.7203999 3.9649122 -1.9451112 128.0 +-4.6793094 3.9796157 -1.9380572 128.0 +-4.6483126 4.0026617 -1.935297 128.0 +-4.6150575 4.0236001 -1.9316167 128.0 +-4.5867147 4.0486917 -1.9300833 128.0 +-0 0 -0 128.0 +-4.5416255 4.1091442 -1.9322301 128.0 +-4.5008883 4.122787 -1.9254829 128.0 +-4.4741111 4.1490316 -1.9248694 128.0 +-4.4575882 4.1848769 -1.9288565 128.0 +-4.4235492 4.2042789 -1.9251761 128.0 +-4.4196129 4.2524643 -1.9349903 128.0 +-4.3736682 4.2602391 -1.9260962 128.0 +-4.3488007 4.288332 -1.9267097 128.0 +-4.3190384 4.3115721 -1.9251761 128.0 +-4.290494 4.3359623 -1.9242561 128.0 +-4.2551608 4.3533564 -1.9202691 128.0 +-4.2131662 4.3636317 -1.9132152 128.0 +-4.2060156 4.410068 -1.922416 128.0 +-4.1736565 4.4302492 -1.9199624 128.0 +-4.1509323 4.4606533 -1.9221092 128.0 +-4.121552 4.4839363 -1.9211892 128.0 +-4.1041961 4.5204182 -1.9260962 128.0 +-4.0789237 4.5483508 -1.927323 128.0 +-4.0559864 4.5789943 -1.9297765 128.0 +-4.018415 4.5930481 -1.9251761 128.0 +-3.9777133 4.6032119 -1.9190423 128.0 +-3.9438338 4.6210151 -1.9162821 128.0 +-3.9074328 4.6356649 -1.9122951 128.0 +-3.8843946 4.6661377 -1.9150553 128.0 +-3.858108 4.6928253 -1.9162821 128.0 +-3.8286409 4.7156711 -1.9159753 128.0 +-3.7978482 4.736846 -1.9150553 128.0 +-3.768712 4.7600603 -1.9150553 128.0 +-3.7476392 4.7935944 -1.919349 128.0 +-3.7059445 4.8006749 -1.9129084 128.0 +-3.6868017 4.8369513 -1.9184289 128.0 +-3.6541924 4.855679 -1.9168955 128.0 +-3.6192222 4.8711324 -1.9141352 128.0 +-3.596019 4.9024587 -1.9178156 128.0 +-3.5374079 4.8851089 -1.9021742 128.0 +-3.5140069 4.9160156 -1.9058546 128.0 +-3.4722564 4.9211502 -1.8994139 128.0 +-3.4615724 4.9704852 -1.9104549 128.0 +-3.4067538 4.9563293 -1.8966538 128.0 +-3.3880301 4.9944706 -1.903401 128.0 +-3.3488514 5.0025086 -1.8984939 128.0 +-3.3369746 5.0515566 -1.9095348 128.0 +-3.3111117 5.0799112 -1.9126017 128.0 +-3.2582631 5.066505 -1.8997207 128.0 +-3.2281337 5.0880094 -1.9003341 128.0 +-3.2205801 5.1456456 -1.9147487 128.0 +-3.1769497 5.1458702 -1.907388 128.0 +-3.1562028 5.1831536 -1.9141352 128.0 +-3.1204212 5.1958938 -1.9116817 128.0 +-3.0870264 5.2124853 -1.9107616 128.0 +-3.0631421 5.2453032 -1.9159753 128.0 +-3.0123837 5.2318268 -1.9040143 128.0 +-2.991498 5.2700801 -1.911375 128.0 +-2.9539943 5.2791986 -1.9080014 128.0 +-2.9174104 5.2897224 -1.9052411 128.0 +-2.8898966 5.3167238 -1.9086148 128.0 +-2.8572195 5.3343558 -1.9086148 128.0 +-2.8342047 5.3703079 -1.915362 128.0 +-2.7941771 5.374084 -1.9104549 128.0 +-2.7650533 5.3987527 -1.9132152 128.0 +-2.7220192 5.3960695 -1.9061612 128.0 +-2.687165 5.4092603 -1.9049344 128.0 +-2.6472349 5.4119649 -1.9000274 128.0 +-2.636682 5.475276 -1.9168955 128.0 +-2.6026292 5.4904914 -1.9165888 128.0 +-2.5910149 5.553802 -1.9334568 128.0 +-2.5485528 5.5514293 -1.9270163 128.0 +-2.5160084 5.5704322 -1.928243 128.0 +-2.4694197 5.5579286 -1.9184289 128.0 +-2.422318 5.5433197 -1.9080014 128.0 +-2.3807473 5.5405874 -1.9018675 128.0 +-2.348187 5.5585985 -1.9030943 128.0 +-2.3144007 5.573781 -1.903401 128.0 +-2.2873456 5.6055036 -1.9095348 128.0 +-2.2603424 5.6379871 -1.9159753 128.0 +-2.2323291 5.6685777 -1.9218025 128.0 +-2.1909854 5.6653004 -1.9159753 128.0 +-2.156858 5.6804171 -1.9165888 128.0 +-2.1206341 5.6899767 -1.915362 128.0 +-2.0879683 5.7091393 -1.9175088 128.0 +-2.0535409 5.7236352 -1.9181222 128.0 +-2.0155408 5.7280464 -1.915362 128.0 +-1.9791154 5.7367063 -1.9141352 128.0 +-1.9447925 5.7514472 -1.9150553 128.0 +-1.9103632 5.7659826 -1.9159753 128.0 +-1.8749478 5.777596 -1.9159753 128.0 +-1.8460873 5.8098564 -1.9230293 128.0 +-1.8262236 5.871974 -1.940204 128.0 +-1.7904364 5.8839798 -1.9405107 128.0 +-1.7545706 5.8957672 -1.9408175 128.0 +-1.707999 5.8707771 -1.9288565 128.0 +-1.6880708 5.9379129 -1.9478713 128.0 +-1.6414254 5.9114723 -1.9356037 128.0 +-1.6133344 5.9517503 -1.9457245 128.0 +-1.5558691 5.8823991 -1.919349 128.0 +-1.5171329 5.8816962 -1.9159753 128.0 +-1.4837977 5.9019723 -1.9196557 128.0 +-1.4459723 5.9044938 -1.9175088 128.0 +-1.4108186 5.9178843 -1.9190423 128.0 +-1.3731914 5.920866 -1.9172021 128.0 +-1.3374633 5.9319658 -1.9181222 128.0 +-1.3032784 5.9502888 -1.9214958 128.0 +-1.2710943 5.9786563 -1.928243 128.0 +-1.2353463 5.9910045 -1.9297765 128.0 +-1.197445 5.9928713 -1.9279364 128.0 +-1.1622761 6.0085163 -1.9306966 128.0 +-1.1259114 6.0183415 -1.9316167 128.0 +-1.0882858 6.02139 -1.9303899 128.0 +-1.0490317 6.0148268 -1.9260962 128.0 +-1.0097418 6.0070701 -1.9214958 128.0 +-0.97498977 6.0263076 -1.9257895 128.0 +-0.9398936 6.0444036 -1.9297765 128.0 +-0.90292847 6.0509982 -1.9300833 128.0 +-0.86659032 6.062078 -1.9319234 128.0 +-0.83040768 6.0748258 -1.934377 128.0 +-0.79287171 6.077919 -1.9337635 128.0 +-0.75521195 6.0798359 -1.9328434 128.0 +-0.7191174 6.0947533 -1.9362171 128.0 +-0.68149608 6.0971589 -1.9356037 128.0 +-0.64606667 6.1201572 -1.9417375 128.0 +-0.6065293 6.104116 -1.935297 128.0 +-0.56879938 6.1048794 -1.934377 128.0 +-0.53363436 6.1348052 -1.9429643 128.0 +-0.49322841 6.1038098 -1.9319234 128.0 +-0.45626149 6.1133657 -1.9340702 128.0 +-0.41880682 6.1169996 -1.934377 128.0 +-0.38097072 6.1147041 -1.9328434 128.0 +-0.3437103 6.1216784 -1.934377 128.0 +-0.3065207 6.1312771 -1.9368304 128.0 +-0.26843747 6.1225824 -1.9334568 128.0 +-0.23125741 6.1345773 -1.9368304 128.0 +-0.1932539 6.1244645 -1.9331502 128.0 +-0.15547925 6.1179228 -1.9306966 128.0 +-0.11797378 6.1206651 -1.9313099 128.0 +-0.080551431 6.1317425 -1.9346836 128.0 +-0.042919762 6.1311698 -1.934377 128.0 +-0.0053007351 6.1341729 -1.935297 128.0 +0.032337941 6.1340899 -1.935297 128.0 +0.069853999 6.1233072 -1.9319234 128.0 +0.10739084 6.1208596 -1.9313099 128.0 +0.14537729 6.138165 -1.9371371 128.0 +0.18303762 6.1371574 -1.9371371 128.0 +0.22051913 6.1311626 -1.9356037 128.0 +0.25841665 6.1363511 -1.9377506 128.0 +0.2959716 6.1327486 -1.9371371 128.0 +0.33219478 6.1051564 -1.9288565 128.0 +0.36878321 6.0887523 -1.9242561 128.0 +0.40308568 6.0407901 -1.9095348 128.0 +0.44368193 6.086616 -1.9251761 128.0 +0.48214838 6.0980115 -1.9297765 128.0 +0.52012312 6.1015768 -1.9319234 128.0 +0.55798614 6.1030097 -1.9334568 128.0 +0.5944038 6.0890508 -1.9300833 128.0 +0.62880039 6.0568881 -1.9208825 128.0 +0.6672042 6.0642686 -1.9245628 128.0 +0.70264012 6.0449338 -1.9196557 128.0 +0.74122423 6.0527902 -1.9236426 128.0 +0.77871448 6.0509605 -1.9245628 128.0 +0.8168475 6.0536141 -1.9270163 128.0 +0.85504234 6.0560279 -1.9294698 128.0 +0.8931585 6.0572586 -1.9316167 128.0 +0.92987394 6.048842 -1.9306966 128.0 +0.96576691 6.0355039 -1.928243 128.0 +1.0026255 6.0285254 -1.9279364 128.0 +1.039597 6.0222602 -1.9279364 128.0 +1.0748509 6.0063987 -1.9248694 128.0 +1.111338 5.9978189 -1.9242561 128.0 +1.1477604 5.9890175 -1.9236426 128.0 +1.1861522 5.9902649 -1.9264029 128.0 +1.2221223 5.9791441 -1.9251761 128.0 +1.2574112 5.9650135 -1.9230293 128.0 +1.2915616 5.9460254 -1.919349 128.0 +1.3263581 5.9305577 -1.9168955 128.0 +1.3648585 5.9315829 -1.9199624 128.0 +1.4021055 5.9268017 -1.9211892 128.0 +1.4388952 5.9199367 -1.9218025 128.0 +1.4735776 5.904532 -1.9196557 128.0 +1.5175776 5.9258056 -1.9297765 128.0 +1.5558448 5.9237466 -1.9322301 128.0 +1.5926582 5.9159265 -1.9328434 128.0 +1.6263952 5.8968678 -1.9297765 128.0 +1.6672066 5.9032645 -1.935297 128.0 +1.7041904 5.8956661 -1.9362171 128.0 +1.7438445 5.8969636 -1.940204 128.0 +1.7827517 5.8952627 -1.943271 128.0 +1.819172 5.8851223 -1.9435776 128.0 +1.8242697 5.7758327 -1.9104549 128.0 +1.8628916 5.7744942 -1.9138285 128.0 +1.8851782 5.7231803 -1.9003341 128.0 +1.9257224 5.7277436 -1.9058546 128.0 +1.9657753 5.7302237 -1.9107616 128.0 +1.9939783 5.6982908 -1.9040143 128.0 +2.0337055 5.6993942 -1.9086148 128.0 +2.0731957 5.6993303 -1.9129084 128.0 +2.1107752 5.6936412 -1.915362 128.0 +2.1473536 5.6850343 -1.9168955 128.0 +2.1794603 5.6646452 -1.9144419 128.0 +2.2166085 5.6573687 -1.9165888 128.0 +2.2519855 5.6454291 -1.9172021 128.0 +2.2869411 5.6323867 -1.9175088 128.0 +2.3196394 5.6138506 -1.9159753 128.0 +2.346292 5.5810871 -1.9095348 128.0 +2.3759997 5.5560846 -1.9058546 128.0 +2.4111857 5.5440197 -1.9067746 128.0 +2.4501646 5.5404358 -1.9107616 128.0 +2.5001225 5.5608869 -1.923336 128.0 +2.5195527 5.5134139 -1.9119884 128.0 +2.5549393 5.5013032 -1.9132152 128.0 +2.5902719 5.4889655 -1.9144419 128.0 +2.6173167 5.4592376 -1.9095348 128.0 +2.6553504 5.4524875 -1.9129084 128.0 +2.684535 5.4275608 -1.9098415 128.0 +2.71736 5.4101362 -1.9095348 128.0 +2.7474768 5.3874264 -1.907388 128.0 +2.7822328 5.3738475 -1.9086148 128.0 +2.8045228 5.3364558 -1.9012542 128.0 +2.8399026 5.3241854 -1.9030943 128.0 +2.8738775 5.3091707 -1.9040143 128.0 +2.898149 5.276422 -1.8984939 128.0 +2.922127 5.243576 -1.8929734 128.0 +2.9533088 5.2238908 -1.8923601 128.0 +2.9914641 5.2164035 -1.896347 128.0 +3.0258086 5.2020636 -1.8978806 128.0 +3.0600896 5.1874981 -1.8994139 128.0 +3.0962608 5.1759748 -1.9021742 128.0 +3.1264803 5.1544375 -1.9012542 128.0 +3.1640337 5.1448851 -1.9049344 128.0 +3.1925204 5.1205282 -1.9030943 128.0 +3.2223532 5.0984297 -1.9021742 128.0 +3.2520351 5.0761576 -1.9012542 128.0 +3.2784541 5.0489244 -1.8984939 128.0 +3.3093719 5.0287132 -1.8984939 128.0 +3.3401651 5.0083127 -1.8984939 128.0 +3.3697665 4.9861465 -1.8978806 128.0 +3.3997595 4.964591 -1.8975738 128.0 +3.4323287 4.9467645 -1.8988006 128.0 +3.4604268 4.9224968 -1.8975738 128.0 +3.4905655 4.9011712 -1.8975738 128.0 +3.5205729 4.8796611 -1.8975738 128.0 +3.5521328 4.8602724 -1.8984939 128.0 +3.5926511 4.8529186 -1.9043211 128.0 +3.6183624 4.8254533 -1.9021742 128.0 +3.6473267 4.8024025 -1.9018675 128.0 +3.6744032 4.7769156 -1.9006407 128.0 +3.7077403 4.7595348 -1.9027876 128.0 +3.7356951 4.7352009 -1.9021742 128.0 +3.7664621 4.7144203 -1.9030943 128.0 +3.8150785 4.7156363 -1.9132152 128.0 +3.8439415 4.6921387 -1.9132152 128.0 +3.859895 4.6530828 -1.9067746 128.0 +3.8859239 4.6263967 -1.9055479 128.0 +3.9167049 4.6053658 -1.9067746 128.0 +3.935571 4.5704293 -1.9021742 128.0 +3.9654174 4.548347 -1.9030943 128.0 +3.9913609 4.52179 -1.9021742 128.0 +4.0095153 4.4865704 -1.8975738 128.0 +4.0439949 4.4696465 -1.9009475 128.0 +4.0681286 4.4412403 -1.8994139 128.0 +4.0953031 4.4161949 -1.8994139 128.0 +4.1203685 4.3889022 -1.8984939 128.0 +4.1518116 4.3683658 -1.9006407 128.0 +4.1897583 4.3544664 -1.9058546 128.0 +4.2157335 4.3279948 -1.9055479 128.0 +4.244884 4.3047566 -1.9067746 128.0 +4.2779436 4.2853642 -1.9098415 128.0 +4.3007741 4.2556877 -1.908308 128.0 +4.3234015 4.225893 -1.9067746 128.0 +4.3396616 4.1900315 -1.902481 128.0 +4.3804455 4.177774 -1.9092282 128.0 +4.3859024 4.1318941 -1.9003341 128.0 +4.4035068 4.0977736 -1.8969605 128.0 +4.4299693 4.0719652 -1.8975738 128.0 +4.4534612 4.0434275 -1.8969605 128.0 +4.4781876 4.0160255 -1.8969605 128.0 +4.5013199 3.98721 -1.896347 128.0 +4.5278497 3.9613953 -1.8972671 128.0 +4.5571132 3.9378936 -1.8994139 128.0 +4.5819139 3.9104753 -1.8997207 128.0 +4.6094613 3.885354 -1.9012542 128.0 +4.6397991 3.8624773 -1.9040143 128.0 +4.6442924 3.818223 -1.8960404 128.0 +4.6883264 3.8064485 -1.9046278 128.0 +4.7019386 3.7698715 -1.9006407 128.0 +4.7190108 3.7362247 -1.8981873 128.0 +4.7560964 3.7183347 -1.9040143 128.0 +4.7765617 3.6873374 -1.9030943 128.0 +4.7990966 3.6579595 -1.9030943 128.0 +4.8153663 3.6238666 -1.9006407 128.0 +4.8252854 3.5851717 -1.8957337 128.0 +4.8640795 3.5678785 -1.902481 128.0 +4.8928194 3.5429888 -1.9052411 128.0 +4.8858128 3.4924264 -1.8938936 128.0 +4.9001493 3.4574447 -1.8911333 128.0 +4.9353328 3.4371011 -1.8966538 128.0 +4.9728036 3.4180729 -1.9030943 128.0 +4.9976215 3.3901668 -1.9046278 128.0 +5.0199113 3.3604968 -1.9052411 128.0 +5.0340824 3.3254364 -1.9027876 128.0 +5.0599742 3.2981222 -1.9049344 128.0 +5.0857205 3.2706153 -1.9070814 128.0 +5.1113195 3.2429168 -1.9092282 128.0 +5.1222453 3.2059402 -1.9058546 128.0 +5.1466804 3.1774495 -1.9076947 128.0 +5.1612015 3.1428411 -1.9058546 128.0 +5.1852851 3.1140525 -1.9076947 128.0 +5.2018375 3.080723 -1.9067746 128.0 +5.2189989 3.0477877 -1.9061612 128.0 +5.2442007 3.0195053 -1.9086148 128.0 +5.2775307 2.9957254 -1.9141352 128.0 +5.2858443 2.9577112 -1.9104549 128.0 +5.3047266 2.9256816 -1.9107616 128.0 +5.312542 2.8876247 -1.9070814 128.0 +5.3402295 2.8603642 -1.9107616 128.0 +5.3484197 2.8226583 -1.907388 128.0 +5.3690166 2.7915435 -1.9086148 128.0 +5.3979053 2.7646196 -1.9129084 128.0 +5.4037185 2.7258759 -1.9089215 128.0 +5.4169326 2.6909747 -1.9076947 128.0 +5.4076896 2.6451447 -1.8984939 128.0 +5.4444013 2.6218212 -1.9058546 128.0 +5.4483438 2.5826602 -1.9015609 128.0 +5.4787531 2.5560193 -1.9067746 128.0 +5.5081749 2.5287054 -1.9116817 128.0 +5.5123096 2.489769 -1.9076947 128.0 +5.5335717 2.4586034 -1.9098415 128.0 +5.5494256 2.4249847 -1.9101483 128.0 +5.571197 2.3938932 -1.9126017 128.0 +5.5875344 2.3604043 -1.9132152 128.0 +5.6071873 2.3282645 -1.9150553 128.0 +5.6160798 2.2916589 -1.9132152 128.0 +5.6424046 2.2621124 -1.9175088 128.0 +5.657064 2.2277973 -1.9178156 128.0 +5.6706271 2.1930444 -1.9178156 128.0 +5.6919856 2.161248 -1.9205757 128.0 +5.7051396 2.126282 -1.9205757 128.0 +5.7261243 2.0941765 -1.923336 128.0 +5.7316985 2.0564322 -1.9208825 128.0 +5.73523 2.0180669 -1.9178156 128.0 +5.7502041 1.9837689 -1.9187356 128.0 +5.7703834 1.9511914 -1.9214958 128.0 +5.7822471 1.9157484 -1.9214958 128.0 +5.7920823 1.8796458 -1.9208825 128.0 +5.802599 1.8437828 -1.9205757 128.0 +5.8219833 1.8106865 -1.923336 128.0 +5.832984 1.7749294 -1.923336 128.0 +5.8419404 1.7385628 -1.9227226 128.0 +5.8570681 1.7040132 -1.9242561 128.0 +5.8701601 1.6688231 -1.9251761 128.0 +5.8784547 1.6322641 -1.9245628 128.0 +5.8791723 1.5936754 -1.9214958 128.0 +5.8888407 1.5575715 -1.9214958 128.0 +5.8872266 1.5185583 -1.9178156 128.0 +5.9019723 1.4837977 -1.9196557 128.0 +5.8998709 1.4448413 -1.9159753 128.0 +5.9308472 1.4139063 -1.923336 128.0 +5.931993 1.3757697 -1.9208825 128.0 +5.9449658 1.3403918 -1.922416 128.0 +5.9558678 1.3044993 -1.923336 128.0 +5.9637599 1.2679302 -1.923336 128.0 +5.9658341 1.2301611 -1.9214958 128.0 +5.9816704 1.1952091 -1.9242561 128.0 +5.9954329 1.159748 -1.9264029 128.0 +6.0117922 1.1246873 -1.9294698 128.0 +6.01296 1.0867639 -1.9276297 128.0 +6.0251412 1.0508287 -1.9294698 128.0 +6.0295982 1.0135242 -1.9288565 128.0 +6.0357037 0.97650814 -1.9288565 128.0 +6.0444036 0.9398936 -1.9297765 128.0 +6.0368772 0.90082401 -1.9254829 128.0 +6.0592513 0.8661868 -1.9310033 128.0 +6.0550213 0.82770425 -1.9279364 128.0 +6.065649 0.79127347 -1.9297765 128.0 +6.0826693 0.75556338 -1.9337635 128.0 +6.0890818 0.71844929 -1.934377 128.0 +6.0962129 0.68139052 -1.935297 128.0 +6.0917602 0.64307433 -1.9325367 128.0 +6.0899081 0.6051203 -1.9306966 128.0 +6.0783429 0.56633198 -1.9257895 128.0 +6.098772 0.53050679 -1.9313099 128.0 +6.1009636 0.49299896 -1.9310033 128.0 +6.105772 0.4556962 -1.9316167 128.0 +6.1084533 0.41822332 -1.9316167 128.0 +6.1166043 0.38108873 -1.9334568 128.0 +6.1226287 0.34376347 -1.9346836 128.0 +6.1360302 0.30675742 -1.9383639 128.0 +6.1387482 0.26914316 -1.9386706 128.0 +6.1374307 0.23136443 -1.9377506 128.0 +6.129221 0.19340311 -1.9346836 128.0 +6.1312442 0.15581527 -1.9349903 128.0 +6.1197133 0.11795562 -1.9310033 128.0 +6.1250806 0.08046516 -1.9325367 128.0 +6.1368804 0.042958666 -1.9362171 128.0 +6.1284623 0.0052968725 -1.9334568 128.0 +6.125524 -0.032291174 -1.9325367 128.0 +6.1147413 -0.069754675 -1.9291631 128.0 +6.1084881 -0.10717145 -1.927323 128.0 +6.1124735 -0.14476399 -1.9288565 128.0 +6.1143241 -0.18235235 -1.9297765 128.0 +6.117846 -0.22003765 -1.9313099 128.0 +6.1230373 -0.25785351 -1.9334568 128.0 +6.1213403 -0.29541889 -1.9334568 128.0 +6.1165609 -0.33281749 -1.9325367 128.0 +6.1277046 -0.37114987 -1.9368304 128.0 +6.124362 -0.4086782 -1.9365238 128.0 +6.1255364 -0.44652641 -1.9377506 128.0 +6.1302719 -0.48470521 -1.940204 128.0 +6.120544 -0.52174354 -1.9380572 128.0 +6.119123 -0.55946237 -1.9386706 128.0 +6.1212587 -0.59755397 -1.9405107 128.0 +6.1184239 -0.63520056 -1.9408175 128.0 +6.1106267 -0.67231345 -1.9395907 128.0 +6.110168 -0.71023518 -1.9408175 128.0 +6.1056952 -0.74771309 -1.9408175 128.0 +6.0811682 -0.78260785 -1.934377 128.0 +6.0866275 -0.82130849 -1.9377506 128.0 +6.090898 -0.8599723 -1.9408175 128.0 +6.0694995 -0.89496577 -1.9356037 128.0 +6.0742416 -0.93378347 -1.9389772 128.0 +6.0571198 -0.96922994 -1.935297 128.0 +6.0595088 -1.0077845 -1.9380572 128.0 +6.0400801 -1.0426767 -1.9337635 128.0 +6.0494962 -1.0825716 -1.9389772 128.0 +6.0427394 -1.1196702 -1.9389772 128.0 +6.0310817 -1.15583 -1.9374439 128.0 +6.0313454 -1.1942948 -1.9398974 128.0 +6.0211062 -1.2307075 -1.9389772 128.0 +6.011579 -1.2672362 -1.9383639 128.0 +6.0083404 -1.3051097 -1.9398974 128.0 +5.9955754 -1.3409121 -1.9383639 128.0 +5.9918723 -1.3787431 -1.9398974 128.0 +5.9907093 -1.4172369 -1.9423509 128.0 +5.9717274 -1.4514939 -1.9389772 128.0 +5.9737902 -1.4908761 -1.9426576 128.0 +5.9553099 -1.5251395 -1.9395907 128.0 +5.9357138 -1.5589902 -1.9362171 128.0 +5.9453359 -1.6005814 -1.9426576 128.0 +5.9555879 -1.6426024 -1.9494048 128.0 +5.9389858 -1.6773024 -1.947258 128.0 +5.9240103 -1.7123892 -1.9457245 128.0 +5.8960509 -1.7435745 -1.9398974 128.0 +5.8916187 -1.7816489 -1.9420443 128.0 +5.8860316 -1.8194532 -1.9438844 128.0 +5.8520679 -1.848364 -1.9362171 128.0 +5.8297467 -1.880728 -1.9325367 128.0 +5.7882662 -1.9066309 -1.922416 128.0 +5.7710457 -1.9402901 -1.9205757 128.0 +5.6852112 -1.9503241 -1.895427 128.0 +5.6084571 -1.9625241 -1.8733451 128.0 +5.5183244 -1.9690558 -1.846663 128.0 +5.4202757 -1.9716264 -1.8172204 128.0 +5.3527474 -1.984324 -1.7982056 128.0 +5.2843795 -1.9959313 -1.7788839 128.0 +5.2080784 -2.0036976 -1.7568021 128.0 +5.1761909 -2.0279734 -1.750055 128.0 +5.125638 -2.0445242 -1.7368672 128.0 +5.080369 -2.0626812 -1.7255195 128.0 +5.0412292 -2.0829055 -1.7163187 128.0 +4.9985237 -2.1012514 -1.7058913 128.0 +4.9811611 -2.1300101 -1.7043577 128.0 +4.9357057 -2.1464822 -1.6930101 128.0 +4.8789215 -2.1574705 -1.6776755 128.0 +4.82653 -2.1697958 -1.6638744 128.0 +4.7482042 -2.1696868 -1.6408725 128.0 +4.5379972 -2.1073341 -1.5709467 128.0 +4.3623095 -2.0583355 -1.5129818 128.0 +4.3229938 -2.0723023 -1.5034744 128.0 +4.2982178 -2.0929523 -1.4991807 128.0 +4.2332573 -2.0935354 -1.4804724 128.0 +4.1744065 -2.0963929 -1.4639111 128.0 +4.0181813 -2.0488613 -1.41208 128.0 +3.9100313 -2.0240095 -1.3774239 128.0 +4.0028458 -2.1033316 -1.4157604 128.0 +3.9520769 -2.107688 -1.4019593 128.0 +3.9541354 -2.1400564 -1.4074798 128.0 +4.1119328 -2.2582467 -1.4703516 128.0 +4.0057211 -2.231987 -1.4363087 128.0 +4.0772834 -2.3047879 -1.467898 128.0 +3.9466574 -2.2629762 -1.4246545 128.0 +3.5353525 -2.0559299 -1.2765222 128.0 +3.4538157 -2.0369484 -1.25076 128.0 +3.4110334 -2.0400176 -1.2394124 128.0 +3.3821776 -2.0510333 -1.2332785 128.0 +3.3516943 -2.0607746 -1.2265313 128.0 +3.3058755 -2.0606487 -1.213957 128.0 +3.2569675 -2.0580041 -1.2001557 128.0 +3.3909252 -2.1719382 -1.2562804 128.0 +3.1540439 -2.0475223 -1.1704066 128.0 +3.1239316 -2.0553219 -1.1636595 128.0 +3.0985935 -2.065999 -1.1587523 128.0 +3.1000514 -2.0945687 -1.1642728 128.0 +3.0643697 -2.0979507 -1.1553787 128.0 +3.0209451 -2.0955467 -1.1434177 128.0 +2.9768882 -2.0921421 -1.13115 128.0 +2.9539175 -2.1031888 -1.1271631 128.0 +2.9154885 -2.1028914 -1.1170422 128.0 +2.8433678 -2.0774846 -1.0934269 128.0 +2.8037963 -2.0750656 -1.0826926 128.0 +2.8199439 -2.1139343 -1.094347 128.0 +2.7841837 -2.1139228 -1.0851462 128.0 +2.7666347 -2.1274836 -1.0833061 128.0 +2.746021 -2.1385686 -1.0802392 128.0 +2.7642276 -2.1801438 -1.0931202 128.0 +2.7448504 -2.1923099 -1.0906667 128.0 +2.7180295 -2.1983323 -1.0851462 128.0 +2.7044897 -2.2149684 -1.0851462 128.0 +2.6835234 -2.2254429 -1.0820793 128.0 +2.6625307 -2.2357435 -1.0790124 128.0 +2.6458626 -2.2495713 -1.0777856 128.0 +2.6406634 -2.2732184 -1.0814658 128.0 +2.6173403 -2.2812452 -1.0774789 128.0 +2.5911648 -2.2865517 -1.0722651 128.0 +2.5565081 -2.2840109 -1.0633711 128.0 +2.5572648 -2.3130674 -1.0698116 128.0 +2.5065334 -2.2952771 -1.0538636 128.0 +2.4951937 -2.3132031 -1.0550903 128.0 +2.4865036 -2.3336825 -1.0575439 128.0 +2.4748967 -2.3515189 -1.0587707 128.0 +2.467279 -2.373261 -1.0618376 128.0 +2.4601691 -2.3956621 -1.0652112 128.0 +2.4400024 -2.4053648 -1.0627576 128.0 +2.4204831 -2.4155831 -1.0606108 128.0 +2.4089625 -2.4337728 -1.0621443 128.0 +2.3999705 -2.4546351 -1.0649046 128.0 +2.3881688 -2.4727392 -1.066438 128.0 +2.4011929 -2.516969 -1.0796257 128.0 +2.3889666 -2.5351195 -1.0811592 128.0 +2.362994 -2.5385797 -1.0762521 128.0 +2.3435092 -2.5488257 -1.074412 128.0 +2.323348 -2.5582237 -1.0722651 128.0 +2.3037953 -2.5681789 -1.0704249 128.0 +2.2861009 -2.5801287 -1.0695049 128.0 +2.2677202 -2.5912414 -1.0682781 128.0 +2.2480447 -2.6007853 -1.066438 128.0 +2.230809 -2.6130819 -1.0658246 128.0 +2.2110536 -2.6223536 -1.0639844 128.0 +2.1949215 -2.6358709 -1.0639844 128.0 +2.1805196 -2.651495 -1.0649046 128.0 +2.1630099 -2.6633465 -1.0642911 128.0 +2.1662703 -2.7010777 -1.074412 128.0 +2.123666 -2.6814795 -1.0609175 128.0 +2.1007259 -2.6862102 -1.0575439 128.0 +2.0871115 -2.702817 -1.0590774 128.0 +2.0722184 -2.7178438 -1.0599974 128.0 +2.0595083 -2.7358317 -1.0621443 128.0 +2.0506279 -2.7591147 -1.066438 128.0 +2.0359111 -2.7747157 -1.0676647 128.0 +2.0283349 -2.8002629 -1.0728785 128.0 +2.0221815 -2.8281446 -1.0790124 128.0 +2.0091791 -2.8467216 -1.0814658 128.0 +2.0014625 -2.8730571 -1.0869863 128.0 +1.9676261 -2.8617492 -1.0777856 128.0 +1.9340044 -2.8501351 -1.0685848 128.0 +1.9021879 -2.84059 -1.0603042 128.0 +1.8752822 -2.8379111 -1.0547837 128.0 +1.8531575 -2.8421869 -1.0520234 128.0 +1.8372273 -2.8559062 -1.0529435 128.0 +1.81814 -2.8647141 -1.0520234 128.0 +1.7985089 -2.8725884 -1.0507966 128.0 +1.7848481 -2.8900497 -1.0532502 128.0 +1.7646071 -2.8968818 -1.0517168 128.0 +1.7414103 -2.8986781 -1.0483432 128.0 +1.7138942 -2.8929274 -1.0422093 128.0 +1.677398 -2.8713307 -1.0302483 128.0 +1.6654456 -2.8914683 -1.0339286 128.0 +1.6575363 -2.9190176 -1.0403692 128.0 +1.6433113 -2.9357786 -1.0428227 128.0 +1.636295 -2.9658115 -1.0501833 128.0 +1.6180663 -2.9757957 -1.0501833 128.0 +1.60382 -2.9932201 -1.0529435 128.0 +1.5872 -3.006372 -1.0541703 128.0 +1.570918 -3.020277 -1.0557038 128.0 +1.5532238 -3.0315537 -1.0563171 128.0 +1.5354503 -3.0427268 -1.0569305 128.0 +1.5175983 -3.0537958 -1.0575439 128.0 +1.4950694 -3.0553544 -1.0547837 128.0 +1.4680378 -3.047318 -1.0486498 128.0 +1.446052 -3.049387 -1.0461963 128.0 +1.4253029 -3.0538893 -1.0446628 128.0 +1.3997897 -3.0478709 -1.0394491 128.0 +1.3853699 -3.0659449 -1.0428227 128.0 +1.3951178 -3.1387596 -1.0655179 128.0 +1.3632609 -3.1184769 -1.055397 128.0 +1.3534905 -3.1486471 -1.0630643 128.0 +1.3382177 -3.166538 -1.066438 128.0 +1.3169389 -3.170294 -1.0649046 128.0 +1.2985398 -3.180959 -1.0658246 128.0 +1.2800595 -3.1915174 -1.0667447 128.0 +1.2642871 -3.209054 -1.0701183 128.0 +1.2401119 -3.2052097 -1.0661312 128.0 +1.2140055 -3.1958506 -1.0603042 128.0 +1.1950377 -3.2050233 -1.0609175 128.0 +1.1943012 -3.2641456 -1.0787057 128.0 +1.1954535 -3.3305452 -1.0989474 128.0 +1.166154 -3.3126762 -1.0903599 128.0 +1.139601 -3.3017726 -1.0842261 128.0 +1.1168826 -3.3014894 -1.0817726 128.0 +1.0936122 -3.2992446 -1.0787057 128.0 +1.0751096 -3.3113251 -1.0805458 128.0 +1.0608208 -3.33691 -1.0869863 128.0 +1.0437158 -3.3542633 -1.0906667 128.0 +1.0145305 -3.3323746 -1.0811592 128.0 +0.99026597 -3.3257644 -1.0768656 128.0 +0.96426076 -3.3125846 -1.0704249 128.0 +0.94313669 -3.3156922 -1.0695049 128.0 +0.92811829 -3.340677 -1.0759454 128.0 +0.90760285 -3.3463089 -1.0759454 128.0 +0.9145354 -3.4557989 -1.1106017 128.0 +0.89640206 -3.4733274 -1.1145886 128.0 +0.76445931 -3.0384302 -0.96829647 128.0 +0.73901463 -3.0153277 -0.95909572 128.0 +0.81114483 -3.400352 -1.0851462 128.0 +0.80831397 -3.4831531 -1.1109084 128.0 +0.77584052 -3.4388347 -1.0946536 128.0 +0.75167358 -3.4295833 -1.0900533 128.0 +0.72745174 -3.4192343 -1.0851462 128.0 +0.71125907 -3.4469392 -1.0928135 128.0 +0.68879145 -3.4447048 -1.0906667 128.0 +0.66258568 -3.4226997 -1.0820793 128.0 +0.64227128 -3.4304433 -1.0833061 128.0 +0.62408525 -3.450243 -1.0885198 128.0 +0.60290319 -3.4540074 -1.0885198 128.0 +0.57901925 -3.4416842 -1.0833061 128.0 +0.56441963 -3.4855759 -1.0964938 128.0 +0.53980833 -3.4682817 -1.0897466 128.0 +0.51655304 -3.458349 -1.0854529 128.0 +0.49855173 -3.4840674 -1.0928135 128.0 +0.47870931 -3.4983778 -1.0964938 128.0 +0.45440692 -3.4795411 -1.0894399 128.0 +0.43492272 -3.4973767 -1.094347 128.0 +0.41378909 -3.5028155 -1.0952671 128.0 +0.38817197 -3.4683969 -1.0833061 128.0 +0.36738169 -3.4754462 -1.0848395 128.0 +0.34576803 -3.4747934 -1.0839194 128.0 +0.32461685 -3.478745 -1.0845329 128.0 +0.30359477 -3.4844644 -1.0857596 128.0 +0.2816734 -3.4796205 -1.0836127 128.0 +0.26052952 -3.4841309 -1.0845329 128.0 +0.24031346 -3.5027566 -1.0900533 128.0 +0.22011459 -3.5250647 -1.0968004 128.0 +0.20060818 -3.5643618 -1.1090682 128.0 +0.17916 -3.5740814 -1.1118284 128.0 +0.15830579 -3.5998368 -1.1198025 128.0 +0.13674979 -3.6150074 -1.1244028 128.0 +0.11280538 -3.5596495 -1.106308 128.0 +0.090745643 -3.5517111 -1.1035477 128.0 +0.068678595 -3.5379264 -1.0989474 128.0 +0.047203146 -3.5563641 -1.1047745 128.0 +0.025354883 -3.5527797 -1.1035477 128.0 +0.0035633277 -3.5652418 -1.1075348 128.0 +-0.018385403 -3.5785217 -1.1118284 128.0 +-0.040243123 -3.5697758 -1.1090682 128.0 +-0.061808579 -3.5504286 -1.1029344 128.0 +-0.083433427 -3.5433216 -1.1007875 128.0 +-0.10548735 -3.5532081 -1.1041611 128.0 +-0.12862866 -3.5895903 -1.1161221 128.0 +-0.15057111 -3.5868316 -1.1155087 128.0 +-0.17317544 -3.5981991 -1.1194957 128.0 +-0.19426435 -3.5790114 -1.1136686 128.0 +-0.21610565 -3.5758519 -1.1130552 128.0 +-0.23727998 -3.5630624 -1.1093749 128.0 +-0.25636294 -3.5235684 -1.0971072 128.0 +-0.28053516 -3.5541894 -1.1075348 128.0 +-0.30006939 -3.5258472 -1.0989474 128.0 +-0.32560566 -3.5665925 -1.1127485 128.0 +-0.35054129 -3.595788 -1.1228694 128.0 +-0.37446883 -3.6115568 -1.1286964 128.0 +-0.39672616 -3.610137 -1.1290032 128.0 +-0.42250249 -3.6388338 -1.139124 128.0 +-0.4452855 -3.6399517 -1.1403508 128.0 +-0.47138312 -3.666415 -1.1498582 128.0 +-0.49565536 -3.6766589 -1.1541519 128.0 +-0.52380174 -3.7131307 -1.1670331 128.0 +-0.77707464 -5.2710214 -1.6755286 128.0 +-0.80911279 -5.2642727 -1.6749153 128.0 +-0.83944118 -5.2469912 -1.6709284 128.0 +-0.87021333 -5.2332921 -1.6681681 128.0 +-0.90328038 -5.2334814 -1.6700082 128.0 +-0.93604678 -5.2315879 -1.671235 128.0 +-0.97333711 -5.2538214 -1.6804358 128.0 +-1.0028658 -5.2337289 -1.6758354 128.0 +-1.0338501 -5.2218747 -1.6739953 128.0 +-1.0691148 -5.2312856 -1.679209 128.0 +-1.0990317 -5.2143826 -1.6758354 128.0 +-1.1348479 -5.2252126 -1.6816626 128.0 +-1.1693828 -5.2292967 -1.6853428 128.0 +-1.2008063 -5.2192402 -1.6844227 128.0 +-1.2352207 -5.2219625 -1.6877964 128.0 +-1.2685885 -5.2198339 -1.6896366 128.0 +-1.2985172 -5.2036409 -1.6868763 128.0 +-1.3282949 -5.1872773 -1.6841161 128.0 +-1.3586466 -5.1735063 -1.6822759 128.0 +-1.3918507 -5.1705866 -1.6841161 128.0 +-1.4225377 -5.1582789 -1.6828893 128.0 +-1.4577856 -5.1622763 -1.687183 128.0 +-1.4899623 -5.1550627 -1.6877964 128.0 +-1.1804485 -3.9931021 -1.3004441 128.0 +-1.1983112 -3.9639196 -1.2930835 128.0 +-1.5803788 -5.1131248 -1.6831959 128.0 +-1.6111488 -5.1015162 -1.6825826 128.0 +-1.6430056 -5.0933461 -1.6831959 128.0 +-1.6745249 -5.0840726 -1.6835027 128.0 +-1.7072061 -5.0782132 -1.6850362 128.0 +-1.7398784 -5.0721436 -1.6865696 128.0 +-1.7665641 -5.0487957 -1.6822759 128.0 +-1.79879 -5.0414467 -1.6835027 128.0 +-1.8235044 -5.0133209 -1.6776755 128.0 +-1.8512521 -4.9940062 -1.6749153 128.0 +-1.8875803 -4.9976888 -1.6801291 128.0 +-1.9103452 -4.9655828 -1.6730752 128.0 +-1.938693 -4.948451 -1.671235 128.0 +-1.9834855 -4.9727058 -1.6838094 128.0 +-2.0075119 -4.9445691 -1.6782889 128.0 +-1.2508819 -3.028698 -1.014607 128.0 +-1.2690731 -3.0200882 -1.0143003 128.0 +-1.2741013 -2.980742 -1.0032594 128.0 +-2.1217968 -4.8789763 -1.6730752 128.0 +-2.1613216 -4.8876257 -1.6807425 128.0 +-2.1865854 -4.8638558 -1.6770622 128.0 +-2.2219293 -4.8624663 -1.6813558 128.0 +-1.5827217 -3.4089615 -1.1697932 128.0 +-1.5897924 -3.3699222 -1.1593657 128.0 +-1.604677 -3.3480895 -1.155072 128.0 +-1.6197705 -3.3270569 -1.151085 128.0 +-1.6380438 -3.3127902 -1.1495515 128.0 +-1.6617588 -3.3094807 -1.1520051 128.0 +-1.6893879 -3.3136351 -1.1572188 128.0 +-1.7171303 -3.3175745 -1.1624327 128.0 +-1.7627025 -3.354996 -1.1799141 128.0 +-2.1986547 -4.122541 -1.4642178 128.0 +-2.2307076 -4.1215272 -1.4688182 128.0 +-2.5823233 -4.701685 -1.687183 128.0 +-2.6083426 -4.6807637 -1.6853428 128.0 +-2.6445117 -4.6779265 -1.6902499 128.0 +-2.6779017 -4.669868 -1.6933168 128.0 +-2.7108135 -4.6607528 -1.6960771 128.0 +-2.7495191 -4.6612453 -1.7025176 128.0 +-2.7868662 -4.658988 -1.7080381 128.0 +-2.8119442 -4.6361046 -1.7058913 128.0 +-2.840338 -4.6187634 -1.7058913 128.0 +-2.8676171 -4.5996332 -1.7052778 128.0 +-2.90189 -4.5916052 -1.7089581 128.0 +-2.9402809 -4.5897403 -1.7150919 128.0 +-2.9580176 -4.5556488 -1.7089581 128.0 +-2.9921956 -4.5469527 -1.7126385 128.0 +-3.012115 -4.5166311 -1.7080381 128.0 +-3.030709 -4.4846597 -1.7028244 128.0 +-3.0613968 -4.4706903 -1.7046645 128.0 +-3.0589199 -4.4088173 -1.6877964 128.0 +-3.0990551 -4.4086504 -1.6951571 128.0 +-3.1177633 -4.3779244 -1.6905566 128.0 +-3.1501374 -4.3664293 -1.6936235 128.0 +-3.160017 -4.3239679 -1.6844227 128.0 +-3.1740263 -4.2876697 -1.6776755 128.0 +-2.2384465 -2.9859276 -1.1612059 128.0 +-2.255574 -2.9706209 -1.1605924 128.0 +-3.2663414 -4.2466235 -1.6850362 128.0 +-3.2829757 -4.2144899 -1.6801291 128.0 +-3.3046458 -4.1890364 -1.6779822 128.0 +-3.3112712 -4.1448884 -1.6681681 128.0 +-3.3354437 -4.123013 -1.6675547 128.0 +-3.3630927 -4.1054139 -1.6687815 128.0 +-3.3857884 -4.0817714 -1.6675547 128.0 +-3.3936253 -4.0405159 -1.6589673 128.0 +-3.4097188 -4.0094681 -1.6546736 128.0 +-3.4417107 -3.9971244 -1.6583539 128.0 +-3.4718022 -3.9823871 -1.6611142 128.0 +-3.5018425 -3.9674308 -1.6638744 128.0 +-3.520411 -3.9394829 -1.6611142 128.0 +-3.5355747 -3.9079285 -1.6568204 128.0 +-3.5607729 -3.8875644 -1.6574339 128.0 +-3.5890908 -3.8705273 -1.6595807 128.0 +-3.6179852 -3.8539827 -1.6620343 128.0 +-3.6441879 -3.8344698 -1.6632611 128.0 +-3.6696274 -3.8140945 -1.6641811 128.0 +-3.6829975 -3.781281 -1.6595807 128.0 +-3.6987767 -3.7511578 -1.6562071 128.0 +-3.708945 -3.7155955 -1.6503799 128.0 +-3.7404706 -3.7014694 -1.654367 128.0 +-3.7767277 -3.6917522 -1.6605008 128.0 +-3.7965693 -3.6658652 -1.659274 128.0 +-3.8217468 -3.645128 -1.6605008 128.0 +-3.8391905 -3.6170418 -1.6583539 128.0 +-3.8543429 -3.5869343 -1.655287 128.0 +-3.8790829 -3.5657928 -1.6565138 128.0 +-3.8994796 -3.5406449 -1.6559004 128.0 +-3.9190049 -3.5147455 -1.6549803 128.0 +-3.9333713 -3.4843228 -1.6519134 128.0 +-3.9518106 -3.4576163 -1.6506866 128.0 +-3.9823158 -3.4413917 -1.6546736 128.0 +-4.0011845 -3.4150386 -1.6537535 128.0 +-4.0213356 -3.3898101 -1.6534469 128.0 +-4.0464492 -3.3687248 -1.655287 128.0 +-4.0743966 -3.3498762 -1.6583539 128.0 +-4.0993085 -3.3284118 -1.660194 128.0 +-4.1255956 -3.3079581 -1.6626476 128.0 +-4.1376057 -3.2760842 -1.659274 128.0 +-4.1591291 -3.251807 -1.6598874 128.0 +-4.1887999 -3.2337849 -1.6638744 128.0 +-4.225976 -3.2212894 -1.6709284 128.0 +-4.2395773 -3.1907213 -1.6684748 128.0 +-4.2544904 -3.1612425 -1.6666346 128.0 +-4.2692018 -3.1317012 -1.6647944 128.0 +-4.2806273 -3.0998659 -1.6617275 128.0 +-4.3289952 -3.0945694 -1.6733818 128.0 +-4.3642359 -3.0794692 -1.6798223 128.0 +-4.3892984 -3.0569832 -1.6822759 128.0 +-4.4118953 -3.0326884 -1.6838094 128.0 +-4.4233303 -3.0007529 -1.6810491 128.0 +-4.447197 -2.9772606 -1.6831959 128.0 +-4.4606156 -2.9467704 -1.6813558 128.0 +-4.4754229 -2.9172666 -1.6801291 128.0 +-4.5140553 -2.9031329 -1.6881031 128.0 +-4.5269608 -2.8723218 -1.686263 128.0 +-4.5469208 -2.8460054 -1.687183 128.0 +-4.574018 -2.8240507 -1.6908633 128.0 +-4.595325 -2.7984064 -1.6923968 128.0 +-4.6148572 -2.7716269 -1.6933168 128.0 +-4.6448817 -2.7510161 -1.6982239 128.0 +-4.6657844 -2.7248631 -1.6997573 128.0 +-4.6576676 -2.6819398 -1.6905566 128.0 +-4.6939039 -2.6645834 -1.6979172 128.0 +-4.7193031 -2.6408427 -1.7012908 128.0 +-4.7879314 -2.6407852 -1.7206124 128.0 +-4.8149171 -2.6172643 -1.7245995 128.0 +-4.8350811 -2.5899174 -1.7261329 128.0 +-4.8643513 -2.5673065 -1.73104 128.0 +-4.8926811 -2.5439949 -1.7356404 128.0 +-4.9183655 -2.5191307 -1.7393206 128.0 +-4.9464784 -2.4953327 -1.743921 128.0 +-4.9685163 -2.4683211 -1.7463746 128.0 +-4.9810028 -2.4365342 -1.7454545 128.0 +-5.0061512 -2.4108791 -1.7491348 128.0 +-5.0285912 -2.3837843 -1.7518951 128.0 +-5.0551996 -2.358516 -1.7561888 128.0 +-5.0834174 -2.3338046 -1.7610958 128.0 +-5.0776892 -2.2935619 -1.7540419 128.0 +-5.1021056 -2.2669983 -1.7577223 128.0 +-5.1298752 -2.241745 -1.7626293 128.0 +-5.1557779 -2.2154849 -1.766923 128.0 +-5.185935 -2.1908422 -1.7727501 128.0 +-5.232686 -2.1728442 -1.7844044 128.0 +-5.1295843 -2.0932508 -1.743921 128.0 +-5.1582351 -2.0681093 -1.7494415 128.0 +-5.2027121 -2.0489693 -1.7604824 128.0 +-5.2391567 -2.0262725 -1.7687631 128.0 +-5.2835269 -2.0062447 -1.779804 128.0 +-5.3323073 -1.9874094 -1.7923784 128.0 +-5.3962517 -1.973605 -1.8101666 128.0 +-5.4181151 -1.9439911 -1.8135402 128.0 +-5.5251193 -1.9441798 -1.8460495 128.0 +-5.6449242 -1.9474707 -1.8828527 128.0 +-5.7703834 -1.9511914 -1.9214958 128.0 +-5.8373647 -1.9339981 -1.940204 128.0 +-5.890769 -1.9116511 -1.9543118 128.0 +-5.9060168 -1.8766223 -1.9555386 128.0 +-5.9346895 -1.8457158 -1.9613658 128.0 +-5.9568305 -1.8125893 -1.9650462 128.0 +-5.9751391 -1.7781754 -1.9674996 128.0 +-5.9831953 -1.740682 -1.9665796 128.0 +-5.9928474 -1.7036769 -1.966273 128.0 +-6.0178628 -1.670945 -1.97118 128.0 +-6.0243278 -1.6329933 -1.9699532 128.0 +-6.0185905 -1.5918635 -1.9647394 128.0 +-6.03654 -1.5570421 -1.9674996 128.0 +-6.0367489 -1.5176544 -1.9644327 128.0 +-6.0635133 -1.4848833 -1.9702599 128.0 +-6.0863991 -1.4509586 -1.9748603 128.0 +-6.0645881 -1.4064953 -1.9647394 128.0 +-6.0861039 -1.3721856 -1.9690331 128.0 +-6.08883 -1.3335954 -1.967193 128.0 +-6.0968981 -1.2962099 -1.967193 128.0 +-6.1196523 -1.2618483 -1.9721 128.0 +-6.1104789 -1.2209213 -1.9665796 128.0 +-6.1178551 -1.1834052 -1.9665796 128.0 +-6.1268725 -1.1461941 -1.967193 128.0 +-6.1300435 -1.1079023 -1.9659662 128.0 +-6.1386013 -1.0705949 -1.9665796 128.0 +-6.1647668 -1.0362186 -1.9730201 128.0 +-6.1512771 -0.99518424 -1.9665796 128.0 +-6.1657324 -0.9587366 -1.9693398 128.0 +-6.1630263 -0.91962367 -1.9665796 128.0 +-6.1619573 -0.88084912 -1.9644327 128.0 +-6.1747904 -0.84405339 -1.9668863 128.0 +-6.1902351 -0.80750203 -1.9702599 128.0 +-0 -0 -0 128.0 +-6.2252007 -0.73448408 -1.9785405 128.0 +-6.2466173 -0.69817305 -1.984061 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-6.2395983 0.22443959 -1.9705666 128.0 +-0 0 -0 128.0 +-6.2696481 0.30260426 -1.9813008 128.0 +-6.25912 0.34060138 -1.9785405 128.0 +-6.2873139 0.38084733 -1.9883547 128.0 +-6.257318 0.41757542 -1.9794607 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-5.8809462 0.97804648 -1.950989 128.0 +-5.8542728 1.0105649 -1.9440156 128.0 +-5.8460946 1.046133 -1.9433817 128.0 +-5.8423634 1.0825025 -1.9443326 128.0 +-5.8318853 1.1176164 -1.9430647 128.0 +-5.8305001 1.154484 -1.9449666 128.0 +-5.8270235 1.1909971 -1.9462345 128.0 +-5.8196058 1.2267286 -1.9462345 128.0 +-5.8166037 1.2634202 -1.9478194 128.0 +-5.8031883 1.2978448 -1.9459175 128.0 +-5.7932673 1.3330028 -1.9452835 128.0 +-5.7849789 1.3685246 -1.9452835 128.0 +-5.7690997 1.4022033 -1.9427477 128.0 +-5.7567067 1.4366571 -1.9414798 128.0 +-5.7459455 1.471482 -1.9408458 128.0 +-5.7322216 1.5055065 -1.9392611 128.0 +-5.7283716 1.5421294 -1.9411628 128.0 +-5.7306871 1.5805262 -1.9452835 128.0 +-5.7263579 1.6172056 -1.9471854 128.0 +-5.7117715 1.6509949 -1.9456005 128.0 +-5.7069907 1.687624 -1.9475024 128.0 +-0 0 -0 128.0 +-5.6541362 1.7477294 -1.9364083 128.0 +-5.6505408 1.7846743 -1.9389441 128.0 +-5.6277494 1.8155271 -1.9348234 128.0 +-5.6074953 1.8470575 -1.9316536 128.0 +-5.6041474 1.8841493 -1.9345064 128.0 +-5.5906868 1.9178848 -1.9338725 128.0 +-5.5779185 1.9518393 -1.9335555 128.0 +-5.5569043 1.9828413 -1.9303857 128.0 +-5.5785036 2.0292184 -1.9424307 128.0 +-5.5650582 2.0630796 -1.9421138 128.0 +-5.5496325 2.0961821 -1.9411628 128.0 +-5.5348959 2.1295135 -1.9405289 128.0 +-5.5181928 2.1620512 -1.9392611 128.0 +-5.5048227 2.1958694 -1.9392611 128.0 +-5.4921246 2.2299619 -1.9395781 128.0 +-5.4783382 2.2636189 -1.9395781 128.0 +-5.4634714 2.2968233 -1.9392611 128.0 +-5.4475312 2.3295577 -1.9386271 128.0 +-5.4357443 2.3640738 -1.9395781 128.0 +-5.420269 2.3969989 -1.9392611 128.0 +-5.4002686 2.4278789 -1.9373592 128.0 +-5.3913083 2.4637275 -1.9395781 128.0 +-5.3545842 2.4867759 -1.9316536 128.0 +-5.3323627 2.5163465 -1.9291179 128.0 +-5.3399143 2.5600867 -1.9376762 128.0 +-5.315578 2.5886517 -1.9345064 128.0 +-5.2944937 2.6186962 -1.9326046 128.0 +-5.2740879 2.6490052 -1.9310197 128.0 +-5.2509751 2.6778698 -1.928484 128.0 +-5.2268648 2.7061148 -1.9256312 128.0 +-5.2135205 2.7398999 -1.9268991 128.0 +-5.1874051 2.7669287 -1.9234123 128.0 +-5.1895142 2.8090887 -1.9307027 128.0 +-5.1696863 2.8395085 -1.9297519 128.0 +-5.1513376 2.8707139 -1.9294349 128.0 +-5.1402316 2.9060016 -1.9319706 128.0 +-5.1206584 2.9365432 -1.9313366 128.0 +-5.0927052 2.9621861 -1.927533 128.0 +-5.0638137 2.9871149 -1.9234123 128.0 +-5.059227 3.0264056 -1.9288009 128.0 +-5.0356965 3.0544407 -1.9268991 128.0 +-5.015244 3.0842881 -1.9262651 128.0 +-5.0010538 3.1180134 -1.928167 128.0 +-4.9802246 3.1476271 -1.927533 128.0 +-4.9600186 3.1776145 -1.9272161 128.0 +-4.9404278 3.2079887 -1.9272161 128.0 +-4.920651 3.2382421 -1.9272161 128.0 +-4.9030561 3.2699523 -1.928167 128.0 +-4.8852572 3.3015685 -1.9291179 128.0 +-4.8672552 3.3330891 -1.9300689 128.0 +-4.8467121 3.3628914 -1.9300689 128.0 +-4.8120193 3.3827498 -1.9243633 128.0 +-4.8027616 3.4204643 -1.9291179 128.0 +-4.7786069 3.4476497 -1.92785 128.0 +-4.751236 3.472429 -1.9253142 128.0 +-4.7077332 3.485153 -1.916122 128.0 +-4.7128196 3.5338862 -1.9272161 128.0 +-4.6902919 3.5621634 -1.9268991 128.0 +-4.6736093 3.5949228 -1.9291179 128.0 +-4.653708 3.6252804 -1.9300689 128.0 +-4.6135044 3.6396694 -1.9224614 128.0 +-4.6044235 3.6785638 -1.928167 128.0 +-4.5699673 3.6972032 -1.9230953 128.0 +-4.5523319 3.7293813 -1.9253142 128.0 +-4.5249829 3.7536108 -1.9234123 128.0 +-4.504045 3.7831347 -1.9243633 128.0 +-4.4742446 3.8051703 -1.9215105 128.0 +-4.4630308 3.8430719 -1.9268991 128.0 +-4.4250674 3.8579199 -1.9205596 128.0 +-4.4041567 3.8875093 -1.9218274 128.0 +-4.3795133 3.9138277 -1.9215105 128.0 +-4.3476791 3.9336271 -1.9180238 128.0 +-4.321363 3.9583082 -1.9170729 128.0 +-4.2872572 3.9757211 -1.9126352 128.0 +-4.2517176 3.9915667 -1.9075637 128.0 +-4.2463965 4.0358729 -1.9164389 128.0 +-4.2324886 4.0723734 -1.9215105 128.0 +-4.2094598 4.1002517 -1.9224614 128.0 +-4.1862478 4.1280012 -1.9234123 128.0 +-4.1615114 4.1542797 -1.9237293 128.0 +-4.1292715 4.1729951 -1.9205596 128.0 +-4.0969586 4.1914711 -1.9173899 128.0 +-4.0639162 4.2090259 -1.9139031 128.0 +-4.0242662 4.21947 -1.9072467 128.0 +-4.0197635 4.2668629 -1.9177068 128.0 +-3.9941533 4.2921414 -1.9180238 128.0 +-3.9715931 4.3207579 -1.9199257 128.0 +-3.9386308 4.3380241 -1.9167559 128.0 +-3.9119391 4.3621097 -1.9167559 128.0 +-3.8888736 4.3902903 -1.9186578 128.0 +-3.8587394 4.4105005 -1.9170729 128.0 +-3.830364 4.4326591 -1.9164389 128.0 +-3.7993991 4.4517498 -1.9145371 128.0 +-3.7555068 4.4554 -1.9059788 128.0 +-3.7426627 4.4958525 -1.9135861 128.0 +-3.7156086 4.519465 -1.9139031 128.0 +-3.6830249 4.5362883 -1.9113673 128.0 +-3.658088 4.5625014 -1.9129522 128.0 +-3.6253138 4.5789127 -1.9104165 128.0 +-3.600071 4.6048064 -1.9120013 128.0 +-3.5787041 4.635818 -1.915805 128.0 +-3.5599668 4.6705117 -1.9211935 128.0 +-3.526679 4.6862054 -1.9186578 128.0 +-3.4961617 4.7054725 -1.9177068 128.0 +-3.4672236 4.7268362 -1.9177068 128.0 +-3.4270287 4.7326589 -1.9113673 128.0 +-3.3935125 4.7474251 -1.9088316 128.0 +-3.3517416 4.7503347 -1.9015411 128.0 +-3.3268676 4.7770376 -1.9040769 128.0 +-3.3050158 4.8083029 -1.9085146 128.0 +-3.2690604 4.8190732 -1.9047109 128.0 +-3.240485 4.8406172 -1.9053448 128.0 +-3.2101996 4.8596182 -1.9050279 128.0 +-3.1891263 4.8927307 -1.9104165 128.0 +-3.1569929 4.9090161 -1.9091486 128.0 +-3.1176653 4.9138799 -1.903443 128.0 +-3.0889654 4.935329 -1.9043939 128.0 +-3.0436757 4.9299798 -1.8948847 128.0 +-3.0340886 4.982584 -1.9081976 128.0 +-2.9990637 4.9937897 -1.9053448 128.0 +-2.9625657 5.002305 -1.9015411 128.0 +-2.9389915 5.0326734 -1.9062958 128.0 +-2.9028499 5.0415711 -1.902809 128.0 +-2.8812258 5.0757837 -1.9091486 128.0 +-2.8486376 5.0908842 -1.9081976 128.0 +-2.8187213 5.1107583 -1.9091486 128.0 +-2.7873092 5.1279578 -1.9091486 128.0 +-2.7544487 5.1424556 -1.9081976 128.0 +-2.7241714 5.1617761 -1.9091486 128.0 +-2.6959486 5.1851258 -1.9116843 128.0 +-2.6649475 5.2032585 -1.9123182 128.0 +-2.6274168 5.2085042 -1.9081976 128.0 +-2.5970967 5.2279253 -1.9094656 128.0 +-2.5670538 5.2480221 -1.9110503 128.0 +-2.5298655 5.2534208 -1.9072467 128.0 +-2.4886446 5.2499909 -1.9002733 128.0 +-2.4603949 5.273757 -1.903443 128.0 +-2.4279892 5.288754 -1.903443 128.0 +-2.3990066 5.3113313 -1.9062958 128.0 +-2.3733046 5.3415523 -1.9120013 128.0 +-2.3416243 5.3586211 -1.9129522 128.0 +-2.3109474 5.3781166 -1.914854 128.0 +-2.2767968 5.3895741 -1.9139031 128.0 +-2.2378638 5.3894281 -1.9088316 128.0 +-2.2065449 5.4074488 -1.9104165 128.0 +-2.1683819 5.4085617 -1.9059788 128.0 +-2.1452348 5.4473557 -1.915171 128.0 +-2.1138229 5.4657235 -1.9170729 128.0 +-2.0711544 5.4546514 -1.9085146 128.0 +-2.0373149 5.4663687 -1.9081976 128.0 +-2.0073197 5.488564 -1.9116843 128.0 +-1.9739251 5.5016704 -1.9120013 128.0 +-1.9401304 5.5136786 -1.9120013 128.0 +-1.9056438 5.5236859 -1.9113673 128.0 +-1.8692843 5.5280871 -1.9088316 128.0 +-1.8293623 5.5214472 -1.902492 128.0 +-1.7942777 5.5289598 -1.9012241 128.0 +-1.7588824 5.5353456 -1.8996394 128.0 +-1.7240398 5.5433168 -1.8986884 128.0 +-1.6924797 5.5619569 -1.9015411 128.0 +-1.6594027 5.5758734 -1.902809 128.0 +-1.6262187 5.5895929 -1.9040769 128.0 +-1.5965605 5.6158867 -1.9097825 128.0 +-1.568925 5.6502509 -1.9183408 128.0 +-1.5381975 5.6744175 -1.9234123 128.0 +-1.5069897 5.6975021 -1.928167 128.0 +-1.4717652 5.7057233 -1.92785 128.0 +-1.4374218 5.7174058 -1.9288009 128.0 +-1.3923841 5.6855855 -1.914854 128.0 +-1.362312 5.7143183 -1.9218274 128.0 +-1.3297961 5.7336564 -1.9256312 128.0 +-1.2885385 5.7148771 -1.9164389 128.0 +-1.2530425 5.7208233 -1.915805 128.0 +-1.2173246 5.7256207 -1.914854 128.0 +-1.1746974 5.6967564 -1.902492 128.0 +-1.1475285 5.7429185 -1.915805 128.0 +-1.1111878 5.7442641 -1.9139031 128.0 +-1.0771421 5.7575002 -1.916122 128.0 +-1.040782 5.7584009 -1.9142201 128.0 +-1.0057555 5.7665477 -1.914854 128.0 +-0.97460049 5.797863 -1.9234123 128.0 +-0.94264418 5.8262043 -1.9310197 128.0 +-0.90702337 5.8328156 -1.9313366 128.0 +-0.86813581 5.8176341 -1.9243633 128.0 +-0.83604884 5.8482013 -1.9329215 128.0 +-0.80130595 5.8616781 -1.9357743 128.0 +-0.76606077 5.8721275 -1.9376762 128.0 +-0.72966474 5.8738937 -1.9367253 128.0 +-0.69327587 5.8754344 -1.9357743 128.0 +-0.65742266 5.8814631 -1.9364083 128.0 +-0.62092376 5.8816133 -1.9351404 128.0 +-0.58247697 5.8617182 -1.9272161 128.0 +-0.5476439 5.8774581 -1.9313366 128.0 +-0.50869107 5.8476377 -1.9202427 128.0 +-0.47188357 5.8393049 -1.9164389 128.0 +-0.43703458 5.8553314 -1.9208765 128.0 +-0.40025562 5.845602 -1.9167559 128.0 +-0.36573821 5.8697195 -1.9240463 128.0 +-0.3299816 5.8765879 -1.9256312 128.0 +-0.2940596 5.8813438 -1.9265821 128.0 +-0.25796682 5.8830371 -1.9265821 128.0 +-0.22075458 5.8551288 -1.9167559 128.0 +-0.18575348 5.8857598 -1.9265821 128.0 +-0.1498048 5.8934259 -1.9288009 128.0 +-0.11387911 5.9065614 -1.9329215 128.0 +-0.077033624 5.8616281 -1.9177068 128.0 +-0.041327558 5.8989782 -1.9300689 128.0 +-0.0051153149 5.8820491 -1.9243633 128.0 +0.03071015 5.8307552 -1.9072467 128.0 +0.066722892 5.8513212 -1.9142201 128.0 +0.1026081 5.849853 -1.9139031 128.0 +0.13876882 5.8604918 -1.9177068 128.0 +0.17489474 5.8652177 -1.9196087 128.0 +0.2111519 5.8716168 -1.9221444 128.0 +0.24689665 5.8635774 -1.9199257 128.0 +0.28296155 5.8638468 -1.9205596 128.0 +0.31862733 5.856318 -1.9186578 128.0 +0.35409686 5.8466792 -1.916122 128.0 +0.38983858 5.8425035 -1.915488 128.0 +0.42650679 5.8513527 -1.9192917 128.0 +0.46202856 5.8438983 -1.9177068 128.0 +0.49852124 5.8485136 -1.9202427 128.0 +0.53396624 5.8406219 -1.9186578 128.0 +0.57154304 5.8551707 -1.9246802 128.0 +0.60755682 5.8524971 -1.9249972 128.0 +0.64469945 5.859972 -1.9288009 128.0 +0.678783 5.83989 -1.9234123 128.0 +0.71794438 5.8629165 -1.9326046 128.0 +0.74979138 5.8264174 -1.9218274 128.0 +0.78425992 5.8123078 -1.9186578 128.0 +0.82388449 5.8355603 -1.928167 128.0 +0.85206968 5.7787886 -1.9107335 128.0 +0.8859272 5.7631397 -1.9072467 128.0 +0.92247081 5.7650876 -1.9097825 128.0 +0.95751631 5.7574477 -1.9091486 128.0 +0.99363166 5.7561374 -1.9107335 128.0 +1.0301009 5.7564673 -1.9129522 128.0 +1.0648844 5.7472405 -1.9120013 128.0 +1.1006641 5.7433929 -1.9129522 128.0 +1.1355158 5.7346706 -1.9123182 128.0 +1.1704919 5.726666 -1.9120013 128.0 +1.2050214 5.7165918 -1.9110503 128.0 +1.2394712 5.7063103 -1.9100995 128.0 +1.2790138 5.7189603 -1.9170729 128.0 +1.3142931 5.7119288 -1.9173899 128.0 +1.3471334 5.6945271 -1.9142201 128.0 +1.3798096 5.6769381 -1.9110503 128.0 +1.4134687 5.663764 -1.9094656 128.0 +1.4481943 5.6549845 -1.9094656 128.0 +1.4821428 5.64324 -1.9085146 128.0 +1.5123044 5.6175542 -1.902809 128.0 +1.5495178 5.6182265 -1.9062958 128.0 +1.5790648 5.5912709 -1.9002733 128.0 +1.6064967 5.5577865 -1.8920319 128.0 +1.6424506 5.5541916 -1.8942508 128.0 +1.6723826 5.5303912 -1.8894962 128.0 +1.7085252 5.5272746 -1.8920319 128.0 +1.7449781 5.524827 -1.8948847 128.0 +1.7823384 5.524848 -1.8986884 128.0 +1.822138 5.5318246 -1.9050279 128.0 +1.8545353 5.5160451 -1.903443 128.0 +1.8905001 5.5108418 -1.9056618 128.0 +1.9355533 5.5313663 -1.9170729 128.0 +1.958303 5.488121 -1.9059788 128.0 +1.9925889 5.4777842 -1.9066128 128.0 +2.0225365 5.4556723 -1.903126 128.0 +2.0546336 5.4396105 -1.9018581 128.0 +2.0906959 5.4339828 -1.9043939 128.0 +2.1271122 5.4289999 -1.9072467 128.0 +2.1631947 5.422894 -1.9097825 128.0 +2.1925039 5.3998518 -1.9062958 128.0 +2.2266819 5.388927 -1.9072467 128.0 +2.2534583 5.3602991 -1.9018581 128.0 +2.2922719 5.3603244 -1.9069297 128.0 +2.3254972 5.3470283 -1.9072467 128.0 +2.3375516 5.2858176 -1.8901302 128.0 +2.3816061 5.2973266 -1.8996394 128.0 +2.3975108 5.2463822 -1.8863264 128.0 +2.4428382 5.2599597 -1.8967866 128.0 +2.4718292 5.2380099 -1.8942508 128.0 +2.4973631 5.2090602 -1.8891792 128.0 +2.5292783 5.1936388 -1.8891792 128.0 +2.5636206 5.1831226 -1.8910811 128.0 +2.5966523 5.1698375 -1.8920319 128.0 +2.6339257 5.1647916 -1.8961526 128.0 +2.6642587 5.1460061 -1.8952017 128.0 +2.6971073 5.1320806 -1.8961526 128.0 +2.7285464 5.1154346 -1.8961526 128.0 +2.7594314 5.0977621 -1.8958356 128.0 +2.7933979 5.0857229 -1.8977375 128.0 +2.8259356 5.0709724 -1.8986884 128.0 +2.8611977 5.0609684 -1.9015411 128.0 +2.8936126 5.0457854 -1.902492 128.0 +2.921181 5.0221963 -1.9002733 128.0 +2.9485688 4.9984593 -1.8980545 128.0 +2.9791832 4.9802732 -1.8980545 128.0 +3.0091937 4.9610887 -1.8977375 128.0 +3.0410681 4.9449549 -1.8986884 128.0 +3.0728576 4.928617 -1.8996394 128.0 +3.105068 4.9128761 -1.9009073 128.0 +3.1505013 4.9176908 -1.9104165 128.0 +3.1635733 4.872016 -1.8999563 128.0 +3.1928866 4.8517208 -1.8996394 128.0 +3.2210174 4.8296709 -1.8986884 128.0 +3.2537773 4.8145313 -1.9005903 128.0 +3.2811141 4.7913456 -1.8993224 128.0 +3.3077483 4.7672262 -1.8977375 128.0 +3.3374827 4.7476168 -1.8980545 128.0 +3.3560979 4.7123699 -1.8920319 128.0 +3.3932724 4.7032266 -1.8967866 128.0 +3.4215074 4.6815515 -1.8964696 128.0 +3.4552469 4.6673303 -1.8993224 128.0 +3.476424 4.6361761 -1.8952017 128.0 +3.5025113 4.6117368 -1.8939338 128.0 +3.5272732 4.5856481 -1.8920319 128.0 +3.5594234 4.5691566 -1.8942508 128.0 +3.5962029 4.5584002 -1.8990054 128.0 +3.6270647 4.5399537 -1.9005903 128.0 +3.6602213 4.5242496 -1.903443 128.0 +3.6867108 4.5002379 -1.902809 128.0 +3.7154653 4.478992 -1.903443 128.0 +3.7508073 4.4655519 -1.9075637 128.0 +3.7793655 4.4438982 -1.9081976 128.0 +3.7917101 4.4033751 -1.9005903 128.0 +3.8230197 4.3850312 -1.902809 128.0 +3.8354194 4.3451357 -1.8955187 128.0 +3.864536 4.3243494 -1.8967866 128.0 +3.8986323 4.3089957 -1.9005903 128.0 +3.9243579 4.2842937 -1.9002733 128.0 +3.9628241 4.2733474 -1.9062958 128.0 +3.9766371 4.2358131 -1.9002733 128.0 +3.9973261 4.205833 -1.8977375 128.0 +4.034893 4.1935296 -1.903443 128.0 +4.0605483 4.1686931 -1.903443 128.0 +4.0873823 4.14505 -1.9040769 128.0 +4.1268091 4.1339893 -1.9107335 128.0 +4.1527715 4.1092567 -1.9110503 128.0 +4.171803 4.0777316 -1.9081976 128.0 +4.1926517 4.0481043 -1.9062958 128.0 +4.2187839 4.0236115 -1.9069297 128.0 +4.2364902 3.9911458 -1.90376 128.0 +4.2588167 3.9631376 -1.902809 128.0 +4.283752 3.9375732 -1.903126 128.0 +4.3148532 3.9175904 -1.9062958 128.0 +4.3303375 3.8834419 -1.902492 128.0 +4.355504 3.8580563 -1.903126 128.0 +4.3705297 3.8237641 -1.8993224 128.0 +4.4053907 3.8067977 -1.9043939 128.0 +4.4286661 3.779695 -1.9043939 128.0 +4.4546747 3.7548954 -1.9056618 128.0 +4.4798174 3.7293119 -1.9066128 128.0 +4.501883 3.7011516 -1.9062958 128.0 +4.5230355 3.6722634 -1.9056618 128.0 +4.544003 3.6432548 -1.9050279 128.0 +4.5670156 3.6158934 -1.9053448 128.0 +4.5921049 3.5901394 -1.9066128 128.0 +4.6087923 3.557838 -1.9043939 128.0 +4.6214848 3.5225921 -1.9005903 128.0 +4.6377077 3.4901762 -1.8983715 128.0 +4.6597972 3.46222 -1.8986884 128.0 +4.6847768 3.4363678 -1.9002733 128.0 +4.7019329 3.4047763 -1.8986884 128.0 +4.7373948 3.3863418 -1.9047109 128.0 +4.7503347 3.3517416 -1.9015411 128.0 +4.7708116 3.322531 -1.9015411 128.0 +4.7887635 3.2915833 -1.9005903 128.0 +4.8182883 3.268528 -1.9043939 128.0 +4.8414054 3.2410126 -1.9056618 128.0 +4.8659487 3.2143822 -1.9075637 128.0 +4.8879638 3.1860187 -1.9085146 128.0 +4.9034324 3.1534014 -1.9069297 128.0 +4.9210873 3.1222389 -1.9062958 128.0 +4.942564 3.0934944 -1.9072467 128.0 +4.9606452 3.0626109 -1.9069297 128.0 +4.982584 3.0340886 -1.9081976 128.0 +4.9913507 2.9975986 -1.9043939 128.0 +5.0104656 2.9673994 -1.9047109 128.0 +5.0293975 2.9370782 -1.9050279 128.0 +5.051434 2.9085295 -1.9066128 128.0 +5.0609374 2.8727973 -1.903443 128.0 +5.0768142 2.8407636 -1.902809 128.0 +5.0958099 2.8104756 -1.903443 128.0 +5.1204581 2.7832322 -1.9062958 128.0 +5.1315875 2.7486262 -1.9040769 128.0 +5.1592598 2.7228432 -1.9081976 128.0 +5.1834431 2.6950736 -1.9110503 128.0 +5.2049465 2.6658123 -1.9129522 128.0 +5.2237463 2.6351068 -1.9139031 128.0 +5.2381177 2.6021609 -1.9132692 128.0 +5.2522817 2.5691378 -1.9126352 128.0 +5.2611108 2.5335696 -1.9100995 128.0 +5.2705588 2.4983959 -1.9078807 128.0 +5.2866488 2.4664104 -1.9081976 128.0 +5.3008208 2.4335301 -1.9078807 128.0 +5.3199749 2.4029114 -1.9094656 128.0 +5.3380852 2.3717639 -1.9107335 128.0 +5.3507996 2.3382058 -1.9100995 128.0 +5.362432 2.3042064 -1.9091486 128.0 +5.3799639 2.2727363 -1.9104165 128.0 +5.3929319 2.2393188 -1.9100995 128.0 +5.4144735 2.2094119 -1.9129522 128.0 +5.4367313 2.1796777 -1.916122 128.0 +5.4464736 2.1448872 -1.914854 128.0 +5.464839 2.1134808 -1.9167559 128.0 +5.4883442 2.0839503 -1.9205596 128.0 +5.4903631 2.0462596 -1.9167559 128.0 +5.5063782 2.0138364 -1.9180238 128.0 +5.5230947 1.9816136 -1.9196087 128.0 +5.5324659 1.9467427 -1.9186578 128.0 +5.5460997 1.9133782 -1.9192917 128.0 +5.5469546 1.8756655 -1.915488 128.0 +5.5610595 1.8424897 -1.9164389 128.0 +5.5695539 1.8074546 -1.915488 128.0 +5.5841551 1.7743956 -1.9167559 128.0 +5.6021824 1.7423522 -1.9192917 128.0 +5.6127677 1.7079451 -1.9192917 128.0 +5.627687 1.6748266 -1.9208765 128.0 +5.6424108 1.6415893 -1.9224614 128.0 +5.6551142 1.6077155 -1.9234123 128.0 +5.6648722 1.5729861 -1.9234123 128.0 +5.6707559 1.5372047 -1.9221444 128.0 +5.6791644 1.502138 -1.9218274 128.0 +5.6901112 1.467737 -1.9224614 128.0 +5.6898117 1.4304824 -1.9192917 128.0 +5.6920338 1.3939637 -1.9170729 128.0 +5.7032475 1.3596718 -1.9180238 128.0 +5.7087111 1.3240088 -1.9170729 128.0 +5.7213535 1.2899992 -1.9186578 128.0 +5.7291613 1.2548693 -1.9186578 128.0 +5.7506685 1.2226518 -1.9234123 128.0 +5.7664223 1.1890678 -1.9262651 128.0 +5.7736096 1.1536633 -1.9262651 128.0 +5.7833729 1.1187559 -1.9272161 128.0 +5.7854676 1.0823764 -1.9256312 128.0 +5.792933 1.0470258 -1.9259481 128.0 +5.7927084 1.0103202 -1.9237293 128.0 +5.8006692 0.97507238 -1.9243633 128.0 +5.8149691 0.94082564 -1.9272161 128.0 +5.8196955 0.90498221 -1.9268991 128.0 +5.8373332 0.87107676 -1.9310197 128.0 +5.8106461 0.83067745 -1.9202427 128.0 +5.8475828 0.7993781 -1.9310197 128.0 +5.8504968 0.76323742 -1.9303857 128.0 +5.8080101 0.72147602 -1.9145371 128.0 +5.8500037 0.69027334 -1.9272161 128.0 +5.8513012 0.6540491 -1.9262651 128.0 +5.8618064 0.61883134 -1.928484 128.0 +5.8683248 0.58313388 -1.9294349 128.0 +5.8746252 0.54737973 -1.9303857 128.0 +5.874094 0.51099437 -1.9291179 128.0 +5.8856268 0.4756301 -1.9319706 128.0 +5.8884344 0.43950763 -1.9319706 128.0 +5.8938589 0.40356317 -1.9329215 128.0 +5.8820252 0.36650583 -1.928167 128.0 +5.8983674 0.33120605 -1.9329215 128.0 +5.8974471 0.29486585 -1.9319706 128.0 +5.8953552 0.25850779 -1.9307027 128.0 +5.8892484 0.22204332 -1.928167 128.0 +5.8886037 0.18584344 -1.927533 128.0 +5.8943739 0.14982897 -1.9291179 128.0 +5.8913894 0.11358555 -1.92785 128.0 +5.8986139 0.077522233 -1.9300689 128.0 +5.9027719 0.041354395 -1.9313366 128.0 +5.9057598 0.0051375586 -1.9322876 128.0 +5.9066286 -0.031104529 -1.9326046 128.0 +5.9034815 -0.067314088 -1.9316536 128.0 +5.9029574 -0.10353591 -1.9316536 128.0 +5.89747 -0.1396419 -1.9300689 128.0 +5.8993464 -0.17591007 -1.9310197 128.0 +5.8848863 -0.21162818 -1.9265821 128.0 +5.8796868 -0.24757385 -1.9253142 128.0 +5.8856359 -0.28401145 -1.92785 128.0 +5.8837824 -0.32011968 -1.92785 128.0 +5.8854942 -0.35644495 -1.9291179 128.0 +5.887928 -0.39286634 -1.9307027 128.0 +5.8891902 -0.42926213 -1.9319706 128.0 +5.8892817 -0.46561351 -1.9329215 128.0 +5.8938742 -0.5023846 -1.9354573 128.0 +5.8954029 -0.53897071 -1.9370422 128.0 +5.8882093 -0.57476574 -1.9357743 128.0 +5.8845716 -0.61088431 -1.9357743 128.0 +5.8797698 -0.64687622 -1.9354573 128.0 +5.8643847 -0.68162835 -1.9316536 128.0 +5.8610334 -0.71771395 -1.9319706 128.0 +5.8452311 -0.75221115 -1.928167 128.0 +5.8433251 -0.78844297 -1.9291179 128.0 +5.8411951 -0.82467967 -1.9300689 128.0 +5.8519759 -0.86285585 -1.9354573 128.0 +5.83251 -0.89658606 -1.9307027 128.0 +5.8334546 -0.93340534 -1.9329215 128.0 +5.8360376 -0.97058094 -1.9357743 128.0 +5.8168879 -1.0041142 -1.9313366 128.0 +5.8236876 -1.042125 -1.9357743 128.0 +5.803195 -1.075248 -1.9310197 128.0 +5.8011456 -1.1117277 -1.9326046 128.0 +5.8007278 -1.148591 -1.9348234 128.0 +5.7972879 -1.1849215 -1.9360913 128.0 +5.7676349 -1.2157772 -1.928484 128.0 +5.781384 -1.2557726 -1.9357743 128.0 +5.7994862 -1.2970171 -1.9446496 128.0 +5.7692356 -1.327475 -1.9370422 128.0 +5.7388301 -1.3576107 -1.9294349 128.0 +5.7313137 -1.3930218 -1.9297519 128.0 +5.720818 -1.4277031 -1.9291179 128.0 +5.7321634 -1.4679536 -1.9360913 128.0 +5.733139 -1.5057473 -1.9395781 128.0 +5.7173815 -1.5391715 -1.9373592 128.0 +5.697772 -1.5714506 -1.9338725 128.0 +5.704452 -1.6110206 -1.9395781 128.0 +5.6935482 -1.6457288 -1.9392611 128.0 +5.6733384 -1.677675 -1.9357743 128.0 +5.6711082 -1.7149246 -1.9386271 128.0 +5.6523237 -1.7471693 -1.9357743 128.0 +5.6315484 -1.778677 -1.9322876 128.0 +5.619626 -1.8129069 -1.9319706 128.0 +5.593082 -1.8423109 -1.9265821 128.0 +5.5942583 -1.8808253 -1.9310197 128.0 +5.5431385 -1.9015771 -1.9170729 128.0 +5.5259953 -1.9336742 -1.915171 128.0 +5.4613218 -1.9487425 -1.8964696 128.0 +5.3913264 -1.9611458 -1.8758663 128.0 +5.2973742 -1.9638646 -1.8467047 128.0 +5.2027082 -1.9651703 -1.8172262 128.0 +5.1533737 -1.9827553 -1.8039134 128.0 +5.0872416 -1.9932367 -1.784578 128.0 +5.0167727 -2.0012252 -1.7636577 128.0 +4.9701262 -2.0180569 -1.7512957 128.0 +4.9208336 -2.0333056 -1.7379827 128.0 +4.8829093 -2.0528035 -1.7287905 128.0 +4.8396993 -2.0696757 -1.7176964 128.0 +4.7921181 -2.0842047 -1.7050176 128.0 +4.7896485 -2.1181717 -1.7088212 128.0 +4.767911 -2.1436319 -1.7056515 128.0 +4.7262006 -2.1598401 -1.6951914 128.0 +4.705977 -2.1856034 -1.6926556 128.0 +4.559526 -2.1517086 -1.6435246 128.0 +4.3709102 -2.0956032 -1.5785451 128.0 +4.4099855 -2.1477103 -1.5978805 128.0 +4.2564483 -2.1053593 -1.5455798 128.0 +4.2646389 -2.1420774 -1.5535041 128.0 +4.1238298 -2.1031499 -1.5056411 128.0 +4.0493612 -2.0965858 -1.4825021 128.0 +4.0960312 -2.152715 -1.5050071 128.0 +4.1229148 -2.19923 -1.5202219 128.0 +4.1493802 -2.2461548 -1.5354366 128.0 +4.2352786 -2.3263576 -1.5734735 128.0 +4.0461097 -2.2548964 -1.506592 128.0 +4.0751319 -2.3039494 -1.5230746 128.0 +4.0633869 -2.3303258 -1.5240256 128.0 +3.7251635 -2.1668768 -1.398821 128.0 +3.5467782 -2.0923643 -1.3347924 128.0 +3.4801517 -2.0819569 -1.3138721 128.0 +3.4283857 -2.0796642 -1.2986574 128.0 +3.3614299 -2.0673771 -1.2774202 128.0 +3.3124628 -2.0653856 -1.2631563 128.0 +3.2644501 -2.0633786 -1.2492095 128.0 +3.1606829 -2.0250514 -1.2130744 128.0 +3.1195605 -2.0258143 -1.2016635 128.0 +3.0880563 -2.0324054 -1.194056 128.0 +3.0786839 -2.0534198 -1.1953239 128.0 +3.0463803 -2.0589964 -1.1873996 128.0 +3.9782534 -2.7243912 -1.5699868 128.0 +2.9803619 -2.0681131 -1.170917 128.0 +2.9288192 -2.0590918 -1.1550683 128.0 +2.8775008 -2.0495169 -1.1392196 128.0 +2.8441031 -2.0521529 -1.1306614 128.0 +2.8153768 -2.0578141 -1.124005 128.0 +2.7744913 -2.0541725 -1.1122769 128.0 +2.7413461 -2.0557964 -1.1037186 128.0 +2.7082863 -2.0570917 -1.0951604 128.0 +2.6865916 -2.0667324 -1.0913566 128.0 +2.674608 -2.0837607 -1.0916736 128.0 +2.6558149 -2.0954337 -1.0891378 128.0 +2.6636565 -2.1282644 -1.098013 128.0 +2.66677 -2.1576908 -1.1049864 128.0 +2.6556816 -2.1758161 -1.1059374 128.0 +2.645931 -2.1950974 -1.1075222 128.0 +2.6287811 -2.2082415 -1.1059374 128.0 +2.6130145 -2.2224867 -1.1049864 128.0 +2.5835159 -2.224864 -1.098013 128.0 +2.5262048 -2.2026582 -1.0786777 128.0 +2.4920204 -2.1999171 -1.0694854 128.0 +2.4685738 -2.2063191 -1.0650479 128.0 +2.4275591 -2.19661 -1.0526859 128.0 +2.4112377 -2.2089014 -1.0514179 128.0 +2.3969433 -2.2230101 -1.051101 128.0 +2.391556 -2.245465 -1.0549047 128.0 +2.3859835 -2.2679372 -1.0587083 128.0 +2.3733897 -2.2838497 -1.0593423 128.0 +2.3538959 -2.2930756 -1.0568064 128.0 +2.3559904 -2.323457 -1.0644139 128.0 +2.3557863 -2.3519397 -1.0710703 128.0 +2.332638 -2.3575866 -1.0669496 128.0 +2.316802 -2.3704987 -1.0663157 128.0 +2.3008957 -2.3833051 -1.0656818 128.0 +2.2855742 -2.396692 -1.0653648 128.0 +2.2805812 -2.4210253 -1.0701194 128.0 +2.2792525 -2.4495528 -1.0767758 128.0 +2.255193 -2.4537168 -1.0723382 128.0 +2.2413702 -2.4689124 -1.0729722 128.0 +2.2173133 -2.472734 -1.0685345 128.0 +2.1775711 -2.458606 -1.0561726 128.0 +2.1649425 -2.474776 -1.0574404 128.0 +2.150337 -2.4887309 -1.0577574 128.0 +2.1301 -2.4961073 -1.0552217 128.0 +2.1233025 -2.5192823 -1.0596592 128.0 +2.1078043 -2.5322633 -1.0596592 128.0 +2.1012626 -2.5561376 -1.0644139 128.0 +2.0771687 -2.5586748 -1.0599762 128.0 +2.06499 -2.5758114 -1.0618781 128.0 +2.0473797 -2.5862029 -1.0609272 128.0 +2.0384831 -2.6076825 -1.0647309 128.0 +2.0154891 -2.6111326 -1.0609272 128.0 +2.0120792 -2.640044 -1.0679005 128.0 +2.0072496 -2.6674955 -1.0742401 128.0 +2.0032897 -2.6965094 -1.0812135 128.0 +0 -0 -0 128.0 +1.9628165 -2.7109039 -1.0770928 128.0 +1.9395267 -2.7136378 -1.0732892 128.0 +1.9080749 -2.7045648 -1.0647309 128.0 +1.8800603 -2.6998785 -1.0580744 128.0 +1.8747419 -2.7277763 -1.0647309 128.0 +1.8483846 -2.725101 -1.0590253 128.0 +1.8252969 -2.726934 -1.0552217 128.0 +1.7991197 -2.7238386 -1.0495161 128.0 +1.7870343 -2.7419772 -1.0523689 128.0 +1.7747937 -2.7600696 -1.0552217 128.0 +1.7563004 -2.7685051 -1.0542707 128.0 +1.7468287 -2.7912881 -1.0590253 128.0 +1.7236892 -2.7922702 -1.0552217 128.0 +1.7124437 -2.8125143 -1.0590253 128.0 +1.7010145 -2.8327253 -1.062829 128.0 +1.6749008 -2.8284206 -1.0571234 128.0 +1.6575143 -2.8386445 -1.0571234 128.0 +1.6500051 -2.8660212 -1.06378 128.0 +1.6328567 -2.8769162 -1.0640969 128.0 +1.6147103 -2.8860533 -1.06378 128.0 +1.6001781 -2.90172 -1.0659988 128.0 +1.5895913 -2.9248161 -1.0710703 128.0 +1.5751981 -2.9412026 -1.0736061 128.0 +1.5602206 -2.9566839 -1.0758249 128.0 +1.5468627 -2.9754577 -1.0793116 128.0 +1.5307386 -2.9891136 -1.0808965 128.0 +1.5110873 -2.9959095 -1.0799456 128.0 +1.4888781 -2.9974806 -1.0770928 128.0 +1.4654564 -2.9963365 -1.0732892 128.0 +1.4458089 -3.0027084 -1.0723382 128.0 +1.4176059 -2.9909554 -1.0647309 128.0 +1.3827841 -2.964359 -1.0517349 128.0 +1.3859404 -3.0193312 -1.0688515 128.0 +1.3755879 -3.0459294 -1.075508 128.0 +1.3599539 -3.0612462 -1.0780437 128.0 +1.3403852 -3.0677948 -1.0774097 128.0 +1.3211617 -3.0750902 -1.0770928 128.0 +1.2989463 -3.0752759 -1.0742401 128.0 +1.2735044 -3.0674222 -1.0685345 128.0 +1.2550174 -3.0760565 -1.0688515 128.0 +1.2474154 -3.1118689 -1.0789946 128.0 +1.2178702 -3.0929909 -1.0694854 128.0 +1.200922 -3.1057127 -1.0713873 128.0 +1.1835268 -3.1174562 -1.0729722 128.0 +1.1686828 -3.1362123 -1.0770928 128.0 +1.14844 -3.1406522 -1.0761418 128.0 +1.1253034 -3.1369274 -1.0723382 128.0 +1.1123319 -3.1616659 -1.0786777 128.0 +1.0891987 -3.1576729 -1.074874 128.0 +1.0773998 -3.1867576 -1.0827984 128.0 +1.0625997 -3.2077129 -1.0878699 128.0 +1.0431902 -3.2150748 -1.0881869 128.0 +1.0277525 -3.2349732 -1.0929415 128.0 +1.0233788 -3.2910278 -1.110375 128.0 +0.98935789 -3.2518785 -1.0945264 128.0 +0.96830374 -3.2542517 -1.0932585 128.0 +0.94354755 -3.2437401 -1.0875529 128.0 +0.93218744 -3.2795732 -1.098013 128.0 +0.91204679 -3.2852314 -1.098013 128.0 +0.89038259 -3.2852736 -1.0961112 128.0 +0.85419726 -3.2301605 -1.075191 128.0 +0.82251364 -3.1894228 -1.0593423 128.0 +0.77586454 -3.0867939 -1.0222564 128.0 +0.74765742 -3.0537271 -1.0092604 128.0 +0.74364662 -3.120069 -1.0304977 128.0 +0.72727472 -3.136584 -1.0346184 128.0 +0.71657079 -3.1789203 -1.0476142 128.0 +0.71126115 -3.2481093 -1.0698024 128.0 +0.69289619 -3.2598338 -1.0723382 128.0 +0.67633009 -3.2807438 -1.0780437 128.0 +0.6556294 -3.2820418 -1.0770928 128.0 +0.63674015 -3.292521 -1.0793116 128.0 +0.61408299 -3.2833145 -1.074874 128.0 +0.59780669 -3.3084865 -1.0821644 128.0 +0.57667983 -3.3074207 -1.0805795 128.0 +0.55448759 -3.2996733 -1.0767758 128.0 +0.53513998 -3.3086309 -1.0786777 128.0 +0.52022302 -3.3465271 -1.0904057 128.0 +0.50079972 -3.3571606 -1.0929415 128.0 +0.47898254 -3.3517203 -1.0900887 128.0 +0.45622286 -3.3386216 -1.0847002 128.0 +0.43671092 -3.3488817 -1.0872359 128.0 +0.41755813 -3.3627925 -1.0910397 128.0 +0.39713895 -3.3671751 -1.0916736 128.0 +0.37868476 -3.3893423 -1.09833 128.0 +0.36186653 -3.4293294 -1.111009 128.0 +0.34288239 -3.4522483 -1.1179824 128.0 +0.32098889 -3.4467325 -1.1154466 128.0 +0.3002454 -3.4533615 -1.1170315 128.0 +0.27759758 -3.4371772 -1.111009 128.0 +0.255725 -3.428412 -1.1075222 128.0 +0.23487839 -3.4327552 -1.1084732 128.0 +0.21363385 -3.4312921 -1.1075222 128.0 +0.19278876 -3.436326 -1.1087902 128.0 +0.17151053 -3.4336553 -1.1075222 128.0 +0.15043879 -3.434643 -1.1075222 128.0 +0.12875281 -3.4193895 -1.1021338 128.0 +0.10689992 -3.3926244 -1.0929415 128.0 +0.085767001 -3.3808906 -1.0888208 128.0 +0.064653687 -3.3623881 -1.0824814 128.0 +0.04392102 -3.3551347 -1.0799456 128.0 +0.023367019 -3.3600831 -1.0815305 128.0 +0.0027592839 -3.3705962 -1.0850172 128.0 +-0.017991373 -3.3838274 -1.0894548 128.0 +-0.038936544 -3.3997757 -1.0948434 128.0 +-0.060028393 -3.4127488 -1.099281 128.0 +-0.08121375 -3.4227462 -1.1027677 128.0 +-0.10362398 -3.4695842 -1.1186163 128.0 +-0.1237203 -3.4357092 -1.1075222 128.0 +-0.14603397 -3.4642608 -1.1173484 128.0 +-0.16765271 -3.4708784 -1.1198843 128.0 +-0.19064467 -3.5010364 -1.1303444 128.0 +-0.20874408 -3.4439454 -1.111643 128.0 +-0.22961949 -3.4388144 -1.110375 128.0 +-0.24933764 -3.418422 -1.1040356 128.0 +-0.27015862 -3.4149368 -1.1034017 128.0 +-0.29110721 -3.4132149 -1.1034017 128.0 +-0.31601387 -3.4548116 -1.1179824 128.0 +-0.33720624 -3.4528074 -1.1179824 128.0 +-0.36073473 -3.4733143 -1.1255897 128.0 +-0.38774079 -3.522887 -1.1430234 128.0 +-0.40967783 -3.5232677 -1.1439742 128.0 +-0.43232542 -3.5291605 -1.146827 128.0 +-0.45215696 -3.512331 -1.1420724 128.0 +-0.47686869 -3.5329885 -1.1499968 128.0 +-0.72594917 -5.1415429 -1.6939235 128.0 +-0.75568569 -5.124794 -1.6898028 128.0 +-0.78942126 -5.1350598 -1.6948744 128.0 +-0.8176192 -5.1095157 -1.6879009 128.0 +-0.84786648 -5.0978532 -1.6856822 128.0 +-0.87767893 -5.0841436 -1.6828294 128.0 +-0.90935916 -5.0814633 -1.6837803 128.0 +-0.94034857 -5.0748553 -1.6834633 128.0 +-0.97057736 -5.0643325 -1.6818784 128.0 +-1.0018173 -5.0592122 -1.6821954 128.0 +-1.0336007 -5.0566869 -1.6834633 128.0 +-1.0648041 -5.0511775 -1.6837803 128.0 +-1.0953749 -5.0426955 -1.6831464 128.0 +-1.1300206 -5.0525398 -1.6888518 128.0 +-1.1544102 -5.0168576 -1.6790257 128.0 +-1.1838616 -5.0041423 -1.6771239 128.0 +-1.2136484 -4.9930973 -1.675856 128.0 +-1.2465585 -4.9947591 -1.6790257 128.0 +-1.2715368 -4.9649649 -1.6714183 128.0 +-1.3084806 -4.9818377 -1.6799766 128.0 +-1.3360661 -4.9627252 -1.676173 128.0 +-1.3662397 -4.9535193 -1.675856 128.0 +-1.3899077 -4.9213114 -1.6676147 128.0 +-1.1633577 -4.0243168 -1.3585653 128.0 +-1.1880286 -4.0171027 -1.3585653 128.0 +-1.4497919 -4.7941222 -1.6324306 128.0 +-1.4920622 -4.8268194 -1.6470114 128.0 +-1.5342166 -4.8573675 -1.6609582 128.0 +-1.5674856 -4.8586941 -1.6647619 128.0 +-1.5856986 -4.8138518 -1.6523999 128.0 +-1.6197388 -4.8175168 -1.6571546 128.0 +-1.6504987 -4.8110762 -1.6584224 128.0 +-1.6809275 -4.803544 -1.6593733 128.0 +-1.7119633 -4.797606 -1.6609582 128.0 +-1.7416928 -4.7879028 -1.6612751 128.0 +-1.7726861 -4.7815723 -1.66286 128.0 +-1.8060127 -4.7812524 -1.6666638 128.0 +-1.837359 -4.7753921 -1.6685655 128.0 +-1.8707768 -4.7746258 -1.6723692 128.0 +-1.8951193 -4.7507234 -1.6679317 128.0 +-1.2121755 -2.9849517 -1.0352523 128.0 +-1.2308301 -2.9783344 -1.0355693 128.0 +-1.2505516 -2.9742234 -1.0368372 128.0 +-2.02195 -4.7280741 -1.6771239 128.0 +-2.0520575 -4.7181878 -1.6780747 128.0 +-2.103981 -4.7575536 -1.6970932 128.0 +-2.1339109 -4.7462845 -1.6977271 128.0 +-2.1598401 -4.7262006 -1.6951914 128.0 +-1.5752703 -3.3915586 -1.2083199 128.0 +-1.5915991 -3.3723938 -1.2048331 128.0 +-1.6065223 -3.3505907 -1.2003956 128.0 +-1.6266357 -3.3398175 -1.2000786 128.0 +-1.6458366 -3.3272233 -1.1991277 128.0 +-1.6645185 -3.3136718 -1.1978598 128.0 +-1.683527 -3.3008614 -1.1969088 128.0 +-1.7168291 -3.3157375 -1.206418 128.0 +-1.749053 -3.3278098 -1.2149763 128.0 +-1.7779189 -3.3329155 -1.2209989 128.0 +-2.2443492 -4.1460438 -1.5341687 128.0 +-2.5098865 -4.5694709 -1.7008969 128.0 +-2.525413 -4.5316148 -1.6923386 128.0 +-2.5396364 -4.4920897 -1.6831464 128.0 +-2.5728128 -4.4862957 -1.6869501 128.0 +-2.6107814 -4.4884615 -1.6939235 128.0 +-2.6320093 -4.4617376 -1.6898028 128.0 +-2.6588495 -4.4446902 -1.6894858 128.0 +-2.6895142 -4.4339685 -1.6917046 128.0 +-2.7295864 -4.4383883 -1.6999459 128.0 +-2.7467337 -4.4054594 -1.6936065 128.0 +-2.7691536 -4.3813071 -1.6907537 128.0 +-2.7929151 -4.3594413 -1.6888518 128.0 +-2.8046343 -4.3191533 -1.6796596 128.0 +-2.8284767 -4.2979016 -1.6780747 128.0 +-2.8584781 -4.2859893 -1.6802936 128.0 +-2.8985291 -4.2888012 -1.6885349 128.0 +-2.9194317 -4.2631097 -1.6853652 128.0 +-2.9217477 -4.2108283 -1.6714183 128.0 +-2.9606192 -4.2114439 -1.6790257 128.0 +-2.9748514 -4.1769743 -1.6723692 128.0 +-2.9937663 -4.1494122 -1.6685655 128.0 +-3.0197299 -4.1317306 -1.6688825 128.0 +-3.0427678 -4.1100745 -1.6676147 128.0 +-3.0576887 -4.0776682 -1.6619091 128.0 +-2.2561238 -2.9703884 -1.2051501 128.0 +-2.2748854 -2.9572411 -1.2054671 128.0 +-2.298816 -2.9507093 -1.2086369 128.0 +-3.14979 -3.9924648 -1.6581055 128.0 +-3.1724522 -3.9708397 -1.6571546 128.0 +-3.2086868 -3.966047 -1.663494 128.0 +-3.2329617 -3.9462841 -1.663494 128.0 +-3.261353 -3.9314828 -1.6657128 128.0 +-3.2835848 -3.9092188 -1.6647619 128.0 +-3.2903066 -3.8687668 -1.6558867 128.0 +-3.3152206 -3.8499424 -1.6565206 128.0 +-3.336288 -3.8266683 -1.6552527 128.0 +-3.372257 -3.8203471 -1.6615921 128.0 +-3.381732 -3.7840245 -1.6546187 128.0 +-3.4067955 -3.7653131 -1.6555697 128.0 +-3.4215076 -3.7352462 -1.651449 128.0 +-3.4462967 -3.7162683 -1.6523999 128.0 +-3.4709818 -3.6971269 -1.6533508 128.0 +-3.4981749 -3.6805723 -1.6555697 128.0 +-3.5318708 -3.6706579 -1.6609582 128.0 +-3.5324903 -3.6264961 -1.650498 128.0 +-3.5553412 -3.6054282 -1.650815 128.0 +-3.5539463 -3.5600505 -1.6397209 128.0 +-3.5844872 -3.54685 -1.6438416 128.0 +-3.6082172 -3.5267782 -1.6447926 128.0 +-3.6366119 -3.5111604 -1.6479623 128.0 +-3.6601462 -3.4907444 -1.6489131 128.0 +-3.6828768 -3.4695213 -1.6495471 128.0 +-3.6992362 -3.4423351 -1.6473284 128.0 +-3.7195902 -3.4189303 -1.6470114 128.0 +-3.7426047 -3.3979557 -1.6479623 128.0 +-3.7633836 -3.3749275 -1.6479623 128.0 +-3.7847309 -3.3524013 -1.6482793 128.0 +-3.792382 -3.3178735 -1.6425737 128.0 +-3.8169742 -3.2982624 -1.6444756 128.0 +-3.87393 -3.3061831 -1.6606412 128.0 +-3.8752899 -3.2664568 -1.6523999 128.0 +-3.8777666 -3.2280524 -1.6447926 128.0 +-3.9150825 -3.2186551 -1.6523999 128.0 +-3.9251866 -3.1867998 -1.6482793 128.0 +-3.9520657 -3.1685886 -1.651449 128.0 +-3.973664 -3.1460459 -1.6523999 128.0 +-3.9928932 -3.1216047 -1.6523999 128.0 +-4.0172267 -3.1011033 -1.6546187 128.0 +-4.0437217 -3.0821457 -1.6577885 128.0 +-4.0663462 -3.0601275 -1.6593733 128.0 +-4.0896139 -3.0385134 -1.6612751 128.0 +-4.1051221 -3.0111189 -1.6600072 128.0 +-4.1373472 -2.9958873 -1.6657128 128.0 +-4.1564231 -2.9709961 -1.6660298 128.0 +-4.1830988 -2.9514523 -1.6695164 128.0 +-4.2081342 -2.9306083 -1.6723692 128.0 +-4.2260365 -2.9047325 -1.6723692 128.0 +-4.2563376 -2.8872671 -1.6774409 128.0 +-4.2913117 -2.872705 -1.6844143 128.0 +-4.3049011 -2.8437059 -1.6828294 128.0 +-4.3246522 -2.8187916 -1.6837803 128.0 +-4.3370805 -2.7891247 -1.6818784 128.0 +-4.369328 -2.7721155 -1.6879009 128.0 +-4.398314 -2.7528021 -1.6926556 128.0 +-4.4264197 -2.732739 -1.6970932 128.0 +-4.4479642 -2.7084875 -1.698995 128.0 +-4.4783211 -2.6894464 -1.7043836 128.0 +-4.4931068 -2.6609504 -1.7037497 128.0 +-4.5199962 -2.6395497 -1.7078702 128.0 +-4.546792 -2.6179187 -1.711991 128.0 +-4.5602951 -2.5885663 -1.71104 128.0 +-4.5909901 -2.5688734 -1.7167455 128.0 +-4.6124792 -2.5438619 -1.7189643 128.0 +-4.6413331 -2.5227604 -1.724036 128.0 +-4.6692657 -2.5009522 -1.7287905 128.0 +-4.6971049 -2.4788961 -1.7335452 128.0 +-4.729897 -2.4592178 -1.7402016 128.0 +-4.7474298 -2.4314466 -1.7411525 128.0 +-4.7791948 -2.4108155 -1.747492 128.0 +-4.8100352 -2.3894639 -1.7535145 128.0 +-4.8152351 -2.3553202 -1.7500278 128.0 +-4.8424134 -2.3319037 -1.7547824 128.0 +-4.8677716 -2.3074293 -1.758903 128.0 +-4.8921518 -2.2823303 -1.7627068 128.0 +-4.9207163 -2.2589977 -1.7680953 128.0 +-4.9223843 -2.2232957 -1.7636577 128.0 +-4.9515343 -2.1999836 -1.7693632 128.0 +-4.9293084 -2.1539869 -1.7563672 128.0 +-4.9415607 -2.1233263 -1.7560502 128.0 +-4.9256659 -2.0807838 -1.7455902 128.0 +-4.9567347 -2.0581605 -1.7522466 128.0 +-4.9964914 -2.0388179 -1.7620728 128.0 +-5.0326753 -2.0176525 -1.7706311 128.0 +-5.090848 -2.0048091 -1.7871137 128.0 +-5.1499352 -1.9916694 -1.8039134 128.0 +-5.198411 -1.9738386 -1.8169092 128.0 +-5.3010712 -1.9756957 -1.8492405 128.0 +-5.3879137 -1.9705013 -1.8758663 128.0 +-5.4579282 -1.9582276 -1.8964696 128.0 +-5.5288873 -1.9454832 -1.9173899 128.0 +-5.5882378 -1.9279189 -1.9341894 128.0 +-5.6493764 -1.9103067 -1.951623 128.0 +-5.6870999 -1.884259 -1.9608152 128.0 +-5.7075753 -1.8522563 -1.963985 128.0 +-5.733295 -1.8217969 -1.9690566 128.0 +-5.7416487 -1.7857386 -1.9681057 128.0 +-5.7661076 -1.7546173 -1.9728602 128.0 +-5.7685843 -1.7167689 -1.9700074 128.0 +-5.7753668 -1.680281 -1.9687396 128.0 +-5.7873926 -1.6453313 -1.9693735 128.0 +-5.797379 -1.6097896 -1.9693735 128.0 +-5.7961631 -1.5712087 -1.9655699 128.0 +-5.8038607 -1.5351294 -1.9649359 128.0 +-5.8122525 -1.4992517 -1.9646189 128.0 +-5.8231821 -1.4640229 -1.9652529 128.0 +-5.8320556 -1.4282649 -1.9652529 128.0 +-5.8305612 -1.3900331 -1.9617661 128.0 +-5.8435998 -1.355303 -1.963351 128.0 +-5.8712349 -1.3238039 -1.9700074 128.0 +-5.8699827 -1.2857239 -1.9668378 128.0 +-5.8851829 -1.2512605 -1.9693735 128.0 +-5.8918204 -1.2149346 -1.9690566 128.0 +-5.8880038 -1.1765294 -1.9652529 128.0 +-5.8904562 -1.1394781 -1.963668 128.0 +-5.9066596 -1.1050583 -1.9668378 128.0 +-5.9114623 -1.0684574 -1.9662038 128.0 +-5.9263158 -1.0336324 -1.9690566 128.0 +-5.9428349 -0.99897993 -1.9725432 128.0 +-5.9441714 -0.96173888 -1.9709584 128.0 +-5.9658923 -0.92772657 -1.976347 128.0 +-5.9771008 -0.89194334 -1.9782488 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-5.6692877 1.0514209 -1.9550045 128.0 +-5.6553059 1.0847617 -1.9523866 128.0 +-5.6457624 1.1188899 -1.951405 128.0 +-5.6369395 1.1531315 -1.9507506 128.0 +-5.6269841 1.1871116 -1.9497689 128.0 +-5.6149774 1.2206112 -1.9481329 128.0 +-5.6000056 1.2533885 -1.945515 128.0 +-5.5949721 1.2883626 -1.9464967 128.0 +-5.5933976 1.3241936 -1.9487872 128.0 +-5.5870037 1.3589361 -1.9494417 128.0 +-5.5739765 1.392046 -1.9478056 128.0 +-5.5616689 1.425282 -1.9464967 128.0 +-5.5336275 1.4543331 -1.9396251 128.0 +-5.5136514 1.4853076 -1.9356985 128.0 +-5.52174 1.5238907 -1.9419156 128.0 +-5.5013742 1.5546569 -1.9379891 128.0 +-5.5071621 1.5928499 -1.9435518 128.0 +-5.4827881 1.6223184 -1.9383162 128.0 +-5.4899139 1.6611328 -1.9445335 128.0 +-5.482326 1.6956252 -1.945515 128.0 +-5.4556012 1.7241035 -1.9396251 128.0 +-5.4458189 1.7578365 -1.9399524 128.0 +-5.4259567 1.7882587 -1.9366802 128.0 +-5.4193597 1.8230253 -1.9383162 128.0 +-5.4375639 1.8663731 -1.9491144 128.0 +-5.4215508 1.89814 -1.9474784 128.0 +-5.3911147 1.9246944 -1.9406068 128.0 +-5.3667731 1.9532106 -1.9360257 128.0 +-5.3422847 1.9815006 -1.9314448 128.0 +-5.334445 2.015914 -1.9330808 128.0 +-5.3281479 2.0509851 -1.9353713 128.0 +-5.3110647 2.0819142 -1.9337353 128.0 +-5.2955575 2.1134117 -1.9327536 128.0 +-5.2693591 2.1405277 -1.9278454 128.0 +-5.2526331 2.1713748 -1.9265364 128.0 +-5.2557592 2.2105277 -1.9327536 128.0 +-5.2551274 2.2483127 -1.9376619 128.0 +-5.2507634 2.2846644 -1.9412613 128.0 +-5.2426949 2.3195169 -1.9435518 128.0 +-5.2145762 2.345437 -1.9383162 128.0 +-5.2009463 2.3777821 -1.9386435 128.0 +-5.1734052 2.4036746 -1.9337353 128.0 +-5.1602678 2.4361799 -1.9343897 128.0 +-5.1409631 2.4657528 -1.9327536 128.0 +-5.1384778 2.5034614 -1.9376619 128.0 +-5.117939 2.5324278 -1.9356985 128.0 +-5.102304 2.5637834 -1.9356985 128.0 +-5.0789022 2.5911758 -1.9327536 128.0 +-5.0620685 2.6218557 -1.9324263 128.0 +-5.0425406 2.6511071 -1.9311175 128.0 +-5.0261784 2.6819975 -1.9311175 128.0 +-5.007966 2.7118869 -1.9304631 128.0 +-4.9895754 2.7416537 -1.9298086 128.0 +-4.9701834 2.7708366 -1.9288269 128.0 +-4.9530883 2.801281 -1.9288269 128.0 +-4.9317088 2.8292677 -1.9271909 128.0 +-4.9183393 2.8618519 -1.9288269 128.0 +-4.8966184 2.8895745 -1.9271909 128.0 +-4.8804173 2.9205358 -1.9278454 128.0 +-4.8615975 2.9499362 -1.9275181 128.0 +-4.8482342 2.9826827 -1.9294814 128.0 +-4.8290396 3.0118747 -1.9291542 128.0 +-4.8128643 3.0429637 -1.9301358 128.0 +-4.7917156 3.0709076 -1.9291542 128.0 +-4.7791214 3.1043704 -1.9317719 128.0 +-4.7607727 3.134156 -1.9320991 128.0 +-4.7406664 3.1627839 -1.9317719 128.0 +-4.7188225 3.1902242 -1.9307903 128.0 +-4.6944818 3.2159133 -1.9288269 128.0 +-4.6777658 3.2468133 -1.9301358 128.0 +-4.655437 3.2738233 -1.9291542 128.0 +-4.6337228 3.30123 -1.9284997 128.0 +-4.609549 3.326834 -1.9268637 128.0 +-4.5859981 3.3528235 -1.9255548 128.0 +-4.56458 3.380337 -1.9252275 128.0 +-4.5384622 3.4043109 -1.922937 128.0 +-4.5137267 3.4292355 -1.921301 128.0 +-4.4993396 3.4620543 -1.924246 128.0 +-4.4802475 3.4913394 -1.9252275 128.0 +-4.4572577 3.5175929 -1.9245732 128.0 +-4.4311619 3.5413353 -1.9226098 128.0 +-4.4174275 3.5749984 -1.9262092 128.0 +-4.3881011 3.596045 -1.922937 128.0 +-4.3637724 3.6210914 -1.9219553 128.0 +-4.3429184 3.6490149 -1.9226098 128.0 +-4.3240447 3.6786561 -1.924246 128.0 +-4.2978125 3.7020345 -1.9226098 128.0 +-4.2821364 3.7345481 -1.925882 128.0 +-4.2591414 3.7607524 -1.925882 128.0 +-4.2416205 3.7918546 -1.9284997 128.0 +-4.2161727 3.8159065 -1.9275181 128.0 +-4.1947694 3.8436203 -1.9284997 128.0 +-4.1717987 3.8699293 -1.9288269 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-4.1093888 3.9552388 -1.933408 128.0 +-4.0775995 3.9731236 -1.9298086 128.0 +-0 0 -0 128.0 +-4.0298734 4.0241985 -1.9304631 128.0 +-3.9984612 4.0421305 -1.9271909 128.0 +-3.9768853 4.0699682 -1.9288269 128.0 +-3.9439642 4.086133 -1.9249003 128.0 +-3.918818 4.1102557 -1.9249003 128.0 +-3.8876946 4.1280313 -1.9219553 128.0 +-3.8571446 4.1462722 -1.9193376 128.0 +-3.8277955 4.1656857 -1.9173744 128.0 +-3.7977188 4.184195 -1.9150838 128.0 +-3.7738655 4.2095299 -1.9160655 128.0 +-3.753602 4.238975 -1.9190104 128.0 +-3.7293873 4.264061 -1.9199921 128.0 +-3.6994479 4.2825727 -1.9180288 128.0 +-3.6712613 4.3030343 -1.9170471 128.0 +-3.6514854 4.3334298 -1.9206465 128.0 +-3.619993 4.3499417 -1.9180288 128.0 +-3.6064305 4.388135 -1.9252275 128.0 +-3.569912 4.3984399 -1.9199921 128.0 +-3.5487647 4.4276366 -1.9232643 128.0 +-3.51684 4.4433994 -1.9206465 128.0 +-3.4866011 4.4611712 -1.9190104 128.0 +-3.4591622 4.4824805 -1.9190104 128.0 +-3.4344559 4.50738 -1.9206465 128.0 +-3.4050307 4.526103 -1.9196649 128.0 +-3.3805745 4.5514627 -1.9216281 128.0 +-3.3531423 4.5728822 -1.9219553 128.0 +-3.3200352 4.5864806 -1.9190104 128.0 +-3.285789 4.5983071 -1.915411 128.0 +-3.2547901 4.6145201 -1.913775 128.0 +-3.2258749 4.6336288 -1.9134477 128.0 +-3.1984527 4.6548929 -1.9141022 128.0 +-3.1687701 4.6728663 -1.9134477 128.0 +-3.1437161 4.6977196 -1.9157382 128.0 +-3.1158733 4.7184978 -1.9163927 128.0 +-3.0868626 4.7375278 -1.9163927 128.0 +-3.0572245 4.7555842 -1.9160655 128.0 +-3.0239398 4.7678685 -1.9134477 128.0 +-2.9956298 4.7879357 -1.9141022 128.0 +-2.9642107 4.8030095 -1.9127933 128.0 +-2.9351754 4.8219147 -1.9131205 128.0 +-2.906992 4.8422642 -1.9141022 128.0 +-2.8767445 4.8591971 -1.913775 128.0 +-2.8473511 4.877573 -1.9141022 128.0 +-2.8216102 4.9023237 -1.9170471 128.0 +-2.7905447 4.917901 -1.9163927 128.0 +-2.758472 4.9316316 -1.9150838 128.0 +-2.7308965 4.9534302 -1.9170471 128.0 +-2.7004514 4.9700933 -1.9170471 128.0 +-2.6725798 4.9915681 -1.9190104 128.0 +-2.6392572 5.0028577 -1.9170471 128.0 +-2.6080751 5.0181193 -1.9167199 128.0 +-2.5759439 5.0315037 -1.9157382 128.0 +-2.5441723 5.045527 -1.9150838 128.0 +-2.5131655 5.0610428 -1.9150838 128.0 +-2.4783301 5.068727 -1.9121388 128.0 +-2.4459534 5.081284 -1.9111573 128.0 +-2.4123025 5.0910721 -1.9091939 128.0 +-2.3810189 5.1057782 -1.9091939 128.0 +-2.3476758 5.1159968 -1.9075578 128.0 +-2.317795 5.1337509 -1.9088666 128.0 +-2.2870181 5.1496034 -1.9095211 128.0 +-2.2587802 5.1713338 -1.912466 128.0 +-2.2229068 5.1755443 -1.9088666 128.0 +-2.1925781 5.1925688 -1.9101756 128.0 +-2.161762 5.2085428 -1.9111573 128.0 +-2.1265521 5.2138338 -1.9082122 128.0 +-2.0962772 5.2311702 -1.9098483 128.0 +-2.058259 5.2289853 -1.9042857 128.0 +-2.0230711 5.233583 -1.9013406 128.0 +-1.9832128 5.2255764 -1.8938147 128.0 +-1.9537494 5.2447314 -1.8964324 128.0 +-1.9302862 5.2805853 -1.9052672 128.0 +-1.8988051 5.2949986 -1.9062489 128.0 +-1.8681599 5.3118987 -1.9082122 128.0 +-1.8379943 5.3304086 -1.91083 128.0 +-1.8076718 5.3487482 -1.9134477 128.0 +-1.7700686 5.3453856 -1.9082122 128.0 +-1.7372366 5.3561459 -1.9082122 128.0 +-1.7006235 5.3549953 -1.9039584 128.0 +-1.674461 5.3869877 -1.9118116 128.0 +-1.6400018 5.3926396 -1.9101756 128.0 +-1.6068823 5.4026012 -1.9101756 128.0 +-1.5800297 5.4341373 -1.9180288 128.0 +-1.5409791 5.4237313 -1.91083 128.0 +-1.5071658 5.4312634 -1.9101756 128.0 +-1.4720836 5.4340239 -1.9078851 128.0 +-1.436783 5.4356451 -1.9052672 128.0 +-1.3986897 5.4260573 -1.8987229 128.0 +-1.3794037 5.4904447 -1.9186832 128.0 +-1.3459134 5.499723 -1.9190104 128.0 +-1.31805 5.5326982 -1.9278454 128.0 +-1.2744852 5.4992547 -1.9131205 128.0 +-1.246321 5.5318623 -1.9219553 128.0 +-1.2117492 5.5366359 -1.9209738 128.0 +-1.1775579 5.5430422 -1.9206465 128.0 +-1.1418099 5.5418334 -1.9177016 128.0 +-1.1063058 5.5413218 -1.9150838 128.0 +-1.0706719 5.5396552 -1.9121388 128.0 +-1.0335394 5.5294003 -1.9062489 128.0 +-1.0017726 5.5477271 -1.9105028 128.0 +-0.96965772 5.5649409 -1.9144294 128.0 +-0.93408692 5.5623984 -1.9114844 128.0 +-0.9002403 5.569891 -1.9121388 128.0 +-0.86213607 5.5500975 -1.903304 128.0 +-0.82778686 5.5534139 -1.9026495 128.0 +-0.79796445 5.5883241 -1.9131205 128.0 +-0.75753331 5.5481734 -1.8974141 128.0 +-0.72567022 5.5695839 -1.903304 128.0 +-0.68811411 5.5467362 -1.8938147 128.0 +-0.65428776 5.5527306 -1.8944691 128.0 +-0.618949 5.5453711 -1.8905425 128.0 +-0.58550477 5.5547032 -1.8925058 128.0 +-0.55271405 5.5713563 -1.8970869 128.0 +-0.51974094 5.5878153 -1.9016678 128.0 +-0.48821756 5.6229076 -1.9127933 128.0 +-0.45438877 5.6342745 -1.9157382 128.0 +-0.41896909 5.6256485 -1.9118116 128.0 +-0.38431448 5.6262279 -1.9111573 128.0 +-0.35031113 5.6369681 -1.9141022 128.0 +-0.3159799 5.6437287 -1.9157382 128.0 +-0.28111047 5.6408424 -1.9141022 128.0 +-0.24760193 5.6679506 -1.922937 128.0 +-0.21257259 5.6627531 -1.9206465 128.0 +-0.17752798 5.6545062 -1.9173744 128.0 +-0.14294757 5.660212 -1.9190104 128.0 +-0.10807152 5.6534243 -1.9163927 128.0 +-0.073392801 5.6549258 -1.9167199 128.0 +-0.038724806 5.6599946 -1.9183559 128.0 +-0.0039859931 5.6421714 -1.9121388 128.0 +0.0306125 5.63831 -1.91083 128.0 +0.065052241 5.6247878 -1.9062489 128.0 +0.099716336 5.6327858 -1.9091939 128.0 +0.13439016 5.6367912 -1.91083 128.0 +0.16943054 5.6509728 -1.9160655 128.0 +0.2037923 5.6413279 -1.9131205 128.0 +0.2386436 5.6456361 -1.9150838 128.0 +0.27318829 5.6421776 -1.9144294 128.0 +0.30847478 5.6526613 -1.9186832 128.0 +0.34223351 5.635571 -1.9134477 128.0 +0.37674302 5.632422 -1.9131205 128.0 +0.41157198 5.6337743 -1.9144294 128.0 +0.44620726 5.6320848 -1.9147565 128.0 +0.48003125 5.6207671 -1.9118116 128.0 +0.51675642 5.6421819 -1.9203193 128.0 +0.55044496 5.6295004 -1.9170471 128.0 +0.58448696 5.6213179 -1.915411 128.0 +0.61948615 5.6223216 -1.9170471 128.0 +0.65331572 5.6127834 -1.9150838 128.0 +0.68751246 5.6067929 -1.9144294 128.0 +0.72153926 5.5996575 -1.9134477 128.0 +0.75487089 5.5876336 -1.91083 128.0 +0.78609556 5.561377 -1.903304 128.0 +0.81965196 5.5527101 -1.9019951 128.0 +0.8532756 5.5447745 -1.9010135 128.0 +0.88967592 5.5543628 -1.9062489 128.0 +0.92498302 5.5562558 -1.9088666 128.0 +0.96260202 5.5709605 -1.9160655 128.0 +0.99926853 5.5789008 -1.9209738 128.0 +1.0371037 5.592175 -1.9278454 128.0 +1.0665858 5.5606503 -1.9190104 128.0 +1.1019725 5.5604892 -1.921301 128.0 +1.1400512 5.5730634 -1.9281725 128.0 +1.1693443 5.5428495 -1.9199921 128.0 +1.2013234 5.5263367 -1.9167199 128.0 +1.2327309 5.5077963 -1.9127933 128.0 +1.2705352 5.5176244 -1.9190104 128.0 +1.2965232 5.4766231 -1.9072306 128.0 +1.3285382 5.4621377 -1.90494 128.0 +1.3597367 5.4447155 -1.9016678 128.0 +1.3942931 5.4408464 -1.903304 128.0 +1.4298147 5.4404135 -1.9062489 128.0 +1.4616936 5.4260635 -1.9042857 128.0 +1.4967208 5.4233689 -1.9065762 128.0 +1.5271411 5.4040809 -1.9029768 128.0 +1.562373 5.4018703 -1.9055945 128.0 +1.5946839 5.3894639 -1.9046128 128.0 +1.6279969 5.3804817 -1.90494 128.0 +1.6604215 5.3685861 -1.9042857 128.0 +1.6916217 5.352891 -1.9023223 128.0 +1.7235632 5.3397131 -1.9013406 128.0 +1.7598462 5.3398056 -1.9052672 128.0 +1.7865483 5.3109956 -1.8987229 128.0 +1.8187953 5.2990398 -1.8983957 128.0 +1.8519002 5.2895637 -1.8990501 128.0 +1.8798709 5.2656431 -1.8944691 128.0 +1.9166719 5.2664399 -1.8990501 128.0 +1.9463197 5.2474933 -1.8964324 128.0 +1.9808207 5.2416391 -1.8987229 128.0 +2.0115869 5.2258592 -1.8974141 128.0 +2.0425792 5.2107787 -1.8964324 128.0 +2.076616 5.203413 -1.8983957 128.0 +2.103523 5.1783175 -1.8938147 128.0 +2.1399524 5.1766648 -1.8980684 128.0 +2.1720421 5.1643076 -1.8983957 128.0 +2.2033169 5.1500144 -1.8980684 128.0 +2.2363842 5.1398635 -1.8993773 128.0 +2.269027 5.1286368 -1.900359 128.0 +2.3016164 5.1172032 -1.9013406 128.0 +2.3333647 5.1038437 -1.9016678 128.0 +2.369019 5.098856 -1.9052672 128.0 +2.4014714 5.0867872 -1.9062489 128.0 +2.4326379 5.0719562 -1.9062489 128.0 +2.4612288 5.0518379 -1.9042857 128.0 +2.4925992 5.037488 -1.9046128 128.0 +2.5234618 5.022099 -1.9046128 128.0 +2.5512221 5.0006289 -1.9023223 128.0 +2.5805531 4.9823642 -1.9013406 128.0 +2.6084363 4.9614186 -1.8993773 128.0 +2.6388299 4.9453201 -1.8993773 128.0 +2.6673236 4.9257121 -1.8980684 128.0 +2.6979523 4.9100809 -1.8983957 128.0 +2.7303305 4.8975606 -1.9000318 128.0 +2.7626567 4.8848271 -1.9016678 128.0 +2.7921071 4.8669643 -1.9013406 128.0 +2.8228686 4.8513741 -1.9019951 128.0 +2.8530633 4.8347759 -1.9023223 128.0 +2.878792 4.8106928 -1.8997046 128.0 +2.9121785 4.7994003 -1.9023223 128.0 +2.9420676 4.7822456 -1.9026495 128.0 +2.9638519 4.7520785 -1.8977413 128.0 +3.0060883 4.7545667 -1.9062489 128.0 +3.0408154 4.7447824 -1.9098483 128.0 +3.067812 4.7228656 -1.9085394 128.0 +3.0894566 4.6929045 -1.9039584 128.0 +3.1234396 4.6817193 -1.9072306 128.0 +3.1499896 4.6593351 -1.9059217 128.0 +3.1843956 4.6484938 -1.9095211 128.0 +3.2026179 4.61412 -1.903304 128.0 +3.227607 4.589745 -1.9013406 128.0 +3.2502239 4.5621595 -1.8980684 128.0 +3.2787087 4.5428967 -1.8983957 128.0 +3.301501 4.5158291 -1.8954507 128.0 +3.3347726 4.5030789 -1.8987229 128.0 +3.368012 4.4900904 -1.9019951 128.0 +3.3972147 4.4715972 -1.9029768 128.0 +3.4291992 4.4566584 -1.9055945 128.0 +3.4570611 4.4362788 -1.9059217 128.0 +3.4865587 4.4179497 -1.9072306 128.0 +3.5165515 4.4001637 -1.9088666 128.0 +3.542295 4.3770347 -1.9082122 128.0 +3.5618961 4.3464479 -1.9042857 128.0 +3.5945342 4.3317819 -1.9075578 128.0 +3.6167896 4.3045812 -1.9052672 128.0 +3.6406841 4.2794294 -1.9039584 128.0 +3.6705747 4.2613049 -1.9059217 128.0 +3.69541 4.2372785 -1.9052672 128.0 +3.7238424 4.2173567 -1.9065762 128.0 +3.7395706 4.1831589 -1.9013406 128.0 +3.7677045 4.1629362 -1.9026495 128.0 +0 0 -0 128.0 +3.8024368 4.099071 -1.8944691 128.0 +3.8326929 4.0811725 -1.8970869 128.0 +3.8544061 4.0541549 -1.8954507 128.0 +3.877243 4.0283866 -1.8944691 128.0 +3.9045262 4.0072269 -1.8957779 128.0 +3.9363415 3.9905922 -1.8993773 128.0 +3.9627569 3.9683697 -1.900359 128.0 +4.0031581 3.9599259 -1.9082122 128.0 +4.0233245 3.9313266 -1.9062489 128.0 +4.0392103 3.8986928 -1.9023223 128.0 +4.0685287 3.8790505 -1.90494 128.0 +4.0674844 3.8306959 -1.8931602 128.0 +4.0839925 3.7992313 -1.889888 128.0 +4.139936 3.8041444 -1.9052672 128.0 +4.1485033 3.7653368 -1.8983957 128.0 +4.1623802 3.7316129 -1.8941419 128.0 +4.1816607 3.7028713 -1.8925058 128.0 +4.2277789 3.6976678 -1.903304 128.0 +4.261116 3.6809206 -1.9082122 128.0 +4.2879357 3.6583846 -1.9101756 128.0 +4.3117476 3.6332231 -1.91083 128.0 +4.3310537 3.6042809 -1.9095211 128.0 +4.3479767 3.5734394 -1.9072306 128.0 +4.3720226 3.5484796 -1.9082122 128.0 +4.3922381 3.5204048 -1.9075578 128.0 +4.4137564 3.4933884 -1.9075578 128.0 +4.4321299 3.4639132 -1.9062489 128.0 +4.4533005 3.4366531 -1.9062489 128.0 +4.4690413 3.4052556 -1.9039584 128.0 +4.4921174 3.3794737 -1.90494 128.0 +4.5120101 3.3512838 -1.9046128 128.0 +4.527153 3.3196251 -1.9023223 128.0 +4.5566235 3.2984316 -1.9062489 128.0 +4.5813904 3.273706 -1.9082122 128.0 +4.5975294 3.242811 -1.9065762 128.0 +4.6235456 3.218858 -1.9091939 128.0 +4.6471038 3.1931028 -1.91083 128.0 +4.6697373 3.1666493 -1.9121388 128.0 +4.6843672 3.1347845 -1.9101756 128.0 +4.6972046 3.1018183 -1.9075578 128.0 +4.7082305 3.0677814 -1.9042857 128.0 +4.7341199 3.043432 -1.9072306 128.0 +4.7503109 3.012809 -1.9062489 128.0 +4.7639003 2.9805987 -1.9042857 128.0 +4.773253 2.9458544 -1.9006863 128.0 +4.8041544 2.9243696 -1.9059217 128.0 +4.8228178 2.895323 -1.9062489 128.0 +4.8372397 2.8637514 -1.90494 128.0 +4.8628821 2.838779 -1.9082122 128.0 +4.8818469 2.80983 -1.9088666 128.0 +4.8998179 2.7802887 -1.9091939 128.0 +4.9143109 2.7487884 -1.9082122 128.0 +4.9360499 2.7213192 -1.9101756 128.0 +4.9534855 2.691432 -1.9105028 128.0 +4.9682403 2.6600955 -1.9098483 128.0 +4.9869761 2.6308832 -1.91083 128.0 +5.0063791 2.6019766 -1.9121388 128.0 +5.0239329 2.5720699 -1.9127933 128.0 +5.0429955 2.5428963 -1.9141022 128.0 +5.0635824 2.5144258 -1.9160655 128.0 +5.0763683 2.4820642 -1.9150838 128.0 +5.0966115 2.4533277 -1.9170471 128.0 +5.1081529 2.4203913 -1.9157382 128.0 +5.119482 2.3874061 -1.9144294 128.0 +5.1254454 2.3520091 -1.9111573 128.0 +5.1363349 2.3189611 -1.9098483 128.0 +5.1556492 2.2897017 -1.9118116 128.0 +5.1609416 2.2542436 -1.9085394 128.0 +5.1824908 2.2258887 -1.9114844 128.0 +5.2047572 2.1977217 -1.9147565 128.0 +5.2198896 2.1664686 -1.915411 128.0 +5.2269597 2.1319025 -1.9131205 128.0 +5.2531004 2.1050601 -1.9180288 128.0 +5.2667975 2.0731339 -1.9183559 128.0 +5.2776556 2.0400975 -1.9177016 128.0 +5.2883072 2.0070057 -1.9170471 128.0 +5.3076067 1.9771569 -1.9196649 128.0 +5.3311772 1.948768 -1.9239187 128.0 +5.337697 1.9141071 -1.9219553 128.0 +5.3546901 1.8831995 -1.9239187 128.0 +5.3715048 1.8521553 -1.925882 128.0 +5.3773966 1.8173474 -1.9239187 128.0 +5.3911376 1.7852087 -1.9249003 128.0 +5.3956976 1.7500563 -1.9226098 128.0 +5.4099369 1.7180592 -1.9239187 128.0 +5.4122553 1.6823094 -1.9209738 128.0 +5.4279003 1.6507174 -1.922937 128.0 +5.4343038 1.6163045 -1.9216281 128.0 +5.4504709 1.5847753 -1.9239187 128.0 +5.4682736 1.5536246 -1.9268637 128.0 +5.4695082 1.5177703 -1.9239187 128.0 +5.4714212 1.4822062 -1.921301 128.0 +5.4749308 1.4471586 -1.9193376 128.0 +5.4690661 1.4097669 -1.9141022 128.0 +5.4757805 1.3757226 -1.9134477 128.0 +5.4804468 1.3412002 -1.9121388 128.0 +5.4968467 1.3095168 -1.9150838 128.0 +5.5103016 1.2770431 -1.9170471 128.0 +5.5171118 1.243001 -1.9167199 128.0 +5.543098 1.2131621 -1.9232643 128.0 +5.5467396 1.1783427 -1.9219553 128.0 +5.5594187 1.1454294 -1.9239187 128.0 +5.5663424 1.1112958 -1.9239187 128.0 +5.5739841 1.0772996 -1.924246 128.0 +5.5823474 1.0434248 -1.9249003 128.0 +5.5988741 1.0109975 -1.9284997 128.0 +5.6059027 0.97678649 -1.9288269 128.0 +5.607131 0.94158942 -1.9271909 128.0 +5.612803 0.90716702 -1.9271909 128.0 +5.620131 0.87300014 -1.9278454 128.0 +5.6253819 0.83849919 -1.9278454 128.0 +5.636034 0.80476701 -1.9298086 128.0 +5.6446109 0.77068043 -1.9311175 128.0 +5.6454854 0.73554361 -1.9298086 128.0 +5.6527057 0.70123816 -1.9307903 128.0 +5.6522098 0.66598868 -1.9291542 128.0 +5.6496158 0.63056248 -1.9268637 128.0 +5.6486793 0.59539092 -1.9252275 128.0 +5.6550474 0.56099933 -1.9262092 128.0 +5.660265 0.5264647 -1.9268637 128.0 +5.6624475 0.4916425 -1.9265364 128.0 +5.6681833 0.45711643 -1.9275181 128.0 +5.6850166 0.42337832 -1.9324263 128.0 +5.6856217 0.38835934 -1.9317719 128.0 +5.6916704 0.35369939 -1.9330808 128.0 +5.6946769 0.31882191 -1.933408 128.0 +5.6918068 0.28363982 -1.9317719 128.0 +5.6915522 0.24862812 -1.9311175 128.0 +5.694859 0.21377125 -1.9317719 128.0 +5.6932302 0.17873584 -1.9307903 128.0 +5.6942196 0.14379947 -1.9307903 128.0 +5.6940498 0.10883982 -1.9304631 128.0 +5.69839 0.073948026 -1.9317719 128.0 +5.6959019 0.03896315 -1.9307903 128.0 +5.6988688 0.0040144427 -1.9317719 128.0 +5.6978412 -0.030947909 -1.9314448 128.0 +5.6984887 -0.065919742 -1.9317719 128.0 +5.6941977 -0.10081609 -1.9304631 128.0 +5.6981955 -0.13586672 -1.9320991 128.0 +5.700088 -0.17091316 -1.9330808 128.0 +5.7017651 -0.20598795 -1.9340625 128.0 +5.7051144 -0.24116994 -1.9356985 128.0 +5.7054148 -0.27626312 -1.936353 128.0 +5.6979508 -0.31095558 -1.9343897 128.0 +5.7006516 -0.34619907 -1.9360257 128.0 +5.6993628 -0.38123435 -1.936353 128.0 +5.6922045 -0.41585258 -1.9347169 128.0 +5.6820097 -0.45017287 -1.9320991 128.0 +5.6810236 -0.48518977 -1.9327536 128.0 +5.6779394 -0.52003872 -1.9327536 128.0 +5.6746416 -0.55486816 -1.9327536 128.0 +5.6711302 -0.58967662 -1.9327536 128.0 +5.6786761 -0.62570715 -1.9366802 128.0 +5.6813002 -0.66130519 -1.9389707 128.0 +5.6677566 -0.69500053 -1.9356985 128.0 +5.6558881 -0.72879648 -1.9330808 128.0 +5.6531825 -0.76374006 -1.9337353 128.0 +5.6483898 -0.79841298 -1.9337353 128.0 +5.6377759 -0.83222669 -1.9317719 128.0 +5.635365 -0.86723554 -1.9327536 128.0 +5.6299376 -0.90179712 -1.9327536 128.0 +5.6326871 -0.9377231 -1.9356985 128.0 +5.6240339 -0.97178376 -1.9347169 128.0 +5.6347075 -1.0092762 -1.9406068 128.0 +5.6256213 -1.0433136 -1.9396251 128.0 +5.6218977 -1.0783467 -1.9406068 128.0 +5.6114678 -1.1120862 -1.9392979 128.0 +5.5980582 -1.1451695 -1.9370074 128.0 +5.5900021 -1.1793017 -1.9366802 128.0 +5.5780439 -1.2125746 -1.9350441 128.0 +5.5658884 -1.2457452 -1.933408 128.0 +5.5562983 -1.2794489 -1.9327536 128.0 +5.5566182 -1.3154784 -1.9356985 128.0 +5.5456877 -1.3488779 -1.9347169 128.0 +5.5455575 -1.3849425 -1.9376619 128.0 +5.5314631 -1.4175348 -1.9356985 128.0 +5.5317998 -1.4538523 -1.9389707 128.0 +5.5273371 -1.4889973 -1.9406068 128.0 +5.5126314 -1.5213749 -1.9386435 128.0 +5.4759145 -1.5474565 -1.9288269 128.0 +5.4654083 -1.5807642 -1.9284997 128.0 +5.5072517 -1.6295624 -1.9471512 128.0 +5.4881053 -1.660585 -1.943879 128.0 +5.4696884 -1.6917137 -1.9409341 128.0 +5.4583044 -1.7249583 -1.9406068 128.0 +5.4512143 -1.7595792 -1.9419156 128.0 +5.4367256 -1.7918102 -1.9406068 128.0 +5.4157777 -1.8218194 -1.9370074 128.0 +5.4009223 -1.8537879 -1.9356985 128.0 +5.3769608 -1.8825184 -1.9311175 128.0 +5.3484011 -1.9094354 -1.9249003 128.0 +5.3250413 -1.9380131 -1.9206465 128.0 +5.2572379 -1.9499364 -1.9000318 128.0 +5.1956778 -1.963441 -1.8817075 128.0 +5.1262155 -1.9732076 -1.8604385 128.0 +5.0841017 -1.9928927 -1.849313 128.0 +4.9770007 -1.9862037 -1.8139734 128.0 +4.8964386 -1.9889511 -1.7884505 128.0 +4.8413558 -2.00126 -1.7724168 128.0 +4.7967591 -2.0173666 -1.7603097 128.0 +4.7382493 -2.0270522 -1.7429672 128.0 +4.6979976 -2.0440173 -1.7324963 128.0 +4.6421638 -2.0536802 -1.7161354 128.0 +4.6053472 -2.0712671 -1.7069732 128.0 +4.5788026 -2.0931969 -1.7017378 128.0 +4.5607314 -2.1188624 -1.6997744 128.0 +4.5416632 -2.1439815 -1.6974839 128.0 +4.4423771 -2.130517 -1.6644349 128.0 +4.361268 -2.1246114 -1.6382575 128.0 +4.2922573 -2.1236613 -1.6166611 128.0 +4.2512856 -2.1359518 -1.6058629 128.0 +4.1421518 -2.1130214 -1.56856 128.0 +4.1333036 -2.1405714 -1.5701962 128.0 +4.04566 -2.1267409 -1.5410738 128.0 +3.9916885 -2.1297183 -1.52504 128.0 +4.0391974 -2.1870306 -1.5489269 128.0 +4.0886354 -2.2463703 -1.5737956 128.0 +4.0764256 -2.272336 -1.57445 128.0 +3.9711173 -2.2456517 -1.5381287 128.0 +3.9203837 -2.2488084 -1.523404 128.0 +3.8893619 -2.2628374 -1.5165324 128.0 +3.8721492 -2.2847381 -1.5152235 128.0 +3.6310465 -2.1725438 -1.4236026 128.0 +3.40763 -2.0672889 -1.3385259 128.0 +3.4431653 -2.1178772 -1.3581589 128.0 +3.3355072 -2.0799365 -1.3195472 128.0 +3.3099046 -2.0922813 -1.3143117 128.0 +3.1967735 -2.0482867 -1.2730823 128.0 +3.1556211 -2.0493264 -1.2613025 128.0 +3.1240473 -2.0561762 -1.2534492 128.0 +3.0807195 -2.0548472 -1.2406877 128.0 +3.0390923 -2.0541236 -1.2285807 128.0 +3.0038269 -2.0572407 -1.2190913 128.0 +2.9810572 -2.0686266 -1.2148376 128.0 +2.9304385 -2.0602367 -1.1988038 128.0 +2.9061997 -2.069952 -1.1938956 128.0 +2.8758233 -2.0750222 -1.1863695 128.0 +2.8424437 -2.0775669 -1.1775347 128.0 +2.7924383 -2.067405 -1.161501 128.0 +2.737375 -2.0527384 -1.1431768 128.0 +2.7074251 -2.0563445 -1.1356508 128.0 +2.6707952 -2.0544734 -1.1251798 128.0 +2.655158 -2.0684984 -1.123871 128.0 +2.6379662 -2.081238 -1.1219076 128.0 +2.6303124 -2.1015158 -1.1241982 128.0 +2.6232438 -2.1223722 -1.1268159 128.0 +2.6211331 -2.1474147 -1.1317241 128.0 +2.615905 -2.1700966 -1.1353235 128.0 +2.6170075 -2.1982672 -1.1418679 128.0 +2.5984325 -2.2099962 -1.1395774 128.0 +2.56478 -2.2086265 -1.1304153 128.0 +2.5262587 -2.2025788 -1.1189626 128.0 +2.474453 -2.1842561 -1.1012928 128.0 +2.4469171 -2.1867993 -1.0947485 128.0 +2.3802166 -2.1535702 -1.06988 128.0 +2.3697441 -2.1706884 -1.0711888 128.0 +2.3376789 -2.1678329 -1.062354 128.0 +2.3236446 -2.1814888 -1.0620267 128.0 +2.3102155 -2.1957052 -1.0620267 128.0 +2.2953379 -2.2085283 -1.0613723 128.0 +2.2810669 -2.221911 -1.0610451 128.0 +2.2667179 -2.2352018 -1.0607178 128.0 +2.2442696 -2.240386 -1.0564641 128.0 +2.2218435 -2.2453794 -1.0522102 128.0 +2.2020817 -2.2528861 -1.0492653 128.0 +2.1803436 -2.2581949 -1.0453386 128.0 +2.1912196 -2.2975247 -1.0577729 128.0 +2.1718993 -2.3054223 -1.0551552 128.0 +2.1750865 -2.3373892 -1.0639901 128.0 +2.1619821 -2.3520832 -1.0646445 128.0 +2.1538587 -2.372303 -1.0679166 128.0 +2.1449378 -2.3918078 -1.0708616 128.0 +2.1183217 -2.3914797 -1.0646445 128.0 +2.0824616 -2.3802445 -1.0535191 128.0 +2.075846 -2.4022753 -1.0577729 128.0 +2.0733304 -2.429347 -1.0643172 128.0 +2.053515 -2.4362411 -1.0616995 128.0 +2.0445709 -2.4560599 -1.0649717 128.0 +2.0282626 -2.4670987 -1.0643172 128.0 +2.0142775 -2.4809651 -1.0649717 128.0 +1.9931083 -2.485903 -1.0616995 128.0 +1.9766449 -2.4966037 -1.0610451 128.0 +1.9577984 -2.5042171 -1.0590818 128.0 +1.9447047 -2.5191758 -1.0603907 128.0 +1.9280655 -2.5295572 -1.0597363 128.0 +1.913644 -2.5428505 -1.0603907 128.0 +1.8974421 -2.5537858 -1.0600635 128.0 +1.8772676 -2.559283 -1.0574456 128.0 +1.8582052 -2.5661602 -1.0554824 128.0 +1.8391292 -2.5729001 -1.0535191 128.0 +1.8227631 -2.583364 -1.0531919 128.0 +1.8095763 -2.5983777 -1.0548279 128.0 +1.7941339 -2.6102111 -1.0551552 128.0 +1.7807351 -2.6250815 -1.0567913 128.0 +1.7630183 -2.6336021 -1.0558096 128.0 +1.7504694 -2.6498907 -1.0581001 128.0 +1.7383027 -2.6669161 -1.0607178 128.0 +1.7418286 -2.7085357 -1.0734794 128.0 +1.7155635 -2.7040088 -1.0672623 128.0 +1.7024471 -2.7200925 -1.0695528 128.0 +1.6807636 -2.722445 -1.0662806 128.0 +1.6797448 -2.7585392 -1.0767516 128.0 +1.6598699 -2.7639325 -1.0747882 128.0 +1.6284426 -2.7496681 -1.0649717 128.0 +1.5986823 -2.7375717 -1.0561368 128.0 +1.5908077 -2.762892 -1.062354 128.0 +1.5621706 -2.7520523 -1.0541735 128.0 +1.5540162 -2.777257 -1.0603907 128.0 +1.5351218 -2.7834294 -1.0590818 128.0 +1.521171 -2.798609 -1.0613723 128.0 +1.5155628 -2.8295519 -1.06988 128.0 +1.5012577 -2.8446491 -1.0721705 128.0 +1.4789833 -2.844583 -1.0685711 128.0 +1.4593492 -2.8493981 -1.0669351 128.0 +1.4380106 -2.8507044 -1.0639901 128.0 +1.4171312 -2.8527029 -1.0613723 128.0 +1.4008453 -2.8638914 -1.062354 128.0 +1.3840657 -2.874136 -1.0630084 128.0 +1.3712577 -2.8928225 -1.0669351 128.0 +1.3578731 -2.9106033 -1.0705345 128.0 +1.3533822 -2.9480836 -1.0816598 128.0 +1.3383769 -2.963223 -1.0842775 128.0 +1.3182528 -2.9670608 -1.0826415 128.0 +1.2985102 -2.9716294 -1.0813326 128.0 +1.2795068 -2.9778044 -1.0806782 128.0 +1.2601089 -2.9829874 -1.0796965 128.0 +1.2464887 -3.0020101 -1.0839504 128.0 +1.224835 -3.0017264 -1.0810053 128.0 +1.20007 -2.9933956 -1.0751154 128.0 +1.1920581 -3.0270834 -1.084932 128.0 +1.1731213 -3.0334592 -1.0846047 128.0 +1.1518054 -3.0335319 -1.081987 128.0 +1.1308626 -3.0343432 -1.0796965 128.0 +1.1118987 -3.0403373 -1.0793693 128.0 +1.0980043 -3.0604458 -1.0842775 128.0 +1.0770119 -3.060885 -1.081987 128.0 +1.0569789 -3.0638623 -1.0806782 128.0 +1.0408808 -3.0783474 -1.0836232 128.0 +1.026129 -3.0972357 -1.0882041 128.0 +0.99603391 -3.069315 -1.0757699 128.0 +0.98232722 -3.0915811 -1.0816598 128.0 +0.96165735 -3.0921359 -1.0796965 128.0 +0.94926041 -3.1196771 -1.0875497 128.0 +0.92606252 -3.1118562 -1.0826415 128.0 +0.91169661 -3.1338134 -1.0885314 128.0 +0.89477336 -3.1475296 -1.0914763 128.0 +0.87897849 -3.165709 -1.0960574 128.0 +0.8610189 -3.1765153 -1.0980207 128.0 +0.83475572 -3.1561573 -1.0888586 128.0 +0.80311865 -3.1136355 -1.0718433 128.0 +0.77709675 -3.0910091 -1.0620267 128.0 +0.73993671 -3.0213685 -1.0355221 128.0 +0.71963364 -3.0184977 -1.0329044 128.0 +0.70834619 -3.0541568 -1.0440297 128.0 +0.69478047 -3.0814927 -1.0522102 128.0 +0.68050206 -3.10693 -1.0597363 128.0 +0.66515279 -3.1286099 -1.0659534 128.0 +0.65032488 -3.1539199 -1.0734794 128.0 +0.63558096 -3.1810184 -1.0816598 128.0 +0.62411129 -3.2266099 -1.0963846 128.0 +0.60777003 -3.2489567 -1.102929 128.0 +0.58748794 -3.2507648 -1.1022745 128.0 +0.56801659 -3.2571013 -1.1032562 128.0 +0.55364758 -3.2940748 -1.115036 128.0 +0.53131694 -3.2843497 -1.110455 128.0 +0.51187885 -3.2922168 -1.1120911 128.0 +0.49319887 -3.3055768 -1.1156905 128.0 +0.47183987 -3.3010569 -1.1130728 128.0 +0.45068261 -3.2973359 -1.1107823 128.0 +0.42507869 -3.2588089 -1.0963846 128.0 +0.3976419 -3.2013376 -1.0754427 128.0 +0.37876409 -3.2102864 -1.0777332 128.0 +0.36272091 -3.24542 -1.0891858 128.0 +0.34408575 -3.2598014 -1.0934397 128.0 +0.32891834 -3.3107495 -1.110455 128.0 +0.31008223 -3.3287008 -1.1160177 128.0 +0.28639001 -3.2928839 -1.102929 128.0 +0.26792255 -3.3162429 -1.110455 128.0 +0.24581973 -3.2942657 -1.1022745 128.0 +0.22573027 -3.2975974 -1.102929 128.0 +0.20514184 -3.2932618 -1.1009657 128.0 +0.18429933 -3.2831366 -1.0970391 128.0 +0.16424461 -3.2860932 -1.0976934 128.0 +0.14444786 -3.2955356 -1.1006385 128.0 +0.12337799 -3.2736969 -1.0927852 128.0 +0.10302351 -3.265892 -1.0898403 128.0 +0.082627468 -3.2522929 -1.084932 128.0 +0.062741689 -3.2565176 -1.0862409 128.0 +0.04269854 -3.2521169 -1.0846047 128.0 +0.022881111 -3.2731061 -1.0918036 128.0 +0.0027925363 -3.2637355 -1.0885314 128.0 +-0.017174857 -3.2532969 -1.084932 128.0 +-0.037392192 -3.2748625 -1.092458 128.0 +-0.057756376 -3.2896883 -1.0976934 128.0 +-0.078258462 -3.3024974 -1.1022745 128.0 +-0.099205025 -3.3246236 -1.1101278 128.0 +-0.11953405 -3.3220637 -1.1094733 128.0 +-0.14095822 -3.3458142 -1.117981 128.0 +-0.1620817 -3.357156 -1.1222348 128.0 +-0.18365976 -3.3740256 -1.1284519 128.0 +-0.20464629 -3.3775511 -1.1300881 128.0 +-0.22454435 -3.363975 -1.1258342 128.0 +-0.24414545 -3.3483975 -1.120926 128.0 +-0.26640716 -3.3685021 -1.1284519 128.0 +-0.2873933 -3.3705702 -1.1297609 128.0 +-0.30280033 -3.3113427 -1.1098006 128.0 +-0.32449487 -3.323529 -1.1147088 128.0 +-0.34693784 -3.3412125 -1.1215804 128.0 +-0.37064677 -3.3681374 -1.1317241 128.0 +-0.3942613 -3.3911417 -1.1405591 128.0 +-0.41586792 -3.3952241 -1.1428496 128.0 +-0.43911189 -3.4113519 -1.1493939 128.0 +-0.45940179 -3.4039111 -1.1477579 128.0 +-0.68517214 -4.848434 -1.6539639 128.0 +-0.71656686 -4.8553562 -1.6578906 128.0 +-0.74807233 -4.8620749 -1.6618172 128.0 +-0.77579635 -4.8443313 -1.6572361 128.0 +-0.80954552 -4.8637142 -1.6657438 128.0 +-0.83744049 -4.8474817 -1.6618172 128.0 +-0.86616755 -4.8366714 -1.6598538 128.0 +-0.89893341 -4.8479891 -1.6657438 128.0 +-0.92884141 -4.8433099 -1.6660709 128.0 +-0.95725471 -4.8310313 -1.6637805 128.0 +-0.99086028 -4.8445072 -1.670652 128.0 +-1.0211527 -4.8411098 -1.6716337 128.0 +-1.0500343 -4.8310599 -1.6703248 128.0 +-1.0773851 -4.814383 -1.6667254 128.0 +-1.1060563 -4.8039985 -1.6654166 128.0 +-1.1394341 -4.8136721 -1.6713065 128.0 +-1.1624669 -4.779964 -1.6618172 128.0 +-1.1910869 -4.7699909 -1.6608355 128.0 +-1.2252626 -4.7818146 -1.6677071 128.0 +-1.2495322 -4.7550154 -1.6608355 128.0 +-1.2845885 -4.769156 -1.6686888 128.0 +-1.309299 -4.7447886 -1.6627988 128.0 +-1.1367767 -4.0237865 -1.40626 128.0 +-1.1619703 -4.0185509 -1.4069145 128.0 +-1.3961449 -4.7189789 -1.6624717 128.0 +-1.42836 -4.7211761 -1.6663982 128.0 +-1.4497581 -4.6879501 -1.6575633 128.0 +-1.4910322 -4.7186093 -1.6719609 128.0 +-1.5211189 -4.7129683 -1.6732697 128.0 +-1.5497124 -4.7026486 -1.6729425 128.0 +-1.5818543 -4.7029028 -1.6765419 128.0 +-1.6106811 -4.6931081 -1.6765419 128.0 +-1.6472578 -4.7054319 -1.6847224 128.0 +-1.6773704 -4.6987953 -1.6860313 128.0 +-1.7116671 -4.7035093 -1.691594 128.0 +-1.7381935 -4.6867166 -1.6893035 128.0 +-1.769926 -4.683918 -1.6922485 128.0 +-1.7959155 -4.6659155 -1.6896306 128.0 +-1.8269265 -4.6609659 -1.6919212 128.0 +-1.8600469 -4.6610765 -1.696175 128.0 +-1.2118543 -2.984565 -1.0738066 128.0 +-1.2286998 -2.9735804 -1.0724977 128.0 +-1.2472887 -2.966856 -1.072825 128.0 +-1.9783376 -4.6244493 -1.7001016 128.0 +-2.0025263 -4.6026931 -1.6965022 128.0 +-2.0311127 -4.5911832 -1.6968294 128.0 +-2.05847 -4.5769105 -1.696175 128.0 +-2.0900521 -4.571928 -1.69912 128.0 +-1.5647732 -3.3688018 -1.2446144 128.0 +-1.5870286 -3.362555 -1.2459232 128.0 +-1.6059958 -3.3493462 -1.2446144 128.0 +-1.620306 -3.3266878 -1.239706 128.0 +-1.6423647 -3.3200705 -1.241015 128.0 +-1.6635542 -3.311619 -1.2416694 128.0 +-1.6898571 -3.3131325 -1.2462504 128.0 +-1.7131977 -3.3085742 -1.248541 128.0 +-1.7427044 -3.3155625 -1.2554126 128.0 +-2.286813 -4.2859473 -1.640548 128.0 +-2.3027151 -4.2527251 -1.633022 128.0 +-2.3975046 -4.3635545 -1.6824319 128.0 +-2.4265351 -4.3528881 -1.684068 128.0 +-2.4550598 -4.341207 -1.6853769 128.0 +-2.4872954 -4.3358955 -1.6893035 128.0 +-2.5062466 -4.3074861 -1.684068 128.0 +-2.5292668 -4.2863307 -1.6817775 128.0 +-2.5521219 -4.2650557 -1.6794869 128.0 +-2.5821664 -4.2557778 -1.6821047 128.0 +-2.6126885 -4.2470965 -1.6850497 128.0 +-2.6381989 -4.2301836 -1.6847224 128.0 +-2.6585486 -4.205132 -1.681123 128.0 +-2.6837907 -4.1879444 -1.6807958 128.0 +-2.7073774 -4.1682291 -1.6794869 128.0 +-2.7313428 -4.1491709 -1.6785053 128.0 +-2.7572749 -4.1331196 -1.6788325 128.0 +-2.7778187 -4.1090789 -1.6758876 128.0 +-2.7976372 -4.0841627 -1.6726153 128.0 +-2.8258784 -4.0715766 -1.6745787 128.0 +-2.8540702 -4.0587978 -1.6765419 128.0 +-2.8772755 -4.0389009 -1.6755604 128.0 +-2.9003439 -4.0188718 -1.6745787 128.0 +-2.9110024 -3.9819322 -1.6663982 128.0 +-2.9353802 -3.9639957 -1.6663982 128.0 +-2.9488714 -3.9315495 -1.660181 128.0 +-2.9717958 -3.9118769 -1.6595266 128.0 +-2.2902231 -2.9770503 -1.259012 128.0 +-2.3107708 -2.9659226 -1.2603208 128.0 +-2.324827 -2.9464965 -1.2580303 128.0 +-3.0745742 -3.8473618 -1.6637805 128.0 +-3.0856364 -3.8130014 -1.6569089 128.0 +-3.1089745 -3.7939966 -1.6569089 128.0 +-3.1418526 -3.7864819 -1.6621444 128.0 +-3.1650269 -3.7671325 -1.6621444 128.0 +-3.189307 -3.7490807 -1.6627988 128.0 +-3.2196531 -3.7380309 -1.6667254 128.0 +-3.2288616 -3.7025402 -1.6595266 128.0 +-3.2446375 -3.6748683 -1.6559272 128.0 +-3.2652352 -3.6527774 -1.6549456 128.0 +-3.2799759 -3.6242678 -1.651019 128.0 +-3.3098145 -3.612433 -1.6549456 128.0 +-3.3332033 -3.5934415 -1.6556001 128.0 +-3.3519545 -3.5694783 -1.6539639 128.0 +-3.3672807 -3.541997 -1.6506917 128.0 +-3.3928833 -3.5253532 -1.652655 128.0 +-3.4052162 -3.4949951 -1.648074 128.0 +-3.416641 -3.4639463 -1.6431657 128.0 +-3.4358277 -3.4409115 -1.6421841 128.0 +-3.4730024 -3.4357107 -1.6500373 128.0 +-3.4818501 -3.402451 -1.6441474 128.0 +-3.4938211 -3.3724935 -1.6398935 128.0 +-3.517185 -3.3536 -1.6412024 128.0 +-3.5445764 -3.3384328 -1.6444746 128.0 +-3.5739899 -3.3249862 -1.6487285 128.0 +-3.5936284 -3.3023548 -1.6484013 128.0 +-3.6278205 -3.2929413 -1.6549456 128.0 +-3.6564019 -3.278187 -1.6588722 128.0 +-3.6601734 -3.2412851 -1.6513462 128.0 +-3.6814153 -3.2200096 -1.6520007 128.0 +-3.7025342 -3.1985953 -1.652655 128.0 +-3.7407844 -3.1917593 -1.6611627 128.0 +-3.7581301 -3.1669199 -1.660181 128.0 +-3.7702265 -3.1377578 -1.6569089 128.0 +-3.7908688 -3.1157649 -1.6575633 128.0 +-3.8209226 -3.1013761 -1.6624717 128.0 +-3.8428302 -3.0802362 -1.6637805 128.0 +-3.8631401 -3.0577717 -1.6644349 128.0 +-3.8855526 -3.0369189 -1.6660709 128.0 +-3.9123442 -3.0193691 -1.6696703 128.0 +-3.9300451 -2.994734 -1.6693431 128.0 +-3.9574094 -2.9773786 -1.6732697 128.0 +-3.9793973 -2.9558568 -1.6749059 128.0 +-3.995935 -2.9302669 -1.6742514 128.0 +-4.0176673 -2.9084628 -1.6758876 128.0 +-4.0400515 -2.8870513 -1.6778508 128.0 +-4.063096 -2.8660192 -1.6801413 128.0 +-4.0860343 -2.8448129 -1.6824319 128.0 +-4.1034131 -2.8196878 -1.6824319 128.0 +-4.127677 -2.7992284 -1.6853769 128.0 +-4.1565561 -2.7817295 -1.6902851 128.0 +-4.1822214 -2.761899 -1.6938845 128.0 +-4.2085915 -2.7423737 -1.6978111 128.0 +-4.2269287 -2.7175205 -1.6984656 128.0 +-4.2475142 -2.6940629 -1.7001016 128.0 +-4.2767835 -2.6759667 -1.7053372 128.0 +-4.3043818 -2.65662 -1.7099181 128.0 +-4.3319035 -2.6370351 -1.7144992 128.0 +-4.3512435 -2.6123502 -1.7158082 128.0 +-4.3728833 -2.5889709 -1.7180986 128.0 +-4.4099069 -2.5744727 -1.7266062 128.0 +-4.421525 -2.5450094 -1.7249702 128.0 +-4.4337702 -2.5159669 -1.7236613 128.0 +-4.4565473 -2.4928646 -1.7266062 128.0 +-4.5081744 -2.4855392 -1.7410039 128.0 +-4.4909549 -2.440243 -1.7282424 128.0 +-4.5616646 -2.4425139 -1.7501659 128.0 +-4.5857601 -2.4193263 -1.7537653 128.0 +-4.603034 -2.3924499 -1.754747 128.0 +-4.6235156 -2.3671744 -1.7570375 128.0 +-4.6328902 -2.3362088 -1.7550743 128.0 +-4.6564488 -2.3123589 -1.7586737 128.0 +-4.6739454 -2.2854035 -1.7599826 128.0 +-4.7108712 -2.2677431 -1.7688174 128.0 +-4.7272596 -2.2400084 -1.7697991 128.0 +-4.7426276 -2.2117586 -1.7704535 128.0 +-4.7595453 -2.1841927 -1.7717624 128.0 +-4.7969747 -2.1658299 -1.7809244 128.0 +-4.7289867 -2.1003189 -1.7501659 128.0 +-4.7391872 -2.0701287 -1.7491844 128.0 +-4.7613516 -2.0451109 -1.7527838 128.0 +-4.8025403 -2.0279815 -1.7635819 128.0 +-4.8463154 -2.0115094 -1.7753618 128.0 +-4.8961935 -1.9970729 -1.7894322 128.0 +-4.9583564 -1.9870179 -1.8080835 128.0 +-5.022337 -1.9769663 -1.8273894 128.0 +-5.0872602 -1.966544 -1.8470225 128.0 +-5.1822834 -1.9667925 -1.8777809 128.0 +-5.267756 -1.9623212 -1.90494 128.0 +-5.3267393 -1.9471468 -1.9222826 128.0 +-5.3884015 -1.932278 -1.9406068 128.0 +-5.4313583 -1.9101455 -1.9520594 128.0 +-5.4635243 -1.8838639 -1.9595854 128.0 +-5.4875145 -1.854538 -1.9641665 128.0 +-5.5230126 -1.8288476 -1.9730014 128.0 +-5.5359278 -1.7955073 -1.9736558 128.0 +-5.5423374 -1.7600765 -1.9720197 128.0 +-5.5611544 -1.728559 -1.9749647 128.0 +-5.5589981 -1.6905572 -1.9703836 128.0 +-5.5765128 -1.6585697 -1.9730014 128.0 +-5.5865846 -1.6243216 -1.9730014 128.0 +-5.590992 -1.588464 -1.9710381 128.0 +-5.6097393 -1.5566533 -1.9743103 128.0 +-5.6045914 -1.518253 -1.9690747 128.0 +-5.6092334 -1.4826287 -1.9674387 128.0 +-5.626461 -1.4503044 -1.9703836 128.0 +-5.6370869 -1.4162139 -1.9710381 128.0 +-5.6429167 -1.3809254 -1.9700564 128.0 +-5.6457682 -1.3449624 -1.9680932 128.0 +-5.6585174 -1.311361 -1.9697292 128.0 +-5.6673789 -1.2768238 -1.9700564 128.0 +-5.6658754 -1.2400069 -1.9667842 128.0 +-5.6761503 -1.205807 -1.9677659 128.0 +-5.6936231 -1.1730516 -1.9713653 128.0 +-5.6997871 -1.1379093 -1.9710381 128.0 +-5.7029505 -1.1021981 -1.9697292 128.0 +-5.7133217 -1.0678784 -1.9710381 128.0 +-5.7113972 -1.0312924 -1.9680932 128.0 +-5.7120318 -0.99525648 -1.9661298 128.0 +-5.7189631 -0.96034569 -1.966457 128.0 +-5.7294121 -0.92598963 -1.9680932 128.0 +-5.7237806 -0.88907892 -1.9641665 128.0 +-5.7309976 -0.85421997 -1.964821 128.0 +-5.7389379 -0.81943929 -1.9658026 128.0 +-5.7382398 -0.78344458 -1.9638393 128.0 +-5.7279463 -0.74627036 -1.9586037 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-5.4623103 0.97650236 -1.9482287 128.0 +-5.4543648 1.0096576 -1.9475535 128.0 +-5.4397464 1.0415134 -1.9445152 128.0 +-5.4360232 1.0754193 -1.945528 128.0 +-5.4173331 1.1063063 -1.9411393 128.0 +-5.4058371 1.138556 -1.9394515 128.0 +-5.4015093 1.172303 -1.9404641 128.0 +-5.3932958 1.2052187 -1.9401267 128.0 +-5.3876338 1.2387103 -1.9408017 128.0 +-5.3808479 1.2719613 -1.9411393 128.0 +-5.3793449 1.3065083 -1.9435025 128.0 +-5.3785338 1.3413124 -1.9462032 128.0 +-5.3665547 1.373356 -1.9448528 128.0 +-5.3653107 1.4081699 -1.9475535 128.0 +-5.3592963 1.4417976 -1.9485663 128.0 +-5.3476262 1.4739044 -1.9475535 128.0 +-5.3384819 1.5066891 -1.9475535 128.0 +-5.3273282 1.5388947 -1.9468783 128.0 +-5.3087583 1.5688865 -1.9435025 128.0 +-5.2936254 1.5997975 -1.9414769 128.0 +-5.2801118 1.6311374 -1.9401267 128.0 +-5.2628226 1.6612386 -1.9374259 128.0 +-5.2426758 1.6903229 -1.9337125 128.0 +-0 0 -0 128.0 +-5.2277842 1.7566295 -1.9360756 128.0 +-5.2177978 1.7889787 -1.9364132 128.0 +-5.1853971 1.8135046 -1.928311 128.0 +-5.2220497 1.8623582 -1.9465408 128.0 +-5.1972542 1.8895416 -1.9414769 128.0 +-5.1793838 1.919107 -1.9391139 128.0 +-5.1631074 1.9491889 -1.9374259 128.0 +-5.1501718 1.9804947 -1.9370884 128.0 +-5.1545763 2.0185785 -1.9435025 128.0 +-5.1324754 2.0463345 -1.9397891 128.0 +-5.106739 2.0724797 -1.9347252 128.0 +-5.0878363 2.1012602 -1.9323621 128.0 +-5.0783186 2.1338973 -1.9337125 128.0 +-5.0564742 2.1613183 -1.9303366 128.0 +-5.042254 2.1919284 -1.929999 128.0 +-5.0304317 2.2235868 -1.9306742 128.0 +-5.023562 2.2574971 -1.9333749 128.0 +-5.0070472 2.2871056 -1.9323621 128.0 +-4.994627 2.3185778 -1.9330373 128.0 +-4.9769011 2.3475745 -1.9316869 128.0 +-4.9649496 2.3792882 -1.9326997 128.0 +-4.9443326 2.4068244 -1.9303366 128.0 +-4.930315 2.4375339 -1.9306742 128.0 +-4.9169483 2.4685845 -1.9313493 128.0 +-4.9067407 2.5012724 -1.9333749 128.0 +-4.8913012 2.5313325 -1.9333749 128.0 +-4.8673434 2.5569203 -1.929999 128.0 +-4.83495 2.5778818 -1.9232472 128.0 +-4.8364277 2.6169055 -1.9303366 128.0 +-4.8178039 2.6451731 -1.9293238 128.0 +-4.8014827 2.6746848 -1.9293238 128.0 +-4.7849808 2.7040958 -1.9293238 128.0 +-4.7731991 2.7362134 -1.9313493 128.0 +-4.7612028 2.7682881 -1.9333749 128.0 +-4.7449379 2.7979283 -1.9337125 128.0 +-4.7317204 2.8294051 -1.9354004 128.0 +-4.7166853 2.859849 -1.9364132 128.0 +-4.7014546 2.8902149 -1.9374259 128.0 +-4.6788387 2.9160213 -1.9354004 128.0 +-4.6568789 2.9421618 -1.9337125 128.0 +-4.6379461 2.9701729 -1.9333749 128.0 +-4.6148963 2.9955001 -1.9313493 128.0 +-4.595643 3.023243 -1.9310117 128.0 +-4.5707407 3.0472078 -1.928311 128.0 +-4.547277 3.0720346 -1.9262855 128.0 +-4.5267882 3.098815 -1.9256103 128.0 +-4.5138769 3.1308239 -1.928311 128.0 +-4.4868798 3.1530502 -1.9249351 128.0 +-4.4705157 3.1827052 -1.9262855 128.0 +-4.4516664 3.2106264 -1.9266231 128.0 +-4.4372034 3.2417674 -1.9289862 128.0 +-4.4179854 3.2694926 -1.9293238 128.0 +-4.4031138 3.3004909 -1.9316869 128.0 +-4.3872781 3.3308606 -1.9337125 128.0 +-4.3660111 3.3571439 -1.9333749 128.0 +-4.3364177 3.3769307 -1.9293238 128.0 +-4.3133979 3.4017262 -1.928311 128.0 +-4.2850885 3.4222553 -1.9249351 128.0 +-4.2186289 3.4117882 -1.9040047 128.0 +-4.2252903 3.4602699 -1.916833 128.0 +-4.2047038 3.4867315 -1.9171706 128.0 +-4.1882768 3.5167022 -1.9195337 128.0 +-4.1694889 3.5447733 -1.9208841 128.0 +-4.1433792 3.5666058 -1.9188585 128.0 +-4.134191 3.6030931 -1.9249351 128.0 +-4.1176519 3.6333742 -1.9276358 128.0 +-4.0903659 3.6541817 -1.9252727 128.0 +-4.0727544 3.6836305 -1.9276358 128.0 +-4.0493813 3.7079155 -1.9272983 128.0 +-4.0224118 3.728853 -1.9252727 128.0 +-3.9953375 3.7495992 -1.9232472 128.0 +-3.9715729 3.7733953 -1.9229096 128.0 +-3.9463096 3.7957358 -1.9218968 128.0 +-3.9215961 3.8185654 -1.9212216 128.0 +-3.8994329 3.8438773 -1.9218968 128.0 +-3.8831036 3.8750448 -1.9256103 128.0 +-3.859916 3.8994672 -1.9259479 128.0 +-3.8207796 3.9075992 -1.9181833 128.0 +-3.7947693 3.9289384 -1.9171706 128.0 +-3.7699404 3.9514678 -1.916833 128.0 +-3.7494974 3.9786353 -1.9188585 128.0 +-3.7243731 4.0008779 -1.9185209 128.0 +-3.7010283 4.0250406 -1.9191961 128.0 +-3.6813247 4.0532479 -1.9218968 128.0 +-3.6626713 4.0827661 -1.9252727 128.0 +-3.6338053 4.1009359 -1.9232472 128.0 +-3.6110539 4.1259885 -1.9245975 128.0 +-3.5869005 4.1494923 -1.9252727 128.0 +-3.5625947 4.1728544 -1.9259479 128.0 +-3.5332825 4.1903181 -1.9239224 128.0 +-3.5062997 4.2104726 -1.9232472 128.0 +-3.4642539 4.2122793 -1.9141324 128.0 +-3.448432 4.2458768 -1.9198713 128.0 +-3.4211369 4.2654877 -1.9191961 128.0 +-3.3761966 4.2627878 -1.9083933 128.0 +-3.3638957 4.3012176 -1.9164954 128.0 +-3.3368652 4.321032 -1.9161578 128.0 +-3.3120012 4.3436708 -1.9171706 128.0 +-3.2858529 4.3646631 -1.9175082 128.0 +-3.2533944 4.3771882 -1.9141324 128.0 +-3.2270319 4.3978271 -1.91447 128.0 +-3.2044048 4.4236431 -1.9171706 128.0 +-3.1772015 4.443222 -1.9171706 128.0 +-3.1498785 4.4626331 -1.9171706 128.0 +-3.1111364 4.4656582 -1.9100813 128.0 +-3.0932779 4.4986243 -1.9161578 128.0 +-3.0656166 4.5175195 -1.9161578 128.0 +-3.0388875 4.5378089 -1.916833 128.0 +-3.009949 4.5547991 -1.9161578 128.0 +-2.9819446 4.5731821 -1.9161578 128.0 +-2.9477158 4.5818939 -1.9121068 128.0 +-2.9190419 4.5991001 -1.9117692 128.0 +-2.8882694 4.6129355 -1.9100813 128.0 +-2.8579319 4.6273675 -1.9087309 128.0 +-2.8294849 4.6448159 -1.9087309 128.0 +-2.8014166 4.6628971 -1.9090685 128.0 +-2.7741923 4.6824279 -1.9100813 128.0 +-2.7477837 4.7034254 -1.9117692 128.0 +-2.7249808 4.7308002 -1.9161578 128.0 +-2.6945074 4.7449756 -1.915145 128.0 +-2.6708601 4.7712755 -1.9191961 128.0 +-2.6374407 4.7801566 -1.9161578 128.0 +-2.6031134 4.7871537 -1.9124444 128.0 +-2.5754697 4.8063545 -1.9137948 128.0 +-2.5454903 4.8212342 -1.9134572 128.0 +-2.5158598 4.8367624 -1.9134572 128.0 +-2.4869933 4.8537836 -1.9141324 128.0 +-2.4605575 4.8756747 -1.916833 128.0 +-2.4268236 4.8830948 -1.9137948 128.0 +-2.3972297 4.8987389 -1.9141324 128.0 +-2.3646748 4.908268 -1.9121068 128.0 +-2.3341103 4.9218345 -1.9117692 128.0 +-2.3018758 4.9317989 -1.9100813 128.0 +-2.2731431 4.9492517 -1.9114317 128.0 +-2.2411816 4.9596753 -1.9100813 128.0 +-2.2076483 4.9664526 -1.9073806 128.0 +-2.1778872 4.9816298 -1.9080558 128.0 +-2.1495106 5.0000877 -1.9100813 128.0 +-2.1176906 5.0105815 -1.9090685 128.0 +-2.0869064 5.0234814 -1.9090685 128.0 +-2.0563993 5.0370631 -1.9094061 128.0 +-2.0254538 5.0495863 -1.9094061 128.0 +-1.9906356 5.0522861 -1.9056926 128.0 +-1.9599377 5.0652828 -1.9060302 128.0 +-1.9241399 5.0648947 -1.901304 128.0 +-1.8956577 5.0836616 -1.9040047 128.0 +-1.8657234 5.0987329 -1.905355 128.0 +-1.8363116 5.1154003 -1.9073806 128.0 +-1.8058275 5.1292348 -1.9083933 128.0 +-1.7715563 5.1322112 -1.905355 128.0 +-1.7406358 5.1447678 -1.9060302 128.0 +-1.7102202 5.1589251 -1.9073806 128.0 +-1.6773704 5.1657405 -1.9060302 128.0 +-1.63794 5.1517158 -1.8969153 128.0 +-1.6088167 5.1697578 -1.8999536 128.0 +-1.5770655 5.1795321 -1.8999536 128.0 +-1.5479419 5.1981325 -1.9033295 128.0 +-1.5141754 5.2012062 -1.9009664 128.0 +-1.48146 5.2076831 -1.8999536 128.0 +-1.4469577 5.2076058 -1.8965777 128.0 +-1.4159632 5.2200203 -1.8979281 128.0 +-1.3831843 5.2258801 -1.8969153 128.0 +-1.3496809 5.2288008 -1.8948898 128.0 +-1.3168831 5.2342453 -1.893877 128.0 +-1.285638 5.2458839 -1.8952274 128.0 +-1.2532072 5.252758 -1.8948898 128.0 +-1.2267013 5.2851048 -1.9040047 128.0 +-1.1917623 5.2815142 -1.8999536 128.0 +-1.1607444 5.2951632 -1.9023167 128.0 +-1.129016 5.3058686 -1.9036671 128.0 +-1.0989127 5.3246803 -1.9080558 128.0 +-1.0669591 5.3350148 -1.9094061 128.0 +-1.033846 5.339613 -1.9087309 128.0 +-1.0024499 5.3532577 -1.9114317 128.0 +-0.96773994 5.3491187 -1.9077182 128.0 +-0.93214691 5.3391929 -1.9019791 128.0 +-0.90249395 5.3633766 -1.9087309 128.0 +-0.8710736 5.3781047 -1.9121068 128.0 +-0.83892691 5.3889289 -1.9141324 128.0 +-0.80389714 5.3809419 -1.9094061 128.0 +-0.7704649 5.3829775 -1.9083933 128.0 +-0.73691016 5.3838735 -1.907043 128.0 +-0.70312953 5.3826938 -1.9050175 128.0 +-0.66880977 5.3766317 -1.901304 128.0 +-0.63669103 5.3881125 -1.9040047 128.0 +-0.60173196 5.3750796 -1.8979281 128.0 +-0.56864071 5.3777347 -1.8975905 128.0 +-0.53768557 5.4017291 -1.9050175 128.0 +-0.50409329 5.4002404 -1.9033295 128.0 +-0.47143936 5.4088583 -1.905355 128.0 +-0.43862259 5.4163399 -1.907043 128.0 +-0.40573177 5.4236226 -1.9087309 128.0 +-0.37257445 5.4278884 -1.9094061 128.0 +-0.33920377 5.4291329 -1.9090685 128.0 +-0.30567285 5.4273529 -1.9077182 128.0 +-0.2717987 5.4178448 -1.9036671 128.0 +-0.23884055 5.4259934 -1.9060302 128.0 +-0.20557848 5.428297 -1.9063678 128.0 +-0.17241681 5.4341607 -1.9080558 128.0 +-0.13882871 5.4257064 -1.9046799 128.0 +-0.10560808 5.4302206 -1.9060302 128.0 +-0.072412863 5.4401784 -1.9094061 128.0 +-0.038922027 5.4254599 -1.9040047 128.0 +-0.005648056 5.4406571 -1.9094061 128.0 +0.02778258 5.4500022 -1.912782 128.0 +0.060970549 5.4271398 -1.9046799 128.0 +0.094058082 5.4144282 -1.9002912 128.0 +0.12732272 5.4156313 -1.9009664 128.0 +0.16107874 5.4326248 -1.9073806 128.0 +0.19461125 5.4371786 -1.9094061 128.0 +0.22824509 5.4424653 -1.9117692 128.0 +0.26127401 5.4334407 -1.9090685 128.0 +0.29450622 5.4298553 -1.9083933 128.0 +0.32810104 5.4326439 -1.9100813 128.0 +0.36124161 5.427711 -1.9090685 128.0 +0.39460683 5.426331 -1.9094061 128.0 +0.42759889 5.420054 -1.9080558 128.0 +0.46036938 5.4117012 -1.9060302 128.0 +0.49330989 5.405962 -1.9050175 128.0 +0.5263797 5.4018965 -1.9046799 128.0 +0.55941826 5.3976288 -1.9043423 128.0 +0.59304053 5.3987732 -1.9060302 128.0 +0.62648094 5.3978376 -1.907043 128.0 +0.66061735 5.4023013 -1.9100813 128.0 +0.69351298 5.3962789 -1.9094061 128.0 +0.72497749 5.3797946 -1.9050175 128.0 +0.75823635 5.3771091 -1.9056926 128.0 +0.79011875 5.3649054 -1.9029919 128.0 +0.82402188 5.3664689 -1.905355 128.0 +0.85574645 5.3538756 -1.9026543 128.0 +0.88565129 5.3308811 -1.8962401 128.0 +0.92090261 5.3401885 -1.9016416 128.0 +0.95398319 5.3362908 -1.9023167 128.0 +0.98705065 5.3321877 -1.9029919 128.0 +1.0202806 5.3288045 -1.9040047 128.0 +1.0529583 5.322444 -1.9040047 128.0 +1.0850315 5.3131161 -1.9029919 128.0 +1.1137333 5.2879362 -1.8962401 128.0 +1.1471564 5.2856026 -1.8979281 128.0 +1.1851075 5.303268 -1.907043 128.0 +1.219523 5.3041525 -1.9100813 128.0 +1.2477162 5.2782488 -1.9033295 128.0 +1.2785249 5.2640905 -1.9009664 128.0 +1.3108006 5.2561464 -1.9009664 128.0 +1.3395276 5.2343259 -1.8959025 128.0 +1.3752029 5.239665 -1.9009664 128.0 +1.4065936 5.2284017 -1.8999536 128.0 +1.4376478 5.2160425 -1.8986033 128.0 +1.4686034 5.2034993 -1.8972529 128.0 +1.500765 5.1952944 -1.8975905 128.0 +1.5315475 5.1823773 -1.8962401 128.0 +1.5638617 5.1746845 -1.8969153 128.0 +1.5955836 5.1649914 -1.8969153 128.0 +1.6255456 5.1497178 -1.8948898 128.0 +1.6568244 5.138751 -1.8945522 128.0 +1.6859697 5.121335 -1.8918515 128.0 +1.7227575 5.126955 -1.8979281 128.0 +1.7526573 5.111836 -1.8962401 128.0 +1.7811939 5.0929885 -1.8932018 128.0 +1.8117781 5.0801902 -1.8925266 128.0 +1.8432369 5.0698624 -1.8928642 128.0 +1.8694056 5.045217 -1.8878005 128.0 +1.900992 5.0354128 -1.8884757 128.0 +1.9311774 5.0218968 -1.8878005 128.0 +1.9598958 5.0046935 -1.885775 128.0 +1.9937041 5.000443 -1.8888133 128.0 +2.02718 4.9950938 -1.8915139 128.0 +2.0603058 4.9886513 -1.893877 128.0 +2.0930643 4.9811225 -1.8959025 128.0 +2.1239583 4.9690518 -1.8962401 128.0 +2.1547832 4.956789 -1.8965777 128.0 +2.1878202 4.949501 -1.8989408 128.0 +2.2158341 4.9308319 -1.8969153 128.0 +2.2480025 4.9214239 -1.8986033 128.0 +2.2793462 4.9100995 -1.899616 128.0 +2.3102343 4.8977237 -1.9002912 128.0 +2.3434963 4.8902473 -1.9029919 128.0 +2.3755178 4.8800077 -1.9046799 128.0 +2.4058335 4.8661838 -1.9050175 128.0 +2.4381802 4.8563781 -1.907043 128.0 +2.4683599 4.842165 -1.9073806 128.0 +2.5001874 4.8311081 -1.9090685 128.0 +2.5271573 4.8106761 -1.907043 128.0 +2.5566273 4.7950792 -1.907043 128.0 +2.5833139 4.7743344 -1.9050175 128.0 +2.6080306 4.7501421 -1.9016416 128.0 +2.6334636 4.7274714 -1.8989408 128.0 +2.6596429 4.7063069 -1.8969153 128.0 +2.6875341 4.6882653 -1.8962401 128.0 +2.7171962 4.6733146 -1.8969153 128.0 +2.7472544 4.6589866 -1.8979281 128.0 +2.7786877 4.6468897 -1.8999536 128.0 +2.810076 4.634582 -1.9019791 128.0 +2.8424037 4.6236677 -1.9046799 128.0 +2.8712182 4.6069388 -1.9050175 128.0 +2.9014425 4.5924182 -1.9063678 128.0 +2.9275362 4.5713577 -1.9050175 128.0 +2.9555304 4.553309 -1.9050175 128.0 +2.984448 4.5366611 -1.9056926 128.0 +3.0064852 4.5096478 -1.9019791 128.0 +3.0251424 4.4778552 -1.8962401 128.0 +3.0557508 4.4638696 -1.8982657 128.0 +3.0873744 4.4512239 -1.9009664 128.0 +3.1146286 4.4321961 -1.9009664 128.0 +3.1461322 4.4191365 -1.9036671 128.0 +3.1638288 4.3867698 -1.8979281 128.0 +3.1840231 4.3581533 -1.893877 128.0 +3.2258213 4.3589644 -1.9029919 128.0 +3.2587163 4.3473749 -1.9067054 128.0 +3.2824845 4.3235493 -1.9050175 128.0 +3.314115 4.3100429 -1.9080558 128.0 +3.3364506 4.2844276 -1.9056926 128.0 +3.3685048 4.2712665 -1.9090685 128.0 +3.38114 4.2335997 -1.901304 128.0 +3.4147475 4.2222886 -1.9056926 128.0 +3.4358201 4.1954303 -1.9029919 128.0 +3.4633005 4.1764436 -1.9040047 128.0 +3.4785724 4.142859 -1.8982657 128.0 +3.4947824 4.1106787 -1.8932018 128.0 +0 0 -0 128.0 +3.5536211 4.0774183 -1.8979281 128.0 +3.5785728 4.0555367 -1.8979281 128.0 +3.6027627 4.0328007 -1.8975905 128.0 +3.6299651 4.0134115 -1.8989408 128.0 +3.6532514 3.9896741 -1.8982657 128.0 +3.682142 3.9720156 -1.9006288 128.0 +3.7032239 3.9459157 -1.8989408 128.0 +3.7286625 3.9244838 -1.899616 128.0 +3.7591972 3.9083157 -1.9029919 128.0 +3.7863905 3.8885484 -1.9046799 128.0 +3.8108397 3.8659127 -1.9050175 128.0 +3.8451264 3.8531184 -1.9104189 128.0 +3.8693652 3.8301148 -1.9107565 128.0 +3.8927937 3.8063009 -1.9107565 128.0 +3.9038892 3.7705717 -1.9046799 128.0 +3.9303565 3.7497959 -1.9063678 128.0 +3.9498661 3.7223811 -1.9046799 128.0 +3.969187 3.6948681 -1.9029919 128.0 +3.985548 3.6647093 -1.8999536 128.0 +4.0072622 3.6395526 -1.899616 128.0 +4.0260158 3.611753 -1.8979281 128.0 +4.0544415 3.5926006 -1.9009664 128.0 +4.0820751 3.5726151 -1.9036671 128.0 +4.1067677 3.5499632 -1.9050175 128.0 +4.1349154 3.5301991 -1.9080558 128.0 +4.157218 3.505368 -1.9083933 128.0 +4.1793714 3.4803963 -1.9087309 128.0 +4.2028289 3.4564805 -1.9097437 128.0 +4.2232275 3.4300337 -1.9094061 128.0 +4.246397 3.405823 -1.9104189 128.0 +4.2642636 3.3773656 -1.9090685 128.0 +4.2871308 3.3528767 -1.9100813 128.0 +4.3046432 3.3242068 -1.9087309 128.0 +4.3212166 3.2948775 -1.907043 128.0 +4.339848 3.2671685 -1.9063678 128.0 +4.3462157 3.23037 -1.9002912 128.0 +4.3697495 3.2064259 -1.9019791 128.0 +4.38553 3.1767919 -1.9002912 128.0 +4.3758459 3.1290154 -1.8874629 128.0 +4.4049592 3.109164 -1.8918515 128.0 +4.44944 3.0998356 -1.9029919 128.0 +4.4683762 3.0724759 -1.9029919 128.0 +4.489481 3.0465865 -1.9040047 128.0 +4.506526 3.0179346 -1.9033295 128.0 +4.5249591 2.9902263 -1.9033295 128.0 +4.5416446 2.9613769 -1.9026543 128.0 +4.5605211 2.9339635 -1.9029919 128.0 +4.5800271 2.9069345 -1.9036671 128.0 +4.5993733 2.8797765 -1.9043423 128.0 +4.6385789 2.8648574 -1.9134572 128.0 +4.6335621 2.8226283 -1.9040047 128.0 +4.6524081 2.7951138 -1.9046799 128.0 +4.6759491 2.7703536 -1.9073806 128.0 +4.6920471 2.7411354 -1.907043 128.0 +4.7161188 2.7165229 -1.9100813 128.0 +4.7277875 2.6847451 -1.9080558 128.0 +4.7466354 2.6570647 -1.9090685 128.0 +4.7603774 2.6265256 -1.9080558 128.0 +4.7739229 2.5959179 -1.907043 128.0 +4.7889318 2.5661321 -1.9067054 128.0 +4.8045869 2.5366995 -1.9067054 128.0 +4.8250718 2.5097778 -1.9087309 128.0 +4.8420558 2.4809833 -1.9094061 128.0 +4.8613896 2.453347 -1.9110941 128.0 +4.8771944 2.4238908 -1.9114317 128.0 +4.8936663 2.3947468 -1.9121068 128.0 +4.908268 2.3646748 -1.9121068 128.0 +4.9192829 2.3329 -1.9107565 128.0 +4.945446 2.3082466 -1.9154826 128.0 +4.9620819 2.2790372 -1.9164954 128.0 +4.97683 2.2489352 -1.916833 128.0 +4.9922562 2.2191205 -1.9175082 128.0 +5.0057783 2.1884468 -1.9175082 128.0 +5.0121942 2.154716 -1.9148074 128.0 +5.0322571 2.1268535 -1.9175082 128.0 +5.0469508 2.0966582 -1.9181833 128.0 +5.0562348 2.0642281 -1.916833 128.0 +5.0723 2.0345666 -1.9181833 128.0 +5.0838127 2.0030601 -1.9178458 128.0 +5.0942516 1.9711493 -1.9171706 128.0 +5.1027308 1.938517 -1.9158202 128.0 +5.1198211 1.9091444 -1.9178458 128.0 +5.1305552 1.8773704 -1.9175082 128.0 +5.1455216 1.8471268 -1.9188585 128.0 +5.1683006 1.8195844 -1.9232472 128.0 +5.1722498 1.7853804 -1.9205465 128.0 +5.1857824 1.7545156 -1.9215592 128.0 +5.1910896 1.7208856 -1.9195337 128.0 +5.2167702 1.6939445 -1.9252727 128.0 +5.227066 1.6619031 -1.9252727 128.0 +5.2317719 1.6281205 -1.9232472 128.0 +5.2362609 1.5943429 -1.9212216 128.0 +5.2504559 1.5635273 -1.9229096 128.0 +5.2554317 1.5299659 -1.9212216 128.0 +5.268342 1.4987209 -1.922572 128.0 +5.2819734 1.467627 -1.92426 128.0 +5.2917876 1.4354362 -1.9245975 128.0 +5.2995853 1.4026985 -1.92426 128.0 +5.3053584 1.3694485 -1.9232472 128.0 +5.3054457 1.3348022 -1.9202089 128.0 +5.3107934 1.301551 -1.9191961 128.0 +5.3214264 1.2695956 -1.9202089 128.0 +5.3291163 1.23692 -1.9202089 128.0 +5.3347692 1.2037834 -1.9195337 128.0 +5.3540077 1.1736484 -1.9239224 128.0 +5.368474 1.1423424 -1.9266231 128.0 +5.3689289 1.1080483 -1.92426 128.0 +5.381165 1.0761924 -1.9262855 128.0 +5.3848944 1.0426168 -1.9252727 128.0 +5.3884149 1.0090362 -1.92426 128.0 +5.394505 0.97595447 -1.92426 128.0 +5.3966827 0.94218826 -1.9229096 128.0 +5.4014339 0.9089008 -1.922572 128.0 +5.4059801 0.87559056 -1.9222344 128.0 +5.4159012 0.84312791 -1.9239224 128.0 +5.4172487 0.80932409 -1.922572 128.0 +5.4528618 0.7804727 -1.9337125 128.0 +5.4547501 0.74661672 -1.9326997 128.0 +5.464829 0.71386492 -1.9347252 128.0 +5.4775128 0.68136626 -1.9377635 128.0 +5.478786 0.64741248 -1.9367508 128.0 +5.4714303 0.61252558 -1.9326997 128.0 +5.4807019 0.57953626 -1.9347252 128.0 +5.4879012 0.54626966 -1.9360756 128.0 +5.486464 0.51214844 -1.9343876 128.0 +5.4810634 0.47773826 -1.9313493 128.0 +5.4829535 0.44402203 -1.9310117 128.0 +5.4808812 0.41001946 -1.9293238 128.0 +5.4823551 0.37631714 -1.9289862 128.0 +5.4883184 0.34290603 -1.9303366 128.0 +5.4921989 0.3093299 -1.9310117 128.0 +5.4977541 0.27581352 -1.9323621 128.0 +5.5049853 0.24232352 -1.9343876 128.0 +5.5063686 0.20854099 -1.9343876 128.0 +5.5188341 0.17510968 -1.9384387 128.0 +5.5245094 0.14136419 -1.9401267 128.0 +5.5290375 0.10753727 -1.9414769 128.0 +5.5211225 0.073496327 -1.9384387 128.0 +5.5242934 0.039638441 -1.9394515 128.0 +5.5187845 0.0057349838 -1.9374259 128.0 +5.5130682 -0.02809938 -1.9354004 128.0 +5.509027 -0.061884385 -1.93405 128.0 +5.5076027 -0.095669694 -1.9337125 128.0 +5.5134993 -0.12961629 -1.9360756 128.0 +5.5097775 -0.16336055 -1.9350628 128.0 +5.5105529 -0.19723204 -1.935738 128.0 +5.5111198 -0.23111919 -1.9364132 128.0 +5.5142989 -0.26515612 -1.9381011 128.0 +5.5078683 -0.29873168 -1.9364132 128.0 +5.5049925 -0.33246505 -1.9360756 128.0 +5.5019093 -0.36617434 -1.935738 128.0 +5.4995589 -0.39992654 -1.935738 128.0 +5.4913712 -0.43321991 -1.9337125 128.0 +5.484858 -0.46658731 -1.9323621 128.0 +5.484704 -0.50048941 -1.9333749 128.0 +5.4796562 -0.53395104 -1.9326997 128.0 +5.4762769 -0.56756353 -1.9326997 128.0 +5.4736271 -0.60125732 -1.9330373 128.0 +5.4763799 -0.63559073 -1.9354004 128.0 +5.4686394 -0.66872448 -1.93405 128.0 +5.4625659 -0.70202696 -1.9333749 128.0 +5.4572229 -0.7354058 -1.9330373 128.0 +5.456336 -0.76940227 -1.9343876 128.0 +5.4496498 -0.80259311 -1.9337125 128.0 +5.4455528 -0.83615923 -1.93405 128.0 +5.4468265 -0.87059623 -1.9364132 128.0 +5.4404535 -0.90384674 -1.9360756 128.0 +5.4338775 -0.93705183 -1.935738 128.0 +5.4289522 -0.97054142 -1.9360756 128.0 +5.4173412 -1.002807 -1.93405 128.0 +5.4166336 -1.0370899 -1.9360756 128.0 +5.4147849 -1.0712193 -1.9377635 128.0 +5.4053435 -1.1038588 -1.9367508 128.0 +5.4012318 -1.1375864 -1.9377635 128.0 +5.3959899 -1.1711055 -1.9384387 128.0 +5.3914585 -1.2048082 -1.9394515 128.0 +5.3857989 -1.2382886 -1.9401267 128.0 +5.3790159 -1.2715284 -1.9404641 128.0 +5.3656244 -1.303177 -1.9384387 128.0 +5.3529606 -1.3349367 -1.9367508 128.0 +5.3401089 -1.3665903 -1.9350628 128.0 +5.3370862 -1.4007642 -1.9370884 128.0 +5.3074837 -1.4278628 -1.9293238 128.0 +5.3167725 -1.4654028 -1.9360756 128.0 +5.2986212 -1.4954423 -1.9326997 128.0 +5.2902503 -1.528187 -1.9330373 128.0 +5.2699413 -1.5574181 -1.9289862 128.0 +5.278307 -1.5951694 -1.935738 128.0 +5.2756152 -1.6297486 -1.9384387 128.0 +5.2744923 -1.6649212 -1.9418145 128.0 +5.257906 -1.695232 -1.9394515 128.0 +5.2509818 -1.7286391 -1.9408017 128.0 +5.2393837 -1.7605263 -1.9404641 128.0 +5.2267017 -1.7920309 -1.9397891 128.0 +5.2120538 -1.822825 -1.9384387 128.0 +5.1972246 -1.8535067 -1.9370884 128.0 +5.1786761 -1.8827889 -1.9343876 128.0 +5.1537862 -1.9096245 -1.9293238 128.0 +5.1181941 -1.9322369 -1.9202089 128.0 +5.075491 -1.9517826 -1.9083933 128.0 +5.0292358 -1.9695047 -1.8952274 128.0 +4.9409847 -1.9700029 -1.8658572 128.0 +4.8869371 -1.9832957 -1.849653 128.0 +4.7972422 -1.9812709 -1.8196076 128.0 +4.7285867 -1.9869711 -1.7976644 128.0 +4.6747584 -1.9981925 -1.7814602 128.0 +4.6183825 -2.0077033 -1.7642431 128.0 +4.5663719 -2.0185008 -1.7487141 128.0 +4.5229907 -2.0325937 -1.7365609 128.0 +4.4856029 -2.0489681 -1.7267709 128.0 +4.4447703 -2.0633757 -1.7156305 128.0 +4.4005256 -2.0757537 -1.7031397 128.0 +4.3707285 -2.0945811 -1.696388 128.0 +4.3450985 -2.1151812 -1.6913241 128.0 +4.2712822 -2.1117704 -1.6670178 128.0 +4.2742281 -2.145962 -1.673432 128.0 +4.1754379 -2.1285496 -1.6389979 128.0 +4.1405625 -2.1428826 -1.6302207 128.0 +4.1206694 -2.1647468 -1.62752 128.0 +4.1122932 -2.1926467 -1.6295455 128.0 +4.0904827 -2.2133591 -1.6261696 128.0 +4.0627975 -2.2307158 -1.6204306 128.0 +4.0144949 -2.236366 -1.606252 128.0 +3.9531648 -2.2340996 -1.5866718 128.0 +3.8666987 -2.2166555 -1.5566264 128.0 +3.8554664 -2.2417586 -1.5576392 128.0 +3.7637959 -2.2194796 -1.5252308 128.0 +3.569134 -2.1343348 -1.4496109 128.0 +3.588973 -2.1762013 -1.4634521 128.0 +3.4913507 -2.1464272 -1.4280053 128.0 +3.4397681 -2.1439142 -1.4118011 128.0 +3.407449 -2.152915 -1.403699 128.0 +3.8959639 -2.4950793 -1.6173923 128.0 +3.5939612 -2.3329244 -1.4948478 128.0 +3.3129802 -2.1795788 -1.3804054 128.0 +3.758522 -2.5058069 -1.578232 128.0 +3.0761583 -2.0783393 -1.2895942 128.0 +3.0711157 -2.1024919 -1.2929701 128.0 +3.0473282 -2.1137865 -1.2882439 128.0 +2.9950213 -2.1048462 -1.2710268 128.0 +2.9406397 -2.0937071 -1.2527971 128.0 +2.9117043 -2.1001494 -1.2457078 128.0 +2.9132051 -2.128525 -1.2521219 128.0 +2.8176119 -2.0853324 -1.2153249 128.0 +2.8025038 -2.1008883 -1.2143121 128.0 +2.7805634 -2.1112149 -1.210261 128.0 +2.7444232 -2.110451 -1.1997957 128.0 +2.6772044 -2.0850358 -1.1751518 128.0 +2.6517949 -2.0915153 -1.1694129 128.0 +2.6308205 -2.1012862 -1.1656994 128.0 +2.6068985 -2.1085112 -1.1606356 128.0 +2.5829875 -2.1155219 -1.1555717 128.0 +2.5540166 -2.1181135 -1.1481447 128.0 +2.540972 -2.1337447 -1.1481447 128.0 +2.517791 -2.1407607 -1.1434186 128.0 +2.4468195 -2.1064324 -1.1160738 128.0 +2.3870113 -2.0805919 -1.093793 128.0 +2.3784351 -2.0989356 -1.0958186 128.0 +2.3444512 -2.0946779 -1.085691 128.0 +2.3315542 -2.1090238 -1.085691 128.0 +2.3164868 -2.1213834 -1.0846782 128.0 +2.304117 -2.1361971 -1.0850158 128.0 +2.2957711 -2.1548033 -1.0873789 128.0 +2.2818239 -2.168201 -1.0870413 128.0 +2.269834 -2.1834662 -1.0877165 128.0 +2.240207 -2.1815934 -1.0796144 128.0 +2.2207453 -2.1893513 -1.0765761 128.0 +2.2132668 -2.20892 -1.0796144 128.0 +2.1943736 -2.2171073 -1.0769137 128.0 +2.1754634 -2.2251461 -1.0742129 128.0 +2.1630771 -2.2398067 -1.0748881 128.0 +2.1473439 -2.250994 -1.0738754 128.0 +2.130909 -2.2613873 -1.072525 128.0 +2.1169932 -2.2744198 -1.072525 128.0 +2.1055465 -2.290138 -1.0738754 128.0 +2.097784 -2.3099818 -1.0772513 128.0 +2.077913 -2.3165045 -1.0742129 128.0 +2.0561683 -2.3207572 -1.0701619 128.0 +2.0400298 -2.3312051 -1.0691491 128.0 +2.0226095 -2.3401182 -1.0674613 128.0 +2.0051565 -2.3489056 -1.0657732 128.0 +1.9900992 -2.360445 -1.0654356 128.0 +1.9719639 -2.3682721 -1.0634102 128.0 +1.9699525 -2.3955934 -1.0704995 128.0 +1.9534358 -2.4054439 -1.0694867 128.0 +1.9392285 -2.418119 -1.0698243 128.0 +1.9196789 -2.4240694 -1.0671237 128.0 +1.9018693 -2.4320958 -1.0654356 128.0 +1.8880612 -2.4452095 -1.0661108 128.0 +1.8735929 -2.4574969 -1.0664485 128.0 +1.8567802 -2.4666908 -1.0654356 128.0 +1.8438561 -2.4810591 -1.0667861 128.0 +1.8347241 -2.5006735 -1.0704995 128.0 +1.8127186 -2.502737 -1.0664485 128.0 +1.7923999 -2.5069218 -1.0634102 128.0 +1.7764411 -2.5171034 -1.0630726 128.0 +1.7512766 -2.5140548 -1.056996 128.0 +1.7331507 -2.5208752 -1.055308 128.0 +1.7239937 -2.5408082 -1.0593591 128.0 +1.7130855 -2.5583773 -1.0623974 128.0 +1.7056596 -2.5814049 -1.0677987 128.0 +1.6918452 -2.5949757 -1.0691491 128.0 +1.6723254 -2.5997667 -1.0667861 128.0 +1.6694584 -2.6306412 -1.0755633 128.0 +1.655284 -2.6440263 -1.0769137 128.0 +1.6494178 -2.6709504 -1.084003 128.0 +1.6212438 -2.6617286 -1.0759009 128.0 +1.6073054 -2.6756604 -1.0775888 128.0 +1.5846194 -2.6749449 -1.0732002 128.0 +1.5672266 -2.6829922 -1.072525 128.0 +1.5450959 -2.6827705 -1.0684739 128.0 +1.5272111 -2.6897449 -1.0674613 128.0 +1.5106784 -2.6990652 -1.0674613 128.0 +1.493634 -2.7074597 -1.0671237 128.0 +1.4823899 -2.7264962 -1.0711746 128.0 +1.4669665 -2.7380297 -1.0721874 128.0 +1.4492595 -2.7453146 -1.0715122 128.0 +1.4297807 -2.749145 -1.0694867 128.0 +1.4128854 -2.7578664 -1.0694867 128.0 +1.3938161 -2.7622821 -1.0677987 128.0 +1.3789358 -2.774997 -1.0694867 128.0 +1.3693312 -2.7986238 -1.0755633 128.0 +1.3554024 -2.8137572 -1.078264 128.0 +1.34618 -2.8390303 -1.0850158 128.0 +1.3351055 -2.8608837 -1.0904171 128.0 +1.3202769 -2.8750093 -1.0927804 128.0 +1.3049374 -2.8882029 -1.0948058 128.0 +1.2868087 -2.8952951 -1.0944682 128.0 +1.2644938 -2.8927872 -1.0904171 128.0 +1.2515539 -2.9117332 -1.0948058 128.0 +1.2270671 -2.9037516 -1.0887293 128.0 +1.2012808 -2.8921027 -1.0813023 128.0 +1.1892061 -2.9133623 -1.0867038 128.0 +1.1727096 -2.9240987 -1.0880541 128.0 +1.1533651 -2.9277363 -1.0867038 128.0 +1.1370779 -2.9391472 -1.0883917 128.0 +1.1186879 -2.945189 -1.0880541 128.0 +1.1012534 -2.9537616 -1.0887293 128.0 +1.0895792 -2.978142 -1.095481 128.0 +1.0652413 -2.9679391 -1.0890669 128.0 +1.0445091 -2.9673166 -1.0863662 128.0 +1.0238247 -2.9665518 -1.0836655 128.0 +1.0049995 -2.9709947 -1.0829903 128.0 +0.9855659 -2.9735315 -1.0816399 128.0 +0.96468514 -2.9714656 -1.0786016 128.0 +0.94186997 -2.9629765 -1.0732002 128.0 +0.92730874 -2.9803839 -1.0775888 128.0 +0.91558588 -3.0076284 -1.085691 128.0 +0.89845777 -3.0177004 -1.0873789 128.0 +0.88545126 -3.0421352 -1.0944682 128.0 +0.88248348 -3.1027377 -1.1150612 128.0 +0.85889167 -3.0917695 -1.1089846 128.0 +0.84212321 -3.1051574 -1.1120229 128.0 +0.81992257 -3.0984368 -1.1076342 128.0 +0.78418714 -3.0386999 -1.0836655 128.0 +0.75794613 -3.0133309 -1.072525 128.0 +0.73518401 -3.0005548 -1.0661108 128.0 +0.7130444 -2.9894445 -1.0603719 128.0 +0.69575256 -2.9983478 -1.0620598 128.0 +0.67920727 -3.0108242 -1.065098 128.0 +0.66394639 -3.0296462 -1.0704995 128.0 +0.64299262 -3.022615 -1.0664485 128.0 +0.62557602 -3.0320346 -1.0684739 128.0 +0.6054827 -3.0284319 -1.0657732 128.0 +0.5870682 -3.0330143 -1.0661108 128.0 +0.57849973 -3.0902209 -1.085691 128.0 +0.55835408 -3.0872285 -1.0833279 128.0 +0.55057573 -3.154577 -1.1066214 128.0 +0.53386575 -3.173676 -1.1123605 128.0 +0.51182276 -3.1610961 -1.1066214 128.0 +0.49125811 -3.1567364 -1.1039207 128.0 +0.46520019 -3.1150055 -1.0877165 128.0 +0.44714561 -3.1252556 -1.0904171 128.0 +0.42770556 -3.1260753 -1.0897421 128.0 +0.40888226 -3.1314409 -1.0907547 128.0 +0.38896281 -3.1282861 -1.0887293 128.0 +0.37042385 -3.1362226 -1.0907547 128.0 +0.35337403 -3.1580808 -1.0978441 128.0 +0.33329642 -3.1536372 -1.095481 128.0 +0.31291342 -3.1453195 -1.0917675 128.0 +0.29553446 -3.167799 -1.0991945 128.0 +0.27641886 -3.1733036 -1.1005448 128.0 +0.2551935 -3.1533611 -1.0927804 128.0 +0.2354183 -3.1492355 -1.0907547 128.0 +0.21512258 -3.1365345 -1.085691 128.0 +0.19563805 -3.1340377 -1.0843406 128.0 +0.17635128 -3.1342392 -1.084003 128.0 +0.15678599 -3.1286817 -1.0816399 128.0 +0.13733703 -3.1239424 -1.0796144 128.0 +0.11870169 -3.1388357 -1.0846782 128.0 +0.099439919 -3.1395049 -1.0846782 128.0 +0.080415882 -3.1494658 -1.0880541 128.0 +0.06140196 -3.1658988 -1.093793 128.0 +0.041899621 -3.1605687 -1.0917675 128.0 +0.022546886 -3.1664138 -1.093793 128.0 +0.0031187588 -3.167434 -1.0941306 128.0 +-0.016335223 -3.1711586 -1.095481 128.0 +-0.035834793 -3.1747637 -1.0968313 128.0 +-0.055314101 -3.174484 -1.0968313 128.0 +-0.075033918 -3.1844361 -1.1005448 128.0 +-0.094571836 -3.1839159 -1.1005448 128.0 +-0.11447579 -3.1936233 -1.1042583 128.0 +-0.13469929 -3.2079082 -1.1096597 128.0 +-0.15559891 -3.2324071 -1.1187747 128.0 +-0.1806733 -3.3282027 -1.1535462 128.0 +-0.19990118 -3.3073003 -1.1464568 128.0 +-0.219816 -3.3003762 -1.1444314 128.0 +-0.240881 -3.310231 -1.1484823 128.0 +-0.26052201 -3.3002453 -1.145444 128.0 +-0.27957129 -3.2845159 -1.1403803 128.0 +-0.29877925 -3.2724273 -1.1366668 128.0 +-0.31930897 -3.2752166 -1.1383547 128.0 +-0.33969021 -3.2760046 -1.1393675 128.0 +-0.35834706 -3.2607591 -1.1346413 128.0 +-0.37823951 -3.2575641 -1.1343037 128.0 +-0.39890555 -3.260788 -1.1363292 128.0 +-0.4208245 -3.273217 -1.1417305 128.0 +-0.44127759 -3.2733717 -1.1427433 128.0 +-0.46279931 -3.2808554 -1.1464568 128.0 +-0.48072827 -3.2630539 -1.1410555 128.0 +-0.72763735 -4.7384486 -1.677483 128.0 +-0.7552132 -4.7245998 -1.6741072 128.0 +-0.78372604 -4.7170911 -1.6730944 128.0 +-0.81297457 -4.7140489 -1.6737696 128.0 +-0.8422153 -4.710825 -1.6744447 128.0 +-0.87247461 -4.7129731 -1.6771455 128.0 +-0.90084565 -4.7047577 -1.6761327 128.0 +-0.92969656 -4.6991415 -1.6761327 128.0 +-0.95926553 -4.6970377 -1.677483 128.0 +-0.98884368 -4.6947474 -1.6788334 128.0 +-1.0208247 -4.70331 -1.6842347 128.0 +-1.0459706 -4.6804223 -1.6781582 128.0 +-1.0727718 -4.6656599 -1.6751199 128.0 +-1.1013795 -4.6589894 -1.6751199 128.0 +-1.1319445 -4.6603765 -1.6781582 128.0 +-1.1605188 -4.6533432 -1.6781582 128.0 +-1.1913823 -4.6552539 -1.6815341 128.0 +-1.2208796 -4.6514983 -1.6828845 128.0 +-1.23204 -4.579381 -1.6589156 128.0 +-1.1403437 -4.1370544 -1.497211 128.0 +-1.2656498 -4.4841957 -1.629208 128.0 +-1.334143 -4.6183267 -1.6822093 128.0 +-1.3600551 -4.6019292 -1.679171 128.0 +-1.3890831 -4.5962005 -1.6801838 128.0 +-1.418092 -4.5902886 -1.6811965 128.0 +-1.4476472 -4.5859895 -1.6828845 128.0 +-1.4769142 -4.5806041 -1.6842347 128.0 +-1.5052867 -4.57235 -1.6845723 128.0 +-1.5324144 -4.5603504 -1.6835597 128.0 +-1.5563996 -4.5392866 -1.679171 128.0 +-1.5848441 -4.5314283 -1.6798462 128.0 +-1.6151476 -4.5287113 -1.6825469 128.0 +-1.6454774 -4.5257931 -1.6852475 128.0 +-1.6784478 -4.5297341 -1.6906489 128.0 +-1.7075398 -4.5228729 -1.6919993 128.0 +-1.7389752 -4.521975 -1.6957128 128.0 +-1.7704636 -4.5208611 -1.6994263 128.0 +-1.8009582 -4.5169082 -1.702127 128.0 +-1.2025824 -2.9627969 -1.1049335 128.0 +-1.2203798 -2.9544921 -1.1045959 128.0 +-1.8655654 -4.4396019 -1.6852475 128.0 +-1.89721 -4.4384584 -1.6892986 128.0 +-1.927785 -4.4345031 -1.6923369 128.0 +-1.9576218 -4.428618 -1.6947 128.0 +-1.9940169 -4.4371295 -1.7028022 128.0 +-2.008692 -4.3974113 -1.6919993 128.0 +-1.5700114 -3.3817716 -1.2953333 128.0 +-1.5835048 -3.3567498 -1.2892566 128.0 +-1.5959371 -3.3299928 -1.2825049 128.0 +-1.6159276 -3.3192911 -1.2821673 128.0 +-1.6379324 -3.3126888 -1.2835176 128.0 +-1.6603392 -3.3067827 -1.2852056 128.0 +-1.6840175 -3.303242 -1.2879063 128.0 +-1.7180965 -3.3195992 -1.2987092 128.0 +-1.7471867 -3.3256614 -1.3054608 128.0 +-2.2546384 -4.2285829 -1.6768079 128.0 +-2.2783027 -4.2105293 -1.6751199 128.0 +-2.3004715 -4.1898694 -1.6724192 128.0 +-2.3352969 -4.192122 -1.679171 128.0 +-2.3605123 -4.1768947 -1.6788334 128.0 +-2.3879693 -4.1655989 -1.6801838 128.0 +-2.4167953 -4.1565647 -1.6825469 128.0 +-2.44082 -4.1392245 -1.6815341 128.0 +-2.4656887 -4.1233621 -1.6811965 128.0 +-2.4899669 -4.1065454 -1.6805214 128.0 +-2.5175817 -4.0951996 -1.6822093 128.0 +-2.5396752 -4.0748816 -1.6801838 128.0 +-2.5646303 -4.0592217 -1.6801838 128.0 +-2.5889814 -4.0426164 -1.6798462 128.0 +-2.6137376 -4.0266547 -1.6798462 128.0 +-2.6383955 -4.0105414 -1.6798462 128.0 +-2.6634762 -3.99506 -1.6801838 128.0 +-2.6705523 -3.9529014 -1.6690433 128.0 +-2.7021997 -3.9473157 -1.6737696 128.0 +-2.7220778 -3.924473 -1.6710688 128.0 +-2.7461066 -3.9076967 -1.6710688 128.0 +-2.7596607 -3.8762031 -1.6646546 128.0 +-2.79055 -3.8691225 -1.6690433 128.0 +-2.8075752 -3.8428061 -1.6649922 128.0 +-2.8277421 -3.8209667 -1.6629667 128.0 +-2.8449242 -3.7952585 -1.6592532 128.0 +-2.8624666 -3.7702334 -1.6558774 128.0 +-2.8769405 -3.741405 -1.6508136 128.0 +-2.3030503 -2.9572058 -1.3024225 128.0 +-2.321152 -2.9430189 -1.3024225 128.0 +-2.3362296 -2.9250433 -1.3007346 128.0 +-2.9809136 -3.6857772 -1.6582404 128.0 +-3.001684 -3.6652324 -1.6572278 128.0 +-3.0211129 -3.6431224 -1.6555398 128.0 +-3.0440152 -3.6252375 -1.6558774 128.0 +-3.0625441 -3.6021883 -1.6538519 128.0 +-3.0815189 -3.579762 -1.6521639 128.0 +-3.1077547 -3.5657544 -1.6545271 128.0 +-3.130198 -3.5473242 -1.6548647 128.0 +-3.1531591 -3.5294549 -1.6555398 128.0 +-3.1690738 -3.5037577 -1.6525015 128.0 +-3.1917841 -3.4856353 -1.6531767 128.0 +-3.210552 -3.4632237 -1.6518263 128.0 +-3.2323856 -3.4441454 -1.6521639 128.0 +-3.2528093 -3.4235644 -1.6518263 128.0 +-3.2776694 -3.4076121 -1.6538519 128.0 +-3.3123057 -3.4015999 -1.6609412 128.0 +-3.3093281 -3.3570774 -1.648788 128.0 +-3.3285346 -3.3353758 -1.6481129 128.0 +-3.3422482 -3.3082671 -1.644737 128.0 +-3.373925 -3.2988853 -1.650476 128.0 +-3.386656 -3.2709274 -1.6467625 128.0 +-3.4107485 -3.2539845 -1.648788 128.0 +-3.438185 -3.2400973 -1.6525015 128.0 +-3.459379 -3.2202227 -1.6531767 128.0 +-3.47838 -3.1982987 -1.6528391 128.0 +-3.4979389 -3.1768954 -1.6528391 128.0 +-3.5299773 -3.166688 -1.6589156 128.0 +-3.5514545 -3.1468418 -1.6599284 128.0 +-3.5714047 -3.1256111 -1.660266 128.0 +-3.5983486 -3.1104105 -1.6639795 128.0 +-3.6187978 -3.0894952 -1.6646546 128.0 +-3.6427233 -3.0714805 -1.6670178 128.0 +-3.671627 -3.0575051 -1.671744 128.0 +-3.6954072 -3.0391045 -1.6741072 128.0 +-3.718369 -3.0199337 -1.6761327 128.0 +-3.7346261 -2.9952943 -1.6751199 128.0 +-3.7521968 -2.9717383 -1.6747823 128.0 +-3.7711017 -2.9492393 -1.6751199 128.0 +-3.7868922 -2.9243186 -1.6741072 128.0 +-3.8040156 -2.9004567 -1.6737696 128.0 +-3.8255007 -2.8798921 -1.6754575 128.0 +-3.8544309 -2.8647885 -1.6805214 128.0 +-3.8787661 -2.8460965 -1.6835597 128.0 +-3.8984432 -2.8239002 -1.6845723 128.0 +-3.9218221 -2.8043072 -1.687273 128.0 +-3.9481828 -2.7867048 -1.6913241 128.0 +-3.9737027 -2.7683463 -1.6950376 128.0 +-3.9921653 -2.7449787 -1.6957128 128.0 +-4.0011449 -2.7151453 -1.6923369 128.0 +-4.0232038 -2.6942105 -1.6947 128.0 +-4.0459414 -2.6736259 -1.6974007 128.0 +-4.0819817 -2.6616049 -1.7058405 128.0 +-4.1045685 -2.640583 -1.7085412 128.0 +-4.133409 -2.6234198 -1.7139425 128.0 +-4.1693726 -2.610498 -1.7223822 128.0 +-4.1877141 -2.58635 -1.723395 128.0 +-4.2002892 -2.5586469 -1.7220447 128.0 +-4.2352738 -2.544462 -1.7301468 128.0 +-4.2621441 -2.5251451 -1.7348731 128.0 +-4.2799959 -2.50037 -1.7358857 128.0 +-4.3074918 -2.4811099 -1.7409496 128.0 +-4.3300009 -2.4588168 -1.7439879 128.0 +-4.3499341 -2.4349611 -1.7460134 128.0 +-4.3672652 -2.4095888 -1.7470262 128.0 +-4.384449 -2.3840957 -1.7480389 128.0 +-4.4114394 -2.3638179 -1.7531028 128.0 +-4.4375138 -2.342859 -1.757829 128.0 +-4.459321 -2.3194969 -1.7608672 128.0 +-4.4810085 -2.2959549 -1.7639056 128.0 +-4.5008941 -2.2713859 -1.7662687 128.0 +-4.5164323 -2.2445641 -1.7669439 128.0 +-4.5377288 -2.2205338 -1.7699822 128.0 +-4.5690761 -2.2012298 -1.7770715 128.0 +-4.591001 -2.1771872 -1.7804474 128.0 +-4.5181274 -2.1087606 -1.746351 128.0 +-4.5172958 -2.0747113 -1.7409496 128.0 +-4.5496693 -2.0558712 -1.7487141 128.0 +-4.5897222 -2.0401533 -1.759517 128.0 +-4.6219902 -2.0206268 -1.7672814 128.0 +-4.662838 -2.004499 -1.7784219 128.0 +-4.7114639 -1.9912441 -1.7926006 128.0 +-4.759232 -1.9771061 -1.8064417 128.0 +-4.8078742 -1.9628123 -1.8206204 128.0 +-4.8757381 -1.9557062 -1.842226 128.0 +-4.9533272 -1.9516367 -1.8675451 128.0 +-5.0310469 -1.9466877 -1.8928642 128.0 +-5.1044908 -1.9391857 -1.9164954 128.0 +-5.1648002 -1.9259207 -1.9350628 128.0 +-5.2118783 -1.9071349 -1.9485663 128.0 +-5.2447443 -1.8827538 -1.9566684 128.0 +-5.2624125 -1.8527259 -1.9590316 128.0 +-5.2888074 -1.8256239 -1.9647706 128.0 +-5.3079343 -1.7958537 -1.9678088 128.0 +-5.3242145 -1.7650286 -1.9698343 128.0 +-5.3430014 -1.7349435 -1.9728726 128.0 +-5.3517523 -1.7015563 -1.9721975 128.0 +-5.3674846 -1.6703651 -1.974223 128.0 +-5.3722301 -1.6357539 -1.9721975 128.0 +-5.3830676 -1.6030284 -1.9725351 128.0 +-5.3855724 -1.567863 -1.9698343 128.0 +-5.3969021 -1.5353035 -1.9705095 128.0 +-5.4007792 -1.5006474 -1.968484 128.0 +-5.4135194 -1.4684666 -1.9698343 128.0 +-5.4105983 -1.4320903 -1.9654458 128.0 +-5.4147267 -1.3976879 -1.9637578 128.0 +-5.416811 -1.3628293 -1.9613947 128.0 +-5.4387846 -1.3329287 -1.9664584 128.0 +-5.4422832 -1.2984393 -1.9647706 128.0 +-5.4483137 -1.2645957 -1.9640954 128.0 +-5.4550524 -1.2309345 -1.9637578 128.0 +-5.4625025 -1.1974398 -1.9637578 128.0 +-5.4706678 -1.1640959 -1.9640954 128.0 +-5.4841604 -1.1318389 -1.9664584 128.0 +-5.4983859 -1.0996447 -1.9691592 128.0 +-5.5096507 -1.0667815 -1.9708471 128.0 +-5.5244193 -1.0345148 -1.9738854 128.0 +-5.5334415 -1.001101 -1.9748982 128.0 +-5.543189 -0.96777749 -1.9762485 128.0 +-5.5499511 -0.93390316 -1.9765861 128.0 +-5.561152 -0.90073514 -1.9786117 128.0 +-5.561924 -0.86587125 -1.9769237 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-5.2559419 1.0406026 -1.9463221 128.0 +-5.267828 1.0765911 -1.9532804 128.0 +-5.2574534 1.1081195 -1.9518888 128.0 +-5.2450585 1.1391627 -1.9498012 128.0 +-5.2333956 1.1703004 -1.9480617 128.0 +-5.2252026 1.2021794 -1.9477137 128.0 +-5.2186403 1.234434 -1.9480617 128.0 +-5.2155223 1.2675397 -1.9498012 128.0 +-5.2076468 1.2995178 -1.9498012 128.0 +-5.2041159 1.3326106 -1.9515408 128.0 +-5.1958413 1.3645173 -1.9515408 128.0 +-5.1828446 1.3951533 -1.9498012 128.0 +-5.1696677 1.4256812 -1.9480617 128.0 +-5.156312 1.4561 -1.9463221 128.0 +-5.1373734 1.4848455 -1.942495 128.0 +-5.1227722 1.5147437 -1.9404075 128.0 +-5.1268415 1.5502211 -1.9456263 128.0 +-5.1235027 1.5835888 -1.9480617 128.0 +-5.108326 1.613301 -1.9459741 128.0 +-5.1090369 1.6480709 -1.9501492 128.0 +-5.0792394 1.6729318 -1.942495 128.0 +-5.0626588 1.7019733 -1.9400595 128.0 +-5.0397062 1.7287438 -1.9351887 128.0 +-5.0077672 1.7521986 -1.9268386 128.0 +-4.9889755 1.7800554 -1.9237075 128.0 +-0 0 -0 128.0 +-4.9887309 1.8492953 -1.9324054 128.0 +-5.0290318 1.8994259 -1.9529325 128.0 +-5.019032 1.9309213 -1.9536283 128.0 +-5.0088353 1.9623655 -1.9543241 128.0 +-4.9984417 1.9937574 -1.9550201 128.0 +-4.914022 1.9951017 -1.9261428 128.0 +-4.9094853 2.0284398 -1.9292741 128.0 +-4.9081812 2.063251 -1.933797 128.0 +-4.904048 2.0970161 -1.9372762 128.0 +-4.8936677 2.1281896 -1.9383199 128.0 +-4.8873763 2.1612113 -1.9411033 128.0 +-4.8842831 2.1957741 -1.9452783 128.0 +-4.8519602 2.2171259 -1.9376241 128.0 +-4.8297629 2.2429047 -1.934145 128.0 +-4.8235397 2.2760997 -1.9372762 128.0 +-4.790041 2.2963278 -1.9292741 128.0 +-4.7826033 2.3289609 -1.9320575 128.0 +-4.7606606 2.3545203 -1.9289262 128.0 +-4.7519879 2.3866334 -1.9313616 128.0 +-4.751451 2.4229896 -1.9372762 128.0 +-4.7314997 2.4495113 -1.9351887 128.0 +-4.713891 2.4771881 -1.934145 128.0 +-4.6986027 2.5060654 -1.934145 128.0 +-4.6889081 2.5379734 -1.9365804 128.0 +-4.6650305 2.5621812 -1.9331012 128.0 +-4.6451273 2.5884745 -1.9313616 128.0 +-4.6275253 2.6160045 -1.9306657 128.0 +-4.6105733 2.6438828 -1.9303179 128.0 +-4.5829196 2.6655214 -1.925447 128.0 +-4.5737448 2.69788 -1.9285783 128.0 +-4.5619316 2.7287817 -1.9306657 128.0 +-4.5459037 2.7572083 -1.9310137 128.0 +-4.5360866 2.7894709 -1.934145 128.0 +-4.5212717 2.8187399 -1.9351887 128.0 +-4.5023065 2.8454268 -1.9344928 128.0 +-4.4879198 2.8750224 -1.9358846 128.0 +-4.4670496 2.9004626 -1.9344928 128.0 +-4.443687 2.9242086 -1.9320575 128.0 +-4.4233212 2.9498587 -1.9310137 128.0 +-4.4012547 2.9743185 -1.9292741 128.0 +-4.3829217 3.0012681 -1.9292741 128.0 +-4.3628836 3.0270355 -1.9285783 128.0 +-4.3442278 3.0537486 -1.9285783 128.0 +-4.3254085 3.0803468 -1.9285783 128.0 +-4.3071866 3.1073778 -1.9289262 128.0 +-4.2850118 3.1315343 -1.9275346 128.0 +-4.2732506 3.1633475 -1.9310137 128.0 +-4.2515101 3.1878202 -1.9299699 128.0 +-4.2385883 3.2189517 -1.9331012 128.0 +-4.2053838 3.234607 -1.9268386 128.0 +-4.1898942 3.2638078 -1.9289262 128.0 +-4.1719966 3.2911975 -1.9299699 128.0 +-4.1553855 3.3196609 -1.9317095 128.0 +-4.1378531 3.3474548 -1.9331012 128.0 +-4.1223116 3.376941 -1.9355366 128.0 +-4.1051207 3.405165 -1.9372762 128.0 +-4.0870209 3.4327018 -1.9386679 128.0 +-4.0665956 3.4583223 -1.9390157 128.0 +-4.0460091 3.4838212 -1.9393637 128.0 +-4.0245566 3.5085814 -1.9393637 128.0 +-4.0022502 3.5325892 -1.9390157 128.0 +-3.9798002 3.5564551 -1.9386679 128.0 +-3.9446967 3.5688543 -1.9320575 128.0 +-3.9289451 3.5986917 -1.9351887 128.0 +-3.9074774 3.6233692 -1.9355366 128.0 +-3.8838046 3.6459932 -1.9348408 128.0 +-3.8538861 3.6626492 -1.9310137 128.0 +-3.8347173 3.6894779 -1.9327533 128.0 +-3.8187215 3.7194808 -1.9362324 128.0 +-3.7831461 3.7303324 -1.9296221 128.0 +-3.7588592 3.7521501 -1.9289262 128.0 +-3.7331285 3.7724771 -1.9275346 128.0 +-3.7040141 3.7892771 -1.9244033 128.0 +-3.6735318 3.8045127 -1.9205762 128.0 +-3.646884 3.8235888 -1.9188366 128.0 +-3.6207833 3.8431635 -1.9174449 128.0 +-3.6022422 3.8707995 -1.9202282 128.0 +-3.5733492 3.8873067 -1.9174449 128.0 +-3.55006 3.9098535 -1.9177928 128.0 +-3.5385187 3.9455245 -1.9247512 128.0 +-3.5142429 3.9671621 -1.9247512 128.0 +-3.4818113 3.979476 -1.9202282 128.0 +-3.4561024 3.9993463 -1.9195324 128.0 +-3.4296722 4.0183372 -1.9184886 128.0 +-3.4061599 4.0407395 -1.9191844 128.0 +-3.3837011 4.064446 -1.9205762 128.0 +-3.3533411 4.0786128 -1.9174449 128.0 +-3.3371139 4.1100311 -1.9226637 128.0 +-3.3153503 4.134819 -1.9247512 128.0 +-3.2835171 4.1469975 -1.9209241 128.0 +-3.2551234 4.163373 -1.9191844 128.0 +-3.2283707 4.1817832 -1.9184886 128.0 +-3.1992419 4.1970391 -1.9164011 128.0 +-3.1723018 4.2150917 -1.9157053 128.0 +-3.1480558 4.2367353 -1.9167491 128.0 +-3.1364138 4.2756295 -1.925795 128.0 +-3.1002252 4.2811232 -1.9195324 128.0 +-3.0640876 4.286335 -1.9132699 128.0 +-3.0496173 4.3219099 -1.9209241 128.0 +-3.0251837 4.3436184 -1.9223157 128.0 +-2.9990056 4.3628716 -1.9226637 128.0 +-2.9642868 4.3695517 -1.9174449 128.0 +-2.9389839 4.3899956 -1.9184886 128.0 +-2.9068263 4.4001226 -1.9150095 128.0 +-2.8782375 4.4155192 -1.9139657 128.0 +-2.8485553 4.4291534 -1.9122262 128.0 +-2.8233335 4.4497156 -1.9136178 128.0 +-2.7984636 4.4709291 -1.9153574 128.0 +-2.7704854 4.4872184 -1.9150095 128.0 +-2.7453375 4.5081372 -1.9167491 128.0 +-2.7132816 4.5176635 -1.9136178 128.0 +-2.6864657 4.53584 -1.9143137 128.0 +-2.657166 4.5498095 -1.9132699 128.0 +-2.6277959 4.5635905 -1.9122262 128.0 +-2.6025207 4.5845208 -1.9143137 128.0 +-2.5743415 4.6004033 -1.9143137 128.0 +-2.5487814 4.6210384 -1.9164011 128.0 +-2.5176938 4.6316481 -1.9143137 128.0 +-2.4892271 4.6470089 -1.9143137 128.0 +-2.4619789 4.6646829 -1.9153574 128.0 +-2.4341755 4.681365 -1.9160533 128.0 +-2.4054053 4.6962128 -1.9160533 128.0 +-2.3773887 4.7125583 -1.9167491 128.0 +-2.3463435 4.7228584 -1.9150095 128.0 +-2.3164968 4.7354817 -1.9143137 128.0 +-2.2853639 4.7453823 -1.9125741 128.0 +-2.2554009 4.7576213 -1.9118782 128.0 +-2.2249775 4.7688217 -1.9108344 128.0 +-2.1960657 4.783236 -1.9111824 128.0 +-2.1674466 4.7983298 -1.9118782 128.0 +-2.1368222 4.8089681 -1.9108344 128.0 +-2.1087756 4.8254256 -1.9122262 128.0 +-2.0776479 4.8348284 -1.9108344 128.0 +-2.0483074 4.8483491 -1.9111824 128.0 +-2.019598 4.8634238 -1.9122262 128.0 +-1.9914889 4.880065 -1.9139657 128.0 +-1.9608104 4.8904519 -1.9132699 128.0 +-1.9297363 4.8997741 -1.9122262 128.0 +-1.8979454 4.9071503 -1.9104866 128.0 +-1.8681326 4.91958 -1.9108344 128.0 +-1.8382387 4.9318285 -1.9111824 128.0 +-1.8089086 4.9456563 -1.9122262 128.0 +-1.7794778 4.9593101 -1.9132699 128.0 +-1.7502587 4.9736733 -1.9146615 128.0 +-1.7175688 4.9781146 -1.9122262 128.0 +-1.6827893 4.9761252 -1.9073553 128.0 +-1.6539928 4.9916968 -1.9094428 128.0 +-1.6169703 4.982132 -1.9017886 128.0 +-1.5928962 5.0125117 -1.9097908 128.0 +-1.5587709 5.0114479 -1.9056157 128.0 +-1.5285374 5.0227118 -1.9063115 128.0 +-1.4982244 5.0337934 -1.9070073 128.0 +-1.468618 5.0473928 -1.908747 128.0 +-1.4391574 5.0617204 -1.9108344 128.0 +-1.4078215 5.0695519 -1.9104866 128.0 +-1.3786497 5.0853343 -1.9132699 128.0 +-1.3478998 5.0955105 -1.9139657 128.0 +-1.3173109 5.1064086 -1.9150095 128.0 +-1.2854971 5.112577 -1.9143137 128.0 +-1.2538798 5.1194577 -1.9139657 128.0 +-1.222661 5.1279669 -1.9143137 128.0 +-1.1899036 5.1298923 -1.9122262 128.0 +-1.1586108 5.1380115 -1.9125741 128.0 +-1.127664 5.1477718 -1.9136178 128.0 +-1.0981994 5.1646814 -1.9174449 128.0 +-1.0668671 5.1731591 -1.9181408 128.0 +-1.0349215 5.1786885 -1.9177928 128.0 +-1.0024147 5.1812596 -1.9164011 128.0 +-0.97215432 5.1956067 -1.9195324 128.0 +-0.93992323 5.1996288 -1.9188366 128.0 +-0.90719664 5.2006803 -1.917097 128.0 +-0.87433738 5.2006011 -1.9150095 128.0 +-0.84151328 5.200315 -1.912922 128.0 +-0.8093012 5.2035275 -1.9122262 128.0 +-0.77749586 5.2093229 -1.9125741 128.0 +-0.74485493 5.2093549 -1.9108344 128.0 +-0.7122429 5.2091823 -1.9090949 128.0 +-0.68014544 5.2125249 -1.908747 128.0 +-0.64549518 5.1952009 -1.9007449 128.0 +-0.61360592 5.1990638 -1.9007449 128.0 +-0.58179742 5.2036629 -1.9010928 128.0 +-0.5494644 5.2034054 -1.8997011 128.0 +-0.51928455 5.2244048 -1.9063115 128.0 +-0.48426729 5.1957536 -1.8944824 128.0 +-0.45408008 5.2182417 -1.9017886 128.0 +-0.42235434 5.2246675 -1.9031802 128.0 +-0.39021885 5.2262259 -1.9028324 128.0 +-0.35948509 5.2481642 -1.9101386 128.0 +-0.32628813 5.2343636 -1.904224 128.0 +-0.29489785 5.249372 -1.9090949 128.0 +-0.26272938 5.2520189 -1.9094428 128.0 +-0.23008977 5.2441659 -1.9059637 128.0 +-0.19780241 5.2426686 -1.9049199 128.0 +-0.16507183 5.2259793 -1.8983095 128.0 +-0.13331006 5.2390776 -1.9028324 128.0 +-0.10121485 5.242609 -1.9038761 128.0 +-0.06905704 5.2440686 -1.904224 128.0 +-0.036955379 5.2556438 -1.9083991 128.0 +-0.0047034887 5.2510839 -1.9066595 128.0 +0.027357973 5.221951 -1.895874 128.0 +0.059714004 5.2488713 -1.9059637 128.0 +0.091370799 5.217473 -1.8944824 128.0 +0.12338289 5.216814 -1.8944824 128.0 +0.15539034 5.2159586 -1.8944824 128.0 +0.18857752 5.2476988 -1.9066595 128.0 +0.22029778 5.2352028 -1.9024844 128.0 +0.25241622 5.2337527 -1.9024844 128.0 +0.28432074 5.2283607 -1.9010928 128.0 +0.31724885 5.2405548 -1.9063115 128.0 +0.34939831 5.2385097 -1.9063115 128.0 +0.38167131 5.2381372 -1.9070073 128.0 +0.41447136 5.2441077 -1.9101386 128.0 +0.44664082 5.241466 -1.9101386 128.0 +0.47896451 5.2404943 -1.9108344 128.0 +0.51101929 5.2365236 -1.9104866 128.0 +0.54314035 5.2332892 -1.9104866 128.0 +0.57421398 5.2205396 -1.9070073 128.0 +0.60634416 5.2178493 -1.9073553 128.0 +0.63823473 5.2131 -1.9070073 128.0 +0.67056924 5.211875 -1.9080511 128.0 +0.70203394 5.2039461 -1.9066595 128.0 +0.73382026 5.1986122 -1.9063115 128.0 +0.76433516 5.1847372 -1.9028324 128.0 +0.79584849 5.1780963 -1.9021366 128.0 +0.82671589 5.1675611 -1.900049 128.0 +0.85840786 5.1623912 -1.900049 128.0 +0.8899079 5.1561031 -1.8997011 128.0 +0.92285097 5.1579285 -1.9024844 128.0 +0.95499498 5.1549344 -1.9035282 128.0 +0.98678374 5.1498981 -1.9038761 128.0 +1.0183643 5.1437464 -1.9038761 128.0 +1.0484033 5.130053 -1.9010928 128.0 +1.0783125 5.1161852 -1.8983095 128.0 +1.1092862 5.1076403 -1.8976136 128.0 +1.1399908 5.0979929 -1.8965698 128.0 +1.1706188 5.088161 -1.8955261 128.0 +1.2031132 5.0863566 -1.8976136 128.0 +1.2349646 5.0816112 -1.8986573 128.0 +1.26544 5.0712094 -1.8976136 128.0 +1.2979292 5.0687985 -1.8997011 128.0 +1.3304362 5.0661793 -1.9017886 128.0 +1.3605211 5.0542994 -1.9003969 128.0 +1.3940024 5.054894 -1.9038761 128.0 +1.4265224 5.0516582 -1.9059637 128.0 +1.4582734 5.0455122 -1.9070073 128.0 +1.4886726 5.0346713 -1.9063115 128.0 +1.5195367 5.0254421 -1.9063115 128.0 +1.5492355 5.0124412 -1.9049199 128.0 +1.5785494 4.9983711 -1.9031802 128.0 +1.6089011 4.987699 -1.9028324 128.0 +1.6403552 4.9804044 -1.9038761 128.0 +1.6690899 4.9649143 -1.9017886 128.0 +1.703784 4.9669938 -1.9066595 128.0 +1.735778 4.9608703 -1.9083991 128.0 +1.7630322 4.9412971 -1.9049199 128.0 +1.7923563 4.927743 -1.9038761 128.0 +1.8215804 4.9140158 -1.9028324 128.0 +1.8507036 4.9001155 -1.9017886 128.0 +1.879388 4.8851676 -1.9003969 128.0 +1.910354 4.8761625 -1.9014407 128.0 +1.9378049 4.858254 -1.8990053 128.0 +1.9675782 4.8462725 -1.8990053 128.0 +1.996919 4.8332419 -1.8986573 128.0 +2.0269012 4.8217621 -1.8990053 128.0 +2.0549736 4.8057866 -1.8976136 128.0 +2.0877893 4.8008242 -1.9007449 128.0 +2.1160693 4.7853513 -1.8997011 128.0 +2.144238 4.7697124 -1.8986573 128.0 +2.1746337 4.7590237 -1.8997011 128.0 +2.2033985 4.7447405 -1.8993531 128.0 +2.2360725 4.7387614 -1.9024844 128.0 +2.2679453 4.7308693 -1.9049199 128.0 +2.3018584 4.7269778 -1.9090949 128.0 +2.3299875 4.7110844 -1.9083991 128.0 +2.3647437 4.708427 -1.9132699 128.0 +2.3948679 4.6963339 -1.9143137 128.0 +2.4249325 4.6840482 -1.9153574 128.0 +2.4514463 4.6649318 -1.9136178 128.0 +2.4751682 4.6407042 -1.9097908 128.0 +2.5013642 4.6213074 -1.9080511 128.0 +2.52877 4.604229 -1.9073553 128.0 +2.554234 4.5837131 -1.9052678 128.0 +2.5804651 4.5646901 -1.9038761 128.0 +2.6140234 4.5585289 -1.9080511 128.0 +2.6329858 4.5270076 -1.9014407 128.0 +2.6640489 4.5164185 -1.9038761 128.0 +2.690748 4.4983783 -1.9031802 128.0 +2.715867 4.4777761 -1.9014407 128.0 +2.7526252 4.4761992 -1.9080511 128.0 +2.7790465 4.457634 -1.9073553 128.0 +2.8163667 4.4563465 -1.9143137 128.0 +2.8451748 4.4413495 -1.9153574 128.0 +2.866755 4.4151602 -1.9115303 128.0 +2.8927608 4.3959208 -1.9108344 128.0 +2.9191589 4.3773084 -1.9104866 128.0 +2.9391363 4.3492179 -1.9059637 128.0 +2.9620581 4.3256879 -1.9035282 128.0 +2.9858713 4.3035808 -1.9017886 128.0 +3.0111427 4.2836452 -1.9010928 128.0 +3.0362818 4.2635612 -1.9003969 128.0 +3.0612881 4.2433305 -1.8997011 128.0 +3.0911405 4.2297645 -1.9021366 128.0 +3.1203835 4.2152381 -1.904224 128.0 +3.1495645 4.2005124 -1.9063115 128.0 +3.1752789 4.181108 -1.9063115 128.0 +3.2020175 4.1630321 -1.9070073 128.0 +3.2303827 4.1470041 -1.908747 128.0 +3.2476358 4.1168017 -1.9038761 128.0 +3.2757616 4.1004586 -1.9056157 128.0 +3.2926025 4.0700793 -1.9007449 128.0 +0 0 -0 128.0 +3.3440969 4.0315318 -1.9017886 128.0 +3.3772147 4.0209861 -1.9066595 128.0 +3.4115436 4.0116129 -1.9122262 128.0 +3.4434369 3.9991283 -1.9164011 128.0 +3.4697587 3.9800441 -1.9174449 128.0 +3.499079 3.9643013 -1.9202282 128.0 +3.5183389 3.9371653 -1.9174449 128.0 +3.5298479 3.9016013 -1.9104866 128.0 +3.5423203 3.8674273 -1.904224 128.0 +3.5634332 3.84287 -1.9028324 128.0 +3.5940056 3.82845 -1.9066595 128.0 +3.6219509 3.8110816 -1.9090949 128.0 +3.6621711 3.8063481 -1.9181408 128.0 +3.6710632 3.7690337 -1.9104866 128.0 +3.6947789 3.7471049 -1.9108344 128.0 +3.7143886 3.7210467 -1.9090949 128.0 +3.7411499 3.7021413 -1.9111824 128.0 +3.7591014 3.67453 -1.908747 128.0 +3.7822516 3.6520464 -1.9090949 128.0 +3.8025534 3.6268296 -1.9080511 128.0 +3.8165452 3.5957162 -1.9038761 128.0 +3.8309853 3.5652068 -1.900049 128.0 +3.8500276 3.5390959 -1.8986573 128.0 +3.8758359 3.5191863 -1.9007449 128.0 +3.8966582 3.4947126 -1.9003969 128.0 +3.91873 3.4713588 -1.9007449 128.0 +3.9484246 3.4546549 -1.9049199 128.0 +3.9603243 3.4223957 -1.9003969 128.0 +3.9983668 3.4126348 -1.908747 128.0 +4.0249667 3.3928697 -1.9115303 128.0 +4.0449886 3.3675096 -1.9111824 128.0 +4.0612292 3.3390551 -1.9090949 128.0 +4.0750895 3.3087559 -1.9059637 128.0 +4.0887308 3.2784123 -1.9028324 128.0 +4.1087694 3.2532628 -1.9028324 128.0 +4.1345634 3.2326088 -1.9056157 128.0 +4.1572895 3.2094698 -1.9070073 128.0 +4.1880903 3.1924236 -1.9122262 128.0 +4.2068505 3.1661022 -1.9118782 128.0 +4.2231874 3.1379938 -1.9104866 128.0 +4.2325335 3.1048152 -1.9059637 128.0 +4.2628965 3.0870321 -1.9111824 128.0 +4.2779436 3.0580921 -1.9094428 128.0 +4.3019905 3.035568 -1.9118782 128.0 +4.3236132 3.0112569 -1.9132699 128.0 +4.3420086 2.9846711 -1.9132699 128.0 +4.3625684 2.9595513 -1.9143137 128.0 +4.3759704 2.929599 -1.9122262 128.0 +4.3954287 2.9037266 -1.912922 128.0 +4.4210176 2.88182 -1.9164011 128.0 +4.4307308 2.8495693 -1.912922 128.0 +4.4425898 2.8188145 -1.9104866 128.0 +4.468545 2.7969718 -1.9143137 128.0 +4.4800377 2.7660542 -1.9118782 128.0 +4.4913197 2.735101 -1.9094428 128.0 +4.5039983 2.7050786 -1.9077032 128.0 +4.518898 2.6764364 -1.9070073 128.0 +4.5319967 2.6467681 -1.9056157 128.0 +4.5497766 2.6198459 -1.9063115 128.0 +4.5747356 2.5969689 -1.9101386 128.0 +4.58322 2.5647311 -1.9070073 128.0 +4.6021547 2.5383711 -1.9083991 128.0 +4.6168199 2.5096376 -1.9080511 128.0 +4.6321316 2.481262 -1.9080511 128.0 +4.6489277 2.4536679 -1.908747 128.0 +4.6630635 2.424664 -1.9083991 128.0 +4.6820259 2.3981426 -1.9101386 128.0 +4.6991639 2.3706353 -1.9111824 128.0 +4.7136216 2.3417571 -1.9111824 128.0 +4.7405353 2.3189676 -1.9164011 128.0 +4.7529855 2.2890234 -1.9157053 128.0 +4.77033 2.2614222 -1.917097 128.0 +4.7764688 2.2285435 -1.9139657 128.0 +4.7960176 2.2019305 -1.9164011 128.0 +4.7957664 2.1662893 -1.9108344 128.0 +4.8063979 2.1356807 -1.9097908 128.0 +4.8194118 2.106149 -1.9097908 128.0 +4.838274 2.0791278 -1.9122262 128.0 +4.8552589 2.0512249 -1.9139657 128.0 +4.8712173 2.0228324 -1.9153574 128.0 +4.8948226 1.9975076 -1.9198804 128.0 +4.904376 1.9663898 -1.9188366 128.0 +4.9364142 1.9441574 -1.9268386 128.0 +4.9220161 1.9036915 -1.9164011 128.0 +4.9336042 1.8734547 -1.9164011 128.0 +4.9511566 1.8454381 -1.9188366 128.0 +4.957984 1.8134145 -1.917097 128.0 +4.9672527 1.7823257 -1.9164011 128.0 +4.9834018 1.7536799 -1.9184886 128.0 +4.9967275 1.723986 -1.9195324 128.0 +5.0063233 1.6929941 -1.9191844 128.0 +5.015727 1.6619493 -1.9188366 128.0 +5.0302892 1.6325881 -1.9205762 128.0 +5.048254 1.6042459 -1.9237075 128.0 +5.0553164 1.5724055 -1.9226637 128.0 +5.0657663 1.5416297 -1.9230115 128.0 +5.0715361 1.5094488 -1.9216199 128.0 +5.0789018 1.4777786 -1.9209241 128.0 +5.0923829 1.4478681 -1.9226637 128.0 +5.1020741 1.4168453 -1.9230115 128.0 +5.1133866 1.3862482 -1.9240553 128.0 +5.1190767 1.3541284 -1.9230115 128.0 +5.1281972 1.3229268 -1.9233595 128.0 +5.1280346 1.2893801 -1.9202282 128.0 +5.1413136 1.2592278 -1.9223157 128.0 +5.1434712 1.2263541 -1.9202282 128.0 +5.1673388 1.1985807 -1.9264908 128.0 +5.1736813 1.166646 -1.9261428 128.0 +5.1816583 1.1350794 -1.9264908 128.0 +5.1949449 1.1046275 -1.9289262 128.0 +5.1988702 1.0721636 -1.9278824 128.0 +5.2025928 1.0396932 -1.9268386 128.0 +5.2005897 1.0061502 -1.9237075 128.0 +5.2066655 0.97422105 -1.9237075 128.0 +5.2097774 0.94175547 -1.9226637 128.0 +5.2200761 0.91057569 -1.9244033 128.0 +5.2264895 0.87868398 -1.9247512 128.0 +5.2410378 0.84809393 -1.9282304 128.0 +5.2396579 0.81491238 -1.925795 128.0 +5.2436323 0.78260893 -1.925447 128.0 +5.2566886 0.75161237 -1.9285783 128.0 +5.2760639 0.7213726 -1.934145 128.0 +5.2831798 0.689349 -1.9351887 128.0 +5.2984748 0.65830374 -1.9393637 128.0 +5.3014836 0.62567085 -1.9390157 128.0 +5.3052225 0.59312975 -1.9390157 128.0 +5.3050327 0.56017339 -1.9376241 128.0 +5.2962418 0.52640897 -1.9331012 128.0 +5.2937708 0.49338111 -1.9310137 128.0 +5.2957644 0.46080878 -1.9306657 128.0 +5.3078375 0.4290593 -1.934145 128.0 +5.3178496 0.39703974 -1.9369283 128.0 +5.318315 0.36427483 -1.9362324 128.0 +5.3120284 0.3311123 -1.9331012 128.0 +5.313024 0.29845968 -1.9327533 128.0 +5.3147554 0.26585397 -1.9327533 128.0 +5.3172231 0.23327912 -1.9331012 128.0 +5.3063755 0.20019202 -1.9285783 128.0 +5.3224969 0.16809922 -1.934145 128.0 +5.3487329 0.13607617 -1.9435388 128.0 +5.3400941 0.10307549 -1.9400595 128.0 +5.3368759 0.070258789 -1.9386679 128.0 +5.3447065 0.037562106 -1.9414512 128.0 +5.3392115 0.0047630905 -1.9393637 128.0 +5.3428903 -0.028018259 -1.9407554 128.0 +5.3154311 -0.060485832 -1.9306657 128.0 +5.3187094 -0.093166061 -1.9320575 128.0 +5.3302221 -0.12609015 -1.9365804 128.0 +5.3237257 -0.15862466 -1.9344928 128.0 +5.3329582 -0.19166006 -1.9383199 128.0 +5.3391752 -0.22469585 -1.9411033 128.0 +5.3470602 -0.25790587 -1.9445825 128.0 +5.3481855 -0.29086331 -1.9456263 128.0 +5.3406854 -0.32333252 -1.9435388 128.0 +5.3386006 -0.35609627 -1.9435388 128.0 +5.3363152 -0.38884661 -1.9435388 128.0 +5.3254175 -0.42091566 -1.9404075 128.0 +5.3189983 -0.45326465 -1.9390157 128.0 +5.3254533 -0.48674825 -1.942495 128.0 +5.3158345 -0.5187766 -1.9400595 128.0 +5.3125515 -0.55138421 -1.9400595 128.0 +5.3062725 -0.58366287 -1.9390157 128.0 +5.297935 -0.61566848 -1.9372762 128.0 +5.2875438 -0.64736545 -1.9348408 128.0 +5.3011389 -0.68207401 -1.9414512 128.0 +5.293138 -0.71408617 -1.9400595 128.0 +5.2867999 -0.74628836 -1.9393637 128.0 +5.2895412 -0.779809 -1.942147 128.0 +5.2883635 -0.81282079 -1.9435388 128.0 +5.2823505 -0.84510601 -1.9431908 128.0 +5.2816896 -0.87827188 -1.9449304 128.0 +5.2808204 -0.91146147 -1.9466699 128.0 +5.2566719 -0.94054037 -1.9397117 128.0 +5.244349 -0.97158015 -1.9372762 128.0 +5.243813 -1.0048004 -1.9393637 128.0 +5.2366295 -1.0367746 -1.9390157 128.0 +5.2310882 -1.0690744 -1.9393637 128.0 +5.2280989 -1.1019258 -1.9407554 128.0 +5.2249041 -1.1347808 -1.942147 128.0 +5.224247 -1.1682523 -1.9445825 128.0 +5.2078443 -1.1981817 -1.9411033 128.0 +5.2086048 -1.2320579 -1.9442346 128.0 +5.20368 -1.2646589 -1.9452783 128.0 +5.1985507 -1.2972459 -1.9463221 128.0 +5.1859527 -1.3279554 -1.9445825 128.0 +5.1767998 -1.3595124 -1.9442346 128.0 +5.1710763 -1.3919828 -1.9452783 128.0 +5.1479783 -1.4196947 -1.9397117 128.0 +5.138268 -1.4510003 -1.9393637 128.0 +5.1454792 -1.4871901 -1.9456263 128.0 +5.1236711 -1.5150098 -1.9407554 128.0 +5.1160736 -1.5469625 -1.9414512 128.0 +5.0993199 -1.5761087 -1.9386679 128.0 +5.1011744 -1.6110408 -1.9431908 128.0 +5.1018996 -1.6457669 -1.9473659 128.0 +5.0872531 -1.6755731 -1.9456263 128.0 +5.0795422 -1.7076532 -1.9466699 128.0 +5.0698552 -1.7390929 -1.9470179 128.0 +5.0582042 -1.7698584 -1.9466699 128.0 +5.0446005 -1.7999159 -1.9456263 128.0 +5.0325804 -1.8305144 -1.9452783 128.0 +5.0168586 -1.8597291 -1.9435388 128.0 +4.9930754 -1.8858367 -1.9386679 128.0 +4.971786 -1.9127331 -1.9348408 128.0 +4.9337707 -1.932938 -1.9244033 128.0 +4.8939538 -1.9520537 -1.9132699 128.0 +4.8532209 -1.970401 -1.9017886 128.0 +4.7717271 -1.9714876 -1.8739552 128.0 +4.6904054 -1.9716494 -1.8461218 128.0 +4.6342602 -1.9815835 -1.828378 128.0 +4.5695748 -1.9871628 -1.807155 128.0 +4.5410061 -2.0079563 -1.8005446 128.0 +4.4542146 -2.0023215 -1.7702757 128.0 +4.4213815 -2.0202584 -1.7619257 128.0 +4.3612895 -2.0252259 -1.7424424 128.0 +4.3191085 -2.0379388 -1.7302653 128.0 +4.2718649 -2.0477779 -1.7160006 128.0 +4.2381492 -2.0636849 -1.7073027 128.0 +4.2035599 -2.0788398 -1.6982569 128.0 +4.1597304 -2.0890179 -1.6853839 128.0 +4.1134295 -2.0974588 -1.6714672 128.0 +4.0721784 -2.1079979 -1.6596379 128.0 +4.0458903 -2.1259637 -1.6540713 128.0 +4.0435219 -2.156487 -1.6585943 128.0 +4.0236187 -2.1776853 -1.6558108 128.0 +4.0192189 -2.2072992 -1.6596379 128.0 +4.0285277 -2.2447021 -1.6693796 128.0 +4.0154943 -2.26984 -1.6697276 128.0 +3.8998423 -2.2361171 -1.6262379 128.0 +3.8512049 -2.239728 -1.6112775 128.0 +3.8252785 -2.2561691 -1.6060586 128.0 +3.8387148 -2.2959671 -1.6178879 128.0 +3.8381803 -2.3277459 -1.6238024 128.0 +3.3215692 -2.0422401 -1.4049623 128.0 +3.4911382 -2.1762044 -1.4846354 128.0 +3.2716928 -2.0673149 -1.3941768 128.0 +3.3102524 -2.1202335 -1.4167914 128.0 +3.2515807 -2.110883 -1.3966123 128.0 +3.2362182 -2.1292479 -1.3955685 128.0 +0 -0 -0 128.0 +3.2152822 -2.1724768 -1.3980039 128.0 +3.0750487 -2.1052666 -1.3409454 128.0 +3.0043106 -2.0840001 -1.3148516 128.0 +2.9592583 -2.0797436 -1.3002391 128.0 +2.9105549 -2.0722938 -1.2838869 128.0 +2.8726983 -2.0720069 -1.2724056 128.0 +2.8319285 -2.0691209 -1.2595327 128.0 +2.79055 -2.0652552 -1.2463118 128.0 +2.760576 -2.0693994 -1.2383097 128.0 +2.7261779 -2.0698509 -1.2282201 128.0 +2.6993091 -2.0756762 -1.2216097 128.0 +2.6665561 -2.0766399 -1.2122159 128.0 +2.629478 -2.0737953 -1.2007346 128.0 +2.5983951 -2.0752573 -1.1920366 128.0 +2.5987301 -2.1017783 -1.1982992 128.0 +2.5814342 -2.1141186 -1.1962117 128.0 +2.559756 -2.1227336 -1.1920366 128.0 +2.5079234 -2.1058314 -1.1732491 128.0 +2.4499695 -2.0829067 -1.1513304 128.0 +2.4222262 -2.0850506 -1.144024 128.0 +2.386071 -2.0795381 -1.1325427 128.0 +2.3606164 -2.0829697 -1.1262803 128.0 +2.3498881 -2.0992894 -1.127324 128.0 +2.3327923 -2.1098938 -1.1252365 128.0 +2.3253319 -2.129235 -1.1280198 128.0 +2.3087869 -2.1402748 -1.1262803 128.0 +2.3010781 -2.1595354 -1.1290636 128.0 +2.2592478 -2.1464818 -1.1144511 128.0 +2.2115862 -2.1271458 -1.0967072 128.0 +2.1864064 -2.1288986 -1.0904447 128.0 +2.167963 -2.1370068 -1.0876614 128.0 +2.1342452 -2.1297321 -1.0768759 128.0 +2.1138849 -2.1354556 -1.0730488 128.0 +2.1000869 -2.1477153 -1.072701 128.0 +2.0875204 -2.1612353 -1.0730488 128.0 +2.0819831 -2.1821461 -1.0772239 128.0 +2.0524859 -2.1778169 -1.0685259 128.0 +2.0512166 -2.2034123 -1.0751363 128.0 +2.0376582 -2.2159569 -1.0751363 128.0 +2.0076411 -2.2103679 -1.0660905 128.0 +1.9927891 -2.2212486 -1.0653946 128.0 +1.9872019 -2.2425594 -1.0699176 128.0 +1.9826622 -2.265296 -1.0751363 128.0 +1.965661 -2.2738714 -1.0733968 128.0 +1.9534973 -2.2880294 -1.0744405 128.0 +1.9345887 -2.2942371 -1.0716572 128.0 +1.9234735 -2.3096676 -1.0733968 128.0 +1.9098607 -2.3221505 -1.0737447 128.0 +1.8949854 -2.3330977 -1.0733968 128.0 +1.8818069 -2.3461442 -1.0740926 128.0 +1.8673757 -2.3576467 -1.0740926 128.0 +1.8505652 -2.3661053 -1.072701 128.0 +1.834294 -2.3751891 -1.0716572 128.0 +1.8219583 -2.3893824 -1.0730488 128.0 +1.8004998 -2.3915262 -1.0688739 128.0 +1.7869097 -2.4040341 -1.0695697 128.0 +1.7710165 -2.4134409 -1.0688739 128.0 +1.7561746 -2.4242623 -1.0688739 128.0 +1.7401764 -2.4334667 -1.0681781 128.0 +1.7338579 -2.4563568 -1.0737447 128.0 +1.7058979 -2.4484825 -1.0653946 128.0 +1.6897804 -2.4573584 -1.0646988 128.0 +1.6725658 -2.4645765 -1.0633072 128.0 +1.6563692 -2.4732344 -1.0626113 128.0 +1.6437455 -2.487263 -1.064351 128.0 +1.6320355 -2.5028005 -1.0667863 128.0 +1.6191827 -2.5167105 -1.0685259 128.0 +1.6122458 -2.5400577 -1.0744405 128.0 +1.6135362 -2.5769255 -1.0862697 128.0 +1.5829234 -2.5628426 -1.0758322 128.0 +1.5842291 -2.6005363 -1.0880094 128.0 +1.5667951 -2.6077967 -1.0869656 128.0 +1.5636593 -2.6391437 -1.0963594 128.0 +1.5446006 -2.6438303 -1.0942718 128.0 +1.5213346 -2.6410697 -1.089053 128.0 +1.50325 -2.6470931 -1.0876614 128.0 +1.4814878 -2.6464481 -1.0834864 128.0 +1.4625058 -2.6505623 -1.0813988 128.0 +1.4475574 -2.6619575 -1.0824426 128.0 +1.4272143 -2.6633508 -1.0793114 128.0 +1.4082208 -2.6670825 -1.0772239 128.0 +1.3922617 -2.6765049 -1.0775717 128.0 +1.3694046 -2.6724794 -1.072353 128.0 +1.3576237 -2.6900401 -1.0761801 128.0 +1.3473465 -2.7109153 -1.0813988 128.0 +1.3459233 -2.7502947 -1.0942718 128.0 +1.3200771 -2.7399166 -1.0866176 128.0 +1.3156843 -2.7742293 -1.097403 128.0 +1.2934865 -2.771204 -1.0928801 128.0 +1.2643377 -2.7526734 -1.0820947 128.0 +1.2578391 -2.7834506 -1.0914885 128.0 +1.2430196 -2.796257 -1.093576 128.0 +1.2138309 -2.7763386 -1.0824426 128.0 +1.2063918 -2.8061316 -1.0914885 128.0 +1.1949856 -2.8273003 -1.0970552 128.0 +1.1750996 -2.8285179 -1.0946198 128.0 +1.1517034 -2.8209171 -1.0887052 128.0 +1.1427419 -2.8488171 -1.0970552 128.0 +1.1221501 -2.8479238 -1.0939239 128.0 +1.1026264 -2.8495085 -1.0918365 128.0 +1.080132 -2.8430724 -1.0866176 128.0 +1.072157 -2.8751247 -1.0967072 128.0 +1.0396904 -2.8411441 -1.080703 128.0 +1.0193899 -2.8395274 -1.0775717 128.0 +1.0035027 -2.8501508 -1.0793114 128.0 +0.98507893 -2.8535957 -1.0782676 128.0 +0.97115272 -2.8702445 -1.0824426 128.0 +0.95882732 -2.8921695 -1.0887052 128.0 +0.9326759 -2.8721361 -1.0786155 128.0 +0.91304904 -2.8715498 -1.0761801 128.0 +0.89624709 -2.8797841 -1.0772239 128.0 +0.88674289 -2.9121382 -1.0876614 128.0 +0.86404717 -2.9013491 -1.0813988 128.0 +0.84910762 -2.9164989 -1.0852259 128.0 +0.82914674 -2.9144394 -1.0824426 128.0 +0.81952024 -2.9492841 -1.0939239 128.0 +0.79135871 -2.9171555 -1.0796593 128.0 +0.77128851 -2.9137986 -1.0765281 128.0 +0.75152332 -2.9112134 -1.0737447 128.0 +0.73798621 -2.9330461 -1.0803552 128.0 +0.72175813 -2.9448044 -1.0831385 128.0 +0.70041698 -2.9354975 -1.0779197 128.0 +0.68366176 -2.9452198 -1.0800072 128.0 +0.66866779 -2.9630783 -1.0852259 128.0 +0.6554845 -2.9900217 -1.0939239 128.0 +0.63673615 -2.9921534 -1.0932281 128.0 +0.61533809 -2.981312 -1.0876614 128.0 +0.59813464 -2.9905479 -1.0897489 128.0 +0.580841 -2.9996846 -1.0918365 128.0 +0.56190765 -3.0004275 -1.0907927 128.0 +0.54365337 -3.0047414 -1.0911406 128.0 +0.53469986 -3.0625138 -1.1116678 128.0 +0.5182271 -3.0796058 -1.1168865 128.0 +0.49947077 -3.0836532 -1.1172343 128.0 +0.4793894 -3.0792484 -1.1144511 128.0 +0.45951915 -3.0756409 -1.1120156 128.0 +0.43374881 -3.0301406 -1.0939239 128.0 +0.41476762 -3.0299582 -1.0928801 128.0 +0.39628947 -3.0333757 -1.0932281 128.0 +0.38228524 -3.0729661 -1.1071448 128.0 +0.36375174 -3.0780473 -1.1081885 128.0 +0.34371471 -3.069972 -1.1043614 128.0 +0.31848517 -3.0114198 -1.0817468 128.0 +0.29944631 -3.0077195 -1.0796593 128.0 +0.2841104 -3.0431063 -1.0921843 128.0 +0.26810816 -3.0756147 -1.1036656 128.0 +0.25051221 -3.0930882 -1.1095802 128.0 +0.23194627 -3.1001768 -1.1116678 128.0 +0.21157846 -3.0818992 -1.1043614 128.0 +0.19254805 -3.0812681 -1.1036656 128.0 +0.17327146 -3.075839 -1.1012301 128.0 +0.15434857 -3.0759079 -1.1008823 128.0 +0.13539048 -3.0749238 -1.1001865 128.0 +0.11676653 -3.0822549 -1.1026219 128.0 +0.097969539 -3.0866616 -1.1040136 128.0 +0.079217434 -3.0947022 -1.1067969 128.0 +0.060370333 -3.1026289 -1.1095802 128.0 +0.041380379 -3.1066906 -1.1109719 128.0 +0.022291757 -3.1031361 -1.1095802 128.0 +0.0032635329 -3.1219649 -1.1165385 128.0 +-0.015913019 -3.1256764 -1.1179302 128.0 +-0.034928448 -3.1114578 -1.1127114 128.0 +-0.053869732 -3.1027486 -1.1095802 128.0 +-0.073018692 -3.1070459 -1.1113198 128.0 +-0.092138045 -3.1084137 -1.1120156 128.0 +-0.11107368 -3.1040421 -1.110624 128.0 +-0.13055348 -3.1136057 -1.1144511 128.0 +-0.15033628 -3.1267924 -1.1196698 128.0 +-0.17227924 -3.1763623 -1.1384574 128.0 +-0.19836117 -3.283798 -1.1788158 128.0 +-0.29712921 -4.4574227 -1.6158004 128.0 +-0.23734511 -3.263351 -1.1722053 128.0 +-0.26136407 -3.3123014 -1.190993 128.0 +-0.27426118 -3.223762 -1.1586366 128.0 +-0.29275361 -3.2080142 -1.1534178 128.0 +-0.31060684 -3.1874959 -1.1464595 128.0 +-0.32977116 -3.1818001 -1.1450678 128.0 +-0.50067657 -4.5533113 -1.6578984 128.0 +-0.36857507 -3.1756513 -1.144372 128.0 +-0.38691223 -3.1640246 -1.1408927 128.0 +-0.41003412 -3.1904159 -1.1516782 128.0 +-0.62520069 -4.6353483 -1.6937339 128.0 +-0.46700358 -3.3113916 -1.198995 128.0 +-0.68518603 -4.6486588 -1.701736 128.0 +-0.71098685 -4.6267614 -1.6951256 128.0 +-0.73847294 -4.6167574 -1.6930381 128.0 +-0.76570904 -4.6056662 -1.6906027 128.0 +-0.79219824 -4.5907187 -1.6867756 128.0 +-0.82035142 -4.5857716 -1.6867756 128.0 +-0.84847379 -4.5806518 -1.6867756 128.0 +-0.8739146 -4.5615482 -1.6815568 128.0 +-0.90279871 -4.5606985 -1.6832963 128.0 +-0.9305777 -4.5541544 -1.6829485 128.0 +-0.95792329 -4.5456071 -1.6819047 128.0 +-0.98798752 -4.5497208 -1.6857318 128.0 +-1.013428 -4.5325947 -1.6815568 128.0 +-1.0485845 -4.5582671 -1.6937339 128.0 +-1.0683255 -4.5170798 -1.680513 128.0 +-1.0962434 -4.5113506 -1.6808609 128.0 +-1.1154979 -4.4708848 -1.6679879 128.0 +-1.141746 -4.4594154 -1.6662484 128.0 +-1.1145095 -4.2446856 -1.5865753 128.0 +-1.1078522 -4.1164641 -1.5399543 128.0 +-1.1792357 -4.2767797 -1.6043191 128.0 +-1.2561963 -4.4489985 -1.6735547 128.0 +-1.2915469 -4.4691253 -1.6843401 128.0 +-1.3152202 -4.4485307 -1.6794692 128.0 +-1.3449351 -4.4484529 -1.6826005 128.0 +-1.3735901 -4.4445949 -1.6843401 128.0 +-1.3968803 -4.4235682 -1.6794692 128.0 +-1.4242846 -4.4158058 -1.6798172 128.0 +-1.4492983 -4.4007506 -1.6773818 128.0 +-1.478067 -4.3971066 -1.6794692 128.0 +-1.5104983 -4.4039159 -1.6857318 128.0 +-1.5415195 -4.4060678 -1.6902547 128.0 +-1.571678 -4.4053555 -1.6937339 128.0 +-1.598038 -4.393867 -1.6930381 128.0 +-1.6239899 -4.3813419 -1.6919943 128.0 +-1.6501799 -4.3695412 -1.6912985 128.0 +-1.6786439 -4.363708 -1.6930381 128.0 +-1.6971751 -4.3323774 -1.684688 128.0 +-1.1815788 -2.9635389 -1.1419365 128.0 +-1.1944475 -2.9432042 -1.1367178 128.0 +-1.2167825 -2.9462166 -1.1408927 128.0 +-1.8186164 -4.326582 -1.6996485 128.0 +-1.8436544 -4.3118939 -1.6982569 128.0 +-1.8584806 -4.2738509 -1.6874714 128.0 +-1.8945323 -4.284658 -1.6965172 128.0 +-1.9134796 -4.2567077 -1.6899068 128.0 +-1.5583019 -3.4110129 -1.3496433 128.0 +-1.5764368 -3.3954356 -1.3472079 128.0 +-1.5856333 -3.3611131 -1.3371183 128.0 +-1.5981175 -3.3344142 -1.33016 128.0 +-1.6123873 -3.3119035 -1.3249412 128.0 +-1.627273 -3.2910242 -1.3204182 128.0 +-1.6558548 -3.2977316 -1.3273766 128.0 +-1.6828755 -3.3008711 -1.3329433 128.0 +-1.7117217 -3.3071325 -1.3399017 128.0 +-1.7393988 -3.3106742 -1.3458163 128.0 +-1.7817494 -3.3412952 -1.3632121 128.0 +-2.1919718 -4.0499992 -1.6669443 128.0 +-2.2127173 -4.0290785 -1.663813 128.0 +-2.246985 -4.0326219 -1.6711192 128.0 +-2.2730708 -4.0212069 -1.672163 128.0 +-2.2879043 -3.9901068 -1.6648567 128.0 +-2.3161163 -3.9824758 -1.6676401 128.0 +-2.3338377 -3.9568858 -1.6627692 128.0 +-2.3696272 -3.9617984 -1.6711192 128.0 +-2.400701 -3.958405 -1.6759901 128.0 +-2.4254355 -3.9443986 -1.676338 128.0 +-2.4381802 -3.9111464 -1.6683359 128.0 +-2.4676442 -3.9048288 -1.672163 128.0 +-2.492569 -3.8911927 -1.6728588 128.0 +-2.5148659 -3.8734667 -1.671815 128.0 +-2.5380702 -3.8571799 -1.6714672 128.0 +-2.5471203 -3.8196974 -1.6617255 128.0 +-2.5841625 -3.8241901 -1.6707714 128.0 +-2.6155264 -3.8198636 -1.6759901 128.0 +-2.6244812 -3.7829485 -1.6665963 128.0 +-2.6320035 -3.7445345 -1.6565067 128.0 +-2.6679862 -3.7466395 -1.6648567 128.0 +-2.6909249 -3.7301984 -1.6648567 128.0 +-2.711549 -3.7105899 -1.663465 128.0 +-2.7298019 -3.687855 -1.6606817 128.0 +-2.7456276 -3.6620362 -1.6565067 128.0 +-2.7652099 -3.6413879 -1.6547672 128.0 +-2.7840705 -3.6198943 -1.6526796 128.0 +-2.8021953 -3.5975671 -1.6502442 128.0 +-2.3299377 -2.954025 -1.3541663 128.0 +-2.3433368 -2.9338145 -1.351383 128.0 +-2.365423 -2.9244821 -1.3538184 128.0 +-2.9068739 -3.5487425 -1.6603338 128.0 +-2.9226067 -3.5236249 -1.6568546 128.0 +-2.9477911 -3.5099325 -1.6589421 128.0 +-2.9577293 -3.4782121 -1.6523317 128.0 +-2.9796274 -3.4607086 -1.6526796 128.0 +-3.0075843 -3.4501328 -1.6565067 128.0 +-3.0342824 -3.4379385 -1.6596379 128.0 +-3.0534456 -3.4171591 -1.6585943 128.0 +-3.0579979 -3.3802869 -1.6495483 128.0 +-3.0742476 -3.3566213 -1.647113 128.0 +-3.1005242 -3.3438807 -1.6502442 128.0 +-3.122267 -3.32616 -1.6509401 128.0 +-3.1464932 -3.3110161 -1.6530275 128.0 +-3.1641495 -3.2889454 -1.6516359 128.0 +-3.1698761 -3.2546966 -1.6439817 128.0 +-3.2003212 -3.2458642 -1.6495483 128.0 +-3.2135525 -3.2195325 -1.6460692 128.0 +-3.2352462 -3.2017317 -1.647113 128.0 +-3.2595248 -3.1864069 -1.6495483 128.0 +-3.280364 -3.1676488 -1.6502442 128.0 +-3.2977028 -3.1455207 -1.6492004 128.0 +-3.3271792 -3.1348681 -1.6544192 128.0 +-3.3484111 -3.1163096 -1.655463 128.0 +-3.3716114 -3.0995114 -1.6575505 128.0 +-3.3891778 -3.0775051 -1.6568546 128.0 +-3.4191666 -3.0666645 -1.6624213 128.0 +-3.4337075 -3.041898 -1.6603338 128.0 +-3.4699504 -3.0362017 -1.6690317 128.0 +-3.4956098 -3.0209818 -1.6725109 128.0 +-3.5147936 -3.0000846 -1.6728588 128.0 +-3.5446069 -2.9881272 -1.6784256 128.0 +-3.5693607 -2.971719 -1.6815568 128.0 +-3.5831819 -2.9461904 -1.6794692 128.0 +-3.612839 -2.9336016 -1.6850359 128.0 +-3.6293082 -2.9102058 -1.6843401 128.0 +-3.6500371 -2.8902092 -1.6857318 128.0 +-3.671396 -2.870645 -1.6874714 128.0 +-3.689683 -2.8486366 -1.6878192 128.0 +-3.705601 -2.8248069 -1.6871234 128.0 +-3.7266099 -2.8048348 -1.688863 128.0 +-3.7460079 -2.7835929 -1.6899068 128.0 +-3.772846 -2.7677622 -1.6944298 128.0 +-3.7927954 -2.7467592 -1.6958214 128.0 +-3.8217828 -2.732156 -1.7013881 128.0 +-3.8400073 -2.7097352 -1.7020839 128.0 +-3.8504062 -2.6818373 -1.6993005 128.0 +-3.8737435 -2.6629393 -1.7024318 128.0 +-3.8962178 -2.6433296 -1.7052152 128.0 +-3.9193761 -2.6240656 -1.7083464 128.0 +-3.9487033 -2.6087494 -1.7142611 128.0 +-3.9717057 -2.5890777 -1.7173923 128.0 +-3.9914603 -2.5671937 -1.7191318 128.0 +-4.0095124 -2.5441606 -1.7201756 128.0 +-4.0322008 -2.5239861 -1.7233069 128.0 +-4.0635686 -2.5090444 -1.7302653 128.0 +-4.0860949 -2.4884508 -1.7333965 128.0 +-4.1117363 -2.469605 -1.7379194 128.0 +-4.1397204 -2.4519708 -1.743486 128.0 +-4.1644034 -2.4321952 -1.7476611 128.0 +-4.1833115 -2.4089355 -1.7494007 128.0 +-4.2151375 -2.3929377 -1.756707 128.0 +-4.2526517 -2.379843 -1.7664486 128.0 +-4.2679949 -2.354157 -1.7667966 128.0 +-4.2716503 -2.3221064 -1.7622737 128.0 +-4.2874708 -2.2967372 -1.7629695 128.0 +-4.3288474 -2.2848217 -1.7744508 128.0 +-4.3602548 -2.2672963 -1.781757 128.0 +-4.3757539 -2.241354 -1.7824528 128.0 +-4.4028182 -2.2212162 -1.7880195 128.0 +-4.4138451 -2.1929083 -1.7869759 128.0 +-4.3952122 -2.1501365 -1.773755 128.0 +-4.3745317 -2.106863 -1.7598382 128.0 +-4.3780575 -2.0755663 -1.7560111 128.0 +-4.3847623 -2.0458903 -1.7535757 128.0 +-4.4262047 -2.0322411 -1.7654049 128.0 +-4.4590988 -2.0143023 -1.773755 128.0 +-4.509932 -2.0040264 -1.7894112 128.0 +-4.5522141 -1.9894497 -1.8015883 128.0 +-4.6160221 -1.983678 -1.8224634 128.0 +-4.6721554 -1.9739153 -1.8402072 128.0 +-4.7049608 -1.953835 -1.8485572 128.0 +-4.8132205 -1.9642277 -1.887176 128.0 +-4.8852305 -1.9587182 -1.9111824 128.0 +-4.9503722 -1.9496512 -1.9324054 128.0 +-4.9910998 -1.9303937 -1.9438866 128.0 +-5.0282698 -1.9093788 -1.9539763 128.0 +-5.0583405 -1.8853621 -1.9612825 128.0 +-5.0777388 -1.8571858 -1.9644138 128.0 +-5.0908036 -1.8266274 -1.9651096 128.0 +-5.1107602 -1.7984666 -1.9685888 128.0 +-5.1172676 -1.7655457 -1.9668492 128.0 +-5.140439 -1.7383156 -1.9717201 128.0 +-5.1581283 -1.7090992 -1.9745034 128.0 +-5.1640592 -1.6759712 -1.9727638 128.0 +-5.2010522 -1.6527659 -1.9832014 128.0 +-5.1860275 -1.6130306 -1.9734596 128.0 +-5.1814756 -1.5768152 -1.967893 128.0 +-5.1937494 -1.5457944 -1.9689367 128.0 +-5.2058372 -1.5146822 -1.9699805 128.0 +-5.2285604 -1.4865543 -1.9751992 128.0 +-5.2312598 -1.4526898 -1.9727638 128.0 +-5.2445993 -1.4217896 -1.9745034 128.0 +-5.2432542 -1.3869475 -1.9706763 128.0 +-5.2552972 -1.3556854 -1.972068 128.0 +-5.2616978 -1.322957 -1.9713721 128.0 +-5.2678952 -1.2902013 -1.9706763 128.0 +-5.2748003 -1.2576367 -1.9703283 128.0 +-5.2796779 -1.2246125 -1.9692847 128.0 +-5.290751 -1.1930181 -1.9706763 128.0 +-5.2961397 -1.1601313 -1.9699805 128.0 +-5.3068266 -1.1283921 -1.9713721 128.0 +-5.3099775 -1.0950521 -1.9699805 128.0 +-5.3156772 -1.0622666 -1.9696325 128.0 +-5.3220954 -1.0296302 -1.9696325 128.0 +-5.32094 -0.99557728 -1.9668492 128.0 +-5.3241811 -0.96241015 -1.9658054 128.0 +-5.3364511 -0.93084979 -1.9682409 128.0 +-5.3522329 -0.89979601 -1.972068 128.0 +-5.3687592 -0.86873311 -1.976243 128.0 +-0 -0 -0 128.0 +-5.408689 -0.80720687 -1.9873763 128.0 +-5.4385991 -0.77758205 -1.9967701 128.0 +-5.464633 -0.74711323 -2.0047722 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-5.3409567 -0.037536558 -1.9400595 128.0 +-0 -0 -0 128.0 +-5.3428903 0.028018259 -1.9407554 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-5.2527013 -0.13438906 -1.9715911 128.0 +-5.2328877 -0.10175557 -1.9637177 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-0 0 -0 128.0 +-5.1187916 1.0126848 -1.9576337 128.0 +-5.1005878 1.0416461 -1.9529814 128.0 +-5.0886178 1.0717689 -1.950834 128.0 +-5.0782957 1.1021799 -1.9494026 128.0 +-5.0668807 1.1323011 -1.9476131 128.0 +-5.0571074 1.1627421 -1.9465395 128.0 +-5.0526042 1.1943942 -1.9476131 128.0 +-5.0442729 1.2251537 -1.9472553 128.0 +-5.0430026 1.2576629 -1.9497604 128.0 +-5.0460467 1.2913597 -1.954055 128.0 +-5.0298991 1.3201644 -1.950834 128.0 +-5.0189991 1.3502749 -1.9497604 128.0 +-5.01332 1.3817897 -1.950834 128.0 +-5.0020509 1.4117641 -1.9497604 128.0 +-4.9771466 1.4377662 -1.9433186 128.0 +-4.9736037 1.4698658 -1.9454659 128.0 +-4.9591284 1.4987352 -1.9433186 128.0 +-4.9471622 1.528309 -1.942245 128.0 +-4.93502 1.5577924 -1.9411713 128.0 +-4.921814 1.586898 -1.9397398 128.0 +-4.9102101 1.6164839 -1.9390241 128.0 +-4.9010844 1.6468793 -1.939382 128.0 +-4.8917704 1.6772236 -1.9397398 128.0 +-4.887557 1.7093647 -1.942245 128.0 +-4.8831334 1.7415172 -1.9447501 128.0 +-4.8749886 1.7724037 -1.9458238 128.0 +-4.8657727 1.8029314 -1.9465395 128.0 +-4.8581128 1.8340722 -1.947971 128.0 +-4.8345656 1.8591553 -1.9429607 128.0 +-0 0 -0 128.0 +-4.7975087 1.9128108 -1.9372346 128.0 +-4.7804904 1.9401052 -1.9350874 128.0 +-4.7650437 1.9679757 -1.9336559 128.0 +-4.7554612 1.9982615 -1.9347295 128.0 +-4.7491212 2.0299714 -1.9372346 128.0 +-4.7331505 2.0575845 -1.9358032 128.0 +-4.7289772 2.0903623 -1.939382 128.0 +-4.7058411 2.1147473 -1.9350874 128.0 +-4.6953249 2.1447456 -1.936161 128.0 +-4.6812296 2.1731222 -1.9358032 128.0 +-4.6441598 2.1906524 -1.9257826 128.0 +-4.6390514 2.2231419 -1.9293613 128.0 +-4.6127291 2.2454352 -1.9239931 128.0 +-4.6072354 2.2778339 -1.9275719 128.0 +-4.5798197 2.2993579 -1.9218459 128.0 +-0 0 -0 128.0 +-4.5603809 2.3601065 -1.9257826 128.0 +-4.5466404 2.3884783 -1.9261404 128.0 +-4.5368433 2.4189665 -1.9282877 128.0 +-0 0 -0 128.0 +-4.515821 2.4794011 -1.9322244 128.0 +-4.5062332 2.5102434 -1.9347295 128.0 +-4.488307 2.5364678 -1.9336559 128.0 +-4.4734693 2.5644243 -1.9340137 128.0 +-4.4592643 2.5927632 -1.9347295 128.0 +-4.4408584 2.6186533 -1.9336559 128.0 +-4.4239058 2.6453733 -1.933298 128.0 +-4.4051952 2.671016 -1.9322244 128.0 +-4.3887234 2.6979954 -1.9322244 128.0 +-4.3736711 2.7258611 -1.9329401 128.0 +-4.3584418 2.7536433 -1.9336559 128.0 +-4.3430367 2.7813416 -1.9343716 128.0 +-0 0 -0 128.0 +-4.3070183 2.8334014 -1.9336559 128.0 +-4.2918825 2.8613293 -1.9347295 128.0 +-4.2726974 2.8865645 -1.9340137 128.0 +-4.2495112 2.9090352 -1.9315087 128.0 +-4.2308145 2.9345229 -1.9311507 128.0 +-4.2066169 2.9561329 -1.9282877 128.0 +-4.191442 2.9840543 -1.9297192 128.0 +-4.1677513 3.0058935 -1.927214 128.0 +-4.1560154 3.0363667 -1.9304349 128.0 +-4.1365557 3.061255 -1.9300771 128.0 +-4.1049919 3.0770588 -1.9239931 128.0 +-4.105372 3.1168675 -1.933298 128.0 +-4.0824685 3.1391535 -1.9315087 128.0 +-4.0609198 3.1624229 -1.9304349 128.0 +-4.0443721 3.1895933 -1.9318665 128.0 +-4.0218062 3.2120185 -1.9304349 128.0 +-4.0005698 3.235461 -1.9297192 128.0 +-3.9690824 3.2504821 -1.9239931 128.0 +-3.9648774 3.2878866 -1.9318665 128.0 +-3.946774 3.3139539 -1.9329401 128.0 +-3.9277887 3.339318 -1.9336559 128.0 +-3.9114716 3.3670104 -1.9358032 128.0 +-3.8907382 3.3909473 -1.9358032 128.0 +-3.8656573 3.4110501 -1.9336559 128.0 +-3.8446548 3.434705 -1.9336559 128.0 +-3.8221223 3.4569781 -1.9329401 128.0 +-3.8008387 3.480365 -1.9329401 128.0 +-3.7746181 3.4991777 -1.9304349 128.0 +-3.7476292 3.5171609 -1.9275719 128.0 +-3.7219157 3.536231 -1.9254247 128.0 +-3.6974556 3.5564127 -1.9239931 128.0 +-3.673557 3.5770788 -1.9229195 128.0 +-3.6541996 3.6021738 -1.924351 128.0 +-3.6320283 3.6245277 -1.924351 128.0 +-3.6149759 3.6520538 -1.927214 128.0 +-3.588582 3.6701605 -1.9250668 128.0 +-3.5640485 3.6900959 -1.9239931 128.0 +-3.5419841 3.7125704 -1.924351 128.0 +-3.5152946 3.7301569 -1.9222038 128.0 +-3.4936132 3.7530229 -1.9229195 128.0 +-3.4660947 3.7695775 -1.9204143 128.0 +-3.446667 3.7949212 -1.9225616 128.0 +-3.4245641 3.8173881 -1.9232774 128.0 +-3.4072697 3.8453174 -1.9268562 128.0 +-3.3823812 3.8647463 -1.9261404 128.0 +-3.360436 3.8875465 -1.927214 128.0 +-3.3359127 3.9073825 -1.9268562 128.0 +-3.3088648 3.9242086 -1.9250668 128.0 +-3.2811384 3.9401326 -1.9229195 128.0 +-3.255121 3.9580276 -1.9218459 128.0 +-3.2307737 3.9779263 -1.9218459 128.0 +-3.2103949 4.0027738 -1.924351 128.0 +-3.1875131 4.0245929 -1.9254247 128.0 +-3.166786 4.0492234 -1.9279298 128.0 +-3.1424515 4.0693173 -1.9282877 128.0 +-3.1196885 4.0914927 -1.9297192 128.0 +-3.0950863 4.1113033 -1.9300771 128.0 +-3.0597742 4.1167283 -1.9236352 128.0 +-3.0333519 4.1339197 -1.9229195 128.0 +-3.0008078 4.1426239 -1.9182671 128.0 +-2.9693575 4.1526036 -1.9143304 128.0 +-2.9427445 4.1692195 -1.9136146 128.0 +-0 0 -0 128.0 +-2.8887146 4.2011704 -1.9118253 128.0 +-2.8681262 4.2265425 -1.9154041 128.0 +-2.8452566 4.2487164 -1.9175513 128.0 +-2.820678 4.2684317 -1.918625 128.0 +-2.7939241 4.2848763 -1.9182671 128.0 +-2.7685907 4.3035097 -1.9189829 128.0 +-2.7371283 4.3125329 -1.9154041 128.0 +-2.7071464 4.3237066 -1.9128989 128.0 +-2.679584 4.3386469 -1.9121832 128.0 +-2.6470821 4.345438 -1.9078885 128.0 +-2.6290262 4.3760052 -1.9143304 128.0 +-2.6021259 4.3920546 -1.9143304 128.0 +-2.5770123 4.4111629 -1.9157619 128.0 +-2.5540924 4.4341741 -1.9189829 128.0 +-2.5296037 4.4546337 -1.9211301 128.0 +-2.5031354 4.4717007 -1.9218459 128.0 +-2.4742968 4.4845228 -1.9207722 128.0 +-2.4467337 4.4996204 -1.9207722 128.0 +-2.41555 4.5079646 -1.9179091 128.0 +-2.3847919 4.5169215 -1.9154041 128.0 +-2.3540149 4.5256705 -1.9128989 128.0 +-2.3274791 4.5425224 -1.9139725 128.0 +-2.2966177 4.5508828 -1.9114674 128.0 +-2.2657413 4.5590358 -1.9089622 128.0 +-2.2438824 4.5854325 -1.9143304 128.0 +-2.2148938 4.5974321 -1.9136146 128.0 +-2.1910448 4.6202164 -1.9175513 128.0 +-2.1618643 4.6318812 -1.9168355 128.0 +-2.1341827 4.6467557 -1.9175513 128.0 +-2.1029384 4.6538072 -1.9150462 128.0 +-2.0766196 4.6717424 -1.9171934 128.0 +-2.0490377 4.6869631 -1.9182671 128.0 +-2.0250354 4.7105994 -1.9229195 128.0 +-2.0004566 4.7332568 -1.927214 128.0 +-1.9670767 4.735095 -1.9229195 128.0 +-1.9390447 4.7496691 -1.9239931 128.0 +-1.9088217 4.7588773 -1.9229195 128.0 +-1.8789011 4.7687626 -1.9222038 128.0 +-1.8475829 4.7749767 -1.9200565 128.0 +-1.8185812 4.787096 -1.9204143 128.0 +-1.7846055 4.7859163 -1.9154041 128.0 +-1.755206 4.7967763 -1.9154041 128.0 +-1.7247939 4.8048191 -1.9143304 128.0 +-1.6955898 4.8161926 -1.9146882 128.0 +-1.6675299 4.8309193 -1.9164777 128.0 +-1.6315708 4.8224854 -1.9089622 128.0 +-1.6054765 4.8430414 -1.9132568 128.0 +-1.5716918 4.8403683 -1.9082465 128.0 +-1.548471 4.8703876 -1.9164777 128.0 +-1.516615 4.8735557 -1.9139725 128.0 +-1.4845065 4.8756237 -1.9111094 128.0 +-1.4564283 4.8909054 -1.9136146 128.0 +-1.4258686 4.8979564 -1.9128989 128.0 +-1.3950218 4.9039187 -1.9118253 128.0 +-1.366156 4.9168849 -1.9136146 128.0 +-1.3300922 4.9035463 -1.9050256 128.0 +-1.3059543 4.9341822 -1.9139725 128.0 +-1.2772883 4.948431 -1.9164777 128.0 +-1.2434828 4.9425921 -1.9111094 128.0 +-1.2135769 4.9519429 -1.9118253 128.0 +-1.1781839 4.938406 -1.903594 128.0 +-1.1516616 4.9619145 -1.9100358 128.0 +-1.1193438 4.96069 -1.9068149 128.0 +-1.0888845 4.9674649 -1.9068149 128.0 +-1.0583842 4.9740524 -1.9068149 128.0 +-1.0289769 4.98594 -1.9089622 128.0 +-0.99579972 4.979341 -1.9039519 128.0 +-0.96913481 5.0055256 -1.9118253 128.0 +-0.93926293 5.0159669 -1.9136146 128.0 +-0 0 -0 128.0 +-0.87908453 5.0353937 -1.9168355 128.0 +-0.84786135 5.0388513 -1.9161198 128.0 +-0.81812245 5.051333 -1.9189829 128.0 +-0.78653783 5.052567 -1.9175513 128.0 +-0.75538301 5.0563745 -1.9171934 128.0 +-0.72540247 5.0683088 -1.9200565 128.0 +-0.69314998 5.0643382 -1.9168355 128.0 +-0.6606105 5.0573854 -1.912541 128.0 +-0.63118124 5.0743165 -1.9175513 128.0 +-0.59816992 5.0623293 -1.9114674 128.0 +-0.56626517 5.0584807 -1.9086044 128.0 +-0.53521627 5.0618601 -1.9086044 128.0 +-0.50386953 5.0622611 -1.9075307 128.0 +-0.47210371 5.0578198 -1.9046676 128.0 +-0.44138524 5.0643425 -1.9060992 128.0 +-0.41052902 5.0697474 -1.9071728 128.0 +-0.37913498 5.0684462 -1.9057413 128.0 +-0.34758037 5.0641561 -1.9032362 128.0 +-0.31533483 5.047555 -1.8960786 128.0 +-0.2856195 5.0717692 -1.9046676 128.0 +-0.25463492 5.0762243 -1.9057413 128.0 +-0.22340073 5.0758252 -1.9050256 128.0 +-0.19239347 5.080833 -1.9064571 128.0 +-0.16118476 5.0809846 -1.9060992 128.0 +-0.13019703 5.0893455 -1.9089622 128.0 +-0.099003389 5.0919161 -1.909678 128.0 +-0.067820609 5.097096 -1.9114674 128.0 +-0.036517065 5.0936813 -1.9100358 128.0 +-0.0052569415 5.0891404 -1.9082465 128.0 +0.025941392 5.0834742 -1.9060992 128.0 +0.057090838 5.0794845 -1.9046676 128.0 +0.088289194 5.0809059 -1.9053835 128.0 +0.11941963 5.0784016 -1.9046676 128.0 +0.15055026 5.0766401 -1.9043097 128.0 +0.18173043 5.0765538 -1.9046676 128.0 +0.21318862 5.0828066 -1.9075307 128.0 +0.24428256 5.0795374 -1.9068149 128.0 +0.27529392 5.0751457 -1.9057413 128.0 +0.30592322 5.0649724 -1.9025204 128.0 +0.33711943 5.0648632 -1.9032362 128.0 +0.36852878 5.0673561 -1.9050256 128.0 +0.39976132 5.0668612 -1.9057413 128.0 +0.43084347 5.0643129 -1.9057413 128.0 +0.46216375 5.064364 -1.9068149 128.0 +0.49259597 5.0549269 -1.9043097 128.0 +0.52456504 5.0610971 -1.9078885 128.0 +0.55540574 5.0559268 -1.9071728 128.0 +0.58598751 5.0487137 -1.9057413 128.0 +0.6169548 5.045023 -1.9057413 128.0 +0.64813679 5.042995 -1.9064571 128.0 +0.67919248 5.0398483 -1.9068149 128.0 +0.70932174 5.0300384 -1.9046676 128.0 +0.74017209 5.0255914 -1.9046676 128.0 +0 0 -0 128.0 +0.80164081 5.0152078 -1.9043097 128.0 +0.83071584 5.000062 -1.9003731 128.0 +0.86233169 5.000392 -1.9025204 128.0 +0.89234024 4.9913297 -1.9010888 128.0 +0.92413896 4.992188 -1.903594 128.0 +0.9540509 4.9827547 -1.9021626 128.0 +0.98641807 4.9859676 -1.9057413 128.0 +1.0169928 4.9798212 -1.9057413 128.0 +1.0469521 4.970746 -1.9046676 128.0 +1.0774324 4.9642282 -1.9046676 128.0 +1.1070577 4.9538789 -1.9032362 128.0 +1.137015 4.9451728 -1.9025204 128.0 +1.1675513 4.9390116 -1.9028783 128.0 +1.1969533 4.9281249 -1.9014468 128.0 +1.2260398 4.9161577 -1.8996574 128.0 +1.2575703 4.91397 -1.9018047 128.0 +1.2869872 4.9034519 -1.900731 128.0 +1.317535 4.8972659 -1.9014468 128.0 +1.3468151 4.8863893 -1.9003731 128.0 +1.3795613 4.8879185 -1.9043097 128.0 +1.4100453 4.881156 -1.9050256 128.0 +1.4378523 4.8652482 -1.9021626 128.0 +1.4687581 4.8599095 -1.903594 128.0 +1.5010302 4.8588357 -1.9068149 128.0 +1.5302532 4.847753 -1.9060992 128.0 +1.5593966 4.8364949 -1.9053835 128.0 +1.5893354 4.8277225 -1.9057413 128.0 +1.6180358 4.8152242 -1.9046676 128.0 +1.6466426 4.8025556 -1.903594 128.0 +1.6776205 4.7967687 -1.9053835 128.0 +1.7076485 4.7881436 -1.9060992 128.0 +1.7379528 4.7802086 -1.9071728 128.0 +1.767251 4.7694545 -1.9071728 128.0 +1.7964826 4.7585211 -1.9071728 128.0 +1.8283272 4.7543812 -1.9100358 128.0 +1.8537203 4.7335086 -1.9060992 128.0 +1.8799636 4.7151065 -1.9032362 128.0 +1.9071043 4.6991563 -1.9014468 128.0 +1.9391092 4.6951337 -1.9046676 128.0 +1.9657115 4.6779819 -1.9025204 128.0 +1.9965796 4.6709843 -1.9046676 128.0 +2.0233417 4.6543636 -1.9028783 128.0 +2.0522397 4.642715 -1.9032362 128.0 +2.0810709 4.630887 -1.903594 128.0 +2.11061 4.6205788 -1.9046676 128.0 +2.1365631 4.6024594 -1.9025204 128.0 +2.1611784 4.5816622 -1.8992995 128.0 +2.1916709 4.5733676 -1.9014468 128.0 +2.2184656 4.5573149 -1.9003731 128.0 +2.2505245 4.5519876 -1.9039519 128.0 +2.2767372 4.5347552 -1.9025204 128.0 +2.305367 4.5223637 -1.9032362 128.0 +2.3322141 4.5064745 -1.9025204 128.0 +2.3585188 4.4895992 -1.9014468 128.0 +2.3811903 4.4659791 -1.8975101 128.0 +2.4098811 4.4537482 -1.8985838 128.0 +2.4344673 4.4339666 -1.8964365 128.0 +2.462991 4.4213929 -1.8975101 128.0 +2.4960451 4.4167657 -1.9021626 128.0 +2.5282066 4.4102783 -1.9060992 128.0 +2.5566278 4.3971043 -1.9071728 128.0 +2.5883021 4.3893785 -1.9107516 128.0 +2.6161444 4.3750172 -1.9114674 128.0 +2.6453602 4.362875 -1.9132568 128.0 +2.665235 4.3354239 -1.9082465 128.0 +2.6912928 4.3181963 -1.9078885 128.0 +2.7167406 4.3000226 -1.9071728 128.0 +2.7385423 4.2761946 -1.9039519 128.0 +2.7657456 4.2608771 -1.9046676 128.0 +2.7949166 4.2485075 -1.9068149 128.0 +2.8271472 4.240602 -1.9111094 128.0 +2.8473644 4.2146635 -1.9071728 128.0 +0 0 -0 128.0 +2.909513 4.1947508 -1.9143304 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +3.0082762 4.1175604 -1.9121832 128.0 +0 0 -0 128.0 +3.0540986 4.0743566 -1.9093201 128.0 +0 0 -0 128.0 +0 0 -0 128.0 +3.1171033 4.0027146 -1.9021626 128.0 +3.1352451 3.9754477 -1.8982259 128.0 +3.1525869 3.9473791 -1.8939313 128.0 +0 0 -0 128.0 +3.1966488 3.9033377 -1.8914262 128.0 +3.2223272 3.8858063 -1.8924998 128.0 +3.251513 3.8723977 -1.8957207 128.0 +3.2830744 3.861623 -1.9003731 128.0 +3.3121891 3.8477752 -1.903594 128.0 +3.3412573 3.8337154 -1.9068149 128.0 +3.3628645 3.8110411 -1.9057413 128.0 +3.3812089 3.7847641 -1.9028783 128.0 +3.4062469 3.7660239 -1.9039519 128.0 +3.4286602 3.7443638 -1.903594 128.0 +3.4553792 3.7273645 -1.9057413 128.0 +3.4826574 3.7108591 -1.9082465 128.0 +3.5105064 3.6948359 -1.9111094 128.0 +3.5357003 3.6759186 -1.912541 128.0 +3.5614457 3.6574998 -1.9143304 128.0 +3.5818543 3.6335833 -1.9132568 128.0 +3.5961676 3.603605 -1.9089622 128.0 +3.6182113 3.5814714 -1.9089622 128.0 +3.6414537 3.5605087 -1.909678 128.0 +3.6545014 3.5296645 -1.9050256 128.0 +3.6929793 3.5232899 -1.9139725 128.0 +3.7165668 3.5024853 -1.9150462 128.0 +3.7366209 3.4783425 -1.9143304 128.0 +3.7578931 3.4553494 -1.9143304 128.0 +3.7797153 3.4328542 -1.9146882 128.0 +3.7944524 3.4039855 -1.9114674 128.0 +3.8194606 3.3843548 -1.9136146 128.0 +3.8415599 3.3620856 -1.9143304 128.0 +3.8578787 3.3347867 -1.9121832 128.0 +3.878978 3.3116586 -1.912541 128.0 +3.899225 3.2877953 -1.912541 128.0 +3.9214776 3.2656012 -1.9136146 128.0 +3.9414411 3.241478 -1.9136146 128.0 +3.9605315 3.2166438 -1.9132568 128.0 +3.9801939 3.192282 -1.9132568 128.0 +4.0040979 3.1712787 -1.9154041 128.0 +4.0249524 3.1478009 -1.9161198 128.0 +4.0404959 3.1201911 -1.9143304 128.0 +4.0573378 3.0936418 -1.9132568 128.0 +4.0792274 3.0709348 -1.9146882 128.0 +4.0934973 3.0425048 -1.912541 128.0 +4.1128411 3.0178828 -1.9128989 128.0 +4.1395993 2.9986162 -1.9168355 128.0 +4.1594396 2.974246 -1.9175513 128.0 +4.176085 2.9475913 -1.9168355 128.0 +4.1925602 2.9208441 -1.9161198 128.0 +4.2119422 2.8961222 -1.9168355 128.0 +4.2242246 2.8665531 -1.9143304 128.0 +4.2401824 2.8395405 -1.9136146 128.0 +4.2520728 2.8098657 -1.9111094 128.0 +4.2747087 2.7872932 -1.9136146 128.0 +4.2933011 2.762022 -1.9143304 128.0 +4.3125329 2.7371283 -1.9154041 128.0 +4.3292465 2.7106154 -1.9154041 128.0 +4.3370581 2.6786027 -1.9114674 128.0 +4.3398561 2.6436813 -1.9053835 128.0 +4.3591971 2.6189263 -1.9068149 128.0 +4.3727746 2.5907013 -1.9057413 128.0 +4.3877826 2.5633507 -1.9053835 128.0 +4.4058557 2.5377779 -1.9064571 128.0 +4.4229679 2.5116186 -1.9071728 128.0 +4.4423695 2.4867134 -1.9089622 128.0 +4.460814 2.4612134 -1.9103937 128.0 +4.4741912 2.4329038 -1.909678 128.0 +4.4947963 2.4084923 -1.9121832 128.0 +4.5136185 2.3830476 -1.9139725 128.0 +4.524014 2.353153 -1.9121832 128.0 +4.5358744 2.3240724 -1.9111094 128.0 +4.5608859 2.3016667 -1.9157619 128.0 +4.571578 2.2719758 -1.9143304 128.0 +4.5980129 2.2500398 -1.9196986 128.0 +4.6117325 2.2217846 -1.9196986 128.0 +4.6219039 2.1918452 -1.9182671 128.0 +4.6217279 2.1571245 -1.912541 128.0 +4.643362 2.1326234 -1.9161198 128.0 +4.6521053 2.1021693 -1.9143304 128.0 +4.6299338 2.0580316 -1.8996574 128.0 +4.6630077 2.0385625 -1.9082465 128.0 +4.6891537 2.0158143 -1.9139725 128.0 +4.6971335 1.9851862 -1.9121832 128.0 +4.7014656 1.9531031 -1.9089622 128.0 +4.7211413 1.9273957 -1.9121832 128.0 +4.7285457 1.8966526 -1.9103937 128.0 +4.7496505 1.8713691 -1.9143304 128.0 +4.7619143 1.8425276 -1.9146882 128.0 +4.7774944 1.8149327 -1.9164777 128.0 +4.7876658 1.7852581 -1.9161198 128.0 +4.8081756 1.7593783 -1.9200565 128.0 +4.821517 1.7307894 -1.9211301 128.0 +4.8373308 1.7030334 -1.9232774 128.0 +4.8512197 1.6745391 -1.9247088 128.0 +4.8658257 1.6462377 -1.9264983 128.0 +4.8758354 1.6163505 -1.9264983 128.0 +4.8865495 1.586691 -1.9268562 128.0 +4.8917437 1.5552629 -1.9250668 128.0 +4.89852 1.5243858 -1.9239931 128.0 +4.9024215 1.492668 -1.9218459 128.0 +4.9088035 1.4617596 -1.9207722 128.0 +4.9158874 1.4310901 -1.9200565 128.0 +4.9263721 1.4014109 -1.9207722 128.0 +4.9375768 1.3719071 -1.9218459 128.0 +4.940495 1.3401177 -1.9196986 128.0 +4.9540405 1.3112121 -1.9218459 128.0 +4.9638009 1.2812569 -1.9225616 128.0 +4.9751911 1.251687 -1.9239931 128.0 +4.9854984 1.2218033 -1.9250668 128.0 +4.9910851 1.1907563 -1.924351 128.0 +5.0001168 1.1605315 -1.9250668 128.0 +5.0025892 1.1288016 -1.9232774 128.0 +5.007597 1.097685 -1.9225616 128.0 +5.0096712 1.0659662 -1.9207722 128.0 +5.0142889 1.0348297 -1.9200565 128.0 +5.0196285 1.00386 -1.9196986 128.0 +5.0247769 0.97286367 -1.9193407 128.0 +5.0297337 0.94184196 -1.9189829 128.0 +5.042769 0.91229278 -1.9218459 128.0 +5.0593095 0.88326174 -1.9261404 128.0 +5.0655551 0.85235679 -1.9264983 128.0 +5.0780635 0.82245398 -1.9293613 128.0 +5.0857821 0.79171121 -1.9304349 128.0 +5.0970087 0.76145679 -1.9329401 128.0 +5.0969634 0.72950596 -1.9311507 128.0 +5.0985684 0.69783771 -1.9300771 128.0 +5.1101613 0.66750854 -1.9329401 128.0 +5.1058211 0.63510257 -1.9297192 128.0 +5.0901484 0.60145932 -1.9222038 128.0 +5.0965271 0.57052732 -1.9232774 128.0 +5.0980749 0.53904831 -1.9225616 128.0 +5.1012864 0.50775701 -1.9225616 128.0 +5.0987277 0.47592539 -1.9204143 128.0 +5.1136451 0.44568616 -1.9250668 128.0 +5.1088376 0.41369751 -1.9222038 128.0 +5.1140733 0.38255167 -1.9232774 128.0 +5.1237769 0.35167724 -1.9261404 128.0 +5.1081314 0.31912407 -1.9193407 128.0 +5.1249099 0.28861639 -1.9250668 128.0 +5.1228538 0.25697768 -1.9236352 128.0 +5.1196699 0.22533394 -1.9218459 128.0 +5.1274877 0.19416384 -1.924351 128.0 +5.1369824 0.16296566 -1.9275719 128.0 +5.1388192 0.13146661 -1.9279298 128.0 +5.141396 0.099969387 -1.9286456 128.0 +5.1456475 0.068470486 -1.9300771 128.0 +5.1431694 0.036875788 -1.9290035 128.0 +5.1479678 0.0053223954 -1.9307928 128.0 +5.1479034 -0.026265042 -1.9307928 128.0 +5.1457782 -0.05783065 -1.9300771 128.0 +5.144393 -0.089387313 -1.9297192 128.0 +5.1428137 -0.12092915 -1.9293613 128.0 +5.1373081 -0.15234457 -1.9275719 128.0 +5.1288114 -0.18359698 -1.9247088 128.0 +5.1369181 -0.21545388 -1.9282877 128.0 +5.1336336 -0.2468798 -1.9275719 128.0 +5.1254954 -0.27802104 -1.9250668 128.0 +5.1339459 -0.31008369 -1.9290035 128.0 +5.141264 -0.34219855 -1.9325823 128.0 +5.1362734 -0.37353534 -1.9315087 128.0 +5.1357465 -0.40519062 -1.9322244 128.0 +5.1313028 -0.43653721 -1.9315087 128.0 +5.1396866 -0.46903151 -1.9358032 128.0 +5.1367121 -0.50055921 -1.9358032 128.0 +5.137259 -0.53245282 -1.9372346 128.0 +5.1357517 -0.56416821 -1.9379504 128.0 +5.1349759 -0.59599268 -1.9390241 128.0 +5.1330762 -0.62771565 -1.9397398 128.0 +5.130054 -0.65931875 -1.9400977 128.0 +5.1240611 -0.69053447 -1.939382 128.0 +5.1243505 -0.72261369 -1.9411713 128.0 +5.1244392 -0.75472242 -1.9429607 128.0 +5.1114054 -0.78487635 -1.9397398 128.0 +5.1046491 -0.81592995 -1.9390241 128.0 +5.1013889 -0.84754205 -1.9397398 128.0 +5.0914917 -0.87803459 -1.9379504 128.0 +5.0795736 -0.90810901 -1.9354453 128.0 +5.0876789 -0.94180804 -1.9408134 128.0 +5.0882239 -0.97423643 -1.9433186 128.0 +5.0821505 -1.0054388 -1.9433186 128.0 +5.0813746 -1.037724 -1.9454659 128.0 +5.0785666 -1.0696527 -1.9468974 128.0 +5.0792084 -1.1023779 -1.9497604 128.0 +5.0750823 -1.1341333 -1.950834 128.0 +5.0707583 -1.1658796 -1.9519078 128.0 +5.0616913 -1.1965417 -1.9511919 128.0 +5.0506248 -1.2266959 -1.9497604 128.0 +5.0348487 -1.2556299 -1.9465395 128.0 +5.0198121 -1.2846481 -1.9436765 128.0 +5.0037065 -1.313292 -1.9404556 128.0 +4.9946523 -1.343727 -1.9400977 128.0 +4.9836125 -1.3736042 -1.9390241 128.0 +4.9705973 -1.4028894 -1.9372346 128.0 +4.9601016 -1.4328438 -1.9365189 128.0 +4.9610667 -1.4661617 -1.9404556 128.0 +4.9564466 -1.497925 -1.942245 128.0 +4.94627 -1.5280335 -1.9418871 128.0 +4.936801 -1.5583544 -1.9418871 128.0 +4.9307013 -1.5897626 -1.9433186 128.0 +4.9288363 -1.6226141 -1.9465395 128.0 +4.9117064 -1.6504476 -1.9436765 128.0 +4.90767 -1.6826736 -1.9461817 128.0 +4.8963714 -1.7124467 -1.9458238 128.0 +4.8892903 -1.7437124 -1.9472553 128.0 +4.8714781 -1.7711278 -1.9443922 128.0 +4.8622704 -1.801634 -1.9451081 128.0 +4.846756 -1.8297857 -1.9433186 128.0 +4.7805285 -1.8383799 -1.9207722 128.0 +4.8108945 -1.8840187 -1.9379504 128.0 +4.7844977 -1.9076244 -1.9318665 128.0 +4.7311707 -1.920094 -1.9146882 128.0 +4.7029014 -1.9423165 -1.9078885 128.0 +4.6392422 -1.9494365 -1.8864158 128.0 +4.5816851 -1.9584178 -1.8674482 128.0 +4.5430341 -1.9749552 -1.856354 128.0 +4.4522552 -1.9680681 -1.8234291 128.0 +4.3855834 -1.9708577 -1.8005248 128.0 +4.3504748 -1.9872566 -1.7908621 128.0 +4.2950029 -1.9938648 -1.7726103 128.0 +4.2573509 -2.0082319 -1.761874 128.0 +4.2104225 -2.0177743 -1.7472008 128.0 +4.1685762 -2.029269 -1.7346752 128.0 +4.1183777 -2.0361886 -1.7185706 128.0 +4.0857773 -2.0513666 -1.7099814 128.0 +4.0489874 -2.0641012 -1.699603 128.0 +4.0221472 -2.0816116 -1.693519 128.0 +4.0159125 -2.1097255 -1.696382 128.0 +3.9831159 -2.1237848 -1.6877929 128.0 +3.9823289 -2.1548493 -1.6931611 128.0 +3.9428387 -2.164865 -1.6817091 128.0 +3.9147971 -2.1808388 -1.6752672 128.0 +3.8997161 -2.2038996 -1.6745514 128.0 +3.8828793 -2.225929 -1.6731199 128.0 +3.8295918 -2.226717 -1.6555839 128.0 +3.8053999 -2.2440078 -1.6509314 128.0 +3.8236172 -2.2864816 -1.6652466 128.0 +3.7448375 -2.2706902 -1.6362584 128.0 +3.66242 -2.2515748 -1.6054808 128.0 +3.5035088 -2.1836333 -1.5399889 128.0 +3.5626738 -2.2509682 -1.5729138 128.0 +3.2562625 -2.0854766 -1.4397827 128.0 +3.2011082 -2.0779672 -1.4204572 128.0 +3.1906383 -2.0991092 -1.421531 128.0 +3.1831372 -2.1222725 -1.424036 128.0 +3.1924949 -2.1569211 -1.4344145 128.0 +3.0767155 -2.1063244 -1.3868166 128.0 +3.0767777 -2.1342094 -1.3929006 128.0 +3.0124342 -2.1170809 -1.3689227 128.0 +2.9400511 -2.0932879 -1.3410081 128.0 +2.893069 -2.0867114 -1.3249036 128.0 +2.8508039 -2.0829427 -1.3109462 128.0 +2.8424733 -2.1037281 -1.3130935 128.0 +2.8070955 -2.1043293 -1.3023572 128.0 +2.7933869 -2.1209493 -1.3019993 128.0 +2.7751384 -2.1340652 -1.2994941 128.0 +2.7877789 -2.1711314 -1.3120199 128.0 +2.7707384 -2.1853051 -1.3102305 128.0 +2.6996331 -2.1562345 -1.2819581 128.0 +2.6304431 -2.1275496 -1.2544014 128.0 +3.3072989 -2.7086015 -1.5961759 128.0 +3.2913358 -2.7294397 -1.5965338 128.0 +3.2888296 -2.7615914 -1.6036913 128.0 +2.4522212 -2.0850234 -1.1914147 128.0 +2.4061182 -2.0714018 -1.1745944 128.0 +2.3891389 -2.0824459 -1.1724471 128.0 +2.3665135 -2.0884175 -1.1674367 128.0 +2.3473871 -2.0973003 -1.1642158 128.0 +2.3317037 -2.109159 -1.1627843 128.0 +2.3228505 -2.1272097 -1.1649317 128.0 +2.3001668 -2.1325357 -1.1599213 128.0 +2.2686534 -2.1293573 -1.1502585 128.0 +2.2244036 -2.1136541 -1.1337961 128.0 +2.1689913 -2.0864856 -1.1112498 128.0 +2.1588242 -2.1023605 -1.1126813 128.0 +2.1412284 -2.1109788 -1.1101761 128.0 +2.1183202 -2.1141844 -1.104808 128.0 +2.0993955 -2.12117 -1.1015871 128.0 +2.0785062 -2.1260006 -1.0972924 128.0 +2.0595834 -2.1326697 -1.0940715 128.0 +2.036145 -2.1344581 -1.0883455 128.0 +2.020448 -2.1441934 -1.0869139 128.0 +2.0002542 -2.1490326 -1.0829773 128.0 +1.9800775 -2.1537049 -1.0790406 128.0 +1.9567797 -2.1547551 -1.0733145 128.0 +1.946016 -2.1695013 -1.0747461 128.0 +1.9233778 -2.1709185 -1.0693779 128.0 +1.9137112 -2.1868949 -1.0715252 128.0 +1.9039208 -2.2028344 -1.0736724 128.0 +1.8885496 -2.2123446 -1.0725988 128.0 +1.8785512 -2.228174 -1.0747461 128.0 +1.8809791 -2.2590311 -1.0844089 128.0 +1.868862 -2.2726934 -1.0854825 128.0 +1.8595917 -2.289916 -1.0883455 128.0 +1.8466747 -2.3027399 -1.0890613 128.0 +1.83425 -2.3162234 -1.0901349 128.0 +1.8177022 -2.3244927 -1.0887034 128.0 +1.8016928 -2.333385 -1.0876298 128.0 +1.7833779 -2.3391986 -1.0851246 128.0 +1.7616895 -2.3403997 -1.0804721 128.0 +1.7428393 -2.34517 -1.0776092 128.0 +1.7223396 -2.3475389 -1.0736724 128.0 +1.697494 -2.3436956 -1.0668727 128.0 +1.6771064 -2.3457124 -1.0629361 128.0 +1.670221 -2.3666387 -1.0679464 128.0 +1.6551343 -2.3760762 -1.0675884 128.0 +1.6415821 -2.3877258 -1.0683043 128.0 +1.6295223 -2.4016166 -1.0700936 128.0 +1.6261876 -2.428638 -1.077967 128.0 +1.6189781 -2.4502554 -1.0833352 128.0 +1.6049334 -2.4617074 -1.0840509 128.0 +1.590809 -2.4730792 -1.0847667 128.0 +1.5741031 -2.4804287 -1.083693 128.0 +1.5643054 -2.4987459 -1.0876298 128.0 +1.5459995 -2.5035307 -1.0854825 128.0 +1.5325525 -2.5161593 -1.0869139 128.0 +1.5190085 -2.528717 -1.0883455 128.0 +1.5058441 -2.5420065 -1.0901349 128.0 +1.4911605 -2.5528109 -1.0908506 128.0 +1.4777993 -2.5659578 -1.09264 128.0 +1.4597213 -2.5709174 -1.0908506 128.0 +1.4398135 -2.5724928 -1.0876298 128.0 +1.4185879 -2.5714684 -1.0833352 128.0 +1.402783 -2.5801244 -1.0833352 128.0 +1.3820733 -2.5796299 -1.0793985 128.0 +1.3605505 -2.5773273 -1.0747461 128.0 +1.352899 -2.601366 -1.0815458 128.0 +1.3381894 -2.6121113 -1.0826194 128.0 +1.3280272 -2.6319435 -1.0876298 128.0 +1.3147624 -2.6458957 -1.0901349 128.0 +1.3120492 -2.6815901 -1.1019449 128.0 +1.2939492 -2.6862254 -1.1005133 128.0 +1.2746413 -2.6882086 -1.0980083 128.0 +1.2514079 -2.6815951 -1.0919243 128.0 +1.2345406 -2.6883748 -1.0915664 128.0 +1.2057152 -2.6686704 -1.0801142 128.0 +1.1893178 -2.6760182 -1.0801142 128.0 +1.1672641 -2.6704323 -1.0747461 128.0 +1.1519632 -2.6801176 -1.0758197 128.0 +1.1322244 -2.6793947 -1.0725988 128.0 +1.1236452 -2.7052619 -1.0804721 128.0 +1.1102018 -2.7198858 -1.083693 128.0 +1.0927967 -2.7249136 -1.0829773 128.0 +1.0750293 -2.7289612 -1.0819037 128.0 +1.0586014 -2.736377 -1.0822616 128.0 +1.0407964 -2.7402022 -1.081188 128.0 +1.0229843 -2.7439122 -1.0801142 128.0 +1.0009936 -2.7361073 -1.0743883 128.0 +0.98765743 -2.7518649 -1.0783249 128.0 +0.96424043 -2.7393775 -1.0708094 128.0 +0.94253784 -2.7311203 -1.0650834 128.0 +0.92935413 -2.7474661 -1.0693779 128.0 +0.91512358 -2.7610936 -1.0725988 128.0 +0.90191442 -2.7782021 -1.0772512 128.0 +0.88824666 -2.7943618 -1.0815458 128.0 +0.86914134 -2.7935185 -1.0790406 128.0 +0.85960174 -2.8238101 -1.0890613 128.0 +0.84199244 -2.8281364 -1.0887034 128.0 +0.82566774 -2.8368356 -1.0901349 128.0 +0.81003463 -2.8481352 -1.09264 128.0 +0.79979497 -2.8791423 -1.1030185 128.0 +0.77600074 -2.8614659 -1.0940715 128.0 +0.75866747 -2.8670762 -1.0944295 128.0 +0.73896015 -2.8635402 -1.0912086 128.0 +0.71795744 -2.8544376 -1.0858403 128.0 +0.69976246 -2.8560684 -1.0847667 128.0 +0.68092418 -2.8548586 -1.0826194 128.0 +0.66212714 -2.8535256 -1.0804721 128.0 +0.64604497 -2.8639107 -1.0829773 128.0 +0.6340605 -2.8933594 -1.0929979 128.0 +0.61124057 -2.8734496 -1.083693 128.0 +0.59624118 -2.8899486 -1.0887034 128.0 +0.57831436 -2.892637 -1.0883455 128.0 +0.55966675 -2.8915474 -1.0865561 128.0 +0.54999512 -2.9380639 -1.1033764 128.0 +0.5397734 -2.9845686 -1.1201967 128.0 +0.51679105 -2.961149 -1.1098182 128.0 +0.50000721 -2.9725516 -1.1130391 128.0 +0.48101172 -2.9709549 -1.1112498 128.0 +0.46205473 -2.9692371 -1.1094604 128.0 +0.44451731 -2.9766338 -1.1112498 128.0 +0.42240593 -2.9524996 -1.1008712 128.0 +0.40833607 -2.9846401 -1.1123234 128.0 +0.38638443 -2.9593127 -1.1015871 128.0 +0.36718115 -2.9532881 -1.0983661 128.0 +0.34444806 -2.9165385 -1.0833352 128.0 +0.32571438 -2.9111736 -1.0804721 128.0 +0.30863172 -2.9205458 -1.0833352 128.0 +0.29070577 -2.9223847 -1.0833352 128.0 +0.27190033 -2.9148161 -1.0797564 128.0 +0.25514632 -2.9294529 -1.0847667 128.0 +0.23927906 -2.9570234 -1.0947874 128.0 +0.22127007 -2.9602983 -1.0955031 128.0 +0.2066866 -3.0137682 -1.1155443 128.0 +0.18696636 -2.9954088 -1.1080289 128.0 +0.16868851 -2.9983642 -1.1087446 128.0 +0.15047514 -3.0030732 -1.1101761 128.0 +0.132416 -3.0123355 -1.113397 128.0 +0.11382393 -3.0102921 -1.1123234 128.0 +0.095440023 -3.0137339 -1.113397 128.0 +0.077257715 -3.0263977 -1.1180495 128.0 +0.058868896 -3.0361507 -1.1216283 128.0 +0.040350799 -3.0448577 -1.1248492 128.0 +0.021694215 -3.0487831 -1.1262807 128.0 +0.0029774758 -3.0404549 -1.1230597 128.0 +-0.015711294 -3.0469522 -1.1255649 128.0 +-0.034354646 -3.04213 -1.1237755 128.0 +-0.052890968 -3.0343928 -1.1209124 128.0 +-0.071464904 -3.0321441 -1.1201967 128.0 +-0.089433536 -3.0101812 -1.1119655 128.0 +-0.10733535 -2.9937119 -1.1058816 128.0 +-0.12476505 -2.9706061 -1.0972924 128.0 +-0.14540812 -3.0201502 -1.1166179 128.0 +-0.16383567 -3.0173364 -1.1159022 128.0 +-0.18701306 -3.0936363 -1.1456062 128.0 +-0.20487681 -3.0756598 -1.1391643 128.0 +-0.22516562 -3.0939023 -1.1466798 128.0 +-0.24165067 -3.0608125 -1.1345119 128.0 +-0.26216665 -3.0797412 -1.1423852 128.0 +-0.28156739 -3.0836542 -1.1445326 128.0 +-0.30274531 -3.1051028 -1.1534795 128.0 +-0.32054168 -3.0911124 -1.1488271 128.0 +-0.34092879 -3.102082 -1.1538373 128.0 +-0.36017156 -3.1017869 -1.1545532 128.0 +-0.37942353 -3.1013722 -1.1552689 128.0 +-0.39832708 -3.0980597 -1.154911 128.0 +-0.47964773 -3.5582633 -1.3338505 128.0 +-0.62722427 -4.4475212 -1.6792039 128.0 +-0.52640462 -3.5733571 -1.3420818 128.0 +-0.68288815 -4.4468732 -1.6820669 128.0 +-0.71060276 -4.4453654 -1.6831405 128.0 +-0.73985416 -4.4528966 -1.6877929 128.0 +-0.76541793 -4.4381509 -1.6838562 128.0 +-0.79214275 -4.4306135 -1.6827826 128.0 +-0.81914365 -4.4247513 -1.6824248 128.0 +-0.8457514 -4.4168906 -1.6813512 128.0 +-0.87338048 -4.4143658 -1.6824248 128.0 +-0.89970303 -4.4052644 -1.6809932 128.0 +-0.92498487 -4.3914375 -1.6777723 128.0 +-0.95151687 -4.3838539 -1.6770566 128.0 +-0.9765656 -4.3697314 -1.6738356 128.0 +-1.0033593 -4.363657 -1.6738356 128.0 +-1.0223846 -4.3247037 -1.660952 128.0 +-1.0475793 -4.3129044 -1.6588048 128.0 +-1.0679244 -4.2819328 -1.649142 128.0 +-1.0784402 -4.2137842 -1.6248063 128.0 +-1.1016684 -4.1971526 -1.6208695 128.0 +-1.1518952 -4.2813883 -1.6570153 128.0 +-1.1875694 -4.3084478 -1.6706147 128.0 +-1.2132225 -4.2983842 -1.6695411 128.0 +-1.2419057 -4.298933 -1.672762 128.0 +-1.2690538 -4.2939181 -1.6738356 128.0 +-1.295917 -4.2878385 -1.6745514 128.0 +-1.3233045 -4.2833748 -1.675983 128.0 +-1.3456277 -4.2627077 -1.6709726 128.0 +-1.3783467 -4.2748117 -1.6792039 128.0 +-1.406302 -4.271596 -1.6813512 128.0 +-1.4289173 -4.2522645 -1.6770566 128.0 +-1.4580096 -4.2522502 -1.6806353 128.0 +-1.4837652 -4.2423425 -1.6802775 128.0 +-1.5119631 -4.239315 -1.6827826 128.0 +-1.5360327 -4.2246923 -1.6806353 128.0 +-1.5583578 -4.2055564 -1.6766987 128.0 +-1.5831442 -4.1932945 -1.6756251 128.0 +-1.6121948 -4.1922174 -1.6792039 128.0 +-1.6195042 -4.135293 -1.6598784 128.0 +-1.1735775 -2.9430194 -1.1720892 128.0 +-1.1919646 -2.9366283 -1.1724471 128.0 +-1.2110301 -2.9318485 -1.1735207 128.0 +-1.7306283 -4.1184077 -1.669899 128.0 +-1.7621038 -4.1223083 -1.675983 128.0 +-1.7925755 -4.1234078 -1.6809932 128.0 +-1.8087837 -4.0918331 -1.6724042 128.0 +-1.8323258 -4.077251 -1.6709726 128.0 +-1.5725875 -3.4424832 -1.4082894 128.0 +-1.584246 -3.4124415 -1.3997003 128.0 +-1.5876294 -3.3654959 -1.3839536 128.0 +-1.5933213 -3.3245332 -1.370712 128.0 +-1.6112386 -3.3096566 -1.3685648 128.0 +-1.6344123 -3.3055675 -1.3710699 128.0 +-1.6588532 -3.303822 -1.3746488 128.0 +-1.683758 -3.3027327 -1.3785855 128.0 +-1.7095699 -3.3031204 -1.3832378 128.0 +-1.7350157 -3.3024888 -1.3875324 128.0 +-1.7675459 -3.3148527 -1.397553 128.0 +-2.1161945 -3.9108768 -1.6620257 128.0 +-2.1280193 -3.8757176 -1.6523629 128.0 +-2.15903 -3.8756399 -1.658089 128.0 +-2.183229 -3.8631322 -1.6584469 128.0 +-2.2110705 -3.8569548 -1.6616678 128.0 +-2.2281249 -3.8320136 -1.6566575 128.0 +-2.258235 -3.8295312 -1.6616678 128.0 +-2.2802525 -3.8131983 -1.6605941 128.0 +-2.304091 -3.7999337 -1.660952 128.0 +-2.3263857 -3.7841337 -1.6602362 128.0 +-2.3505485 -3.7713728 -1.660952 128.0 +-2.3701541 -3.751353 -1.6584469 128.0 +-2.3941345 -3.7383122 -1.6591626 128.0 +-2.4160106 -3.7219851 -1.6584469 128.0 +-2.4346976 -3.7008495 -1.6555839 128.0 +-2.4558063 -3.6835101 -1.6545101 128.0 +-2.4799294 -3.6706934 -1.6555839 128.0 +-2.5034606 -3.6569488 -1.6562996 128.0 +-2.5125489 -3.6223364 -1.6473526 128.0 +-2.5331175 -3.6045594 -1.646279 128.0 +-2.5519381 -3.5843842 -1.6441317 128.0 +-2.5804372 -3.5777471 -1.6484263 128.0 +-2.6050951 -3.5656166 -1.6502156 128.0 +-2.638588 -3.5653279 -1.6577311 128.0 +-2.6559348 -3.5430932 -1.6548681 128.0 +-2.6764956 -3.5252423 -1.6541523 128.0 +-2.6940918 -3.5035715 -1.6516472 128.0 +-2.7126701 -3.4832909 -1.6498578 128.0 +-2.7241633 -3.4541159 -1.6437738 128.0 +-2.3485131 -2.9404261 -1.4000582 128.0 +-2.3512456 -2.9070823 -1.3907533 128.0 +-2.3737714 -2.8983803 -1.3936163 128.0 +-2.805727 -3.3833458 -1.6423423 128.0 +-2.8342392 -3.3753636 -1.6469947 128.0 +-2.8609443 -3.3650241 -1.6505735 128.0 +-2.8858018 -3.3523605 -1.6530787 128.0 +-2.894048 -3.3205106 -1.6459211 128.0 +-2.9217811 -3.3110931 -1.6502156 128.0 +-2.9395542 -3.2903175 -1.6487842 128.0 +-2.9584353 -3.2708337 -1.6480684 128.0 +-2.9784491 -3.2526195 -1.6480684 128.0 +-2.995177 -3.2308586 -1.646279 128.0 +-3.0206952 -3.2185481 -1.6494999 128.0 +-3.0558219 -3.2162008 -1.658089 128.0 +-3.0774403 -3.199409 -1.6591626 128.0 +-3.094408 -3.1777899 -1.6577311 128.0 +-3.1053274 -3.1500976 -1.6530787 128.0 +-3.1391075 -3.1455264 -1.660952 128.0 +-3.1643212 -3.1321187 -1.6641729 128.0 +-3.1841474 -3.1132965 -1.6645308 128.0 +-3.1877437 -3.078779 -1.6562996 128.0 +-3.2133303 -3.0656078 -1.6598784 128.0 +-3.233439 -3.0471144 -1.6605941 128.0 +-3.2643764 -3.0386701 -1.6670359 128.0 +-3.2829599 -3.0185831 -1.6670359 128.0 +-3.3104053 -3.0065444 -1.6716884 128.0 +-3.3253155 -2.9830575 -1.669899 128.0 +-3.3512437 -2.9694102 -1.6738356 128.0 +-3.3694007 -2.9487915 -1.6738356 128.0 +-3.3831925 -2.9243975 -1.6716884 128.0 +-3.4081736 -2.909647 -1.6752672 128.0 +-3.4273903 -2.889884 -1.675983 128.0 +-3.4515154 -2.8741779 -1.6792039 128.0 +-3.4755764 -2.8582842 -1.6824248 128.0 +-3.4988472 -2.8416147 -1.6852878 128.0 +-3.53297 -2.8335314 -1.693519 128.0 +-3.558341 -2.8181779 -1.6974556 128.0 +-3.5821855 -2.8014691 -1.7006766 128.0 +-3.6044807 -2.7834318 -1.7031817 128.0 +-3.6274316 -2.7657926 -1.7060448 128.0 +-3.6383662 -2.7389896 -1.7031817 128.0 +-3.6566026 -2.7177277 -1.7038975 128.0 +-3.6799846 -2.7002122 -1.7071184 128.0 +-3.703289 -2.682512 -1.7103393 128.0 +-3.7265146 -2.6646273 -1.7135602 128.0 +-3.7435572 -2.6422503 -1.7139181 128.0 +-3.7482073 -2.611223 -1.70855 128.0 +-3.7672365 -2.5902917 -1.7099814 128.0 +-3.7961938 -2.5760422 -1.7160654 128.0 +-3.8158078 -2.555299 -1.7178547 128.0 +-3.8337519 -2.5333822 -1.7189285 128.0 +-3.8492243 -2.5098109 -1.7189285 128.0 +-3.8779011 -2.4947348 -1.7250124 128.0 +-3.9010189 -2.475898 -1.7285912 128.0 +-3.9303825 -2.4608359 -1.735033 128.0 +-3.9636796 -2.4479599 -1.7432642 128.0 +-3.9818151 -2.4255366 -1.7446958 128.0 +-4.0006247 -2.4034636 -1.7464851 128.0 +-4.0257401 -2.3850594 -1.7511375 128.0 +-4.052392 -2.3673792 -1.7565057 128.0 +-4.0700784 -2.3443341 -1.7579372 128.0 +-4.0933175 -2.3243892 -1.761874 128.0 +-4.1262422 -2.3097212 -1.7701051 128.0 +-4.1411543 -2.2848108 -1.770463 128.0 +-4.1583767 -2.2611425 -1.7718946 128.0 +-4.1721725 -2.2355847 -1.7718946 128.0 +-4.1924171 -2.2134309 -1.7747576 128.0 +-4.2075763 -2.1885269 -1.7754734 128.0 +-4.1935024 -2.1486149 -1.7636633 128.0 +-4.1649275 -2.1018057 -1.7457694 128.0 +-4.1835985 -2.0791199 -1.7482746 128.0 +-4.2155671 -2.0628521 -1.7565057 128.0 +-4.2424455 -2.043838 -1.7625897 128.0 +-4.2751546 -2.0273726 -1.7711787 128.0 +-4.3078208 -2.0105824 -1.7797679 128.0 +-4.3531685 -1.9993142 -1.7937251 128.0 +-4.4036441 -1.9898721 -1.8098297 128.0 +-4.4533134 -1.9795059 -1.8255764 128.0 +-4.508153 -1.970849 -1.8434703 128.0 +-4.566484 -1.9630684 -1.8627958 128.0 +-4.6369286 -1.9597355 -1.8871316 128.0 +-4.6962919 -1.9509534 -1.9068149 128.0 +-4.7712808 -1.9478697 -1.9329401 128.0 +-4.8186746 -1.9328122 -1.9476131 128.0 +-4.8591118 -1.914507 -1.9594232 128.0 +-4.8855715 -1.8903855 -1.9655071 128.0 +-4.9092989 -1.8650161 -1.9705174 128.0 +-4.9250245 -1.8364897 -1.9723068 128.0 +-4.9388309 -1.8071985 -1.9733804 128.0 +-4.9498267 -1.7768605 -1.9733804 128.0 +-4.964159 -1.747696 -1.974812 128.0 +-4.9686108 -1.7150704 -1.9723068 128.0 +-4.976387 -1.6836534 -1.9712331 128.0 +-4.9821925 -1.6516176 -1.9694438 128.0 +-5.0020022 -1.6241893 -1.9733804 128.0 +-5.0074244 -1.5920521 -1.9715911 128.0 +-5.0144243 -1.5604645 -1.9705174 128.0 +-5.017652 -1.5277629 -1.9680122 128.0 +-5.0269318 -1.4969463 -1.9680122 128.0 +-5.0198846 -1.4613743 -1.9615705 128.0 +-5.0521078 -1.4371899 -1.9708753 128.0 +-5.0374398 -1.3996625 -1.9615705 128.0 +-5.0360203 -1.3660372 -1.9576337 128.0 +-5.0542364 -1.3377399 -1.9615705 128.0 +-5.0677743 -1.3081032 -1.9637177 128.0 +-5.0838552 -1.2790344 -1.9669386 128.0 +-5.0888867 -1.2471493 -1.965865 128.0 +-5.1064339 -1.2182854 -1.9698017 128.0 +-5.1165419 -1.1875637 -1.9708753 128.0 +-5.1246433 -1.1563524 -1.9712331 128.0 +-5.1243453 -1.1232862 -1.9683702 128.0 +-5.1357079 -1.0927948 -1.9701595 128.0 +-5.1368294 -1.0601293 -1.9680122 128.0 +-5.1459842 -1.02914 -1.9690859 128.0 +-0 -0 -0 128.0 +-5.1224318 -0.95920771 -1.9551287 128.0 +-5.155786 -0.93274808 -1.965865 128.0 +-5.1641717 -0.90157723 -1.9669386 128.0 +-5.19631 -0.87436891 -1.9773171 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 +-0 -0 -0 128.0 diff --git a/perception/ground_segmentation/test/test_ransac_ground_filter.cpp b/perception/ground_segmentation/test/test_ransac_ground_filter.cpp new file mode 100644 index 0000000000000..fb66ba9e05b6d --- /dev/null +++ b/perception/ground_segmentation/test/test_ransac_ground_filter.cpp @@ -0,0 +1,228 @@ +// Copyright 2024 TIER IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "../src/ransac_ground_filter/node.hpp" +#include "ament_index_cpp/get_package_share_directory.hpp" +#include "tf2_ros/transform_broadcaster.h" + +#include + +#include "geometry_msgs/msg/transform_stamped.hpp" +#include +#include + +#include + +#ifdef ROS_DISTRO_GALACTIC +#include +#include +#else +#include +#include +#endif +#include + +void setPointCloud2Fields(sensor_msgs::msg::PointCloud2 & pointcloud) +{ + pointcloud.fields.resize(4); + pointcloud.fields[0].name = "x"; + pointcloud.fields[1].name = "y"; + pointcloud.fields[2].name = "z"; + pointcloud.fields[3].name = "intensity"; + pointcloud.fields[0].offset = 0; + pointcloud.fields[1].offset = 4; + pointcloud.fields[2].offset = 8; + pointcloud.fields[3].offset = 12; + pointcloud.fields[0].datatype = sensor_msgs::msg::PointField::FLOAT32; + pointcloud.fields[1].datatype = sensor_msgs::msg::PointField::FLOAT32; + pointcloud.fields[2].datatype = sensor_msgs::msg::PointField::FLOAT32; + pointcloud.fields[3].datatype = sensor_msgs::msg::PointField::FLOAT32; + pointcloud.fields[0].count = 1; + pointcloud.fields[1].count = 1; + pointcloud.fields[2].count = 1; + pointcloud.fields[3].count = 1; + pointcloud.height = 1; + pointcloud.point_step = 16; + pointcloud.is_bigendian = false; + pointcloud.is_dense = true; + pointcloud.header.frame_id = "base_link"; + pointcloud.header.stamp.sec = 0; + pointcloud.header.stamp.nanosec = 0; +} + +class RansacGroundFilterTestSuite : public ::testing::Test +{ +protected: + void SetUp() { rclcpp::init(0, nullptr); } + void TearDown() { (void)rclcpp::shutdown(); } +}; + +class RansacGroundFilterTest : public autoware::ground_segmentation::RANSACGroundFilterComponent +{ +public: + explicit RansacGroundFilterTest(const rclcpp::NodeOptions & options) + : RANSACGroundFilterComponent(options) + { + input_pointcloud_pub_ = this->create_publisher( + "/test_ransac_ground_filter/input_cloud", 1); + + output_pointcloud_pub_ = this->create_publisher( + "/test_ransac_ground_filter/output_cloud", 1); + } + + ~RansacGroundFilterTest() {} + + void filter(const PointCloud2ConstPtr & input, const IndicesPtr & indices, PointCloud2 & output) + { + return RANSACGroundFilterComponent::filter(input, indices, output); + } + + rclcpp::Publisher::SharedPtr input_pointcloud_pub_; + rclcpp::Publisher::SharedPtr output_pointcloud_pub_; +}; + +void convertPCL2PointCloud2( + const pcl::PointCloud & pcl_cloud, sensor_msgs::msg::PointCloud2 & cloud) +{ + cloud.height = 1; + cloud.width = pcl_cloud.size(); + cloud.is_dense = true; + cloud.is_bigendian = false; + cloud.point_step = 16; + cloud.row_step = cloud.point_step * cloud.width; + cloud.fields.resize(4); + cloud.fields[0].name = "x"; + cloud.fields[0].offset = 0; + cloud.fields[0].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[0].count = 1; + cloud.fields[1].name = "y"; + cloud.fields[1].offset = 4; + cloud.fields[1].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[1].count = 1; + cloud.fields[2].name = "z"; + cloud.fields[2].offset = 8; + cloud.fields[2].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[2].count = 1; + cloud.fields[3].name = "intensity"; + cloud.fields[3].offset = 12; + cloud.fields[3].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[3].count = 1; + cloud.data.resize(cloud.row_step * cloud.height); + for (size_t i = 0; i < pcl_cloud.size(); ++i) { + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[0].offset], &pcl_cloud[i].x, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[1].offset], &pcl_cloud[i].y, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[2].offset], &pcl_cloud[i].z, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[3].offset], &pcl_cloud[i].intensity, + sizeof(float)); + } +} + +TEST_F(RansacGroundFilterTestSuite, TestCase1) +{ + const auto share_dir = ament_index_cpp::get_package_share_directory("ground_segmentation"); + const auto config_path = share_dir + "/config/ransac_ground_filter.param.yaml"; + YAML::Node config = YAML::LoadFile(config_path); + auto params = config["/**"]["ros__parameters"]; + + std::string base_frame = params["base_frame"].as(); + std::string unit_axis = params["unit_axis"].as(); + int max_iterations = params["max_iterations"].as(); + int min_trial = params["min_trial"].as(); + int min_points = params["min_points"].as(); + double outlier_threshold = params["outlier_threshold"].as(); + double plane_slope_threshold = params["plane_slope_threshold"].as(); + double voxel_size_x = params["voxel_size_x"].as(); + double voxel_size_y = params["voxel_size_y"].as(); + double voxel_size_z = params["voxel_size_z"].as(); + double height_threshold = params["height_threshold"].as(); + bool debug = params["debug"].as(); + + const auto pcd_path = share_dir + "/data/test.pcd"; + pcl::PointCloud cloud; + pcl::io::loadPCDFile(pcd_path, cloud); + + sensor_msgs::msg::PointCloud2::SharedPtr origin_input_msg_ptr(new sensor_msgs::msg::PointCloud2); + convertPCL2PointCloud2(cloud, *origin_input_msg_ptr); + origin_input_msg_ptr->header.frame_id = "velodyne_top"; + + // input cloud frame MUST be base_link + sensor_msgs::msg::PointCloud2::SharedPtr input_msg_ptr(new sensor_msgs::msg::PointCloud2); + + geometry_msgs::msg::TransformStamped t; + t.header.frame_id = "base_link"; + t.child_frame_id = "velodyne_top"; + t.transform.translation.x = 0.6; + t.transform.translation.y = 0; + t.transform.translation.z = 2; + tf2::Quaternion q; + q.setRPY(0.0, 0.0, 0.0); + t.transform.rotation.x = q.x(); + t.transform.rotation.y = q.y(); + t.transform.rotation.z = q.z(); + t.transform.rotation.w = q.w(); + + tf2::doTransform(*origin_input_msg_ptr, *input_msg_ptr, t); + std::vector parameters; + parameters.emplace_back("base_frame", base_frame); + parameters.emplace_back("unit_axis", unit_axis); + parameters.emplace_back("max_iterations", max_iterations); + parameters.emplace_back("min_trial", min_trial); + parameters.emplace_back("min_points", min_points); + parameters.emplace_back("outlier_threshold", outlier_threshold); + parameters.emplace_back("plane_slope_threshold", plane_slope_threshold); + parameters.emplace_back("voxel_size_x", voxel_size_x); + parameters.emplace_back("voxel_size_y", voxel_size_y); + parameters.emplace_back("voxel_size_z", voxel_size_z); + parameters.emplace_back("height_threshold", height_threshold); + parameters.emplace_back("debug", debug); + + rclcpp::NodeOptions node_options; + node_options.parameter_overrides(parameters); + auto ransac_ground_filter_test = std::make_shared(node_options); + ransac_ground_filter_test->input_pointcloud_pub_->publish(*input_msg_ptr); + + sensor_msgs::msg::PointCloud2 out_cloud; + ransac_ground_filter_test->filter(input_msg_ptr, nullptr, out_cloud); + ransac_ground_filter_test->output_pointcloud_pub_->publish(out_cloud); + std::cout << "out_cloud.width: " << out_cloud.width << std::endl; + std::cout << "out_cloud.height: " << out_cloud.height << std::endl; + std::cout << "out_cloud.row_step: " << out_cloud.row_step << std::endl; + std::cout << "out_cloud.point_step: " << out_cloud.point_step << std::endl; + std::cout << "out_cloud.is_dense: " << out_cloud.is_dense << std::endl; + std::cout << "out_cloud.is_bigendian: " << out_cloud.is_bigendian << std::endl; + std::cout << "out_cloud.data.size(): " << out_cloud.data.size() << std::endl; + + // check out_cloud + int effect_num = 0; + int total_num = 0; + const float min_no_ground_point_z = 0.1; // z in base_frame + for (sensor_msgs::PointCloud2ConstIterator iter_x(out_cloud, "x"), iter_y(out_cloud, "y"), + iter_z(out_cloud, "z"), iter_intensity(out_cloud, "intensity"); + iter_x != iter_x.end(); ++iter_x, ++iter_y, ++iter_z, ++iter_intensity) { + const float z = *iter_z; + total_num += 1; + if (z > min_no_ground_point_z) { + effect_num += 1; + } + } + + const float percent = 1.0 * effect_num / total_num; + std::cout << "effect_num=" << effect_num << ",total_num=" << total_num + << ",percentage:" << percent << std::endl; + EXPECT_GE(percent, 0.8); +} diff --git a/perception/ground_segmentation/test/test_ray_ground_filter.cpp b/perception/ground_segmentation/test/test_ray_ground_filter.cpp index 0c1db47a5ae09..4233b8bb18ebe 100644 --- a/perception/ground_segmentation/test/test_ray_ground_filter.cpp +++ b/perception/ground_segmentation/test/test_ray_ground_filter.cpp @@ -12,11 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "../src/ray_ground_filter/node.hpp" #include "ament_index_cpp/get_package_share_directory.hpp" #include "tf2_ros/transform_broadcaster.h" -#include - #include "geometry_msgs/msg/transform_stamped.hpp" #include @@ -37,7 +36,7 @@ class RayGroundFilterComponentTestSuite : public ::testing::Test void TearDown() { (void)rclcpp::shutdown(); } }; // sanity_check -class RayGroundFilterComponentTest : public ground_segmentation::RayGroundFilterComponent +class RayGroundFilterComponentTest : public autoware::ground_segmentation::RayGroundFilterComponent { public: explicit RayGroundFilterComponentTest(const rclcpp::NodeOptions & options) @@ -61,6 +60,46 @@ class RayGroundFilterComponentTest : public ground_segmentation::RayGroundFilter rclcpp::Publisher::SharedPtr output_pointcloud_pub_; }; +void convertPCL2PointCloud2( + const pcl::PointCloud & pcl_cloud, sensor_msgs::msg::PointCloud2 & cloud) +{ + cloud.height = 1; + cloud.width = pcl_cloud.size(); + cloud.is_dense = true; + cloud.is_bigendian = false; + cloud.point_step = 16; + cloud.row_step = cloud.point_step * cloud.width; + cloud.fields.resize(4); + cloud.fields[0].name = "x"; + cloud.fields[0].offset = 0; + cloud.fields[0].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[0].count = 1; + cloud.fields[1].name = "y"; + cloud.fields[1].offset = 4; + cloud.fields[1].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[1].count = 1; + cloud.fields[2].name = "z"; + cloud.fields[2].offset = 8; + cloud.fields[2].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[2].count = 1; + cloud.fields[3].name = "intensity"; + cloud.fields[3].offset = 12; + cloud.fields[3].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[3].count = 1; + cloud.data.resize(cloud.row_step * cloud.height); + for (size_t i = 0; i < pcl_cloud.size(); ++i) { + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[0].offset], &pcl_cloud[i].x, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[1].offset], &pcl_cloud[i].y, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[2].offset], &pcl_cloud[i].z, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[3].offset], &pcl_cloud[i].intensity, + sizeof(float)); + } +} + TEST_F(RayGroundFilterComponentTestSuite, TestCase1) { const auto share_dir = ament_index_cpp::get_package_share_directory("ground_segmentation"); @@ -83,11 +122,11 @@ TEST_F(RayGroundFilterComponentTestSuite, TestCase1) double reclass_distance_threshold_ = params["reclass_distance_threshold"].as(); const auto pcd_path = share_dir + "/data/test.pcd"; - pcl::PointCloud cloud; - pcl::io::loadPCDFile(pcd_path, cloud); + pcl::PointCloud cloud; + pcl::io::loadPCDFile(pcd_path, cloud); sensor_msgs::msg::PointCloud2::SharedPtr origin_input_msg_ptr(new sensor_msgs::msg::PointCloud2); - pcl::toROSMsg(cloud, *origin_input_msg_ptr); + convertPCL2PointCloud2(cloud, *origin_input_msg_ptr); origin_input_msg_ptr->header.frame_id = "velodyne_top"; // input cloud frame MUST be base_link @@ -141,8 +180,8 @@ TEST_F(RayGroundFilterComponentTestSuite, TestCase1) int total_num = 0; const float min_no_ground_point_z = 0.1; // z in base_frame for (sensor_msgs::PointCloud2ConstIterator iter_x(out_cloud, "x"), iter_y(out_cloud, "y"), - iter_z(out_cloud, "z"); - iter_x != iter_x.end(); ++iter_x, ++iter_y, ++iter_z) { + iter_z(out_cloud, "z"), iter_intensity(out_cloud, "intensity"); + iter_x != iter_x.end(); ++iter_x, ++iter_y, ++iter_z, ++iter_intensity) { const float z = *iter_z; total_num += 1; if (z > min_no_ground_point_z) { diff --git a/perception/ground_segmentation/test/test_scan_ground_filter.cpp b/perception/ground_segmentation/test/test_scan_ground_filter.cpp index e48bd36d8c54e..f5faecd59d6d3 100644 --- a/perception/ground_segmentation/test/test_scan_ground_filter.cpp +++ b/perception/ground_segmentation/test/test_scan_ground_filter.cpp @@ -12,11 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "../src/scan_ground_filter/node.hpp" #include "ament_index_cpp/get_package_share_directory.hpp" #include "tf2_ros/transform_broadcaster.h" -#include - #include #include @@ -31,6 +30,45 @@ #include +void convertPCL2PointCloud2( + const pcl::PointCloud & pcl_cloud, sensor_msgs::msg::PointCloud2 & cloud) +{ + cloud.height = 1; + cloud.width = pcl_cloud.size(); + cloud.is_dense = true; + cloud.is_bigendian = false; + cloud.point_step = 16; + cloud.row_step = cloud.point_step * cloud.width; + cloud.fields.resize(4); + cloud.fields[0].name = "x"; + cloud.fields[0].offset = 0; + cloud.fields[0].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[0].count = 1; + cloud.fields[1].name = "y"; + cloud.fields[1].offset = 4; + cloud.fields[1].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[1].count = 1; + cloud.fields[2].name = "z"; + cloud.fields[2].offset = 8; + cloud.fields[2].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[2].count = 1; + cloud.fields[3].name = "intensity"; + cloud.fields[3].offset = 12; + cloud.fields[3].datatype = sensor_msgs::msg::PointField::FLOAT32; + cloud.fields[3].count = 1; + cloud.data.resize(cloud.row_step * cloud.height); + for (size_t i = 0; i < pcl_cloud.size(); ++i) { + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[0].offset], &pcl_cloud[i].x, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[1].offset], &pcl_cloud[i].y, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[2].offset], &pcl_cloud[i].z, sizeof(float)); + memcpy( + &cloud.data[i * cloud.point_step + cloud.fields[3].offset], &pcl_cloud[i].intensity, + sizeof(float)); + } +} class ScanGroundFilterTest : public ::testing::Test { protected: @@ -87,16 +125,17 @@ class ScanGroundFilterTest : public ::testing::Test options.parameter_overrides(parameters); - scan_ground_filter_ = std::make_shared(options); + scan_ground_filter_ = + std::make_shared(options); // read pcd to pointcloud sensor_msgs::msg::PointCloud2::SharedPtr origin_input_msg_ptr = std::make_shared(); const auto share_dir = ament_index_cpp::get_package_share_directory("ground_segmentation"); const auto pcd_path = share_dir + "/data/test.pcd"; - pcl::PointCloud cloud; - pcl::io::loadPCDFile(pcd_path, cloud); - pcl::toROSMsg(cloud, *origin_input_msg_ptr); + pcl::PointCloud cloud; + pcl::io::loadPCDFile(pcd_path, cloud); + convertPCL2PointCloud2(cloud, *origin_input_msg_ptr); origin_input_msg_ptr->header.frame_id = "velodyne_top"; // input cloud frame MUST be base_link @@ -122,7 +161,7 @@ class ScanGroundFilterTest : public ::testing::Test ~ScanGroundFilterTest() override { rclcpp::shutdown(); } public: - std::shared_ptr scan_ground_filter_; + std::shared_ptr scan_ground_filter_; rclcpp::Node::SharedPtr dummy_node_; rclcpp::Publisher::SharedPtr input_pointcloud_pub_; rclcpp::Publisher::SharedPtr output_pointcloud_pub_; diff --git a/perception/image_projection_based_fusion/CMakeLists.txt b/perception/image_projection_based_fusion/CMakeLists.txt index 0f4cb7112f74a..b6dfbaf402cc8 100644 --- a/perception/image_projection_based_fusion/CMakeLists.txt +++ b/perception/image_projection_based_fusion/CMakeLists.txt @@ -127,6 +127,7 @@ if(TRT_AVAIL AND CUDA_AVAIL AND CUDNN_AVAIL) ament_auto_add_library(pointpainting_lib SHARED src/pointpainting_fusion/node.cpp + src/pointpainting_fusion/pointcloud_densification.cpp src/pointpainting_fusion/pointpainting_trt.cpp src/pointpainting_fusion/voxel_generator.cpp ) diff --git a/perception/image_projection_based_fusion/include/image_projection_based_fusion/fusion_node.hpp b/perception/image_projection_based_fusion/include/image_projection_based_fusion/fusion_node.hpp index 92859a80e48f6..df8bf66433300 100644 --- a/perception/image_projection_based_fusion/include/image_projection_based_fusion/fusion_node.hpp +++ b/perception/image_projection_based_fusion/include/image_projection_based_fusion/fusion_node.hpp @@ -138,8 +138,8 @@ class FusionNode : public rclcpp::Node float filter_scope_max_z_; /** \brief processing time publisher. **/ - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr debug_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr debug_publisher_; }; } // namespace image_projection_based_fusion diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/pointcloud_densification.hpp b/perception/image_projection_based_fusion/include/image_projection_based_fusion/pointpainting_fusion/pointcloud_densification.hpp similarity index 59% rename from perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/pointcloud_densification.hpp rename to perception/image_projection_based_fusion/include/image_projection_based_fusion/pointpainting_fusion/pointcloud_densification.hpp index 70ec420666a3f..03609eb18e689 100644 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/pointcloud_densification.hpp +++ b/perception/image_projection_based_fusion/include/image_projection_based_fusion/pointpainting_fusion/pointcloud_densification.hpp @@ -1,4 +1,4 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. +// Copyright 2024 TIER IV, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,10 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef LIDAR_CENTERPOINT_TVM__PREPROCESS__POINTCLOUD_DENSIFICATION_HPP_ -#define LIDAR_CENTERPOINT_TVM__PREPROCESS__POINTCLOUD_DENSIFICATION_HPP_ - -#include +#ifndef IMAGE_PROJECTION_BASED_FUSION__POINTPAINTING_FUSION__POINTCLOUD_DENSIFICATION_HPP_ +#define IMAGE_PROJECTION_BASED_FUSION__POINTPAINTING_FUSION__POINTCLOUD_DENSIFICATION_HPP_ #include #include @@ -25,43 +23,24 @@ #include #endif +#include + #include #include #include -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm +namespace image_projection_based_fusion { -class LIDAR_CENTERPOINT_TVM_LOCAL DensificationParam -{ -public: - DensificationParam(const std::string & world_frame_id, const uint32_t num_past_frames) - : world_frame_id_(std::move(world_frame_id)), - pointcloud_cache_size_(num_past_frames + /*current frame*/ 1) - { - } - - std::string world_frame_id() const { return world_frame_id_; } - uint32_t pointcloud_cache_size() const { return pointcloud_cache_size_; } - -private: - std::string world_frame_id_; - uint32_t pointcloud_cache_size_{1}; -}; - struct PointCloudWithTransform { sensor_msgs::msg::PointCloud2 pointcloud_msg; Eigen::Affine3f affine_past2world; }; -class LIDAR_CENTERPOINT_TVM_LOCAL PointCloudDensification +class PointCloudDensification { public: - explicit PointCloudDensification(const DensificationParam & param); + explicit PointCloudDensification(const centerpoint::DensificationParam & param); bool enqueuePointCloud( const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer); @@ -76,19 +55,18 @@ class LIDAR_CENTERPOINT_TVM_LOCAL PointCloudDensification { return iter == pointcloud_cache_.end(); } + unsigned int pointcloud_cache_size() const { return param_.pointcloud_cache_size(); } private: void enqueue(const sensor_msgs::msg::PointCloud2 & msg, const Eigen::Affine3f & affine); void dequeue(); - DensificationParam param_; + centerpoint::DensificationParam param_; double current_timestamp_{0.0}; Eigen::Affine3f affine_world2current_; std::list pointcloud_cache_; }; -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware +} // namespace image_projection_based_fusion -#endif // LIDAR_CENTERPOINT_TVM__PREPROCESS__POINTCLOUD_DENSIFICATION_HPP_ +#endif // IMAGE_PROJECTION_BASED_FUSION__POINTPAINTING_FUSION__POINTCLOUD_DENSIFICATION_HPP_ diff --git a/perception/image_projection_based_fusion/include/image_projection_based_fusion/pointpainting_fusion/voxel_generator.hpp b/perception/image_projection_based_fusion/include/image_projection_based_fusion/pointpainting_fusion/voxel_generator.hpp old mode 100755 new mode 100644 index d0f44b9d58706..4cdca8e49ac7e --- a/perception/image_projection_based_fusion/include/image_projection_based_fusion/pointpainting_fusion/voxel_generator.hpp +++ b/perception/image_projection_based_fusion/include/image_projection_based_fusion/pointpainting_fusion/voxel_generator.hpp @@ -15,19 +15,35 @@ #ifndef IMAGE_PROJECTION_BASED_FUSION__POINTPAINTING_FUSION__VOXEL_GENERATOR_HPP_ #define IMAGE_PROJECTION_BASED_FUSION__POINTPAINTING_FUSION__VOXEL_GENERATOR_HPP_ +#include +#include #include #include +#include #include namespace image_projection_based_fusion { -class VoxelGenerator : public centerpoint::VoxelGenerator + +class VoxelGenerator { public: - using centerpoint::VoxelGenerator::VoxelGenerator; + explicit VoxelGenerator( + const centerpoint::DensificationParam & param, const centerpoint::CenterPointConfig & config); + + bool enqueuePointCloud( + const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer); + + std::size_t generateSweepPoints(std::vector & points); + +protected: + std::unique_ptr pd_ptr_{nullptr}; - std::size_t generateSweepPoints(std::vector & points) override; + centerpoint::CenterPointConfig config_; + std::array range_; + std::array grid_size_; + std::array recip_voxel_size_; }; } // namespace image_projection_based_fusion diff --git a/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_detected_object_fusion/node.hpp b/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_detected_object_fusion/node.hpp index 65e03c6bc6316..d61ced593de78 100644 --- a/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_detected_object_fusion/node.hpp +++ b/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_detected_object_fusion/node.hpp @@ -18,6 +18,8 @@ #include "autoware/universe_utils/ros/debug_publisher.hpp" #include "image_projection_based_fusion/fusion_node.hpp" +#include + #include "autoware_perception_msgs/msg/object_classification.hpp" #include @@ -45,7 +47,8 @@ class RoiDetectedObjectFusionNode std::map generateDetectedObjectRoIs( const DetectedObjects & input_object_msg, const double image_width, const double image_height, - const Eigen::Affine3d & object2camera_affine, const Eigen::Matrix4d & camera_projection); + const Eigen::Affine3d & object2camera_affine, + const image_geometry::PinholeCameraModel & pinhole_camera_model); void fuseObjectsOnImage( const DetectedObjects & input_object_msg, diff --git a/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_pointcloud_fusion/node.hpp b/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_pointcloud_fusion/node.hpp index 4cbc0990352e6..4d4fd8d2dac42 100644 --- a/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_pointcloud_fusion/node.hpp +++ b/perception/image_projection_based_fusion/include/image_projection_based_fusion/roi_pointcloud_fusion/node.hpp @@ -17,6 +17,8 @@ #include "image_projection_based_fusion/fusion_node.hpp" +#include + #include #include namespace image_projection_based_fusion diff --git a/perception/image_projection_based_fusion/include/image_projection_based_fusion/segmentation_pointcloud_fusion/node.hpp b/perception/image_projection_based_fusion/include/image_projection_based_fusion/segmentation_pointcloud_fusion/node.hpp index c458c17bed793..26bcfd5ed802a 100644 --- a/perception/image_projection_based_fusion/include/image_projection_based_fusion/segmentation_pointcloud_fusion/node.hpp +++ b/perception/image_projection_based_fusion/include/image_projection_based_fusion/segmentation_pointcloud_fusion/node.hpp @@ -17,6 +17,8 @@ #include "image_projection_based_fusion/fusion_node.hpp" +#include + #include #include diff --git a/perception/image_projection_based_fusion/include/image_projection_based_fusion/utils/utils.hpp b/perception/image_projection_based_fusion/include/image_projection_based_fusion/utils/utils.hpp index ffa1666396a1d..107e0d6c179a8 100644 --- a/perception/image_projection_based_fusion/include/image_projection_based_fusion/utils/utils.hpp +++ b/perception/image_projection_based_fusion/include/image_projection_based_fusion/utils/utils.hpp @@ -42,6 +42,7 @@ #include "autoware_perception_msgs/msg/shape.hpp" #include "tier4_perception_msgs/msg/detected_object_with_feature.hpp" +#include #include #include #include @@ -60,6 +61,10 @@ struct PointData float distance; size_t orig_index; }; + +Eigen::Vector2d calcRawImageProjectedPoint( + const image_geometry::PinholeCameraModel & pinhole_camera_model, const cv::Point3d & point3d); + std::optional getTransformStamped( const tf2_ros::Buffer & tf_buffer, const std::string & target_frame_id, const std::string & source_frame_id, const rclcpp::Time & time); diff --git a/perception/image_projection_based_fusion/package.xml b/perception/image_projection_based_fusion/package.xml index 8d5a2ef1fe519..00ffdc8fd5528 100644 --- a/perception/image_projection_based_fusion/package.xml +++ b/perception/image_projection_based_fusion/package.xml @@ -21,6 +21,7 @@ autoware_universe_utils cv_bridge euclidean_cluster + image_geometry image_transport lidar_centerpoint message_filters diff --git a/perception/image_projection_based_fusion/src/fusion_node.cpp b/perception/image_projection_based_fusion/src/fusion_node.cpp index e561642b76951..20273fd1de547 100644 --- a/perception/image_projection_based_fusion/src/fusion_node.cpp +++ b/perception/image_projection_based_fusion/src/fusion_node.cpp @@ -130,8 +130,8 @@ FusionNode::FusionNode( // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ = std::make_unique(this, get_name()); stop_watch_ptr_->tic("cyclic_time"); diff --git a/perception/image_projection_based_fusion/src/pointpainting_fusion/node.cpp b/perception/image_projection_based_fusion/src/pointpainting_fusion/node.cpp index 7973c22cc1d78..a7c83ac7614a8 100644 --- a/perception/image_projection_based_fusion/src/pointpainting_fusion/node.cpp +++ b/perception/image_projection_based_fusion/src/pointpainting_fusion/node.cpp @@ -307,9 +307,9 @@ void PointPaintingFusionNode::fuseOnSingleImage( const auto class_offset = painted_pointcloud_msg.fields.at(4).offset; const auto p_step = painted_pointcloud_msg.point_step; // projection matrix - Eigen::Matrix3f camera_projection; // use only x,y,z - camera_projection << camera_info.p.at(0), camera_info.p.at(1), camera_info.p.at(2), - camera_info.p.at(4), camera_info.p.at(5), camera_info.p.at(6); + image_geometry::PinholeCameraModel pinhole_camera_model; + pinhole_camera_model.fromCameraInfo(camera_info); + Eigen::Vector3f point_lidar, point_camera; /** dc : don't care @@ -342,15 +342,15 @@ dc | dc dc dc dc ||zc| continue; } // project - Eigen::Vector3f normalized_projected_point = camera_projection * Eigen::Vector3f(p_x, p_y, p_z); + Eigen::Vector2d projected_point = + calcRawImageProjectedPoint(pinhole_camera_model, cv::Point3d(p_x, p_y, p_z)); + // iterate 2d bbox for (const auto & feature_object : objects) { sensor_msgs::msg::RegionOfInterest roi = feature_object.feature.roi; // paint current point if it is inside bbox int label2d = feature_object.object.classification.front().label; - if ( - !isUnknown(label2d) && - isInsideBbox(normalized_projected_point.x(), normalized_projected_point.y(), roi, p_z)) { + if (!isUnknown(label2d) && isInsideBbox(projected_point.x(), projected_point.y(), roi, p_z)) { data = &painted_pointcloud_msg.data[0]; auto p_class = reinterpret_cast(&output[stride + class_offset]); for (const auto & cls : isClassTable_) { @@ -361,7 +361,7 @@ dc | dc dc dc dc ||zc| #if 0 // Parallelizing loop don't support push_back if (debugger_) { - debug_image_points.push_back(normalized_projected_point); + debug_image_points.push_back(projected_point); } #endif } diff --git a/perception/lidar_centerpoint_tvm/lib/preprocess/pointcloud_densification.cpp b/perception/image_projection_based_fusion/src/pointpainting_fusion/pointcloud_densification.cpp similarity index 80% rename from perception/lidar_centerpoint_tvm/lib/preprocess/pointcloud_densification.cpp rename to perception/image_projection_based_fusion/src/pointpainting_fusion/pointcloud_densification.cpp index 5562e963d177b..9edf6a73cd59b 100644 --- a/perception/lidar_centerpoint_tvm/lib/preprocess/pointcloud_densification.cpp +++ b/perception/image_projection_based_fusion/src/pointpainting_fusion/pointcloud_densification.cpp @@ -1,4 +1,4 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. +// Copyright 2024 TIER IV, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "lidar_centerpoint_tvm/preprocess/pointcloud_densification.hpp" +#include "image_projection_based_fusion/pointpainting_fusion/pointcloud_densification.hpp" #include @@ -28,13 +28,8 @@ #include #include -namespace autoware +namespace { -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - boost::optional getTransform( const tf2_ros::Buffer & tf_buffer, const std::string & target_frame_id, const std::string & source_frame_id, const rclcpp::Time & time) @@ -45,7 +40,7 @@ boost::optional getTransform( target_frame_id, source_frame_id, time, rclcpp::Duration::from_seconds(0.5)); return transform_stamped.transform; } catch (tf2::TransformException & ex) { - RCLCPP_WARN_STREAM(rclcpp::get_logger("lidar_centerpoint_tvm"), ex.what()); + RCLCPP_WARN_STREAM(rclcpp::get_logger("lidar_centerpoint"), ex.what()); return boost::none; } } @@ -57,18 +52,12 @@ Eigen::Affine3f transformToEigen(const geometry_msgs::msg::Transform & t) return a; } -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware +} // namespace -namespace autoware -{ -namespace perception +namespace image_projection_based_fusion { -namespace lidar_centerpoint_tvm -{ - -PointCloudDensification::PointCloudDensification(const DensificationParam & param) : param_(param) +PointCloudDensification::PointCloudDensification(const centerpoint::DensificationParam & param) +: param_(param) { } @@ -89,6 +78,7 @@ bool PointCloudDensification::enqueuePointCloud( } else { enqueue(pointcloud_msg, Eigen::Affine3f::Identity()); } + dequeue(); return true; @@ -110,6 +100,4 @@ void PointCloudDensification::dequeue() } } -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware +} // namespace image_projection_based_fusion diff --git a/perception/image_projection_based_fusion/src/pointpainting_fusion/voxel_generator.cpp b/perception/image_projection_based_fusion/src/pointpainting_fusion/voxel_generator.cpp index ea10cb1237436..cb3fc33d3e022 100755 --- a/perception/image_projection_based_fusion/src/pointpainting_fusion/voxel_generator.cpp +++ b/perception/image_projection_based_fusion/src/pointpainting_fusion/voxel_generator.cpp @@ -18,6 +18,32 @@ namespace image_projection_based_fusion { + +VoxelGenerator::VoxelGenerator( + const centerpoint::DensificationParam & param, const centerpoint::CenterPointConfig & config) +: config_(config) +{ + pd_ptr_ = std::make_unique(param); + range_[0] = config.range_min_x_; + range_[1] = config.range_min_y_; + range_[2] = config.range_min_z_; + range_[3] = config.range_max_x_; + range_[4] = config.range_max_y_; + range_[5] = config.range_max_z_; + grid_size_[0] = config.grid_size_x_; + grid_size_[1] = config.grid_size_y_; + grid_size_[2] = config.grid_size_z_; + recip_voxel_size_[0] = 1 / config.voxel_size_x_; + recip_voxel_size_[1] = 1 / config.voxel_size_y_; + recip_voxel_size_[2] = 1 / config.voxel_size_z_; +} + +bool VoxelGenerator::enqueuePointCloud( + const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer) +{ + return pd_ptr_->enqueuePointCloud(input_pointcloud_msg, tf_buffer); +} + size_t VoxelGenerator::generateSweepPoints(std::vector & points) { Eigen::Vector3f point_current, point_past; diff --git a/perception/image_projection_based_fusion/src/roi_cluster_fusion/node.cpp b/perception/image_projection_based_fusion/src/roi_cluster_fusion/node.cpp index bc786dd460d12..51987cbbcab84 100644 --- a/perception/image_projection_based_fusion/src/roi_cluster_fusion/node.cpp +++ b/perception/image_projection_based_fusion/src/roi_cluster_fusion/node.cpp @@ -83,10 +83,8 @@ void RoiClusterFusionNode::fuseOnSingleImage( const DetectedObjectsWithFeature & input_roi_msg, const sensor_msgs::msg::CameraInfo & camera_info, DetectedObjectsWithFeature & output_cluster_msg) { - Eigen::Matrix4d projection; - projection << camera_info.p.at(0), camera_info.p.at(1), camera_info.p.at(2), camera_info.p.at(3), - camera_info.p.at(4), camera_info.p.at(5), camera_info.p.at(6), camera_info.p.at(7), - camera_info.p.at(8), camera_info.p.at(9), camera_info.p.at(10), camera_info.p.at(11); + image_geometry::PinholeCameraModel pinhole_camera_model; + pinhole_camera_model.fromCameraInfo(camera_info); // get transform from cluster frame id to camera optical frame id geometry_msgs::msg::TransformStamped transform_stamped; @@ -133,23 +131,19 @@ void RoiClusterFusionNode::fuseOnSingleImage( continue; } - Eigen::Vector4d projected_point = - projection * Eigen::Vector4d(*iter_x, *iter_y, *iter_z, 1.0); - Eigen::Vector2d normalized_projected_point = Eigen::Vector2d( - projected_point.x() / projected_point.z(), projected_point.y() / projected_point.z()); + Eigen::Vector2d projected_point = + calcRawImageProjectedPoint(pinhole_camera_model, cv::Point3d(*iter_x, *iter_y, *iter_z)); if ( - 0 <= static_cast(normalized_projected_point.x()) && - static_cast(normalized_projected_point.x()) <= - static_cast(camera_info.width) - 1 && - 0 <= static_cast(normalized_projected_point.y()) && - static_cast(normalized_projected_point.y()) <= - static_cast(camera_info.height) - 1) { - min_x = std::min(static_cast(normalized_projected_point.x()), min_x); - min_y = std::min(static_cast(normalized_projected_point.y()), min_y); - max_x = std::max(static_cast(normalized_projected_point.x()), max_x); - max_y = std::max(static_cast(normalized_projected_point.y()), max_y); - projected_points.push_back(normalized_projected_point); - if (debugger_) debugger_->obstacle_points_.push_back(normalized_projected_point); + 0 <= static_cast(projected_point.x()) && + static_cast(projected_point.x()) <= static_cast(camera_info.width) - 1 && + 0 <= static_cast(projected_point.y()) && + static_cast(projected_point.y()) <= static_cast(camera_info.height) - 1) { + min_x = std::min(static_cast(projected_point.x()), min_x); + min_y = std::min(static_cast(projected_point.y()), min_y); + max_x = std::max(static_cast(projected_point.x()), max_x); + max_y = std::max(static_cast(projected_point.y()), max_y); + projected_points.push_back(projected_point); + if (debugger_) debugger_->obstacle_points_.push_back(projected_point); } } if (projected_points.empty()) { diff --git a/perception/image_projection_based_fusion/src/roi_detected_object_fusion/node.cpp b/perception/image_projection_based_fusion/src/roi_detected_object_fusion/node.cpp index 762d3e0ee51b1..7d85ecb2f9200 100644 --- a/perception/image_projection_based_fusion/src/roi_detected_object_fusion/node.cpp +++ b/perception/image_projection_based_fusion/src/roi_detected_object_fusion/node.cpp @@ -86,15 +86,12 @@ void RoiDetectedObjectFusionNode::fuseOnSingleImage( object2camera_affine = transformToEigen(transform_stamped_optional.value().transform); } - Eigen::Matrix4d camera_projection; - camera_projection << camera_info.p.at(0), camera_info.p.at(1), camera_info.p.at(2), - camera_info.p.at(3), camera_info.p.at(4), camera_info.p.at(5), camera_info.p.at(6), - camera_info.p.at(7), camera_info.p.at(8), camera_info.p.at(9), camera_info.p.at(10), - camera_info.p.at(11); + image_geometry::PinholeCameraModel pinhole_camera_model; + pinhole_camera_model.fromCameraInfo(camera_info); const auto object_roi_map = generateDetectedObjectRoIs( input_object_msg, static_cast(camera_info.width), - static_cast(camera_info.height), object2camera_affine, camera_projection); + static_cast(camera_info.height), object2camera_affine, pinhole_camera_model); fuseObjectsOnImage(input_object_msg, input_roi_msg.feature_objects, object_roi_map); if (debugger_) { @@ -109,7 +106,8 @@ void RoiDetectedObjectFusionNode::fuseOnSingleImage( std::map RoiDetectedObjectFusionNode::generateDetectedObjectRoIs( const DetectedObjects & input_object_msg, const double image_width, const double image_height, - const Eigen::Affine3d & object2camera_affine, const Eigen::Matrix4d & camera_projection) + const Eigen::Affine3d & object2camera_affine, + const image_geometry::PinholeCameraModel & pinhole_camera_model) { std::map object_roi_map; int64_t timestamp_nsec = @@ -148,13 +146,8 @@ RoiDetectedObjectFusionNode::generateDetectedObjectRoIs( continue; } - Eigen::Vector2d proj_point; - { - Eigen::Vector4d proj_point_hom = - camera_projection * Eigen::Vector4d(point.x(), point.y(), point.z(), 1.0); - proj_point = Eigen::Vector2d( - proj_point_hom.x() / (proj_point_hom.z()), proj_point_hom.y() / (proj_point_hom.z())); - } + Eigen::Vector2d proj_point = calcRawImageProjectedPoint( + pinhole_camera_model, cv::Point3d(point.x(), point.y(), point.z())); min_x = std::min(proj_point.x(), min_x); min_y = std::min(proj_point.y(), min_y); diff --git a/perception/image_projection_based_fusion/src/roi_pointcloud_fusion/node.cpp b/perception/image_projection_based_fusion/src/roi_pointcloud_fusion/node.cpp index ea5c2005bdd46..7f19402d9e565 100644 --- a/perception/image_projection_based_fusion/src/roi_pointcloud_fusion/node.cpp +++ b/perception/image_projection_based_fusion/src/roi_pointcloud_fusion/node.cpp @@ -101,10 +101,9 @@ void RoiPointCloudFusionNode::fuseOnSingleImage( } // transform pointcloud to camera optical frame id - Eigen::Matrix4d projection; - projection << camera_info.p.at(0), camera_info.p.at(1), camera_info.p.at(2), camera_info.p.at(3), - camera_info.p.at(4), camera_info.p.at(5), camera_info.p.at(6), camera_info.p.at(7), - camera_info.p.at(8), camera_info.p.at(9), camera_info.p.at(10), camera_info.p.at(11); + image_geometry::PinholeCameraModel pinhole_camera_model; + pinhole_camera_model.fromCameraInfo(camera_info); + geometry_msgs::msg::TransformStamped transform_stamped; { const auto transform_stamped_optional = getTransformStamped( @@ -143,10 +142,8 @@ void RoiPointCloudFusionNode::fuseOnSingleImage( if (transformed_z <= 0.0) { continue; } - Eigen::Vector4d projected_point = - projection * Eigen::Vector4d(transformed_x, transformed_y, transformed_z, 1.0); - Eigen::Vector2d normalized_projected_point = Eigen::Vector2d( - projected_point.x() / projected_point.z(), projected_point.y() / projected_point.z()); + Eigen::Vector2d projected_point = calcRawImageProjectedPoint( + pinhole_camera_model, cv::Point3d(transformed_x, transformed_y, transformed_z)); for (std::size_t i = 0; i < output_objs.size(); ++i) { auto & feature_obj = output_objs.at(i); const auto & check_roi = feature_obj.feature.roi; @@ -156,10 +153,9 @@ void RoiPointCloudFusionNode::fuseOnSingleImage( continue; } if ( - check_roi.x_offset <= normalized_projected_point.x() && - check_roi.y_offset <= normalized_projected_point.y() && - check_roi.x_offset + check_roi.width >= normalized_projected_point.x() && - check_roi.y_offset + check_roi.height >= normalized_projected_point.y()) { + check_roi.x_offset <= projected_point.x() && check_roi.y_offset <= projected_point.y() && + check_roi.x_offset + check_roi.width >= projected_point.x() && + check_roi.y_offset + check_roi.height >= projected_point.y()) { std::memcpy( &cluster.data[clusters_data_size.at(i)], &input_pointcloud_msg.data[offset], point_step); clusters_data_size.at(i) += point_step; diff --git a/perception/image_projection_based_fusion/src/segmentation_pointcloud_fusion/node.cpp b/perception/image_projection_based_fusion/src/segmentation_pointcloud_fusion/node.cpp index 0096b91f7a3b6..a3117125a46b1 100644 --- a/perception/image_projection_based_fusion/src/segmentation_pointcloud_fusion/node.cpp +++ b/perception/image_projection_based_fusion/src/segmentation_pointcloud_fusion/node.cpp @@ -65,11 +65,13 @@ void SegmentPointCloudFusionNode::fuseOnSingleImage( if (mask.cols == 0 || mask.rows == 0) { return; } - Eigen::Matrix4d projection; - projection << camera_info.p.at(0), camera_info.p.at(1), camera_info.p.at(2), camera_info.p.at(3), - camera_info.p.at(4), camera_info.p.at(5), camera_info.p.at(6), camera_info.p.at(7), - camera_info.p.at(8), camera_info.p.at(9), camera_info.p.at(10), camera_info.p.at(11), 0.0, 0.0, - 0.0, 1.0; + const int orig_width = camera_info.width; + const int orig_height = camera_info.height; + // resize mask to the same size as the camera image + cv::resize(mask, mask, cv::Size(orig_width, orig_height), 0, 0, cv::INTER_NEAREST); + image_geometry::PinholeCameraModel pinhole_camera_model; + pinhole_camera_model.fromCameraInfo(camera_info); + geometry_msgs::msg::TransformStamped transform_stamped; // transform pointcloud from frame id to camera optical frame id { @@ -113,14 +115,11 @@ void SegmentPointCloudFusionNode::fuseOnSingleImage( continue; } - Eigen::Vector4d projected_point = - projection * Eigen::Vector4d(transformed_x, transformed_y, transformed_z, 1.0); - Eigen::Vector2d normalized_projected_point = Eigen::Vector2d( - projected_point.x() / projected_point.z(), projected_point.y() / projected_point.z()); + Eigen::Vector2d projected_point = calcRawImageProjectedPoint( + pinhole_camera_model, cv::Point3d(transformed_x, transformed_y, transformed_z)); - bool is_inside_image = - normalized_projected_point.x() > 0 && normalized_projected_point.x() < camera_info.width && - normalized_projected_point.y() > 0 && normalized_projected_point.y() < camera_info.height; + bool is_inside_image = projected_point.x() > 0 && projected_point.x() < camera_info.width && + projected_point.y() > 0 && projected_point.y() < camera_info.height; if (!is_inside_image) { copyPointCloud( input_pointcloud_msg, point_step, global_offset, output_cloud, output_pointcloud_size); @@ -129,8 +128,7 @@ void SegmentPointCloudFusionNode::fuseOnSingleImage( // skip filtering pointcloud where semantic id out of the defined list uint8_t semantic_id = mask.at( - static_cast(normalized_projected_point.y()), - static_cast(normalized_projected_point.x())); + static_cast(projected_point.y()), static_cast(projected_point.x())); if (static_cast(semantic_id) >= filter_semantic_label_target_.size()) { copyPointCloud( input_pointcloud_msg, point_step, global_offset, output_cloud, output_pointcloud_size); diff --git a/perception/image_projection_based_fusion/src/utils/utils.cpp b/perception/image_projection_based_fusion/src/utils/utils.cpp index fb99364147509..aeec2886a801a 100644 --- a/perception/image_projection_based_fusion/src/utils/utils.cpp +++ b/perception/image_projection_based_fusion/src/utils/utils.cpp @@ -13,8 +13,18 @@ // limitations under the License. #include "image_projection_based_fusion/utils/utils.hpp" + namespace image_projection_based_fusion { +Eigen::Vector2d calcRawImageProjectedPoint( + const image_geometry::PinholeCameraModel & pinhole_camera_model, const cv::Point3d & point3d) +{ + const cv::Point2d rectified_image_point = pinhole_camera_model.project3dToPixel(point3d); + + const cv::Point2d raw_image_point = pinhole_camera_model.unrectifyPoint(rectified_image_point); + + return Eigen::Vector2d(raw_image_point.x, raw_image_point.y); +} std::optional getTransformStamped( const tf2_ros::Buffer & tf_buffer, const std::string & target_frame_id, @@ -70,7 +80,7 @@ void closest_cluster( std::memcpy(&point.y, &cluster.data[i * point_step + y_offset], sizeof(float)); std::memcpy(&point.z, &cluster.data[i * point_step + z_offset], sizeof(float)); - point_data.distance = autoware_universe_utils::calcDistance2d(center, point); + point_data.distance = autoware::universe_utils::calcDistance2d(center, point); point_data.orig_index = i; points_data.push_back(point_data); } @@ -258,7 +268,7 @@ pcl::PointXYZ getClosestPoint(const pcl::PointCloud & cluster) pcl::PointXYZ orig_point = pcl::PointXYZ(0.0, 0.0, 0.0); for (std::size_t i = 0; i < cluster.points.size(); ++i) { pcl::PointXYZ point = cluster.points.at(i); - double dist_closest_point = autoware_universe_utils::calcDistance2d(point, orig_point); + double dist_closest_point = autoware::universe_utils::calcDistance2d(point, orig_point); if (min_dist > dist_closest_point) { min_dist = dist_closest_point; closest_point = pcl::PointXYZ(point.x, point.y, point.z); diff --git a/perception/lidar_apollo_instance_segmentation/include/lidar_apollo_instance_segmentation/node.hpp b/perception/lidar_apollo_instance_segmentation/include/lidar_apollo_instance_segmentation/node.hpp index 9082e209fb330..f159f125677c4 100644 --- a/perception/lidar_apollo_instance_segmentation/include/lidar_apollo_instance_segmentation/node.hpp +++ b/perception/lidar_apollo_instance_segmentation/include/lidar_apollo_instance_segmentation/node.hpp @@ -47,8 +47,8 @@ class LidarInstanceSegmentationNode : public rclcpp::Node std::shared_ptr detector_ptr_; std::shared_ptr debugger_ptr_; void pointCloudCallback(const sensor_msgs::msg::PointCloud2::ConstSharedPtr msg); - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr debug_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr debug_publisher_; public: explicit LidarInstanceSegmentationNode(const rclcpp::NodeOptions & node_options); diff --git a/perception/lidar_apollo_instance_segmentation/package.xml b/perception/lidar_apollo_instance_segmentation/package.xml index 1157b7575933c..cf6f5a514aa0d 100755 --- a/perception/lidar_apollo_instance_segmentation/package.xml +++ b/perception/lidar_apollo_instance_segmentation/package.xml @@ -4,6 +4,7 @@ lidar_apollo_instance_segmentation 0.1.0 lidar_apollo_instance_segmentation + Yoshi Ri Yukihiro Saito Apache License 2.0 diff --git a/perception/lidar_apollo_instance_segmentation/src/detector.cpp b/perception/lidar_apollo_instance_segmentation/src/detector.cpp index 592c63ed22169..b704bab39338a 100644 --- a/perception/lidar_apollo_instance_segmentation/src/detector.cpp +++ b/perception/lidar_apollo_instance_segmentation/src/detector.cpp @@ -88,7 +88,8 @@ bool LidarApolloInstanceSegmentation::transformCloud( target_frame_, input.header.frame_id, input.header.stamp, std::chrono::milliseconds(500)); Eigen::Matrix4f affine_matrix = tf2::transformToEigen(transform_stamped.transform).matrix().cast(); - autoware_universe_utils::transformPointCloud(pcl_input, pcl_transformed_cloud, affine_matrix); + autoware::universe_utils::transformPointCloud( + pcl_input, pcl_transformed_cloud, affine_matrix); transformed_cloud.header.frame_id = target_frame_; pcl_transformed_cloud.header.frame_id = target_frame_; } catch (tf2::TransformException & ex) { @@ -103,7 +104,7 @@ bool LidarApolloInstanceSegmentation::transformCloud( pcl::PointCloud pointcloud_with_z_offset; Eigen::Affine3f z_up_translation(Eigen::Translation3f(0, 0, z_offset)); Eigen::Matrix4f z_up_transform = z_up_translation.matrix(); - autoware_universe_utils::transformPointCloud( + autoware::universe_utils::transformPointCloud( pcl_transformed_cloud, pcl_transformed_cloud, z_up_transform); pcl::toROSMsg(pcl_transformed_cloud, transformed_cloud); diff --git a/perception/lidar_apollo_instance_segmentation/src/node.cpp b/perception/lidar_apollo_instance_segmentation/src/node.cpp index 6034fe917bf42..93b2f3344de99 100644 --- a/perception/lidar_apollo_instance_segmentation/src/node.cpp +++ b/perception/lidar_apollo_instance_segmentation/src/node.cpp @@ -28,8 +28,8 @@ LidarInstanceSegmentationNode::LidarInstanceSegmentationNode( using std::placeholders::_1; // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ = std::make_unique(this, "lidar_apollo_instance_segmentation"); stop_watch_ptr_->tic("cyclic_time"); diff --git a/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_generator.hpp b/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_generator.hpp index 5cecda966d198..84cf7957d2e7e 100644 --- a/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_generator.hpp +++ b/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_generator.hpp @@ -37,8 +37,6 @@ namespace lidar_apollo_segmentation_tvm class LIDAR_APOLLO_SEGMENTATION_TVM_LOCAL FeatureGenerator { private: - const bool use_intensity_feature_; - const bool use_constant_feature_; const float min_height_; const float max_height_; std::shared_ptr map_ptr_; diff --git a/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_map.hpp b/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_map.hpp index 349dfc7f1f0ad..f78f11c8aed56 100644 --- a/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_map.hpp +++ b/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/feature_map.hpp @@ -15,7 +15,7 @@ #ifndef LIDAR_APOLLO_SEGMENTATION_TVM__FEATURE_MAP_HPP_ #define LIDAR_APOLLO_SEGMENTATION_TVM__FEATURE_MAP_HPP_ -#include +#include #include namespace autoware @@ -45,6 +45,7 @@ struct FeatureMapInterface virtual void initializeMap(std::vector & map) = 0; virtual void resetMap(std::vector & map) = 0; explicit FeatureMapInterface(int32_t _channels, int32_t _width, int32_t _height, int32_t _range); + virtual ~FeatureMapInterface() {} }; /// \brief FeatureMap with no extra feature channels. diff --git a/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/lidar_apollo_segmentation_tvm.hpp b/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/lidar_apollo_segmentation_tvm.hpp index 7f8c5f51f73a6..044f319c4d335 100644 --- a/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/lidar_apollo_segmentation_tvm.hpp +++ b/perception/lidar_apollo_segmentation_tvm/include/lidar_apollo_segmentation_tvm/lidar_apollo_segmentation_tvm.hpp @@ -164,12 +164,7 @@ class LIDAR_APOLLO_SEGMENTATION_TVM_PUBLIC ApolloLidarSegmentation tvm_utility::Version version_check() const; private: - const int32_t range_; - const float score_threshold_; const float z_offset_; - const float objectness_thresh_; - const int32_t min_pts_num_; - const float height_thresh_; const pcl::PointCloud::Ptr pcl_pointcloud_ptr_; // Earliest supported model version. const std::array model_version_from{2, 0, 0}; diff --git a/perception/lidar_apollo_segmentation_tvm/package.xml b/perception/lidar_apollo_segmentation_tvm/package.xml index 643a331e54a5a..ca4f3d2645cb9 100755 --- a/perception/lidar_apollo_segmentation_tvm/package.xml +++ b/perception/lidar_apollo_segmentation_tvm/package.xml @@ -5,7 +5,7 @@ 0.1.0 lidar_apollo_segmentation_tvm Ambroise Vincent - Xinyu Wang + Yoshi Ri Apache 2.0 ament_cmake_auto diff --git a/perception/lidar_apollo_segmentation_tvm/src/feature_generator.cpp b/perception/lidar_apollo_segmentation_tvm/src/feature_generator.cpp index edf8276065163..fd038efc60ffb 100644 --- a/perception/lidar_apollo_segmentation_tvm/src/feature_generator.cpp +++ b/perception/lidar_apollo_segmentation_tvm/src/feature_generator.cpp @@ -35,10 +35,7 @@ inline float normalizeIntensity(float intensity) FeatureGenerator::FeatureGenerator( const int32_t width, const int32_t height, const int32_t range, const bool use_intensity_feature, const bool use_constant_feature, const float min_height, const float max_height) -: use_intensity_feature_(use_intensity_feature), - use_constant_feature_(use_constant_feature), - min_height_(min_height), - max_height_(max_height) +: min_height_(min_height), max_height_(max_height) { // select feature map type if (use_constant_feature && use_intensity_feature) { diff --git a/perception/lidar_apollo_segmentation_tvm/src/lidar_apollo_segmentation_tvm.cpp b/perception/lidar_apollo_segmentation_tvm/src/lidar_apollo_segmentation_tvm.cpp index a516d35edfd6b..9d41770eb5331 100644 --- a/perception/lidar_apollo_segmentation_tvm/src/lidar_apollo_segmentation_tvm.cpp +++ b/perception/lidar_apollo_segmentation_tvm/src/lidar_apollo_segmentation_tvm.cpp @@ -109,12 +109,7 @@ ApolloLidarSegmentation::ApolloLidarSegmentation( int32_t range, float score_threshold, bool use_intensity_feature, bool use_constant_feature, float z_offset, float min_height, float max_height, float objectness_thresh, int32_t min_pts_num, float height_thresh, const std::string & data_path) -: range_(range), - score_threshold_(score_threshold), - z_offset_(z_offset), - objectness_thresh_(objectness_thresh), - min_pts_num_(min_pts_num), - height_thresh_(height_thresh), +: z_offset_(z_offset), pcl_pointcloud_ptr_(new pcl::PointCloud), PreP(std::make_shared( config, range, use_intensity_feature, use_constant_feature, min_height, max_height)), @@ -147,7 +142,7 @@ void ApolloLidarSegmentation::transformCloud( tf_buffer_->lookupTransform(target_frame_, input.header.frame_id, time_point); Eigen::Matrix4f affine_matrix = tf2::transformToEigen(transform_stamped.transform).matrix().cast(); - autoware_universe_utils::transformPointCloud( + autoware::universe_utils::transformPointCloud( in_cluster, transformed_cloud_cluster, affine_matrix); transformed_cloud_cluster.header.frame_id = target_frame_; } else { @@ -158,7 +153,7 @@ void ApolloLidarSegmentation::transformCloud( if (z_offset != 0) { Eigen::Affine3f z_up_translation(Eigen::Translation3f(0, 0, z_offset)); Eigen::Matrix4f z_up_transform = z_up_translation.matrix(); - autoware_universe_utils::transformPointCloud( + autoware::universe_utils::transformPointCloud( transformed_cloud_cluster, transformed_cloud_cluster, z_up_transform); } diff --git a/perception/lidar_apollo_segmentation_tvm/src/log_table.cpp b/perception/lidar_apollo_segmentation_tvm/src/log_table.cpp index a4b967de2e9bc..de2f1734e0733 100644 --- a/perception/lidar_apollo_segmentation_tvm/src/log_table.cpp +++ b/perception/lidar_apollo_segmentation_tvm/src/log_table.cpp @@ -46,7 +46,7 @@ float calcApproximateLog(float num) return log_table.data[integer_num]; } } - return std::log(1.0f + num); + return std::log1p(num); } } // namespace lidar_apollo_segmentation_tvm } // namespace perception diff --git a/perception/lidar_apollo_segmentation_tvm_nodes/package.xml b/perception/lidar_apollo_segmentation_tvm_nodes/package.xml index b6c6cb261eb29..7d3ac6fbe5ac7 100755 --- a/perception/lidar_apollo_segmentation_tvm_nodes/package.xml +++ b/perception/lidar_apollo_segmentation_tvm_nodes/package.xml @@ -5,7 +5,7 @@ 0.1.0 lidar_apollo_segmentation_tvm_nodes Ambroise Vincent - Xinyu Wang + Yoshi Ri Apache 2.0 ament_cmake diff --git a/perception/lidar_centerpoint/CMakeLists.txt b/perception/lidar_centerpoint/CMakeLists.txt index 8a7f4c6107c67..915224a50d53f 100644 --- a/perception/lidar_centerpoint/CMakeLists.txt +++ b/perception/lidar_centerpoint/CMakeLists.txt @@ -159,49 +159,52 @@ if(TRT_AVAIL AND CUDA_AVAIL AND CUDNN_AVAIL) ament_auto_add_gtest(test_nms test/test_nms.cpp ) - ament_auto_add_gtest(test_voxel_generator - test/test_voxel_generator.cpp - ) - - add_executable(test_preprocess_kernel - test/test_preprocess_kernel.cpp - lib/utils.cpp - ) - - target_include_directories(test_preprocess_kernel PUBLIC - ${test_preprocess_kernel_SOURCE_DIR} - ) - - target_link_libraries(test_preprocess_kernel - centerpoint_cuda_lib - gtest - gtest_main - ) - - ament_add_test(test_preprocess_kernel - GENERATE_RESULT_FOR_RETURN_CODE_ZERO - COMMAND "$" - ) - - add_executable(test_postprocess_kernel - test/test_postprocess_kernel.cpp - lib/utils.cpp - ) - - target_include_directories(test_postprocess_kernel PUBLIC - ${test_postprocess_kernel_SOURCE_DIR} - ) - - target_link_libraries(test_postprocess_kernel - centerpoint_cuda_lib - gtest - gtest_main - ) - ament_add_test(test_postprocess_kernel - GENERATE_RESULT_FOR_RETURN_CODE_ZERO - COMMAND "$" - ) + # Temporary disabled, tracked by: + # https://github.com/autowarefoundation/autoware.universe/issues/7724 +# ament_auto_add_gtest(test_voxel_generator +# test/test_voxel_generator.cpp +# ) +# +# add_executable(test_preprocess_kernel +# test/test_preprocess_kernel.cpp +# lib/utils.cpp +# ) +# +# target_include_directories(test_preprocess_kernel PUBLIC +# ${test_preprocess_kernel_SOURCE_DIR} +# ) +# +# target_link_libraries(test_preprocess_kernel +# centerpoint_cuda_lib +# gtest +# gtest_main +# ) +# +# ament_add_test(test_preprocess_kernel +# GENERATE_RESULT_FOR_RETURN_CODE_ZERO +# COMMAND "$" +# ) +# +# add_executable(test_postprocess_kernel +# test/test_postprocess_kernel.cpp +# lib/utils.cpp +# ) +# +# target_include_directories(test_postprocess_kernel PUBLIC +# ${test_postprocess_kernel_SOURCE_DIR} +# ) +# +# target_link_libraries(test_postprocess_kernel +# centerpoint_cuda_lib +# gtest +# gtest_main +# ) +# +# ament_add_test(test_postprocess_kernel +# GENERATE_RESULT_FOR_RETURN_CODE_ZERO +# COMMAND "$" +# ) endif() diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/centerpoint_trt.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/centerpoint_trt.hpp index 8cf250be0c049..55157f70fcfc3 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/centerpoint_trt.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/centerpoint_trt.hpp @@ -15,15 +15,14 @@ #ifndef LIDAR_CENTERPOINT__CENTERPOINT_TRT_HPP_ #define LIDAR_CENTERPOINT__CENTERPOINT_TRT_HPP_ -#include -#include -#include -#include - -#include - -#include -#include +#include "lidar_centerpoint/cuda_utils.hpp" +#include "lidar_centerpoint/network/network_trt.hpp" +#include "lidar_centerpoint/postprocess/postprocess_kernel.hpp" +#include "lidar_centerpoint/preprocess/voxel_generator.hpp" +#include "pcl/point_cloud.h" +#include "pcl/point_types.h" + +#include "sensor_msgs/msg/point_cloud2.hpp" #include #include diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/cuda_utils.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/cuda_utils.hpp index 5ab26d75a0a41..efe3bbb9a5482 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/cuda_utils.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/cuda_utils.hpp @@ -42,7 +42,7 @@ #ifndef LIDAR_CENTERPOINT__CUDA_UTILS_HPP_ #define LIDAR_CENTERPOINT__CUDA_UTILS_HPP_ -#include +#include "cuda_runtime_api.h" #include #include diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/detection_class_remapper.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/detection_class_remapper.hpp index cd1a0e58e115e..d961dd998af76 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/detection_class_remapper.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/detection_class_remapper.hpp @@ -17,10 +17,10 @@ #include -#include -#include -#include -#include +#include "autoware_perception_msgs/msg/detected_object_kinematics.hpp" +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include "autoware_perception_msgs/msg/object_classification.hpp" +#include "autoware_perception_msgs/msg/shape.hpp" #include diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/network/network_trt.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/network/network_trt.hpp index 639aa0ba8bad3..1bf77248efe08 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/network/network_trt.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/network/network_trt.hpp @@ -15,8 +15,8 @@ #ifndef LIDAR_CENTERPOINT__NETWORK__NETWORK_TRT_HPP_ #define LIDAR_CENTERPOINT__NETWORK__NETWORK_TRT_HPP_ -#include -#include +#include "lidar_centerpoint/centerpoint_config.hpp" +#include "lidar_centerpoint/network/tensorrt_wrapper.hpp" #include diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/network/scatter_kernel.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/network/scatter_kernel.hpp index 3dd00c25fd9e7..ad5e222ce01e8 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/network/scatter_kernel.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/network/scatter_kernel.hpp @@ -15,8 +15,8 @@ #ifndef LIDAR_CENTERPOINT__NETWORK__SCATTER_KERNEL_HPP_ #define LIDAR_CENTERPOINT__NETWORK__SCATTER_KERNEL_HPP_ -#include -#include +#include "cuda.h" +#include "cuda_runtime_api.h" namespace centerpoint { diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/network/tensorrt_wrapper.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/network/tensorrt_wrapper.hpp index 7f55ab6f5e414..4af5aac7ff7fe 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/network/tensorrt_wrapper.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/network/tensorrt_wrapper.hpp @@ -15,10 +15,9 @@ #ifndef LIDAR_CENTERPOINT__NETWORK__TENSORRT_WRAPPER_HPP_ #define LIDAR_CENTERPOINT__NETWORK__TENSORRT_WRAPPER_HPP_ -#include -#include - -#include +#include "NvInfer.h" +#include "lidar_centerpoint/centerpoint_config.hpp" +#include "tensorrt_common/tensorrt_common.hpp" #include #include @@ -32,7 +31,7 @@ class TensorRTWrapper public: explicit TensorRTWrapper(const CenterPointConfig & config); - ~TensorRTWrapper(); + virtual ~TensorRTWrapper(); bool init( const std::string & onnx_path, const std::string & engine_path, const std::string & precision); diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/node.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/node.hpp index d96eb1ae3ed94..154ff97cdb887 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/node.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/node.hpp @@ -15,13 +15,13 @@ #ifndef LIDAR_CENTERPOINT__NODE_HPP_ #define LIDAR_CENTERPOINT__NODE_HPP_ +#include "lidar_centerpoint/centerpoint_trt.hpp" +#include "lidar_centerpoint/detection_class_remapper.hpp" #include "lidar_centerpoint/postprocess/non_maximum_suppression.hpp" #include #include #include -#include -#include #include #include @@ -62,11 +62,11 @@ class LidarCenterPointNode : public rclcpp::Node std::unique_ptr detector_ptr_{nullptr}; // debugger - std::unique_ptr> stop_watch_ptr_{ + std::unique_ptr> stop_watch_ptr_{ nullptr}; - std::unique_ptr debug_publisher_ptr_{nullptr}; + std::unique_ptr debug_publisher_ptr_{nullptr}; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace centerpoint diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/circle_nms_kernel.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/circle_nms_kernel.hpp index cd2d71d33806d..5b55636a3eec4 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/circle_nms_kernel.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/circle_nms_kernel.hpp @@ -15,9 +15,8 @@ #ifndef LIDAR_CENTERPOINT__POSTPROCESS__CIRCLE_NMS_KERNEL_HPP_ #define LIDAR_CENTERPOINT__POSTPROCESS__CIRCLE_NMS_KERNEL_HPP_ -#include - -#include +#include "lidar_centerpoint/utils.hpp" +#include "thrust/device_vector.h" namespace centerpoint { diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/postprocess_kernel.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/postprocess_kernel.hpp index d790e896dea9a..e15d3022c947c 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/postprocess_kernel.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/postprocess/postprocess_kernel.hpp @@ -15,12 +15,11 @@ #ifndef LIDAR_CENTERPOINT__POSTPROCESS__POSTPROCESS_KERNEL_HPP_ #define LIDAR_CENTERPOINT__POSTPROCESS__POSTPROCESS_KERNEL_HPP_ -#include -#include - -#include -#include -#include +#include "cuda.h" +#include "cuda_runtime_api.h" +#include "lidar_centerpoint/centerpoint_config.hpp" +#include "lidar_centerpoint/utils.hpp" +#include "thrust/device_vector.h" #include diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/pointcloud_densification.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/pointcloud_densification.hpp index 209fc74e6c58f..c1d6a6b060955 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/pointcloud_densification.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/pointcloud_densification.hpp @@ -15,17 +15,19 @@ #ifndef LIDAR_CENTERPOINT__PREPROCESS__POINTCLOUD_DENSIFICATION_HPP_ #define LIDAR_CENTERPOINT__PREPROCESS__POINTCLOUD_DENSIFICATION_HPP_ -#include -#include -#ifdef ROS_DISTRO_GALACTIC -#include -#else -#include -#endif +#include "tf2_ros/buffer.h" +#include "tf2_ros/transform_listener.h" #include #include #include +#ifdef ROS_DISTRO_GALACTIC +#include "tf2_sensor_msgs/tf2_sensor_msgs.h" +#else +#include "tf2_sensor_msgs/tf2_sensor_msgs.hpp" +#endif + +#include "lidar_centerpoint/cuda_utils.hpp" namespace centerpoint { @@ -48,7 +50,10 @@ class DensificationParam struct PointCloudWithTransform { - sensor_msgs::msg::PointCloud2 pointcloud_msg; + cuda::unique_ptr points_d{nullptr}; + std_msgs::msg::Header header; + size_t num_points{0}; + size_t point_step{0}; Eigen::Affine3f affine_past2world; }; @@ -58,7 +63,8 @@ class PointCloudDensification explicit PointCloudDensification(const DensificationParam & param); bool enqueuePointCloud( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer); + const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer, + cudaStream_t stream); double getCurrentTimestamp() const { return current_timestamp_; } Eigen::Affine3f getAffineWorldToCurrent() const { return affine_world2current_; } @@ -73,7 +79,8 @@ class PointCloudDensification unsigned int pointcloud_cache_size() const { return param_.pointcloud_cache_size(); } private: - void enqueue(const sensor_msgs::msg::PointCloud2 & msg, const Eigen::Affine3f & affine); + void enqueue( + const sensor_msgs::msg::PointCloud2 & msg, const Eigen::Affine3f & affine, cudaStream_t stream); void dequeue(); DensificationParam param_; diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/preprocess_kernel.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/preprocess_kernel.hpp index 9488b67475509..3abcd89cb5c55 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/preprocess_kernel.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/preprocess_kernel.hpp @@ -15,11 +15,15 @@ #ifndef LIDAR_CENTERPOINT__PREPROCESS__PREPROCESS_KERNEL_HPP_ #define LIDAR_CENTERPOINT__PREPROCESS__PREPROCESS_KERNEL_HPP_ -#include -#include +#include "cuda.h" +#include "cuda_runtime_api.h" namespace centerpoint { +cudaError_t generateSweepPoints_launch( + const float * input_points, size_t points_size, int input_point_step, float time_lag, + const float * transform, int num_features, float * output_points, cudaStream_t stream); + cudaError_t generateVoxels_random_launch( const float * points, size_t points_size, float min_x_range, float max_x_range, float min_y_range, float max_y_range, float min_z_range, float max_z_range, float pillar_x_size, float pillar_y_size, diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/voxel_generator.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/voxel_generator.hpp index be15d51e91715..3ade5e677cdbe 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/voxel_generator.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/preprocess/voxel_generator.hpp @@ -15,10 +15,10 @@ #ifndef LIDAR_CENTERPOINT__PREPROCESS__VOXEL_GENERATOR_HPP_ #define LIDAR_CENTERPOINT__PREPROCESS__VOXEL_GENERATOR_HPP_ -#include -#include +#include "lidar_centerpoint/centerpoint_config.hpp" +#include "lidar_centerpoint/preprocess/pointcloud_densification.hpp" -#include +#include "sensor_msgs/msg/point_cloud2.hpp" #include #include @@ -31,10 +31,11 @@ class VoxelGeneratorTemplate explicit VoxelGeneratorTemplate( const DensificationParam & param, const CenterPointConfig & config); - virtual std::size_t generateSweepPoints(std::vector & points) = 0; + virtual std::size_t generateSweepPoints(float * d_points, cudaStream_t stream) = 0; bool enqueuePointCloud( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer); + const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer, + cudaStream_t stream); protected: std::unique_ptr pd_ptr_{nullptr}; @@ -50,7 +51,7 @@ class VoxelGenerator : public VoxelGeneratorTemplate public: using VoxelGeneratorTemplate::VoxelGeneratorTemplate; - std::size_t generateSweepPoints(std::vector & points) override; + std::size_t generateSweepPoints(float * d_points, cudaStream_t stream) override; }; } // namespace centerpoint diff --git a/perception/lidar_centerpoint/include/lidar_centerpoint/ros_utils.hpp b/perception/lidar_centerpoint/include/lidar_centerpoint/ros_utils.hpp index e33d86cd0aba7..484fbcfd36657 100644 --- a/perception/lidar_centerpoint/include/lidar_centerpoint/ros_utils.hpp +++ b/perception/lidar_centerpoint/include/lidar_centerpoint/ros_utils.hpp @@ -17,12 +17,9 @@ // ros packages cannot be included from cuda. -#include +#include "lidar_centerpoint/utils.hpp" -#include -#include -#include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" #include #include diff --git a/perception/lidar_centerpoint/lib/centerpoint_trt.cpp b/perception/lidar_centerpoint/lib/centerpoint_trt.cpp index f7b0fe5e0c58f..6f379167b0e71 100644 --- a/perception/lidar_centerpoint/lib/centerpoint_trt.cpp +++ b/perception/lidar_centerpoint/lib/centerpoint_trt.cpp @@ -14,10 +14,11 @@ #include "lidar_centerpoint/centerpoint_trt.hpp" +#include "lidar_centerpoint/centerpoint_config.hpp" +#include "lidar_centerpoint/network/scatter_kernel.hpp" +#include "lidar_centerpoint/preprocess/preprocess_kernel.hpp" + #include -#include -#include -#include #include #include @@ -130,14 +131,11 @@ bool CenterPointTRT::detect( bool CenterPointTRT::preprocess( const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer) { - bool is_success = vg_ptr_->enqueuePointCloud(input_pointcloud_msg, tf_buffer); + bool is_success = vg_ptr_->enqueuePointCloud(input_pointcloud_msg, tf_buffer, stream_); if (!is_success) { return false; } - const auto count = vg_ptr_->generateSweepPoints(points_); - CHECK_CUDA_ERROR(cudaMemcpyAsync( - points_d_.get(), points_.data(), count * config_.point_feature_size_ * sizeof(float), - cudaMemcpyHostToDevice, stream_)); + const auto count = vg_ptr_->generateSweepPoints(points_d_.get(), stream_); CHECK_CUDA_ERROR(cudaMemsetAsync(num_voxels_d_.get(), 0, sizeof(unsigned int), stream_)); CHECK_CUDA_ERROR( cudaMemsetAsync(voxels_buffer_d_.get(), 0, voxels_buffer_size_ * sizeof(float), stream_)); diff --git a/perception/lidar_centerpoint/lib/detection_class_remapper.cpp b/perception/lidar_centerpoint/lib/detection_class_remapper.cpp index ecfbb4360ecf0..9805fc7a661d1 100644 --- a/perception/lidar_centerpoint/lib/detection_class_remapper.cpp +++ b/perception/lidar_centerpoint/lib/detection_class_remapper.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include +#include "lidar_centerpoint/detection_class_remapper.hpp" namespace centerpoint { diff --git a/perception/lidar_centerpoint/lib/network/scatter_kernel.cu b/perception/lidar_centerpoint/lib/network/scatter_kernel.cu index 09cc83bf606fe..f139e230426ca 100644 --- a/perception/lidar_centerpoint/lib/network/scatter_kernel.cu +++ b/perception/lidar_centerpoint/lib/network/scatter_kernel.cu @@ -13,8 +13,7 @@ // limitations under the License. #include "lidar_centerpoint/network/scatter_kernel.hpp" - -#include +#include "lidar_centerpoint/utils.hpp" namespace { diff --git a/perception/lidar_centerpoint/lib/network/tensorrt_wrapper.cpp b/perception/lidar_centerpoint/lib/network/tensorrt_wrapper.cpp index 91fcce9a80f78..bdfde42a12a02 100644 --- a/perception/lidar_centerpoint/lib/network/tensorrt_wrapper.cpp +++ b/perception/lidar_centerpoint/lib/network/tensorrt_wrapper.cpp @@ -14,7 +14,7 @@ #include "lidar_centerpoint/network/tensorrt_wrapper.hpp" -#include +#include "NvOnnxParser.h" #include #include diff --git a/perception/lidar_centerpoint/lib/postprocess/circle_nms_kernel.cu b/perception/lidar_centerpoint/lib/postprocess/circle_nms_kernel.cu index 398e75a55c44b..c208eefe135fb 100644 --- a/perception/lidar_centerpoint/lib/postprocess/circle_nms_kernel.cu +++ b/perception/lidar_centerpoint/lib/postprocess/circle_nms_kernel.cu @@ -21,12 +21,10 @@ Written by Shaoshuai Shi All Rights Reserved 2019-2020. */ +#include "lidar_centerpoint/cuda_utils.hpp" #include "lidar_centerpoint/postprocess/circle_nms_kernel.hpp" - -#include -#include - -#include +#include "lidar_centerpoint/utils.hpp" +#include "thrust/host_vector.h" namespace { diff --git a/perception/lidar_centerpoint/lib/postprocess/non_maximum_suppression.cpp b/perception/lidar_centerpoint/lib/postprocess/non_maximum_suppression.cpp index 81f620018cf04..16f4fc89bbcd6 100644 --- a/perception/lidar_centerpoint/lib/postprocess/non_maximum_suppression.cpp +++ b/perception/lidar_centerpoint/lib/postprocess/non_maximum_suppression.cpp @@ -14,9 +14,10 @@ #include "lidar_centerpoint/postprocess/non_maximum_suppression.hpp" -#include "autoware/universe_utils/geometry/geometry.hpp" -#include "object_recognition_utils/geometry.hpp" -#include "object_recognition_utils/object_recognition_utils.hpp" +#include +#include +#include + namespace centerpoint { @@ -48,7 +49,7 @@ bool NonMaximumSuppression::isTargetPairObject( } const auto search_sqr_dist_2d = params_.search_distance_2d_ * params_.search_distance_2d_; - const auto sqr_dist_2d = autoware_universe_utils::calcSquaredDistance2d( + const auto sqr_dist_2d = autoware::universe_utils::calcSquaredDistance2d( object_recognition_utils::getPose(object1), object_recognition_utils::getPose(object2)); return sqr_dist_2d <= search_sqr_dist_2d; } diff --git a/perception/lidar_centerpoint/lib/postprocess/postprocess_kernel.cu b/perception/lidar_centerpoint/lib/postprocess/postprocess_kernel.cu index 34bbd2811041c..12835bab038a6 100644 --- a/perception/lidar_centerpoint/lib/postprocess/postprocess_kernel.cu +++ b/perception/lidar_centerpoint/lib/postprocess/postprocess_kernel.cu @@ -13,12 +13,10 @@ // limitations under the License. #include "lidar_centerpoint/postprocess/circle_nms_kernel.hpp" - -#include - -#include -#include -#include +#include "lidar_centerpoint/postprocess/postprocess_kernel.hpp" +#include "thrust/count.h" +#include "thrust/device_vector.h" +#include "thrust/sort.h" namespace { diff --git a/perception/lidar_centerpoint/lib/preprocess/pointcloud_densification.cpp b/perception/lidar_centerpoint/lib/preprocess/pointcloud_densification.cpp index 66c348fda50b4..2859d58d8f669 100644 --- a/perception/lidar_centerpoint/lib/preprocess/pointcloud_densification.cpp +++ b/perception/lidar_centerpoint/lib/preprocess/pointcloud_densification.cpp @@ -14,20 +14,19 @@ #include "lidar_centerpoint/preprocess/pointcloud_densification.hpp" -#include +#include "pcl_conversions/pcl_conversions.h" +#include "pcl_ros/transforms.hpp" -#include +#include "boost/optional.hpp" -#include +#include +#include #ifdef ROS_DISTRO_GALACTIC -#include +#include "tf2_eigen/tf2_eigen.h" #else -#include +#include "tf2_eigen/tf2_eigen.hpp" #endif -#include -#include - namespace { boost::optional getTransform( @@ -61,7 +60,8 @@ PointCloudDensification::PointCloudDensification(const DensificationParam & para } bool PointCloudDensification::enqueuePointCloud( - const sensor_msgs::msg::PointCloud2 & pointcloud_msg, const tf2_ros::Buffer & tf_buffer) + const sensor_msgs::msg::PointCloud2 & pointcloud_msg, const tf2_ros::Buffer & tf_buffer, + cudaStream_t stream) { const auto header = pointcloud_msg.header; @@ -73,9 +73,9 @@ bool PointCloudDensification::enqueuePointCloud( } auto affine_world2current = transformToEigen(transform_world2current.get()); - enqueue(pointcloud_msg, affine_world2current); + enqueue(pointcloud_msg, affine_world2current, stream); } else { - enqueue(pointcloud_msg, Eigen::Affine3f::Identity()); + enqueue(pointcloud_msg, Eigen::Affine3f::Identity(), stream); } dequeue(); @@ -84,12 +84,24 @@ bool PointCloudDensification::enqueuePointCloud( } void PointCloudDensification::enqueue( - const sensor_msgs::msg::PointCloud2 & msg, const Eigen::Affine3f & affine_world2current) + const sensor_msgs::msg::PointCloud2 & msg, const Eigen::Affine3f & affine_world2current, + cudaStream_t stream) { affine_world2current_ = affine_world2current; current_timestamp_ = rclcpp::Time(msg.header.stamp).seconds(); - PointCloudWithTransform pointcloud = {msg, affine_world2current.inverse()}; - pointcloud_cache_.push_front(pointcloud); + + assert(sizeof(uint8_t) * msg.width * msg.height * msg.point_step % sizeof(float) == 0); + auto points_d = cuda::make_unique( + sizeof(uint8_t) * msg.width * msg.height * msg.point_step / sizeof(float)); + CHECK_CUDA_ERROR(cudaMemcpyAsync( + points_d.get(), msg.data.data(), sizeof(uint8_t) * msg.width * msg.height * msg.point_step, + cudaMemcpyHostToDevice, stream)); + + PointCloudWithTransform pointcloud = { + std::move(points_d), msg.header, msg.width * msg.height, msg.point_step, + affine_world2current.inverse()}; + + pointcloud_cache_.push_front(std::move(pointcloud)); } void PointCloudDensification::dequeue() diff --git a/perception/lidar_centerpoint/lib/preprocess/preprocess_kernel.cu b/perception/lidar_centerpoint/lib/preprocess/preprocess_kernel.cu index 218aaee125c02..4e78176739c26 100644 --- a/perception/lidar_centerpoint/lib/preprocess/preprocess_kernel.cu +++ b/perception/lidar_centerpoint/lib/preprocess/preprocess_kernel.cu @@ -28,9 +28,11 @@ * limitations under the License. */ +#include "lidar_centerpoint/cuda_utils.hpp" #include "lidar_centerpoint/preprocess/preprocess_kernel.hpp" +#include "lidar_centerpoint/utils.hpp" -#include +#include namespace { @@ -41,6 +43,51 @@ const std::size_t ENCODER_IN_FEATURE_SIZE = 9; // the same as encoder_in_featur namespace centerpoint { + +__global__ void generateSweepPoints_kernel( + const float * input_points, size_t points_size, int input_point_step, float time_lag, + const float * transform_array, int num_features, float * output_points) +{ + int point_idx = blockIdx.x * blockDim.x + threadIdx.x; + if (point_idx >= points_size) return; + + const float input_x = input_points[point_idx * input_point_step + 0]; + const float input_y = input_points[point_idx * input_point_step + 1]; + const float input_z = input_points[point_idx * input_point_step + 2]; + + // transform_array is expected to be column-major + output_points[point_idx * num_features + 0] = transform_array[0] * input_x + + transform_array[4] * input_y + + transform_array[8] * input_z + transform_array[12]; + output_points[point_idx * num_features + 1] = transform_array[1] * input_x + + transform_array[5] * input_y + + transform_array[9] * input_z + transform_array[13]; + output_points[point_idx * num_features + 2] = transform_array[2] * input_x + + transform_array[6] * input_y + + transform_array[10] * input_z + transform_array[14]; + output_points[point_idx * num_features + 3] = time_lag; +} + +cudaError_t generateSweepPoints_launch( + const float * input_points, size_t points_size, int input_point_step, float time_lag, + const float * transform_array, int num_features, float * output_points, cudaStream_t stream) +{ + auto transform_d = cuda::make_unique(16); + CHECK_CUDA_ERROR(cudaMemcpyAsync( + transform_d.get(), transform_array, 16 * sizeof(float), cudaMemcpyHostToDevice, stream)); + + dim3 blocks((points_size + 256 - 1) / 256); + dim3 threads(256); + assert(num_features == 4); + + generateSweepPoints_kernel<<>>( + input_points, points_size, input_point_step, time_lag, transform_d.get(), num_features, + output_points); + + cudaError_t err = cudaGetLastError(); + return err; +} + __global__ void generateVoxels_random_kernel( const float * points, size_t points_size, float min_x_range, float max_x_range, float min_y_range, float max_y_range, float min_z_range, float max_z_range, float pillar_x_size, float pillar_y_size, diff --git a/perception/lidar_centerpoint/lib/preprocess/voxel_generator.cpp b/perception/lidar_centerpoint/lib/preprocess/voxel_generator.cpp index 07a1a2de725f5..e90474fa07327 100644 --- a/perception/lidar_centerpoint/lib/preprocess/voxel_generator.cpp +++ b/perception/lidar_centerpoint/lib/preprocess/voxel_generator.cpp @@ -14,7 +14,12 @@ #include "lidar_centerpoint/preprocess/voxel_generator.hpp" -#include +#include "lidar_centerpoint/centerpoint_trt.hpp" +#include "lidar_centerpoint/preprocess/preprocess_kernel.hpp" + +#include "sensor_msgs/point_cloud2_iterator.hpp" + +#include namespace centerpoint { @@ -38,35 +43,40 @@ VoxelGeneratorTemplate::VoxelGeneratorTemplate( } bool VoxelGeneratorTemplate::enqueuePointCloud( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer) + const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer, + cudaStream_t stream) { - return pd_ptr_->enqueuePointCloud(input_pointcloud_msg, tf_buffer); + return pd_ptr_->enqueuePointCloud(input_pointcloud_msg, tf_buffer, stream); } -std::size_t VoxelGenerator::generateSweepPoints(std::vector & points) +std::size_t VoxelGenerator::generateSweepPoints(float * points_d, cudaStream_t stream) { - Eigen::Vector3f point_current, point_past; - size_t point_counter{}; + size_t point_counter = 0; for (auto pc_cache_iter = pd_ptr_->getPointCloudCacheIter(); !pd_ptr_->isCacheEnd(pc_cache_iter); pc_cache_iter++) { - auto pc_msg = pc_cache_iter->pointcloud_msg; + auto sweep_num_points = pc_cache_iter->num_points; + auto point_step = pc_cache_iter->point_step; auto affine_past2current = pd_ptr_->getAffineWorldToCurrent() * pc_cache_iter->affine_past2world; float time_lag = static_cast( - pd_ptr_->getCurrentTimestamp() - rclcpp::Time(pc_msg.header.stamp).seconds()); - - for (sensor_msgs::PointCloud2ConstIterator x_iter(pc_msg, "x"), y_iter(pc_msg, "y"), - z_iter(pc_msg, "z"); - x_iter != x_iter.end(); ++x_iter, ++y_iter, ++z_iter) { - point_past << *x_iter, *y_iter, *z_iter; - point_current = affine_past2current * point_past; + pd_ptr_->getCurrentTimestamp() - rclcpp::Time(pc_cache_iter->header.stamp).seconds()); - points.at(point_counter * config_.point_feature_size_) = point_current.x(); - points.at(point_counter * config_.point_feature_size_ + 1) = point_current.y(); - points.at(point_counter * config_.point_feature_size_ + 2) = point_current.z(); - points.at(point_counter * config_.point_feature_size_ + 3) = time_lag; - ++point_counter; + if (point_counter + sweep_num_points > CAPACITY_POINT) { + RCLCPP_WARN_STREAM( + rclcpp::get_logger("lidar_centerpoint"), + "Requested number of points exceeds the maximum capacity. Current points = " + << point_counter); + break; } + + static_assert(std::is_same::value); + static_assert(!Eigen::Matrix4f::IsRowMajor, "matrices should be col-major."); + generateSweepPoints_launch( + pc_cache_iter->points_d.get(), sweep_num_points, point_step / sizeof(float), time_lag, + affine_past2current.matrix().data(), config_.point_feature_size_, + points_d + config_.point_feature_size_ * point_counter, stream); + + point_counter += sweep_num_points; } return point_counter; } diff --git a/perception/lidar_centerpoint/lib/ros_utils.cpp b/perception/lidar_centerpoint/lib/ros_utils.cpp index 4799ec322d779..039d340cc2dc4 100644 --- a/perception/lidar_centerpoint/lib/ros_utils.cpp +++ b/perception/lidar_centerpoint/lib/ros_utils.cpp @@ -50,14 +50,14 @@ void box3DToDetectedObject( // pose and shape // mmdet3d yaw format to ros yaw format - float yaw = -box3d.yaw - autoware_universe_utils::pi / 2; + float yaw = -box3d.yaw - autoware::universe_utils::pi / 2; obj.kinematics.pose_with_covariance.pose.position = - autoware_universe_utils::createPoint(box3d.x, box3d.y, box3d.z); + autoware::universe_utils::createPoint(box3d.x, box3d.y, box3d.z); obj.kinematics.pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw); + autoware::universe_utils::createQuaternionFromYaw(yaw); obj.shape.type = autoware_perception_msgs::msg::Shape::BOUNDING_BOX; obj.shape.dimensions = - autoware_universe_utils::createTranslation(box3d.length, box3d.width, box3d.height); + autoware::universe_utils::createTranslation(box3d.length, box3d.width, box3d.height); if (has_variance) { obj.kinematics.has_position_covariance = has_variance; obj.kinematics.pose_with_covariance.covariance = convertPoseCovarianceMatrix(box3d); @@ -102,7 +102,7 @@ uint8_t getSemanticType(const std::string & class_name) std::array convertPoseCovarianceMatrix(const Box3D & box3d) { - using POSE_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using POSE_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; std::array pose_covariance{}; pose_covariance[POSE_IDX::X_X] = box3d.x_variance; pose_covariance[POSE_IDX::Y_Y] = box3d.y_variance; @@ -113,7 +113,7 @@ std::array convertPoseCovarianceMatrix(const Box3D & box3d) std::array convertTwistCovarianceMatrix(const Box3D & box3d) { - using POSE_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using POSE_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; std::array twist_covariance{}; twist_covariance[POSE_IDX::X_X] = box3d.vel_x_variance; twist_covariance[POSE_IDX::Y_Y] = box3d.vel_y_variance; diff --git a/perception/lidar_centerpoint/package.xml b/perception/lidar_centerpoint/package.xml index 280e2219fb1f1..4c6fa471c297a 100644 --- a/perception/lidar_centerpoint/package.xml +++ b/perception/lidar_centerpoint/package.xml @@ -16,7 +16,6 @@ autoware_universe_utils object_recognition_utils pcl_ros - python3-open3d rclcpp rclcpp_components tensorrt_common diff --git a/perception/lidar_centerpoint/src/node.cpp b/perception/lidar_centerpoint/src/node.cpp index b65c70f02bd1b..8bf62e3e0168b 100644 --- a/perception/lidar_centerpoint/src/node.cpp +++ b/perception/lidar_centerpoint/src/node.cpp @@ -14,17 +14,7 @@ #include "lidar_centerpoint/node.hpp" -#include -#include -#include -#include -#include - -#ifdef ROS_DISTRO_GALACTIC -#include -#else -#include -#endif +#include "pcl_ros/transforms.hpp" #include #include @@ -33,6 +23,17 @@ #include #include +#ifdef ROS_DISTRO_GALACTIC +#include "tf2_geometry_msgs/tf2_geometry_msgs.h" +#else +#include "tf2_geometry_msgs/tf2_geometry_msgs.hpp" +#endif + +#include "lidar_centerpoint/centerpoint_config.hpp" +#include "lidar_centerpoint/preprocess/pointcloud_densification.hpp" +#include "lidar_centerpoint/ros_utils.hpp" +#include "lidar_centerpoint/utils.hpp" + namespace centerpoint { LidarCenterPointNode::LidarCenterPointNode(const rclcpp::NodeOptions & node_options) @@ -117,8 +118,8 @@ LidarCenterPointNode::LidarCenterPointNode(const rclcpp::NodeOptions & node_opti // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ptr_ = std::make_unique(this, "lidar_centerpoint"); stop_watch_ptr_->tic("cyclic_time"); @@ -130,7 +131,7 @@ LidarCenterPointNode::LidarCenterPointNode(const rclcpp::NodeOptions & node_opti rclcpp::shutdown(); } published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void LidarCenterPointNode::pointCloudCallback( diff --git a/perception/lidar_centerpoint/test/test_postprocess_kernel.cpp b/perception/lidar_centerpoint/test/test_postprocess_kernel.cpp index fde4fcbee3d6c..e75aff416b8aa 100644 --- a/perception/lidar_centerpoint/test/test_postprocess_kernel.cpp +++ b/perception/lidar_centerpoint/test/test_postprocess_kernel.cpp @@ -94,12 +94,12 @@ TEST_F(PostprocessKernelTest, SingleDetectionTest) constexpr float detection_x = 70.f; constexpr float detection_y = -38.4f; constexpr float detection_z = 1.0; - constexpr float detection_log_w = std::log(7.0); - constexpr float detection_log_l = std::log(1.0); - constexpr float detection_log_h = std::log(2.0); + const float detection_log_w = std::log(7.0); + const float detection_log_l = std::log(1.0); + const float detection_log_h = std::log(2.0); constexpr float detection_yaw = M_PI_4; - constexpr float detection_yaw_sin = std::sin(detection_yaw); - constexpr float detection_yaw_cos = std::sin(detection_yaw); + const float detection_yaw_sin = std::sin(detection_yaw); + const float detection_yaw_cos = std::sin(detection_yaw); constexpr float detection_vel_x = 5.0; constexpr float detection_vel_y = -5.0; @@ -240,9 +240,9 @@ TEST_F(PostprocessKernelTest, CircleNMSTest) constexpr float detection_x = 70.f; constexpr float detection_y = -38.4f; constexpr float detection_z = 1.0; - constexpr float detection_log_w = std::log(7.0); - constexpr float detection_log_l = std::log(1.0); - constexpr float detection_log_h = std::log(2.0); + const float detection_log_w = std::log(7.0); + const float detection_log_l = std::log(1.0); + const float detection_log_h = std::log(2.0); constexpr float detection_yaw1_sin = 0.0; constexpr float detection_yaw1_cos = 1.0; constexpr float detection_yaw2_sin = 1.0; diff --git a/perception/lidar_centerpoint/test/test_postprocess_kernel.hpp b/perception/lidar_centerpoint/test/test_postprocess_kernel.hpp index d0c9123da9e77..8f35b98119afe 100644 --- a/perception/lidar_centerpoint/test/test_postprocess_kernel.hpp +++ b/perception/lidar_centerpoint/test/test_postprocess_kernel.hpp @@ -31,17 +31,17 @@ class PostprocessKernelTest : public testing::Test void SetUp() override; void TearDown() override; - cudaStream_t stream_{nullptr}; + cudaStream_t stream_{}; - std::unique_ptr postprocess_cuda_ptr_; - std::unique_ptr config_ptr_; + std::unique_ptr postprocess_cuda_ptr_{}; + std::unique_ptr config_ptr_{}; - cuda::unique_ptr head_out_heatmap_d_; - cuda::unique_ptr head_out_offset_d_; - cuda::unique_ptr head_out_z_d_; - cuda::unique_ptr head_out_dim_d_; - cuda::unique_ptr head_out_rot_d_; - cuda::unique_ptr head_out_vel_d_; + cuda::unique_ptr head_out_heatmap_d_{}; + cuda::unique_ptr head_out_offset_d_{}; + cuda::unique_ptr head_out_z_d_{}; + cuda::unique_ptr head_out_dim_d_{}; + cuda::unique_ptr head_out_rot_d_{}; + cuda::unique_ptr head_out_vel_d_{}; }; } // namespace centerpoint diff --git a/perception/lidar_centerpoint/test/test_preprocess_kernel.hpp b/perception/lidar_centerpoint/test/test_preprocess_kernel.hpp index 57ff51966a417..1a3e850026886 100644 --- a/perception/lidar_centerpoint/test/test_preprocess_kernel.hpp +++ b/perception/lidar_centerpoint/test/test_preprocess_kernel.hpp @@ -28,7 +28,7 @@ class PreprocessKernelTest : public testing::Test void SetUp() override; void TearDown() override; - cudaStream_t stream_{nullptr}; + cudaStream_t stream_{}; std::size_t max_voxel_size_{}; std::size_t max_point_in_voxel_size_{}; diff --git a/perception/lidar_centerpoint/test/test_voxel_generator.cpp b/perception/lidar_centerpoint/test/test_voxel_generator.cpp index 5b0b3cd112e6c..6bded105536dc 100644 --- a/perception/lidar_centerpoint/test/test_voxel_generator.cpp +++ b/perception/lidar_centerpoint/test/test_voxel_generator.cpp @@ -14,9 +14,9 @@ #include "test_voxel_generator.hpp" -#include +#include "gtest/gtest.h" -#include +#include "sensor_msgs/point_cloud2_iterator.hpp" void VoxelGeneratorTest::SetUp() { @@ -95,6 +95,8 @@ void VoxelGeneratorTest::SetUp() transform2_ = transform1_; transform2_.header.stamp = cloud2_->header.stamp; transform2_.transform.translation.x = world_origin_x + delta_pointcloud_x_; + + cudaStreamCreate(&stream_); } void VoxelGeneratorTest::TearDown() @@ -117,8 +119,17 @@ TEST_F(VoxelGeneratorTest, SingleFrame) points.resize(capacity_ * config.point_feature_size_); std::fill(points.begin(), points.end(), std::nan("")); - bool status1 = voxel_generator.enqueuePointCloud(*cloud1_, *tf2_buffer_); - std::size_t generated_points_num = voxel_generator.generateSweepPoints(points); + auto points_d = cuda::make_unique(capacity_ * config.point_feature_size_); + cudaMemcpy( + points_d.get(), points.data(), capacity_ * config.point_feature_size_ * sizeof(float), + cudaMemcpyHostToDevice); + + bool status1 = voxel_generator.enqueuePointCloud(*cloud1_, *tf2_buffer_, stream_); + std::size_t generated_points_num = voxel_generator.generateSweepPoints(points_d.get(), stream_); + + cudaMemcpy( + points.data(), points_d.get(), capacity_ * config.point_feature_size_ * sizeof(float), + cudaMemcpyDeviceToHost); EXPECT_TRUE(status1); EXPECT_EQ(points_per_pointcloud_, generated_points_num); @@ -155,9 +166,18 @@ TEST_F(VoxelGeneratorTest, TwoFramesNoTf) points.resize(capacity_ * config.point_feature_size_); std::fill(points.begin(), points.end(), std::nan("")); - bool status1 = voxel_generator.enqueuePointCloud(*cloud1_, *tf2_buffer_); - bool status2 = voxel_generator.enqueuePointCloud(*cloud2_, *tf2_buffer_); - std::size_t generated_points_num = voxel_generator.generateSweepPoints(points); + auto points_d = cuda::make_unique(capacity_ * config.point_feature_size_); + cudaMemcpy( + points_d.get(), points.data(), capacity_ * config.point_feature_size_ * sizeof(float), + cudaMemcpyHostToDevice); + + bool status1 = voxel_generator.enqueuePointCloud(*cloud1_, *tf2_buffer_, stream_); + bool status2 = voxel_generator.enqueuePointCloud(*cloud2_, *tf2_buffer_, stream_); + std::size_t generated_points_num = voxel_generator.generateSweepPoints(points_d.get(), stream_); + + cudaMemcpy( + points.data(), points_d.get(), capacity_ * config.point_feature_size_ * sizeof(float), + cudaMemcpyDeviceToHost); EXPECT_FALSE(status1); EXPECT_FALSE(status2); @@ -180,12 +200,21 @@ TEST_F(VoxelGeneratorTest, TwoFrames) points.resize(capacity_ * config.point_feature_size_); std::fill(points.begin(), points.end(), std::nan("")); + auto points_d = cuda::make_unique(capacity_ * config.point_feature_size_); + cudaMemcpy( + points_d.get(), points.data(), capacity_ * config.point_feature_size_ * sizeof(float), + cudaMemcpyHostToDevice); + tf2_buffer_->setTransform(transform1_, "authority1"); tf2_buffer_->setTransform(transform2_, "authority1"); - bool status1 = voxel_generator.enqueuePointCloud(*cloud1_, *tf2_buffer_); - bool status2 = voxel_generator.enqueuePointCloud(*cloud2_, *tf2_buffer_); - std::size_t generated_points_num = voxel_generator.generateSweepPoints(points); + bool status1 = voxel_generator.enqueuePointCloud(*cloud1_, *tf2_buffer_, stream_); + bool status2 = voxel_generator.enqueuePointCloud(*cloud2_, *tf2_buffer_, stream_); + std::size_t generated_points_num = voxel_generator.generateSweepPoints(points_d.get(), stream_); + + cudaMemcpy( + points.data(), points_d.get(), capacity_ * config.point_feature_size_ * sizeof(float), + cudaMemcpyDeviceToHost); EXPECT_TRUE(status1); EXPECT_TRUE(status2); diff --git a/perception/lidar_centerpoint/test/test_voxel_generator.hpp b/perception/lidar_centerpoint/test/test_voxel_generator.hpp index 8fb7d8dffa44d..48355b8a331ba 100644 --- a/perception/lidar_centerpoint/test/test_voxel_generator.hpp +++ b/perception/lidar_centerpoint/test/test_voxel_generator.hpp @@ -33,34 +33,36 @@ class VoxelGeneratorTest : public testing::Test void TearDown() override; // These need to be public so that they can be accessed in the test cases - rclcpp::Node::SharedPtr node_; + rclcpp::Node::SharedPtr node_{}; - std::unique_ptr cloud1_, cloud2_; - geometry_msgs::msg::TransformStamped transform1_, transform2_; + std::unique_ptr cloud1_{}, cloud2_{}; + geometry_msgs::msg::TransformStamped transform1_{}, transform2_{}; - std::unique_ptr densification_param_ptr_; - std::unique_ptr config_ptr_; + std::unique_ptr densification_param_ptr_{}; + std::unique_ptr config_ptr_{}; - std::unique_ptr tf2_buffer_; + std::unique_ptr tf2_buffer_{}; - std::string world_frame_; - std::string lidar_frame_; - std::size_t points_per_pointcloud_; - std::size_t capacity_; - double delta_pointcloud_x_; + std::string world_frame_{}; + std::string lidar_frame_{}; + std::size_t points_per_pointcloud_{}; + std::size_t capacity_{}; + double delta_pointcloud_x_{}; - std::size_t class_size_; - float point_feature_size_; - std::size_t max_voxel_size_; + std::size_t class_size_{}; + float point_feature_size_{}; + std::size_t max_voxel_size_{}; - std::vector point_cloud_range_; - std::vector voxel_size_; - std::size_t downsample_factor_; - std::size_t encoder_in_feature_size_; - float score_threshold_; - float circle_nms_dist_threshold_; - std::vector yaw_norm_thresholds_; - bool has_variance_; + std::vector point_cloud_range_{}; + std::vector voxel_size_{}; + std::size_t downsample_factor_{}; + std::size_t encoder_in_feature_size_{}; + float score_threshold_{}; + float circle_nms_dist_threshold_{}; + std::vector yaw_norm_thresholds_{}; + bool has_variance_{}; + + cudaStream_t stream_{}; }; #endif // TEST_VOXEL_GENERATOR_HPP_ diff --git a/perception/lidar_centerpoint_tvm/.gitignore b/perception/lidar_centerpoint_tvm/.gitignore deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/perception/lidar_centerpoint_tvm/CMakeLists.txt b/perception/lidar_centerpoint_tvm/CMakeLists.txt deleted file mode 100644 index e9da98d4ae3c4..0000000000000 --- a/perception/lidar_centerpoint_tvm/CMakeLists.txt +++ /dev/null @@ -1,100 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(lidar_centerpoint_tvm) - -find_package(autoware_cmake REQUIRED) -autoware_package() - -set(tvm_runtime_DIR ${tvm_vendor_DIR}) -find_package(tvm_runtime CONFIG REQUIRED) - -# Gather neural network information. -set(${PROJECT_NAME}_BACKEND llvm CACHE STRING "${PROJECT_NAME} neural network backend") -set(MODEL_NAME_ENCODER centerpoint_encoder) - -# Get neural network. -set(NN_DEPENDENCY_ENCODER "") -get_neural_network(${MODEL_NAME_ENCODER} ${${PROJECT_NAME}_BACKEND} NN_DEPENDENCY_ENCODER) - -set(MODEL_NAME_BACKBONE centerpoint_backbone) - -# Get neural network. -set(NN_DEPENDENCY_BACKBONE "") -get_neural_network(${MODEL_NAME_BACKBONE} ${${PROJECT_NAME}_BACKEND} NN_DEPENDENCY_BACKBONE) - -if((NOT NN_DEPENDENCY_ENCODER STREQUAL "") AND (NOT NN_DEPENDENCY_BACKBONE STREQUAL "")) - ## centerpoint_tvm ## - ament_auto_add_library(${PROJECT_NAME} SHARED - data/models/${MODEL_NAME_ENCODER}/inference_engine_tvm_config.hpp - data/models/${MODEL_NAME_BACKBONE}/inference_engine_tvm_config.hpp - data/models/${MODEL_NAME_BACKBONE}/preprocessing_inference_engine_tvm_config.hpp - lib/centerpoint_tvm.cpp - lib/utils.cpp - lib/ros_utils.cpp - lib/preprocess/pointcloud_densification.cpp - lib/preprocess/voxel_generator.cpp - lib/preprocess/generate_features.cpp - lib/postprocess/circle_nms.cpp - lib/postprocess/generate_detected_boxes.cpp - ) - - add_dependencies(${PROJECT_NAME} ${NN_DEPENDENCY_ENCODER}) - add_dependencies(${PROJECT_NAME} ${NN_DEPENDENCY_BACKBONE}) - - target_compile_options(${PROJECT_NAME} PRIVATE "-Wno-sign-conversion" "-Wno-conversion") - - target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC - "${tvm_vendor_INCLUDE_DIRS}" - ) - - target_link_libraries(${PROJECT_NAME} - ${tvm_runtime_LIBRARIES} - ) - - target_include_directories(${PROJECT_NAME} PRIVATE - data/models - ) - - ## node ## - ament_auto_add_library(lidar_centerpoint_tvm_component SHARED - src/node.cpp - ) - - target_link_libraries(lidar_centerpoint_tvm_component - ${PROJECT_NAME} - ) - - rclcpp_components_register_node(lidar_centerpoint_tvm_component - PLUGIN "autoware::perception::lidar_centerpoint_tvm::LidarCenterPointTVMNode" - EXECUTABLE lidar_centerpoint_tvm_node - ) - - ## single inference node ## - ament_auto_add_library(single_inference_lidar_centerpoint_tvm_component SHARED - src/single_inference_node.cpp - ) - - target_link_libraries(single_inference_lidar_centerpoint_tvm_component - ${tvm_runtime_LIBRARIES} - ) - - - rclcpp_components_register_node(single_inference_lidar_centerpoint_tvm_component - PLUGIN "autoware::perception::lidar_centerpoint_tvm::SingleInferenceLidarCenterPointNode" - EXECUTABLE single_inference_lidar_centerpoint_tvm_node - ) - - install(PROGRAMS - scripts/lidar_centerpoint_visualizer.py - DESTINATION lib/${PROJECT_NAME} - ) - - ament_export_dependencies(ament_cmake_python) - - ament_auto_package(INSTALL_TO_SHARE - launch - config - ) -else() - message(WARNING "Neural network not found, skipping package.") - ament_auto_package() -endif() diff --git a/perception/lidar_centerpoint_tvm/README.md b/perception/lidar_centerpoint_tvm/README.md deleted file mode 100644 index 26d588d4483ad..0000000000000 --- a/perception/lidar_centerpoint_tvm/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# lidar_centerpoint_tvm - -## Design - -### Usage - -lidar_centerpoint_tvm is a package for detecting dynamic 3D objects using TVM compiled centerpoint module for different backends. To use this package, replace `lidar_centerpoint` with `lidar_centerpoint_tvm` in perception launch files(for example, `lidar_based_detection.launch.xml` is lidar based detection is chosen.). - -#### Neural network - -This package will not build without a neural network for its inference. -The network is provided by the `tvm_utility` package. -See its design page for more information on how to enable downloading pre-compiled networks (by setting the `DOWNLOAD_ARTIFACTS` cmake variable), or how to handle user-compiled networks. - -#### Backend - -The backend used for the inference can be selected by setting the `lidar_centerpoint_tvm_BACKEND` cmake variable. -The current available options are `llvm` for a CPU backend, and `vulkan` or `opencl` for a GPU backend. -It defaults to `llvm`. - -### Inputs / Outputs - -### Input - -| Name | Type | Description | -| -------------------- | ------------------------------- | ---------------- | -| `~/input/pointcloud` | `sensor_msgs::msg::PointCloud2` | input pointcloud | - -### Output - -| Name | Type | Description | -| -------------------------- | ------------------------------------------------ | -------------------- | -| `~/output/objects` | `autoware_perception_msgs::msg::DetectedObjects` | detected objects | -| `debug/cyclic_time_ms` | `tier4_debug_msgs::msg::Float64Stamped` | cyclic time (msg) | -| `debug/processing_time_ms` | `tier4_debug_msgs::msg::Float64Stamped` | processing time (ms) | - -## Parameters - -### Core Parameters - -| Name | Type | Default Value | Description | -| ------------------------------- | ------ | ------------- | ----------------------------------------------------------- | -| `score_threshold` | float | `0.1` | detected objects with score less than threshold are ignored | -| `densification_world_frame_id` | string | `map` | the world frame id to fuse multi-frame pointcloud | -| `densification_num_past_frames` | int | `1` | the number of past frames to fuse with the current frame | - -### Bounding Box - -The lidar segmentation node establishes a bounding box for the detected obstacles. -The `L-fit` method of fitting a bounding box to a cluster is used for that. - -### Limitation and Known Issue - -Due to an accuracy issue of `centerpoint` model, `vulkan` cannot be used at the moment. -As for 'llvm' backend, real-time performance cannot be achieved. - -### Scatter Implementation - -Scatter function can be implemented using either TVMScript or C++. For C++ implementation, please refer to - -## Reference - -[1] Yin, Tianwei, Xingyi Zhou, and Philipp Krähenbühl. "Center-based 3d object detection and tracking." arXiv preprint arXiv:2006.11275 (2020). - -[2] Lang, Alex H., et al. "PointPillars: Fast encoders for object detection from point clouds." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019. - -[3] - -[4] - -[5] - -## Related issues - - - -- #908: Run Lidar Centerpoint with TVM diff --git a/perception/lidar_centerpoint_tvm/config/centerpoint.param.yaml b/perception/lidar_centerpoint_tvm/config/centerpoint.param.yaml deleted file mode 100644 index 34dce71975985..0000000000000 --- a/perception/lidar_centerpoint_tvm/config/centerpoint.param.yaml +++ /dev/null @@ -1,10 +0,0 @@ -/**: - ros__parameters: - class_names: ["CAR", "PEDESTRIAN", "BICYCLE"] - rename_car_to_truck_and_bus: true - point_feature_size: 4 - max_voxel_size: 40000 - point_cloud_range: [-89.6, -89.6, -3.0, 89.6, 89.6, 5.0] - voxel_size: [0.32, 0.32, 8.0] - downsample_factor: 1 - encoder_in_feature_size: 9 diff --git a/perception/lidar_centerpoint_tvm/data/models/centerpoint_backbone/inference_engine_tvm_config.hpp b/perception/lidar_centerpoint_tvm/data/models/centerpoint_backbone/inference_engine_tvm_config.hpp deleted file mode 100644 index 5d832027c7591..0000000000000 --- a/perception/lidar_centerpoint_tvm/data/models/centerpoint_backbone/inference_engine_tvm_config.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2021 Arm Limited and Contributors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "tvm_utility/pipeline.hpp" - -#ifndef PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_BACKBONE__INFERENCE_ENGINE_TVM_CONFIG_HPP_ // NOLINT -#define PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_BACKBONE__INFERENCE_ENGINE_TVM_CONFIG_HPP_ // NOLINT - -namespace model_zoo -{ -namespace perception -{ -namespace lidar_obstacle_detection -{ -namespace centerpoint_backbone -{ -namespace onnx_centerpoint_backbone -{ - -static const tvm_utility::pipeline::InferenceEngineTVMConfig config{ - {3, 0, 0}, // modelzoo_version - - "centerpoint_backbone", // network_name - "llvm", // network_backend - - "./deploy_lib.so", // network_module_path - "./deploy_graph.json", // network_graph_path - "./deploy_param.params", // network_params_path - - // cspell: ignore DLCPU - kDLCPU, // tvm_device_type - 0, // tvm_device_id - - {{"spatial_features", kDLFloat, 32, 1, {1, 32, 560, 560}}}, // network_inputs - - {{"heatmap", kDLFloat, 32, 1, {1, 3, 560, 560}}, - {"reg", kDLFloat, 32, 1, {1, 2, 560, 560}}, - {"height", kDLFloat, 32, 1, {1, 1, 560, 560}}, - {"dim", kDLFloat, 32, 1, {1, 3, 560, 560}}, - {"rot", kDLFloat, 32, 1, {1, 2, 560, 560}}, - {"vel", kDLFloat, 32, 1, {1, 2, 560, 560}}} // network_outputs -}; - -} // namespace onnx_centerpoint_backbone -} // namespace centerpoint_backbone -} // namespace lidar_obstacle_detection -} // namespace perception -} // namespace model_zoo -// NOLINTNEXTLINE -#endif // PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_BACKBONE__INFERENCE_ENGINE_TVM_CONFIG_HPP_ diff --git a/perception/lidar_centerpoint_tvm/data/models/centerpoint_backbone/preprocessing_inference_engine_tvm_config.hpp b/perception/lidar_centerpoint_tvm/data/models/centerpoint_backbone/preprocessing_inference_engine_tvm_config.hpp deleted file mode 100644 index 0cae27b49572c..0000000000000 --- a/perception/lidar_centerpoint_tvm/data/models/centerpoint_backbone/preprocessing_inference_engine_tvm_config.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2021 Arm Limited and Contributors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "tvm_utility/pipeline.hpp" - -#ifndef PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_BACKBONE__PREPROCESSING_INFERENCE_ENGINE_TVM_CONFIG_HPP_ // NOLINT -#define PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_BACKBONE__PREPROCESSING_INFERENCE_ENGINE_TVM_CONFIG_HPP_ // NOLINT - -namespace model_zoo -{ -namespace perception -{ -namespace lidar_obstacle_detection -{ -namespace centerpoint_backbone -{ -namespace onnx_centerpoint_backbone -{ -namespace preprocessing -{ - -static const tvm_utility::pipeline::InferenceEngineTVMConfig config{ - {3, 0, 0}, // modelzoo_version - - "centerpoint_backbone", // network_name - "llvm", // network_backend - - "./preprocess.so", // network_module_path - "./", // network_graph_path - "./", // network_params_path - - // cspell: ignore DLCPU - kDLCPU, // tvm_device_type - 0, // tvm_device_id - - {{"pillar_features", kDLFloat, 32, 1, {40000, 1, 32}}, - {"coords", kDLInt, 32, 1, {40000, 3}}}, // network_inputs - - {{"spatial_features", kDLFloat, 32, 1, {1, 32, 560, 560}}} // network_outputs -}; - -} // namespace preprocessing -} // namespace onnx_centerpoint_backbone -} // namespace centerpoint_backbone -} // namespace lidar_obstacle_detection -} // namespace perception -} // namespace model_zoo -// NOLINTNEXTLINE -#endif // PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_BACKBONE__PREPROCESSING_INFERENCE_ENGINE_TVM_CONFIG_HPP_ diff --git a/perception/lidar_centerpoint_tvm/data/models/centerpoint_encoder/inference_engine_tvm_config.hpp b/perception/lidar_centerpoint_tvm/data/models/centerpoint_encoder/inference_engine_tvm_config.hpp deleted file mode 100644 index 3e423dbe99877..0000000000000 --- a/perception/lidar_centerpoint_tvm/data/models/centerpoint_encoder/inference_engine_tvm_config.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2021 Arm Limited and Contributors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "tvm_utility/pipeline.hpp" - -#ifndef PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_ENCODER__INFERENCE_ENGINE_TVM_CONFIG_HPP_ // NOLINT -#define PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_ENCODER__INFERENCE_ENGINE_TVM_CONFIG_HPP_ // NOLINT - -namespace model_zoo -{ -namespace perception -{ -namespace lidar_obstacle_detection -{ -namespace centerpoint_encoder -{ -namespace onnx_centerpoint_encoder -{ - -static const tvm_utility::pipeline::InferenceEngineTVMConfig config{ - {3, 0, 0}, // modelzoo_version - - "centerpoint_encoder", // network_name - "llvm", // network_backend - - "./deploy_lib.so", // network_module_path - "./deploy_graph.json", // network_graph_path - "./deploy_param.params", // network_params_path - - // cspell: ignore DLCPU - kDLCPU, // tvm_device_type - 0, // tvm_device_id - - {{"input_features", kDLFloat, 32, 1, {40000, 32, 9}}}, // network_inputs - - {{"pillar_features", kDLFloat, 32, 1, {40000, 1, 32}}} // network_outputs -}; - -} // namespace onnx_centerpoint_encoder -} // namespace centerpoint_encoder -} // namespace lidar_obstacle_detection -} // namespace perception -} // namespace model_zoo -// NOLINTNEXTLINE -#endif // PERCEPTION__LIDAR_CENTERPOINT_TVM__DATA__MODELS__CENTERPOINT_ENCODER__INFERENCE_ENGINE_TVM_CONFIG_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/centerpoint_config.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/centerpoint_config.hpp deleted file mode 100644 index 5825decbb78d6..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/centerpoint_config.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__CENTERPOINT_CONFIG_HPP_ -#define LIDAR_CENTERPOINT_TVM__CENTERPOINT_CONFIG_HPP_ - -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -class CenterPointConfig -{ -public: - explicit CenterPointConfig( - const std::size_t class_size, const float point_feature_size, const std::size_t max_voxel_size, - const std::vector & point_cloud_range, const std::vector & voxel_size, - const std::size_t downsample_factor, const std::size_t encoder_in_feature_size, - const float score_threshold, const float circle_nms_dist_threshold, - const float yaw_norm_threshold) - { - class_size_ = class_size; - point_feature_size_ = point_feature_size; - max_voxel_size_ = max_voxel_size; - if (point_cloud_range.size() == 6) { - range_min_x_ = static_cast(point_cloud_range[0]); - range_min_y_ = static_cast(point_cloud_range[1]); - range_min_z_ = static_cast(point_cloud_range[2]); - range_max_x_ = static_cast(point_cloud_range[3]); - range_max_y_ = static_cast(point_cloud_range[4]); - range_max_z_ = static_cast(point_cloud_range[5]); - } - if (voxel_size.size() == 3) { - voxel_size_x_ = static_cast(voxel_size[0]); - voxel_size_y_ = static_cast(voxel_size[1]); - voxel_size_z_ = static_cast(voxel_size[2]); - } - downsample_factor_ = downsample_factor; - encoder_in_feature_size_ = encoder_in_feature_size; - - if (score_threshold > 0 && score_threshold < 1) { - score_threshold_ = score_threshold; - } - - if (circle_nms_dist_threshold > 0) { - circle_nms_dist_threshold_ = circle_nms_dist_threshold; - } - - if (yaw_norm_threshold >= 0 && yaw_norm_threshold < 1) { - yaw_norm_threshold_ = yaw_norm_threshold; - } - - grid_size_x_ = static_cast((range_max_x_ - range_min_x_) / voxel_size_x_); - grid_size_y_ = static_cast((range_max_y_ - range_min_y_) / voxel_size_y_); - grid_size_z_ = static_cast((range_max_z_ - range_min_z_) / voxel_size_z_); - offset_x_ = range_min_x_ + voxel_size_x_ / 2; - offset_y_ = range_min_y_ + voxel_size_y_ / 2; - offset_z_ = range_min_z_ + voxel_size_z_ / 2; - down_grid_size_x_ = grid_size_x_ / downsample_factor_; - down_grid_size_y_ = grid_size_y_ / downsample_factor_; - }; - - // input params - std::size_t class_size_{3}; - const std::size_t point_dim_size_{3}; // x, y and z - std::size_t point_feature_size_{4}; // x, y, z and time lag - std::size_t max_point_in_voxel_size_{32}; - std::size_t max_voxel_size_{40000}; - float range_min_x_{-89.6f}; - float range_min_y_{-89.6f}; - float range_min_z_{-3.0f}; - float range_max_x_{89.6f}; - float range_max_y_{89.6f}; - float range_max_z_{5.0f}; - float voxel_size_x_{0.32f}; - float voxel_size_y_{0.32f}; - float voxel_size_z_{8.0f}; - - // network params - const std::size_t batch_size_{1}; - std::size_t downsample_factor_{2}; - std::size_t encoder_in_feature_size_{9}; - const std::size_t encoder_out_feature_size_{32}; - const std::size_t head_out_size_{6}; - const std::size_t head_out_offset_size_{2}; - const std::size_t head_out_z_size_{1}; - const std::size_t head_out_dim_size_{3}; - const std::size_t head_out_rot_size_{2}; - const std::size_t head_out_vel_size_{2}; - - // post-process params - float score_threshold_{0.35f}; - float circle_nms_dist_threshold_{1.5f}; - float yaw_norm_threshold_{0.0f}; - - // calculated params - std::size_t grid_size_x_ = (range_max_x_ - range_min_x_) / voxel_size_x_; - std::size_t grid_size_y_ = (range_max_y_ - range_min_y_) / voxel_size_y_; - std::size_t grid_size_z_ = (range_max_z_ - range_min_z_) / voxel_size_z_; - float offset_x_ = range_min_x_ + voxel_size_x_ / 2; - float offset_y_ = range_min_y_ + voxel_size_y_ / 2; - float offset_z_ = range_min_z_ + voxel_size_z_ / 2; - std::size_t down_grid_size_x_ = grid_size_x_ / downsample_factor_; - std::size_t down_grid_size_y_ = grid_size_y_ / downsample_factor_; -}; - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__CENTERPOINT_CONFIG_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/centerpoint_tvm.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/centerpoint_tvm.hpp deleted file mode 100644 index 865ca7d4253bf..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/centerpoint_tvm.hpp +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc., Arm Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__CENTERPOINT_TVM_HPP_ -#define LIDAR_CENTERPOINT_TVM__CENTERPOINT_TVM_HPP_ - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -using tvm_utility::pipeline::TVMArrayContainer; -using tvm_utility::pipeline::TVMArrayContainerVector; - -struct MixedInputs -{ - // The number of non-empty voxel - std::size_t num_voxels; - // The voxel features (point info in each voxel) or pillar features. - std::vector features; - // The number of points in each voxel. - std::vector num_points_per_voxel; - // The index from voxel number to its 3D position - std::vector coords; -}; - -class LIDAR_CENTERPOINT_TVM_LOCAL TVMScatterIE : public tvm_utility::pipeline::InferenceEngine -{ -public: - explicit TVMScatterIE( - tvm_utility::pipeline::InferenceEngineTVMConfig config, const std::string & pkg_name, - const std::string & data_path, const std::string & function_name); - TVMArrayContainerVector schedule(const TVMArrayContainerVector & input); - void set_coords(TVMArrayContainer coords) { coords_ = coords; } - -private: - tvm_utility::pipeline::InferenceEngineTVMConfig config_; - TVMArrayContainer coords_; - TVMArrayContainerVector output_; - tvm::runtime::PackedFunc scatter_function; -}; - -class LIDAR_CENTERPOINT_TVM_LOCAL VoxelEncoderPreProcessor -: public tvm_utility::pipeline::PreProcessor -{ -public: - /// \brief Constructor. - /// \param[in] config The TVM configuration. - /// \param[in] config_mod The centerpoint model configuration. - explicit VoxelEncoderPreProcessor( - const tvm_utility::pipeline::InferenceEngineTVMConfig & config, - const CenterPointConfig & config_mod); - - /// \brief Convert the voxel_features to encoder_in_features (a TVM array). - /// \param[in] voxel_inputs The voxel features related input - /// \return A TVM array containing the encoder_in_features. - /// \throw std::runtime_error If the features are incorrectly configured. - TVMArrayContainerVector schedule(const MixedInputs & voxel_inputs); - -private: - const int64_t max_voxel_size; - const int64_t max_point_in_voxel_size; - const int64_t encoder_in_feature_size; - const int64_t input_datatype_bytes; - const CenterPointConfig config_detail; - std::vector encoder_in_features; - TVMArrayContainer output; -}; - -class LIDAR_CENTERPOINT_TVM_LOCAL BackboneNeckHeadPostProcessor -: public tvm_utility::pipeline::PostProcessor> -{ -public: - /// \brief Constructor. - /// \param[in] config The TVM configuration. - /// \param[in] config_mod The centerpoint model configuration. - explicit BackboneNeckHeadPostProcessor( - const tvm_utility::pipeline::InferenceEngineTVMConfig & config, - const CenterPointConfig & config_mod); - - /// \brief Copy the inference result. - /// \param[in] input The result of the inference engine. - /// \return The inferred data. - std::vector schedule(const TVMArrayContainerVector & input); - -private: - const int64_t output_datatype_bytes; - const CenterPointConfig config_detail; - std::vector head_out_heatmap; - std::vector head_out_offset; - std::vector head_out_z; - std::vector head_out_dim; - std::vector head_out_rot; - std::vector head_out_vel; -}; - -class LIDAR_CENTERPOINT_TVM_PUBLIC CenterPointTVM -{ -public: - /// \brief Constructor - /// \param[in] dense_param The densification parameter used to constructing vg_ptr. - /// \param[in] config The CenterPoint model configuration. - explicit CenterPointTVM( - const DensificationParam & densification_param, const CenterPointConfig & config, - const std::string & data_path); - - ~CenterPointTVM(); - - bool detect( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer, - std::vector & det_boxes3d); - -protected: - void initPtr(); - - virtual bool preprocess( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer); - - using VE_PrePT = VoxelEncoderPreProcessor; - using IET = tvm_utility::pipeline::InferenceEngineTVM; - using BNH_PostPT = BackboneNeckHeadPostProcessor; - using TSE = TVMScatterIE; - using TSP = tvm_utility::pipeline::TowStagePipeline; - - tvm_utility::pipeline::InferenceEngineTVMConfig config_ve; - tvm_utility::pipeline::InferenceEngineTVMConfig config_bnh; - - // Voxel Encoder Pipeline. - std::shared_ptr VE_PreP; - std::shared_ptr VE_IE; - - // Backbone Neck Head Pipeline. - std::shared_ptr BNH_IE; - std::shared_ptr BNH_PostP; - - std::shared_ptr scatter_ie; - std::shared_ptr> - TSP_pipeline; - - // Variables - std::unique_ptr vg_ptr_{nullptr}; - - CenterPointConfig config_; - std::size_t num_voxels_{0}; - std::shared_ptr> voxels_; - std::shared_ptr> coordinates_; - std::shared_ptr> num_points_per_voxel_; - TVMArrayContainer coords_tvm_; -}; - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__CENTERPOINT_TVM_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/node.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/node.hpp deleted file mode 100644 index cb387c404c07e..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/node.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__NODE_HPP_ -#define LIDAR_CENTERPOINT_TVM__NODE_HPP_ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -class LIDAR_CENTERPOINT_TVM_PUBLIC LidarCenterPointTVMNode : public rclcpp::Node -{ -public: - explicit LidarCenterPointTVMNode(const rclcpp::NodeOptions & node_options); - -private: - void pointCloudCallback(const sensor_msgs::msg::PointCloud2::ConstSharedPtr input_pointcloud_msg); - - tf2_ros::Buffer tf_buffer_; - tf2_ros::TransformListener tf_listener_{tf_buffer_}; - - rclcpp::Subscription::SharedPtr pointcloud_sub_; - rclcpp::Publisher::SharedPtr objects_pub_; - - float score_threshold_{0.0}; - std::vector class_names_; - bool rename_car_to_truck_and_bus_{false}; - bool has_twist_{false}; - - std::unique_ptr detector_ptr_{nullptr}; - - // debugger - std::unique_ptr> stop_watch_ptr_{ - nullptr}; - std::unique_ptr debug_publisher_ptr_{nullptr}; -}; - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__NODE_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/postprocess/circle_nms.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/postprocess/circle_nms.hpp deleted file mode 100644 index 3a0847f00bd21..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/postprocess/circle_nms.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2022 AutoCore Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__POSTPROCESS__CIRCLE_NMS_HPP_ -#define LIDAR_CENTERPOINT_TVM__POSTPROCESS__CIRCLE_NMS_HPP_ - -#include - -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -// Non-maximum suppression (NMS) uses the distance on the xy plane instead of -// intersection over union (IoU) to suppress overlapped objects. -std::size_t circleNMS( - std::vector & boxes3d, const float dist_thresh, std::vector & keep_mask); - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__POSTPROCESS__CIRCLE_NMS_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/postprocess/generate_detected_boxes.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/postprocess/generate_detected_boxes.hpp deleted file mode 100644 index ba91addc5e02e..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/postprocess/generate_detected_boxes.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__POSTPROCESS__GENERATE_DETECTED_BOXES_HPP_ -#define LIDAR_CENTERPOINT_TVM__POSTPROCESS__GENERATE_DETECTED_BOXES_HPP_ - -#include -#include - -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -void generateDetectedBoxes3D( - const std::vector & out_heatmap, const std::vector & out_offset, - const std::vector & out_z, const std::vector & out_dim, - const std::vector & out_rot, const std::vector & out_vel, - const CenterPointConfig & config, std::vector & det_boxes3d); - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__POSTPROCESS__GENERATE_DETECTED_BOXES_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/generate_features.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/generate_features.hpp deleted file mode 100644 index d799dc0bfac57..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/generate_features.hpp +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__PREPROCESS__GENERATE_FEATURES_HPP_ -#define LIDAR_CENTERPOINT_TVM__PREPROCESS__GENERATE_FEATURES_HPP_ - -#include - -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -void generateFeatures( - const std::vector & voxel_features, const std::vector & voxel_num_points, - const std::vector & coords, const std::size_t num_voxels, - const CenterPointConfig & config, std::vector & features); - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__PREPROCESS__GENERATE_FEATURES_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/voxel_generator.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/voxel_generator.hpp deleted file mode 100644 index 7ef49841c680b..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/preprocess/voxel_generator.hpp +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__PREPROCESS__VOXEL_GENERATOR_HPP_ -#define LIDAR_CENTERPOINT_TVM__PREPROCESS__VOXEL_GENERATOR_HPP_ - -#include -#include -#include - -#include - -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -class LIDAR_CENTERPOINT_TVM_LOCAL VoxelGeneratorTemplate -{ -public: - explicit VoxelGeneratorTemplate( - const DensificationParam & param, const CenterPointConfig & config); - - virtual std::size_t pointsToVoxels( - std::vector & voxels, std::vector & coordinates, - std::vector & num_points_per_voxel) = 0; - - bool enqueuePointCloud( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer); - -protected: - std::unique_ptr pd_ptr_{nullptr}; - - CenterPointConfig config_; - std::array range_; - std::array grid_size_; - std::array recip_voxel_size_; -}; - -class LIDAR_CENTERPOINT_TVM_LOCAL VoxelGenerator : public VoxelGeneratorTemplate -{ -public: - using VoxelGeneratorTemplate::VoxelGeneratorTemplate; - - /** - * @brief Traverse all the lidar points and put each point into the corresponding voxel. - * - * @param voxels To store point info in each voxel - * @param coordinates To store the index from voxel number to its 3D position - * @param num_points_per_voxel To store the number of points in each voxel - * @return The number of non-empty voxel - */ - std::size_t pointsToVoxels( - std::vector & voxels, std::vector & coordinates, - std::vector & num_points_per_voxel) override; -}; - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__PREPROCESS__VOXEL_GENERATOR_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/ros_utils.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/ros_utils.hpp deleted file mode 100644 index a33430a1b09ba..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/ros_utils.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__ROS_UTILS_HPP_ -#define LIDAR_CENTERPOINT_TVM__ROS_UTILS_HPP_ - -#include - -#include -#include -#include -#include - -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -void box3DToDetectedObject( - const Box3D & box3d, const std::vector & class_names, - const bool rename_car_to_truck_and_bus, const bool has_twist, - autoware_perception_msgs::msg::DetectedObject & obj); - -uint8_t getSemanticType(const std::string & class_name); - -bool isCarLikeVehicleLabel(const uint8_t label); - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__ROS_UTILS_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/single_inference_node.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/single_inference_node.hpp deleted file mode 100644 index 0a4fcb27ac202..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/single_inference_node.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2022 TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__SINGLE_INFERENCE_NODE_HPP_ -#define LIDAR_CENTERPOINT_TVM__SINGLE_INFERENCE_NODE_HPP_ - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -class SingleInferenceLidarCenterPointNode : public rclcpp::Node -{ -public: - explicit SingleInferenceLidarCenterPointNode(const rclcpp::NodeOptions & node_options); - -private: - void detect(const std::string & pcd_path, const std::string & detections_path); - std::vector getVertices( - const autoware_perception_msgs::msg::Shape & shape, const Eigen::Affine3d & pose) const; - void dumpDetectionsAsMesh( - const autoware_perception_msgs::msg::DetectedObjects & objects_msg, - const std::string & output_path) const; - - tf2_ros::Buffer tf_buffer_; - tf2_ros::TransformListener tf_listener_{tf_buffer_}; - - float score_threshold_{0.0}; - std::vector class_names_; - bool rename_car_to_truck_and_bus_{false}; - bool has_twist_{false}; - - std::unique_ptr detector_ptr_{nullptr}; -}; - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__SINGLE_INFERENCE_NODE_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/utils.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/utils.hpp deleted file mode 100644 index 259deef53f189..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/utils.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__UTILS_HPP_ -#define LIDAR_CENTERPOINT_TVM__UTILS_HPP_ - -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ -struct Box3D -{ - // initializer not allowed for __shared__ variable - int32_t label; - float score; - float x; - float y; - float z; - float length; - float width; - float height; - float yaw; - float vel_x; - float vel_y; -}; - -// cspell: ignore divup -std::size_t divup(const std::size_t a, const std::size_t b); - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#endif // LIDAR_CENTERPOINT_TVM__UTILS_HPP_ diff --git a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/visibility_control.hpp b/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/visibility_control.hpp deleted file mode 100644 index a4afc54afc5fb..0000000000000 --- a/perception/lidar_centerpoint_tvm/include/lidar_centerpoint_tvm/visibility_control.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2021-2022 Arm Ltd., AutoCore Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef LIDAR_CENTERPOINT_TVM__VISIBILITY_CONTROL_HPP_ -#define LIDAR_CENTERPOINT_TVM__VISIBILITY_CONTROL_HPP_ - -#if defined(__WIN32) -#if defined(LIDAR_CENTERPOINT_TVM_BUILDING_DLL) || defined(LIDAR_CENTERPOINT_TVM_EXPORTS) -#define LIDAR_CENTERPOINT_TVM_PUBLIC __declspec(dllexport) -#define LIDAR_CENTERPOINT_TVM__LOCAL -#else -#define LIDAR_CENTERPOINT_TVM_PUBLIC __declspec(dllimport) -#define LIDAR_CENTERPOINT_TVM__LOCAL -#endif -#elif defined(__linux__) -#define LIDAR_CENTERPOINT_TVM_PUBLIC __attribute__((visibility("default"))) -#define LIDAR_CENTERPOINT_TVM_LOCAL __attribute__((visibility("hidden"))) -#elif defined(__APPLE__) -#define LIDAR_CENTERPOINT_TVM_PUBLIC __attribute__((visibility("default"))) -#define LIDAR_CENTERPOINT_TVM_LOCAL __attribute__((visibility("hidden"))) -#else -#error "Unsupported Build Configuration" -#endif - -#endif // LIDAR_CENTERPOINT_TVM__VISIBILITY_CONTROL_HPP_ diff --git a/perception/lidar_centerpoint_tvm/launch/lidar_centerpoint_tvm.launch.xml b/perception/lidar_centerpoint_tvm/launch/lidar_centerpoint_tvm.launch.xml deleted file mode 100644 index 2bd6e3aa15c21..0000000000000 --- a/perception/lidar_centerpoint_tvm/launch/lidar_centerpoint_tvm.launch.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/perception/lidar_centerpoint_tvm/launch/single_inference_lidar_centerpoint_tvm.launch.xml b/perception/lidar_centerpoint_tvm/launch/single_inference_lidar_centerpoint_tvm.launch.xml deleted file mode 100644 index c2e0801fbd11c..0000000000000 --- a/perception/lidar_centerpoint_tvm/launch/single_inference_lidar_centerpoint_tvm.launch.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/perception/lidar_centerpoint_tvm/lib/centerpoint_tvm.cpp b/perception/lidar_centerpoint_tvm/lib/centerpoint_tvm.cpp deleted file mode 100644 index 91f727448b76a..0000000000000 --- a/perception/lidar_centerpoint_tvm/lib/centerpoint_tvm.cpp +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc., Arm Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/centerpoint_tvm.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -auto config_en = model_zoo::perception::lidar_obstacle_detection::centerpoint_encoder:: - onnx_centerpoint_encoder::config; -auto config_bk = model_zoo::perception::lidar_obstacle_detection::centerpoint_backbone:: - onnx_centerpoint_backbone::config; -auto config_scatter = model_zoo::perception::lidar_obstacle_detection::centerpoint_backbone:: - onnx_centerpoint_backbone::preprocessing::config; - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -TVMScatterIE::TVMScatterIE( - tvm_utility::pipeline::InferenceEngineTVMConfig config, const std::string & pkg_name, - const std::string & data_path, const std::string & function_name) -: config_(config) -{ - std::string network_prefix = data_path + "/" + pkg_name + "/models/" + config.network_name + "/"; - std::string network_module_path = network_prefix + config.network_module_path; - - std::ifstream module(network_module_path); - if (!module.good()) { - throw std::runtime_error("File " + network_module_path + " specified in config.hpp not found"); - } - module.close(); - tvm::runtime::Module runtime_mod = tvm::runtime::Module::LoadFromFile(network_module_path); - - scatter_function = runtime_mod.GetFunction(function_name); - - for (auto & output_config : config.network_outputs) { - output_.push_back(TVMArrayContainer( - output_config.node_shape, output_config.tvm_dtype_code, output_config.tvm_dtype_bits, - output_config.tvm_dtype_lanes, config.tvm_device_type, config.tvm_device_id)); - } -} - -TVMArrayContainerVector TVMScatterIE::schedule(const TVMArrayContainerVector & input) -{ - scatter_function(input[0].getArray(), coords_.getArray(), output_[0].getArray()); - - return output_; -} - -VoxelEncoderPreProcessor::VoxelEncoderPreProcessor( - const tvm_utility::pipeline::InferenceEngineTVMConfig & config, - const CenterPointConfig & config_mod) -: max_voxel_size(config.network_inputs[0].node_shape[0]), - max_point_in_voxel_size(config.network_inputs[0].node_shape[1]), - encoder_in_feature_size(config.network_inputs[0].node_shape[2]), - input_datatype_bytes(config.network_inputs[0].tvm_dtype_bits / 8), - config_detail(config_mod) -{ - encoder_in_features.resize(max_voxel_size * max_point_in_voxel_size * encoder_in_feature_size); - // Allocate input variable - std::vector shape_x{1, max_voxel_size, max_point_in_voxel_size, encoder_in_feature_size}; - TVMArrayContainer x{ - shape_x, - config.network_inputs[0].tvm_dtype_code, - config.network_inputs[0].tvm_dtype_bits, - config.network_inputs[0].tvm_dtype_lanes, - config.tvm_device_type, - config.tvm_device_id}; - output = x; -} - -TVMArrayContainerVector VoxelEncoderPreProcessor::schedule(const MixedInputs & voxel_inputs) -{ - // generate encoder_in_features from the voxels - generateFeatures( - voxel_inputs.features, voxel_inputs.num_points_per_voxel, voxel_inputs.coords, - voxel_inputs.num_voxels, config_detail, encoder_in_features); - - TVMArrayCopyFromBytes( - output.getArray(), encoder_in_features.data(), - max_voxel_size * max_point_in_voxel_size * encoder_in_feature_size * input_datatype_bytes); - - return {output}; -} - -BackboneNeckHeadPostProcessor::BackboneNeckHeadPostProcessor( - const tvm_utility::pipeline::InferenceEngineTVMConfig & config, - const CenterPointConfig & config_mod) -: output_datatype_bytes(config.network_outputs[0].tvm_dtype_bits / 8), config_detail(config_mod) -{ - head_out_heatmap.resize( - config.network_outputs[0].node_shape[1] * config.network_outputs[0].node_shape[2] * - config.network_outputs[0].node_shape[3]); - head_out_offset.resize( - config.network_outputs[1].node_shape[1] * config.network_outputs[1].node_shape[2] * - config.network_outputs[1].node_shape[3]); - head_out_z.resize( - config.network_outputs[2].node_shape[1] * config.network_outputs[2].node_shape[2] * - config.network_outputs[2].node_shape[3]); - head_out_dim.resize( - config.network_outputs[3].node_shape[1] * config.network_outputs[3].node_shape[2] * - config.network_outputs[3].node_shape[3]); - head_out_rot.resize( - config.network_outputs[4].node_shape[1] * config.network_outputs[4].node_shape[2] * - config.network_outputs[4].node_shape[3]); - head_out_vel.resize( - config.network_outputs[5].node_shape[1] * config.network_outputs[5].node_shape[2] * - config.network_outputs[5].node_shape[3]); -} - -std::vector BackboneNeckHeadPostProcessor::schedule(const TVMArrayContainerVector & input) -{ - TVMArrayCopyToBytes( - input[0].getArray(), head_out_heatmap.data(), head_out_heatmap.size() * output_datatype_bytes); - TVMArrayCopyToBytes( - input[1].getArray(), head_out_offset.data(), head_out_offset.size() * output_datatype_bytes); - TVMArrayCopyToBytes( - input[2].getArray(), head_out_z.data(), head_out_z.size() * output_datatype_bytes); - TVMArrayCopyToBytes( - input[3].getArray(), head_out_dim.data(), head_out_dim.size() * output_datatype_bytes); - TVMArrayCopyToBytes( - input[4].getArray(), head_out_rot.data(), head_out_rot.size() * output_datatype_bytes); - TVMArrayCopyToBytes( - input[5].getArray(), head_out_vel.data(), head_out_vel.size() * output_datatype_bytes); - - std::vector det_boxes3d; - - generateDetectedBoxes3D( - head_out_heatmap, head_out_offset, head_out_z, head_out_dim, head_out_rot, head_out_vel, - config_detail, det_boxes3d); - - return det_boxes3d; -} - -CenterPointTVM::CenterPointTVM( - const DensificationParam & densification_param, const CenterPointConfig & config, - const std::string & data_path) -: config_ve(config_en), - config_bnh(config_bk), - VE_PreP(std::make_shared(config_en, config)), - VE_IE(std::make_shared(config_en, "lidar_centerpoint_tvm", data_path)), - BNH_IE(std::make_shared(config_bk, "lidar_centerpoint_tvm", data_path)), - BNH_PostP(std::make_shared(config_bk, config)), - scatter_ie(std::make_shared(config_scatter, "lidar_centerpoint_tvm", data_path, "scatter")), - TSP_pipeline(std::make_shared(VE_PreP, VE_IE, scatter_ie, BNH_IE, BNH_PostP)), - config_(config) -{ - vg_ptr_ = std::make_unique(densification_param, config_); - initPtr(); -} - -CenterPointTVM::~CenterPointTVM() -{ -} - -void CenterPointTVM::initPtr() -{ - const auto voxels_size = - config_.max_voxel_size_ * config_.max_point_in_voxel_size_ * config_.point_feature_size_; - const auto coordinates_size = config_.max_voxel_size_ * config_.point_dim_size_; - - voxels_ = std::make_shared>(voxels_size); - coordinates_ = std::make_shared>(coordinates_size); - num_points_per_voxel_ = std::make_shared>(config_.max_voxel_size_); - std::vector shape_coords{ - config_scatter.network_inputs[1].node_shape[0], config_scatter.network_inputs[1].node_shape[1]}; - coords_tvm_ = TVMArrayContainer( - shape_coords, config_scatter.network_inputs[1].tvm_dtype_code, - config_scatter.network_inputs[1].tvm_dtype_bits, - config_scatter.network_inputs[1].tvm_dtype_lanes, config_scatter.tvm_device_type, - config_scatter.tvm_device_id); -} - -bool CenterPointTVM::detect( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer, - std::vector & det_boxes3d) -{ - std::fill(voxels_->begin(), voxels_->end(), 0); - std::fill(coordinates_->begin(), coordinates_->end(), -1); - std::fill(num_points_per_voxel_->begin(), num_points_per_voxel_->end(), 0); - - if (!preprocess(input_pointcloud_msg, tf_buffer)) { - RCLCPP_WARN_STREAM( - rclcpp::get_logger("lidar_centerpoint"), "Fail to preprocess and skip to detect."); - return false; - } - - MixedInputs voxel_inputs{num_voxels_, *voxels_, *num_points_per_voxel_, *coordinates_}; - auto bnh_output = TSP_pipeline->schedule(voxel_inputs); - - det_boxes3d = bnh_output; - if (det_boxes3d.size() == 0) { - RCLCPP_WARN_STREAM(rclcpp::get_logger("lidar_centerpoint_tvm"), "No detected boxes."); - } - - return true; -} - -bool CenterPointTVM::preprocess( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer) -{ - bool is_success = vg_ptr_->enqueuePointCloud(input_pointcloud_msg, tf_buffer); - if (!is_success) { - return false; - } - num_voxels_ = vg_ptr_->pointsToVoxels(*voxels_, *coordinates_, *num_points_per_voxel_); - if (num_voxels_ == 0) { - return false; - } - - TVMArrayCopyFromBytes( - coords_tvm_.getArray(), coordinates_->data(), coordinates_->size() * sizeof(int32_t)); - - scatter_ie->set_coords(coords_tvm_); - - return true; -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware diff --git a/perception/lidar_centerpoint_tvm/lib/postprocess/circle_nms.cpp b/perception/lidar_centerpoint_tvm/lib/postprocess/circle_nms.cpp deleted file mode 100644 index 0ab51347be772..0000000000000 --- a/perception/lidar_centerpoint_tvm/lib/postprocess/circle_nms.cpp +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2022 AutoCore Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/postprocess/circle_nms.hpp" - -#include - -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -inline float dist2dPow(const Box3D & a, const Box3D & b) -{ - return powf(a.x - b.x, 2) + powf(a.y - b.y, 2); -} - -std::size_t circleNMS( - std::vector & boxes3d, const float dist_thresh, std::vector & keep_mask) -{ - // params: boxes3d, vector sorted by score from largest to smallest - const auto num_boxes3d = boxes3d.size(); - const float dist2d_pow_thresh = powf(dist_thresh, 2); - - // generate keep_mask - std::size_t num_to_keep = 0; - std::vector suppress(num_boxes3d); // suppress[i]=true mean i-th box should be suppressed - - // std::uint64_t * suppress_ptr = & suppress.front(); - for (std::size_t i = 0; i < num_boxes3d; i++) { - if (suppress[i]) { - keep_mask[i] = false; - } else { - keep_mask[i] = true; - num_to_keep++; - for (std::size_t j = i + 1; j < num_boxes3d; j++) { - // if the j-th box has been suppressed, continue - if (suppress[j]) continue; - // if the j-th box is in the circle of i-th, set j-th box to be suppressed - if (dist2dPow(boxes3d[i], boxes3d[j]) < dist2d_pow_thresh) suppress[j] = true; - } - } - } - - return num_to_keep; -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware diff --git a/perception/lidar_centerpoint_tvm/lib/postprocess/generate_detected_boxes.cpp b/perception/lidar_centerpoint_tvm/lib/postprocess/generate_detected_boxes.cpp deleted file mode 100644 index cbfe2d0c66669..0000000000000 --- a/perception/lidar_centerpoint_tvm/lib/postprocess/generate_detected_boxes.cpp +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/postprocess/generate_detected_boxes.hpp" - -#include - -#include -#include -#include -#include - -namespace -{ -const std::size_t THREAD_NUM_POST = 32; -} // namespace - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -struct is_score_greater -{ - explicit is_score_greater(float t) : t_(t) {} - bool operator()(const Box3D & b) { return b.score > t_; } - -private: - float t_{0.0}; -}; - -struct is_kept -{ - bool operator()(const bool keep) { return keep; } -}; - -struct score_greater -{ - bool operator()(const Box3D & lb, const Box3D & rb) { return lb.score > rb.score; } -}; - -inline float sigmoid(float x) -{ - return 1.0f / (1.0f + expf(-x)); -} - -void generateBoxes3D_worker( - const std::vector & out_heatmap, const std::vector & out_offset, - const std::vector & out_z, const std::vector & out_dim, - const std::vector & out_rot, const std::vector & out_vel, - const CenterPointConfig & config, std::vector & boxes3d, std::size_t thread_idx, - std::size_t grids_per_thread) -{ - // generate boxes3d from the outputs of the network. - // shape of out_*: (N, DOWN_GRID_SIZE_Y, DOWN_GRID_SIZE_X) - // heatmap: N = class_size, offset: N = 2, z: N = 1, dim: N = 3, rot: N = 2, vel: N = 2 - for (std::size_t idx = 0; idx < grids_per_thread; idx++) { - std::size_t grid_idx = thread_idx * grids_per_thread + idx; - const auto down_grid_size = config.down_grid_size_y_ * config.down_grid_size_x_; - if (grid_idx >= down_grid_size) { - return; - } - - const auto yi = grid_idx / config.down_grid_size_x_; - const auto xi = grid_idx % config.down_grid_size_x_; - - int32_t label = -1; - float max_score = -1; - for (std::size_t ci = 0; ci < config.class_size_; ci++) { - float score = sigmoid(out_heatmap[down_grid_size * ci + grid_idx]); - if (score > max_score) { - label = ci; - max_score = score; - } - } - - const float offset_x = out_offset[down_grid_size * 0 + grid_idx]; - const float offset_y = out_offset[down_grid_size * 1 + grid_idx]; - const float x = - config.voxel_size_x_ * config.downsample_factor_ * (xi + offset_x) + config.range_min_x_; - const float y = - config.voxel_size_y_ * config.downsample_factor_ * (yi + offset_y) + config.range_min_y_; - const float z = out_z[grid_idx]; - const float w = out_dim[down_grid_size * 0 + grid_idx]; - const float l = out_dim[down_grid_size * 1 + grid_idx]; - const float h = out_dim[down_grid_size * 2 + grid_idx]; - const float yaw_sin = out_rot[down_grid_size * 0 + grid_idx]; - const float yaw_cos = out_rot[down_grid_size * 1 + grid_idx]; - const float yaw_norm = sqrtf(yaw_sin * yaw_sin + yaw_cos * yaw_cos); - const float vel_x = out_vel[down_grid_size * 0 + grid_idx]; - const float vel_y = out_vel[down_grid_size * 1 + grid_idx]; - - boxes3d[grid_idx].label = label; - boxes3d[grid_idx].score = yaw_norm >= config.yaw_norm_threshold_ ? max_score : 0.f; - boxes3d[grid_idx].x = x; - boxes3d[grid_idx].y = y; - boxes3d[grid_idx].z = z; - boxes3d[grid_idx].length = expf(l); - boxes3d[grid_idx].width = expf(w); - boxes3d[grid_idx].height = expf(h); - boxes3d[grid_idx].yaw = atan2f(yaw_sin, yaw_cos); - boxes3d[grid_idx].vel_x = vel_x; - boxes3d[grid_idx].vel_y = vel_y; - } -} - -// cspell: ignore divup -void generateDetectedBoxes3D( - const std::vector & out_heatmap, const std::vector & out_offset, - const std::vector & out_z, const std::vector & out_dim, - const std::vector & out_rot, const std::vector & out_vel, - const CenterPointConfig & config, std::vector & det_boxes3d) -{ - std::vector threadPool; - const auto down_grid_size = config.down_grid_size_y_ * config.down_grid_size_x_; - std::vector boxes3d(down_grid_size); - std::size_t grids_per_thread = divup(down_grid_size, THREAD_NUM_POST); - for (std::size_t idx = 0; idx < THREAD_NUM_POST; idx++) { - std::thread worker( - generateBoxes3D_worker, std::ref(out_heatmap), std::ref(out_offset), std::ref(out_z), - std::ref(out_dim), std::ref(out_rot), std::ref(out_vel), std::ref(config), std::ref(boxes3d), - idx, grids_per_thread); - threadPool.push_back(std::move(worker)); - } - for (std::size_t idx = 0; idx < THREAD_NUM_POST; idx++) { - threadPool[idx].join(); - } - - // suppress by score - const auto num_det_boxes3d = - std::count_if(boxes3d.begin(), boxes3d.end(), is_score_greater(config.score_threshold_)); - if (num_det_boxes3d == 0) { - // construct boxes3d failed - std::cerr << "lidar_centerpoint_tvm: construct boxes3d failed" << std::endl; - } - std::vector det_boxes3d_no_nms(num_det_boxes3d); - std::copy_if( - boxes3d.begin(), boxes3d.end(), det_boxes3d_no_nms.begin(), - is_score_greater(config.score_threshold_)); - - // sort by score - std::sort(det_boxes3d_no_nms.begin(), det_boxes3d_no_nms.end(), score_greater()); - - // suppress by NMS - std::vector final_keep_mask(num_det_boxes3d); - const auto num_final_det_boxes3d = - circleNMS(det_boxes3d_no_nms, config.circle_nms_dist_threshold_, final_keep_mask); - - det_boxes3d.resize(num_final_det_boxes3d); - std::size_t box_id = 0; - for (std::size_t idx = 0; idx < final_keep_mask.size(); idx++) { - if (final_keep_mask[idx]) { - det_boxes3d[box_id] = det_boxes3d_no_nms[idx]; - box_id++; - } - } - // std::copy_if(det_boxes3d_no_nms.begin(), det_boxes3d_no_nms.end(), final_keep_mask.begin(), - // det_boxes3d.begin(), is_kept()); -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware diff --git a/perception/lidar_centerpoint_tvm/lib/preprocess/generate_features.cpp b/perception/lidar_centerpoint_tvm/lib/preprocess/generate_features.cpp deleted file mode 100644 index 9b98adc2def4e..0000000000000 --- a/perception/lidar_centerpoint_tvm/lib/preprocess/generate_features.cpp +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/preprocess/generate_features.hpp" - -#include - -#include - -namespace -{ -const std::size_t THREAD_NUM_VFE = 4; -} // namespace - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -void generateFeatures_worker( - const std::vector & voxel_features, const std::vector & voxel_num_points, - const std::vector & coords, const std::size_t num_voxels, - const CenterPointConfig & config, std::vector & features, std::size_t thread_idx, - std::size_t pillars_per_thread) -{ - for (std::size_t idx = 0; idx < pillars_per_thread; idx++) { - std::size_t pillar_idx = thread_idx * pillars_per_thread + idx; - if (pillar_idx >= num_voxels) return; - - // voxel/pillar information - float points_sum[3] = {0.0, 0.0, 0.0}; // sum of x, y, z in the voxel - int32_t coordinate[3] = { - coords[pillar_idx * 3], coords[pillar_idx * 3 + 1], - coords[pillar_idx * 3 + 2]}; // 3D position(z,y,x) of the voxel - std::size_t points_count = voxel_num_points[pillar_idx]; // number of points in the voxel - - for (std::size_t i = 0; i < config.max_point_in_voxel_size_; i++) { - std::size_t point_idx = - pillar_idx * config.max_point_in_voxel_size_ * config.point_feature_size_ + - i * config.point_feature_size_; - for (std::size_t j = 0; j < config.point_feature_size_; j++) { - // point (x, y, z, intensity) - if (i < points_count && j < 3) points_sum[j] += voxel_features[point_idx + j]; - } - } - - // calculate voxel mean - float mean[3] = { - points_sum[0] / points_count, points_sum[1] / points_count, points_sum[2] / points_count}; - // calculate offset - float x_offset = coordinate[2] * config.voxel_size_x_ + config.offset_x_; - float y_offset = coordinate[1] * config.voxel_size_y_ + config.offset_y_; - // float z_offset = coordinate[0] * config.voxel_size_z_ + config.offset_z_; - - // build the encoder_in_features - for (std::size_t i = 0; i < config.max_point_in_voxel_size_; i++) { - // feature_idx - std::size_t feature_idx = - pillar_idx * config.max_point_in_voxel_size_ * config.encoder_in_feature_size_ + - i * config.encoder_in_feature_size_; - std::size_t point_idx = - pillar_idx * config.max_point_in_voxel_size_ * config.point_feature_size_ + - i * config.point_feature_size_; - if (i < points_count) { - features[feature_idx + 0] = voxel_features[point_idx + 0]; - features[feature_idx + 1] = voxel_features[point_idx + 1]; - features[feature_idx + 2] = voxel_features[point_idx + 2]; - features[feature_idx + 3] = voxel_features[point_idx + 3]; - // feature-mean - features[feature_idx + 4] = voxel_features[point_idx + 0] - mean[0]; - features[feature_idx + 5] = voxel_features[point_idx + 1] - mean[1]; - features[feature_idx + 6] = voxel_features[point_idx + 2] - mean[2]; - // feature-offset - features[feature_idx + 7] = voxel_features[point_idx + 0] - x_offset; - features[feature_idx + 8] = voxel_features[point_idx + 1] - y_offset; - - } else { - features[feature_idx + 0] = 0; - features[feature_idx + 1] = 0; - features[feature_idx + 2] = 0; - features[feature_idx + 3] = 0; - // feature-mean - features[feature_idx + 4] = 0; - features[feature_idx + 5] = 0; - features[feature_idx + 6] = 0; - // feature-offset - features[feature_idx + 7] = 0; - features[feature_idx + 8] = 0; - } - } - } -} - -// cspell: ignore divup -void generateFeatures( - const std::vector & voxel_features, const std::vector & voxel_num_points, - const std::vector & coords, const std::size_t num_voxels, - const CenterPointConfig & config, std::vector & features) -{ - // voxel_features (float): max_voxel_size*max_point_in_voxel_size*point_feature_size - // voxel_num_points (int): max_voxel_size - // coords (int): max_voxel_size*point_dim_size - std::vector threadPool; - std::size_t pillars_per_thread = divup(config.max_voxel_size_, THREAD_NUM_VFE); - for (std::size_t idx = 0; idx < THREAD_NUM_VFE; idx++) { - std::thread worker( - generateFeatures_worker, std::ref(voxel_features), std::ref(voxel_num_points), - std::ref(coords), num_voxels, std::ref(config), std::ref(features), idx, pillars_per_thread); - threadPool.push_back(std::move(worker)); - } - for (std::size_t idx = 0; idx < THREAD_NUM_VFE; idx++) { - threadPool[idx].join(); - } -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware diff --git a/perception/lidar_centerpoint_tvm/lib/preprocess/voxel_generator.cpp b/perception/lidar_centerpoint_tvm/lib/preprocess/voxel_generator.cpp deleted file mode 100644 index 11ae8e7064b1c..0000000000000 --- a/perception/lidar_centerpoint_tvm/lib/preprocess/voxel_generator.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/preprocess/voxel_generator.hpp" - -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -VoxelGeneratorTemplate::VoxelGeneratorTemplate( - const DensificationParam & param, const CenterPointConfig & config) -: config_(config) -{ - pd_ptr_ = std::make_unique(param); - range_[0] = config.range_min_x_; - range_[1] = config.range_min_y_; - range_[2] = config.range_min_z_; - range_[3] = config.range_max_x_; - range_[4] = config.range_max_y_; - range_[5] = config.range_max_z_; - grid_size_[0] = config.grid_size_x_; - grid_size_[1] = config.grid_size_y_; - grid_size_[2] = config.grid_size_z_; - recip_voxel_size_[0] = 1 / config.voxel_size_x_; - recip_voxel_size_[1] = 1 / config.voxel_size_y_; - recip_voxel_size_[2] = 1 / config.voxel_size_z_; -} - -bool VoxelGeneratorTemplate::enqueuePointCloud( - const sensor_msgs::msg::PointCloud2 & input_pointcloud_msg, const tf2_ros::Buffer & tf_buffer) -{ - return pd_ptr_->enqueuePointCloud(input_pointcloud_msg, tf_buffer); -} - -std::size_t VoxelGenerator::pointsToVoxels( - std::vector & voxels, std::vector & coordinates, - std::vector & num_points_per_voxel) -{ - // voxels (float): (max_voxel_size * max_point_in_voxel_size * point_feature_size), point info in - // each voxel coordinates (int): (max_voxel_size * point_dim_size), the index from voxel to its 3D - // position num_points_per_voxel (float): (max_voxel_size), the number of points in each voxel - - const std::size_t grid_size = config_.grid_size_z_ * config_.grid_size_y_ * config_.grid_size_x_; - std::vector coord_to_voxel_idx( - grid_size, -1); // the index from 3D position to the voxel id - - std::size_t voxel_cnt = 0; // @return - std::vector point; - point.resize(config_.point_feature_size_); - std::vector coord_zyx; // record which grid the zyx coord of current point belong to - coord_zyx.resize(config_.point_dim_size_); - bool out_of_range; - std::size_t point_cnt; - int32_t c, coord_idx, voxel_idx; - Eigen::Vector3f point_current, point_past; - - for (auto pc_cache_iter = pd_ptr_->getPointCloudCacheIter(); !pd_ptr_->isCacheEnd(pc_cache_iter); - pc_cache_iter++) { - auto pc_msg = pc_cache_iter->pointcloud_msg; - auto affine_past2current = - pd_ptr_->getAffineWorldToCurrent() * pc_cache_iter->affine_past2world; - float time_lag = static_cast( - pd_ptr_->getCurrentTimestamp() - rclcpp::Time(pc_msg.header.stamp).seconds()); - - for (sensor_msgs::PointCloud2ConstIterator x_iter(pc_msg, "x"), y_iter(pc_msg, "y"), - z_iter(pc_msg, "z"); - x_iter != x_iter.end(); ++x_iter, ++y_iter, ++z_iter) { - point_past << *x_iter, *y_iter, *z_iter; - point_current = affine_past2current * point_past; - - point[0] = point_current.x(); - point[1] = point_current.y(); - point[2] = point_current.z(); - point[3] = time_lag; - - out_of_range = false; - for (std::size_t di = 0; di < config_.point_dim_size_; di++) { - c = static_cast((point[di] - range_[di]) * recip_voxel_size_[di]); - if (c < 0 || c >= grid_size_[di]) { - out_of_range = true; - break; - } - coord_zyx[config_.point_dim_size_ - di - 1] = c; - } - if (out_of_range) { - continue; - } - - coord_idx = coord_zyx[0] * config_.grid_size_y_ * config_.grid_size_x_ + - coord_zyx[1] * config_.grid_size_x_ + coord_zyx[2]; - voxel_idx = coord_to_voxel_idx[coord_idx]; - if (voxel_idx == -1) { - voxel_idx = voxel_cnt; - if (voxel_cnt >= config_.max_voxel_size_) { - continue; - } - - voxel_cnt++; - coord_to_voxel_idx[coord_idx] = voxel_idx; - for (std::size_t di = 0; di < config_.point_dim_size_; di++) { - coordinates[voxel_idx * config_.point_dim_size_ + di] = coord_zyx[di]; - } - } - - point_cnt = num_points_per_voxel[voxel_idx]; - if (point_cnt < config_.max_point_in_voxel_size_) { - for (std::size_t fi = 0; fi < config_.point_feature_size_; fi++) { - voxels - [voxel_idx * config_.max_point_in_voxel_size_ * config_.point_feature_size_ + - point_cnt * config_.point_feature_size_ + fi] = point[fi]; - } - num_points_per_voxel[voxel_idx]++; - } - } - } - - return voxel_cnt; -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware diff --git a/perception/lidar_centerpoint_tvm/lib/ros_utils.cpp b/perception/lidar_centerpoint_tvm/lib/ros_utils.cpp deleted file mode 100644 index 16d7094e1e628..0000000000000 --- a/perception/lidar_centerpoint_tvm/lib/ros_utils.cpp +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/ros_utils.hpp" - -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -using Label = autoware_perception_msgs::msg::ObjectClassification; - -void box3DToDetectedObject( - const Box3D & box3d, const std::vector & class_names, - const bool rename_car_to_truck_and_bus, const bool has_twist, - autoware_perception_msgs::msg::DetectedObject & obj) -{ - // TODO(yukke42): the value of classification confidence of DNN, not probability. - obj.existence_probability = box3d.score; - - // classification - autoware_perception_msgs::msg::ObjectClassification classification; - classification.probability = 1.0f; - if (box3d.label >= 0 && static_cast(box3d.label) < class_names.size()) { - classification.label = getSemanticType(class_names[box3d.label]); - } else { - classification.label = Label::UNKNOWN; - RCLCPP_WARN_STREAM( - rclcpp::get_logger("lidar_centerpoint"), "Unexpected label: UNKNOWN is set."); - } - - float l = box3d.length; - float w = box3d.width; - if (classification.label == Label::CAR && rename_car_to_truck_and_bus) { - // Note: object size is referred from multi_object_tracker - if ((w * l > 2.2 * 5.5) && (w * l <= 2.5 * 7.9)) { - classification.label = Label::TRUCK; - } else if (w * l > 2.5 * 7.9) { - classification.label = Label::BUS; - } - } - - if (isCarLikeVehicleLabel(classification.label)) { - obj.kinematics.orientation_availability = - autoware_perception_msgs::msg::DetectedObjectKinematics::SIGN_UNKNOWN; - } - - obj.classification.emplace_back(classification); - - // pose and shape - // mmdet3d yaw format to ros yaw format - float yaw = -box3d.yaw - autoware_universe_utils::pi / 2; - obj.kinematics.pose_with_covariance.pose.position = - autoware_universe_utils::createPoint(box3d.x, box3d.y, box3d.z); - obj.kinematics.pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw); - obj.shape.type = autoware_perception_msgs::msg::Shape::BOUNDING_BOX; - obj.shape.dimensions = - autoware_universe_utils::createTranslation(box3d.length, box3d.width, box3d.height); - - // twist - if (has_twist) { - float vel_x = box3d.vel_x; - float vel_y = box3d.vel_y; - geometry_msgs::msg::Twist twist; - twist.linear.x = std::sqrt(std::pow(vel_x, 2) + std::pow(vel_y, 2)); - twist.angular.z = 2 * (std::atan2(vel_y, vel_x) - yaw); - obj.kinematics.twist_with_covariance.twist = twist; - obj.kinematics.has_twist = has_twist; - } -} - -uint8_t getSemanticType(const std::string & class_name) -{ - if (class_name == "CAR") { - return Label::CAR; - } else if (class_name == "TRUCK") { - return Label::TRUCK; - } else if (class_name == "BUS") { - return Label::BUS; - } else if (class_name == "TRAILER") { - return Label::TRAILER; - } else if (class_name == "BICYCLE") { - return Label::BICYCLE; - } else if (class_name == "MOTORBIKE") { - return Label::MOTORCYCLE; - } else if (class_name == "PEDESTRIAN") { - return Label::PEDESTRIAN; - } else { - return Label::UNKNOWN; - } -} - -bool isCarLikeVehicleLabel(const uint8_t label) -{ - return label == Label::CAR || label == Label::TRUCK || label == Label::BUS || - label == Label::TRAILER; -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware diff --git a/perception/lidar_centerpoint_tvm/lib/utils.cpp b/perception/lidar_centerpoint_tvm/lib/utils.cpp deleted file mode 100644 index caf9cb84fa1c7..0000000000000 --- a/perception/lidar_centerpoint_tvm/lib/utils.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/utils.hpp" - -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -// cspell: ignore divup -std::size_t divup(const std::size_t a, const std::size_t b) -{ - if (a == 0) { - throw std::runtime_error("A dividend of divup isn't positive."); - } - if (b == 0) { - throw std::runtime_error("A divisor of divup isn't positive."); - } - - return (a + b - 1) / b; -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware diff --git a/perception/lidar_centerpoint_tvm/package.xml b/perception/lidar_centerpoint_tvm/package.xml deleted file mode 100644 index c71a27e4a1677..0000000000000 --- a/perception/lidar_centerpoint_tvm/package.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - lidar_centerpoint_tvm - 0.1.0 - lidar_centerpoint_tvm - Liu Zhengfei - Xinyu Wang - Apache 2.0 - - ament_cmake_auto - autoware_cmake - - autoware_perception_msgs - autoware_universe_utils - pcl_ros - rclcpp - rclcpp_components - tf2_eigen - tf2_geometry_msgs - tf2_sensor_msgs - tvm_utility - tvm_vendor - - ament_cmake_gtest - ament_lint_auto - autoware_lint_common - - - ament_cmake - - diff --git a/perception/lidar_centerpoint_tvm/scripts/lidar_centerpoint_visualizer.py b/perception/lidar_centerpoint_tvm/scripts/lidar_centerpoint_visualizer.py deleted file mode 100755 index 5a1135379615f..0000000000000 --- a/perception/lidar_centerpoint_tvm/scripts/lidar_centerpoint_visualizer.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -# Copyright 2022 TIER IV, Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import time - -import open3d as o3d -import rclpy -from rclpy.node import Node - - -def main(args=None): - rclpy.init(args=args) - - node = Node("lidar_centerpoint_visualizer") - node.declare_parameter("pcd_path", rclpy.Parameter.Type.STRING) - node.declare_parameter("detections_path", rclpy.Parameter.Type.STRING) - - pcd_path = node.get_parameter("pcd_path").get_parameter_value().string_value - detections_path = node.get_parameter("detections_path").get_parameter_value().string_value - - while not os.path.exists(pcd_path) and not os.path.exists(detections_path): - time.sleep(1.0) - - if not rclpy.ok(): - rclpy.shutdown() - return - - mesh = o3d.io.read_triangle_mesh(detections_path) - pcd = o3d.io.read_point_cloud(pcd_path) - - mesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=1.0, origin=[0, 0, 0]) - - detection_lines = o3d.geometry.LineSet.create_from_triangle_mesh(mesh) - detection_lines.paint_uniform_color([1.0, 0.0, 1.0]) - - o3d.visualization.draw_geometries([mesh_frame, pcd, detection_lines]) - - rclpy.shutdown() - - -if __name__ == "__main__": - main() diff --git a/perception/lidar_centerpoint_tvm/src/node.cpp b/perception/lidar_centerpoint_tvm/src/node.cpp deleted file mode 100644 index fec19a479a89f..0000000000000 --- a/perception/lidar_centerpoint_tvm/src/node.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2021-2022 AutoCore Ltd., TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/node.hpp" - -#include -#include -#include -#include -#include - -#ifdef ROS_DISTRO_GALACTIC -#include -#else -#include -#endif - -#include -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -LidarCenterPointTVMNode::LidarCenterPointTVMNode(const rclcpp::NodeOptions & node_options) -: Node("lidar_centerpoint_tvm", node_options), tf_buffer_(this->get_clock()) -{ - const float score_threshold = - static_cast(this->declare_parameter("score_threshold", 0.35)); - const float circle_nms_dist_threshold = - static_cast(this->declare_parameter("circle_nms_dist_threshold", 1.5)); - const float yaw_norm_threshold = - static_cast(this->declare_parameter("yaw_norm_threshold", 0.0)); - const std::string densification_world_frame_id = - this->declare_parameter("densification_world_frame_id", "map"); - const int32_t densification_num_past_frames = - this->declare_parameter("densification_num_past_frames", 1); - - class_names_ = this->declare_parameter>("class_names"); - rename_car_to_truck_and_bus_ = this->declare_parameter("rename_car_to_truck_and_bus", false); - has_twist_ = this->declare_parameter("has_twist", false); - - const std::size_t point_feature_size = - static_cast(this->declare_parameter("point_feature_size")); - const std::size_t max_voxel_size = - static_cast(this->declare_parameter("max_voxel_size")); - const auto point_cloud_range = this->declare_parameter>("point_cloud_range"); - const auto voxel_size = this->declare_parameter>("voxel_size"); - const std::size_t downsample_factor = - static_cast(this->declare_parameter("downsample_factor")); - const std::size_t encoder_in_feature_size = - static_cast(this->declare_parameter("encoder_in_feature_size")); - const auto data_path = this->declare_parameter("data_path"); - - DensificationParam densification_param( - densification_world_frame_id, densification_num_past_frames); - - if (point_cloud_range.size() != 6) { - RCLCPP_WARN_STREAM( - rclcpp::get_logger("lidar_centerpoint"), - "The size of point_cloud_range != 6: use the default parameters."); - } - if (voxel_size.size() != 3) { - RCLCPP_WARN_STREAM( - rclcpp::get_logger("lidar_centerpoint"), - "The size of voxel_size != 3: use the default parameters."); - } - CenterPointConfig config( - class_names_.size(), point_feature_size, max_voxel_size, point_cloud_range, voxel_size, - downsample_factor, encoder_in_feature_size, score_threshold, circle_nms_dist_threshold, - yaw_norm_threshold); - detector_ptr_ = std::make_unique(densification_param, config, data_path); - - pointcloud_sub_ = this->create_subscription( - "~/input/pointcloud", rclcpp::SensorDataQoS{}.keep_last(1), - std::bind(&LidarCenterPointTVMNode::pointCloudCallback, this, std::placeholders::_1)); - objects_pub_ = this->create_publisher( - "~/output/objects", rclcpp::QoS{1}); - - // initialize debug tool - { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; - stop_watch_ptr_ = std::make_unique>(); - debug_publisher_ptr_ = std::make_unique(this, "lidar_centerpoint_tvm"); - stop_watch_ptr_->tic("cyclic_time"); - stop_watch_ptr_->tic("processing_time"); - } -} - -void LidarCenterPointTVMNode::pointCloudCallback( - const sensor_msgs::msg::PointCloud2::ConstSharedPtr input_pointcloud_msg) -{ - const auto objects_sub_count = - objects_pub_->get_subscription_count() + objects_pub_->get_intra_process_subscription_count(); - if (objects_sub_count < 1) { - return; - } - - if (stop_watch_ptr_) { - stop_watch_ptr_->toc("processing_time", true); - } - - std::vector det_boxes3d; - bool is_success = detector_ptr_->detect(*input_pointcloud_msg, tf_buffer_, det_boxes3d); - if (!is_success) { - return; - } - - autoware_perception_msgs::msg::DetectedObjects output_msg; - output_msg.header = input_pointcloud_msg->header; - for (const auto & box3d : det_boxes3d) { - autoware_perception_msgs::msg::DetectedObject obj; - box3DToDetectedObject(box3d, class_names_, rename_car_to_truck_and_bus_, has_twist_, obj); - output_msg.objects.emplace_back(obj); - } - - if (objects_sub_count > 0) { - objects_pub_->publish(output_msg); - } - - // add processing time for debug - if (debug_publisher_ptr_ && stop_watch_ptr_) { - const double cyclic_time_ms = stop_watch_ptr_->toc("cyclic_time", true); - const double processing_time_ms = stop_watch_ptr_->toc("processing_time", true); - debug_publisher_ptr_->publish( - "debug/cyclic_time_ms", cyclic_time_ms); - debug_publisher_ptr_->publish( - "debug/processing_time_ms", processing_time_ms); - } -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#include -RCLCPP_COMPONENTS_REGISTER_NODE( - autoware::perception::lidar_centerpoint_tvm::LidarCenterPointTVMNode) diff --git a/perception/lidar_centerpoint_tvm/src/single_inference_node.cpp b/perception/lidar_centerpoint_tvm/src/single_inference_node.cpp deleted file mode 100644 index 224664e51ea2d..0000000000000 --- a/perception/lidar_centerpoint_tvm/src/single_inference_node.cpp +++ /dev/null @@ -1,239 +0,0 @@ -// Copyright 2022 TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "lidar_centerpoint_tvm/single_inference_node.hpp" - -#include -#include -#include -#include -#include - -#include - -#include -#include -#ifdef ROS_DISTRO_GALACTIC -#include -#else -#include -#endif - -#include -#include -#include - -namespace autoware -{ -namespace perception -{ -namespace lidar_centerpoint_tvm -{ - -SingleInferenceLidarCenterPointNode::SingleInferenceLidarCenterPointNode( - const rclcpp::NodeOptions & node_options) -: Node("lidar_center_point_tvm", node_options), tf_buffer_(this->get_clock()) -{ - const float score_threshold = - static_cast(this->declare_parameter("score_threshold", 0.35)); - const float circle_nms_dist_threshold = - static_cast(this->declare_parameter("circle_nms_dist_threshold", 1.5)); - const float yaw_norm_threshold = - static_cast(this->declare_parameter("yaw_norm_threshold", 0.0)); - const std::string densification_world_frame_id = - this->declare_parameter("densification_world_frame_id", "map"); - const int densification_num_past_frames = - this->declare_parameter("densification_num_past_frames", 0); - - class_names_ = this->declare_parameter>("class_names"); - has_twist_ = this->declare_parameter("has_twist", false); - const std::size_t point_feature_size = - static_cast(this->declare_parameter("point_feature_size")); - const std::size_t max_voxel_size = - static_cast(this->declare_parameter("max_voxel_size")); - const auto point_cloud_range = this->declare_parameter>("point_cloud_range"); - const auto voxel_size = this->declare_parameter>("voxel_size"); - const std::size_t downsample_factor = - static_cast(this->declare_parameter("downsample_factor")); - const std::size_t encoder_in_feature_size = - static_cast(this->declare_parameter("encoder_in_feature_size")); - const auto pcd_path = this->declare_parameter("pcd_path"); - const auto detections_path = this->declare_parameter("detections_path"); - const auto data_path = this->declare_parameter("data_path"); - DensificationParam densification_param( - densification_world_frame_id, densification_num_past_frames); - - if (point_cloud_range.size() != 6) { - RCLCPP_WARN_STREAM( - rclcpp::get_logger("single_inference_lidar_centerpoint"), - "The size of point_cloud_range != 6: use the default parameters."); - } - if (voxel_size.size() != 3) { - RCLCPP_WARN_STREAM( - rclcpp::get_logger("single_inference_lidar_centerpoint"), - "The size of voxel_size != 3: use the default parameters."); - } - CenterPointConfig config( - class_names_.size(), point_feature_size, max_voxel_size, point_cloud_range, voxel_size, - downsample_factor, encoder_in_feature_size, score_threshold, circle_nms_dist_threshold, - yaw_norm_threshold); - detector_ptr_ = std::make_unique(densification_param, config, data_path); - - detect(pcd_path, detections_path); - exit(0); -} - -std::vector SingleInferenceLidarCenterPointNode::getVertices( - const autoware_perception_msgs::msg::Shape & shape, const Eigen::Affine3d & pose) const -{ - std::vector vertices; - Eigen::Vector3d vertex; - - vertex.x() = -shape.dimensions.x / 2.0; - vertex.y() = -shape.dimensions.y / 2.0; - vertex.z() = shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - vertex.x() = -shape.dimensions.x / 2.0; - vertex.y() = shape.dimensions.y / 2.0; - vertex.z() = shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - vertex.x() = -shape.dimensions.x / 2.0; - vertex.y() = shape.dimensions.y / 2.0; - vertex.z() = -shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - vertex.x() = shape.dimensions.x / 2.0; - vertex.y() = shape.dimensions.y / 2.0; - vertex.z() = shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - vertex.x() = shape.dimensions.x / 2.0; - vertex.y() = shape.dimensions.y / 2.0; - vertex.z() = -shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - vertex.x() = shape.dimensions.x / 2.0; - vertex.y() = -shape.dimensions.y / 2.0; - vertex.z() = shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - vertex.x() = shape.dimensions.x / 2.0; - vertex.y() = -shape.dimensions.y / 2.0; - vertex.z() = -shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - vertex.x() = -shape.dimensions.x / 2.0; - vertex.y() = -shape.dimensions.y / 2.0; - vertex.z() = -shape.dimensions.z / 2.0; - vertices.push_back(pose * vertex); - - return vertices; -} - -void SingleInferenceLidarCenterPointNode::detect( - const std::string & pcd_path, const std::string & detections_path) -{ - sensor_msgs::msg::PointCloud2 msg; - pcl::PointCloud::Ptr pc_ptr(new pcl::PointCloud()); - - pcl::io::loadPCDFile(pcd_path, *pc_ptr); - pcl::toROSMsg(*pc_ptr, msg); - msg.header.frame_id = "lidar_frame"; - - std::vector det_boxes3d; - bool is_success = detector_ptr_->detect(msg, tf_buffer_, det_boxes3d); - if (!is_success) { - return; - } - - autoware_perception_msgs::msg::DetectedObjects output_msg; - output_msg.header = msg.header; - for (const auto & box3d : det_boxes3d) { - autoware_perception_msgs::msg::DetectedObject obj; - box3DToDetectedObject(box3d, class_names_, rename_car_to_truck_and_bus_, has_twist_, obj); - output_msg.objects.emplace_back(obj); - } - - dumpDetectionsAsMesh(output_msg, detections_path); - - RCLCPP_INFO( - rclcpp::get_logger("single_inference_lidar_centerpoint_tvm"), - "The detection results were saved as meshes in %s", detections_path.c_str()); -} - -void SingleInferenceLidarCenterPointNode::dumpDetectionsAsMesh( - const autoware_perception_msgs::msg::DetectedObjects & objects_msg, - const std::string & output_path) const -{ - std::ofstream ofs(output_path, std::ofstream::out); - std::stringstream vertices_stream; - std::stringstream faces_stream; - int index = 0; - int num_detections = static_cast(objects_msg.objects.size()); - - ofs << "ply" << std::endl; - ofs << "format ascii 1.0" << std::endl; - ofs << "comment created by lidar_centerpoint" << std::endl; - ofs << "element vertex " << 8 * num_detections << std::endl; - ofs << "property float x" << std::endl; - ofs << "property float y" << std::endl; - ofs << "property float z" << std::endl; - ofs << "element face " << 12 * num_detections << std::endl; - ofs << "property list uchar uint vertex_indices" << std::endl; - ofs << "end_header" << std::endl; - - auto streamFace = [&faces_stream](int v1, int v2, int v3) { - faces_stream << std::to_string(3) << " " << std::to_string(v1) << " " << std::to_string(v2) - << " " << std::to_string(v3) << std::endl; - }; - - for (const auto & object : objects_msg.objects) { - Eigen::Affine3d pose_affine; - tf2::fromMsg(object.kinematics.pose_with_covariance.pose, pose_affine); - - std::vector vertices = getVertices(object.shape, pose_affine); - - for (const auto & vertex : vertices) { - vertices_stream << vertex.x() << " " << vertex.y() << " " << vertex.z() << std::endl; - } - - streamFace(index + 1, index + 3, index + 4); - streamFace(index + 3, index + 5, index + 6); - streamFace(index + 0, index + 7, index + 5); - streamFace(index + 7, index + 2, index + 4); - streamFace(index + 5, index + 3, index + 1); - streamFace(index + 7, index + 0, index + 2); - streamFace(index + 2, index + 1, index + 4); - streamFace(index + 4, index + 3, index + 6); - streamFace(index + 5, index + 7, index + 6); - streamFace(index + 6, index + 7, index + 4); - streamFace(index + 0, index + 5, index + 1); - index += 8; - } - - ofs << vertices_stream.str(); - ofs << faces_stream.str(); - - ofs.close(); -} - -} // namespace lidar_centerpoint_tvm -} // namespace perception -} // namespace autoware - -#include -RCLCPP_COMPONENTS_REGISTER_NODE( - autoware::perception::lidar_centerpoint_tvm::SingleInferenceLidarCenterPointNode) diff --git a/perception/lidar_transfusion/include/lidar_transfusion/lidar_transfusion_node.hpp b/perception/lidar_transfusion/include/lidar_transfusion/lidar_transfusion_node.hpp index d57405b1c3b7b..a82013fac6ce7 100644 --- a/perception/lidar_transfusion/include/lidar_transfusion/lidar_transfusion_node.hpp +++ b/perception/lidar_transfusion/include/lidar_transfusion/lidar_transfusion_node.hpp @@ -63,10 +63,10 @@ class LIDAR_TRANSFUSION_PUBLIC LidarTransfusionNode : public rclcpp::Node std::unique_ptr detector_ptr_{nullptr}; // debugger - std::unique_ptr> stop_watch_ptr_{ + std::unique_ptr> stop_watch_ptr_{ nullptr}; - std::unique_ptr debug_publisher_ptr_{nullptr}; - std::unique_ptr published_time_pub_{nullptr}; + std::unique_ptr debug_publisher_ptr_{nullptr}; + std::unique_ptr published_time_pub_{nullptr}; }; } // namespace lidar_transfusion diff --git a/perception/lidar_transfusion/include/lidar_transfusion/transfusion_trt.hpp b/perception/lidar_transfusion/include/lidar_transfusion/transfusion_trt.hpp index d454932935b64..0a9ea413dc30d 100644 --- a/perception/lidar_transfusion/include/lidar_transfusion/transfusion_trt.hpp +++ b/perception/lidar_transfusion/include/lidar_transfusion/transfusion_trt.hpp @@ -83,7 +83,7 @@ class LIDAR_TRANSFUSION_PUBLIC TransfusionTRT std::unique_ptr network_trt_ptr_{nullptr}; std::unique_ptr vg_ptr_{nullptr}; - std::unique_ptr> stop_watch_ptr_{ + std::unique_ptr> stop_watch_ptr_{ nullptr}; std::unique_ptr pre_ptr_{nullptr}; std::unique_ptr post_ptr_{nullptr}; diff --git a/perception/lidar_transfusion/lib/postprocess/non_maximum_suppression.cpp b/perception/lidar_transfusion/lib/postprocess/non_maximum_suppression.cpp index a8b4ddbfd5db9..dd12c52970d38 100644 --- a/perception/lidar_transfusion/lib/postprocess/non_maximum_suppression.cpp +++ b/perception/lidar_transfusion/lib/postprocess/non_maximum_suppression.cpp @@ -49,7 +49,7 @@ bool NonMaximumSuppression::isTargetPairObject( } const auto search_sqr_dist_2d = params_.search_distance_2d_ * params_.search_distance_2d_; - const auto sqr_dist_2d = autoware_universe_utils::calcSquaredDistance2d( + const auto sqr_dist_2d = autoware::universe_utils::calcSquaredDistance2d( object_recognition_utils::getPose(object1), object_recognition_utils::getPose(object2)); return sqr_dist_2d <= search_sqr_dist_2d; } diff --git a/perception/lidar_transfusion/lib/ros_utils.cpp b/perception/lidar_transfusion/lib/ros_utils.cpp index cdfa693af2219..ef5c45c339b64 100644 --- a/perception/lidar_transfusion/lib/ros_utils.cpp +++ b/perception/lidar_transfusion/lib/ros_utils.cpp @@ -49,14 +49,14 @@ void box3DToDetectedObject( // pose and shape // mmdet3d yaw format to ros yaw format - float yaw = box3d.yaw + autoware_universe_utils::pi / 2; + float yaw = box3d.yaw + autoware::universe_utils::pi / 2; obj.kinematics.pose_with_covariance.pose.position = - autoware_universe_utils::createPoint(box3d.x, box3d.y, box3d.z); + autoware::universe_utils::createPoint(box3d.x, box3d.y, box3d.z); obj.kinematics.pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw); + autoware::universe_utils::createQuaternionFromYaw(yaw); obj.shape.type = autoware_perception_msgs::msg::Shape::BOUNDING_BOX; obj.shape.dimensions = - autoware_universe_utils::createTranslation(box3d.length, box3d.width, box3d.height); + autoware::universe_utils::createTranslation(box3d.length, box3d.width, box3d.height); } uint8_t getSemanticType(const std::string & class_name) diff --git a/perception/lidar_transfusion/lib/transfusion_trt.cpp b/perception/lidar_transfusion/lib/transfusion_trt.cpp index 4a8416a16e18c..d940b83c12cb4 100644 --- a/perception/lidar_transfusion/lib/transfusion_trt.cpp +++ b/perception/lidar_transfusion/lib/transfusion_trt.cpp @@ -38,7 +38,7 @@ TransfusionTRT::TransfusionTRT( network_param.onnx_path(), network_param.engine_path(), network_param.trt_precision()); vg_ptr_ = std::make_unique(densification_param, config_, stream_); stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); stop_watch_ptr_->tic("processing/inner"); initPtr(); diff --git a/perception/lidar_transfusion/src/lidar_transfusion_node.cpp b/perception/lidar_transfusion/src/lidar_transfusion_node.cpp index 07b19f1db51f8..e3ea6b3780de8 100644 --- a/perception/lidar_transfusion/src/lidar_transfusion_node.cpp +++ b/perception/lidar_transfusion/src/lidar_transfusion_node.cpp @@ -94,12 +94,12 @@ LidarTransfusionNode::LidarTransfusionNode(const rclcpp::NodeOptions & options) objects_pub_ = this->create_publisher( "~/output/objects", rclcpp::QoS(1)); - published_time_pub_ = std::make_unique(this); + published_time_pub_ = std::make_unique(this); // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ptr_ = std::make_unique(this, this->get_name()); stop_watch_ptr_->tic("cyclic"); diff --git a/perception/multi_object_tracker/include/multi_object_tracker/data_association/data_association.hpp b/perception/multi_object_tracker/include/multi_object_tracker/data_association/data_association.hpp index 56f4c3ac45e52..c30423db02c26 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/data_association/data_association.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/data_association/data_association.hpp @@ -19,19 +19,20 @@ #ifndef MULTI_OBJECT_TRACKER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ #define MULTI_OBJECT_TRACKER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ -#include -#include -#include -#include - #define EIGEN_MPL2_ONLY + #include "multi_object_tracker/data_association/solver/gnn_solver.hpp" #include "multi_object_tracker/tracker/tracker.hpp" #include #include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" + +#include +#include +#include +#include class DataAssociation { diff --git a/perception/multi_object_tracker/include/multi_object_tracker/debugger/debug_object.hpp b/perception/multi_object_tracker/include/multi_object_tracker/debugger/debug_object.hpp index 7c1b814258bcf..08c9eb975d8e6 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/debugger/debug_object.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/debugger/debug_object.hpp @@ -15,15 +15,15 @@ #ifndef MULTI_OBJECT_TRACKER__DEBUGGER__DEBUG_OBJECT_HPP_ #define MULTI_OBJECT_TRACKER__DEBUGGER__DEBUG_OBJECT_HPP_ +#include "autoware/universe_utils/ros/uuid_helper.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" -#include #include -#include "unique_identifier_msgs/msg/uuid.hpp" -#include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include +#include #include #include diff --git a/perception/multi_object_tracker/include/multi_object_tracker/debugger/debugger.hpp b/perception/multi_object_tracker/include/multi_object_tracker/debugger/debugger.hpp index 08d36c80d4cf8..a1c516147b220 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/debugger/debugger.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/debugger/debugger.hpp @@ -15,16 +15,16 @@ #ifndef MULTI_OBJECT_TRACKER__DEBUGGER__DEBUGGER_HPP_ #define MULTI_OBJECT_TRACKER__DEBUGGER__DEBUGGER_HPP_ +#include "autoware/universe_utils/ros/debug_publisher.hpp" +#include "autoware/universe_utils/ros/published_time_publisher.hpp" #include "multi_object_tracker/debugger/debug_object.hpp" -#include -#include #include #include #include -#include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include #include @@ -56,7 +56,7 @@ class TrackerDebugger rclcpp::Node & node_; rclcpp::Publisher::SharedPtr debug_tentative_objects_pub_; - std::unique_ptr processing_time_publisher_; + std::unique_ptr processing_time_publisher_; rclcpp::Publisher::SharedPtr debug_objects_markers_pub_; diagnostic_updater::Updater diagnostic_updater_; diff --git a/perception/multi_object_tracker/include/multi_object_tracker/multi_object_tracker_core.hpp b/perception/multi_object_tracker/include/multi_object_tracker/multi_object_tracker_core.hpp index b24eadd586e73..aff3cbd00eabe 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/multi_object_tracker_core.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/multi_object_tracker_core.hpp @@ -27,8 +27,8 @@ #include -#include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include #include @@ -73,7 +73,7 @@ class MultiObjectTracker : public rclcpp::Node // debugger std::unique_ptr debugger_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; // publish timer rclcpp::TimerBase::SharedPtr publish_timer_; diff --git a/perception/multi_object_tracker/include/multi_object_tracker/processor/processor.hpp b/perception/multi_object_tracker/include/multi_object_tracker/processor/processor.hpp index b2f5f41c81f0a..6d0dbcd036e53 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/processor/processor.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/processor/processor.hpp @@ -19,8 +19,8 @@ #include -#include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include #include diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/bicycle_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/bicycle_tracker.hpp index 36176b8202e72..63ad496b70ed9 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/bicycle_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/bicycle_tracker.hpp @@ -19,10 +19,10 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__BICYCLE_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__BICYCLE_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" #include "multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp" - -#include +#include "multi_object_tracker/tracker/object_model/object_model.hpp" class BicycleTracker : public Tracker { @@ -30,13 +30,7 @@ class BicycleTracker : public Tracker autoware_perception_msgs::msg::DetectedObject object_; rclcpp::Logger logger_; -private: - struct EkfParams - { - double r_cov_x; - double r_cov_y; - double r_cov_yaw; - } ekf_params_; + object_model::ObjectModel object_model_ = object_model::bicycle; double z_; @@ -48,9 +42,7 @@ class BicycleTracker : public Tracker }; BoundingBox bounding_box_; -private: BicycleMotionModel motion_model_; - const char DIM = motion_model_.DIM; using IDX = BicycleMotionModel::IDX; public: @@ -63,15 +55,16 @@ class BicycleTracker : public Tracker bool measure( const autoware_perception_msgs::msg::DetectedObject & object, const rclcpp::Time & time, const geometry_msgs::msg::Transform & self_transform) override; - autoware_perception_msgs::msg::DetectedObject getUpdatingObject( - const autoware_perception_msgs::msg::DetectedObject & object, - const geometry_msgs::msg::Transform & self_transform); bool measureWithPose(const autoware_perception_msgs::msg::DetectedObject & object); bool measureWithShape(const autoware_perception_msgs::msg::DetectedObject & object); bool getTrackedObject( const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const override; - virtual ~BicycleTracker() {} + +private: + autoware_perception_msgs::msg::DetectedObject getUpdatingObject( + const autoware_perception_msgs::msg::DetectedObject & object, + const geometry_msgs::msg::Transform & self_transform) const; }; #endif // MULTI_OBJECT_TRACKER__TRACKER__MODEL__BICYCLE_TRACKER_HPP_ diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/big_vehicle_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/big_vehicle_tracker.hpp index 8eec03c5dc847..7112e6a08ade1 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/big_vehicle_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/big_vehicle_tracker.hpp @@ -19,10 +19,10 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__BIG_VEHICLE_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__BIG_VEHICLE_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" #include "multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp" - -#include +#include "multi_object_tracker/tracker/object_model/object_model.hpp" class BigVehicleTracker : public Tracker { @@ -30,14 +30,8 @@ class BigVehicleTracker : public Tracker autoware_perception_msgs::msg::DetectedObject object_; rclcpp::Logger logger_; -private: - struct EkfParams - { - double r_cov_x; - double r_cov_y; - double r_cov_yaw; - double r_cov_vel; - } ekf_params_; + object_model::ObjectModel object_model_ = object_model::big_vehicle; + double velocity_deviation_threshold_; double z_; @@ -51,9 +45,7 @@ class BigVehicleTracker : public Tracker BoundingBox bounding_box_; Eigen::Vector2d tracking_offset_; -private: BicycleMotionModel motion_model_; - const char DIM = motion_model_.DIM; using IDX = BicycleMotionModel::IDX; public: @@ -66,15 +58,16 @@ class BigVehicleTracker : public Tracker bool measure( const autoware_perception_msgs::msg::DetectedObject & object, const rclcpp::Time & time, const geometry_msgs::msg::Transform & self_transform) override; - autoware_perception_msgs::msg::DetectedObject getUpdatingObject( - const autoware_perception_msgs::msg::DetectedObject & object, - const geometry_msgs::msg::Transform & self_transform); bool measureWithPose(const autoware_perception_msgs::msg::DetectedObject & object); bool measureWithShape(const autoware_perception_msgs::msg::DetectedObject & object); bool getTrackedObject( const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const override; - virtual ~BigVehicleTracker() {} + +private: + autoware_perception_msgs::msg::DetectedObject getUpdatingObject( + const autoware_perception_msgs::msg::DetectedObject & object, + const geometry_msgs::msg::Transform & self_transform); }; #endif // MULTI_OBJECT_TRACKER__TRACKER__MODEL__BIG_VEHICLE_TRACKER_HPP_ diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/multiple_vehicle_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/multiple_vehicle_tracker.hpp index b3d088da54721..75aec0b06d6b8 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/multiple_vehicle_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/multiple_vehicle_tracker.hpp @@ -19,11 +19,11 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__MULTIPLE_VEHICLE_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__MULTIPLE_VEHICLE_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/model/big_vehicle_tracker.hpp" #include "multi_object_tracker/tracker/model/normal_vehicle_tracker.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" -#include #include class MultipleVehicleTracker : public Tracker diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/normal_vehicle_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/normal_vehicle_tracker.hpp index 107a3ef194afb..1165cecab258b 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/normal_vehicle_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/normal_vehicle_tracker.hpp @@ -19,10 +19,10 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__NORMAL_VEHICLE_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__NORMAL_VEHICLE_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" #include "multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp" - -#include +#include "multi_object_tracker/tracker/object_model/object_model.hpp" class NormalVehicleTracker : public Tracker { @@ -30,14 +30,8 @@ class NormalVehicleTracker : public Tracker autoware_perception_msgs::msg::DetectedObject object_; rclcpp::Logger logger_; -private: - struct EkfParams - { - double r_cov_x; - double r_cov_y; - double r_cov_yaw; - double r_cov_vel; - } ekf_params_; + object_model::ObjectModel object_model_ = object_model::normal_vehicle; + double velocity_deviation_threshold_; double z_; @@ -51,9 +45,7 @@ class NormalVehicleTracker : public Tracker BoundingBox bounding_box_; Eigen::Vector2d tracking_offset_; -private: BicycleMotionModel motion_model_; - const char DIM = motion_model_.DIM; using IDX = BicycleMotionModel::IDX; public: @@ -66,15 +58,16 @@ class NormalVehicleTracker : public Tracker bool measure( const autoware_perception_msgs::msg::DetectedObject & object, const rclcpp::Time & time, const geometry_msgs::msg::Transform & self_transform) override; - autoware_perception_msgs::msg::DetectedObject getUpdatingObject( - const autoware_perception_msgs::msg::DetectedObject & object, - const geometry_msgs::msg::Transform & self_transform); bool measureWithPose(const autoware_perception_msgs::msg::DetectedObject & object); bool measureWithShape(const autoware_perception_msgs::msg::DetectedObject & object); bool getTrackedObject( const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const override; - virtual ~NormalVehicleTracker() {} + +private: + autoware_perception_msgs::msg::DetectedObject getUpdatingObject( + const autoware_perception_msgs::msg::DetectedObject & object, + const geometry_msgs::msg::Transform & self_transform); }; #endif // MULTI_OBJECT_TRACKER__TRACKER__MODEL__NORMAL_VEHICLE_TRACKER_HPP_ diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pass_through_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pass_through_tracker.hpp index 605b3ae462cec..cd661dab52c6e 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pass_through_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pass_through_tracker.hpp @@ -19,10 +19,9 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__PASS_THROUGH_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__PASS_THROUGH_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "tracker_base.hpp" -#include - class PassThroughTracker : public Tracker { private: @@ -43,7 +42,6 @@ class PassThroughTracker : public Tracker bool getTrackedObject( const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const override; - virtual ~PassThroughTracker() {} }; #endif // MULTI_OBJECT_TRACKER__TRACKER__MODEL__PASS_THROUGH_TRACKER_HPP_ diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_and_bicycle_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_and_bicycle_tracker.hpp index ad81c504d3719..3c3ac038b085e 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_and_bicycle_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_and_bicycle_tracker.hpp @@ -19,12 +19,11 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__PEDESTRIAN_AND_BICYCLE_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__PEDESTRIAN_AND_BICYCLE_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/model/bicycle_tracker.hpp" #include "multi_object_tracker/tracker/model/pedestrian_tracker.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" -#include - class PedestrianAndBicycleTracker : public Tracker { private: diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_tracker.hpp index e5d718c4b15ee..c5be57f656eb5 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/pedestrian_tracker.hpp @@ -19,10 +19,10 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__PEDESTRIAN_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__PEDESTRIAN_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" #include "multi_object_tracker/tracker/motion_model/ctrv_motion_model.hpp" - -#include +#include "multi_object_tracker/tracker/object_model/object_model.hpp" // cspell: ignore CTRV @@ -32,13 +32,7 @@ class PedestrianTracker : public Tracker autoware_perception_msgs::msg::DetectedObject object_; rclcpp::Logger logger_; -private: - struct EkfParams - { - double r_cov_x; - double r_cov_y; - double r_cov_yaw; - } ekf_params_; + object_model::ObjectModel object_model_ = object_model::pedestrian; double z_; @@ -56,9 +50,7 @@ class PedestrianTracker : public Tracker BoundingBox bounding_box_; Cylinder cylinder_; -private: CTRVMotionModel motion_model_; - const char DIM = motion_model_.DIM; using IDX = CTRVMotionModel::IDX; public: @@ -71,15 +63,16 @@ class PedestrianTracker : public Tracker bool measure( const autoware_perception_msgs::msg::DetectedObject & object, const rclcpp::Time & time, const geometry_msgs::msg::Transform & self_transform) override; - autoware_perception_msgs::msg::DetectedObject getUpdatingObject( - const autoware_perception_msgs::msg::DetectedObject & object, - const geometry_msgs::msg::Transform & self_transform); bool measureWithPose(const autoware_perception_msgs::msg::DetectedObject & object); bool measureWithShape(const autoware_perception_msgs::msg::DetectedObject & object); bool getTrackedObject( const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const override; - virtual ~PedestrianTracker() {} + +private: + autoware_perception_msgs::msg::DetectedObject getUpdatingObject( + const autoware_perception_msgs::msg::DetectedObject & object, + const geometry_msgs::msg::Transform & self_transform) const; }; #endif // MULTI_OBJECT_TRACKER__TRACKER__MODEL__PEDESTRIAN_TRACKER_HPP_ diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/tracker_base.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/tracker_base.hpp index 56670e9b54b7e..44b3884c392e6 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/tracker_base.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/tracker_base.hpp @@ -28,8 +28,8 @@ #include "autoware_perception_msgs/msg/detected_object.hpp" #include "autoware_perception_msgs/msg/tracked_object.hpp" -#include "geometry_msgs/msg/point.hpp" -#include "unique_identifier_msgs/msg/uuid.hpp" +#include +#include #include @@ -54,7 +54,7 @@ class Tracker const rclcpp::Time & time, const std::vector & classification, const size_t & channel_size); - virtual ~Tracker() {} + virtual ~Tracker() = default; void initializeExistenceProbabilities( const uint & channel_index, const float & existence_probability); diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/unknown_tracker.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/unknown_tracker.hpp index 43a1f2fd14842..ca8ecba160bd8 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/unknown_tracker.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/model/unknown_tracker.hpp @@ -19,18 +19,16 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MODEL__UNKNOWN_TRACKER_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MODEL__UNKNOWN_TRACKER_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/model/tracker_base.hpp" #include "multi_object_tracker/tracker/motion_model/cv_motion_model.hpp" -#include - class UnknownTracker : public Tracker { private: autoware_perception_msgs::msg::DetectedObject object_; rclcpp::Logger logger_; -private: struct EkfParams { double r_cov_x; @@ -41,9 +39,7 @@ class UnknownTracker : public Tracker double z_; -private: CVMotionModel motion_model_; - const char DIM = motion_model_.DIM; using IDX = CVMotionModel::IDX; public: @@ -64,7 +60,6 @@ class UnknownTracker : public Tracker bool getTrackedObject( const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const override; - virtual ~UnknownTracker() {} }; #endif // MULTI_OBJECT_TRACKER__TRACKER__MODEL__UNKNOWN_TRACKER_HPP_ diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp index 5127d0448835c..f6ce2842388c6 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp @@ -19,10 +19,10 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__BICYCLE_MOTION_MODEL_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__BICYCLE_MOTION_MODEL_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/motion_model/motion_model_base.hpp" #include -#include #include #ifdef ROS_DISTRO_GALACTIC @@ -47,6 +47,8 @@ class BicycleMotionModel : public MotionModel { double q_stddev_acc_long; double q_stddev_acc_lat; + double q_cov_acc_long; + double q_cov_acc_lat; double q_stddev_yaw_rate_min; double q_stddev_yaw_rate_max; double q_cov_slip_rate_min; diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/ctrv_motion_model.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/ctrv_motion_model.hpp index 6b071eddec7a9..657048079c46c 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/ctrv_motion_model.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/ctrv_motion_model.hpp @@ -19,10 +19,10 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__CTRV_MOTION_MODEL_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__CTRV_MOTION_MODEL_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/motion_model/motion_model_base.hpp" #include -#include #include #ifdef ROS_DISTRO_GALACTIC diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/cv_motion_model.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/cv_motion_model.hpp index 59032706b00d6..421e413d7aab7 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/cv_motion_model.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/cv_motion_model.hpp @@ -19,10 +19,10 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__CV_MOTION_MODEL_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__CV_MOTION_MODEL_HPP_ +#include "kalman_filter/kalman_filter.hpp" #include "multi_object_tracker/tracker/motion_model/motion_model_base.hpp" #include -#include #include #ifdef ROS_DISTRO_GALACTIC diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/motion_model_base.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/motion_model_base.hpp index 1aca602ed66a3..e740612e96d4f 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/motion_model_base.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/motion_model/motion_model_base.hpp @@ -19,8 +19,9 @@ #ifndef MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__MOTION_MODEL_BASE_HPP_ #define MULTI_OBJECT_TRACKER__TRACKER__MOTION_MODEL__MOTION_MODEL_BASE_HPP_ +#include "kalman_filter/kalman_filter.hpp" + #include -#include #include #ifdef ROS_DISTRO_GALACTIC diff --git a/perception/multi_object_tracker/include/multi_object_tracker/tracker/object_model/object_model.hpp b/perception/multi_object_tracker/include/multi_object_tracker/tracker/object_model/object_model.hpp new file mode 100644 index 0000000000000..6a771344bb36b --- /dev/null +++ b/perception/multi_object_tracker/include/multi_object_tracker/tracker/object_model/object_model.hpp @@ -0,0 +1,305 @@ +// Copyright 2024 TIER IV, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +// Author: v1.0 Taekjin Lee +// + +#ifndef MULTI_OBJECT_TRACKER__TRACKER__OBJECT_MODEL__OBJECT_MODEL_HPP_ +#define MULTI_OBJECT_TRACKER__TRACKER__OBJECT_MODEL__OBJECT_MODEL_HPP_ + +#include + +namespace +{ +constexpr double const_g = 9.81; + +template +constexpr T sq(const T x) +{ + return x * x; +} + +template +constexpr T deg2rad(const T deg) +{ + return deg * static_cast(M_PI) / static_cast(180.0); +} + +// cspell: ignore kmph +template +constexpr T kmph2mps(const T kmph) +{ + return kmph * static_cast(1000.0) / static_cast(3600.0); +} + +} // namespace + +namespace object_model +{ + +enum class ObjectModelType { NormalVehicle, BigVehicle, Bicycle, Pedestrian, Unknown }; +struct ObjectSize +{ + double length{0.0}; // [m] + double width{0.0}; // [m] + double height{0.0}; // [m] +}; +struct ObjectSizeLimit +{ + double length_min{0.0}; // [m] + double length_max{0.0}; // [m] + double width_min{0.0}; // [m] + double width_max{0.0}; // [m] + double height_min{0.0}; // [m] + double height_max{0.0}; // [m] +}; +struct MotionProcessNoise +{ + double vel_long{0.0}; // [m/s] uncertain longitudinal velocity + double vel_lat{0.0}; // [m/s] uncertain lateral velocity + double yaw_rate{0.0}; // [rad/s] uncertain yaw rate + double yaw_rate_min{0.0}; // [rad/s] uncertain yaw rate, minimum + double yaw_rate_max{0.0}; // [rad/s] uncertain yaw rate, maximum + double acc_long{0.0}; // [m/s^2] uncertain longitudinal acceleration + double acc_lat{0.0}; // [m/s^2] uncertain lateral acceleration + double acc_turn{0.0}; // [rad/s^2] uncertain rotation acceleration +}; +struct MotionProcessLimit +{ + double acc_long_max{0.0}; // [m/s^2] + double acc_lat_max{0.0}; // [m/s^2] + double vel_long_max{0.0}; // [m/s] + double vel_lat_max{0.0}; // [m/s] + double yaw_rate_max{0.0}; // [rad/s] +}; +struct StateCovariance +{ + double pos_x{0.0}; // [m^2] + double pos_y{0.0}; // [m^2] + double yaw{0.0}; // [rad^2] + double yaw_rate{0.0}; // [rad^2/s^2] + double vel_long{0.0}; // [m^2/s^2] + double vel_lat{0.0}; // [m^2/s^2] + double acc_long{0.0}; // [m^2/s^4] + double acc_lat{0.0}; // [m^2/s^4] +}; +struct BicycleModelState +{ + double init_slip_angle_cov{0.0}; // [rad^2/s^2] initial slip angle covariance + double slip_angle_max{0.0}; // [rad] max slip angle + double slip_rate_stddev_min{0.0}; // [rad/s] uncertain slip angle change rate, minimum + double slip_rate_stddev_max{0.0}; // [rad/s] uncertain slip angle change rate, maximum + double wheel_pos_ratio_front{0.0}; // [-] + double wheel_pos_ratio_rear{0.0}; // [-] + double wheel_pos_front_min{0.0}; // [m] + double wheel_pos_rear_min{0.0}; // [m] +}; + +class ObjectModel +{ +public: + ObjectSize init_size; + ObjectSizeLimit size_limit; + MotionProcessNoise process_noise; + MotionProcessLimit process_limit; + StateCovariance initial_covariance; + StateCovariance measurement_covariance; + BicycleModelState bicycle_state; + + explicit ObjectModel(const ObjectModelType & type) + { + switch (type) { + case ObjectModelType::NormalVehicle: + init_size.length = 3.0; + init_size.width = 2.0; + init_size.height = 1.8; + size_limit.length_min = 1.0; + size_limit.length_max = 20.0; + size_limit.width_min = 1.0; + size_limit.width_max = 5.0; + size_limit.height_min = 1.0; + size_limit.height_max = 5.0; + + process_noise.acc_long = const_g * 0.35; + process_noise.acc_lat = const_g * 0.15; + process_noise.yaw_rate_min = deg2rad(1.5); + process_noise.yaw_rate_max = deg2rad(15.0); + + process_limit.acc_long_max = const_g; + process_limit.acc_lat_max = const_g; + process_limit.vel_long_max = kmph2mps(140.0); + + // initial covariance + initial_covariance.pos_x = sq(1.0); + initial_covariance.pos_y = sq(0.3); + initial_covariance.yaw = sq(deg2rad(25.0)); + initial_covariance.vel_long = sq(kmph2mps(1000.0)); + initial_covariance.vel_lat = sq(0.2); + + // measurement noise model + measurement_covariance.pos_x = sq(0.5); + measurement_covariance.pos_y = sq(0.4); + measurement_covariance.yaw = sq(deg2rad(20.0)); + measurement_covariance.vel_long = sq(1.0); + + // bicycle motion model + bicycle_state.init_slip_angle_cov = sq(deg2rad(5.0)); + bicycle_state.slip_angle_max = deg2rad(30.0); + bicycle_state.slip_rate_stddev_min = deg2rad(0.3); + bicycle_state.slip_rate_stddev_max = deg2rad(10.0); + bicycle_state.wheel_pos_ratio_front = 0.3; + bicycle_state.wheel_pos_ratio_rear = 0.25; + bicycle_state.wheel_pos_front_min = 1.0; + bicycle_state.wheel_pos_rear_min = 1.0; + break; + + case ObjectModelType::BigVehicle: + init_size.length = 6.0; + init_size.width = 2.0; + init_size.height = 2.0; + size_limit.length_min = 1.0; + size_limit.length_max = 35.0; + size_limit.width_min = 1.0; + size_limit.width_max = 10.0; + size_limit.height_min = 1.0; + size_limit.height_max = 10.0; + + process_noise.acc_long = const_g * 0.35; + process_noise.acc_lat = const_g * 0.15; + process_noise.yaw_rate_min = deg2rad(1.5); + process_noise.yaw_rate_max = deg2rad(15.0); + + process_limit.acc_long_max = const_g; + process_limit.acc_lat_max = const_g; + process_limit.vel_long_max = kmph2mps(140.0); + + // initial covariance + initial_covariance.pos_x = sq(1.5); + initial_covariance.pos_y = sq(0.5); + initial_covariance.yaw = sq(deg2rad(25.0)); + initial_covariance.vel_long = sq(kmph2mps(1000.0)); + initial_covariance.vel_lat = sq(0.2); + + // measurement noise model + measurement_covariance.pos_x = sq(0.5); + measurement_covariance.pos_y = sq(0.4); + measurement_covariance.yaw = sq(deg2rad(20.0)); + measurement_covariance.vel_long = sq(kmph2mps(10.0)); + + // bicycle motion model + bicycle_state.init_slip_angle_cov = sq(deg2rad(5.0)); + bicycle_state.slip_angle_max = deg2rad(30.0); + bicycle_state.slip_rate_stddev_min = deg2rad(0.3); + bicycle_state.slip_rate_stddev_max = deg2rad(10.0); + bicycle_state.wheel_pos_ratio_front = 0.3; + bicycle_state.wheel_pos_ratio_rear = 0.25; + bicycle_state.wheel_pos_front_min = 1.5; + bicycle_state.wheel_pos_rear_min = 1.5; + break; + + case ObjectModelType::Bicycle: + init_size.length = 1.0; + init_size.width = 0.5; + init_size.height = 1.7; + size_limit.length_min = 0.5; + size_limit.length_max = 8.0; + size_limit.width_min = 0.5; + size_limit.width_max = 3.0; + size_limit.height_min = 0.5; + size_limit.height_max = 2.5; + + process_noise.acc_long = const_g * 0.35; + process_noise.acc_lat = const_g * 0.15; + process_noise.yaw_rate_min = deg2rad(5.0); + process_noise.yaw_rate_max = deg2rad(15.0); + + process_limit.acc_long_max = const_g; + process_limit.acc_lat_max = const_g; + process_limit.vel_long_max = kmph2mps(120.0); + + // initial covariance + initial_covariance.pos_x = sq(0.8); + initial_covariance.pos_y = sq(0.5); + initial_covariance.yaw = sq(deg2rad(25.0)); + initial_covariance.vel_long = sq(kmph2mps(1000.0)); + initial_covariance.vel_lat = sq(0.2); + + // measurement noise model + measurement_covariance.pos_x = sq(0.5); + measurement_covariance.pos_y = sq(0.4); + measurement_covariance.yaw = sq(deg2rad(30.0)); + measurement_covariance.vel_long = sq(kmph2mps(10.0)); + + // bicycle motion model + bicycle_state.init_slip_angle_cov = sq(deg2rad(5.0)); + bicycle_state.slip_angle_max = deg2rad(30.0); + bicycle_state.slip_rate_stddev_min = deg2rad(1.0); + bicycle_state.slip_rate_stddev_max = deg2rad(10.0); + bicycle_state.wheel_pos_ratio_front = 0.3; + bicycle_state.wheel_pos_ratio_rear = 0.3; + bicycle_state.wheel_pos_front_min = 0.3; + bicycle_state.wheel_pos_rear_min = 0.3; + break; + + case ObjectModelType::Pedestrian: + init_size.length = 0.5; + init_size.width = 0.5; + init_size.height = 1.7; + size_limit.length_min = 0.3; + size_limit.length_max = 2.0; + size_limit.width_min = 0.3; + size_limit.width_max = 1.0; + size_limit.height_min = 0.6; + size_limit.height_max = 2.0; + + process_noise.vel_long = 0.5; + process_noise.vel_lat = 0.5; + process_noise.yaw_rate = deg2rad(20.0); + process_noise.acc_long = const_g * 0.3; + process_noise.acc_turn = deg2rad(30.0); + + process_limit.vel_long_max = kmph2mps(100.0); + process_limit.yaw_rate_max = deg2rad(30.0); + + // initial covariance + initial_covariance.pos_x = sq(2.0); + initial_covariance.pos_y = sq(2.0); + initial_covariance.yaw = sq(deg2rad(1000.0)); + initial_covariance.vel_long = sq(kmph2mps(120.0)); + initial_covariance.yaw_rate = sq(deg2rad(360.0)); + + // measurement noise model + measurement_covariance.pos_x = sq(0.4); + measurement_covariance.pos_y = sq(0.4); + measurement_covariance.yaw = sq(deg2rad(30.0)); + + break; + + default: + break; + } + } + virtual ~ObjectModel() = default; +}; + +// create static objects by using ObjectModel class +static const ObjectModel normal_vehicle(ObjectModelType::NormalVehicle); +static const ObjectModel big_vehicle(ObjectModelType::BigVehicle); +static const ObjectModel bicycle(ObjectModelType::Bicycle); +static const ObjectModel pedestrian(ObjectModelType::Pedestrian); + +} // namespace object_model + +#endif // MULTI_OBJECT_TRACKER__TRACKER__OBJECT_MODEL__OBJECT_MODEL_HPP_ diff --git a/perception/multi_object_tracker/include/multi_object_tracker/utils/utils.hpp b/perception/multi_object_tracker/include/multi_object_tracker/utils/utils.hpp index 259a58342c369..0bda7870ae2b9 100644 --- a/perception/multi_object_tracker/include/multi_object_tracker/utils/utils.hpp +++ b/perception/multi_object_tracker/include/multi_object_tracker/utils/utils.hpp @@ -22,9 +22,9 @@ #include #include -#include -#include -#include +#include "autoware_perception_msgs/msg/detected_object.hpp" +#include "autoware_perception_msgs/msg/shape.hpp" +#include "autoware_perception_msgs/msg/tracked_object.hpp" #include #include #include @@ -38,45 +38,6 @@ namespace utils { -enum MSG_COV_IDX { - X_X = 0, - X_Y = 1, - X_Z = 2, - X_ROLL = 3, - X_PITCH = 4, - X_YAW = 5, - Y_X = 6, - Y_Y = 7, - Y_Z = 8, - Y_ROLL = 9, - Y_PITCH = 10, - Y_YAW = 11, - Z_X = 12, - Z_Y = 13, - Z_Z = 14, - Z_ROLL = 15, - Z_PITCH = 16, - Z_YAW = 17, - ROLL_X = 18, - ROLL_Y = 19, - ROLL_Z = 20, - ROLL_ROLL = 21, - ROLL_PITCH = 22, - ROLL_YAW = 23, - PITCH_X = 24, - PITCH_Y = 25, - PITCH_Z = 26, - PITCH_ROLL = 27, - PITCH_PITCH = 28, - PITCH_YAW = 29, - YAW_X = 30, - YAW_Y = 31, - YAW_Z = 32, - YAW_ROLL = 33, - YAW_PITCH = 34, - YAW_YAW = 35 -}; - enum BBOX_IDX { FRONT_SURFACE = 0, RIGHT_SURFACE = 1, @@ -132,7 +93,8 @@ inline int getNearestCornerOrSurface( // (left) | | (right) // -- // x- (rear) - int xgrid, ygrid; + int xgrid = 0; + int ygrid = 0; const int labels[3][3] = { {BBOX_IDX::FRONT_L_CORNER, BBOX_IDX::FRONT_SURFACE, BBOX_IDX::FRONT_R_CORNER}, {BBOX_IDX::LEFT_SURFACE, BBOX_IDX::INSIDE, BBOX_IDX::RIGHT_SURFACE}, @@ -155,34 +117,6 @@ inline int getNearestCornerOrSurface( return labels[xgrid][ygrid]; // 0 to 7 + 1(null) value } -/** - * @brief Get the Nearest Corner or Surface from detected object - * @param object: input object - * @param yaw: object yaw angle (after solved front and back uncertainty) - * @param self_transform - * @return nearest corner or surface index - */ -inline int getNearestCornerOrSurfaceFromObject( - const autoware_perception_msgs::msg::DetectedObject & object, const double & yaw, - const geometry_msgs::msg::Transform & self_transform) -{ - // only work for BBOX shape - if (object.shape.type != autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { - return BBOX_IDX::INVALID; - } - - // extract necessary information from input object - double x, y, width, length; - x = object.kinematics.pose_with_covariance.pose.position.x; - y = object.kinematics.pose_with_covariance.pose.position.y; - // yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); //not use raw yaw - // now - width = object.shape.dimensions.y; - length = object.shape.dimensions.x; - - return getNearestCornerOrSurface(x, y, yaw, width, length, self_transform); -} - /** * @brief Calc bounding box center offset caused by shape change * @param dw: width update [m] = w_new - w_old @@ -225,30 +159,6 @@ inline Eigen::Vector2d calcOffsetVectorFromShapeChange( return offset; // do nothing if indx == INVALID or INSIDE } -/** - * @brief post-processing to recover bounding box center from tracking point and offset vector - * @param x: x of tracking point estimated with ekf - * @param y: y of tracking point estimated with ekf - * @param yaw: yaw of tracking point estimated with ekf - * @param dw: diff of width: w_estimated - w_input - * @param dl: diff of length: l_estimated - l_input - * @param indx: closest corner or surface index - * @param tracking_offset: tracking offset between bounding box center and tracking point - */ -inline Eigen::Vector2d recoverFromTrackingPoint( - const double x, const double y, const double yaw, const double dw, const double dl, - const int indx, const Eigen::Vector2d & tracking_offset) -{ - const Eigen::Vector2d tracking_point{x, y}; - const Eigen::Matrix2d R = Eigen::Rotation2Dd(yaw).toRotationMatrix(); - - const Eigen::Vector2d shape_change_offset = calcOffsetVectorFromShapeChange(dw, dl, indx); - - Eigen::Vector2d output_center = tracking_point - R * tracking_offset - R * shape_change_offset; - - return output_center; -} - /** * @brief Convert input object center to tracking point based on nearest corner information * 1. update anchor offset vector, 2. offset input bbox based on tracking_offset vector and @@ -274,9 +184,8 @@ inline void calcAnchorPointOffset( } // current object width and height - double w_n, l_n; - l_n = input_object.shape.dimensions.x; - w_n = input_object.shape.dimensions.y; + const double w_n = input_object.shape.dimensions.y; + const double l_n = input_object.shape.dimensions.x; // update offset const Eigen::Vector2d offset = calcOffsetVectorFromShapeChange(w_n - w, l_n - l, indx); @@ -304,27 +213,19 @@ inline bool convertConvexHullToBoundingBox( } // look for bounding box boundary - double max_x = 0; - double max_y = 0; - double min_x = 0; - double min_y = 0; - double max_z = 0; - for (size_t i = 0; i < input_object.shape.footprint.points.size(); ++i) { - const double foot_x = input_object.shape.footprint.points.at(i).x; - const double foot_y = input_object.shape.footprint.points.at(i).y; - const double foot_z = input_object.shape.footprint.points.at(i).z; - max_x = std::max(max_x, foot_x); - max_y = std::max(max_y, foot_y); - min_x = std::min(min_x, foot_x); - min_y = std::min(min_y, foot_y); - max_z = std::max(max_z, foot_z); + float max_x = 0; + float max_y = 0; + float min_x = 0; + float min_y = 0; + float max_z = 0; + for (const auto & point : input_object.shape.footprint.points) { + max_x = std::max(max_x, point.x); + max_y = std::max(max_y, point.y); + min_x = std::min(min_x, point.x); + min_y = std::min(min_y, point.y); + max_z = std::max(max_z, point.z); } - // calc bounding box state - const double length = max_x - min_x; - const double width = max_y - min_y; - const double height = max_z; - // calc new center const Eigen::Vector2d center{ input_object.kinematics.pose_with_covariance.pose.position.x, @@ -340,9 +241,9 @@ inline bool convertConvexHullToBoundingBox( output_object.kinematics.pose_with_covariance.pose.position.y = new_center.y(); output_object.shape.type = autoware_perception_msgs::msg::Shape::BOUNDING_BOX; - output_object.shape.dimensions.x = length; - output_object.shape.dimensions.y = width; - output_object.shape.dimensions.z = height; + output_object.shape.dimensions.x = max_x - min_x; + output_object.shape.dimensions.y = max_y - min_y; + output_object.shape.dimensions.z = max_z; return true; } diff --git a/perception/multi_object_tracker/src/data_association/data_association.cpp b/perception/multi_object_tracker/src/data_association/data_association.cpp index d033e98cce46e..013137aa8b82c 100644 --- a/perception/multi_object_tracker/src/data_association/data_association.cpp +++ b/perception/multi_object_tracker/src/data_association/data_association.cpp @@ -52,8 +52,8 @@ double getFormedYawAngle( const geometry_msgs::msg::Quaternion & tracker_quat, const bool distinguish_front_or_back = true) { const double measurement_yaw = - autoware_universe_utils::normalizeRadian(tf2::getYaw(measurement_quat)); - const double tracker_yaw = autoware_universe_utils::normalizeRadian(tf2::getYaw(tracker_quat)); + autoware::universe_utils::normalizeRadian(tf2::getYaw(measurement_quat)); + const double tracker_yaw = autoware::universe_utils::normalizeRadian(tf2::getYaw(tracker_quat)); const double angle_range = distinguish_front_or_back ? M_PI : M_PI_2; const double angle_step = distinguish_front_or_back ? 2.0 * M_PI : M_PI; // Fixed measurement_yaw to be in the range of +-90 or 180 degrees of X_t(IDX::YAW) @@ -170,7 +170,7 @@ Eigen::MatrixXd DataAssociation::calcScoreMatrix( (*tracker_itr)->getTrackedObject(measurements.header.stamp, tracked_object); const double max_dist = max_dist_matrix_(tracker_label, measurement_label); - const double dist = autoware_universe_utils::calcDistance2d( + const double dist = autoware::universe_utils::calcDistance2d( measurement_object.kinematics.pose_with_covariance.pose.position, tracked_object.kinematics.pose_with_covariance.pose.position); @@ -183,7 +183,7 @@ Eigen::MatrixXd DataAssociation::calcScoreMatrix( if (passed_gate) { const double max_area = max_area_matrix_(tracker_label, measurement_label); const double min_area = min_area_matrix_(tracker_label, measurement_label); - const double area = autoware_universe_utils::getArea(measurement_object.shape); + const double area = autoware::universe_utils::getArea(measurement_object.shape); if (area < min_area || max_area < area) passed_gate = false; } // angle gate diff --git a/perception/multi_object_tracker/src/debugger/debug_object.cpp b/perception/multi_object_tracker/src/debugger/debug_object.cpp index e6a0b6242a168..fe6d3d5c75564 100644 --- a/perception/multi_object_tracker/src/debugger/debug_object.cpp +++ b/perception/multi_object_tracker/src/debugger/debug_object.cpp @@ -236,8 +236,9 @@ void TrackerObjectDebugger::draw( stream << std::fixed << std::setprecision(0) << object_data_front.existence_vector[i] * 100; existence_probability_text += channel_names_[i] + stream.str() + ":"; } - existence_probability_text = - existence_probability_text.substr(0, existence_probability_text.size() - 1); + if (!existence_probability_text.empty()) { + existence_probability_text.pop_back(); + } existence_probability_text += "\n" + object_data_front.uuid_str.substr(0, 6); text_marker.text = existence_probability_text; diff --git a/perception/multi_object_tracker/src/debugger/debugger.cpp b/perception/multi_object_tracker/src/debugger/debugger.cpp index bb5fdef9be690..e692ae76468e4 100644 --- a/perception/multi_object_tracker/src/debugger/debugger.cpp +++ b/perception/multi_object_tracker/src/debugger/debugger.cpp @@ -24,7 +24,7 @@ TrackerDebugger::TrackerDebugger(rclcpp::Node & node, const std::string & frame_ // initialize debug publishers if (debug_settings_.publish_processing_time) { processing_time_publisher_ = - std::make_unique(&node_, "multi_object_tracker"); + std::make_unique(&node_, "multi_object_tracker"); } if (debug_settings_.publish_tentative_objects) { @@ -98,7 +98,7 @@ void TrackerDebugger::checkDelay(diagnostic_updater::DiagnosticStatusWrapper & s stat.summary(diagnostic_msgs::msg::DiagnosticStatus::ERROR, "Measurement time is not set."); return; } - const double & delay = pipeline_latency_ms_; // [s] + const double & delay = pipeline_latency_ms_ / 1e3; // [s] if (delay == 0.0) { stat.summary(diagnostic_msgs::msg::DiagnosticStatus::OK, "Detection delay is not calculated."); diff --git a/perception/multi_object_tracker/src/multi_object_tracker_core.cpp b/perception/multi_object_tracker/src/multi_object_tracker_core.cpp index af61cfb8259b1..97c3d93d191b2 100644 --- a/perception/multi_object_tracker/src/multi_object_tracker_core.cpp +++ b/perception/multi_object_tracker/src/multi_object_tracker_core.cpp @@ -13,6 +13,15 @@ // limitations under the License. // // +#define EIGEN_MPL2_ONLY + +#include "multi_object_tracker/multi_object_tracker_core.hpp" + +#include "multi_object_tracker/utils/utils.hpp" + +#include +#include +#include #include @@ -28,14 +37,6 @@ #include #include -#define EIGEN_MPL2_ONLY -#include "multi_object_tracker/multi_object_tracker_core.hpp" -#include "multi_object_tracker/utils/utils.hpp" - -#include -#include -#include - namespace { // Function to get the transform between two frames @@ -200,14 +201,14 @@ MultiObjectTracker::MultiObjectTracker(const rclcpp::NodeOptions & node_options) debugger_ = std::make_unique(*this, world_frame_id_); debugger_->setObjectChannels(input_names_short); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void MultiObjectTracker::onTrigger() { const rclcpp::Time current_time = this->now(); // get objects from the input manager and run process - std::vector> objects_list; + ObjectsList objects_list; const bool is_objects_ready = input_manager_->getObjects(current_time, objects_list); if (!is_objects_ready) return; diff --git a/perception/multi_object_tracker/src/processor/processor.cpp b/perception/multi_object_tracker/src/processor/processor.cpp index ff14f7849b161..50d1a021c5838 100644 --- a/perception/multi_object_tracker/src/processor/processor.cpp +++ b/perception/multi_object_tracker/src/processor/processor.cpp @@ -17,7 +17,7 @@ #include "multi_object_tracker/tracker/tracker.hpp" #include "object_recognition_utils/object_recognition_utils.hpp" -#include +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include diff --git a/perception/multi_object_tracker/src/tracker/model/bicycle_tracker.cpp b/perception/multi_object_tracker/src/tracker/model/bicycle_tracker.cpp index fa7adb8396612..a438c830596d7 100644 --- a/perception/multi_object_tracker/src/tracker/model/bicycle_tracker.cpp +++ b/perception/multi_object_tracker/src/tracker/model/bicycle_tracker.cpp @@ -15,14 +15,19 @@ // // Author: v1.0 Yukihiro Saito // +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/model/bicycle_tracker.hpp" +#include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/utils/utils.hpp" +#include "object_recognition_utils/object_recognition_utils.hpp" -#include -#include -#include +#include +#include #include #include @@ -34,11 +39,6 @@ #else #include #endif -#include "object_recognition_utils/object_recognition_utils.hpp" - -#define EIGEN_MPL2_ONLY -#include -#include using Label = autoware_perception_msgs::msg::ObjectClassification; @@ -55,45 +55,36 @@ BicycleTracker::BicycleTracker( // initialize existence probability initializeExistenceProbabilities(channel_index, object.existence_probability); - // Initialize parameters - // measurement noise covariance: detector uncertainty + ego vehicle motion uncertainty - double r_stddev_x = 0.5; // in vehicle coordinate [m] - double r_stddev_y = 0.4; // in vehicle coordinate [m] - double r_stddev_yaw = autoware_universe_utils::deg2rad(30); // in map coordinate [rad] - ekf_params_.r_cov_x = std::pow(r_stddev_x, 2.0); - ekf_params_.r_cov_y = std::pow(r_stddev_y, 2.0); - ekf_params_.r_cov_yaw = std::pow(r_stddev_yaw, 2.0); - // OBJECT SHAPE MODEL if (object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { bounding_box_ = { object.shape.dimensions.x, object.shape.dimensions.y, object.shape.dimensions.z}; } else { - bounding_box_ = {1.0, 0.5, 1.7}; + bounding_box_ = { + object_model_.init_size.length, object_model_.init_size.width, + object_model_.init_size.height}; // default value } // set maximum and minimum size - constexpr double max_size = 5.0; - constexpr double min_size = 0.3; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); // Set motion model parameters { - constexpr double q_stddev_acc_long = - 9.8 * 0.35; // [m/(s*s)] uncertain longitudinal acceleration - constexpr double q_stddev_acc_lat = 9.8 * 0.15; // [m/(s*s)] uncertain lateral acceleration - constexpr double q_stddev_yaw_rate_min = 5.0; // [deg/s] uncertain yaw change rate, minimum - constexpr double q_stddev_yaw_rate_max = 15.0; // [deg/s] uncertain yaw change rate, maximum - constexpr double q_stddev_slip_rate_min = - 1.0; // [deg/s] uncertain slip angle change rate, minimum - constexpr double q_stddev_slip_rate_max = - 10.0; // [deg/s] uncertain slip angle change rate, maximum - constexpr double q_max_slip_angle = 30; // [deg] max slip angle - constexpr double lf_ratio = 0.3; // [-] ratio of front wheel position - constexpr double lf_min = 0.3; // [m] minimum front wheel position - constexpr double lr_ratio = 0.3; // [-] ratio of rear wheel position - constexpr double lr_min = 0.3; // [m] minimum rear wheel position + const double q_stddev_acc_long = object_model_.process_noise.acc_long; + const double q_stddev_acc_lat = object_model_.process_noise.acc_lat; + const double q_stddev_yaw_rate_min = object_model_.process_noise.yaw_rate_min; + const double q_stddev_yaw_rate_max = object_model_.process_noise.yaw_rate_max; + const double q_stddev_slip_rate_min = object_model_.bicycle_state.slip_rate_stddev_min; + const double q_stddev_slip_rate_max = object_model_.bicycle_state.slip_rate_stddev_max; + const double q_max_slip_angle = object_model_.bicycle_state.slip_angle_max; + const double lf_ratio = object_model_.bicycle_state.wheel_pos_ratio_front; + const double lf_min = object_model_.bicycle_state.wheel_pos_front_min; + const double lr_ratio = object_model_.bicycle_state.wheel_pos_ratio_rear; + const double lr_min = object_model_.bicycle_state.wheel_pos_rear_min; motion_model_.setMotionParams( q_stddev_acc_long, q_stddev_acc_lat, q_stddev_yaw_rate_min, q_stddev_yaw_rate_max, q_stddev_slip_rate_min, q_stddev_slip_rate_max, q_max_slip_angle, lf_ratio, lf_min, lr_ratio, @@ -102,59 +93,47 @@ BicycleTracker::BicycleTracker( // Set motion limits { - constexpr double max_vel = autoware_universe_utils::kmph2mps(80); // [m/s] maximum velocity - constexpr double max_slip = 30; // [deg] maximum slip angle + const double max_vel = object_model_.process_limit.vel_long_max; + const double max_slip = object_model_.bicycle_state.slip_angle_max; motion_model_.setMotionLimits(max_vel, max_slip); // maximum velocity and slip angle } // Set initial state { + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; const double x = object.kinematics.pose_with_covariance.pose.position.x; const double y = object.kinematics.pose_with_covariance.pose.position.y; const double yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); - auto pose_cov = object.kinematics.pose_with_covariance.covariance; - double vel = 0.0; - double vel_cov; - const double & length = bounding_box_.length; - - if (object.kinematics.has_twist) { - vel = object.kinematics.twist_with_covariance.twist.linear.x; - } + auto pose_cov = object.kinematics.pose_with_covariance.covariance; if (!object.kinematics.has_position_covariance) { // initial state covariance - constexpr double p0_stddev_x = 0.8; // in object coordinate [m] - constexpr double p0_stddev_y = 0.5; // in object coordinate [m] - constexpr double p0_stddev_yaw = - autoware_universe_utils::deg2rad(25); // in map coordinate [rad] - constexpr double p0_cov_x = p0_stddev_x * p0_stddev_x; - constexpr double p0_cov_y = p0_stddev_y * p0_stddev_y; - constexpr double p0_cov_yaw = p0_stddev_yaw * p0_stddev_yaw; + const auto & p0_cov_x = object_model_.initial_covariance.pos_x; + const auto & p0_cov_y = object_model_.initial_covariance.pos_y; + const auto & p0_cov_yaw = object_model_.initial_covariance.yaw; const double cos_yaw = std::cos(yaw); const double sin_yaw = std::sin(yaw); const double sin_2yaw = std::sin(2.0 * yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; - pose_cov[utils::MSG_COV_IDX::Y_Y] = - p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = p0_cov_yaw; + pose_cov[XYZRPY_COV_IDX::X_X] = p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; + pose_cov[XYZRPY_COV_IDX::Y_Y] = p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = p0_cov_yaw; } - if (!object.kinematics.has_twist_covariance) { - constexpr double p0_stddev_vel = - autoware_universe_utils::kmph2mps(1000); // in object coordinate [m/s] - vel_cov = std::pow(p0_stddev_vel, 2.0); - } else { - vel_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; + double vel = 0.0; + double vel_cov = object_model_.initial_covariance.vel_long; + if (object.kinematics.has_twist) { + vel = object.kinematics.twist_with_covariance.twist.linear.x; + } + if (object.kinematics.has_twist_covariance) { + vel_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X]; } const double slip = 0.0; - const double p0_stddev_slip = - autoware_universe_utils::deg2rad(5); // in object coordinate [rad/s] - const double slip_cov = std::pow(p0_stddev_slip, 2.0); + const double slip_cov = object_model_.bicycle_state.init_slip_angle_cov; + const double & length = bounding_box_.length; // initialize motion model motion_model_.initialize(time, x, y, yaw, pose_cov, vel, vel_cov, slip, slip_cov, length); @@ -168,9 +147,9 @@ bool BicycleTracker::predict(const rclcpp::Time & time) autoware_perception_msgs::msg::DetectedObject BicycleTracker::getUpdatingObject( const autoware_perception_msgs::msg::DetectedObject & object, - const geometry_msgs::msg::Transform & /*self_transform*/) + const geometry_msgs::msg::Transform & /*self_transform*/) const { - autoware_perception_msgs::msg::DetectedObject updating_object; + autoware_perception_msgs::msg::DetectedObject updating_object = object; // OBJECT SHAPE MODEL // convert to bounding box if input is convex shape @@ -178,19 +157,42 @@ autoware_perception_msgs::msg::DetectedObject BicycleTracker::getUpdatingObject( if (!utils::convertConvexHullToBoundingBox(object, updating_object)) { updating_object = object; } - } else { - updating_object = object; } // UNCERTAINTY MODEL if (!object.kinematics.has_position_covariance) { + // measurement noise covariance + auto r_cov_x = object_model_.measurement_covariance.pos_x; + auto r_cov_y = object_model_.measurement_covariance.pos_y; + + // yaw angle fix + const double pose_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); + const bool is_yaw_available = + object.kinematics.orientation_availability != + autoware_perception_msgs::msg::DetectedObjectKinematics::UNAVAILABLE; + // fill covariance matrix + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; auto & pose_cov = updating_object.kinematics.pose_with_covariance.covariance; - pose_cov[utils::MSG_COV_IDX::X_X] = ekf_params_.r_cov_x; // x - x - pose_cov[utils::MSG_COV_IDX::X_Y] = 0; // x - y - pose_cov[utils::MSG_COV_IDX::Y_X] = 0; // y - x - pose_cov[utils::MSG_COV_IDX::Y_Y] = ekf_params_.r_cov_y; // y - y - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = ekf_params_.r_cov_yaw; // yaw - yaw + const double cos_yaw = std::cos(pose_yaw); + const double sin_yaw = std::sin(pose_yaw); + const double sin_2yaw = std::sin(2.0 * pose_yaw); + pose_cov[XYZRPY_COV_IDX::X_X] = + r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (r_cov_x - r_cov_y) * sin_2yaw; // x - y + pose_cov[XYZRPY_COV_IDX::Y_Y] = + r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; // y - x + pose_cov[XYZRPY_COV_IDX::X_YAW] = 0.0; // x - yaw + pose_cov[XYZRPY_COV_IDX::Y_YAW] = 0.0; // y - yaw + pose_cov[XYZRPY_COV_IDX::YAW_X] = 0.0; // yaw - x + pose_cov[XYZRPY_COV_IDX::YAW_Y] = 0.0; // yaw - y + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = object_model_.measurement_covariance.yaw; // yaw - yaw + if (!is_yaw_available) { + pose_cov[XYZRPY_COV_IDX::YAW_YAW] *= 1e3; // yaw is not available, multiply large value + } + auto & twist_cov = updating_object.kinematics.twist_with_covariance.covariance; + twist_cov[XYZRPY_COV_IDX::X_X] = object_model_.measurement_covariance.vel_long; // vel - vel } return updating_object; @@ -229,8 +231,7 @@ bool BicycleTracker::measureWithPose(const autoware_perception_msgs::msg::Detect bool BicycleTracker::measureWithShape(const autoware_perception_msgs::msg::DetectedObject & object) { - autoware_perception_msgs::msg::DetectedObject bbox_object; - if (!object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { + if (object.shape.type != autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { // do not update shape if the input is not a bounding box return false; } @@ -239,28 +240,29 @@ bool BicycleTracker::measureWithShape(const autoware_perception_msgs::msg::Detec constexpr double size_max = 30.0; // [m] constexpr double size_min = 0.1; // [m] if ( - bbox_object.shape.dimensions.x > size_max || bbox_object.shape.dimensions.y > size_max || - bbox_object.shape.dimensions.z > size_max) { + object.shape.dimensions.x > size_max || object.shape.dimensions.y > size_max || + object.shape.dimensions.z > size_max) { return false; } else if ( - bbox_object.shape.dimensions.x < size_min || bbox_object.shape.dimensions.y < size_min || - bbox_object.shape.dimensions.z < size_min) { + object.shape.dimensions.x < size_min || object.shape.dimensions.y < size_min || + object.shape.dimensions.z < size_min) { return false; } // update object size constexpr double gain = 0.1; constexpr double gain_inv = 1.0 - gain; - bounding_box_.length = gain_inv * bounding_box_.length + gain * bbox_object.shape.dimensions.x; - bounding_box_.width = gain_inv * bounding_box_.width + gain * bbox_object.shape.dimensions.y; - bounding_box_.height = gain_inv * bounding_box_.height + gain * bbox_object.shape.dimensions.z; + bounding_box_.length = gain_inv * bounding_box_.length + gain * object.shape.dimensions.x; + bounding_box_.width = gain_inv * bounding_box_.width + gain * object.shape.dimensions.y; + bounding_box_.height = gain_inv * bounding_box_.height + gain * object.shape.dimensions.z; // set maximum and minimum size - constexpr double max_size = 5.0; - constexpr double min_size = 0.3; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); // update motion model motion_model_.updateExtendedState(bounding_box_.length); @@ -328,7 +330,7 @@ bool BicycleTracker::getTrackedObject( const auto origin_yaw = tf2::getYaw(object_.kinematics.pose_with_covariance.pose.orientation); const auto ekf_pose_yaw = tf2::getYaw(pose_with_cov.pose.orientation); object.shape.footprint = - autoware_universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); + autoware::universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); return true; } diff --git a/perception/multi_object_tracker/src/tracker/model/big_vehicle_tracker.cpp b/perception/multi_object_tracker/src/tracker/model/big_vehicle_tracker.cpp index 92815f5e33a6b..90d33e65b46bd 100644 --- a/perception/multi_object_tracker/src/tracker/model/big_vehicle_tracker.cpp +++ b/perception/multi_object_tracker/src/tracker/model/big_vehicle_tracker.cpp @@ -15,14 +15,19 @@ // // Author: v1.0 Yukihiro Saito // +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/model/big_vehicle_tracker.hpp" +#include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/utils/utils.hpp" +#include "object_recognition_utils/object_recognition_utils.hpp" -#include -#include -#include +#include +#include #include #include @@ -34,11 +39,6 @@ #else #include #endif -#include "object_recognition_utils/object_recognition_utils.hpp" - -#define EIGEN_MPL2_ONLY -#include -#include using Label = autoware_perception_msgs::msg::ObjectClassification; @@ -56,21 +56,10 @@ BigVehicleTracker::BigVehicleTracker( // initialize existence probability initializeExistenceProbabilities(channel_index, object.existence_probability); - // Initialize parameters - // measurement noise covariance: detector uncertainty + ego vehicle motion uncertainty - float r_stddev_x = 0.5; // in vehicle coordinate [m] - float r_stddev_y = 0.4; // in vehicle coordinate [m] - float r_stddev_yaw = autoware_universe_utils::deg2rad(20); // in map coordinate [rad] - float r_stddev_vel = 1.0; // in object coordinate [m/s] - ekf_params_.r_cov_x = std::pow(r_stddev_x, 2.0); - ekf_params_.r_cov_y = std::pow(r_stddev_y, 2.0); - ekf_params_.r_cov_yaw = std::pow(r_stddev_yaw, 2.0); - ekf_params_.r_cov_vel = std::pow(r_stddev_vel, 2.0); - // velocity deviation threshold // if the predicted velocity is close to the observed velocity, // the observed velocity is used as the measurement. - velocity_deviation_threshold_ = autoware_universe_utils::kmph2mps(10); // [m/s] + velocity_deviation_threshold_ = autoware::universe_utils::kmph2mps(10); // [m/s] // OBJECT SHAPE MODEL if (object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { @@ -82,7 +71,9 @@ BigVehicleTracker::BigVehicleTracker( RCLCPP_WARN( logger_, "BigVehicleTracker::BigVehicleTracker: Failed to convert convex hull to bounding box."); - bounding_box_ = {6.0, 2.0, 2.0}; // default value + bounding_box_ = { + object_model_.init_size.length, object_model_.init_size.width, + object_model_.init_size.height}; // default value } else { bounding_box_ = { bbox_object.shape.dimensions.x, bbox_object.shape.dimensions.y, @@ -90,28 +81,26 @@ BigVehicleTracker::BigVehicleTracker( } } // set maximum and minimum size - constexpr double max_size = 30.0; - constexpr double min_size = 1.0; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); // Set motion model parameters { - constexpr double q_stddev_acc_long = - 9.8 * 0.35; // [m/(s*s)] uncertain longitudinal acceleration - constexpr double q_stddev_acc_lat = 9.8 * 0.15; // [m/(s*s)] uncertain lateral acceleration - constexpr double q_stddev_yaw_rate_min = 1.5; // [deg/s] uncertain yaw change rate, minimum - constexpr double q_stddev_yaw_rate_max = 15.0; // [deg/s] uncertain yaw change rate, maximum - constexpr double q_stddev_slip_rate_min = - 0.3; // [deg/s] uncertain slip angle change rate, minimum - constexpr double q_stddev_slip_rate_max = - 10.0; // [deg/s] uncertain slip angle change rate, maximum - constexpr double q_max_slip_angle = 30; // [deg] max slip angle - constexpr double lf_ratio = 0.3; // [-] ratio of front wheel position - constexpr double lf_min = 1.5; // [m] minimum front wheel position - constexpr double lr_ratio = 0.25; // [-] ratio of rear wheel position - constexpr double lr_min = 1.5; // [m] minimum rear wheel position + const double q_stddev_acc_long = object_model_.process_noise.acc_long; + const double q_stddev_acc_lat = object_model_.process_noise.acc_lat; + const double q_stddev_yaw_rate_min = object_model_.process_noise.yaw_rate_min; + const double q_stddev_yaw_rate_max = object_model_.process_noise.yaw_rate_max; + const double q_stddev_slip_rate_min = object_model_.bicycle_state.slip_rate_stddev_min; + const double q_stddev_slip_rate_max = object_model_.bicycle_state.slip_rate_stddev_max; + const double q_max_slip_angle = object_model_.bicycle_state.slip_angle_max; + const double lf_ratio = object_model_.bicycle_state.wheel_pos_ratio_front; + const double lf_min = object_model_.bicycle_state.wheel_pos_front_min; + const double lr_ratio = object_model_.bicycle_state.wheel_pos_ratio_rear; + const double lr_min = object_model_.bicycle_state.wheel_pos_rear_min; motion_model_.setMotionParams( q_stddev_acc_long, q_stddev_acc_lat, q_stddev_yaw_rate_min, q_stddev_yaw_rate_max, q_stddev_slip_rate_min, q_stddev_slip_rate_max, q_max_slip_angle, lf_ratio, lf_min, lr_ratio, @@ -120,59 +109,47 @@ BigVehicleTracker::BigVehicleTracker( // Set motion limits { - constexpr double max_vel = autoware_universe_utils::kmph2mps(100); // [m/s] maximum velocity - constexpr double max_slip = 30; // [deg] maximum slip angle + const double max_vel = object_model_.process_limit.vel_long_max; + const double max_slip = object_model_.bicycle_state.slip_angle_max; motion_model_.setMotionLimits(max_vel, max_slip); // maximum velocity and slip angle } // Set initial state { + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; const double x = object.kinematics.pose_with_covariance.pose.position.x; const double y = object.kinematics.pose_with_covariance.pose.position.y; const double yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); - auto pose_cov = object.kinematics.pose_with_covariance.covariance; - double vel = 0.0; - double vel_cov; - const double & length = bounding_box_.length; - - if (object.kinematics.has_twist) { - vel = object.kinematics.twist_with_covariance.twist.linear.x; - } + auto pose_cov = object.kinematics.pose_with_covariance.covariance; if (!object.kinematics.has_position_covariance) { // initial state covariance - constexpr double p0_stddev_x = 1.5; // in object coordinate [m] - constexpr double p0_stddev_y = 0.5; // in object coordinate [m] - constexpr double p0_stddev_yaw = - autoware_universe_utils::deg2rad(25); // in map coordinate [rad] - constexpr double p0_cov_x = p0_stddev_x * p0_stddev_x; - constexpr double p0_cov_y = p0_stddev_y * p0_stddev_y; - constexpr double p0_cov_yaw = p0_stddev_yaw * p0_stddev_yaw; + const auto & p0_cov_x = object_model_.initial_covariance.pos_x; + const auto & p0_cov_y = object_model_.initial_covariance.pos_y; + const auto & p0_cov_yaw = object_model_.initial_covariance.yaw; const double cos_yaw = std::cos(yaw); const double sin_yaw = std::sin(yaw); const double sin_2yaw = std::sin(2.0 * yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; - pose_cov[utils::MSG_COV_IDX::Y_Y] = - p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = p0_cov_yaw; + pose_cov[XYZRPY_COV_IDX::X_X] = p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; + pose_cov[XYZRPY_COV_IDX::Y_Y] = p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = p0_cov_yaw; } - if (!object.kinematics.has_twist_covariance) { - constexpr double p0_stddev_vel = - autoware_universe_utils::kmph2mps(1000); // in object coordinate [m/s] - vel_cov = std::pow(p0_stddev_vel, 2.0); - } else { - vel_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; + double vel = 0.0; + double vel_cov = object_model_.initial_covariance.vel_long; + if (object.kinematics.has_twist) { + vel = object.kinematics.twist_with_covariance.twist.linear.x; + } + if (object.kinematics.has_twist_covariance) { + vel_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X]; } const double slip = 0.0; - const double p0_stddev_slip = - autoware_universe_utils::deg2rad(5); // in object coordinate [rad/s] - const double slip_cov = std::pow(p0_stddev_slip, 2.0); + const double slip_cov = object_model_.bicycle_state.init_slip_angle_cov; + const double & length = bounding_box_.length; // initialize motion model motion_model_.initialize(time, x, y, yaw, pose_cov, vel, vel_cov, slip, slip_cov, length); @@ -190,14 +167,9 @@ autoware_perception_msgs::msg::DetectedObject BigVehicleTracker::getUpdatingObje { autoware_perception_msgs::msg::DetectedObject updating_object = object; - // current (predicted) state - const double tracked_x = motion_model_.getStateElement(IDX::X); - const double tracked_y = motion_model_.getStateElement(IDX::Y); - const double tracked_yaw = motion_model_.getStateElement(IDX::YAW); - // OBJECT SHAPE MODEL // convert to bounding box if input is convex shape - autoware_perception_msgs::msg::DetectedObject bbox_object; + autoware_perception_msgs::msg::DetectedObject bbox_object = object; if (object.shape.type != autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { if (!utils::convertConvexHullToBoundingBox(object, bbox_object)) { RCLCPP_WARN( @@ -205,10 +177,13 @@ autoware_perception_msgs::msg::DetectedObject BigVehicleTracker::getUpdatingObje "BigVehicleTracker::getUpdatingObject: Failed to convert convex hull to bounding box."); bbox_object = object; } - } else { - bbox_object = object; } + // current (predicted) state + const double tracked_x = motion_model_.getStateElement(IDX::X); + const double tracked_y = motion_model_.getStateElement(IDX::Y); + const double tracked_yaw = motion_model_.getStateElement(IDX::YAW); + // get offset measurement const int nearest_corner_index = utils::getNearestCornerOrSurface( tracked_x, tracked_y, tracked_yaw, bounding_box_.width, bounding_box_.length, self_transform); @@ -219,50 +194,45 @@ autoware_perception_msgs::msg::DetectedObject BigVehicleTracker::getUpdatingObje // UNCERTAINTY MODEL if (!object.kinematics.has_position_covariance) { // measurement noise covariance - float r_cov_x; - float r_cov_y; - using Label = autoware_perception_msgs::msg::ObjectClassification; + auto r_cov_x = object_model_.measurement_covariance.pos_x; + auto r_cov_y = object_model_.measurement_covariance.pos_y; const uint8_t label = object_recognition_utils::getHighestProbLabel(object.classification); - if (utils::isLargeVehicleLabel(label)) { - r_cov_x = ekf_params_.r_cov_x; - r_cov_y = ekf_params_.r_cov_y; - } else if (label == Label::CAR) { + if (label == autoware_perception_msgs::msg::ObjectClassification::CAR) { // if label is changed, enlarge the measurement noise covariance constexpr float r_stddev_x = 2.0; // [m] constexpr float r_stddev_y = 2.0; // [m] - r_cov_x = std::pow(r_stddev_x, 2.0); - r_cov_y = std::pow(r_stddev_y, 2.0); - } else { - r_cov_x = ekf_params_.r_cov_x; - r_cov_y = ekf_params_.r_cov_y; + r_cov_x = r_stddev_x * r_stddev_x; + r_cov_y = r_stddev_y * r_stddev_y; } // yaw angle fix - double pose_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); - bool is_yaw_available = object.kinematics.orientation_availability != - autoware_perception_msgs::msg::DetectedObjectKinematics::UNAVAILABLE; + const double pose_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); + const bool is_yaw_available = + object.kinematics.orientation_availability != + autoware_perception_msgs::msg::DetectedObjectKinematics::UNAVAILABLE; // fill covariance matrix + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; auto & pose_cov = updating_object.kinematics.pose_with_covariance.covariance; const double cos_yaw = std::cos(pose_yaw); const double sin_yaw = std::sin(pose_yaw); - const double sin_2yaw = std::sin(2.0f * pose_yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5f * (r_cov_x - r_cov_y) * sin_2yaw; // x - y - pose_cov[utils::MSG_COV_IDX::Y_Y] = - r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; // y - x - pose_cov[utils::MSG_COV_IDX::X_YAW] = 0.0; // x - yaw - pose_cov[utils::MSG_COV_IDX::Y_YAW] = 0.0; // y - yaw - pose_cov[utils::MSG_COV_IDX::YAW_X] = 0.0; // yaw - x - pose_cov[utils::MSG_COV_IDX::YAW_Y] = 0.0; // yaw - y - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = ekf_params_.r_cov_yaw; // yaw - yaw + const double sin_2yaw = std::sin(2.0 * pose_yaw); + pose_cov[XYZRPY_COV_IDX::X_X] = + r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (r_cov_x - r_cov_y) * sin_2yaw; // x - y + pose_cov[XYZRPY_COV_IDX::Y_Y] = + r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; // y - x + pose_cov[XYZRPY_COV_IDX::X_YAW] = 0.0; // x - yaw + pose_cov[XYZRPY_COV_IDX::Y_YAW] = 0.0; // y - yaw + pose_cov[XYZRPY_COV_IDX::YAW_X] = 0.0; // yaw - x + pose_cov[XYZRPY_COV_IDX::YAW_Y] = 0.0; // yaw - y + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = object_model_.measurement_covariance.yaw; // yaw - yaw if (!is_yaw_available) { - pose_cov[utils::MSG_COV_IDX::YAW_YAW] *= 1e3; // yaw is not available, multiply large value + pose_cov[XYZRPY_COV_IDX::YAW_YAW] *= 1e3; // yaw is not available, multiply large value } auto & twist_cov = updating_object.kinematics.twist_with_covariance.covariance; - twist_cov[utils::MSG_COV_IDX::X_X] = ekf_params_.r_cov_vel; // vel - vel + twist_cov[XYZRPY_COV_IDX::X_X] = object_model_.measurement_covariance.vel_long; // vel - vel } return updating_object; @@ -314,34 +284,35 @@ bool BigVehicleTracker::measureWithPose( bool BigVehicleTracker::measureWithShape( const autoware_perception_msgs::msg::DetectedObject & object) { - if (!object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { + if (object.shape.type != autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { // do not update shape if the input is not a bounding box return false; } // check object size abnormality - constexpr double size_max = 40.0; // [m] + constexpr double size_max = 35.0; // [m] constexpr double size_min = 1.0; // [m] - if (object.shape.dimensions.x > size_max || object.shape.dimensions.y > size_max) { - return false; - } else if (object.shape.dimensions.x < size_min || object.shape.dimensions.y < size_min) { + bool is_size_valid = + (object.shape.dimensions.x <= size_max && object.shape.dimensions.y <= size_max && + object.shape.dimensions.x >= size_min && object.shape.dimensions.y >= size_min); + if (!is_size_valid) { return false; } + // update object size constexpr double gain = 0.5; constexpr double gain_inv = 1.0 - gain; - - // update object size bounding_box_.length = gain_inv * bounding_box_.length + gain * object.shape.dimensions.x; bounding_box_.width = gain_inv * bounding_box_.width + gain * object.shape.dimensions.y; bounding_box_.height = gain_inv * bounding_box_.height + gain * object.shape.dimensions.z; // set maximum and minimum size - constexpr double max_size = 30.0; - constexpr double min_size = 1.0; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); // update motion model motion_model_.updateExtendedState(bounding_box_.length); @@ -423,7 +394,7 @@ bool BigVehicleTracker::getTrackedObject( const auto origin_yaw = tf2::getYaw(object_.kinematics.pose_with_covariance.pose.orientation); const auto ekf_pose_yaw = tf2::getYaw(pose_with_cov.pose.orientation); object.shape.footprint = - autoware_universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); + autoware::universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); return true; } diff --git a/perception/multi_object_tracker/src/tracker/model/normal_vehicle_tracker.cpp b/perception/multi_object_tracker/src/tracker/model/normal_vehicle_tracker.cpp index 892b993a75348..67282893083c1 100644 --- a/perception/multi_object_tracker/src/tracker/model/normal_vehicle_tracker.cpp +++ b/perception/multi_object_tracker/src/tracker/model/normal_vehicle_tracker.cpp @@ -15,14 +15,19 @@ // // Author: v1.0 Yukihiro Saito // +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/model/normal_vehicle_tracker.hpp" +#include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/utils/utils.hpp" +#include "object_recognition_utils/object_recognition_utils.hpp" -#include -#include -#include +#include +#include #include #include @@ -34,11 +39,6 @@ #else #include #endif -#include "object_recognition_utils/object_recognition_utils.hpp" - -#define EIGEN_MPL2_ONLY -#include -#include using Label = autoware_perception_msgs::msg::ObjectClassification; @@ -56,21 +56,10 @@ NormalVehicleTracker::NormalVehicleTracker( // initialize existence probability initializeExistenceProbabilities(channel_index, object.existence_probability); - // Initialize parameters - // measurement noise covariance: detector uncertainty + ego vehicle motion uncertainty - float r_stddev_x = 0.5; // in vehicle coordinate [m] - float r_stddev_y = 0.4; // in vehicle coordinate [m] - float r_stddev_yaw = autoware_universe_utils::deg2rad(20); // in map coordinate [rad] - float r_stddev_vel = 1.0; // in object coordinate [m/s] - ekf_params_.r_cov_x = std::pow(r_stddev_x, 2.0); - ekf_params_.r_cov_y = std::pow(r_stddev_y, 2.0); - ekf_params_.r_cov_yaw = std::pow(r_stddev_yaw, 2.0); - ekf_params_.r_cov_vel = std::pow(r_stddev_vel, 2.0); - // velocity deviation threshold // if the predicted velocity is close to the observed velocity, // the observed velocity is used as the measurement. - velocity_deviation_threshold_ = autoware_universe_utils::kmph2mps(10); // [m/s] + velocity_deviation_threshold_ = autoware::universe_utils::kmph2mps(10); // [m/s] // OBJECT SHAPE MODEL if (object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { @@ -83,7 +72,9 @@ NormalVehicleTracker::NormalVehicleTracker( logger_, "NormalVehicleTracker::NormalVehicleTracker: Failed to convert convex hull to bounding " "box."); - bounding_box_ = {3.0, 2.0, 1.8}; // default value + bounding_box_ = { + object_model_.init_size.length, object_model_.init_size.width, + object_model_.init_size.height}; // default value } else { bounding_box_ = { bbox_object.shape.dimensions.x, bbox_object.shape.dimensions.y, @@ -91,28 +82,26 @@ NormalVehicleTracker::NormalVehicleTracker( } } // set maximum and minimum size - constexpr double max_size = 20.0; - constexpr double min_size = 1.0; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); // Set motion model parameters { - constexpr double q_stddev_acc_long = - 9.8 * 0.35; // [m/(s*s)] uncertain longitudinal acceleration - constexpr double q_stddev_acc_lat = 9.8 * 0.15; // [m/(s*s)] uncertain lateral acceleration - constexpr double q_stddev_yaw_rate_min = 1.5; // [deg/s] uncertain yaw change rate, minimum - constexpr double q_stddev_yaw_rate_max = 15.0; // [deg/s] uncertain yaw change rate, maximum - constexpr double q_stddev_slip_rate_min = - 0.3; // [deg/s] uncertain slip angle change rate, minimum - constexpr double q_stddev_slip_rate_max = - 10.0; // [deg/s] uncertain slip angle change rate, maximum - constexpr double q_max_slip_angle = 30; // [deg] max slip angle - constexpr double lf_ratio = 0.3; // [-] ratio of front wheel position - constexpr double lf_min = 1.0; // [m] minimum front wheel position - constexpr double lr_ratio = 0.25; // [-] ratio of rear wheel position - constexpr double lr_min = 1.0; // [m] minimum rear wheel position + const double q_stddev_acc_long = object_model_.process_noise.acc_long; + const double q_stddev_acc_lat = object_model_.process_noise.acc_lat; + const double q_stddev_yaw_rate_min = object_model_.process_noise.yaw_rate_min; + const double q_stddev_yaw_rate_max = object_model_.process_noise.yaw_rate_max; + const double q_stddev_slip_rate_min = object_model_.bicycle_state.slip_rate_stddev_min; + const double q_stddev_slip_rate_max = object_model_.bicycle_state.slip_rate_stddev_max; + const double q_max_slip_angle = object_model_.bicycle_state.slip_angle_max; + const double lf_ratio = object_model_.bicycle_state.wheel_pos_ratio_front; + const double lf_min = object_model_.bicycle_state.wheel_pos_front_min; + const double lr_ratio = object_model_.bicycle_state.wheel_pos_ratio_rear; + const double lr_min = object_model_.bicycle_state.wheel_pos_rear_min; motion_model_.setMotionParams( q_stddev_acc_long, q_stddev_acc_lat, q_stddev_yaw_rate_min, q_stddev_yaw_rate_max, q_stddev_slip_rate_min, q_stddev_slip_rate_max, q_max_slip_angle, lf_ratio, lf_min, lr_ratio, @@ -121,59 +110,47 @@ NormalVehicleTracker::NormalVehicleTracker( // Set motion limits { - constexpr double max_vel = autoware_universe_utils::kmph2mps(100); // [m/s] maximum velocity - constexpr double max_slip = 30; // [deg] maximum slip angle + const double max_vel = object_model_.process_limit.vel_long_max; + const double max_slip = object_model_.bicycle_state.slip_angle_max; motion_model_.setMotionLimits(max_vel, max_slip); // maximum velocity and slip angle } // Set initial state { + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; const double x = object.kinematics.pose_with_covariance.pose.position.x; const double y = object.kinematics.pose_with_covariance.pose.position.y; const double yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); - auto pose_cov = object.kinematics.pose_with_covariance.covariance; - double vel = 0.0; - double vel_cov; - const double & length = bounding_box_.length; - - if (object.kinematics.has_twist) { - vel = object.kinematics.twist_with_covariance.twist.linear.x; - } + auto pose_cov = object.kinematics.pose_with_covariance.covariance; if (!object.kinematics.has_position_covariance) { // initial state covariance - constexpr double p0_stddev_x = 1.0; // in object coordinate [m] - constexpr double p0_stddev_y = 0.3; // in object coordinate [m] - constexpr double p0_stddev_yaw = - autoware_universe_utils::deg2rad(25); // in map coordinate [rad] - constexpr double p0_cov_x = p0_stddev_x * p0_stddev_x; - constexpr double p0_cov_y = p0_stddev_y * p0_stddev_y; - constexpr double p0_cov_yaw = p0_stddev_yaw * p0_stddev_yaw; + const auto & p0_cov_x = object_model_.initial_covariance.pos_x; + const auto & p0_cov_y = object_model_.initial_covariance.pos_y; + const auto & p0_cov_yaw = object_model_.initial_covariance.yaw; const double cos_yaw = std::cos(yaw); const double sin_yaw = std::sin(yaw); const double sin_2yaw = std::sin(2.0 * yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; - pose_cov[utils::MSG_COV_IDX::Y_Y] = - p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = p0_cov_yaw; + pose_cov[XYZRPY_COV_IDX::X_X] = p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; + pose_cov[XYZRPY_COV_IDX::Y_Y] = p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = p0_cov_yaw; } - if (!object.kinematics.has_twist_covariance) { - constexpr double p0_stddev_vel = - autoware_universe_utils::kmph2mps(1000); // in object coordinate [m/s] - vel_cov = std::pow(p0_stddev_vel, 2.0); - } else { - vel_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; + double vel = 0.0; + double vel_cov = object_model_.initial_covariance.vel_long; + if (object.kinematics.has_twist) { + vel = object.kinematics.twist_with_covariance.twist.linear.x; + } + if (object.kinematics.has_twist_covariance) { + vel_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X]; } const double slip = 0.0; - const double p0_stddev_slip = - autoware_universe_utils::deg2rad(5); // in object coordinate [rad/s] - const double slip_cov = std::pow(p0_stddev_slip, 2.0); + const double slip_cov = object_model_.bicycle_state.init_slip_angle_cov; + const double & length = bounding_box_.length; // initialize motion model motion_model_.initialize(time, x, y, yaw, pose_cov, vel, vel_cov, slip, slip_cov, length); @@ -191,14 +168,9 @@ autoware_perception_msgs::msg::DetectedObject NormalVehicleTracker::getUpdatingO { autoware_perception_msgs::msg::DetectedObject updating_object = object; - // current (predicted) state - const double tracked_x = motion_model_.getStateElement(IDX::X); - const double tracked_y = motion_model_.getStateElement(IDX::Y); - const double tracked_yaw = motion_model_.getStateElement(IDX::YAW); - // OBJECT SHAPE MODEL // convert to bounding box if input is convex shape - autoware_perception_msgs::msg::DetectedObject bbox_object; + autoware_perception_msgs::msg::DetectedObject bbox_object = object; if (object.shape.type != autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { if (!utils::convertConvexHullToBoundingBox(object, bbox_object)) { RCLCPP_WARN( @@ -206,11 +178,13 @@ autoware_perception_msgs::msg::DetectedObject NormalVehicleTracker::getUpdatingO "NormalVehicleTracker::getUpdatingObject: Failed to convert convex hull to bounding box."); bbox_object = object; } - - } else { - bbox_object = object; } + // current (predicted) state + const double tracked_x = motion_model_.getStateElement(IDX::X); + const double tracked_y = motion_model_.getStateElement(IDX::Y); + const double tracked_yaw = motion_model_.getStateElement(IDX::YAW); + // get offset measurement const int nearest_corner_index = utils::getNearestCornerOrSurface( tracked_x, tracked_y, tracked_yaw, bounding_box_.width, bounding_box_.length, self_transform); @@ -221,50 +195,45 @@ autoware_perception_msgs::msg::DetectedObject NormalVehicleTracker::getUpdatingO // UNCERTAINTY MODEL if (!object.kinematics.has_position_covariance) { // measurement noise covariance - float r_cov_x; - float r_cov_y; - using Label = autoware_perception_msgs::msg::ObjectClassification; + auto r_cov_x = object_model_.measurement_covariance.pos_x; + auto r_cov_y = object_model_.measurement_covariance.pos_y; const uint8_t label = object_recognition_utils::getHighestProbLabel(object.classification); - if (label == Label::CAR) { - r_cov_x = ekf_params_.r_cov_x; - r_cov_y = ekf_params_.r_cov_y; - } else if (utils::isLargeVehicleLabel(label)) { + if (utils::isLargeVehicleLabel(label)) { // if label is changed, enlarge the measurement noise covariance constexpr float r_stddev_x = 2.0; // [m] constexpr float r_stddev_y = 2.0; // [m] - r_cov_x = std::pow(r_stddev_x, 2.0); - r_cov_y = std::pow(r_stddev_y, 2.0); - } else { - r_cov_x = ekf_params_.r_cov_x; - r_cov_y = ekf_params_.r_cov_y; + r_cov_x = r_stddev_x * r_stddev_x; + r_cov_y = r_stddev_y * r_stddev_y; } // yaw angle fix - double pose_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); - bool is_yaw_available = object.kinematics.orientation_availability != - autoware_perception_msgs::msg::DetectedObjectKinematics::UNAVAILABLE; + const double pose_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); + const bool is_yaw_available = + object.kinematics.orientation_availability != + autoware_perception_msgs::msg::DetectedObjectKinematics::UNAVAILABLE; // fill covariance matrix + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; auto & pose_cov = updating_object.kinematics.pose_with_covariance.covariance; const double cos_yaw = std::cos(pose_yaw); const double sin_yaw = std::sin(pose_yaw); - const double sin_2yaw = std::sin(2.0f * pose_yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5f * (r_cov_x - r_cov_y) * sin_2yaw; // x - y - pose_cov[utils::MSG_COV_IDX::Y_Y] = - r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; // y - x - pose_cov[utils::MSG_COV_IDX::X_YAW] = 0.0; // x - yaw - pose_cov[utils::MSG_COV_IDX::Y_YAW] = 0.0; // y - yaw - pose_cov[utils::MSG_COV_IDX::YAW_X] = 0.0; // yaw - x - pose_cov[utils::MSG_COV_IDX::YAW_Y] = 0.0; // yaw - y - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = ekf_params_.r_cov_yaw; // yaw - yaw + const double sin_2yaw = std::sin(2.0 * pose_yaw); + pose_cov[XYZRPY_COV_IDX::X_X] = + r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (r_cov_x - r_cov_y) * sin_2yaw; // x - y + pose_cov[XYZRPY_COV_IDX::Y_Y] = + r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; // y - x + pose_cov[XYZRPY_COV_IDX::X_YAW] = 0.0; // x - yaw + pose_cov[XYZRPY_COV_IDX::Y_YAW] = 0.0; // y - yaw + pose_cov[XYZRPY_COV_IDX::YAW_X] = 0.0; // yaw - x + pose_cov[XYZRPY_COV_IDX::YAW_Y] = 0.0; // yaw - y + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = object_model_.measurement_covariance.yaw; // yaw - yaw if (!is_yaw_available) { - pose_cov[utils::MSG_COV_IDX::YAW_YAW] *= 1e3; // yaw is not available, multiply large value + pose_cov[XYZRPY_COV_IDX::YAW_YAW] *= 1e3; // yaw is not available, multiply large value } auto & twist_cov = updating_object.kinematics.twist_with_covariance.covariance; - twist_cov[utils::MSG_COV_IDX::X_X] = ekf_params_.r_cov_vel; // vel - vel + twist_cov[XYZRPY_COV_IDX::X_X] = object_model_.measurement_covariance.vel_long; // vel - vel } return updating_object; @@ -316,34 +285,35 @@ bool NormalVehicleTracker::measureWithPose( bool NormalVehicleTracker::measureWithShape( const autoware_perception_msgs::msg::DetectedObject & object) { - if (!object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { + if (object.shape.type != autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { // do not update shape if the input is not a bounding box return false; } // check object size abnormality - constexpr double size_max = 30.0; // [m] + constexpr double size_max = 35.0; // [m] constexpr double size_min = 1.0; // [m] - if (object.shape.dimensions.x > size_max || object.shape.dimensions.y > size_max) { - return false; - } else if (object.shape.dimensions.x < size_min || object.shape.dimensions.y < size_min) { + bool is_size_valid = + (object.shape.dimensions.x <= size_max && object.shape.dimensions.y <= size_max && + object.shape.dimensions.x >= size_min && object.shape.dimensions.y >= size_min); + if (!is_size_valid) { return false; } + // update object size constexpr double gain = 0.5; constexpr double gain_inv = 1.0 - gain; - - // update object size bounding_box_.length = gain_inv * bounding_box_.length + gain * object.shape.dimensions.x; bounding_box_.width = gain_inv * bounding_box_.width + gain * object.shape.dimensions.y; bounding_box_.height = gain_inv * bounding_box_.height + gain * object.shape.dimensions.z; // set maximum and minimum size - constexpr double max_size = 20.0; - constexpr double min_size = 1.0; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); // update motion model motion_model_.updateExtendedState(bounding_box_.length); @@ -425,7 +395,7 @@ bool NormalVehicleTracker::getTrackedObject( const auto origin_yaw = tf2::getYaw(object_.kinematics.pose_with_covariance.pose.orientation); const auto ekf_pose_yaw = tf2::getYaw(pose_with_cov.pose.orientation); object.shape.footprint = - autoware_universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); + autoware::universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); return true; } diff --git a/perception/multi_object_tracker/src/tracker/model/pass_through_tracker.cpp b/perception/multi_object_tracker/src/tracker/model/pass_through_tracker.cpp index 3e4f23cd440bc..17be415480360 100644 --- a/perception/multi_object_tracker/src/tracker/model/pass_through_tracker.cpp +++ b/perception/multi_object_tracker/src/tracker/model/pass_through_tracker.cpp @@ -15,6 +15,15 @@ // // Author: v1.0 Yutaka Shimizu // +#define EIGEN_MPL2_ONLY +#include "multi_object_tracker/tracker/model/pass_through_tracker.hpp" + +#include "autoware/universe_utils/ros/msg_covariance.hpp" +#include "multi_object_tracker/utils/utils.hpp" +#include "object_recognition_utils/object_recognition_utils.hpp" + +#include +#include #include #include @@ -27,14 +36,6 @@ #include #endif -#define EIGEN_MPL2_ONLY -#include "multi_object_tracker/tracker/model/pass_through_tracker.hpp" -#include "multi_object_tracker/utils/utils.hpp" -#include "object_recognition_utils/object_recognition_utils.hpp" - -#include -#include - PassThroughTracker::PassThroughTracker( const rclcpp::Time & time, const autoware_perception_msgs::msg::DetectedObject & object, const geometry_msgs::msg::Transform & /*self_transform*/, const size_t channel_size, @@ -86,25 +87,26 @@ bool PassThroughTracker::measure( bool PassThroughTracker::getTrackedObject( const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const { + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; object = object_recognition_utils::toTrackedObject(object_); object.object_id = getUUID(); object.classification = getClassification(); - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_X] = 0.0; - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_Y] = 0.0; - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_X] = 0.0; - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y] = 0.0; - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Z_Z] = 0.0; - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::ROLL_ROLL] = 0.0; - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::PITCH_PITCH] = 0.0; - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::YAW_YAW] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_X] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_Y] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_X] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_Y] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Z_Z] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::ROLL_ROLL] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::PITCH_PITCH] = 0.0; + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::YAW_YAW] = 0.0; // twist covariance - object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X] = 0.0; - object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y] = 0.0; - object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::Z_Z] = 0.0; - object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::ROLL_ROLL] = 0.0; - object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::PITCH_PITCH] = 0.0; - object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::YAW_YAW] = 0.0; + object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X] = 0.0; + object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::Y_Y] = 0.0; + object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::Z_Z] = 0.0; + object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::ROLL_ROLL] = 0.0; + object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::PITCH_PITCH] = 0.0; + object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::YAW_YAW] = 0.0; const double dt = (time - last_update_time_).seconds(); if (0.5 /*500msec*/ < dt) { diff --git a/perception/multi_object_tracker/src/tracker/model/pedestrian_tracker.cpp b/perception/multi_object_tracker/src/tracker/model/pedestrian_tracker.cpp index 005d3c15df4df..d9412c3b5739c 100644 --- a/perception/multi_object_tracker/src/tracker/model/pedestrian_tracker.cpp +++ b/perception/multi_object_tracker/src/tracker/model/pedestrian_tracker.cpp @@ -15,14 +15,19 @@ // // Author: v1.0 Yukihiro Saito // +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/model/pedestrian_tracker.hpp" +#include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/utils/utils.hpp" +#include "object_recognition_utils/object_recognition_utils.hpp" -#include -#include -#include +#include +#include #include #include @@ -34,11 +39,6 @@ #else #include #endif -#include "object_recognition_utils/object_recognition_utils.hpp" - -#define EIGEN_MPL2_ONLY -#include -#include using Label = autoware_perception_msgs::msg::ObjectClassification; @@ -55,18 +55,11 @@ PedestrianTracker::PedestrianTracker( // initialize existence probability initializeExistenceProbabilities(channel_index, object.existence_probability); - // Initialize parameters - // measurement noise covariance - float r_stddev_x = 0.4; // [m] - float r_stddev_y = 0.4; // [m] - float r_stddev_yaw = autoware_universe_utils::deg2rad(30); // [rad] - ekf_params_.r_cov_x = std::pow(r_stddev_x, 2.0); - ekf_params_.r_cov_y = std::pow(r_stddev_y, 2.0); - ekf_params_.r_cov_yaw = std::pow(r_stddev_yaw, 2.0); - // OBJECT SHAPE MODEL - bounding_box_ = {0.5, 0.5, 1.7}; - cylinder_ = {0.5, 1.7}; + bounding_box_ = { + object_model_.init_size.length, object_model_.init_size.width, + object_model_.init_size.height}; // default value + cylinder_ = {object_model_.init_size.length, object_model_.init_size.height}; // default value if (object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { bounding_box_ = { object.shape.dimensions.x, object.shape.dimensions.y, object.shape.dimensions.z}; @@ -76,78 +69,70 @@ PedestrianTracker::PedestrianTracker( // do not update polygon shape } // set maximum and minimum size - constexpr double max_size = 5.0; - constexpr double min_size = 0.3; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); - cylinder_.width = std::min(std::max(cylinder_.width, min_size), max_size); - cylinder_.height = std::min(std::max(cylinder_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); + cylinder_.width = std::clamp( + cylinder_.width, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + cylinder_.height = std::clamp( + cylinder_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); // Set motion model parameters { - constexpr double q_stddev_x = 0.5; // [m/s] - constexpr double q_stddev_y = 0.5; // [m/s] - constexpr double q_stddev_yaw = autoware_universe_utils::deg2rad(20); // [rad/s] - constexpr double q_stddev_vx = 9.8 * 0.3; // [m/(s*s)] - constexpr double q_stddev_wz = autoware_universe_utils::deg2rad(30); // [rad/(s*s)] + const double q_stddev_x = object_model_.process_noise.vel_long; + const double q_stddev_y = object_model_.process_noise.vel_lat; + const double q_stddev_yaw = object_model_.process_noise.yaw_rate; + const double q_stddev_vx = object_model_.process_noise.acc_long; + const double q_stddev_wz = object_model_.process_noise.acc_turn; motion_model_.setMotionParams(q_stddev_x, q_stddev_y, q_stddev_yaw, q_stddev_vx, q_stddev_wz); } // Set motion limits - motion_model_.setMotionLimits( - autoware_universe_utils::kmph2mps(100), /* [m/s] maximum velocity */ - 30.0 /* [deg/s] maximum turn rate */ - ); + { + const double max_vel = object_model_.process_limit.vel_long_max; + const double max_turn_rate = object_model_.process_limit.yaw_rate_max; + motion_model_.setMotionLimits(max_vel, max_turn_rate); // maximum velocity and slip angle + } // Set initial state { + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; const double x = object.kinematics.pose_with_covariance.pose.position.x; const double y = object.kinematics.pose_with_covariance.pose.position.y; const double yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); - auto pose_cov = object.kinematics.pose_with_covariance.covariance; - double vel = 0.0; - double wz = 0.0; - double vel_cov; - double wz_cov; - - if (object.kinematics.has_twist) { - vel = object.kinematics.twist_with_covariance.twist.linear.x; - wz = object.kinematics.twist_with_covariance.twist.angular.z; - } + auto pose_cov = object.kinematics.pose_with_covariance.covariance; if (!object.kinematics.has_position_covariance) { // initial state covariance - constexpr double p0_stddev_x = 2.0; // in object coordinate [m] - constexpr double p0_stddev_y = 2.0; // in object coordinate [m] - constexpr double p0_stddev_yaw = - autoware_universe_utils::deg2rad(1000); // in map coordinate [rad] - constexpr double p0_cov_x = p0_stddev_x * p0_stddev_x; - constexpr double p0_cov_y = p0_stddev_y * p0_stddev_y; - constexpr double p0_cov_yaw = p0_stddev_yaw * p0_stddev_yaw; + const auto & p0_cov_x = object_model_.initial_covariance.pos_x; + const auto & p0_cov_y = object_model_.initial_covariance.pos_y; + const auto & p0_cov_yaw = object_model_.initial_covariance.yaw; const double cos_yaw = std::cos(yaw); const double sin_yaw = std::sin(yaw); const double sin_2yaw = std::sin(2.0 * yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; - pose_cov[utils::MSG_COV_IDX::Y_Y] = - p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = p0_cov_yaw; + pose_cov[XYZRPY_COV_IDX::X_X] = p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; + pose_cov[XYZRPY_COV_IDX::Y_Y] = p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = p0_cov_yaw; + } + + double vel = 0.0; + double wz = 0.0; + if (object.kinematics.has_twist) { + vel = object.kinematics.twist_with_covariance.twist.linear.x; + wz = object.kinematics.twist_with_covariance.twist.angular.z; } - if (!object.kinematics.has_twist_covariance) { - constexpr double p0_stddev_vel = - autoware_universe_utils::kmph2mps(120); // in object coordinate [m/s] - constexpr double p0_stddev_wz = - autoware_universe_utils::deg2rad(360); // in object coordinate [rad/s] - vel_cov = std::pow(p0_stddev_vel, 2.0); - wz_cov = std::pow(p0_stddev_wz, 2.0); - } else { - vel_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; - wz_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::YAW_YAW]; + double vel_cov = object_model_.initial_covariance.vel_long; + double wz_cov = object_model_.initial_covariance.yaw_rate; + if (object.kinematics.has_twist_covariance) { + vel_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X]; + wz_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::YAW_YAW]; } // initialize motion model @@ -162,26 +147,46 @@ bool PedestrianTracker::predict(const rclcpp::Time & time) autoware_perception_msgs::msg::DetectedObject PedestrianTracker::getUpdatingObject( const autoware_perception_msgs::msg::DetectedObject & object, - const geometry_msgs::msg::Transform & /*self_transform*/) + const geometry_msgs::msg::Transform & /*self_transform*/) const { autoware_perception_msgs::msg::DetectedObject updating_object = object; // UNCERTAINTY MODEL if (!object.kinematics.has_position_covariance) { - const double & r_cov_x = ekf_params_.r_cov_x; - const double & r_cov_y = ekf_params_.r_cov_y; - auto & pose_cov = updating_object.kinematics.pose_with_covariance.covariance; + // measurement noise covariance + auto r_cov_x = object_model_.measurement_covariance.pos_x; + auto r_cov_y = object_model_.measurement_covariance.pos_y; + + // yaw angle fix const double pose_yaw = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); + const bool is_yaw_available = + object.kinematics.orientation_availability != + autoware_perception_msgs::msg::DetectedObjectKinematics::UNAVAILABLE; + + // fill covariance matrix + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + auto & pose_cov = updating_object.kinematics.pose_with_covariance.covariance; const double cos_yaw = std::cos(pose_yaw); const double sin_yaw = std::sin(pose_yaw); - const double sin_2yaw = std::sin(2.0f * pose_yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5f * (r_cov_x - r_cov_y) * sin_2yaw; // x - y - pose_cov[utils::MSG_COV_IDX::Y_Y] = - r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; // y - x + const double sin_2yaw = std::sin(2.0 * pose_yaw); + pose_cov[XYZRPY_COV_IDX::X_X] = + r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (r_cov_x - r_cov_y) * sin_2yaw; // x - y + pose_cov[XYZRPY_COV_IDX::Y_Y] = + r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; // y - x + pose_cov[XYZRPY_COV_IDX::X_YAW] = 0.0; // x - yaw + pose_cov[XYZRPY_COV_IDX::Y_YAW] = 0.0; // y - yaw + pose_cov[XYZRPY_COV_IDX::YAW_X] = 0.0; // yaw - x + pose_cov[XYZRPY_COV_IDX::YAW_Y] = 0.0; // yaw - y + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = object_model_.measurement_covariance.yaw; // yaw - yaw + if (!is_yaw_available) { + pose_cov[XYZRPY_COV_IDX::YAW_YAW] *= 1e3; // yaw is not available, multiply large value + } + auto & twist_cov = updating_object.kinematics.twist_with_covariance.covariance; + twist_cov[XYZRPY_COV_IDX::X_X] = object_model_.measurement_covariance.vel_long; // vel - vel } + return updating_object; } @@ -216,43 +221,48 @@ bool PedestrianTracker::measureWithShape( // check bound box size abnormality constexpr double size_max = 30.0; // [m] constexpr double size_min = 0.1; // [m] - if ( - object.shape.dimensions.x > size_max || object.shape.dimensions.y > size_max || - object.shape.dimensions.z > size_max) { - return false; - } else if ( - object.shape.dimensions.x < size_min || object.shape.dimensions.y < size_min || - object.shape.dimensions.z < size_min) { + bool is_size_valid = + (object.shape.dimensions.x <= size_max && object.shape.dimensions.y <= size_max && + object.shape.dimensions.z <= size_max && object.shape.dimensions.x >= size_min && + object.shape.dimensions.y >= size_min && object.shape.dimensions.z >= size_min); + if (!is_size_valid) { return false; } // update bounding box size bounding_box_.length = gain_inv * bounding_box_.length + gain * object.shape.dimensions.x; bounding_box_.width = gain_inv * bounding_box_.width + gain * object.shape.dimensions.y; bounding_box_.height = gain_inv * bounding_box_.height + gain * object.shape.dimensions.z; + } else if (object.shape.type == autoware_perception_msgs::msg::Shape::CYLINDER) { // check cylinder size abnormality constexpr double size_max = 30.0; // [m] constexpr double size_min = 0.1; // [m] - if (object.shape.dimensions.x > size_max || object.shape.dimensions.z > size_max) { - return false; - } else if (object.shape.dimensions.x < size_min || object.shape.dimensions.z < size_min) { + bool is_size_valid = + (object.shape.dimensions.x <= size_max && object.shape.dimensions.z <= size_max && + object.shape.dimensions.x >= size_min && object.shape.dimensions.z >= size_min); + if (!is_size_valid) { return false; } + // update cylinder size cylinder_.width = gain_inv * cylinder_.width + gain * object.shape.dimensions.x; cylinder_.height = gain_inv * cylinder_.height + gain * object.shape.dimensions.z; + } else { // do not update polygon shape return false; } // set maximum and minimum size - constexpr double max_size = 5.0; - constexpr double min_size = 0.3; - bounding_box_.length = std::min(std::max(bounding_box_.length, min_size), max_size); - bounding_box_.width = std::min(std::max(bounding_box_.width, min_size), max_size); - bounding_box_.height = std::min(std::max(bounding_box_.height, min_size), max_size); - cylinder_.width = std::min(std::max(cylinder_.width, min_size), max_size); - cylinder_.height = std::min(std::max(cylinder_.height, min_size), max_size); + bounding_box_.length = std::clamp( + bounding_box_.length, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + bounding_box_.width = std::clamp( + bounding_box_.width, object_model_.size_limit.width_min, object_model_.size_limit.width_max); + bounding_box_.height = std::clamp( + bounding_box_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); + cylinder_.width = std::clamp( + cylinder_.width, object_model_.size_limit.length_min, object_model_.size_limit.length_max); + cylinder_.height = std::clamp( + cylinder_.height, object_model_.size_limit.height_min, object_model_.size_limit.height_max); return true; } @@ -323,7 +333,7 @@ bool PedestrianTracker::getTrackedObject( const auto origin_yaw = tf2::getYaw(object_.kinematics.pose_with_covariance.pose.orientation); const auto ekf_pose_yaw = tf2::getYaw(pose_with_cov.pose.orientation); object.shape.footprint = - autoware_universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); + autoware::universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); } return true; diff --git a/perception/multi_object_tracker/src/tracker/model/unknown_tracker.cpp b/perception/multi_object_tracker/src/tracker/model/unknown_tracker.cpp index 52952c7820396..6905d7c3b8ced 100644 --- a/perception/multi_object_tracker/src/tracker/model/unknown_tracker.cpp +++ b/perception/multi_object_tracker/src/tracker/model/unknown_tracker.cpp @@ -11,14 +11,18 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/model/unknown_tracker.hpp" +#include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/utils/utils.hpp" -#include -#include -#include +#include +#include #include #include @@ -32,10 +36,6 @@ #endif #include "object_recognition_utils/object_recognition_utils.hpp" -#define EIGEN_MPL2_ONLY -#include -#include - UnknownTracker::UnknownTracker( const rclcpp::Time & time, const autoware_perception_msgs::msg::DetectedObject & object, const geometry_msgs::msg::Transform & /*self_transform*/, const size_t channel_size, @@ -67,12 +67,13 @@ UnknownTracker::UnknownTracker( // Set motion limits motion_model_.setMotionLimits( - autoware_universe_utils::kmph2mps(60), /* [m/s] maximum velocity, x */ - autoware_universe_utils::kmph2mps(60) /* [m/s] maximum velocity, y */ + autoware::universe_utils::kmph2mps(60), /* [m/s] maximum velocity, x */ + autoware::universe_utils::kmph2mps(60) /* [m/s] maximum velocity, y */ ); // Set initial state { + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; const double x = object.kinematics.pose_with_covariance.pose.position.x; const double y = object.kinematics.pose_with_covariance.pose.position.y; auto pose_cov = object.kinematics.pose_with_covariance.covariance; @@ -98,37 +99,35 @@ UnknownTracker::UnknownTracker( const double cos_yaw = std::cos(yaw); const double sin_yaw = std::sin(yaw); const double sin_2yaw = std::sin(2.0 * yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; - pose_cov[utils::MSG_COV_IDX::Y_Y] = - p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; + pose_cov[XYZRPY_COV_IDX::X_X] = p0_cov_x * cos_yaw * cos_yaw + p0_cov_y * sin_yaw * sin_yaw; + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5 * (p0_cov_x - p0_cov_y) * sin_2yaw; + pose_cov[XYZRPY_COV_IDX::Y_Y] = p0_cov_x * sin_yaw * sin_yaw + p0_cov_y * cos_yaw * cos_yaw; + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; } if (!object.kinematics.has_twist_covariance) { - constexpr double p0_stddev_vx = autoware_universe_utils::kmph2mps(10); // [m/s] - constexpr double p0_stddev_vy = autoware_universe_utils::kmph2mps(10); // [m/s] + constexpr double p0_stddev_vx = autoware::universe_utils::kmph2mps(10); // [m/s] + constexpr double p0_stddev_vy = autoware::universe_utils::kmph2mps(10); // [m/s] const double p0_cov_vx = std::pow(p0_stddev_vx, 2.0); const double p0_cov_vy = std::pow(p0_stddev_vy, 2.0); - twist_cov[utils::MSG_COV_IDX::X_X] = p0_cov_vx; - twist_cov[utils::MSG_COV_IDX::X_Y] = 0.0; - twist_cov[utils::MSG_COV_IDX::Y_X] = 0.0; - twist_cov[utils::MSG_COV_IDX::Y_Y] = p0_cov_vy; + twist_cov[XYZRPY_COV_IDX::X_X] = p0_cov_vx; + twist_cov[XYZRPY_COV_IDX::X_Y] = 0.0; + twist_cov[XYZRPY_COV_IDX::Y_X] = 0.0; + twist_cov[XYZRPY_COV_IDX::Y_Y] = p0_cov_vy; } // rotate twist covariance matrix, since it is in the vehicle coordinate system Eigen::MatrixXd twist_cov_rotate(2, 2); - twist_cov_rotate(0, 0) = twist_cov[utils::MSG_COV_IDX::X_X]; - twist_cov_rotate(0, 1) = twist_cov[utils::MSG_COV_IDX::X_Y]; - twist_cov_rotate(1, 0) = twist_cov[utils::MSG_COV_IDX::Y_X]; - twist_cov_rotate(1, 1) = twist_cov[utils::MSG_COV_IDX::Y_Y]; + twist_cov_rotate(0, 0) = twist_cov[XYZRPY_COV_IDX::X_X]; + twist_cov_rotate(0, 1) = twist_cov[XYZRPY_COV_IDX::X_Y]; + twist_cov_rotate(1, 0) = twist_cov[XYZRPY_COV_IDX::Y_X]; + twist_cov_rotate(1, 1) = twist_cov[XYZRPY_COV_IDX::Y_Y]; Eigen::MatrixXd R_yaw = Eigen::Rotation2Dd(-yaw).toRotationMatrix(); Eigen::MatrixXd twist_cov_rotated = R_yaw * twist_cov_rotate * R_yaw.transpose(); - twist_cov[utils::MSG_COV_IDX::X_X] = twist_cov_rotated(0, 0); - twist_cov[utils::MSG_COV_IDX::X_Y] = twist_cov_rotated(0, 1); - twist_cov[utils::MSG_COV_IDX::Y_X] = twist_cov_rotated(1, 0); - twist_cov[utils::MSG_COV_IDX::Y_Y] = twist_cov_rotated(1, 1); + twist_cov[XYZRPY_COV_IDX::X_X] = twist_cov_rotated(0, 0); + twist_cov[XYZRPY_COV_IDX::X_Y] = twist_cov_rotated(0, 1); + twist_cov[XYZRPY_COV_IDX::Y_X] = twist_cov_rotated(1, 0); + twist_cov[XYZRPY_COV_IDX::Y_Y] = twist_cov_rotated(1, 1); // initialize motion model motion_model_.initialize(time, x, y, pose_cov, vx, vy, twist_cov); @@ -148,6 +147,8 @@ autoware_perception_msgs::msg::DetectedObject UnknownTracker::getUpdatingObject( // UNCERTAINTY MODEL if (!object.kinematics.has_position_covariance) { + // fill covariance matrix + using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; const double & r_cov_x = ekf_params_.r_cov_x; const double & r_cov_y = ekf_params_.r_cov_y; auto & pose_cov = updating_object.kinematics.pose_with_covariance.covariance; @@ -155,12 +156,12 @@ autoware_perception_msgs::msg::DetectedObject UnknownTracker::getUpdatingObject( const double cos_yaw = std::cos(pose_yaw); const double sin_yaw = std::sin(pose_yaw); const double sin_2yaw = std::sin(2.0f * pose_yaw); - pose_cov[utils::MSG_COV_IDX::X_X] = - r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x - pose_cov[utils::MSG_COV_IDX::X_Y] = 0.5f * (r_cov_x - r_cov_y) * sin_2yaw; // x - y - pose_cov[utils::MSG_COV_IDX::Y_Y] = - r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y - pose_cov[utils::MSG_COV_IDX::Y_X] = pose_cov[utils::MSG_COV_IDX::X_Y]; // y - x + pose_cov[XYZRPY_COV_IDX::X_X] = + r_cov_x * cos_yaw * cos_yaw + r_cov_y * sin_yaw * sin_yaw; // x - x + pose_cov[XYZRPY_COV_IDX::X_Y] = 0.5f * (r_cov_x - r_cov_y) * sin_2yaw; // x - y + pose_cov[XYZRPY_COV_IDX::Y_Y] = + r_cov_x * sin_yaw * sin_yaw + r_cov_y * cos_yaw * cos_yaw; // y - y + pose_cov[XYZRPY_COV_IDX::Y_X] = pose_cov[XYZRPY_COV_IDX::X_Y]; // y - x } return updating_object; } diff --git a/perception/multi_object_tracker/src/tracker/motion_model/bicycle_motion_model.cpp b/perception/multi_object_tracker/src/tracker/motion_model/bicycle_motion_model.cpp index bf040d417e6bb..466108a2bef0e 100644 --- a/perception/multi_object_tracker/src/tracker/motion_model/bicycle_motion_model.cpp +++ b/perception/multi_object_tracker/src/tracker/motion_model/bicycle_motion_model.cpp @@ -15,25 +15,25 @@ // // Author: v1.0 Taekjin Lee // +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/motion_model/bicycle_motion_model.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/tracker/motion_model/motion_model_base.hpp" #include "multi_object_tracker/utils/utils.hpp" -#include -#include - -#define EIGEN_MPL2_ONLY #include #include // cspell: ignore CTRV // Bicycle CTRV motion model // CTRV : Constant Turn Rate and constant Velocity +using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; -BicycleMotionModel::BicycleMotionModel() -: MotionModel(), logger_(rclcpp::get_logger("BicycleMotionModel")) +BicycleMotionModel::BicycleMotionModel() : logger_(rclcpp::get_logger("BicycleMotionModel")) { // Initialize motion parameters setDefaultParams(); @@ -44,11 +44,16 @@ void BicycleMotionModel::setDefaultParams() // set default motion parameters constexpr double q_stddev_acc_long = 9.8 * 0.35; // [m/(s*s)] uncertain longitudinal acceleration constexpr double q_stddev_acc_lat = 9.8 * 0.15; // [m/(s*s)] uncertain lateral acceleration - constexpr double q_stddev_yaw_rate_min = 1.5; // [deg/s] uncertain yaw change rate - constexpr double q_stddev_yaw_rate_max = 15.0; // [deg/s] uncertain yaw change rate - constexpr double q_stddev_slip_rate_min = 0.3; // [deg/s] uncertain slip angle change rate - constexpr double q_stddev_slip_rate_max = 10.0; // [deg/s] uncertain slip angle change rate - constexpr double q_max_slip_angle = 30.0; // [deg] max slip angle + constexpr double q_stddev_yaw_rate_min = + autoware::universe_utils::deg2rad(1.5); // [rad/s] uncertain yaw change rate + constexpr double q_stddev_yaw_rate_max = + autoware::universe_utils::deg2rad(15.0); // [rad/s] uncertain yaw change rate + constexpr double q_stddev_slip_rate_min = + autoware::universe_utils::deg2rad(0.3); // [rad/s] uncertain slip angle change rate + constexpr double q_stddev_slip_rate_max = + autoware::universe_utils::deg2rad(10.0); // [rad/s] uncertain slip angle change rate + constexpr double q_max_slip_angle = + autoware::universe_utils::deg2rad(30.0); // [rad] max slip angle // extended state parameters constexpr double lf_ratio = 0.3; // 30% front from the center constexpr double lf_min = 1.0; // minimum of 1.0m @@ -60,8 +65,8 @@ void BicycleMotionModel::setDefaultParams() lr_min); // set motion limitations - constexpr double max_vel = autoware_universe_utils::kmph2mps(100); // [m/s] maximum velocity - constexpr double max_slip = 30.0; // [deg] maximum slip angle + constexpr double max_vel = autoware::universe_utils::kmph2mps(100); // [m/s] maximum velocity + constexpr double max_slip = 30.0; // [deg] maximum slip angle setMotionLimits(max_vel, max_slip); // set prediction parameters @@ -79,13 +84,13 @@ void BicycleMotionModel::setMotionParams( // set process noise covariance parameters motion_params_.q_stddev_acc_long = q_stddev_acc_long; motion_params_.q_stddev_acc_lat = q_stddev_acc_lat; - motion_params_.q_stddev_yaw_rate_min = autoware_universe_utils::deg2rad(q_stddev_yaw_rate_min); - motion_params_.q_stddev_yaw_rate_max = autoware_universe_utils::deg2rad(q_stddev_yaw_rate_max); - motion_params_.q_cov_slip_rate_min = - std::pow(autoware_universe_utils::deg2rad(q_stddev_slip_rate_min), 2.0); - motion_params_.q_cov_slip_rate_max = - std::pow(autoware_universe_utils::deg2rad(q_stddev_slip_rate_max), 2.0); - motion_params_.q_max_slip_angle = autoware_universe_utils::deg2rad(q_max_slip_angle); + motion_params_.q_cov_acc_long = q_stddev_acc_long * q_stddev_acc_long; + motion_params_.q_cov_acc_lat = q_stddev_acc_lat * q_stddev_acc_lat; + motion_params_.q_stddev_yaw_rate_min = q_stddev_yaw_rate_min; + motion_params_.q_stddev_yaw_rate_max = q_stddev_yaw_rate_max; + motion_params_.q_cov_slip_rate_min = q_stddev_slip_rate_min * q_stddev_slip_rate_min; + motion_params_.q_cov_slip_rate_max = q_stddev_slip_rate_max * q_stddev_slip_rate_max; + motion_params_.q_max_slip_angle = q_max_slip_angle; constexpr double minimum_wheel_pos = 0.01; // minimum of 0.01m if (lf_min < minimum_wheel_pos || lr_min < minimum_wheel_pos) { @@ -103,7 +108,7 @@ void BicycleMotionModel::setMotionLimits(const double & max_vel, const double & { // set motion limitations motion_params_.max_vel = max_vel; - motion_params_.max_slip = autoware_universe_utils::deg2rad(max_slip); + motion_params_.max_slip = max_slip; } bool BicycleMotionModel::initialize( @@ -117,9 +122,9 @@ bool BicycleMotionModel::initialize( // initialize covariance matrix P Eigen::MatrixXd P = Eigen::MatrixXd::Zero(DIM, DIM); - P(IDX::X, IDX::X) = pose_cov[utils::MSG_COV_IDX::X_X]; - P(IDX::Y, IDX::Y) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - P(IDX::YAW, IDX::YAW) = pose_cov[utils::MSG_COV_IDX::YAW_YAW]; + P(IDX::X, IDX::X) = pose_cov[XYZRPY_COV_IDX::X_X]; + P(IDX::Y, IDX::Y) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + P(IDX::YAW, IDX::YAW) = pose_cov[XYZRPY_COV_IDX::YAW_YAW]; P(IDX::VEL, IDX::VEL) = vel_cov; P(IDX::SLIP, IDX::SLIP) = slip_cov; @@ -147,10 +152,10 @@ bool BicycleMotionModel::updateStatePose( C(1, IDX::Y) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; return ekf_.update(Y, C, R); } @@ -186,15 +191,15 @@ bool BicycleMotionModel::updateStatePoseHead( C(2, IDX::YAW) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - R(0, 2) = pose_cov[utils::MSG_COV_IDX::X_YAW]; - R(1, 2) = pose_cov[utils::MSG_COV_IDX::Y_YAW]; - R(2, 0) = pose_cov[utils::MSG_COV_IDX::YAW_X]; - R(2, 1) = pose_cov[utils::MSG_COV_IDX::YAW_Y]; - R(2, 2) = pose_cov[utils::MSG_COV_IDX::YAW_YAW]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + R(0, 2) = pose_cov[XYZRPY_COV_IDX::X_YAW]; + R(1, 2) = pose_cov[XYZRPY_COV_IDX::Y_YAW]; + R(2, 0) = pose_cov[XYZRPY_COV_IDX::YAW_X]; + R(2, 1) = pose_cov[XYZRPY_COV_IDX::YAW_Y]; + R(2, 2) = pose_cov[XYZRPY_COV_IDX::YAW_YAW]; return ekf_.update(Y, C, R); } @@ -232,16 +237,16 @@ bool BicycleMotionModel::updateStatePoseHeadVel( C(3, IDX::VEL) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - R(0, 2) = pose_cov[utils::MSG_COV_IDX::X_YAW]; - R(1, 2) = pose_cov[utils::MSG_COV_IDX::Y_YAW]; - R(2, 0) = pose_cov[utils::MSG_COV_IDX::YAW_X]; - R(2, 1) = pose_cov[utils::MSG_COV_IDX::YAW_Y]; - R(2, 2) = pose_cov[utils::MSG_COV_IDX::YAW_YAW]; - R(3, 3) = twist_cov[utils::MSG_COV_IDX::X_X]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + R(0, 2) = pose_cov[XYZRPY_COV_IDX::X_YAW]; + R(1, 2) = pose_cov[XYZRPY_COV_IDX::Y_YAW]; + R(2, 0) = pose_cov[XYZRPY_COV_IDX::YAW_X]; + R(2, 1) = pose_cov[XYZRPY_COV_IDX::YAW_Y]; + R(2, 2) = pose_cov[XYZRPY_COV_IDX::YAW_YAW]; + R(3, 3) = twist_cov[XYZRPY_COV_IDX::X_X]; return ekf_.update(Y, C, R); } @@ -252,7 +257,7 @@ bool BicycleMotionModel::limitStates() Eigen::MatrixXd P_t(DIM, DIM); ekf_.getX(X_t); ekf_.getP(P_t); - X_t(IDX::YAW) = autoware_universe_utils::normalizeRadian(X_t(IDX::YAW)); + X_t(IDX::YAW) = autoware::universe_utils::normalizeRadian(X_t(IDX::YAW)); if (!(-motion_params_.max_vel <= X_t(IDX::VEL) && X_t(IDX::VEL) <= motion_params_.max_vel)) { X_t(IDX::VEL) = X_t(IDX::VEL) < 0 ? -motion_params_.max_vel : motion_params_.max_vel; } @@ -354,10 +359,8 @@ bool BicycleMotionModel::predictStateStep(const double dt, KalmanFilter & ekf) c A(IDX::YAW, IDX::SLIP) = vel / lr_ * cos_slip * dt; // Process noise covariance Q - double q_stddev_yaw_rate{0.0}; - if (vel <= 0.01) { - q_stddev_yaw_rate = motion_params_.q_stddev_yaw_rate_min; - } else { + double q_stddev_yaw_rate = motion_params_.q_stddev_yaw_rate_min; + if (vel > 0.01) { /* uncertainty of the yaw rate is limited by the following: * - centripetal acceleration a_lat : d(yaw)/dt = w = a_lat/v * - or maximum slip angle slip_max : w = v*sin(slip_max)/l_r @@ -365,8 +368,9 @@ bool BicycleMotionModel::predictStateStep(const double dt, KalmanFilter & ekf) c q_stddev_yaw_rate = std::min( motion_params_.q_stddev_acc_lat / vel, vel * std::sin(motion_params_.q_max_slip_angle) / lr_); // [rad/s] - q_stddev_yaw_rate = std::min(q_stddev_yaw_rate, motion_params_.q_stddev_yaw_rate_max); - q_stddev_yaw_rate = std::max(q_stddev_yaw_rate, motion_params_.q_stddev_yaw_rate_min); + q_stddev_yaw_rate = std::clamp( + q_stddev_yaw_rate, motion_params_.q_stddev_yaw_rate_min, + motion_params_.q_stddev_yaw_rate_max); } double q_cov_slip_rate{0.0}; if (vel <= 0.01) { @@ -384,11 +388,13 @@ bool BicycleMotionModel::predictStateStep(const double dt, KalmanFilter & ekf) c q_cov_slip_rate = std::min(q_cov_slip_rate, motion_params_.q_cov_slip_rate_max); q_cov_slip_rate = std::max(q_cov_slip_rate, motion_params_.q_cov_slip_rate_min); } - const double q_cov_x = std::pow(0.5 * motion_params_.q_stddev_acc_long * dt * dt, 2); - const double q_cov_y = std::pow(0.5 * motion_params_.q_stddev_acc_lat * dt * dt, 2); - const double q_cov_yaw = std::pow(q_stddev_yaw_rate * dt, 2); - const double q_cov_vel = std::pow(motion_params_.q_stddev_acc_long * dt, 2); - const double q_cov_slip = q_cov_slip_rate * dt * dt; + const double dt2 = dt * dt; + const double dt4 = dt2 * dt2; + const double q_cov_x = 0.25 * motion_params_.q_cov_acc_long * dt4; + const double q_cov_y = 0.25 * motion_params_.q_cov_acc_lat * dt4; + const double q_cov_yaw = q_stddev_yaw_rate * q_stddev_yaw_rate * dt2; + const double q_cov_vel = motion_params_.q_cov_acc_long * dt2; + const double q_cov_slip = q_cov_slip_rate * dt2; Eigen::MatrixXd Q = Eigen::MatrixXd::Zero(DIM, DIM); // Rotate the covariance matrix according to the vehicle yaw @@ -445,14 +451,14 @@ bool BicycleMotionModel::getPredictedState( constexpr double zz_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double rr_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double pp_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative - pose_cov[utils::MSG_COV_IDX::X_X] = P(IDX::X, IDX::X); - pose_cov[utils::MSG_COV_IDX::X_Y] = P(IDX::X, IDX::Y); - pose_cov[utils::MSG_COV_IDX::Y_X] = P(IDX::Y, IDX::X); - pose_cov[utils::MSG_COV_IDX::Y_Y] = P(IDX::Y, IDX::Y); - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = P(IDX::YAW, IDX::YAW); - pose_cov[utils::MSG_COV_IDX::Z_Z] = zz_cov; - pose_cov[utils::MSG_COV_IDX::ROLL_ROLL] = rr_cov; - pose_cov[utils::MSG_COV_IDX::PITCH_PITCH] = pp_cov; + pose_cov[XYZRPY_COV_IDX::X_X] = P(IDX::X, IDX::X); + pose_cov[XYZRPY_COV_IDX::X_Y] = P(IDX::X, IDX::Y); + pose_cov[XYZRPY_COV_IDX::Y_X] = P(IDX::Y, IDX::X); + pose_cov[XYZRPY_COV_IDX::Y_Y] = P(IDX::Y, IDX::Y); + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = P(IDX::YAW, IDX::YAW); + pose_cov[XYZRPY_COV_IDX::Z_Z] = zz_cov; + pose_cov[XYZRPY_COV_IDX::ROLL_ROLL] = rr_cov; + pose_cov[XYZRPY_COV_IDX::PITCH_PITCH] = pp_cov; // set twist covariance Eigen::MatrixXd cov_jacob(3, 2); @@ -466,18 +472,18 @@ bool BicycleMotionModel::getPredictedState( constexpr double vz_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double wx_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double wy_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative - twist_cov[utils::MSG_COV_IDX::X_X] = twist_cov_mat(0, 0); - twist_cov[utils::MSG_COV_IDX::X_Y] = twist_cov_mat(0, 1); - twist_cov[utils::MSG_COV_IDX::X_YAW] = twist_cov_mat(0, 2); - twist_cov[utils::MSG_COV_IDX::Y_X] = twist_cov_mat(1, 0); - twist_cov[utils::MSG_COV_IDX::Y_Y] = twist_cov_mat(1, 1); - twist_cov[utils::MSG_COV_IDX::Y_YAW] = twist_cov_mat(1, 2); - twist_cov[utils::MSG_COV_IDX::YAW_X] = twist_cov_mat(2, 0); - twist_cov[utils::MSG_COV_IDX::YAW_Y] = twist_cov_mat(2, 1); - twist_cov[utils::MSG_COV_IDX::YAW_YAW] = twist_cov_mat(2, 2); - twist_cov[utils::MSG_COV_IDX::Z_Z] = vz_cov; - twist_cov[utils::MSG_COV_IDX::ROLL_ROLL] = wx_cov; - twist_cov[utils::MSG_COV_IDX::PITCH_PITCH] = wy_cov; + twist_cov[XYZRPY_COV_IDX::X_X] = twist_cov_mat(0, 0); + twist_cov[XYZRPY_COV_IDX::X_Y] = twist_cov_mat(0, 1); + twist_cov[XYZRPY_COV_IDX::X_YAW] = twist_cov_mat(0, 2); + twist_cov[XYZRPY_COV_IDX::Y_X] = twist_cov_mat(1, 0); + twist_cov[XYZRPY_COV_IDX::Y_Y] = twist_cov_mat(1, 1); + twist_cov[XYZRPY_COV_IDX::Y_YAW] = twist_cov_mat(1, 2); + twist_cov[XYZRPY_COV_IDX::YAW_X] = twist_cov_mat(2, 0); + twist_cov[XYZRPY_COV_IDX::YAW_Y] = twist_cov_mat(2, 1); + twist_cov[XYZRPY_COV_IDX::YAW_YAW] = twist_cov_mat(2, 2); + twist_cov[XYZRPY_COV_IDX::Z_Z] = vz_cov; + twist_cov[XYZRPY_COV_IDX::ROLL_ROLL] = wx_cov; + twist_cov[XYZRPY_COV_IDX::PITCH_PITCH] = wy_cov; return true; } diff --git a/perception/multi_object_tracker/src/tracker/motion_model/ctrv_motion_model.cpp b/perception/multi_object_tracker/src/tracker/motion_model/ctrv_motion_model.cpp index af05590e3b05b..b19af1d26d162 100644 --- a/perception/multi_object_tracker/src/tracker/motion_model/ctrv_motion_model.cpp +++ b/perception/multi_object_tracker/src/tracker/motion_model/ctrv_motion_model.cpp @@ -15,23 +15,24 @@ // // Author: v1.0 Taekjin Lee // +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/motion_model/ctrv_motion_model.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/tracker/motion_model/motion_model_base.hpp" #include "multi_object_tracker/utils/utils.hpp" -#include -#include - -#define EIGEN_MPL2_ONLY #include #include // cspell: ignore CTRV // Constant Turn Rate and constant Velocity (CTRV) motion model +using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; -CTRVMotionModel::CTRVMotionModel() : MotionModel(), logger_(rclcpp::get_logger("CTRVMotionModel")) +CTRVMotionModel::CTRVMotionModel() : logger_(rclcpp::get_logger("CTRVMotionModel")) { // Initialize motion parameters setDefaultParams(); @@ -40,17 +41,17 @@ CTRVMotionModel::CTRVMotionModel() : MotionModel(), logger_(rclcpp::get_logger(" void CTRVMotionModel::setDefaultParams() { // process noise covariance - constexpr double q_stddev_x = 0.5; // [m/s] - constexpr double q_stddev_y = 0.5; // [m/s] - constexpr double q_stddev_yaw = autoware_universe_utils::deg2rad(20); // [rad/s] - constexpr double q_stddev_vel = 9.8 * 0.3; // [m/(s*s)] - constexpr double q_stddev_wz = autoware_universe_utils::deg2rad(30); // [rad/(s*s)] + constexpr double q_stddev_x = 0.5; // [m/s] + constexpr double q_stddev_y = 0.5; // [m/s] + constexpr double q_stddev_yaw = autoware::universe_utils::deg2rad(20); // [rad/s] + constexpr double q_stddev_vel = 9.8 * 0.3; // [m/(s*s)] + constexpr double q_stddev_wz = autoware::universe_utils::deg2rad(30); // [rad/(s*s)] setMotionParams(q_stddev_x, q_stddev_y, q_stddev_yaw, q_stddev_vel, q_stddev_wz); // set motion limitations - constexpr double max_vel = autoware_universe_utils::kmph2mps(10); // [m/s] maximum velocity - constexpr double max_wz = 30.0; // [deg] maximum yaw rate + constexpr double max_vel = autoware::universe_utils::kmph2mps(10); // [m/s] maximum velocity + constexpr double max_wz = 30.0; // [deg] maximum yaw rate setMotionLimits(max_vel, max_wz); // set prediction parameters @@ -63,18 +64,18 @@ void CTRVMotionModel::setMotionParams( const double & q_stddev_vel, const double & q_stddev_wz) { // set process noise covariance parameters - motion_params_.q_cov_x = std::pow(q_stddev_x, 2.0); - motion_params_.q_cov_y = std::pow(q_stddev_y, 2.0); - motion_params_.q_cov_yaw = std::pow(q_stddev_yaw, 2.0); - motion_params_.q_cov_vel = std::pow(q_stddev_vel, 2.0); - motion_params_.q_cov_wz = std::pow(q_stddev_wz, 2.0); + motion_params_.q_cov_x = q_stddev_x * q_stddev_x; + motion_params_.q_cov_y = q_stddev_y * q_stddev_y; + motion_params_.q_cov_yaw = q_stddev_yaw * q_stddev_yaw; + motion_params_.q_cov_vel = q_stddev_vel * q_stddev_vel; + motion_params_.q_cov_wz = q_stddev_wz * q_stddev_wz; } void CTRVMotionModel::setMotionLimits(const double & max_vel, const double & max_wz) { // set motion limitations motion_params_.max_vel = max_vel; - motion_params_.max_wz = autoware_universe_utils::deg2rad(max_wz); + motion_params_.max_wz = autoware::universe_utils::deg2rad(max_wz); } bool CTRVMotionModel::initialize( @@ -88,9 +89,9 @@ bool CTRVMotionModel::initialize( // initialize covariance matrix P Eigen::MatrixXd P = Eigen::MatrixXd::Zero(DIM, DIM); - P(IDX::X, IDX::X) = pose_cov[utils::MSG_COV_IDX::X_X]; - P(IDX::Y, IDX::Y) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - P(IDX::YAW, IDX::YAW) = pose_cov[utils::MSG_COV_IDX::YAW_YAW]; + P(IDX::X, IDX::X) = pose_cov[XYZRPY_COV_IDX::X_X]; + P(IDX::Y, IDX::Y) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + P(IDX::YAW, IDX::YAW) = pose_cov[XYZRPY_COV_IDX::YAW_YAW]; P(IDX::VEL, IDX::VEL) = vel_cov; P(IDX::WZ, IDX::WZ) = wz_cov; @@ -115,10 +116,10 @@ bool CTRVMotionModel::updateStatePose( C(1, IDX::Y) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; return ekf_.update(Y, C, R); } @@ -154,15 +155,15 @@ bool CTRVMotionModel::updateStatePoseHead( C(2, IDX::YAW) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - R(0, 2) = pose_cov[utils::MSG_COV_IDX::X_YAW]; - R(1, 2) = pose_cov[utils::MSG_COV_IDX::Y_YAW]; - R(2, 0) = pose_cov[utils::MSG_COV_IDX::YAW_X]; - R(2, 1) = pose_cov[utils::MSG_COV_IDX::YAW_Y]; - R(2, 2) = pose_cov[utils::MSG_COV_IDX::YAW_YAW]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + R(0, 2) = pose_cov[XYZRPY_COV_IDX::X_YAW]; + R(1, 2) = pose_cov[XYZRPY_COV_IDX::Y_YAW]; + R(2, 0) = pose_cov[XYZRPY_COV_IDX::YAW_X]; + R(2, 1) = pose_cov[XYZRPY_COV_IDX::YAW_Y]; + R(2, 2) = pose_cov[XYZRPY_COV_IDX::YAW_YAW]; return ekf_.update(Y, C, R); } @@ -200,16 +201,16 @@ bool CTRVMotionModel::updateStatePoseHeadVel( C(3, IDX::VEL) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - R(0, 2) = pose_cov[utils::MSG_COV_IDX::X_YAW]; - R(1, 2) = pose_cov[utils::MSG_COV_IDX::Y_YAW]; - R(2, 0) = pose_cov[utils::MSG_COV_IDX::YAW_X]; - R(2, 1) = pose_cov[utils::MSG_COV_IDX::YAW_Y]; - R(2, 2) = pose_cov[utils::MSG_COV_IDX::YAW_YAW]; - R(3, 3) = twist_cov[utils::MSG_COV_IDX::X_X]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + R(0, 2) = pose_cov[XYZRPY_COV_IDX::X_YAW]; + R(1, 2) = pose_cov[XYZRPY_COV_IDX::Y_YAW]; + R(2, 0) = pose_cov[XYZRPY_COV_IDX::YAW_X]; + R(2, 1) = pose_cov[XYZRPY_COV_IDX::YAW_Y]; + R(2, 2) = pose_cov[XYZRPY_COV_IDX::YAW_YAW]; + R(3, 3) = twist_cov[XYZRPY_COV_IDX::X_X]; return ekf_.update(Y, C, R); } @@ -220,7 +221,7 @@ bool CTRVMotionModel::limitStates() Eigen::MatrixXd P_t(DIM, DIM); ekf_.getX(X_t); ekf_.getP(P_t); - X_t(IDX::YAW) = autoware_universe_utils::normalizeRadian(X_t(IDX::YAW)); + X_t(IDX::YAW) = autoware::universe_utils::normalizeRadian(X_t(IDX::YAW)); if (!(-motion_params_.max_vel <= X_t(IDX::VEL) && X_t(IDX::VEL) <= motion_params_.max_vel)) { X_t(IDX::VEL) = X_t(IDX::VEL) < 0 ? -motion_params_.max_vel : motion_params_.max_vel; } @@ -295,11 +296,12 @@ bool CTRVMotionModel::predictStateStep(const double dt, KalmanFilter & ekf) cons A(IDX::YAW, IDX::WZ) = dt; // Process noise covariance Q - const double q_cov_x = std::pow(0.5 * motion_params_.q_cov_x * dt, 2); - const double q_cov_y = std::pow(0.5 * motion_params_.q_cov_y * dt, 2); - const double q_cov_yaw = std::pow(motion_params_.q_cov_yaw * dt, 2); - const double q_cov_vel = std::pow(motion_params_.q_cov_vel * dt, 2); - const double q_cov_wz = std::pow(motion_params_.q_cov_wz * dt, 2); + const double dt2 = dt * dt; + const double q_cov_x = motion_params_.q_cov_x * dt2; + const double q_cov_y = motion_params_.q_cov_y * dt2; + const double q_cov_yaw = motion_params_.q_cov_yaw * dt2; + const double q_cov_vel = motion_params_.q_cov_vel * dt2; + const double q_cov_wz = motion_params_.q_cov_wz * dt2; Eigen::MatrixXd Q = Eigen::MatrixXd::Zero(DIM, DIM); // Rotate the covariance matrix according to the vehicle yaw // because q_cov_x and y are in the vehicle coordinate system. @@ -355,32 +357,32 @@ bool CTRVMotionModel::getPredictedState( constexpr double zz_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double rr_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double pp_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative - pose_cov[utils::MSG_COV_IDX::X_X] = P(IDX::X, IDX::X); - pose_cov[utils::MSG_COV_IDX::X_Y] = P(IDX::X, IDX::Y); - pose_cov[utils::MSG_COV_IDX::Y_X] = P(IDX::Y, IDX::X); - pose_cov[utils::MSG_COV_IDX::Y_Y] = P(IDX::Y, IDX::Y); - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = P(IDX::YAW, IDX::YAW); - pose_cov[utils::MSG_COV_IDX::Z_Z] = zz_cov; - pose_cov[utils::MSG_COV_IDX::ROLL_ROLL] = rr_cov; - pose_cov[utils::MSG_COV_IDX::PITCH_PITCH] = pp_cov; + pose_cov[XYZRPY_COV_IDX::X_X] = P(IDX::X, IDX::X); + pose_cov[XYZRPY_COV_IDX::X_Y] = P(IDX::X, IDX::Y); + pose_cov[XYZRPY_COV_IDX::Y_X] = P(IDX::Y, IDX::X); + pose_cov[XYZRPY_COV_IDX::Y_Y] = P(IDX::Y, IDX::Y); + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = P(IDX::YAW, IDX::YAW); + pose_cov[XYZRPY_COV_IDX::Z_Z] = zz_cov; + pose_cov[XYZRPY_COV_IDX::ROLL_ROLL] = rr_cov; + pose_cov[XYZRPY_COV_IDX::PITCH_PITCH] = pp_cov; // set twist covariance constexpr double vy_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double vz_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double wx_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double wy_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative - twist_cov[utils::MSG_COV_IDX::X_X] = P(IDX::VEL, IDX::VEL); - twist_cov[utils::MSG_COV_IDX::X_Y] = 0.0; - twist_cov[utils::MSG_COV_IDX::X_YAW] = P(IDX::VEL, IDX::WZ); - twist_cov[utils::MSG_COV_IDX::Y_X] = 0.0; - twist_cov[utils::MSG_COV_IDX::Y_Y] = vy_cov; - twist_cov[utils::MSG_COV_IDX::Y_YAW] = 0.0; - twist_cov[utils::MSG_COV_IDX::YAW_X] = P(IDX::WZ, IDX::VEL); - twist_cov[utils::MSG_COV_IDX::YAW_Y] = 0.0; - twist_cov[utils::MSG_COV_IDX::YAW_YAW] = P(IDX::WZ, IDX::WZ); - twist_cov[utils::MSG_COV_IDX::Z_Z] = vz_cov; - twist_cov[utils::MSG_COV_IDX::ROLL_ROLL] = wx_cov; - twist_cov[utils::MSG_COV_IDX::PITCH_PITCH] = wy_cov; + twist_cov[XYZRPY_COV_IDX::X_X] = P(IDX::VEL, IDX::VEL); + twist_cov[XYZRPY_COV_IDX::X_Y] = 0.0; + twist_cov[XYZRPY_COV_IDX::X_YAW] = P(IDX::VEL, IDX::WZ); + twist_cov[XYZRPY_COV_IDX::Y_X] = 0.0; + twist_cov[XYZRPY_COV_IDX::Y_Y] = vy_cov; + twist_cov[XYZRPY_COV_IDX::Y_YAW] = 0.0; + twist_cov[XYZRPY_COV_IDX::YAW_X] = P(IDX::WZ, IDX::VEL); + twist_cov[XYZRPY_COV_IDX::YAW_Y] = 0.0; + twist_cov[XYZRPY_COV_IDX::YAW_YAW] = P(IDX::WZ, IDX::WZ); + twist_cov[XYZRPY_COV_IDX::Z_Z] = vz_cov; + twist_cov[XYZRPY_COV_IDX::ROLL_ROLL] = wx_cov; + twist_cov[XYZRPY_COV_IDX::PITCH_PITCH] = wy_cov; return true; } diff --git a/perception/multi_object_tracker/src/tracker/motion_model/cv_motion_model.cpp b/perception/multi_object_tracker/src/tracker/motion_model/cv_motion_model.cpp index 5ce944b0a79bb..231ba73796ed9 100644 --- a/perception/multi_object_tracker/src/tracker/motion_model/cv_motion_model.cpp +++ b/perception/multi_object_tracker/src/tracker/motion_model/cv_motion_model.cpp @@ -15,25 +15,26 @@ // // Author: v1.0 Taekjin Lee // +#define EIGEN_MPL2_ONLY #include "multi_object_tracker/tracker/motion_model/cv_motion_model.hpp" +#include "autoware/universe_utils/math/normalization.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" #include "multi_object_tracker/tracker/motion_model/motion_model_base.hpp" #include "multi_object_tracker/utils/utils.hpp" -#include -#include - -#include - -#define EIGEN_MPL2_ONLY #include #include +#include + // cspell: ignore CV // Constant Velocity (CV) motion model +using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; -CVMotionModel::CVMotionModel() : MotionModel(), logger_(rclcpp::get_logger("CVMotionModel")) +CVMotionModel::CVMotionModel() : logger_(rclcpp::get_logger("CVMotionModel")) { // Initialize motion parameters setDefaultParams(); @@ -49,8 +50,8 @@ void CVMotionModel::setDefaultParams() setMotionParams(q_stddev_x, q_stddev_y, q_stddev_vx, q_stddev_vy); // set motion limitations - constexpr double max_vx = autoware_universe_utils::kmph2mps(60); // [m/s] maximum x velocity - constexpr double max_vy = autoware_universe_utils::kmph2mps(60); // [m/s] maximum y velocity + constexpr double max_vx = autoware::universe_utils::kmph2mps(60); // [m/s] maximum x velocity + constexpr double max_vy = autoware::universe_utils::kmph2mps(60); // [m/s] maximum y velocity setMotionLimits(max_vx, max_vy); // set prediction parameters @@ -63,10 +64,10 @@ void CVMotionModel::setMotionParams( const double & q_stddev_vy) { // set process noise covariance parameters - motion_params_.q_cov_x = std::pow(q_stddev_x, 2.0); - motion_params_.q_cov_y = std::pow(q_stddev_y, 2.0); - motion_params_.q_cov_vx = std::pow(q_stddev_vx, 2.0); - motion_params_.q_cov_vy = std::pow(q_stddev_vy, 2.0); + motion_params_.q_cov_x = q_stddev_x * q_stddev_x; + motion_params_.q_cov_y = q_stddev_y * q_stddev_y; + motion_params_.q_cov_vx = q_stddev_vx * q_stddev_vx; + motion_params_.q_cov_vy = q_stddev_vy * q_stddev_vy; } void CVMotionModel::setMotionLimits(const double & max_vx, const double & max_vy) @@ -87,10 +88,10 @@ bool CVMotionModel::initialize( // initialize covariance matrix P Eigen::MatrixXd P = Eigen::MatrixXd::Zero(DIM, DIM); - P(IDX::X, IDX::X) = pose_cov[utils::MSG_COV_IDX::X_X]; - P(IDX::Y, IDX::Y) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - P(IDX::VX, IDX::VX) = twist_cov[utils::MSG_COV_IDX::X_X]; - P(IDX::VY, IDX::VY) = twist_cov[utils::MSG_COV_IDX::Y_Y]; + P(IDX::X, IDX::X) = pose_cov[XYZRPY_COV_IDX::X_X]; + P(IDX::Y, IDX::Y) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + P(IDX::VX, IDX::VX) = twist_cov[XYZRPY_COV_IDX::X_X]; + P(IDX::VY, IDX::VY) = twist_cov[XYZRPY_COV_IDX::Y_Y]; return MotionModel::initialize(time, X, P); } @@ -113,10 +114,10 @@ bool CVMotionModel::updateStatePose( C(1, IDX::Y) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; return ekf_.update(Y, C, R); } @@ -142,14 +143,14 @@ bool CVMotionModel::updateStatePoseVel( C(3, IDX::VY) = 1.0; Eigen::MatrixXd R = Eigen::MatrixXd::Zero(DIM_Y, DIM_Y); - R(0, 0) = pose_cov[utils::MSG_COV_IDX::X_X]; - R(0, 1) = pose_cov[utils::MSG_COV_IDX::X_Y]; - R(1, 0) = pose_cov[utils::MSG_COV_IDX::Y_X]; - R(1, 1) = pose_cov[utils::MSG_COV_IDX::Y_Y]; - R(2, 2) = twist_cov[utils::MSG_COV_IDX::X_X]; - R(2, 3) = twist_cov[utils::MSG_COV_IDX::X_Y]; - R(3, 2) = twist_cov[utils::MSG_COV_IDX::Y_X]; - R(3, 3) = twist_cov[utils::MSG_COV_IDX::Y_Y]; + R(0, 0) = pose_cov[XYZRPY_COV_IDX::X_X]; + R(0, 1) = pose_cov[XYZRPY_COV_IDX::X_Y]; + R(1, 0) = pose_cov[XYZRPY_COV_IDX::Y_X]; + R(1, 1) = pose_cov[XYZRPY_COV_IDX::Y_Y]; + R(2, 2) = twist_cov[XYZRPY_COV_IDX::X_X]; + R(2, 3) = twist_cov[XYZRPY_COV_IDX::X_Y]; + R(3, 2) = twist_cov[XYZRPY_COV_IDX::Y_X]; + R(3, 3) = twist_cov[XYZRPY_COV_IDX::Y_Y]; return ekf_.update(Y, C, R); } @@ -272,14 +273,14 @@ bool CVMotionModel::getPredictedState( constexpr double rr_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double pp_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative constexpr double yaw_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative - pose_cov[utils::MSG_COV_IDX::X_X] = P(IDX::X, IDX::X); - pose_cov[utils::MSG_COV_IDX::X_Y] = P(IDX::X, IDX::Y); - pose_cov[utils::MSG_COV_IDX::Y_X] = P(IDX::Y, IDX::X); - pose_cov[utils::MSG_COV_IDX::Y_Y] = P(IDX::Y, IDX::Y); - pose_cov[utils::MSG_COV_IDX::Z_Z] = zz_cov; - pose_cov[utils::MSG_COV_IDX::ROLL_ROLL] = rr_cov; - pose_cov[utils::MSG_COV_IDX::PITCH_PITCH] = pp_cov; - pose_cov[utils::MSG_COV_IDX::YAW_YAW] = yaw_cov; + pose_cov[XYZRPY_COV_IDX::X_X] = P(IDX::X, IDX::X); + pose_cov[XYZRPY_COV_IDX::X_Y] = P(IDX::X, IDX::Y); + pose_cov[XYZRPY_COV_IDX::Y_X] = P(IDX::Y, IDX::X); + pose_cov[XYZRPY_COV_IDX::Y_Y] = P(IDX::Y, IDX::Y); + pose_cov[XYZRPY_COV_IDX::Z_Z] = zz_cov; + pose_cov[XYZRPY_COV_IDX::ROLL_ROLL] = rr_cov; + pose_cov[XYZRPY_COV_IDX::PITCH_PITCH] = pp_cov; + pose_cov[XYZRPY_COV_IDX::YAW_YAW] = yaw_cov; // set twist covariance constexpr double vz_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative @@ -294,14 +295,14 @@ bool CVMotionModel::getPredictedState( twist_cov_rotate(1, 1) = P(IDX::VY, IDX::VY); Eigen::MatrixXd R_yaw = Eigen::Rotation2Dd(-yaw).toRotationMatrix(); Eigen::MatrixXd twist_cov_rotated = R_yaw * twist_cov_rotate * R_yaw.transpose(); - twist_cov[utils::MSG_COV_IDX::X_X] = twist_cov_rotated(0, 0); - twist_cov[utils::MSG_COV_IDX::X_Y] = twist_cov_rotated(0, 1); - twist_cov[utils::MSG_COV_IDX::Y_X] = twist_cov_rotated(1, 0); - twist_cov[utils::MSG_COV_IDX::Y_Y] = twist_cov_rotated(1, 1); - twist_cov[utils::MSG_COV_IDX::Z_Z] = vz_cov; - twist_cov[utils::MSG_COV_IDX::ROLL_ROLL] = wx_cov; - twist_cov[utils::MSG_COV_IDX::PITCH_PITCH] = wy_cov; - twist_cov[utils::MSG_COV_IDX::YAW_YAW] = wz_cov; + twist_cov[XYZRPY_COV_IDX::X_X] = twist_cov_rotated(0, 0); + twist_cov[XYZRPY_COV_IDX::X_Y] = twist_cov_rotated(0, 1); + twist_cov[XYZRPY_COV_IDX::Y_X] = twist_cov_rotated(1, 0); + twist_cov[XYZRPY_COV_IDX::Y_Y] = twist_cov_rotated(1, 1); + twist_cov[XYZRPY_COV_IDX::Z_Z] = vz_cov; + twist_cov[XYZRPY_COV_IDX::ROLL_ROLL] = wx_cov; + twist_cov[XYZRPY_COV_IDX::PITCH_PITCH] = wy_cov; + twist_cov[XYZRPY_COV_IDX::YAW_YAW] = wz_cov; return true; } diff --git a/perception/object_merger/CMakeLists.txt b/perception/object_merger/CMakeLists.txt index b02983db11af3..2d9b490945caf 100644 --- a/perception/object_merger/CMakeLists.txt +++ b/perception/object_merger/CMakeLists.txt @@ -18,18 +18,18 @@ include_directories( ${EIGEN3_INCLUDE_DIR} ) -ament_auto_add_library(object_association_merger SHARED - src/object_association_merger/data_association/data_association.cpp - src/object_association_merger/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp - src/object_association_merger/node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/association/data_association.cpp + src/association/solver/mu_successive_shortest_path_wrapper.cpp + src/object_association_merger_node.cpp ) -target_link_libraries(object_association_merger +target_link_libraries(${PROJECT_NAME} Eigen3::Eigen ) -rclcpp_components_register_node(object_association_merger - PLUGIN "object_association::ObjectAssociationMergerNode" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::object_merger::ObjectAssociationMergerNode" EXECUTABLE object_association_merger_node ) diff --git a/perception/object_merger/README.md b/perception/object_merger/README.md index ca7f533a2c1f1..f9d8c91b2a4c1 100644 --- a/perception/object_merger/README.md +++ b/perception/object_merger/README.md @@ -25,16 +25,9 @@ The successive shortest path algorithm is used to solve the data association pro ## Parameters -| Name | Type | Description | -| --------------------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `can_assign_matrix` | double | Assignment table for data association | -| `max_dist_matrix` | double | Maximum distance table for data association | -| `max_area_matrix` | double | Maximum area table for data association | -| `min_area_matrix` | double | Minimum area table for data association | -| `max_rad_matrix` | double | Maximum angle table for data association | -| `base_link_frame_id` | double | association frame | -| `distance_threshold_list` | `std::vector` | Distance threshold for each class used in judging overlap. The class order depends on [ObjectClassification](https://github.com/autowarefoundation/autoware_msgs/blob/main/autoware_perception_msgs/msg/ObjectClassification.msg). | -| `generalized_iou_threshold` | `std::vector` | Generalized IoU threshold for each class | +{{ json_to_markdown("perception/object_merger/schema/object_association_merger.schema.json") }} +{{ json_to_markdown("perception/object_merger/schema/data_association_matrix.schema.json") }} +{{ json_to_markdown("perception/object_merger/schema/overlapped_judge.schema.json") }} ## Tips diff --git a/perception/object_merger/config/object_association_merger.param.yaml b/perception/object_merger/config/object_association_merger.param.yaml index 5e5dafad5d573..e9b86cd64be29 100644 --- a/perception/object_merger/config/object_association_merger.param.yaml +++ b/perception/object_merger/config/object_association_merger.param.yaml @@ -2,4 +2,7 @@ ros__parameters: sync_queue_size: 20 precision_threshold_to_judge_overlapped: 0.4 + recall_threshold_to_judge_overlapped: 0.5 remove_overlapped_unknown_objects: true + base_link_frame_id: base_link + priority_mode: 3 # PriorityMode::Confidence diff --git a/perception/object_merger/include/object_merger/data_association/data_association.hpp b/perception/object_merger/include/autoware_object_merger/association/data_association.hpp similarity index 75% rename from perception/object_merger/include/object_merger/data_association/data_association.hpp rename to perception/object_merger/include/autoware_object_merger/association/data_association.hpp index f8eec33f4a71e..8433e8f7af537 100644 --- a/perception/object_merger/include/object_merger/data_association/data_association.hpp +++ b/perception/object_merger/include/autoware_object_merger/association/data_association.hpp @@ -16,21 +16,25 @@ // Author: v1.0 Yukihiro Saito // -#ifndef OBJECT_MERGER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ -#define OBJECT_MERGER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ - -#include -#include -#include -#include +#ifndef AUTOWARE_OBJECT_MERGER__ASSOCIATION__DATA_ASSOCIATION_HPP_ +#define AUTOWARE_OBJECT_MERGER__ASSOCIATION__DATA_ASSOCIATION_HPP_ #define EIGEN_MPL2_ONLY -#include "object_merger/data_association/solver/gnn_solver.hpp" + +#include "autoware_object_merger/association/solver/gnn_solver.hpp" #include #include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" + +#include +#include +#include +#include + +namespace autoware::object_merger +{ class DataAssociation { @@ -40,7 +44,7 @@ class DataAssociation Eigen::MatrixXd max_rad_matrix_; Eigen::MatrixXd min_iou_matrix_; const double score_threshold_; - std::unique_ptr gnn_solver_ptr_; + std::unique_ptr gnn_solver_ptr_; public: EIGEN_MAKE_ALIGNED_OPERATOR_NEW @@ -56,4 +60,6 @@ class DataAssociation virtual ~DataAssociation() {} }; -#endif // OBJECT_MERGER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ +} // namespace autoware::object_merger + +#endif // AUTOWARE_OBJECT_MERGER__ASSOCIATION__DATA_ASSOCIATION_HPP_ diff --git a/perception/object_merger/include/object_merger/data_association/solver/gnn_solver.hpp b/perception/object_merger/include/autoware_object_merger/association/solver/gnn_solver.hpp similarity index 57% rename from perception/object_merger/include/object_merger/data_association/solver/gnn_solver.hpp rename to perception/object_merger/include/autoware_object_merger/association/solver/gnn_solver.hpp index cead11d516421..6421dd6108a4a 100644 --- a/perception/object_merger/include/object_merger/data_association/solver/gnn_solver.hpp +++ b/perception/object_merger/include/autoware_object_merger/association/solver/gnn_solver.hpp @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ -#define OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ +#ifndef AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ +#define AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ -#include "object_merger/data_association/solver/gnn_solver_interface.hpp" -#include "object_merger/data_association/solver/mu_successive_shortest_path.hpp" -#include "object_merger/data_association/solver/successive_shortest_path.hpp" +#include "autoware_object_merger/association/solver/gnn_solver_interface.hpp" +#include "autoware_object_merger/association/solver/mu_ssp.hpp" +#include "autoware_object_merger/association/solver/ssp.hpp" -#endif // OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ +#endif // AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/gnn_solver_interface.hpp b/perception/object_merger/include/autoware_object_merger/association/solver/gnn_solver_interface.hpp similarity index 75% rename from perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/gnn_solver_interface.hpp rename to perception/object_merger/include/autoware_object_merger/association/solver/gnn_solver_interface.hpp index 9b633f04ca190..6a0702f056ba7 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/gnn_solver_interface.hpp +++ b/perception/object_merger/include/autoware_object_merger/association/solver/gnn_solver_interface.hpp @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ -#define RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#ifndef AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#define AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ #include #include -namespace gnn_solver +namespace autoware::object_merger::gnn_solver { class GnnSolverInterface { @@ -30,6 +30,6 @@ class GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) = 0; }; -} // namespace gnn_solver +} // namespace autoware::object_merger::gnn_solver -#endif // RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#endif // AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ diff --git a/perception/object_merger/include/object_merger/data_association/solver/mu_successive_shortest_path.hpp b/perception/object_merger/include/autoware_object_merger/association/solver/mu_ssp.hpp similarity index 71% rename from perception/object_merger/include/object_merger/data_association/solver/mu_successive_shortest_path.hpp rename to perception/object_merger/include/autoware_object_merger/association/solver/mu_ssp.hpp index 0464a29e6b2e5..364e9306112a7 100644 --- a/perception/object_merger/include/object_merger/data_association/solver/mu_successive_shortest_path.hpp +++ b/perception/object_merger/include/autoware_object_merger/association/solver/mu_ssp.hpp @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ -#define OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ +#ifndef AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__MU_SSP_HPP_ +#define AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__MU_SSP_HPP_ -#include "object_merger/data_association/solver/gnn_solver_interface.hpp" +#include "autoware_object_merger/association/solver/gnn_solver_interface.hpp" #include #include -namespace gnn_solver +namespace autoware::object_merger::gnn_solver { class MuSSP : public GnnSolverInterface { @@ -32,6 +32,6 @@ class MuSSP : public GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) override; }; -} // namespace gnn_solver +} // namespace autoware::object_merger::gnn_solver -#endif // OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ +#endif // AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__MU_SSP_HPP_ diff --git a/perception/object_merger/include/object_merger/data_association/solver/successive_shortest_path.hpp b/perception/object_merger/include/autoware_object_merger/association/solver/ssp.hpp similarity index 71% rename from perception/object_merger/include/object_merger/data_association/solver/successive_shortest_path.hpp rename to perception/object_merger/include/autoware_object_merger/association/solver/ssp.hpp index 618879a01866f..41bf390829ade 100644 --- a/perception/object_merger/include/object_merger/data_association/solver/successive_shortest_path.hpp +++ b/perception/object_merger/include/autoware_object_merger/association/solver/ssp.hpp @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ -#define OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ +#ifndef AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__SSP_HPP_ +#define AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__SSP_HPP_ -#include "object_merger/data_association/solver/gnn_solver_interface.hpp" +#include "autoware_object_merger/association/solver/gnn_solver_interface.hpp" #include #include -namespace gnn_solver +namespace autoware::object_merger::gnn_solver { class SSP : public GnnSolverInterface { @@ -32,6 +32,6 @@ class SSP : public GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) override; }; -} // namespace gnn_solver +} // namespace autoware::object_merger::gnn_solver -#endif // OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ +#endif // AUTOWARE_OBJECT_MERGER__ASSOCIATION__SOLVER__SSP_HPP_ diff --git a/perception/object_merger/include/object_merger/utils/utils.hpp b/perception/object_merger/include/object_merger/utils/utils.hpp deleted file mode 100644 index bb167cbe20bd6..0000000000000 --- a/perception/object_merger/include/object_merger/utils/utils.hpp +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2020 Tier IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// -// Author: v1.0 Yukihiro Saito -// - -#ifndef OBJECT_MERGER__UTILS__UTILS_HPP_ -#define OBJECT_MERGER__UTILS__UTILS_HPP_ - -#include -#include -#include -#include - -#include -#include -#include - -namespace utils -{ -enum MSG_COV_IDX { - X_X = 0, - X_Y = 1, - X_Z = 2, - X_ROLL = 3, - X_PITCH = 4, - X_YAW = 5, - Y_X = 6, - Y_Y = 7, - Y_Z = 8, - Y_ROLL = 9, - Y_PITCH = 10, - Y_YAW = 11, - Z_X = 12, - Z_Y = 13, - Z_Z = 14, - Z_ROLL = 15, - Z_PITCH = 16, - Z_YAW = 17, - ROLL_X = 18, - ROLL_Y = 19, - ROLL_Z = 20, - ROLL_ROLL = 21, - ROLL_PITCH = 22, - ROLL_YAW = 23, - PITCH_X = 24, - PITCH_Y = 25, - PITCH_Z = 26, - PITCH_ROLL = 27, - PITCH_PITCH = 28, - PITCH_YAW = 29, - YAW_X = 30, - YAW_Y = 31, - YAW_Z = 32, - YAW_ROLL = 33, - YAW_PITCH = 34, - YAW_YAW = 35 -}; -} // namespace utils - -#endif // OBJECT_MERGER__UTILS__UTILS_HPP_ diff --git a/perception/object_merger/package.xml b/perception/object_merger/package.xml index 0340a477936b8..5ca261b3ddf0e 100644 --- a/perception/object_merger/package.xml +++ b/perception/object_merger/package.xml @@ -22,7 +22,6 @@ rclcpp_components tf2 tf2_ros - tier4_perception_msgs ament_lint_auto autoware_lint_common diff --git a/perception/object_merger/schema/data_association_matrix.schema.json b/perception/object_merger/schema/data_association_matrix.schema.json new file mode 100644 index 0000000000000..68dc977224ba5 --- /dev/null +++ b/perception/object_merger/schema/data_association_matrix.schema.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Data Association Matrix Parameters", + "type": "object", + "properties": { + "ros__parameters": { + "type": "object", + "properties": { + "can_assign_matrix": { + "type": "array", + "items": { + "type": "number" + }, + "description": "Assignment table for data association" + }, + "max_dist_matrix": { + "type": "array", + "items": { + "type": "number" + }, + "description": "Maximum distance table for data association" + }, + "max_rad_matrix": { + "type": "array", + "items": { + "type": "number" + }, + "description": "Maximum angle table for data association. If value is greater than pi, it will be ignored." + }, + "min_iou_matrix": { + "type": "array", + "items": { + "type": "number" + }, + "description": "Minimum IoU threshold matrix for data association. If value is negative, it will be ignored." + } + }, + "required": ["can_assign_matrix", "max_dist_matrix", "max_rad_matrix", "min_iou_matrix"] + } + } +} diff --git a/perception/object_merger/schema/object_association_merger.schema.json b/perception/object_merger/schema/object_association_merger.schema.json new file mode 100644 index 0000000000000..11090fab9c7b3 --- /dev/null +++ b/perception/object_merger/schema/object_association_merger.schema.json @@ -0,0 +1,63 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Parameters for Object Association Merger Node", + "type": "object", + "definitions": { + "object_association_merger": { + "type": "object", + "properties": { + "sync_queue_size": { + "type": "integer", + "description": "The size of the synchronization queue.", + "default": 20 + }, + "precision_threshold_to_judge_overlapped": { + "type": "number", + "description": "The precision threshold to judge if objects are overlapped.", + "default": 0.4 + }, + "recall_threshold_to_judge_overlapped": { + "type": "number", + "description": "The recall threshold to judge if objects are overlapped.", + "default": 0.5 + }, + "remove_overlapped_unknown_objects": { + "type": "boolean", + "description": "Flag to remove overlapped unknown objects.", + "default": true + }, + "base_link_frame_id": { + "type": "string", + "description": "The frame ID of the association frame.", + "default": "base_link" + }, + "priority_mode": { + "type": "integer", + "description": "Index for the priority_mode.", + "default": 3, + "enum": [0, 1, 2, 3] + } + }, + "required": [ + "sync_queue_size", + "precision_threshold_to_judge_overlapped", + "recall_threshold_to_judge_overlapped", + "remove_overlapped_unknown_objects", + "base_link_frame_id", + "priority_mode" + ] + } + }, + "properties": { + "/**": { + "type": "object", + "properties": { + "ros__parameters": { + "$ref": "#/definitions/object_association_merger" + } + }, + "required": ["ros__parameters"] + } + }, + "required": ["/**"] +} diff --git a/perception/object_merger/schema/overlapped_judge.schema.json b/perception/object_merger/schema/overlapped_judge.schema.json new file mode 100644 index 0000000000000..b65464c6201d1 --- /dev/null +++ b/perception/object_merger/schema/overlapped_judge.schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Overlapped Judge Parameters", + "type": "object", + "properties": { + "ros__parameters": { + "type": "object", + "properties": { + "distance_threshold_list": { + "type": "array", + "items": { + "type": "number" + }, + "description": "Distance threshold for each class used in judging overlap." + }, + "generalized_iou_threshold": { + "type": "array", + "items": { + "type": "number" + }, + "description": "Generalized IoU threshold for each class." + } + }, + "required": ["distance_threshold_list", "generalized_iou_threshold"] + } + } +} diff --git a/perception/object_merger/src/object_association_merger/data_association/data_association.cpp b/perception/object_merger/src/association/data_association.cpp similarity index 92% rename from perception/object_merger/src/object_association_merger/data_association/data_association.cpp rename to perception/object_merger/src/association/data_association.cpp index 634be73508a2d..c2f7d44fa779b 100644 --- a/perception/object_merger/src/object_association_merger/data_association/data_association.cpp +++ b/perception/object_merger/src/association/data_association.cpp @@ -12,11 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "object_merger/data_association/data_association.hpp" +#include "autoware_object_merger/association/data_association.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" -#include "object_merger/data_association/solver/gnn_solver.hpp" -#include "object_merger/utils/utils.hpp" +#include "autoware_object_merger/association/solver/gnn_solver.hpp" #include "object_recognition_utils/object_recognition_utils.hpp" #include @@ -31,8 +30,8 @@ double getFormedYawAngle( const geometry_msgs::msg::Quaternion & quat0, const geometry_msgs::msg::Quaternion & quat1, const bool distinguish_front_or_back = true) { - const double yaw0 = autoware_universe_utils::normalizeRadian(tf2::getYaw(quat0)); - const double yaw1 = autoware_universe_utils::normalizeRadian(tf2::getYaw(quat1)); + const double yaw0 = autoware::universe_utils::normalizeRadian(tf2::getYaw(quat0)); + const double yaw1 = autoware::universe_utils::normalizeRadian(tf2::getYaw(quat1)); const double angle_range = distinguish_front_or_back ? M_PI : M_PI_2; const double angle_step = distinguish_front_or_back ? 2.0 * M_PI : M_PI; // Fixed yaw0 to be in the range of +-90 or 180 degrees of yaw1 @@ -47,6 +46,9 @@ double getFormedYawAngle( } } // namespace +namespace autoware::object_merger +{ + DataAssociation::DataAssociation( std::vector can_assign_vector, std::vector max_dist_vector, std::vector max_rad_vector, std::vector min_iou_vector) @@ -77,7 +79,7 @@ DataAssociation::DataAssociation( min_iou_matrix_ = min_iou_matrix_tmp.transpose(); } - gnn_solver_ptr_ = std::make_unique(); + gnn_solver_ptr_ = std::make_unique(); } void DataAssociation::assign( @@ -133,7 +135,7 @@ Eigen::MatrixXd DataAssociation::calcScoreMatrix( double score = 0.0; if (can_assign_matrix_(object1_label, object0_label)) { const double max_dist = max_dist_matrix_(object1_label, object0_label); - const double dist = autoware_universe_utils::calcDistance2d( + const double dist = autoware::universe_utils::calcDistance2d( object0.kinematics.pose_with_covariance.pose.position, object1.kinematics.pose_with_covariance.pose.position); @@ -172,3 +174,5 @@ Eigen::MatrixXd DataAssociation::calcScoreMatrix( return score_matrix; } + +} // namespace autoware::object_merger diff --git a/perception/radar_object_tracker/src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp b/perception/object_merger/src/association/solver/mu_successive_shortest_path_wrapper.cpp similarity index 87% rename from perception/radar_object_tracker/src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp rename to perception/object_merger/src/association/solver/mu_successive_shortest_path_wrapper.cpp index 43f974c2621e1..6a5dd6473da1f 100644 --- a/perception/radar_object_tracker/src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp +++ b/perception/object_merger/src/association/solver/mu_successive_shortest_path_wrapper.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_tracker/data_association/solver/mu_successive_shortest_path.hpp" +#include "autoware_object_merger/association/solver/mu_ssp.hpp" #include @@ -24,7 +24,7 @@ #include #include -namespace gnn_solver +namespace autoware::object_merger::gnn_solver { void MuSSP::maximizeLinearAssignment( const std::vector> & cost, std::unordered_map * direct_assignment, @@ -38,4 +38,4 @@ void MuSSP::maximizeLinearAssignment( // Solve DA by muSSP solve_muSSP(cost, direct_assignment, reverse_assignment); } -} // namespace gnn_solver +} // namespace autoware::object_merger::gnn_solver diff --git a/perception/radar_object_tracker/src/data_association/successive_shortest_path/successive_shortest_path.cpp b/perception/object_merger/src/association/solver/successive_shortest_path.cpp similarity index 98% rename from perception/radar_object_tracker/src/data_association/successive_shortest_path/successive_shortest_path.cpp rename to perception/object_merger/src/association/solver/successive_shortest_path.cpp index c904a9005b27e..782aa1ef4ac31 100644 --- a/perception/radar_object_tracker/src/data_association/successive_shortest_path/successive_shortest_path.cpp +++ b/perception/object_merger/src/association/solver/successive_shortest_path.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_tracker/data_association/solver/successive_shortest_path.hpp" +#include "autoware_object_merger/association/solver/ssp.hpp" #include #include @@ -22,7 +22,7 @@ #include #include -namespace gnn_solver +namespace autoware::object_merger::gnn_solver { struct ResidualEdge { @@ -367,4 +367,4 @@ void SSP::maximizeLinearAssignment( } #endif } -} // namespace gnn_solver +} // namespace autoware::object_merger::gnn_solver diff --git a/perception/object_merger/src/object_association_merger/node.cpp b/perception/object_merger/src/object_association_merger_node.cpp similarity index 90% rename from perception/object_merger/src/object_association_merger/node.cpp rename to perception/object_merger/src/object_association_merger_node.cpp index cc1069321f6f8..321f1a8da8d9e 100644 --- a/perception/object_merger/src/object_association_merger/node.cpp +++ b/perception/object_merger/src/object_association_merger_node.cpp @@ -12,20 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "object_merger/node.hpp" +#define EIGEN_MPL2_ONLY + +#include "object_association_merger_node.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" -#include "object_merger/utils/utils.hpp" #include "object_recognition_utils/object_recognition_utils.hpp" +#include +#include + #include #include #include - -#define EIGEN_MPL2_ONLY -#include -#include +#include using Label = autoware_perception_msgs::msg::ObjectClassification; @@ -43,7 +44,7 @@ bool isUnknownObjectOverlapped( const double distance_threshold = distance_threshold_map.at( object_recognition_utils::getHighestProbLabel(known_object.classification)); const double sq_distance_threshold = std::pow(distance_threshold, 2.0); - const double sq_distance = autoware_universe_utils::calcSquaredDistance2d( + const double sq_distance = autoware::universe_utils::calcSquaredDistance2d( unknown_object.kinematics.pose_with_covariance.pose, known_object.kinematics.pose_with_covariance.pose); if (sq_distance_threshold < sq_distance) return false; @@ -70,7 +71,7 @@ std::map convertListToClassMap(const std::vector & distance } } // namespace -namespace object_association +namespace autoware::object_merger { ObjectAssociationMergerNode::ObjectAssociationMergerNode(const rclcpp::NodeOptions & node_options) : rclcpp::Node("object_association_merger_node", node_options), @@ -80,16 +81,14 @@ ObjectAssociationMergerNode::ObjectAssociationMergerNode(const rclcpp::NodeOptio object1_sub_(this, "input/object1", rclcpp::QoS{1}.get_rmw_qos_profile()) { // Parameters - base_link_frame_id_ = declare_parameter("base_link_frame_id", "base_link"); - priority_mode_ = static_cast( - declare_parameter("priority_mode", static_cast(PriorityMode::Confidence))); - sync_queue_size_ = declare_parameter("sync_queue_size", 20); - remove_overlapped_unknown_objects_ = - declare_parameter("remove_overlapped_unknown_objects", true); + base_link_frame_id_ = declare_parameter("base_link_frame_id"); + priority_mode_ = static_cast(declare_parameter("priority_mode")); + sync_queue_size_ = declare_parameter("sync_queue_size"); + remove_overlapped_unknown_objects_ = declare_parameter("remove_overlapped_unknown_objects"); overlapped_judge_param_.precision_threshold = declare_parameter("precision_threshold_to_judge_overlapped"); overlapped_judge_param_.recall_threshold = - declare_parameter("recall_threshold_to_judge_overlapped", 0.5); + declare_parameter("recall_threshold_to_judge_overlapped"); overlapped_judge_param_.generalized_iou_threshold = convertListToClassMap(declare_parameter>("generalized_iou_threshold")); @@ -106,7 +105,7 @@ ObjectAssociationMergerNode::ObjectAssociationMergerNode(const rclcpp::NodeOptio const auto max_dist_matrix = this->declare_parameter>("max_dist_matrix"); const auto max_rad_matrix = this->declare_parameter>("max_rad_matrix"); const auto min_iou_matrix = this->declare_parameter>("min_iou_matrix"); - data_association_ = std::make_unique( + data_association_ = std::make_unique( can_assign_matrix, max_dist_matrix, max_rad_matrix, min_iou_matrix); // Create publishers and subscribers @@ -121,13 +120,13 @@ ObjectAssociationMergerNode::ObjectAssociationMergerNode(const rclcpp::NodeOptio // Debug publisher processing_time_publisher_ = - std::make_unique(this, "object_association_merger"); + std::make_unique(this, "object_association_merger"); stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); stop_watch_ptr_->tic("cyclic_time"); stop_watch_ptr_->tic("processing_time"); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void ObjectAssociationMergerNode::objectsCallback( @@ -233,7 +232,7 @@ void ObjectAssociationMergerNode::objectsCallback( processing_time_publisher_->publish( "debug/processing_time_ms", stop_watch_ptr_->toc("processing_time", true)); } -} // namespace object_association +} // namespace autoware::object_merger #include -RCLCPP_COMPONENTS_REGISTER_NODE(object_association::ObjectAssociationMergerNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::object_merger::ObjectAssociationMergerNode) diff --git a/perception/object_merger/include/object_merger/node.hpp b/perception/object_merger/src/object_association_merger_node.hpp similarity index 77% rename from perception/object_merger/include/object_merger/node.hpp rename to perception/object_merger/src/object_association_merger_node.hpp index 26fccca21aa22..d5b5a1ae018a6 100644 --- a/perception/object_merger/include/object_merger/node.hpp +++ b/perception/object_merger/src/object_association_merger_node.hpp @@ -12,17 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBJECT_MERGER__NODE_HPP_ -#define OBJECT_MERGER__NODE_HPP_ +#ifndef OBJECT_ASSOCIATION_MERGER_NODE_HPP_ +#define OBJECT_ASSOCIATION_MERGER_NODE_HPP_ -#include "object_merger/data_association/data_association.hpp" +#include "autoware/universe_utils/ros/debug_publisher.hpp" +#include "autoware/universe_utils/ros/published_time_publisher.hpp" +#include "autoware/universe_utils/system/stop_watch.hpp" +#include "autoware_object_merger/association/data_association.hpp" -#include -#include -#include #include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" #include #include @@ -45,7 +45,7 @@ #include #include -namespace object_association +namespace autoware::object_merger { class ObjectAssociationMergerNode : public rclcpp::Node { @@ -84,11 +84,11 @@ class ObjectAssociationMergerNode : public rclcpp::Node } overlapped_judge_param_; // debug publisher - std::unique_ptr processing_time_publisher_; - std::unique_ptr> stop_watch_ptr_; + std::unique_ptr processing_time_publisher_; + std::unique_ptr> stop_watch_ptr_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; -} // namespace object_association +} // namespace autoware::object_merger -#endif // OBJECT_MERGER__NODE_HPP_ +#endif // OBJECT_ASSOCIATION_MERGER_NODE_HPP_ diff --git a/perception/object_range_splitter/CMakeLists.txt b/perception/object_range_splitter/CMakeLists.txt index 92c6c0668a085..1da71a31b26d0 100644 --- a/perception/object_range_splitter/CMakeLists.txt +++ b/perception/object_range_splitter/CMakeLists.txt @@ -4,12 +4,12 @@ project(object_range_splitter) find_package(autoware_cmake REQUIRED) autoware_package() -ament_auto_add_library(object_range_splitter SHARED - src/node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/object_range_splitter_node.cpp ) -rclcpp_components_register_node(object_range_splitter - PLUGIN "object_range_splitter::ObjectRangeSplitterNode" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::object_range_splitter::ObjectRangeSplitterNode" EXECUTABLE object_range_splitter_node ) diff --git a/perception/object_range_splitter/package.xml b/perception/object_range_splitter/package.xml index bef3ea76354d1..7fc9245ee894f 100644 --- a/perception/object_range_splitter/package.xml +++ b/perception/object_range_splitter/package.xml @@ -14,7 +14,6 @@ autoware_perception_msgs rclcpp rclcpp_components - sensor_msgs ament_lint_auto autoware_lint_common diff --git a/perception/object_range_splitter/src/node.cpp b/perception/object_range_splitter/src/object_range_splitter_node.cpp similarity index 91% rename from perception/object_range_splitter/src/node.cpp rename to perception/object_range_splitter/src/object_range_splitter_node.cpp index 978c40275fb9b..5d5a4aad70011 100644 --- a/perception/object_range_splitter/src/node.cpp +++ b/perception/object_range_splitter/src/object_range_splitter_node.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "object_range_splitter/node.hpp" +#include "object_range_splitter_node.hpp" -namespace object_range_splitter +namespace autoware::object_range_splitter { ObjectRangeSplitterNode::ObjectRangeSplitterNode(const rclcpp::NodeOptions & node_options) : Node("object_range_splitter_node", node_options) @@ -59,7 +59,7 @@ void ObjectRangeSplitterNode::objectCallback( long_range_object_pub_->publish(output_long_range_object_msg); short_range_object_pub_->publish(output_short_range_object_msg); } -} // namespace object_range_splitter +} // namespace autoware::object_range_splitter #include -RCLCPP_COMPONENTS_REGISTER_NODE(object_range_splitter::ObjectRangeSplitterNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::object_range_splitter::ObjectRangeSplitterNode) diff --git a/perception/object_range_splitter/include/object_range_splitter/node.hpp b/perception/object_range_splitter/src/object_range_splitter_node.hpp similarity index 81% rename from perception/object_range_splitter/include/object_range_splitter/node.hpp rename to perception/object_range_splitter/src/object_range_splitter_node.hpp index a4dbb2fb634aa..19e5924272eb9 100644 --- a/perception/object_range_splitter/include/object_range_splitter/node.hpp +++ b/perception/object_range_splitter/src/object_range_splitter_node.hpp @@ -12,16 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBJECT_RANGE_SPLITTER__NODE_HPP_ -#define OBJECT_RANGE_SPLITTER__NODE_HPP_ +#ifndef OBJECT_RANGE_SPLITTER_NODE_HPP_ +#define OBJECT_RANGE_SPLITTER_NODE_HPP_ #include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" #include -namespace object_range_splitter +namespace autoware::object_range_splitter { class ObjectRangeSplitterNode : public rclcpp::Node { @@ -42,6 +42,6 @@ class ObjectRangeSplitterNode : public rclcpp::Node float spilt_range_; }; -} // namespace object_range_splitter +} // namespace autoware::object_range_splitter -#endif // OBJECT_RANGE_SPLITTER__NODE_HPP_ +#endif // OBJECT_RANGE_SPLITTER_NODE_HPP_ diff --git a/perception/object_velocity_splitter/CMakeLists.txt b/perception/object_velocity_splitter/CMakeLists.txt index 68e87a3355f86..afad278e383d8 100644 --- a/perception/object_velocity_splitter/CMakeLists.txt +++ b/perception/object_velocity_splitter/CMakeLists.txt @@ -6,12 +6,12 @@ find_package(autoware_cmake REQUIRED) autoware_package() # Targets -ament_auto_add_library(object_velocity_splitter_node_component SHARED - src/object_velocity_splitter_node/object_velocity_splitter_node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/object_velocity_splitter_node.cpp ) -rclcpp_components_register_node(object_velocity_splitter_node_component - PLUGIN "object_velocity_splitter::ObjectVelocitySplitterNode" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::object_velocity_splitter::ObjectVelocitySplitterNode" EXECUTABLE object_velocity_splitter_node ) diff --git a/perception/object_velocity_splitter/src/object_velocity_splitter_node/object_velocity_splitter_node.cpp b/perception/object_velocity_splitter/src/object_velocity_splitter_node.cpp similarity index 92% rename from perception/object_velocity_splitter/src/object_velocity_splitter_node/object_velocity_splitter_node.cpp rename to perception/object_velocity_splitter/src/object_velocity_splitter_node.cpp index 4d635cf330fa6..a10692faeff1e 100644 --- a/perception/object_velocity_splitter/src/object_velocity_splitter_node/object_velocity_splitter_node.cpp +++ b/perception/object_velocity_splitter/src/object_velocity_splitter_node.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "object_velocity_splitter/object_velocity_splitter_node.hpp" +#include "object_velocity_splitter_node.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" @@ -40,7 +40,7 @@ bool update_param( } } // namespace -namespace object_velocity_splitter +namespace autoware::object_velocity_splitter { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -74,7 +74,7 @@ void ObjectVelocitySplitterNode::onObjects(const DetectedObjects::ConstSharedPtr for (const auto & object : objects_data_->objects) { if ( - std::abs(autoware_universe_utils::calcNorm( + std::abs(autoware::universe_utils::calcNorm( object.kinematics.twist_with_covariance.twist.linear)) < node_param_.velocity_threshold) { low_speed_objects.objects.emplace_back(object); } else { @@ -110,7 +110,7 @@ rcl_interfaces::msg::SetParametersResult ObjectVelocitySplitterNode::onSetParam( return result; } -} // namespace object_velocity_splitter +} // namespace autoware::object_velocity_splitter #include "rclcpp_components/register_node_macro.hpp" -RCLCPP_COMPONENTS_REGISTER_NODE(object_velocity_splitter::ObjectVelocitySplitterNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::object_velocity_splitter::ObjectVelocitySplitterNode) diff --git a/perception/object_velocity_splitter/include/object_velocity_splitter/object_velocity_splitter_node.hpp b/perception/object_velocity_splitter/src/object_velocity_splitter_node.hpp similarity index 85% rename from perception/object_velocity_splitter/include/object_velocity_splitter/object_velocity_splitter_node.hpp rename to perception/object_velocity_splitter/src/object_velocity_splitter_node.hpp index 2180b467dbbcf..ca0a9a9e65f3c 100644 --- a/perception/object_velocity_splitter/include/object_velocity_splitter/object_velocity_splitter_node.hpp +++ b/perception/object_velocity_splitter/src/object_velocity_splitter_node.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBJECT_VELOCITY_SPLITTER__OBJECT_VELOCITY_SPLITTER_NODE_HPP_ -#define OBJECT_VELOCITY_SPLITTER__OBJECT_VELOCITY_SPLITTER_NODE_HPP_ +#ifndef OBJECT_VELOCITY_SPLITTER_NODE_HPP_ +#define OBJECT_VELOCITY_SPLITTER_NODE_HPP_ #include "rclcpp/rclcpp.hpp" @@ -24,7 +24,7 @@ #include #include -namespace object_velocity_splitter +namespace autoware::object_velocity_splitter { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -62,6 +62,6 @@ class ObjectVelocitySplitterNode : public rclcpp::Node NodeParam node_param_{}; }; -} // namespace object_velocity_splitter +} // namespace autoware::object_velocity_splitter -#endif // OBJECT_VELOCITY_SPLITTER__OBJECT_VELOCITY_SPLITTER_NODE_HPP_ +#endif // OBJECT_VELOCITY_SPLITTER_NODE_HPP_ diff --git a/perception/occupancy_grid_map_outlier_filter/include/occupancy_grid_map_outlier_filter/occupancy_grid_map_outlier_filter_nodelet.hpp b/perception/occupancy_grid_map_outlier_filter/include/occupancy_grid_map_outlier_filter/occupancy_grid_map_outlier_filter_nodelet.hpp index bed7f84ab79a2..ae6d7a34fca2a 100644 --- a/perception/occupancy_grid_map_outlier_filter/include/occupancy_grid_map_outlier_filter/occupancy_grid_map_outlier_filter_nodelet.hpp +++ b/perception/occupancy_grid_map_outlier_filter/include/occupancy_grid_map_outlier_filter/occupancy_grid_map_outlier_filter_nodelet.hpp @@ -120,9 +120,9 @@ class OccupancyGridMapOutlierFilterComponent : public rclcpp::Node // Debugger std::shared_ptr debugger_ptr_; - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr debug_publisher_; - std::unique_ptr published_time_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr debug_publisher_; + std::unique_ptr published_time_publisher_; // ROS Parameters std::string map_frame_; diff --git a/perception/occupancy_grid_map_outlier_filter/package.xml b/perception/occupancy_grid_map_outlier_filter/package.xml index 0e920549eb728..23d08db09553a 100644 --- a/perception/occupancy_grid_map_outlier_filter/package.xml +++ b/perception/occupancy_grid_map_outlier_filter/package.xml @@ -17,11 +17,11 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_universe_utils autoware_vehicle_msgs diagnostic_updater image_transport - lanelet2_extension libopencv-dev libpcl-all-dev message_filters diff --git a/perception/occupancy_grid_map_outlier_filter/src/occupancy_grid_map_outlier_filter_nodelet.cpp b/perception/occupancy_grid_map_outlier_filter/src/occupancy_grid_map_outlier_filter_nodelet.cpp index 37811f4f6fb08..f62a3f7e689fc 100644 --- a/perception/occupancy_grid_map_outlier_filter/src/occupancy_grid_map_outlier_filter_nodelet.cpp +++ b/perception/occupancy_grid_map_outlier_filter/src/occupancy_grid_map_outlier_filter_nodelet.cpp @@ -73,7 +73,7 @@ geometry_msgs::msg::PoseStamped getPoseStamped( RCLCPP_WARN_THROTTLE( rclcpp::get_logger("occupancy_grid_map_outlier_filter"), clock, 5000, "%s", ex.what()); } - return autoware_universe_utils::transform2pose(tf_stamped); + return autoware::universe_utils::transform2pose(tf_stamped); } boost::optional getCost( @@ -225,8 +225,8 @@ OccupancyGridMapOutlierFilterComponent::OccupancyGridMapOutlierFilterComponent( { // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ = std::make_unique(this, "occupancy_grid_map_outlier_filter"); stop_watch_ptr_->tic("cyclic_time"); diff --git a/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/fusion/synchronized_grid_map_fusion_node.hpp b/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/fusion/synchronized_grid_map_fusion_node.hpp index d09b1d9782604..84ca13c8b1881 100644 --- a/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/fusion/synchronized_grid_map_fusion_node.hpp +++ b/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/fusion/synchronized_grid_map_fusion_node.hpp @@ -85,8 +85,8 @@ class GridMapFusionNode : public rclcpp::Node rclcpp::Publisher::SharedPtr fused_map_pub_; rclcpp::Publisher::SharedPtr single_frame_pub_; std::vector::SharedPtr> grid_map_subs_; - std::unique_ptr> stop_watch_ptr_{}; - std::unique_ptr debug_publisher_ptr_{}; + std::unique_ptr> stop_watch_ptr_{}; + std::unique_ptr debug_publisher_ptr_{}; // Topics manager std::size_t num_input_topics_{1}; diff --git a/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.hpp b/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.hpp index 7c3b7b3e4b1a3..1d119102dc28d 100644 --- a/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.hpp +++ b/perception/probabilistic_occupancy_grid_map/include/probabilistic_occupancy_grid_map/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.hpp @@ -68,8 +68,8 @@ class PointcloudBasedOccupancyGridMapNode : public rclcpp::Node rclcpp::Publisher::SharedPtr occupancy_grid_map_pub_; message_filters::Subscriber obstacle_pointcloud_sub_; message_filters::Subscriber raw_pointcloud_sub_; - std::unique_ptr> stop_watch_ptr_{}; - std::unique_ptr debug_publisher_ptr_{}; + std::unique_ptr> stop_watch_ptr_{}; + std::unique_ptr debug_publisher_ptr_{}; std::shared_ptr tf2_{std::make_shared(get_clock())}; std::shared_ptr tf2_listener_{std::make_shared(*tf2_)}; diff --git a/perception/probabilistic_occupancy_grid_map/src/fusion/synchronized_grid_map_fusion_node.cpp b/perception/probabilistic_occupancy_grid_map/src/fusion/synchronized_grid_map_fusion_node.cpp index 211479ed24e6b..fa93db802b0ce 100644 --- a/perception/probabilistic_occupancy_grid_map/src/fusion/synchronized_grid_map_fusion_node.cpp +++ b/perception/probabilistic_occupancy_grid_map/src/fusion/synchronized_grid_map_fusion_node.cpp @@ -142,8 +142,8 @@ GridMapFusionNode::GridMapFusionNode(const rclcpp::NodeOptions & node_options) // debug tools { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ptr_ = std::make_unique(this, "synchronized_grid_map_fusion"); stop_watch_ptr_->tic("cyclic_time"); diff --git a/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_fixed.cpp b/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_fixed.cpp index f66ca3c7fc472..d4e177209f99d 100644 --- a/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_fixed.cpp +++ b/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_fixed.cpp @@ -55,9 +55,9 @@ void OccupancyGridMapFixedBlindSpot::updateWithPointCloud( const PointCloud2 & raw_pointcloud, const PointCloud2 & obstacle_pointcloud, const Pose & robot_pose, const Pose & scan_origin) { - constexpr double min_angle = autoware_universe_utils::deg2rad(-180.0); - constexpr double max_angle = autoware_universe_utils::deg2rad(180.0); - constexpr double angle_increment = autoware_universe_utils::deg2rad(0.1); + constexpr double min_angle = autoware::universe_utils::deg2rad(-180.0); + constexpr double max_angle = autoware::universe_utils::deg2rad(180.0); + constexpr double angle_increment = autoware::universe_utils::deg2rad(0.1); const size_t angle_bin_size = ((max_angle - min_angle) / angle_increment) + size_t(1 /*margin*/); // Transform from base_link to map frame diff --git a/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_projective.cpp b/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_projective.cpp index 0a16c488158f1..3846b3a7d16e7 100644 --- a/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_projective.cpp +++ b/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/occupancy_grid_map_projective.cpp @@ -56,9 +56,9 @@ void OccupancyGridMapProjectiveBlindSpot::updateWithPointCloud( const PointCloud2 & raw_pointcloud, const PointCloud2 & obstacle_pointcloud, const Pose & robot_pose, const Pose & scan_origin) { - constexpr double min_angle = autoware_universe_utils::deg2rad(-180.0); - constexpr double max_angle = autoware_universe_utils::deg2rad(180.0); - constexpr double angle_increment = autoware_universe_utils::deg2rad(0.1); + constexpr double min_angle = autoware::universe_utils::deg2rad(-180.0); + constexpr double max_angle = autoware::universe_utils::deg2rad(180.0); + constexpr double angle_increment = autoware::universe_utils::deg2rad(0.1); const size_t angle_bin_size = ((max_angle - min_angle) / angle_increment) + size_t(1 /*margin*/); // Transform from base_link to map frame @@ -225,11 +225,9 @@ void OccupancyGridMapProjectiveBlindSpot::updateWithPointCloud( if (dist_index + 1 == obstacle_pointcloud_angle_bin.size()) { const auto & source = obstacle_pointcloud_angle_bin.at(dist_index); - if (!no_visible_point_beyond) { - raytrace( - source.wx, source.wy, source.projected_wx, source.projected_wy, - occupancy_cost_value::NO_INFORMATION); - } + raytrace( + source.wx, source.wy, source.projected_wx, source.projected_wy, + occupancy_cost_value::NO_INFORMATION); continue; } @@ -238,11 +236,6 @@ void OccupancyGridMapProjectiveBlindSpot::updateWithPointCloud( obstacle_pointcloud_angle_bin.at(dist_index).range); if (next_obstacle_point_distance <= obstacle_separation_threshold_) { continue; - } else if (no_visible_point_beyond) { - const auto & source = obstacle_pointcloud_angle_bin.at(dist_index); - const auto & target = obstacle_pointcloud_angle_bin.at(dist_index + 1); - raytrace(source.wx, source.wy, target.wx, target.wy, occupancy_cost_value::NO_INFORMATION); - continue; } auto next_raw_distance = diff --git a/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.cpp b/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.cpp index 2f3a97c82ccc8..d019280aefda0 100644 --- a/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.cpp +++ b/perception/probabilistic_occupancy_grid_map/src/pointcloud_based_occupancy_grid_map/pointcloud_based_occupancy_grid_map_node.cpp @@ -119,8 +119,8 @@ PointcloudBasedOccupancyGridMapNode::PointcloudBasedOccupancyGridMapNode( // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ptr_ = std::make_unique(this, "pointcloud_based_occupancy_grid_map"); diff --git a/perception/probabilistic_occupancy_grid_map/src/utils/utils.cpp b/perception/probabilistic_occupancy_grid_map/src/utils/utils.cpp index 8e9a8431a4258..209207fe10f34 100644 --- a/perception/probabilistic_occupancy_grid_map/src/utils/utils.cpp +++ b/perception/probabilistic_occupancy_grid_map/src/utils/utils.cpp @@ -50,7 +50,7 @@ void transformPointcloud( const sensor_msgs::msg::PointCloud2 & input, const geometry_msgs::msg::Pose & pose, sensor_msgs::msg::PointCloud2 & output) { - const auto transform = autoware_universe_utils::pose2transform(pose); + const auto transform = autoware::universe_utils::pose2transform(pose); Eigen::Matrix4f tf_matrix = tf2::transformToEigen(transform).matrix().cast(); pcl_ros::transformPointCloud(tf_matrix, input, output); @@ -96,7 +96,7 @@ geometry_msgs::msg::Pose getPose( geometry_msgs::msg::TransformStamped tf_stamped; tf_stamped = tf2.lookupTransform( target_frame, source_header.frame_id, source_header.stamp, rclcpp::Duration::from_seconds(0.5)); - pose = autoware_universe_utils::transform2pose(tf_stamped.transform); + pose = autoware::universe_utils::transform2pose(tf_stamped.transform); return pose; } @@ -108,7 +108,7 @@ geometry_msgs::msg::Pose getPose( geometry_msgs::msg::TransformStamped tf_stamped; tf_stamped = tf2.lookupTransform(target_frame, source_frame, stamp, rclcpp::Duration::from_seconds(0.5)); - pose = autoware_universe_utils::transform2pose(tf_stamped.transform); + pose = autoware::universe_utils::transform2pose(tf_stamped.transform); return pose; } diff --git a/perception/radar_crossing_objects_noise_filter/CMakeLists.txt b/perception/radar_crossing_objects_noise_filter/CMakeLists.txt index bf4a46cda7ae6..6414739413d5c 100644 --- a/perception/radar_crossing_objects_noise_filter/CMakeLists.txt +++ b/perception/radar_crossing_objects_noise_filter/CMakeLists.txt @@ -6,12 +6,12 @@ find_package(autoware_cmake REQUIRED) autoware_package() # Targets -ament_auto_add_library(radar_crossing_objects_noise_filter_node_component SHARED - src/radar_crossing_objects_noise_filter_node/radar_crossing_objects_noise_filter_node.cpp +ament_auto_add_library(${PROJECT_NAME}_node_component SHARED + src/radar_crossing_objects_noise_filter_node.cpp ) -rclcpp_components_register_node(radar_crossing_objects_noise_filter_node_component - PLUGIN "radar_crossing_objects_noise_filter::RadarCrossingObjectsNoiseFilterNode" +rclcpp_components_register_node(${PROJECT_NAME}_node_component + PLUGIN "autoware::radar_crossing_objects_noise_filter::RadarCrossingObjectsNoiseFilterNode" EXECUTABLE radar_crossing_objects_noise_filter_node ) @@ -23,10 +23,10 @@ if(BUILD_TESTING) ament_lint_auto_find_test_dependencies() file(GLOB_RECURSE test_files test/**/*.cpp) - ament_add_ros_isolated_gtest(radar_crossing_objects_noise_filter ${test_files}) + ament_add_ros_isolated_gtest(${PROJECT_NAME} ${test_files}) - target_link_libraries(radar_crossing_objects_noise_filter - radar_crossing_objects_noise_filter_node_component + target_link_libraries(${PROJECT_NAME} + ${PROJECT_NAME}_node_component ) endif() diff --git a/perception/radar_crossing_objects_noise_filter/package.xml b/perception/radar_crossing_objects_noise_filter/package.xml index 0db40b24e809c..d0245dfe62a40 100644 --- a/perception/radar_crossing_objects_noise_filter/package.xml +++ b/perception/radar_crossing_objects_noise_filter/package.xml @@ -16,7 +16,6 @@ autoware_perception_msgs autoware_universe_utils - geometry_msgs rclcpp rclcpp_components tf2 diff --git a/perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node/radar_crossing_objects_noise_filter_node.cpp b/perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node.cpp similarity index 90% rename from perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node/radar_crossing_objects_noise_filter_node.cpp rename to perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node.cpp index 339cb8afa454b..13231b83bf27b 100644 --- a/perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node/radar_crossing_objects_noise_filter_node.cpp +++ b/perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_crossing_objects_noise_filter/radar_crossing_objects_noise_filter_node.hpp" +#include "radar_crossing_objects_noise_filter_node.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" #include "autoware/universe_utils/math/normalization.hpp" @@ -50,7 +50,7 @@ bool update_param( } } // namespace -namespace radar_crossing_objects_noise_filter +namespace autoware::radar_crossing_objects_noise_filter { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -125,13 +125,13 @@ rcl_interfaces::msg::SetParametersResult RadarCrossingObjectsNoiseFilterNode::on bool RadarCrossingObjectsNoiseFilterNode::isNoise(const DetectedObject & object) { const double velocity = std::abs( - autoware_universe_utils::calcNorm(object.kinematics.twist_with_covariance.twist.linear)); + autoware::universe_utils::calcNorm(object.kinematics.twist_with_covariance.twist.linear)); const double object_angle = tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation); const double object_position_angle = std::atan2( object.kinematics.pose_with_covariance.pose.position.y, object.kinematics.pose_with_covariance.pose.position.x); const double crossing_yaw = - autoware_universe_utils::normalizeRadian(object_angle - object_position_angle); + autoware::universe_utils::normalizeRadian(object_angle - object_position_angle); if ( velocity > node_param_.velocity_threshold && @@ -142,8 +142,8 @@ bool RadarCrossingObjectsNoiseFilterNode::isNoise(const DetectedObject & object) } } -} // namespace radar_crossing_objects_noise_filter +} // namespace autoware::radar_crossing_objects_noise_filter #include "rclcpp_components/register_node_macro.hpp" RCLCPP_COMPONENTS_REGISTER_NODE( - radar_crossing_objects_noise_filter::RadarCrossingObjectsNoiseFilterNode) + autoware::radar_crossing_objects_noise_filter::RadarCrossingObjectsNoiseFilterNode) diff --git a/perception/radar_crossing_objects_noise_filter/include/radar_crossing_objects_noise_filter/radar_crossing_objects_noise_filter_node.hpp b/perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node.hpp similarity index 82% rename from perception/radar_crossing_objects_noise_filter/include/radar_crossing_objects_noise_filter/radar_crossing_objects_noise_filter_node.hpp rename to perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node.hpp index fbd64c884d396..6e389f563a138 100644 --- a/perception/radar_crossing_objects_noise_filter/include/radar_crossing_objects_noise_filter/radar_crossing_objects_noise_filter_node.hpp +++ b/perception/radar_crossing_objects_noise_filter/src/radar_crossing_objects_noise_filter_node.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_CROSSING_OBJECTS_NOISE_FILTER__RADAR_CROSSING_OBJECTS_NOISE_FILTER_NODE_HPP_ -#define RADAR_CROSSING_OBJECTS_NOISE_FILTER__RADAR_CROSSING_OBJECTS_NOISE_FILTER_NODE_HPP_ +#ifndef RADAR_CROSSING_OBJECTS_NOISE_FILTER_NODE_HPP_ +#define RADAR_CROSSING_OBJECTS_NOISE_FILTER_NODE_HPP_ #include "rclcpp/rclcpp.hpp" @@ -23,7 +23,7 @@ #include #include -namespace radar_crossing_objects_noise_filter +namespace autoware::radar_crossing_objects_noise_filter { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -63,6 +63,6 @@ class RadarCrossingObjectsNoiseFilterNode : public rclcpp::Node bool isNoise(const DetectedObject & object); }; -} // namespace radar_crossing_objects_noise_filter +} // namespace autoware::radar_crossing_objects_noise_filter -#endif // RADAR_CROSSING_OBJECTS_NOISE_FILTER__RADAR_CROSSING_OBJECTS_NOISE_FILTER_NODE_HPP_ +#endif // RADAR_CROSSING_OBJECTS_NOISE_FILTER_NODE_HPP_ diff --git a/perception/radar_crossing_objects_noise_filter/test/test_radar_crossing_objects_noise_filter/test_radar_crossing_objects_filter_is_noise.cpp b/perception/radar_crossing_objects_noise_filter/test/test_radar_crossing_objects_noise_filter/test_radar_crossing_objects_filter_is_noise.cpp index 501edcbe84af8..93475af7b3628 100644 --- a/perception/radar_crossing_objects_noise_filter/test/test_radar_crossing_objects_noise_filter/test_radar_crossing_objects_filter_is_noise.cpp +++ b/perception/radar_crossing_objects_noise_filter/test/test_radar_crossing_objects_noise_filter/test_radar_crossing_objects_filter_is_noise.cpp @@ -12,24 +12,24 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "../../src/radar_crossing_objects_noise_filter_node.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" #include "autoware/universe_utils/math/unit_conversion.hpp" -#include "radar_crossing_objects_noise_filter/radar_crossing_objects_noise_filter_node.hpp" #include #include -std::shared_ptr get_node( - double angle_threshold, double velocity_threshold) +std::shared_ptr +get_node(double angle_threshold, double velocity_threshold) { rclcpp::NodeOptions node_options; node_options.parameter_overrides( {{"angle_threshold", angle_threshold}, {"velocity_threshold", velocity_threshold}}); - auto node = - std::make_shared( - node_options); + auto node = std::make_shared< + autoware::radar_crossing_objects_noise_filter::RadarCrossingObjectsNoiseFilterNode>( + node_options); return node; } @@ -48,9 +48,9 @@ TEST(RadarCrossingObjectsFilter, IsNoise) { rclcpp::init(0, nullptr); { - auto velocity = autoware_universe_utils::createVector3(40.0, 30.0, 0.0); - auto position = autoware_universe_utils::createPoint(1.0, 0.0, 0.0); - auto orientation = autoware_universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); + auto velocity = autoware::universe_utils::createVector3(40.0, 30.0, 0.0); + auto position = autoware::universe_utils::createPoint(1.0, 0.0, 0.0); + auto orientation = autoware::universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); auto object = get_object(velocity, position, orientation); { double velocity_threshold = 40.0; @@ -81,9 +81,9 @@ TEST(RadarCrossingObjectsFilter, IsNoise) } { - auto velocity = autoware_universe_utils::createVector3(40.0, 30.0, 0.0); - auto position = autoware_universe_utils::createPoint(1.0, 2.0, 0.0); - auto orientation = autoware_universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); + auto velocity = autoware::universe_utils::createVector3(40.0, 30.0, 0.0); + auto position = autoware::universe_utils::createPoint(1.0, 2.0, 0.0); + auto orientation = autoware::universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); auto object = get_object(velocity, position, orientation); { double velocity_threshold = 40.0; @@ -112,9 +112,9 @@ TEST(RadarCrossingObjectsFilter, IsNoise) } { - auto velocity = autoware_universe_utils::createVector3(24.0, 18.0, 0.0); - auto position = autoware_universe_utils::createPoint(1.0, 0.0, 0.0); - auto orientation = autoware_universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); + auto velocity = autoware::universe_utils::createVector3(24.0, 18.0, 0.0); + auto position = autoware::universe_utils::createPoint(1.0, 0.0, 0.0); + auto orientation = autoware::universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); auto object = get_object(velocity, position, orientation); { double velocity_threshold = 40.0; @@ -143,9 +143,9 @@ TEST(RadarCrossingObjectsFilter, IsNoise) } { - auto velocity = autoware_universe_utils::createVector3(24.0, 18.0, 0.0); - auto position = autoware_universe_utils::createPoint(1.0, 2.0, 0.0); - auto orientation = autoware_universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); + auto velocity = autoware::universe_utils::createVector3(24.0, 18.0, 0.0); + auto position = autoware::universe_utils::createPoint(1.0, 2.0, 0.0); + auto orientation = autoware::universe_utils::createQuaternion(1.0, 1.0, 1.0, 0.0); auto object = get_object(velocity, position, orientation); { double velocity_threshold = 40.0; diff --git a/perception/radar_fusion_to_detected_object/CMakeLists.txt b/perception/radar_fusion_to_detected_object/CMakeLists.txt index c8297567511dd..76c27d3958841 100644 --- a/perception/radar_fusion_to_detected_object/CMakeLists.txt +++ b/perception/radar_fusion_to_detected_object/CMakeLists.txt @@ -6,14 +6,14 @@ find_package(autoware_cmake REQUIRED) autoware_package() # Targets -ament_auto_add_library(radar_object_fusion_to_detected_object_node_component SHARED - src/radar_object_fusion_to_detected_object_node/radar_object_fusion_to_detected_object_node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/node.cpp src/radar_fusion_to_detected_object.cpp ) -rclcpp_components_register_node(radar_object_fusion_to_detected_object_node_component - PLUGIN "radar_fusion_to_detected_object::RadarObjectFusionToDetectedObjectNode" - EXECUTABLE radar_object_fusion_to_detected_object_node +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::radar_fusion_to_detected_object::RadarObjectFusionToDetectedObjectNode" + EXECUTABLE radar_fusion_to_detected_object_node ) # Tests diff --git a/perception/radar_fusion_to_detected_object/launch/radar_object_fusion_to_detected_object.launch.xml b/perception/radar_fusion_to_detected_object/launch/radar_object_fusion_to_detected_object.launch.xml index d43f6b9655ae5..e5505ad87d9ec 100644 --- a/perception/radar_fusion_to_detected_object/launch/radar_object_fusion_to_detected_object.launch.xml +++ b/perception/radar_fusion_to_detected_object/launch/radar_object_fusion_to_detected_object.launch.xml @@ -8,7 +8,7 @@ - + diff --git a/perception/radar_fusion_to_detected_object/package.xml b/perception/radar_fusion_to_detected_object/package.xml index aa0711f1cc6ce..2094ff7770555 100644 --- a/perception/radar_fusion_to_detected_object/package.xml +++ b/perception/radar_fusion_to_detected_object/package.xml @@ -22,7 +22,6 @@ message_filters rclcpp rclcpp_components - std_msgs ament_lint_common autoware_lint_common diff --git a/perception/radar_fusion_to_detected_object/include/radar_fusion_to_detected_object/radar_fusion_to_detected_object_node.hpp b/perception/radar_fusion_to_detected_object/src/include/node.hpp similarity index 86% rename from perception/radar_fusion_to_detected_object/include/radar_fusion_to_detected_object/radar_fusion_to_detected_object_node.hpp rename to perception/radar_fusion_to_detected_object/src/include/node.hpp index 96794509bdfc3..3f181da0041cb 100644 --- a/perception/radar_fusion_to_detected_object/include/radar_fusion_to_detected_object/radar_fusion_to_detected_object_node.hpp +++ b/perception/radar_fusion_to_detected_object/src/include/node.hpp @@ -13,13 +13,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_FUSION_TO_DETECTED_OBJECT__RADAR_FUSION_TO_DETECTED_OBJECT_NODE_HPP_ -#define RADAR_FUSION_TO_DETECTED_OBJECT__RADAR_FUSION_TO_DETECTED_OBJECT_NODE_HPP_ +#ifndef NODE_HPP_ +#define NODE_HPP_ #include "message_filters/subscriber.h" #include "message_filters/sync_policies/approximate_time.h" #include "message_filters/synchronizer.h" -#include "radar_fusion_to_detected_object/radar_fusion_to_detected_object.hpp" +#include "radar_fusion_to_detected_object.hpp" #include "rclcpp/rclcpp.hpp" #include "autoware_perception_msgs/msg/detected_objects.hpp" @@ -29,7 +29,7 @@ #include #include -namespace radar_fusion_to_detected_object +namespace autoware::radar_fusion_to_detected_object { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -87,6 +87,6 @@ class RadarObjectFusionToDetectedObjectNode : public rclcpp::Node const DetectedObject & radar_object, const std_msgs::msg::Header & header_); }; -} // namespace radar_fusion_to_detected_object +} // namespace autoware::radar_fusion_to_detected_object -#endif // RADAR_FUSION_TO_DETECTED_OBJECT__RADAR_FUSION_TO_DETECTED_OBJECT_NODE_HPP_ +#endif // NODE_HPP_ diff --git a/perception/radar_fusion_to_detected_object/include/radar_fusion_to_detected_object/radar_fusion_to_detected_object.hpp b/perception/radar_fusion_to_detected_object/src/include/radar_fusion_to_detected_object.hpp similarity index 89% rename from perception/radar_fusion_to_detected_object/include/radar_fusion_to_detected_object/radar_fusion_to_detected_object.hpp rename to perception/radar_fusion_to_detected_object/src/include/radar_fusion_to_detected_object.hpp index ef6891c6c8944..545b7d7e41b2a 100644 --- a/perception/radar_fusion_to_detected_object/include/radar_fusion_to_detected_object/radar_fusion_to_detected_object.hpp +++ b/perception/radar_fusion_to_detected_object/src/include/radar_fusion_to_detected_object.hpp @@ -12,30 +12,31 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_FUSION_TO_DETECTED_OBJECT__RADAR_FUSION_TO_DETECTED_OBJECT_HPP_ -#define RADAR_FUSION_TO_DETECTED_OBJECT__RADAR_FUSION_TO_DETECTED_OBJECT_HPP_ +#ifndef RADAR_FUSION_TO_DETECTED_OBJECT_HPP_ +#define RADAR_FUSION_TO_DETECTED_OBJECT_HPP_ + +#define EIGEN_MPL2_ONLY #include "autoware/universe_utils/geometry/boost_geometry.hpp" #include "rclcpp/logger.hpp" -#define EIGEN_MPL2_ONLY + #include #include #include "autoware_perception_msgs/msg/detected_objects.hpp" #include "geometry_msgs/msg/pose_with_covariance.hpp" #include "geometry_msgs/msg/twist_with_covariance.hpp" -// #include "std_msgs/msg/header.hpp" #include #include #include -namespace radar_fusion_to_detected_object +namespace autoware::radar_fusion_to_detected_object { +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::Point2d; using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::Point2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::PoseWithCovariance; using geometry_msgs::msg::Twist; @@ -113,6 +114,6 @@ class RadarFusionToDetectedObject double getTwistNorm(const Twist & twist); LinearRing2d createObject2dWithMargin(const Point2d object_size, const double margin); }; -} // namespace radar_fusion_to_detected_object +} // namespace autoware::radar_fusion_to_detected_object -#endif // RADAR_FUSION_TO_DETECTED_OBJECT__RADAR_FUSION_TO_DETECTED_OBJECT_HPP_ +#endif // RADAR_FUSION_TO_DETECTED_OBJECT_HPP_ diff --git a/perception/radar_fusion_to_detected_object/src/radar_object_fusion_to_detected_object_node/radar_object_fusion_to_detected_object_node.cpp b/perception/radar_fusion_to_detected_object/src/node.cpp similarity index 96% rename from perception/radar_fusion_to_detected_object/src/radar_object_fusion_to_detected_object_node/radar_object_fusion_to_detected_object_node.cpp rename to perception/radar_fusion_to_detected_object/src/node.cpp index 90851674ef9eb..58e893032340c 100644 --- a/perception/radar_fusion_to_detected_object/src/radar_object_fusion_to_detected_object_node/radar_object_fusion_to_detected_object_node.cpp +++ b/perception/radar_fusion_to_detected_object/src/node.cpp @@ -13,7 +13,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_fusion_to_detected_object/radar_fusion_to_detected_object_node.hpp" +#include "include/node.hpp" + #include "rclcpp/rclcpp.hpp" #include @@ -46,7 +47,7 @@ bool update_param( } } // namespace -namespace radar_fusion_to_detected_object +namespace autoware::radar_fusion_to_detected_object { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -217,8 +218,8 @@ RadarFusionToDetectedObject::RadarInput RadarObjectFusionToDetectedObjectNode::s return output; } -} // namespace radar_fusion_to_detected_object +} // namespace autoware::radar_fusion_to_detected_object #include "rclcpp_components/register_node_macro.hpp" RCLCPP_COMPONENTS_REGISTER_NODE( - radar_fusion_to_detected_object::RadarObjectFusionToDetectedObjectNode) + autoware::radar_fusion_to_detected_object::RadarObjectFusionToDetectedObjectNode) diff --git a/perception/radar_fusion_to_detected_object/src/radar_fusion_to_detected_object.cpp b/perception/radar_fusion_to_detected_object/src/radar_fusion_to_detected_object.cpp index 85940b7f99f3d..0c90a468f2ebd 100644 --- a/perception/radar_fusion_to_detected_object/src/radar_fusion_to_detected_object.cpp +++ b/perception/radar_fusion_to_detected_object/src/radar_fusion_to_detected_object.cpp @@ -13,10 +13,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_fusion_to_detected_object/radar_fusion_to_detected_object.hpp" +#include "include/radar_fusion_to_detected_object.hpp" -#include -#include +#include "autoware/universe_utils/geometry/geometry.hpp" +#include "autoware/universe_utils/math/normalization.hpp" #include @@ -27,12 +27,12 @@ #include #include -namespace radar_fusion_to_detected_object +namespace autoware::radar_fusion_to_detected_object { +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::Point2d; using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::Point2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::PoseWithCovariance; using geometry_msgs::msg::Twist; @@ -136,7 +136,7 @@ RadarFusionToDetectedObject::Output RadarFusionToDetectedObject::update( bool RadarFusionToDetectedObject::hasTwistCovariance( const TwistWithCovariance & twist_with_covariance) { - using IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; auto covariance = twist_with_covariance.covariance; if (covariance[IDX::X_X] == 0.0 && covariance[IDX::Y_Y] == 0.0 && covariance[IDX::Z_Z] == 0.0) { return false; @@ -151,11 +151,11 @@ bool RadarFusionToDetectedObject::isYawCorrect( const DetectedObject & object, const TwistWithCovariance & twist_with_covariance, const double & yaw_threshold) { - const double twist_yaw = autoware_universe_utils::normalizeRadian( + const double twist_yaw = autoware::universe_utils::normalizeRadian( std::atan2(twist_with_covariance.twist.linear.y, twist_with_covariance.twist.linear.x)); - const double object_yaw = autoware_universe_utils::normalizeRadian( + const double object_yaw = autoware::universe_utils::normalizeRadian( tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation)); - const double diff_yaw = autoware_universe_utils::normalizeRadian(twist_yaw - object_yaw); + const double diff_yaw = autoware::universe_utils::normalizeRadian(twist_yaw - object_yaw); if (std::abs(diff_yaw) < yaw_threshold) { return true; } else if (M_PI - yaw_threshold < std::abs(diff_yaw)) { @@ -174,12 +174,12 @@ RadarFusionToDetectedObject::filterRadarWithinObject( { std::vector outputs{}; - autoware_universe_utils::Point2d object_size{ + autoware::universe_utils::Point2d object_size{ object.shape.dimensions.x, object.shape.dimensions.y}; LinearRing2d object_box = createObject2dWithMargin(object_size, param_.bounding_box_margin); - object_box = autoware_universe_utils::transformVector( + object_box = autoware::universe_utils::transformVector( object_box, - autoware_universe_utils::pose2transform(object.kinematics.pose_with_covariance.pose)); + autoware::universe_utils::pose2transform(object.kinematics.pose_with_covariance.pose)); for (const auto & radar : (*radars)) { Point2d radar_point{ @@ -214,10 +214,10 @@ TwistWithCovariance RadarFusionToDetectedObject::estimateTwist( Eigen::Vector2d vec_min_distance(0.0, 0.0); if (param_.velocity_weight_min_distance > 0.0) { auto comp_func = [&](const RadarInput & a, const RadarInput & b) { - return autoware_universe_utils::calcSquaredDistance2d( + return autoware::universe_utils::calcSquaredDistance2d( a.pose_with_covariance.pose.position, object.kinematics.pose_with_covariance.pose.position) < - autoware_universe_utils::calcSquaredDistance2d( + autoware::universe_utils::calcSquaredDistance2d( b.pose_with_covariance.pose.position, object.kinematics.pose_with_covariance.pose.position); }; @@ -358,4 +358,4 @@ LinearRing2d RadarFusionToDetectedObject::createObject2dWithMargin( return box; } -} // namespace radar_fusion_to_detected_object +} // namespace autoware::radar_fusion_to_detected_object diff --git a/perception/radar_object_clustering/CMakeLists.txt b/perception/radar_object_clustering/CMakeLists.txt index ea25353d3e1d7..9a54bbb0dae43 100644 --- a/perception/radar_object_clustering/CMakeLists.txt +++ b/perception/radar_object_clustering/CMakeLists.txt @@ -6,12 +6,12 @@ find_package(autoware_cmake REQUIRED) autoware_package() # Targets -ament_auto_add_library(radar_object_clustering_node_component SHARED - src/radar_object_clustering_node/radar_object_clustering_node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/radar_object_clustering_node.cpp ) -rclcpp_components_register_node(radar_object_clustering_node_component - PLUGIN "radar_object_clustering::RadarObjectClusteringNode" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::radar_object_clustering::RadarObjectClusteringNode" EXECUTABLE radar_object_clustering_node ) diff --git a/perception/radar_object_clustering/README.md b/perception/radar_object_clustering/README.md index abd2b6f9d1bfe..8f936ce61a1f3 100644 --- a/perception/radar_object_clustering/README.md +++ b/perception/radar_object_clustering/README.md @@ -83,13 +83,13 @@ These are used in `isSameObject` function as below. bool RadarObjectClusteringNode::isSameObject( const DetectedObject & object_1, const DetectedObject & object_2) { - const double angle_diff = std::abs(autoware_universe_utils::normalizeRadian( + const double angle_diff = std::abs(autoware::universe_utils::normalizeRadian( tf2::getYaw(object_1.kinematics.pose_with_covariance.pose.orientation) - tf2::getYaw(object_2.kinematics.pose_with_covariance.pose.orientation))); const double velocity_diff = std::abs( object_1.kinematics.twist_with_covariance.twist.linear.x - object_2.kinematics.twist_with_covariance.twist.linear.x); - const double distance = autoware_universe_utils::calcDistance2d( + const double distance = autoware::universe_utils::calcDistance2d( object_1.kinematics.pose_with_covariance.pose.position, object_2.kinematics.pose_with_covariance.pose.position); diff --git a/perception/radar_object_clustering/src/radar_object_clustering_node/radar_object_clustering_node.cpp b/perception/radar_object_clustering/src/radar_object_clustering_node.cpp similarity index 95% rename from perception/radar_object_clustering/src/radar_object_clustering_node/radar_object_clustering_node.cpp rename to perception/radar_object_clustering/src/radar_object_clustering_node.cpp index 1681260c711b2..b867d6a193ed7 100644 --- a/perception/radar_object_clustering/src/radar_object_clustering_node/radar_object_clustering_node.cpp +++ b/perception/radar_object_clustering/src/radar_object_clustering_node.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_clustering/radar_object_clustering_node.hpp" +#include "radar_object_clustering_node.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" #include "autoware/universe_utils/math/unit_conversion.hpp" @@ -20,17 +20,18 @@ #include -#include -#include -#include -#include - #ifdef ROS_DISTRO_GALACTIC #include #else #include #endif +#include +#include +#include +#include +#include + namespace { template @@ -58,7 +59,7 @@ double get_distance(const autoware_perception_msgs::msg::DetectedObject & object } // namespace -namespace radar_object_clustering +namespace autoware::radar_object_clustering { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -179,13 +180,13 @@ void RadarObjectClusteringNode::onObjects(const DetectedObjects::ConstSharedPtr bool RadarObjectClusteringNode::isSameObject( const DetectedObject & object_1, const DetectedObject & object_2) { - const double angle_diff = std::abs(autoware_universe_utils::normalizeRadian( + const double angle_diff = std::abs(autoware::universe_utils::normalizeRadian( tf2::getYaw(object_1.kinematics.pose_with_covariance.pose.orientation) - tf2::getYaw(object_2.kinematics.pose_with_covariance.pose.orientation))); const double velocity_diff = std::abs( object_1.kinematics.twist_with_covariance.twist.linear.x - object_2.kinematics.twist_with_covariance.twist.linear.x); - const double distance = autoware_universe_utils::calcDistance2d( + const double distance = autoware::universe_utils::calcDistance2d( object_1.kinematics.pose_with_covariance.pose.position, object_2.kinematics.pose_with_covariance.pose.position); @@ -229,7 +230,7 @@ rcl_interfaces::msg::SetParametersResult RadarObjectClusteringNode::onSetParam( result.reason = "success"; return result; } -} // namespace radar_object_clustering +} // namespace autoware::radar_object_clustering #include "rclcpp_components/register_node_macro.hpp" -RCLCPP_COMPONENTS_REGISTER_NODE(radar_object_clustering::RadarObjectClusteringNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::radar_object_clustering::RadarObjectClusteringNode) diff --git a/perception/radar_object_clustering/include/radar_object_clustering/radar_object_clustering_node.hpp b/perception/radar_object_clustering/src/radar_object_clustering_node.hpp similarity index 87% rename from perception/radar_object_clustering/include/radar_object_clustering/radar_object_clustering_node.hpp rename to perception/radar_object_clustering/src/radar_object_clustering_node.hpp index 38a2235a117eb..13284a4151f49 100644 --- a/perception/radar_object_clustering/include/radar_object_clustering/radar_object_clustering_node.hpp +++ b/perception/radar_object_clustering/src/radar_object_clustering_node.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_CLUSTERING__RADAR_OBJECT_CLUSTERING_NODE_HPP_ -#define RADAR_OBJECT_CLUSTERING__RADAR_OBJECT_CLUSTERING_NODE_HPP_ +#ifndef RADAR_OBJECT_CLUSTERING_NODE_HPP_ +#define RADAR_OBJECT_CLUSTERING_NODE_HPP_ #include "rclcpp/rclcpp.hpp" @@ -24,7 +24,7 @@ #include #include -namespace radar_object_clustering +namespace autoware::radar_object_clustering { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -72,6 +72,6 @@ class RadarObjectClusteringNode : public rclcpp::Node bool isSameObject(const DetectedObject & object_1, const DetectedObject & object_2); }; -} // namespace radar_object_clustering +} // namespace autoware::radar_object_clustering -#endif // RADAR_OBJECT_CLUSTERING__RADAR_OBJECT_CLUSTERING_NODE_HPP_ +#endif // RADAR_OBJECT_CLUSTERING_NODE_HPP_ diff --git a/perception/radar_object_tracker/CMakeLists.txt b/perception/radar_object_tracker/CMakeLists.txt index ade45847f8a9f..b732ef6cc863c 100644 --- a/perception/radar_object_tracker/CMakeLists.txt +++ b/perception/radar_object_tracker/CMakeLists.txt @@ -20,31 +20,31 @@ include_directories( ${EIGEN3_INCLUDE_DIR} ) -ament_auto_add_library(radar_object_tracker_utils SHARED +ament_auto_add_library(${PROJECT_NAME}_utils SHARED src/utils/utils.cpp src/utils/radar_object_tracker_utils.cpp ) -ament_auto_add_library(radar_object_tracker_node SHARED - src/radar_object_tracker_node/radar_object_tracker_node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/radar_object_tracker_node.cpp src/tracker/model/tracker_base.cpp src/tracker/model/linear_motion_tracker.cpp src/tracker/model/constant_turn_rate_motion_tracker.cpp - src/data_association/data_association.cpp - src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp + src/association/data_association.cpp + src/association/mu_ssp/mu_successive_shortest_path_wrapper.cpp ) -target_link_libraries(radar_object_tracker_node +target_link_libraries(${PROJECT_NAME} Eigen3::Eigen yaml-cpp nlohmann_json::nlohmann_json # for debug glog::glog - radar_object_tracker_utils + ${PROJECT_NAME}_utils ) -rclcpp_components_register_node(radar_object_tracker_node - PLUGIN "RadarObjectTrackerNode" - EXECUTABLE radar_object_tracker +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::radar_object_tracker::RadarObjectTrackerNode" + EXECUTABLE radar_object_tracker_node ) # testing @@ -52,15 +52,15 @@ if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) ament_lint_auto_find_test_dependencies() - ament_add_gtest(test_radar_object_tracker_utils + ament_add_gtest(test_${PROJECT_NAME}_utils test/test_radar_object_tracker_utils.cpp src/utils/radar_object_tracker_utils.cpp ) - target_include_directories(test_radar_object_tracker_utils PRIVATE + target_include_directories(test_${PROJECT_NAME}_utils PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) - target_link_libraries(test_radar_object_tracker_utils - radar_object_tracker_utils + target_link_libraries(test_${PROJECT_NAME}_utils + ${PROJECT_NAME}_utils ) endif() diff --git a/perception/radar_object_tracker/include/radar_object_tracker/data_association/data_association.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/data_association.hpp similarity index 78% rename from perception/radar_object_tracker/include/radar_object_tracker/data_association/data_association.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/association/data_association.hpp index 434fe66f13790..efde1e6763cdd 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/data_association/data_association.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/data_association.hpp @@ -16,25 +16,27 @@ // Author: v1.0 Yukihiro Saito // -#ifndef RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ -#define RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ - -#include -#include -#include -#include +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__DATA_ASSOCIATION_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__DATA_ASSOCIATION_HPP_ #define EIGEN_MPL2_ONLY + +#include "autoware_radar_object_tracker/association/solver/gnn_solver.hpp" +#include "autoware_radar_object_tracker/tracker/tracker.hpp" #include "object_recognition_utils/object_recognition_utils.hpp" -#include "radar_object_tracker/data_association/solver/gnn_solver.hpp" -#include "radar_object_tracker/tracker/tracker.hpp" #include #include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include +#include #include +#include +#include +namespace autoware::radar_object_tracker +{ class DataAssociation { private: @@ -62,5 +64,5 @@ class DataAssociation const std::string & file_name); virtual ~DataAssociation() {} }; - -#endif // RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ +} // namespace autoware::radar_object_tracker +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__DATA_ASSOCIATION_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/gnn_solver.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/gnn_solver.hpp similarity index 55% rename from perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/gnn_solver.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/gnn_solver.hpp index 6d531ac2ee8c2..2aa4a577ef91c 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/gnn_solver.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/gnn_solver.hpp @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ -#define RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ -#include "radar_object_tracker/data_association/solver/gnn_solver_interface.hpp" -#include "radar_object_tracker/data_association/solver/mu_successive_shortest_path.hpp" -#include "radar_object_tracker/data_association/solver/successive_shortest_path.hpp" +#include "autoware_radar_object_tracker/association/solver/gnn_solver_interface.hpp" +#include "autoware_radar_object_tracker/association/solver/mu_ssp.hpp" +#include "autoware_radar_object_tracker/association/solver/ssp.hpp" -#endif // RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ diff --git a/perception/object_merger/include/object_merger/data_association/solver/gnn_solver_interface.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/gnn_solver_interface.hpp similarity index 71% rename from perception/object_merger/include/object_merger/data_association/solver/gnn_solver_interface.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/gnn_solver_interface.hpp index 447f4fa2b7ce3..ee2e98ba47278 100644 --- a/perception/object_merger/include/object_merger/data_association/solver/gnn_solver_interface.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/gnn_solver_interface.hpp @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ -#define OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ #include #include -namespace gnn_solver +namespace autoware::radar_object_tracker::gnn_solver { class GnnSolverInterface { @@ -30,6 +30,6 @@ class GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) = 0; }; -} // namespace gnn_solver +} // namespace autoware::radar_object_tracker::gnn_solver -#endif // OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/mu_successive_shortest_path.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/mu_ssp.hpp similarity index 69% rename from perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/mu_successive_shortest_path.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/mu_ssp.hpp index d4bdd72248670..2a5a336a3eb87 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/mu_successive_shortest_path.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/mu_ssp.hpp @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ -#define RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__MU_SSP_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__MU_SSP_HPP_ -#include "radar_object_tracker/data_association/solver/gnn_solver_interface.hpp" +#include "autoware_radar_object_tracker/association/solver/gnn_solver_interface.hpp" #include #include -namespace gnn_solver +namespace autoware::radar_object_tracker::gnn_solver { class MuSSP : public GnnSolverInterface { @@ -32,6 +32,6 @@ class MuSSP : public GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) override; }; -} // namespace gnn_solver +} // namespace autoware::radar_object_tracker::gnn_solver -#endif // RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__MU_SSP_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/successive_shortest_path.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/ssp.hpp similarity index 69% rename from perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/successive_shortest_path.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/ssp.hpp index b08e3c0d302a7..c956e1ebd2f6d 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/data_association/solver/successive_shortest_path.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/association/solver/ssp.hpp @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ -#define RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__SSP_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__SSP_HPP_ -#include "radar_object_tracker/data_association/solver/gnn_solver_interface.hpp" +#include "autoware_radar_object_tracker/association/solver/gnn_solver_interface.hpp" #include #include -namespace gnn_solver +namespace autoware::radar_object_tracker::gnn_solver { class SSP : public GnnSolverInterface { @@ -32,6 +32,6 @@ class SSP : public GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) override; }; -} // namespace gnn_solver +} // namespace autoware::radar_object_tracker::gnn_solver -#endif // RADAR_OBJECT_TRACKER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__ASSOCIATION__SOLVER__SSP_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp similarity index 86% rename from perception/radar_object_tracker/include/radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp index 7294f8745bec4..dab4d3f8efa24 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__TRACKER__MODEL__CONSTANT_TURN_RATE_MOTION_TRACKER_HPP_ -#define RADAR_OBJECT_TRACKER__TRACKER__MODEL__CONSTANT_TURN_RATE_MOTION_TRACKER_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__CONSTANT_TURN_RATE_MOTION_TRACKER_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__CONSTANT_TURN_RATE_MOTION_TRACKER_HPP_ -#include "radar_object_tracker/tracker/model/tracker_base.hpp" - -#include +#include "autoware_radar_object_tracker/tracker/model/tracker_base.hpp" +#include "kalman_filter/kalman_filter.hpp" #include - +namespace autoware::radar_object_tracker +{ using Label = autoware_perception_msgs::msg::ObjectClassification; class ConstantTurnRateMotionTracker : public Tracker // means constant turn rate motion tracker { @@ -108,5 +108,5 @@ class ConstantTurnRateMotionTracker : public Tracker // means constant turn rat autoware_perception_msgs::msg::TrackedObject & object) const override; virtual ~ConstantTurnRateMotionTracker() {} }; - -#endif // RADAR_OBJECT_TRACKER__TRACKER__MODEL__CONSTANT_TURN_RATE_MOTION_TRACKER_HPP_ +} // namespace autoware::radar_object_tracker +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__CONSTANT_TURN_RATE_MOTION_TRACKER_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/tracker/model/linear_motion_tracker.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/linear_motion_tracker.hpp similarity index 87% rename from perception/radar_object_tracker/include/radar_object_tracker/tracker/model/linear_motion_tracker.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/linear_motion_tracker.hpp index 39b0eaa417c88..7c96aa8fbaa36 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/tracker/model/linear_motion_tracker.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/linear_motion_tracker.hpp @@ -12,15 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__TRACKER__MODEL__LINEAR_MOTION_TRACKER_HPP_ -#define RADAR_OBJECT_TRACKER__TRACKER__MODEL__LINEAR_MOTION_TRACKER_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__LINEAR_MOTION_TRACKER_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__LINEAR_MOTION_TRACKER_HPP_ -#include "radar_object_tracker/tracker/model/tracker_base.hpp" - -#include +#include "autoware_radar_object_tracker/tracker/model/tracker_base.hpp" +#include "kalman_filter/kalman_filter.hpp" #include +namespace autoware::radar_object_tracker +{ + using Label = autoware_perception_msgs::msg::ObjectClassification; class LinearMotionTracker : public Tracker { @@ -111,5 +113,5 @@ class LinearMotionTracker : public Tracker autoware_perception_msgs::msg::TrackedObject & object) const override; virtual ~LinearMotionTracker() {} }; - -#endif // RADAR_OBJECT_TRACKER__TRACKER__MODEL__LINEAR_MOTION_TRACKER_HPP_ +} // namespace autoware::radar_object_tracker +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__LINEAR_MOTION_TRACKER_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/tracker/model/tracker_base.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/tracker_base.hpp similarity index 89% rename from perception/radar_object_tracker/include/radar_object_tracker/tracker/model/tracker_base.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/tracker_base.hpp index 3135aa45b87b4..caea725ef8f81 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/tracker/model/tracker_base.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/model/tracker_base.hpp @@ -16,12 +16,12 @@ // Author: v1.0 Yukihiro Saito // -#ifndef RADAR_OBJECT_TRACKER__TRACKER__MODEL__TRACKER_BASE_HPP_ -#define RADAR_OBJECT_TRACKER__TRACKER__MODEL__TRACKER_BASE_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__TRACKER_BASE_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__TRACKER_BASE_HPP_ #define EIGEN_MPL2_ONLY +#include "autoware_radar_object_tracker/utils/utils.hpp" #include "object_recognition_utils/object_recognition_utils.hpp" -#include "radar_object_tracker/utils/utils.hpp" #include #include @@ -33,6 +33,8 @@ #include +namespace autoware::radar_object_tracker +{ class Tracker { protected: @@ -92,5 +94,5 @@ class Tracker const rclcpp::Time & time, autoware_perception_msgs::msg::TrackedObject & object) const = 0; virtual bool predict(const rclcpp::Time & time) = 0; }; - -#endif // RADAR_OBJECT_TRACKER__TRACKER__MODEL__TRACKER_BASE_HPP_ +} // namespace autoware::radar_object_tracker +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__MODEL__TRACKER_BASE_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/tracker/tracker.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/tracker.hpp similarity index 79% rename from perception/radar_object_tracker/include/radar_object_tracker/tracker/tracker.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/tracker.hpp index 70045e6b16a07..26222f4c65679 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/tracker/tracker.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/tracker/tracker.hpp @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__TRACKER__TRACKER_HPP_ -#define RADAR_OBJECT_TRACKER__TRACKER__TRACKER_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__TRACKER_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__TRACKER_HPP_ #include "model/constant_turn_rate_motion_tracker.hpp" #include "model/linear_motion_tracker.hpp" #include "model/tracker_base.hpp" -#endif // RADAR_OBJECT_TRACKER__TRACKER__TRACKER_HPP_ +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__TRACKER__TRACKER_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/utils/radar_object_tracker_utils.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/utils/radar_object_tracker_utils.hpp similarity index 77% rename from perception/radar_object_tracker/include/radar_object_tracker/utils/radar_object_tracker_utils.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/utils/radar_object_tracker_utils.hpp index e1c33c022e427..f4fb977d65de2 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/utils/radar_object_tracker_utils.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/utils/radar_object_tracker_utils.hpp @@ -12,12 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__UTILS__RADAR_OBJECT_TRACKER_UTILS_HPP_ -#define RADAR_OBJECT_TRACKER__UTILS__RADAR_OBJECT_TRACKER_UTILS_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__UTILS__RADAR_OBJECT_TRACKER_UTILS_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__UTILS__RADAR_OBJECT_TRACKER_UTILS_HPP_ -#include -#include +#include "autoware/universe_utils/geometry/geometry.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include +#include +#include + +#include "autoware_perception_msgs/msg/tracked_object.hpp" #include #include @@ -33,13 +38,6 @@ #else #include #endif - -#include -#include -#include - -#include - #include #include #include @@ -47,7 +45,8 @@ #include #include -namespace radar_object_tracker_utils + +namespace autoware::radar_object_tracker::utils { boost::optional getTransformAnonymous( @@ -72,6 +71,6 @@ bool hasValidVelocityDirectionToLanelet( const autoware_perception_msgs::msg::TrackedObject & object, const lanelet::ConstLanelets & lanelets, const double max_lateral_velocity); -} // namespace radar_object_tracker_utils +} // namespace autoware::radar_object_tracker::utils -#endif // RADAR_OBJECT_TRACKER__UTILS__RADAR_OBJECT_TRACKER_UTILS_HPP_ +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__UTILS__RADAR_OBJECT_TRACKER_UTILS_HPP_ diff --git a/perception/radar_object_tracker/include/radar_object_tracker/utils/utils.hpp b/perception/radar_object_tracker/include/autoware_radar_object_tracker/utils/utils.hpp similarity index 53% rename from perception/radar_object_tracker/include/radar_object_tracker/utils/utils.hpp rename to perception/radar_object_tracker/include/autoware_radar_object_tracker/utils/utils.hpp index 019d684e8bd46..dd011ac274b64 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/utils/utils.hpp +++ b/perception/radar_object_tracker/include/autoware_radar_object_tracker/utils/utils.hpp @@ -16,16 +16,16 @@ // Author: v1.0 Yukihiro Saito // -#ifndef RADAR_OBJECT_TRACKER__UTILS__UTILS_HPP_ -#define RADAR_OBJECT_TRACKER__UTILS__UTILS_HPP_ +#ifndef AUTOWARE_RADAR_OBJECT_TRACKER__UTILS__UTILS_HPP_ +#define AUTOWARE_RADAR_OBJECT_TRACKER__UTILS__UTILS_HPP_ #include #include #include -#include -#include -#include +#include "autoware_perception_msgs/msg/detected_object.hpp" +#include "autoware_perception_msgs/msg/shape.hpp" +#include "autoware_perception_msgs/msg/tracked_object.hpp" #include #include @@ -33,52 +33,12 @@ #include #include #include - -namespace utils +namespace autoware::radar_object_tracker::utils { -enum MSG_COV_IDX { - X_X = 0, - X_Y = 1, - X_Z = 2, - X_ROLL = 3, - X_PITCH = 4, - X_YAW = 5, - Y_X = 6, - Y_Y = 7, - Y_Z = 8, - Y_ROLL = 9, - Y_PITCH = 10, - Y_YAW = 11, - Z_X = 12, - Z_Y = 13, - Z_Z = 14, - Z_ROLL = 15, - Z_PITCH = 16, - Z_YAW = 17, - ROLL_X = 18, - ROLL_Y = 19, - ROLL_Z = 20, - ROLL_ROLL = 21, - ROLL_PITCH = 22, - ROLL_YAW = 23, - PITCH_X = 24, - PITCH_Y = 25, - PITCH_Z = 26, - PITCH_ROLL = 27, - PITCH_PITCH = 28, - PITCH_YAW = 29, - YAW_X = 30, - YAW_Y = 31, - YAW_Z = 32, - YAW_ROLL = 33, - YAW_PITCH = 34, - YAW_YAW = 35 -}; - // matrix concatenate Eigen::MatrixXd stackMatricesVertically(const std::vector & matrices); Eigen::MatrixXd stackMatricesDiagonally(const std::vector & matrices); -} // namespace utils +} // namespace autoware::radar_object_tracker::utils -#endif // RADAR_OBJECT_TRACKER__UTILS__UTILS_HPP_ +#endif // AUTOWARE_RADAR_OBJECT_TRACKER__UTILS__UTILS_HPP_ diff --git a/perception/radar_object_tracker/launch/radar_object_tracker.launch.xml b/perception/radar_object_tracker/launch/radar_object_tracker.launch.xml index dfebf334456ea..313ef4b0f9fcd 100644 --- a/perception/radar_object_tracker/launch/radar_object_tracker.launch.xml +++ b/perception/radar_object_tracker/launch/radar_object_tracker.launch.xml @@ -7,7 +7,7 @@ - + diff --git a/perception/radar_object_tracker/package.xml b/perception/radar_object_tracker/package.xml index c3c4b33946b56..79ae0385d4b5e 100644 --- a/perception/radar_object_tracker/package.xml +++ b/perception/radar_object_tracker/package.xml @@ -14,12 +14,12 @@ autoware_cmake eigen3_cmake_module + autoware_lanelet2_extension autoware_perception_msgs autoware_universe_utils eigen glog kalman_filter - lanelet2_extension mussp nlohmann-json-dev object_recognition_utils @@ -27,7 +27,6 @@ rclcpp_components tf2 tf2_ros - tier4_perception_msgs unique_identifier_msgs yaml-cpp diff --git a/perception/radar_object_tracker/src/data_association/data_association.cpp b/perception/radar_object_tracker/src/association/data_association.cpp similarity index 95% rename from perception/radar_object_tracker/src/data_association/data_association.cpp rename to perception/radar_object_tracker/src/association/data_association.cpp index ddfb0c3e8f76d..ac57a3f0a87c0 100644 --- a/perception/radar_object_tracker/src/data_association/data_association.cpp +++ b/perception/radar_object_tracker/src/association/data_association.cpp @@ -12,14 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_tracker/data_association/data_association.hpp" +#include "autoware_radar_object_tracker/association/data_association.hpp" -#include "radar_object_tracker/data_association/solver/gnn_solver.hpp" +#include "autoware_radar_object_tracker/association/solver/gnn_solver.hpp" #include -// #include "multi_object_tracker/utils/utils.hpp" - #include #include #include @@ -55,8 +53,8 @@ double getFormedYawAngle( const geometry_msgs::msg::Quaternion & tracker_quat, const bool distinguish_front_or_back = true) { const double measurement_yaw = - autoware_universe_utils::normalizeRadian(tf2::getYaw(measurement_quat)); - const double tracker_yaw = autoware_universe_utils::normalizeRadian(tf2::getYaw(tracker_quat)); + autoware::universe_utils::normalizeRadian(tf2::getYaw(measurement_quat)); + const double tracker_yaw = autoware::universe_utils::normalizeRadian(tf2::getYaw(tracker_quat)); const double angle_range = distinguish_front_or_back ? M_PI : M_PI_2; const double angle_step = distinguish_front_or_back ? 2.0 * M_PI : M_PI; // Fixed measurement_yaw to be in the range of +-90 or 180 degrees of X_t(IDX::YAW) @@ -71,6 +69,8 @@ double getFormedYawAngle( } } // namespace +namespace autoware::radar_object_tracker +{ DataAssociation::DataAssociation( std::vector can_assign_vector, std::vector max_dist_vector, std::vector max_area_vector, std::vector min_area_vector, @@ -203,7 +203,7 @@ Eigen::MatrixXd DataAssociation::calcScoreMatrix( double score = 0.0; if (can_assign_matrix_(tracker_label, measurement_label)) { const double max_dist = max_dist_matrix_(tracker_label, measurement_label); - const double dist = autoware_universe_utils::calcDistance2d( + const double dist = autoware::universe_utils::calcDistance2d( measurement_object.kinematics.pose_with_covariance.pose.position, tracked_object.kinematics.pose_with_covariance.pose.position); @@ -221,7 +221,7 @@ Eigen::MatrixXd DataAssociation::calcScoreMatrix( if (passed_gate) { const double max_area = max_area_matrix_(tracker_label, measurement_label); const double min_area = min_area_matrix_(tracker_label, measurement_label); - const double area = autoware_universe_utils::getArea(measurement_object.shape); + const double area = autoware::universe_utils::getArea(measurement_object.shape); if (area < min_area || max_area < area) { passed_gate = false; } @@ -294,3 +294,5 @@ Eigen::MatrixXd DataAssociation::calcScoreMatrix( return score_matrix; } + +} // namespace autoware::radar_object_tracker diff --git a/perception/object_merger/src/object_association_merger/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp b/perception/radar_object_tracker/src/association/mu_ssp/mu_successive_shortest_path_wrapper.cpp similarity index 86% rename from perception/object_merger/src/object_association_merger/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp rename to perception/radar_object_tracker/src/association/mu_ssp/mu_successive_shortest_path_wrapper.cpp index e7fa56fee88c5..2f47e3b8147d5 100644 --- a/perception/object_merger/src/object_association_merger/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp +++ b/perception/radar_object_tracker/src/association/mu_ssp/mu_successive_shortest_path_wrapper.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "object_merger/data_association/solver/mu_successive_shortest_path.hpp" +#include "autoware_radar_object_tracker/association/solver/mu_ssp.hpp" #include @@ -24,7 +24,7 @@ #include #include -namespace gnn_solver +namespace autoware::radar_object_tracker::gnn_solver { void MuSSP::maximizeLinearAssignment( const std::vector> & cost, std::unordered_map * direct_assignment, @@ -38,4 +38,4 @@ void MuSSP::maximizeLinearAssignment( // Solve DA by muSSP solve_muSSP(cost, direct_assignment, reverse_assignment); } -} // namespace gnn_solver +} // namespace autoware::radar_object_tracker::gnn_solver diff --git a/perception/object_merger/src/object_association_merger/data_association/successive_shortest_path/successive_shortest_path.cpp b/perception/radar_object_tracker/src/association/ssp/successive_shortest_path.cpp similarity index 98% rename from perception/object_merger/src/object_association_merger/data_association/successive_shortest_path/successive_shortest_path.cpp rename to perception/radar_object_tracker/src/association/ssp/successive_shortest_path.cpp index b38257d0188e0..7877fe5451d8d 100644 --- a/perception/object_merger/src/object_association_merger/data_association/successive_shortest_path/successive_shortest_path.cpp +++ b/perception/radar_object_tracker/src/association/ssp/successive_shortest_path.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "object_merger/data_association/solver/successive_shortest_path.hpp" +#include "autoware_radar_object_tracker/association/solver/ssp.hpp" #include #include @@ -22,7 +22,7 @@ #include #include -namespace gnn_solver +namespace autoware::radar_object_tracker::gnn_solver { struct ResidualEdge { @@ -367,4 +367,4 @@ void SSP::maximizeLinearAssignment( } #endif } -} // namespace gnn_solver +} // namespace autoware::radar_object_tracker::gnn_solver diff --git a/perception/radar_object_tracker/src/radar_object_tracker_node/radar_object_tracker_node.cpp b/perception/radar_object_tracker/src/radar_object_tracker_node.cpp similarity index 95% rename from perception/radar_object_tracker/src/radar_object_tracker_node/radar_object_tracker_node.cpp rename to perception/radar_object_tracker/src/radar_object_tracker_node.cpp index 7a868b8b11118..10bf11e46abb9 100644 --- a/perception/radar_object_tracker/src/radar_object_tracker_node/radar_object_tracker_node.cpp +++ b/perception/radar_object_tracker/src/radar_object_tracker_node.cpp @@ -12,15 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_tracker/radar_object_tracker_node/radar_object_tracker_node.hpp" +#define EIGEN_MPL2_ONLY + +#include "radar_object_tracker_node.hpp" -#include "radar_object_tracker/utils/radar_object_tracker_utils.hpp" -#include "radar_object_tracker/utils/utils.hpp" +#include "autoware_radar_object_tracker/utils/radar_object_tracker_utils.hpp" +#include "autoware_radar_object_tracker/utils/utils.hpp" #include #include #include -#include #include @@ -35,8 +36,9 @@ #include #include #include -#define EIGEN_MPL2_ONLY +namespace autoware::radar_object_tracker +{ using Label = autoware_perception_msgs::msg::ObjectClassification; RadarObjectTrackerNode::RadarObjectTrackerNode(const rclcpp::NodeOptions & node_options) @@ -140,7 +142,7 @@ void RadarObjectTrackerNode::onMap(const LaneletMapBin::ConstSharedPtr msg) void RadarObjectTrackerNode::onMeasurement( const autoware_perception_msgs::msg::DetectedObjects::ConstSharedPtr input_objects_msg) { - const auto self_transform = radar_object_tracker_utils::getTransformAnonymous( + const auto self_transform = autoware::radar_object_tracker::utils::getTransformAnonymous( tf_buffer_, "base_link", world_frame_id_, input_objects_msg->header.stamp); if (!self_transform) { return; @@ -236,7 +238,7 @@ std::shared_ptr RadarObjectTrackerNode::createNewTracker( void RadarObjectTrackerNode::onTimer() { rclcpp::Time current_time = this->now(); - const auto self_transform = radar_object_tracker_utils::getTransformAnonymous( + const auto self_transform = autoware::radar_object_tracker::utils::getTransformAnonymous( tf_buffer_, world_frame_id_, "base_link", current_time); if (!self_transform) { return; @@ -283,14 +285,14 @@ void RadarObjectTrackerNode::mapBasedNoiseFilter( for (auto itr = list_tracker.begin(); itr != list_tracker.end(); ++itr) { autoware_perception_msgs::msg::TrackedObject object; (*itr)->getTrackedObject(time, object); - const auto closest_lanelets = radar_object_tracker_utils::getClosestValidLanelets( + const auto closest_lanelets = autoware::radar_object_tracker::utils::getClosestValidLanelets( object, lanelet_map_ptr_, max_distance_from_lane_, max_angle_diff_from_lane_); // 1. If the object is not close to any lanelet, delete the tracker const bool no_closest_lanelet = closest_lanelets.empty(); // 2. If the object velocity direction is not close to the lanelet direction, delete the tracker const bool is_velocity_direction_close_to_lanelet = - radar_object_tracker_utils::hasValidVelocityDirectionToLanelet( + autoware::radar_object_tracker::utils::hasValidVelocityDirectionToLanelet( object, closest_lanelets, max_lateral_velocity_); if (no_closest_lanelet || !is_velocity_direction_close_to_lanelet) { // std::cout << "object removed due to map based noise filter" << " no close lanelet: " << @@ -421,5 +423,8 @@ void RadarObjectTrackerNode::publish(const rclcpp::Time & time) const // Publish tracked_objects_pub_->publish(output_msg); } +} // namespace autoware::radar_object_tracker + +#include -RCLCPP_COMPONENTS_REGISTER_NODE(RadarObjectTrackerNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::radar_object_tracker::RadarObjectTrackerNode) diff --git a/perception/radar_object_tracker/include/radar_object_tracker/radar_object_tracker_node/radar_object_tracker_node.hpp b/perception/radar_object_tracker/src/radar_object_tracker_node.hpp similarity index 87% rename from perception/radar_object_tracker/include/radar_object_tracker/radar_object_tracker_node/radar_object_tracker_node.hpp rename to perception/radar_object_tracker/src/radar_object_tracker_node.hpp index fe6d472eddd08..aaba15bbad05d 100644 --- a/perception/radar_object_tracker/include/radar_object_tracker/radar_object_tracker_node/radar_object_tracker_node.hpp +++ b/perception/radar_object_tracker/src/radar_object_tracker_node.hpp @@ -12,17 +12,26 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_OBJECT_TRACKER__RADAR_OBJECT_TRACKER_NODE__RADAR_OBJECT_TRACKER_NODE_HPP_ -#define RADAR_OBJECT_TRACKER__RADAR_OBJECT_TRACKER_NODE__RADAR_OBJECT_TRACKER_NODE_HPP_ +#ifndef RADAR_OBJECT_TRACKER_NODE_HPP_ +#define RADAR_OBJECT_TRACKER_NODE_HPP_ -#include "radar_object_tracker/data_association/data_association.hpp" +#include "autoware_radar_object_tracker/association/data_association.hpp" +#include +#include +#include #include -#include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include +#include +#include +#include +#include +#include +#include #include #include #include @@ -32,17 +41,6 @@ #else #include #endif - -#include -#include -#include - -#include -#include -#include -#include -#include -#include #include #include @@ -51,6 +49,8 @@ #include #include +namespace autoware::radar_object_tracker +{ using autoware_map_msgs::msg::LaneletMapBin; using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -132,4 +132,6 @@ class RadarObjectTrackerNode : public rclcpp::Node inline bool shouldTrackerPublish(const std::shared_ptr tracker) const; }; -#endif // RADAR_OBJECT_TRACKER__RADAR_OBJECT_TRACKER_NODE__RADAR_OBJECT_TRACKER_NODE_HPP_ +} // namespace autoware::radar_object_tracker + +#endif // RADAR_OBJECT_TRACKER_NODE_HPP_ diff --git a/perception/radar_object_tracker/src/tracker/model/constant_turn_rate_motion_tracker.cpp b/perception/radar_object_tracker/src/tracker/model/constant_turn_rate_motion_tracker.cpp index 0548002606d5d..057a8653faea0 100644 --- a/perception/radar_object_tracker/src/tracker/model/constant_turn_rate_motion_tracker.cpp +++ b/perception/radar_object_tracker/src/tracker/model/constant_turn_rate_motion_tracker.cpp @@ -16,12 +16,14 @@ // Author: v1.0 Yukihiro Saito // -#include "radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp" +#define EIGEN_MPL2_ONLY -#include "radar_object_tracker/utils/utils.hpp" +#include "autoware_radar_object_tracker/tracker/model/constant_turn_rate_motion_tracker.hpp" -#include -#include +#include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" +#include "autoware_radar_object_tracker/utils/utils.hpp" #include #include @@ -34,7 +36,6 @@ #include #endif -#define EIGEN_MPL2_ONLY #include #include #include @@ -42,7 +43,10 @@ #include +namespace autoware::radar_object_tracker +{ using Label = autoware_perception_msgs::msg::ObjectClassification; +using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; // init static member variables bool ConstantTurnRateMotionTracker::is_initialized_ = false; @@ -114,10 +118,10 @@ ConstantTurnRateMotionTracker::ConstantTurnRateMotionTracker( // Rotate the covariance matrix according to the vehicle yaw // because p0_cov_x and y are in the vehicle coordinate system. if (object.kinematics.has_position_covariance) { - P_xy_local << object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_X], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_Y], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_X], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y]; + P_xy_local << object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_X], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_Y], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_X], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_Y]; P_xy = R * P_xy_local * R.transpose(); } else { // rotate @@ -128,9 +132,9 @@ ConstantTurnRateMotionTracker::ConstantTurnRateMotionTracker( // covariance often written in object frame if (object.kinematics.has_twist_covariance) { - const auto vx_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; + const auto vx_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X]; // const auto vy_cov = - // object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y]; + // object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::Y_Y]; P(IDX::VX, IDX::VX) = vx_cov; } else { P(IDX::VX, IDX::VX) = ekf_params_.p0_cov_vx; @@ -209,7 +213,7 @@ void ConstantTurnRateMotionTracker::loadDefaultModelParameters(const std::string // limitation // (TODO): this may be written in another yaml file based on classify result const float max_speed_kmph = config["default"]["limit"]["max_speed"].as(); // [km/h] - max_vx_ = autoware_universe_utils::kmph2mps(max_speed_kmph); // [m/s] + max_vx_ = autoware::universe_utils::kmph2mps(max_speed_kmph); // [m/s] } bool ConstantTurnRateMotionTracker::predict(const rclcpp::Time & time) @@ -371,11 +375,11 @@ bool ConstantTurnRateMotionTracker::measureWithPose( Rxy_local << ekf_params_.r_cov_x, 0, 0, r_cov_y; // xy in base_link coordinate Rxy = RotationBaseLink * Rxy_local * RotationBaseLink.transpose(); } else { - Rxy_local << object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_X], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_Y], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_X], + Rxy_local << object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_X], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_Y], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_X], object.kinematics.pose_with_covariance - .covariance[utils::MSG_COV_IDX::Y_Y]; // xy in vehicle coordinate + .covariance[XYZRPY_COV_IDX::Y_Y]; // xy in vehicle coordinate Rxy = RotationYaw * Rxy_local * RotationYaw.transpose(); } R_block_list.push_back(Rxy); @@ -393,7 +397,7 @@ bool ConstantTurnRateMotionTracker::measureWithPose( Eigen::MatrixXd Y_yaw = Eigen::MatrixXd::Zero(1, 1); const auto yaw = [&] { - auto obj_yaw = autoware_universe_utils::normalizeRadian( + auto obj_yaw = autoware::universe_utils::normalizeRadian( tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation)); while (M_PI_2 <= yaw_state - obj_yaw) { obj_yaw = obj_yaw + M_PI; @@ -427,7 +431,7 @@ bool ConstantTurnRateMotionTracker::measureWithPose( if (!object.kinematics.has_twist_covariance) { R_vx << ekf_params_.r_cov_vx; } else { - R_vx << object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; + R_vx << object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X]; } R_block_list.push_back(R_vx); } @@ -442,9 +446,9 @@ bool ConstantTurnRateMotionTracker::measureWithPose( } // stacking matrices vertically or diagonally - const auto C = utils::stackMatricesVertically(C_list); - const auto Y = utils::stackMatricesVertically(Y_list); - const auto R = utils::stackMatricesDiagonally(R_block_list); + const auto C = autoware::radar_object_tracker::utils::stackMatricesVertically(C_list); + const auto Y = autoware::radar_object_tracker::utils::stackMatricesVertically(Y_list); + const auto R = autoware::radar_object_tracker::utils::stackMatricesDiagonally(R_block_list); // 4. EKF update if (!ekf_.update(Y, C, R)) { @@ -582,27 +586,27 @@ bool ConstantTurnRateMotionTracker::getTrackedObject( constexpr double z_cov = 1. * 1.; // TODO(yukkysaito) Currently tentative constexpr double yaw_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative - pose_with_cov.covariance[utils::MSG_COV_IDX::X_X] = P_xy(IDX::X, IDX::X); - pose_with_cov.covariance[utils::MSG_COV_IDX::X_Y] = P_xy(IDX::X, IDX::Y); - pose_with_cov.covariance[utils::MSG_COV_IDX::Y_X] = P_xy(IDX::Y, IDX::X); - pose_with_cov.covariance[utils::MSG_COV_IDX::Y_Y] = P_xy(IDX::Y, IDX::Y); - pose_with_cov.covariance[utils::MSG_COV_IDX::Z_Z] = z_cov; - pose_with_cov.covariance[utils::MSG_COV_IDX::ROLL_ROLL] = no_info_cov; - pose_with_cov.covariance[utils::MSG_COV_IDX::PITCH_PITCH] = no_info_cov; - pose_with_cov.covariance[utils::MSG_COV_IDX::YAW_YAW] = yaw_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::X_X] = P_xy(IDX::X, IDX::X); + pose_with_cov.covariance[XYZRPY_COV_IDX::X_Y] = P_xy(IDX::X, IDX::Y); + pose_with_cov.covariance[XYZRPY_COV_IDX::Y_X] = P_xy(IDX::Y, IDX::X); + pose_with_cov.covariance[XYZRPY_COV_IDX::Y_Y] = P_xy(IDX::Y, IDX::Y); + pose_with_cov.covariance[XYZRPY_COV_IDX::Z_Z] = z_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::ROLL_ROLL] = no_info_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::PITCH_PITCH] = no_info_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::YAW_YAW] = yaw_cov; // twist covariance constexpr double vz_cov = 0.2 * 0.2; // TODO(Yoshi Ri) Currently tentative constexpr double wz_cov = 0.2 * 0.2; // TODO(yukkysaito) Currently tentative - twist_with_cov.covariance[utils::MSG_COV_IDX::X_X] = P(IDX::VX, IDX::VX); - twist_with_cov.covariance[utils::MSG_COV_IDX::X_Y] = 0.0; - twist_with_cov.covariance[utils::MSG_COV_IDX::Y_X] = 0.0; - twist_with_cov.covariance[utils::MSG_COV_IDX::Y_Y] = no_info_cov; - twist_with_cov.covariance[utils::MSG_COV_IDX::Z_Z] = vz_cov; - twist_with_cov.covariance[utils::MSG_COV_IDX::ROLL_ROLL] = no_info_cov; - twist_with_cov.covariance[utils::MSG_COV_IDX::PITCH_PITCH] = no_info_cov; - twist_with_cov.covariance[utils::MSG_COV_IDX::YAW_YAW] = wz_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::X_X] = P(IDX::VX, IDX::VX); + twist_with_cov.covariance[XYZRPY_COV_IDX::X_Y] = 0.0; + twist_with_cov.covariance[XYZRPY_COV_IDX::Y_X] = 0.0; + twist_with_cov.covariance[XYZRPY_COV_IDX::Y_Y] = no_info_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::Z_Z] = vz_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::ROLL_ROLL] = no_info_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::PITCH_PITCH] = no_info_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::YAW_YAW] = wz_cov; // set shape if (object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { @@ -617,8 +621,10 @@ bool ConstantTurnRateMotionTracker::getTrackedObject( const auto origin_yaw = tf2::getYaw(object_.kinematics.pose_with_covariance.pose.orientation); const auto ekf_pose_yaw = tf2::getYaw(pose_with_cov.pose.orientation); object.shape.footprint = - autoware_universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); + autoware::universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); } return true; } + +} // namespace autoware::radar_object_tracker diff --git a/perception/radar_object_tracker/src/tracker/model/linear_motion_tracker.cpp b/perception/radar_object_tracker/src/tracker/model/linear_motion_tracker.cpp index 754ff88861b0d..a9f7fffff1156 100644 --- a/perception/radar_object_tracker/src/tracker/model/linear_motion_tracker.cpp +++ b/perception/radar_object_tracker/src/tracker/model/linear_motion_tracker.cpp @@ -16,12 +16,14 @@ // Author: v1.0 Yukihiro Saito // -#include "radar_object_tracker/tracker/model/linear_motion_tracker.hpp" +#define EIGEN_MPL2_ONLY -#include "radar_object_tracker/utils/utils.hpp" +#include "autoware_radar_object_tracker/tracker/model/linear_motion_tracker.hpp" -#include -#include +#include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" +#include "autoware/universe_utils/math/unit_conversion.hpp" +#include "autoware/universe_utils/ros/msg_covariance.hpp" +#include "autoware_radar_object_tracker/utils/utils.hpp" #include #include @@ -34,7 +36,6 @@ #include #endif -#define EIGEN_MPL2_ONLY #include #include #include @@ -42,7 +43,10 @@ #include +namespace autoware::radar_object_tracker +{ using Label = autoware_perception_msgs::msg::ObjectClassification; +using autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; // initialize static parameter bool LinearMotionTracker::is_initialized_ = false; @@ -119,10 +123,10 @@ LinearMotionTracker::LinearMotionTracker( // Rotate the covariance matrix according to the vehicle yaw // because p0_cov_x and y are in the vehicle coordinate system. if (object.kinematics.has_position_covariance) { - P_xy_local << object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_X], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_Y], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_X], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y]; + P_xy_local << object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_X], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_Y], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_X], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_Y]; P_xy = R * P_xy_local * R.transpose(); } else { // rotate @@ -130,29 +134,15 @@ LinearMotionTracker::LinearMotionTracker( } // covariance often written in object frame if (object.kinematics.has_twist_covariance) { - const auto vx_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; - const auto vy_cov = object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y]; + const auto vx_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X]; + const auto vy_cov = object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::Y_Y]; P_v_xy_local << vx_cov, 0.0, 0.0, vy_cov; P_v_xy = R * P_v_xy_local * R.transpose(); } else { P_v_xy = R * P_v_xy_local * R.transpose(); } - // acceleration covariance often written in object frame - const bool has_acceleration_covariance = - false; // currently message does not have acceleration covariance - if (has_acceleration_covariance) { - // const auto ax_cov = - // object.kinematics.acceleration_with_covariance.covariance[utils::MSG_COV_IDX::X_X]; // This - // is future update - // const auto ay_cov = - // object.kinematics.acceleration_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y]; // This - // is future update - // Eigen::Matrix2d P_a_xy_local; - // P_a_xy_local << ax_cov, 0.0, 0.0, ay_cov; - P_a_xy = R * P_a_xy_local * R.transpose(); - } else { - P_a_xy = R * P_a_xy_local * R.transpose(); - } + + P_a_xy = R * P_a_xy_local * R.transpose(); // put value in P matrix // use block description. This assume x,y,vx,vy,ax,ay in this order @@ -237,8 +227,8 @@ void LinearMotionTracker::loadDefaultModelParameters(const std::string & path) // limitation // (TODO): this may be written in another yaml file based on classify result const float max_speed_kmph = config["default"]["limit"]["max_speed"].as(); // [km/h] - max_vx_ = autoware_universe_utils::kmph2mps(max_speed_kmph); // [m/s] - max_vy_ = autoware_universe_utils::kmph2mps(max_speed_kmph); // [rad/s] + max_vx_ = autoware::universe_utils::kmph2mps(max_speed_kmph); // [m/s] + max_vy_ = autoware::universe_utils::kmph2mps(max_speed_kmph); // [rad/s] } bool LinearMotionTracker::predict(const rclcpp::Time & time) @@ -415,11 +405,11 @@ bool LinearMotionTracker::measureWithPose( Rxy_local << ekf_params_.r_cov_x, 0, 0, r_cov_y; // xy in base_link coordinate Rxy = RotationBaseLink * Rxy_local * RotationBaseLink.transpose(); } else { - Rxy_local << object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_X], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::X_Y], - object.kinematics.pose_with_covariance.covariance[utils::MSG_COV_IDX::Y_X], + Rxy_local << object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_X], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::X_Y], + object.kinematics.pose_with_covariance.covariance[XYZRPY_COV_IDX::Y_X], object.kinematics.pose_with_covariance - .covariance[utils::MSG_COV_IDX::Y_Y]; // xy in vehicle coordinate + .covariance[XYZRPY_COV_IDX::Y_Y]; // xy in vehicle coordinate Rxy = RotationYaw * Rxy_local * RotationYaw.transpose(); } R_block_list.push_back(Rxy); @@ -447,8 +437,8 @@ bool LinearMotionTracker::measureWithPose( R_v_xy_local << ekf_params_.r_cov_vx, 0, 0, ekf_params_.r_cov_vy; R_v_xy = RotationBaseLink * R_v_xy_local * RotationBaseLink.transpose(); } else { - R_v_xy_local << object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::X_X], - 0, 0, object.kinematics.twist_with_covariance.covariance[utils::MSG_COV_IDX::Y_Y]; + R_v_xy_local << object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::X_X], 0, 0, + object.kinematics.twist_with_covariance.covariance[XYZRPY_COV_IDX::Y_Y]; R_v_xy = RotationYaw * R_v_xy_local * RotationYaw.transpose(); } R_block_list.push_back(R_v_xy); @@ -467,9 +457,9 @@ bool LinearMotionTracker::measureWithPose( // Eigen::MatrixXd R = Eigen::MatrixXd::Zero(row_number, row_number); // stacking matrices vertically or diagonally - const auto C = utils::stackMatricesVertically(C_list); - const auto Y = utils::stackMatricesVertically(Y_list); - const auto R = utils::stackMatricesDiagonally(R_block_list); + const auto C = autoware::radar_object_tracker::utils::stackMatricesVertically(C_list); + const auto Y = autoware::radar_object_tracker::utils::stackMatricesVertically(Y_list); + const auto R = autoware::radar_object_tracker::utils::stackMatricesDiagonally(R_block_list); // 4. EKF update if (!ekf_.update(Y, C, R)) { @@ -637,37 +627,37 @@ bool LinearMotionTracker::getTrackedObject( constexpr double z_cov = 1. * 1.; // TODO(yukkysaito) Currently tentative constexpr double yaw_cov = 0.1 * 0.1; // TODO(yukkysaito) Currently tentative - pose_with_cov.covariance[utils::MSG_COV_IDX::X_X] = P_xy(IDX::X, IDX::X); - pose_with_cov.covariance[utils::MSG_COV_IDX::X_Y] = P_xy(IDX::X, IDX::Y); - pose_with_cov.covariance[utils::MSG_COV_IDX::Y_X] = P_xy(IDX::Y, IDX::X); - pose_with_cov.covariance[utils::MSG_COV_IDX::Y_Y] = P_xy(IDX::Y, IDX::Y); - pose_with_cov.covariance[utils::MSG_COV_IDX::Z_Z] = z_cov; - pose_with_cov.covariance[utils::MSG_COV_IDX::ROLL_ROLL] = no_info_cov; - pose_with_cov.covariance[utils::MSG_COV_IDX::PITCH_PITCH] = no_info_cov; - pose_with_cov.covariance[utils::MSG_COV_IDX::YAW_YAW] = yaw_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::X_X] = P_xy(IDX::X, IDX::X); + pose_with_cov.covariance[XYZRPY_COV_IDX::X_Y] = P_xy(IDX::X, IDX::Y); + pose_with_cov.covariance[XYZRPY_COV_IDX::Y_X] = P_xy(IDX::Y, IDX::X); + pose_with_cov.covariance[XYZRPY_COV_IDX::Y_Y] = P_xy(IDX::Y, IDX::Y); + pose_with_cov.covariance[XYZRPY_COV_IDX::Z_Z] = z_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::ROLL_ROLL] = no_info_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::PITCH_PITCH] = no_info_cov; + pose_with_cov.covariance[XYZRPY_COV_IDX::YAW_YAW] = yaw_cov; // twist covariance constexpr double vz_cov = 0.2 * 0.2; // TODO(Yoshi Ri) Currently tentative constexpr double wz_cov = 0.2 * 0.2; // TODO(yukkysaito) Currently tentative - twist_with_cov.covariance[utils::MSG_COV_IDX::X_X] = P_v_xy(IDX::X, IDX::X); - twist_with_cov.covariance[utils::MSG_COV_IDX::X_Y] = P_v_xy(IDX::X, IDX::Y); - twist_with_cov.covariance[utils::MSG_COV_IDX::Y_X] = P_v_xy(IDX::Y, IDX::X); - twist_with_cov.covariance[utils::MSG_COV_IDX::Y_Y] = P_v_xy(IDX::Y, IDX::Y); - twist_with_cov.covariance[utils::MSG_COV_IDX::Z_Z] = vz_cov; - twist_with_cov.covariance[utils::MSG_COV_IDX::ROLL_ROLL] = no_info_cov; - twist_with_cov.covariance[utils::MSG_COV_IDX::PITCH_PITCH] = no_info_cov; - twist_with_cov.covariance[utils::MSG_COV_IDX::YAW_YAW] = wz_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::X_X] = P_v_xy(IDX::X, IDX::X); + twist_with_cov.covariance[XYZRPY_COV_IDX::X_Y] = P_v_xy(IDX::X, IDX::Y); + twist_with_cov.covariance[XYZRPY_COV_IDX::Y_X] = P_v_xy(IDX::Y, IDX::X); + twist_with_cov.covariance[XYZRPY_COV_IDX::Y_Y] = P_v_xy(IDX::Y, IDX::Y); + twist_with_cov.covariance[XYZRPY_COV_IDX::Z_Z] = vz_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::ROLL_ROLL] = no_info_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::PITCH_PITCH] = no_info_cov; + twist_with_cov.covariance[XYZRPY_COV_IDX::YAW_YAW] = wz_cov; // acceleration covariance - acceleration_with_cov.covariance[utils::MSG_COV_IDX::X_X] = P_a_xy(IDX::X, IDX::X); - acceleration_with_cov.covariance[utils::MSG_COV_IDX::X_Y] = P_a_xy(IDX::X, IDX::Y); - acceleration_with_cov.covariance[utils::MSG_COV_IDX::Y_X] = P_a_xy(IDX::Y, IDX::X); - acceleration_with_cov.covariance[utils::MSG_COV_IDX::Y_Y] = P_a_xy(IDX::Y, IDX::Y); - acceleration_with_cov.covariance[utils::MSG_COV_IDX::Z_Z] = no_info_cov; - acceleration_with_cov.covariance[utils::MSG_COV_IDX::ROLL_ROLL] = no_info_cov; - acceleration_with_cov.covariance[utils::MSG_COV_IDX::PITCH_PITCH] = no_info_cov; - acceleration_with_cov.covariance[utils::MSG_COV_IDX::YAW_YAW] = no_info_cov; + acceleration_with_cov.covariance[XYZRPY_COV_IDX::X_X] = P_a_xy(IDX::X, IDX::X); + acceleration_with_cov.covariance[XYZRPY_COV_IDX::X_Y] = P_a_xy(IDX::X, IDX::Y); + acceleration_with_cov.covariance[XYZRPY_COV_IDX::Y_X] = P_a_xy(IDX::Y, IDX::X); + acceleration_with_cov.covariance[XYZRPY_COV_IDX::Y_Y] = P_a_xy(IDX::Y, IDX::Y); + acceleration_with_cov.covariance[XYZRPY_COV_IDX::Z_Z] = no_info_cov; + acceleration_with_cov.covariance[XYZRPY_COV_IDX::ROLL_ROLL] = no_info_cov; + acceleration_with_cov.covariance[XYZRPY_COV_IDX::PITCH_PITCH] = no_info_cov; + acceleration_with_cov.covariance[XYZRPY_COV_IDX::YAW_YAW] = no_info_cov; // set shape if (object.shape.type == autoware_perception_msgs::msg::Shape::BOUNDING_BOX) { @@ -682,8 +672,9 @@ bool LinearMotionTracker::getTrackedObject( const auto origin_yaw = tf2::getYaw(object_.kinematics.pose_with_covariance.pose.orientation); const auto ekf_pose_yaw = tf2::getYaw(pose_with_cov.pose.orientation); object.shape.footprint = - autoware_universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); + autoware::universe_utils::rotatePolygon(object.shape.footprint, origin_yaw - ekf_pose_yaw); } return true; } +} // namespace autoware::radar_object_tracker diff --git a/perception/radar_object_tracker/src/tracker/model/tracker_base.cpp b/perception/radar_object_tracker/src/tracker/model/tracker_base.cpp index d38b80067cf5a..ce63d96dfb83a 100644 --- a/perception/radar_object_tracker/src/tracker/model/tracker_base.cpp +++ b/perception/radar_object_tracker/src/tracker/model/tracker_base.cpp @@ -14,13 +14,15 @@ // // -#include "radar_object_tracker/tracker/model/tracker_base.hpp" +#include "autoware_radar_object_tracker/tracker/model/tracker_base.hpp" -#include "radar_object_tracker/utils/utils.hpp" +#include "autoware_radar_object_tracker/utils/utils.hpp" #include #include +namespace autoware::radar_object_tracker +{ Tracker::Tracker( const rclcpp::Time & time, const std::vector & classification) @@ -61,3 +63,4 @@ geometry_msgs::msg::PoseWithCovariance Tracker::getPoseWithCovariance( getTrackedObject(time, object); return object.kinematics.pose_with_covariance; } +} // namespace autoware::radar_object_tracker diff --git a/perception/radar_object_tracker/src/utils/radar_object_tracker_utils.cpp b/perception/radar_object_tracker/src/utils/radar_object_tracker_utils.cpp index fa1acda54e4fe..f0a6a5dfd384d 100644 --- a/perception/radar_object_tracker/src/utils/radar_object_tracker_utils.cpp +++ b/perception/radar_object_tracker/src/utils/radar_object_tracker_utils.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_tracker/utils/radar_object_tracker_utils.hpp" +#include "autoware_radar_object_tracker/utils/radar_object_tracker_utils.hpp" -namespace radar_object_tracker_utils +namespace autoware::radar_object_tracker::utils { boost::optional getTransformAnonymous( @@ -81,10 +81,10 @@ bool checkCloseLaneletCondition( double object_motion_yaw = object_yaw; bool velocity_is_reverted = object.kinematics.twist_with_covariance.twist.linear.x < 0.0; if (velocity_is_reverted) { - object_motion_yaw = autoware_universe_utils::normalizeRadian(object_yaw + M_PI); + object_motion_yaw = autoware::universe_utils::normalizeRadian(object_yaw + M_PI); } const double delta_yaw = object_motion_yaw - lane_yaw; - const double normalized_delta_yaw = autoware_universe_utils::normalizeRadian(delta_yaw); + const double normalized_delta_yaw = autoware::universe_utils::normalizeRadian(delta_yaw); const double abs_norm_delta_yaw = std::fabs(normalized_delta_yaw); if (abs_norm_delta_yaw > max_angle_diff_from_lane) { @@ -134,14 +134,14 @@ bool hasValidVelocityDirectionToLanelet( const double object_vel_y = object.kinematics.twist_with_covariance.twist.linear.y; const double object_vel_yaw = std::atan2(object_vel_y, object_vel_x); const double object_vel_yaw_global = - autoware_universe_utils::normalizeRadian(object_yaw + object_vel_yaw); + autoware::universe_utils::normalizeRadian(object_yaw + object_vel_yaw); const double object_vel = std::hypot(object_vel_x, object_vel_y); for (const auto & lanelet : lanelets) { const double lane_yaw = lanelet::utils::getLaneletAngle( lanelet, object.kinematics.pose_with_covariance.pose.position); const double delta_yaw = object_vel_yaw_global - lane_yaw; - const double normalized_delta_yaw = autoware_universe_utils::normalizeRadian(delta_yaw); + const double normalized_delta_yaw = autoware::universe_utils::normalizeRadian(delta_yaw); const double lane_vel = object_vel * std::sin(normalized_delta_yaw); if (std::fabs(lane_vel) < max_lateral_velocity) { @@ -151,4 +151,4 @@ bool hasValidVelocityDirectionToLanelet( return false; } -} // namespace radar_object_tracker_utils +} // namespace autoware::radar_object_tracker::utils diff --git a/perception/radar_object_tracker/src/utils/utils.cpp b/perception/radar_object_tracker/src/utils/utils.cpp index cb9d3813e0ecc..351c4cfd21159 100644 --- a/perception/radar_object_tracker/src/utils/utils.cpp +++ b/perception/radar_object_tracker/src/utils/utils.cpp @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_tracker/utils/utils.hpp" +#include "autoware_radar_object_tracker/utils/utils.hpp" -namespace utils +namespace autoware::radar_object_tracker::utils { // concatenate matrices vertically Eigen::MatrixXd stackMatricesVertically(const std::vector & matrices) @@ -68,4 +68,4 @@ Eigen::MatrixXd stackMatricesDiagonally(const std::vector & mat return result; } -} // namespace utils +} // namespace autoware::radar_object_tracker::utils diff --git a/perception/radar_object_tracker/test/test_radar_object_tracker_utils.cpp b/perception/radar_object_tracker/test/test_radar_object_tracker_utils.cpp index 681ae9f1854f7..e9b2a9800d628 100644 --- a/perception/radar_object_tracker/test/test_radar_object_tracker_utils.cpp +++ b/perception/radar_object_tracker/test/test_radar_object_tracker_utils.cpp @@ -12,12 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_object_tracker/utils/radar_object_tracker_utils.hpp" +#include "autoware_radar_object_tracker/utils/radar_object_tracker_utils.hpp" #include +using autoware::radar_object_tracker::utils::checkCloseLaneletCondition; using autoware_perception_msgs::msg::TrackedObject; -using radar_object_tracker_utils::checkCloseLaneletCondition; // helper function to create a dummy straight lanelet lanelet::Lanelet createDummyStraightLanelet(double length, double width) diff --git a/perception/radar_tracks_msgs_converter/CMakeLists.txt b/perception/radar_tracks_msgs_converter/CMakeLists.txt index 766fb4b939904..4ff3be1fa45a4 100644 --- a/perception/radar_tracks_msgs_converter/CMakeLists.txt +++ b/perception/radar_tracks_msgs_converter/CMakeLists.txt @@ -5,12 +5,12 @@ find_package(autoware_cmake REQUIRED) autoware_package() ## Targets -ament_auto_add_library(radar_tracks_msgs_converter_node_component SHARED - src/radar_tracks_msgs_converter_node/radar_tracks_msgs_converter_node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/radar_tracks_msgs_converter_node.cpp ) -rclcpp_components_register_node(radar_tracks_msgs_converter_node_component - PLUGIN "radar_tracks_msgs_converter::RadarTracksMsgsConverterNode" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::radar_tracks_msgs_converter::RadarTracksMsgsConverterNode" EXECUTABLE radar_tracks_msgs_converter_node ) diff --git a/perception/radar_tracks_msgs_converter/package.xml b/perception/radar_tracks_msgs_converter/package.xml index ad0257dbbd726..534c9a20fa0df 100644 --- a/perception/radar_tracks_msgs_converter/package.xml +++ b/perception/radar_tracks_msgs_converter/package.xml @@ -17,14 +17,12 @@ autoware_perception_msgs autoware_universe_utils - geometry_msgs nav_msgs radar_msgs rclcpp rclcpp_components tf2 tf2_geometry_msgs - tf2_ros ament_lint_auto autoware_lint_common diff --git a/perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node/radar_tracks_msgs_converter_node.cpp b/perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node.cpp similarity index 94% rename from perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node/radar_tracks_msgs_converter_node.cpp rename to perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node.cpp index 0caf29df2735e..5d45595733c4a 100644 --- a/perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node/radar_tracks_msgs_converter_node.cpp +++ b/perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "radar_tracks_msgs_converter/radar_tracks_msgs_converter_node.hpp" +#include "radar_tracks_msgs_converter_node.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" #include "autoware/universe_utils/math/unit_conversion.hpp" @@ -56,7 +56,7 @@ bool update_param( } } // namespace -namespace radar_tracks_msgs_converter +namespace autoware::radar_tracks_msgs_converter { enum class RadarTrackObjectID { @@ -92,7 +92,7 @@ RadarTracksMsgsConverterNode::RadarTracksMsgsConverterNode(const rclcpp::NodeOpt sub_odometry_ = create_subscription( "~/input/odometry", rclcpp::QoS{1}, std::bind(&RadarTracksMsgsConverterNode::onTwist, this, _1)); - transform_listener_ = std::make_shared(this); + transform_listener_ = std::make_shared(this); // Publisher pub_tracked_objects_ = create_publisher("~/output/radar_tracked_objects", 1); @@ -261,7 +261,7 @@ TrackedObjects RadarTracksMsgsConverterNode::convertRadarTrackToTrackedObjects() } // yaw angle (vehicle heading) is obtained from ground velocity - double yaw = autoware_universe_utils::normalizeRadian( + double yaw = autoware::universe_utils::normalizeRadian( std::atan2(compensated_velocity.y, compensated_velocity.x)); // kinematics setting @@ -273,7 +273,7 @@ TrackedObjects RadarTracksMsgsConverterNode::convertRadarTrackToTrackedObjects() // velocity of object is defined in the object coordinate // heading is obtained from ground velocity kinematics.pose_with_covariance.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw); + autoware::universe_utils::createQuaternionFromYaw(yaw); // longitudinal velocity is the length of the velocity vector // lateral velocity is zero, use default value kinematics.twist_with_covariance.twist.linear.x = std::sqrt( @@ -334,8 +334,8 @@ geometry_msgs::msg::Vector3 RadarTracksMsgsConverterNode::compensateVelocityEgoM std::array RadarTracksMsgsConverterNode::convertPoseCovarianceMatrix( const radar_msgs::msg::RadarTrack & radar_track) { - using POSE_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; - using RADAR_IDX = autoware_universe_utils::xyz_upper_covariance_index::XYZ_UPPER_COV_IDX; + using POSE_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using RADAR_IDX = autoware::universe_utils::xyz_upper_covariance_index::XYZ_UPPER_COV_IDX; std::array pose_covariance{}; pose_covariance[POSE_IDX::X_X] = radar_track.position_covariance[RADAR_IDX::X_X]; pose_covariance[POSE_IDX::X_Y] = radar_track.position_covariance[RADAR_IDX::X_Y]; @@ -351,8 +351,8 @@ std::array RadarTracksMsgsConverterNode::convertPoseCovarianceMatrix std::array RadarTracksMsgsConverterNode::convertTwistCovarianceMatrix( const radar_msgs::msg::RadarTrack & radar_track) { - using POSE_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; - using RADAR_IDX = autoware_universe_utils::xyz_upper_covariance_index::XYZ_UPPER_COV_IDX; + using POSE_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using RADAR_IDX = autoware::universe_utils::xyz_upper_covariance_index::XYZ_UPPER_COV_IDX; std::array twist_covariance{}; twist_covariance[POSE_IDX::X_X] = radar_track.velocity_covariance[RADAR_IDX::X_X]; twist_covariance[POSE_IDX::X_Y] = radar_track.velocity_covariance[RADAR_IDX::X_Y]; @@ -368,8 +368,8 @@ std::array RadarTracksMsgsConverterNode::convertTwistCovarianceMatri std::array RadarTracksMsgsConverterNode::convertAccelerationCovarianceMatrix( const radar_msgs::msg::RadarTrack & radar_track) { - using POSE_IDX = autoware_universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; - using RADAR_IDX = autoware_universe_utils::xyz_upper_covariance_index::XYZ_UPPER_COV_IDX; + using POSE_IDX = autoware::universe_utils::xyzrpy_covariance_index::XYZRPY_COV_IDX; + using RADAR_IDX = autoware::universe_utils::xyz_upper_covariance_index::XYZ_UPPER_COV_IDX; std::array acceleration_covariance{}; acceleration_covariance[POSE_IDX::X_X] = radar_track.acceleration_covariance[RADAR_IDX::X_X]; acceleration_covariance[POSE_IDX::X_Y] = radar_track.acceleration_covariance[RADAR_IDX::X_Y]; @@ -407,7 +407,7 @@ uint8_t RadarTracksMsgsConverterNode::convertClassification(const uint16_t class } } -} // namespace radar_tracks_msgs_converter +} // namespace autoware::radar_tracks_msgs_converter #include "rclcpp_components/register_node_macro.hpp" -RCLCPP_COMPONENTS_REGISTER_NODE(radar_tracks_msgs_converter::RadarTracksMsgsConverterNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::radar_tracks_msgs_converter::RadarTracksMsgsConverterNode) diff --git a/perception/radar_tracks_msgs_converter/include/radar_tracks_msgs_converter/radar_tracks_msgs_converter_node.hpp b/perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node.hpp similarity index 91% rename from perception/radar_tracks_msgs_converter/include/radar_tracks_msgs_converter/radar_tracks_msgs_converter_node.hpp rename to perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node.hpp index 8db732245b1fd..36528711cc403 100644 --- a/perception/radar_tracks_msgs_converter/include/radar_tracks_msgs_converter/radar_tracks_msgs_converter_node.hpp +++ b/perception/radar_tracks_msgs_converter/src/radar_tracks_msgs_converter_node.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RADAR_TRACKS_MSGS_CONVERTER__RADAR_TRACKS_MSGS_CONVERTER_NODE_HPP_ -#define RADAR_TRACKS_MSGS_CONVERTER__RADAR_TRACKS_MSGS_CONVERTER_NODE_HPP_ +#ifndef RADAR_TRACKS_MSGS_CONVERTER_NODE_HPP_ +#define RADAR_TRACKS_MSGS_CONVERTER_NODE_HPP_ #include "autoware/universe_utils/ros/transform_listener.hpp" #include "rclcpp/rclcpp.hpp" @@ -32,7 +32,7 @@ #include #include -namespace radar_tracks_msgs_converter +namespace autoware::radar_tracks_msgs_converter { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjectKinematics; @@ -64,7 +64,7 @@ class RadarTracksMsgsConverterNode : public rclcpp::Node // Subscriber rclcpp::Subscription::SharedPtr sub_radar_{}; rclcpp::Subscription::SharedPtr sub_odometry_{}; - std::shared_ptr transform_listener_; + std::shared_ptr transform_listener_; // Callback void onRadarTracks(const RadarTracks::ConstSharedPtr msg); @@ -114,6 +114,6 @@ class RadarTracksMsgsConverterNode : public rclcpp::Node uint8_t convertClassification(const uint16_t classification); }; -} // namespace radar_tracks_msgs_converter +} // namespace autoware::radar_tracks_msgs_converter -#endif // RADAR_TRACKS_MSGS_CONVERTER__RADAR_TRACKS_MSGS_CONVERTER_NODE_HPP_ +#endif // RADAR_TRACKS_MSGS_CONVERTER_NODE_HPP_ diff --git a/perception/raindrop_cluster_filter/CMakeLists.txt b/perception/raindrop_cluster_filter/CMakeLists.txt index a867bc740317b..17eef97cc2f52 100644 --- a/perception/raindrop_cluster_filter/CMakeLists.txt +++ b/perception/raindrop_cluster_filter/CMakeLists.txt @@ -10,11 +10,11 @@ autoware_package() # Targets ament_auto_add_library(low_intensity_cluster_filter SHARED - src/low_intensity_cluster_filter.cpp + src/low_intensity_cluster_filter_node.cpp ) rclcpp_components_register_node(low_intensity_cluster_filter - PLUGIN "low_intensity_cluster_filter::LowIntensityClusterFilter" + PLUGIN "autoware::low_intensity_cluster_filter::LowIntensityClusterFilter" EXECUTABLE low_intensity_cluster_filter_node) diff --git a/perception/raindrop_cluster_filter/package.xml b/perception/raindrop_cluster_filter/package.xml index bff3f71db6f04..a660e42dd91ce 100644 --- a/perception/raindrop_cluster_filter/package.xml +++ b/perception/raindrop_cluster_filter/package.xml @@ -12,9 +12,9 @@ ament_cmake autoware_cmake + autoware_lanelet2_extension autoware_universe_utils detected_object_validation - lanelet2_extension message_filters nav_msgs pcl_conversions diff --git a/perception/raindrop_cluster_filter/src/low_intensity_cluster_filter.cpp b/perception/raindrop_cluster_filter/src/low_intensity_cluster_filter_node.cpp similarity index 90% rename from perception/raindrop_cluster_filter/src/low_intensity_cluster_filter.cpp rename to perception/raindrop_cluster_filter/src/low_intensity_cluster_filter_node.cpp index cae09d3cb20e7..105fc98722a26 100644 --- a/perception/raindrop_cluster_filter/src/low_intensity_cluster_filter.cpp +++ b/perception/raindrop_cluster_filter/src/low_intensity_cluster_filter_node.cpp @@ -12,15 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "raindrop_cluster_filter/low_intensity_cluster_filter/low_intensity_cluster_filter.hpp" +#include "low_intensity_cluster_filter_node.hpp" + +#include "autoware/universe_utils/geometry/geometry.hpp" -#include #include #include #include -namespace low_intensity_cluster_filter + +namespace autoware::low_intensity_cluster_filter { LowIntensityClusterFilter::LowIntensityClusterFilter(const rclcpp::NodeOptions & node_options) : Node("low_intensity_cluster_filter_node", node_options), @@ -52,8 +54,8 @@ LowIntensityClusterFilter::LowIntensityClusterFilter(const rclcpp::NodeOptions & "output/objects", rclcpp::QoS{1}); // initialize debug tool { - using autoware_universe_utils::DebugPublisher; - using autoware_universe_utils::StopWatch; + using autoware::universe_utils::DebugPublisher; + using autoware::universe_utils::StopWatch; stop_watch_ptr_ = std::make_unique>(); debug_publisher_ptr_ = std::make_unique(this, "low_intensity_cluster_filter_node"); @@ -85,8 +87,8 @@ void LowIntensityClusterFilter::objectCallback( geometry_msgs::msg::Pose max_pose; max_pose.position.x = max_x_; max_pose.position.y = max_y_; - auto min_ranged_transformed = autoware_universe_utils::transformPose(min_range, transform_stamp); - auto max_range_transformed = autoware_universe_utils::transformPose(max_pose, transform_stamp); + auto min_ranged_transformed = autoware::universe_utils::transformPose(min_range, transform_stamp); + auto max_range_transformed = autoware::universe_utils::transformPose(max_pose, transform_stamp); for (const auto & feature_object : input_msg->feature_objects) { const auto & object = feature_object.object; const auto & label = object.classification.front().label; @@ -135,7 +137,7 @@ bool LowIntensityClusterFilter::isValidatedCluster(const sensor_msgs::msg::Point return false; } -} // namespace low_intensity_cluster_filter +} // namespace autoware::low_intensity_cluster_filter #include -RCLCPP_COMPONENTS_REGISTER_NODE(low_intensity_cluster_filter::LowIntensityClusterFilter) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::low_intensity_cluster_filter::LowIntensityClusterFilter) diff --git a/perception/raindrop_cluster_filter/include/raindrop_cluster_filter/low_intensity_cluster_filter/low_intensity_cluster_filter.hpp b/perception/raindrop_cluster_filter/src/low_intensity_cluster_filter_node.hpp similarity index 71% rename from perception/raindrop_cluster_filter/include/raindrop_cluster_filter/low_intensity_cluster_filter/low_intensity_cluster_filter.hpp rename to perception/raindrop_cluster_filter/src/low_intensity_cluster_filter_node.hpp index 5e010b21478fc..8e21306218ab2 100644 --- a/perception/raindrop_cluster_filter/include/raindrop_cluster_filter/low_intensity_cluster_filter/low_intensity_cluster_filter.hpp +++ b/perception/raindrop_cluster_filter/src/low_intensity_cluster_filter_node.hpp @@ -12,26 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef RAINDROP_CLUSTER_FILTER__LOW_INTENSITY_CLUSTER_FILTER__LOW_INTENSITY_CLUSTER_FILTER_HPP_ -#define RAINDROP_CLUSTER_FILTER__LOW_INTENSITY_CLUSTER_FILTER__LOW_INTENSITY_CLUSTER_FILTER_HPP_ +#ifndef LOW_INTENSITY_CLUSTER_FILTER_NODE_HPP_ +#define LOW_INTENSITY_CLUSTER_FILTER_NODE_HPP_ +#include "autoware/universe_utils/ros/debug_publisher.hpp" +#include "autoware/universe_utils/system/stop_watch.hpp" #include "detected_object_validation/utils/utils.hpp" -#include -#include +#include #include -#include +#include "tier4_perception_msgs/msg/detected_objects_with_feature.hpp" #include #include -// #include -#include #include #include -namespace low_intensity_cluster_filter +namespace autoware::low_intensity_cluster_filter { class LowIntensityClusterFilter : public rclcpp::Node @@ -68,11 +67,11 @@ class LowIntensityClusterFilter : public rclcpp::Node utils::FilterTargetLabel filter_target_; // debugger - std::unique_ptr> stop_watch_ptr_{ + std::unique_ptr> stop_watch_ptr_{ nullptr}; - std::unique_ptr debug_publisher_ptr_{nullptr}; + std::unique_ptr debug_publisher_ptr_{nullptr}; }; -} // namespace low_intensity_cluster_filter +} // namespace autoware::low_intensity_cluster_filter -#endif // RAINDROP_CLUSTER_FILTER__LOW_INTENSITY_CLUSTER_FILTER__LOW_INTENSITY_CLUSTER_FILTER_HPP_ +#endif // LOW_INTENSITY_CLUSTER_FILTER_NODE_HPP_ diff --git a/perception/shape_estimation/lib/corrector/utils.cpp b/perception/shape_estimation/lib/corrector/utils.cpp index 953736e0924ce..1332647b0f1f4 100644 --- a/perception/shape_estimation/lib/corrector/utils.cpp +++ b/perception/shape_estimation/lib/corrector/utils.cpp @@ -246,9 +246,9 @@ bool correctWithDefaultValue( // correct to set long length is x, short length is y if (shape.dimensions.x < shape.dimensions.y) { - geometry_msgs::msg::Vector3 rpy = autoware_universe_utils::getRPY(pose.orientation); + geometry_msgs::msg::Vector3 rpy = autoware::universe_utils::getRPY(pose.orientation); rpy.z = rpy.z + M_PI_2; - pose.orientation = autoware_universe_utils::createQuaternionFromRPY(rpy.x, rpy.y, rpy.z); + pose.orientation = autoware::universe_utils::createQuaternionFromRPY(rpy.x, rpy.y, rpy.z); double temp = shape.dimensions.x; shape.dimensions.x = shape.dimensions.y; shape.dimensions.y = temp; diff --git a/perception/shape_estimation/src/node.cpp b/perception/shape_estimation/src/node.cpp index 119b0d22b3f7d..5719cd97b3ed5 100644 --- a/perception/shape_estimation/src/node.cpp +++ b/perception/shape_estimation/src/node.cpp @@ -54,13 +54,13 @@ ShapeEstimationNode::ShapeEstimationNode(const rclcpp::NodeOptions & node_option std::make_unique(use_corrector, use_filter, use_boost_bbox_optimizer); processing_time_publisher_ = - std::make_unique(this, "shape_estimation"); + std::make_unique(this, "shape_estimation"); stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); stop_watch_ptr_->tic("cyclic_time"); stop_watch_ptr_->tic("processing_time"); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } static autoware_perception_msgs::msg::ObjectClassification::_label_type get_label( @@ -114,7 +114,7 @@ void ShapeEstimationNode::callback(const DetectedObjectsWithFeature::ConstShared if (use_vehicle_reference_yaw_ && is_vehicle) { ref_yaw_info = ReferenceYawInfo{ static_cast(tf2::getYaw(object.kinematics.pose_with_covariance.pose.orientation)), - autoware_universe_utils::deg2rad(10)}; + autoware::universe_utils::deg2rad(10)}; } if (use_vehicle_reference_shape_size_ && is_vehicle) { ref_shape_size_info = ReferenceShapeSizeInfo{object.shape, ReferenceShapeSizeInfo::Mode::Min}; diff --git a/perception/shape_estimation/src/node.hpp b/perception/shape_estimation/src/node.hpp index db2a8b9ddaedd..807f12e39b025 100644 --- a/perception/shape_estimation/src/node.hpp +++ b/perception/shape_estimation/src/node.hpp @@ -35,11 +35,11 @@ class ShapeEstimationNode : public rclcpp::Node // ros rclcpp::Publisher::SharedPtr pub_; rclcpp::Subscription::SharedPtr sub_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; // debug publisher - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr processing_time_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr processing_time_publisher_; void callback(const DetectedObjectsWithFeature::ConstSharedPtr input_msg); diff --git a/perception/simple_object_merger/CMakeLists.txt b/perception/simple_object_merger/CMakeLists.txt index 10bd0efa7b8fc..1a65bdf96050e 100644 --- a/perception/simple_object_merger/CMakeLists.txt +++ b/perception/simple_object_merger/CMakeLists.txt @@ -6,12 +6,12 @@ find_package(autoware_cmake REQUIRED) autoware_package() # Targets -ament_auto_add_library(simple_object_merger_node_component SHARED - src/simple_object_merger_node/simple_object_merger_node.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/simple_object_merger_node.cpp ) -rclcpp_components_register_node(simple_object_merger_node_component - PLUGIN "simple_object_merger::SimpleObjectMergerNode" +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::simple_object_merger::SimpleObjectMergerNode" EXECUTABLE simple_object_merger_node ) diff --git a/perception/simple_object_merger/src/simple_object_merger_node/simple_object_merger_node.cpp b/perception/simple_object_merger/src/simple_object_merger_node.cpp similarity index 95% rename from perception/simple_object_merger/src/simple_object_merger_node/simple_object_merger_node.cpp rename to perception/simple_object_merger/src/simple_object_merger_node.cpp index af8f02caef72b..98c7fd03c1e99 100644 --- a/perception/simple_object_merger/src/simple_object_merger_node/simple_object_merger_node.cpp +++ b/perception/simple_object_merger/src/simple_object_merger_node.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "simple_object_merger/simple_object_merger_node.hpp" +#include "simple_object_merger_node.hpp" #include @@ -65,7 +65,7 @@ autoware_perception_msgs::msg::DetectedObjects::SharedPtr getTransformedObjects( } // namespace -namespace simple_object_merger +namespace autoware::simple_object_merger { using namespace std::literals; using std::chrono::duration; @@ -98,7 +98,7 @@ SimpleObjectMergerNode::SimpleObjectMergerNode(const rclcpp::NodeOptions & node_ } // Subscriber - transform_listener_ = std::make_shared(this); + transform_listener_ = std::make_shared(this); sub_objects_array.resize(input_topic_size); objects_data_.resize(input_topic_size); @@ -193,7 +193,7 @@ void SimpleObjectMergerNode::onTimer() pub_objects_->publish(output_objects); } -} // namespace simple_object_merger +} // namespace autoware::simple_object_merger #include "rclcpp_components/register_node_macro.hpp" -RCLCPP_COMPONENTS_REGISTER_NODE(simple_object_merger::SimpleObjectMergerNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::simple_object_merger::SimpleObjectMergerNode) diff --git a/perception/simple_object_merger/include/simple_object_merger/simple_object_merger_node.hpp b/perception/simple_object_merger/src/simple_object_merger_node.hpp similarity index 86% rename from perception/simple_object_merger/include/simple_object_merger/simple_object_merger_node.hpp rename to perception/simple_object_merger/src/simple_object_merger_node.hpp index 73ccd33464d81..d5f907ff09ef2 100644 --- a/perception/simple_object_merger/include/simple_object_merger/simple_object_merger_node.hpp +++ b/perception/simple_object_merger/src/simple_object_merger_node.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef SIMPLE_OBJECT_MERGER__SIMPLE_OBJECT_MERGER_NODE_HPP_ -#define SIMPLE_OBJECT_MERGER__SIMPLE_OBJECT_MERGER_NODE_HPP_ +#ifndef SIMPLE_OBJECT_MERGER_NODE_HPP_ +#define SIMPLE_OBJECT_MERGER_NODE_HPP_ #include "autoware/universe_utils/ros/transform_listener.hpp" #include "rclcpp/rclcpp.hpp" @@ -25,7 +25,7 @@ #include #include -namespace simple_object_merger +namespace autoware::simple_object_merger { using autoware_perception_msgs::msg::DetectedObject; using autoware_perception_msgs::msg::DetectedObjects; @@ -47,7 +47,7 @@ class SimpleObjectMergerNode : public rclcpp::Node // Subscriber rclcpp::Subscription::SharedPtr sub_objects_{}; std::vector::SharedPtr> sub_objects_array{}; - std::shared_ptr transform_listener_; + std::shared_ptr transform_listener_; // Callback void onData(const DetectedObjects::ConstSharedPtr msg, size_t array_number); @@ -76,6 +76,6 @@ class SimpleObjectMergerNode : public rclcpp::Node size_t input_topic_size; }; -} // namespace simple_object_merger +} // namespace autoware::simple_object_merger -#endif // SIMPLE_OBJECT_MERGER__SIMPLE_OBJECT_MERGER_NODE_HPP_ +#endif // SIMPLE_OBJECT_MERGER_NODE_HPP_ diff --git a/perception/tensorrt_yolox/README.md b/perception/tensorrt_yolox/README.md index ca407b1ff6811..af88e73cc04a6 100644 --- a/perception/tensorrt_yolox/README.md +++ b/perception/tensorrt_yolox/README.md @@ -2,13 +2,13 @@ ## Purpose -This package detects target objects e.g., cars, trucks, bicycles, and pedestrians on a image based on [YOLOX](https://github.com/Megvii-BaseDetection/YOLOX) model. +This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on [YOLOX](https://github.com/Megvii-BaseDetection/YOLOX) model with multi-header structure. ## Inner-workings / Algorithms ### Cite - + Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, "YOLOX: Exceeding YOLO Series in 2021", arXiv preprint arXiv:2107.08430, 2021 [[ref](https://arxiv.org/abs/2107.08430)] @@ -22,10 +22,12 @@ Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, "YOLOX: Exceeding YOLO Se ### Output -| Name | Type | Description | -| ------------- | -------------------------------------------------- | -------------------------------------------------- | -| `out/objects` | `tier4_perception_msgs/DetectedObjectsWithFeature` | The detected objects with 2D bounding boxes | -| `out/image` | `sensor_msgs/Image` | The image with 2D bounding boxes for visualization | +| Name | Type | Description | +| ---------------- | -------------------------------------------------- | ------------------------------------------------------------------- | +| `out/objects` | `tier4_perception_msgs/DetectedObjectsWithFeature` | The detected objects with 2D bounding boxes | +| `out/image` | `sensor_msgs/Image` | The image with 2D bounding boxes for visualization | +| `out/mask` | `sensor_msgs/Image` | The semantic segmentation mask | +| `out/color_mask` | `sensor_msgs/Image` | The colorized image of semantic segmentation mask for visualization | ## Parameters @@ -40,20 +42,33 @@ Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, "YOLOX: Exceeding YOLO Se ### Node Parameters -| Name | Type | Default Value | Description | -| ----------------------------- | ------ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model_path` | string | "" | The onnx file name for yolox model | -| `label_path` | string | "" | The label file with label names for detected objects written on it | -| `precision` | string | "fp16" | The inference mode: "fp32", "fp16", "int8" | -| `build_only` | bool | false | shutdown node after TensorRT engine file is built | -| `calibration_algorithm` | string | "MinMax" | Calibration algorithm to be used for quantization when precision==int8. Valid value is one of: Entropy",("Legacy" \| "Percentile"), "MinMax"] | -| `dla_core_id` | int | -1 | If positive ID value is specified, the node assign inference task to the DLA core | -| `quantize_first_layer` | bool | false | If true, set the operating precision for the first (input) layer to be fp16. This option is valid only when precision==int8 | -| `quantize_last_layer` | bool | false | If true, set the operating precision for the last (output) layer to be fp16. This option is valid only when precision==int8 | -| `profile_per_layer` | bool | false | If true, profiler function will be enabled. Since the profile function may affect execution speed, it is recommended to set this flag true only for development purpose. | -| `clip_value` | double | 0.0 | If positive value is specified, the value of each layer output will be clipped between [0.0, clip_value]. This option is valid only when precision==int8 and used to manually specify the dynamic range instead of using any calibration | -| `preprocess_on_gpu` | bool | true | If true, pre-processing is performed on GPU | -| `calibration_image_list_path` | string | "" | Path to a file which contains path to images. Those images will be used for int8 quantization. | +| Name | Type | Default Value | Description | +| -------------------------------------- | ------ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model_path` | string | "" | The onnx file name for yolox model | +| `model_name` | string | "" | The yolox model name:
"yolox-sPlus-T4-960x960-pseudo-finetune" for detection only, could reduce resource and processing_time
"yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls" for multi-task including semantic segmentation | +| `label_path` | string | "" | The label file with label names for detected objects written on it | +| `precision` | string | "fp16" | The inference mode: "fp32", "fp16", "int8" | +| `build_only` | bool | false | shutdown node after TensorRT engine file is built | +| `calibration_algorithm` | string | "MinMax" | Calibration algorithm to be used for quantization when precision==int8. Valid value is one of: Entropy",("Legacy" \| "Percentile"), "MinMax"] | +| `dla_core_id` | int | -1 | If positive ID value is specified, the node assign inference task to the DLA core | +| `quantize_first_layer` | bool | false | If true, set the operating precision for the first (input) layer to be fp16. This option is valid only when precision==int8 | +| `quantize_last_layer` | bool | false | If true, set the operating precision for the last (output) layer to be fp16. This option is valid only when precision==int8 | +| `profile_per_layer` | bool | false | If true, profiler function will be enabled. Since the profile function may affect execution speed, it is recommended to set this flag true only for development purpose. | +| `clip_value` | double | 0.0 | If positive value is specified, the value of each layer output will be clipped between [0.0, clip_value]. This option is valid only when precision==int8 and used to manually specify the dynamic range instead of using any calibration | +| `preprocess_on_gpu` | bool | true | If true, pre-processing is performed on GPU | +| `calibration_image_list_path` | string | "" | Path to a file which contains path to images. Those images will be used for int8 quantization. | +| `yolox_s_plus_opt_param_path` | string | "" | Path to parameter file | +| `is_publish_color_mask` | bool | false | If true, publish color mask for result visualization | +| `is_roi_overlap_segment` | bool | true | If true, overlay detected object roi onto semantic segmentation to avoid over-filtering pointcloud especially small size objects | +| `overlap_roi_score_threshold` | float | 0.3 | minimum existence_probability of detected roi considered to replace segmentation | +| `roi_overlay_segment_label.UNKNOWN` | bool | true | If true, unknown objects roi will be overlaid onto sematic segmentation mask. | +| `roi_overlay_segment_label.CAR` | bool | false | If true, car objects roi will be overlaid onto sematic segmentation mask. | +| `roi_overlay_segment_label.TRUCK` | bool | false | If true, truck objects roi will be overlaid onto sematic segmentation mask. | +| `roi_overlay_segment_label.BUS` | bool | false | If true, bus objects roi will be overlaid onto sematic segmentation mask. | +| `roi_overlay_segment_label.MOTORCYCLE` | bool | true | If true, motorcycle objects roi will be overlaid onto sematic segmentation mask. | +| `roi_overlay_segment_label.BICYCLE` | bool | true | If true, bicycle objects roi will be overlaid onto sematic segmentation mask. | +| `roi_overlay_segment_label.PEDESTRIAN` | bool | true | If true, pedestrian objects roi will be overlaid onto sematic segmentation mask. | +| `roi_overlay_segment_label.ANIMAL` | bool | true | If true, animal objects roi will be overlaid onto sematic segmentation mask. | ## Assumptions / Known limits @@ -69,6 +84,27 @@ The label contained in detected 2D bounding boxes (i.e., `out/objects`) will be If other labels (case insensitive) are contained in the file specified via the `label_file` parameter, those are labeled as `UNKNOWN`, while detected rectangles are drawn in the visualization result (`out/image`). +The semantic segmentation mask is a gray image whose each pixel is index of one following class: + +| index | semantic name | +| ----- | ---------------- | +| 0 | road | +| 1 | building | +| 2 | wall | +| 3 | obstacle | +| 4 | traffic_light | +| 5 | traffic_sign | +| 6 | person | +| 7 | vehicle | +| 8 | bike | +| 9 | road | +| 10 | sidewalk | +| 11 | roadPaint | +| 12 | curbstone | +| 13 | crosswalk_others | +| 14 | vegetation | +| 15 | sky | + ## Onnx model A sample model (named `yolox-tiny.onnx`) is downloaded by ansible script on env preparation stage, if not, please, follow [Manual downloading of artifacts](https://github.com/autowarefoundation/autoware/tree/main/ansible/roles/artifacts). @@ -79,11 +115,12 @@ hence these parameters are ignored when users specify ONNX models including this This package accepts both `EfficientNMS_TRT` attached ONNXs and [models published from the official YOLOX repository](https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ONNXRuntime#download-onnx-models) (we referred to them as "plain" models). -In addition to `yolox-tiny.onnx`, a custom model named `yolox-sPlus-opt.onnx` is either available. -This model is based on YOLOX-s and tuned to perform more accurate detection with almost comparable execution speed with `yolox-tiny`. +In addition to `yolox-tiny.onnx`, a custom model named `yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls` is either available. +This model is multi-header structure model which is based on YOLOX-s and tuned to perform more accurate detection with almost comparable execution speed with `yolox-tiny`. To get better results with this model, users are recommended to use some specific running arguments such as `precision:=int8`, `calibration_algorithm:=Entropy`, `clip_value:=6.0`. Users can refer `launch/yolox_sPlus_opt.launch.xml` to see how this model can be used. +Beside detection result, this model also output image semantic segmentation result for pointcloud filtering purpose. All models are automatically converted to TensorRT format. These converted files will be saved in the same directory as specified ONNX files @@ -146,7 +183,7 @@ Please refer [the official document](https://github.com/Megvii-BaseDetection/YOL ## Label file -A sample label file (named `label.txt`)is also downloaded automatically during env preparation process +A sample label file (named `label.txt`) and semantic segmentation color map file (name `semseg_color_map.csv`) are also downloaded automatically during env preparation process (**NOTE:** This file is incompatible with models that output labels for the COCO dataset (e.g., models from the official YOLOX repository)). This file represents the correspondence between class index (integer outputted from YOLOX network) and @@ -157,3 +194,4 @@ with labels according to the order in this file. - - +- diff --git a/perception/tensorrt_yolox/config/yolox_s_plus_opt.param.yaml b/perception/tensorrt_yolox/config/yolox_s_plus_opt.param.yaml index bc67173442094..57c1b40c44a4d 100644 --- a/perception/tensorrt_yolox/config/yolox_s_plus_opt.param.yaml +++ b/perception/tensorrt_yolox/config/yolox_s_plus_opt.param.yaml @@ -1,7 +1,29 @@ +# cspell: ignore semseg /**: ros__parameters: + # refine segmentation mask by overlay roi class + # disable when sematic segmentation accuracy is good enough + is_roi_overlap_segment: true + + # minimum existence_probability of detected roi considered to replace segmentation + overlap_roi_score_threshold: 0.3 + + # publish color mask for result visualization + is_publish_color_mask: false + + roi_overlay_segment_label: + UNKNOWN : true + CAR : false + TRUCK : false + BUS : false + MOTORCYCLE : true + BICYCLE : true + PEDESTRIAN : true + ANIMAL: true + model_path: "$(var data_path)/tensorrt_yolox/$(var model_name).onnx" label_path: "$(var data_path)/tensorrt_yolox/label.txt" + color_map_path: "$(var data_path)/tensorrt_yolox/semseg_color_map.csv" score_threshold: 0.35 nms_threshold: 0.7 precision: "int8" # Operation precision to be used on inference. Valid value is one of: [fp32, fp16, int8]. diff --git a/perception/tensorrt_yolox/include/tensorrt_yolox/preprocess.hpp b/perception/tensorrt_yolox/include/tensorrt_yolox/preprocess.hpp index 3549ae35e70ea..faac6de4e3284 100644 --- a/perception/tensorrt_yolox/include/tensorrt_yolox/preprocess.hpp +++ b/perception/tensorrt_yolox/include/tensorrt_yolox/preprocess.hpp @@ -179,6 +179,21 @@ extern void crop_resize_bilinear_letterbox_nhwc_to_nchw32_batch_gpu( extern void multi_scale_resize_bilinear_letterbox_nhwc_to_nchw32_batch_gpu( float * dst, unsigned char * src, int d_w, int d_h, int d_c, Roi * d_roi, int s_w, int s_h, int s_c, int batch, float norm, cudaStream_t stream); -} // namespace tensorrt_yolox +/** + * @brief Argmax on GPU + * @param[out] dst processed image + * @param[in] src probability map + * @param[in] d_w width for output + * @param[in] d_h height for output + * @param[in] s_w width for input + * @param[in] s_h height for input + * @param[in] s_c channel for input + * @param[in] batch batch size + * @param[in] stream cuda stream + */ +extern void argmax_gpu( + unsigned char * dst, float * src, int d_w, int d_h, int s_w, int s_h, int s_c, int batch, + cudaStream_t stream); +} // namespace tensorrt_yolox #endif // TENSORRT_YOLOX__PREPROCESS_HPP_ diff --git a/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox.hpp b/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox.hpp index c42222a70c96b..d287c8a44d4cf 100644 --- a/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox.hpp +++ b/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox.hpp @@ -52,6 +52,13 @@ struct GridAndStride int stride; }; +typedef struct Colormap_ +{ + int id; + std::string name; + std::vector color; +} Colormap; + /** * @class TrtYoloX * @brief TensorRT YOLOX for faster inference @@ -85,7 +92,7 @@ class TrtYoloX const bool use_gpu_preprocess = false, std::string calibration_image_list_file = std::string(), const double norm_factor = 1.0, [[maybe_unused]] const std::string & cache_dir = "", const tensorrt_common::BatchConfig & batch_config = {1, 1, 1}, - const size_t max_workspace_size = (1 << 30)); + const size_t max_workspace_size = (1 << 30), const std::string & color_map_path = ""); /** * @brief Deconstruct TrtYoloX */ @@ -96,7 +103,9 @@ class TrtYoloX * @param[out] objects results for object detection * @param[in] images batched images */ - bool doInference(const std::vector & images, ObjectArrays & objects); + bool doInference( + const std::vector & images, ObjectArrays & objects, std::vector & masks, + std::vector & color_masks); /** * @brief run inference including pre-process and post-process @@ -130,6 +139,22 @@ class TrtYoloX */ void printProfiling(void); + /** + * @brief get num for multitask heads + */ + int getMultitaskNum(void); + + /** + * @brief get colorized masks from index using specific colormap + * @param[out] cmask colorized mask + * @param[in] index multitask index + * @param[in] colormap colormap for masks + */ + void getColorizedMask( + const std::vector & colormap, const cv::Mat & mask, + cv::Mat & colorized_mask); + inline std::vector getColorMap() { return sematic_color_map_; } + private: /** * @brief run preprocess including resizing, letterbox, NHWC2NCHW and toFloat on CPU @@ -177,7 +202,9 @@ class TrtYoloX const cv::Mat & images, int batch_size, ObjectArrays & objects); bool feedforward(const std::vector & images, ObjectArrays & objects); - bool feedforwardAndDecode(const std::vector & images, ObjectArrays & objects); + bool feedforwardAndDecode( + const std::vector & images, ObjectArrays & objects, std::vector & masks, + std::vector & color_masks); void decodeOutputs(float * prob, ObjectArray & objects, float scale, cv::Size & img_size) const; void generateGridsAndStride( const int target_w, const int target_h, const std::vector & strides, @@ -206,6 +233,26 @@ class TrtYoloX void nmsSortedBboxes( const ObjectArray & face_objects, std::vector & picked, float nms_threshold) const; + /** + * @brief get a mask image for a segmentation head + * @param[out] argmax argmax results + * @param[in] prob probability map + * @param[in] dims dimension for probability map + * @param[in] out_w mask width excluding letterbox + * @param[in] out_h mask height excluding letterbox + */ + cv::Mat getMaskImage(float * prob, nvinfer1::Dims dims, int out_w, int out_h); + + /** + * @brief get a mask image on GPUs for a segmentation head + * @param[out] mask image + * @param[in] prob probability map on device + * @param[in] out_w mask width excluding letterbox + * @param[in] out_h mask height excluding letterbox + * @param[in] b current batch + */ + cv::Mat getMaskImageGpu(float * d_prob, nvinfer1::Dims dims, int out_w, int out_h, int b); + std::unique_ptr trt_common_; std::vector input_h_; @@ -249,6 +296,20 @@ class TrtYoloX CudaUniquePtrHost roi_h_; // device pointer for ROI CudaUniquePtr roi_d_; + + // flag whether model has multitasks + int multitask_; + // buff size for segmentation heads + CudaUniquePtr segmentation_out_prob_d_; + CudaUniquePtrHost segmentation_out_prob_h_; + size_t segmentation_out_elem_num_; + size_t segmentation_out_elem_num_per_batch_; + std::vector segmentation_masks_; + // host buffer for argmax postprocessing on GPU + CudaUniquePtrHost argmax_buf_h_; + // device buffer for argmax postprocessing on GPU + CudaUniquePtr argmax_buf_d_; + std::vector sematic_color_map_; }; } // namespace tensorrt_yolox diff --git a/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox_node.hpp b/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox_node.hpp index 885852106a82c..48ffedb98441d 100644 --- a/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox_node.hpp +++ b/perception/tensorrt_yolox/include/tensorrt_yolox/tensorrt_yolox_node.hpp @@ -15,6 +15,8 @@ #ifndef TENSORRT_YOLOX__TENSORRT_YOLOX_NODE_HPP_ #define TENSORRT_YOLOX__TENSORRT_YOLOX_NODE_HPP_ +#include "object_recognition_utils/object_recognition_utils.hpp" + #include #include #include @@ -25,6 +27,7 @@ #include #include #include +#include #if __has_include() #include @@ -41,10 +44,30 @@ namespace tensorrt_yolox { +// cspell: ignore Semseg using LabelMap = std::map; - +using Label = tier4_perception_msgs::msg::Semantic; class TrtYoloXNode : public rclcpp::Node { + struct RoiOverlaySemsegLabel + { + bool UNKNOWN; + bool CAR; + bool TRUCK; + bool BUS; + bool MOTORCYCLE; + bool BICYCLE; + bool PEDESTRIAN; + bool ANIMAL; + bool isOverlay(const uint8_t label) const + { + return (label == Label::UNKNOWN && UNKNOWN) || (label == Label::CAR && CAR) || + (label == Label::TRUCK && TRUCK) || (label == Label::BUS && BUS) || + (label == Label::ANIMAL && ANIMAL) || (label == Label::MOTORBIKE && MOTORCYCLE) || + (label == Label::BICYCLE && BICYCLE) || (label == Label::PEDESTRIAN && PEDESTRIAN); + }; + }; // struct RoiOverlaySemsegLabel + public: explicit TrtYoloXNode(const rclcpp::NodeOptions & node_options); @@ -53,8 +76,13 @@ class TrtYoloXNode : public rclcpp::Node void onImage(const sensor_msgs::msg::Image::ConstSharedPtr msg); bool readLabelFile(const std::string & label_path); void replaceLabelMap(); - + void overlapSegmentByRoi( + const tensorrt_yolox::Object & object, cv::Mat & mask, const int width, const int height); + int mapRoiLabel2SegLabel(const int32_t roi_label_index); image_transport::Publisher image_pub_; + image_transport::Publisher mask_pub_; + image_transport::Publisher color_mask_pub_; + rclcpp::Publisher::SharedPtr objects_pub_; image_transport::Subscriber image_sub_; @@ -63,8 +91,23 @@ class TrtYoloXNode : public rclcpp::Node LabelMap label_map_; std::unique_ptr trt_yolox_; - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr debug_publisher_; + bool is_roi_overlap_segment_; + bool is_publish_color_mask_; + float overlap_roi_score_threshold_; + // TODO(badai-nguyen): change to function + std::map remap_roi_to_semantic_ = { + {"UNKNOWN", 3}, // other + {"ANIMAL", 0}, // other + {"PEDESTRIAN", 6}, // person + {"CAR", 7}, // car + {"TRUCK", 7}, // truck + {"BUS", 7}, // bus + {"BICYCLE", 8}, // bicycle + {"MOTORBIKE", 8}, // motorcycle + }; + RoiOverlaySemsegLabel roi_overlay_segment_labels_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr debug_publisher_; }; } // namespace tensorrt_yolox diff --git a/perception/tensorrt_yolox/launch/yolox_s_plus_opt.launch.xml b/perception/tensorrt_yolox/launch/yolox_s_plus_opt.launch.xml index dd15eda2913ce..e4436a0424be5 100644 --- a/perception/tensorrt_yolox/launch/yolox_s_plus_opt.launch.xml +++ b/perception/tensorrt_yolox/launch/yolox_s_plus_opt.launch.xml @@ -1,22 +1,30 @@ - + - + + + + + diff --git a/perception/tensorrt_yolox/src/preprocess.cu b/perception/tensorrt_yolox/src/preprocess.cu index 3c3087c536f10..f384de2975aa4 100644 --- a/perception/tensorrt_yolox/src/preprocess.cu +++ b/perception/tensorrt_yolox/src/preprocess.cu @@ -594,4 +594,39 @@ void multi_scale_resize_bilinear_letterbox_nhwc_to_nchw32_batch_gpu( cuda_gridsize(N), block, 0, stream>>>(N, dst, src, d_h, d_w, s_h, s_w, d_roi, norm, batch); } +__global__ void argmax_gpu_kernel( + int N, unsigned char * dst, float * src, int dst_h, int dst_w, int src_c, int src_h, int src_w, + int batch) +{ + // NHWC + int index = (blockIdx.x + blockIdx.y * gridDim.x) * blockDim.x + threadIdx.x; + + if (index >= N) return; + int c = 0; + int w = index % dst_w; + int h = index / (dst_w); + + int b; + for (b = 0; b < batch; b++) { + float max_prob = 0.0; + int max_index = 0; + int dst_index = w + dst_w * h + b * dst_h * dst_w; + for (c = 0; c < src_c; c++) { + int src_index = w + src_w * h + c * src_h * src_w + b * src_c * src_h * src_w; + max_index = max_prob < src[src_index] ? c : max_index; + max_prob = max_prob < src[src_index] ? src[src_index] : max_prob; + } + dst[dst_index] = max_index; + } +} + +void argmax_gpu( + unsigned char * dst, float * src, int d_w, int d_h, int s_w, int s_h, int s_c, int batch, + cudaStream_t stream) +{ + int N = d_w * d_h; + argmax_gpu_kernel<<>>( + N, dst, src, d_h, d_w, s_c, s_h, s_w, batch); +} + } // namespace tensorrt_yolox diff --git a/perception/tensorrt_yolox/src/tensorrt_yolox.cpp b/perception/tensorrt_yolox/src/tensorrt_yolox.cpp index 11f68f580acc2..34155c3477003 100644 --- a/perception/tensorrt_yolox/src/tensorrt_yolox.cpp +++ b/perception/tensorrt_yolox/src/tensorrt_yolox.cpp @@ -15,12 +15,18 @@ #include "cuda_utils/cuda_check_error.hpp" #include "cuda_utils/cuda_unique_ptr.hpp" +#include #include #include #include +#include + #include +#include #include +#include +#include #include #include #include @@ -97,6 +103,52 @@ std::vector loadImageList(const std::string & filename, const std:: } return fileList; } + +std::vector get_seg_colormap(const std::string & filename) +{ + std::vector seg_cmap; + if (filename != "not-specified") { + std::vector color_list = loadListFromTextFile(filename); + for (int i = 0; i < static_cast(color_list.size()); i++) { + if (i == 0) { + // Skip header + continue; + } + std::string colormapString = color_list[i]; + tensorrt_yolox::Colormap cmap; + size_t npos = colormapString.find_first_of(','); + assert(npos != std::string::npos); + std::string substr = colormapString.substr(0, npos); + int id = static_cast(std::stoi(trim(substr))); + colormapString.erase(0, npos + 1); + + npos = colormapString.find_first_of(','); + assert(npos != std::string::npos); + substr = colormapString.substr(0, npos); + std::string name = (trim(substr)); + cmap.id = id; + cmap.name = name; + colormapString.erase(0, npos + 1); + while (!colormapString.empty()) { + size_t npos = colormapString.find_first_of(','); + if (npos != std::string::npos) { + substr = colormapString.substr(0, npos); + unsigned char c = (unsigned char)std::stoi(trim(substr)); + cmap.color.push_back(c); + colormapString.erase(0, npos + 1); + } else { + unsigned char c = (unsigned char)std::stoi(trim(colormapString)); + cmap.color.push_back(c); + break; + } + } + + seg_cmap.push_back(cmap); + } + } + return seg_cmap; +} + } // anonymous namespace namespace tensorrt_yolox @@ -106,12 +158,14 @@ TrtYoloX::TrtYoloX( const float score_threshold, const float nms_threshold, tensorrt_common::BuildConfig build_config, const bool use_gpu_preprocess, std::string calibration_image_list_path, const double norm_factor, [[maybe_unused]] const std::string & cache_dir, const tensorrt_common::BatchConfig & batch_config, - const size_t max_workspace_size) + const size_t max_workspace_size, const std::string & color_map_path) { src_width_ = -1; src_height_ = -1; norm_factor_ = norm_factor; batch_size_ = batch_config[2]; + multitask_ = 0; + sematic_color_map_ = get_seg_colormap(color_map_path); if (precision == "int8") { if (build_config.clip_value <= 0.0) { if (calibration_image_list_path.empty()) { @@ -196,9 +250,18 @@ TrtYoloX::TrtYoloX( needs_output_decode_ = false; break; default: + needs_output_decode_ = true; + // The following three values are considered only if the specified model is plain one + num_class_ = num_class; + score_threshold_ = score_threshold; + nms_threshold_ = nms_threshold; + // Todo : Support multiple segmentation heads + multitask_++; + /* std::stringstream s; s << "\"" << model_path << "\" is unsupported format"; throw std::runtime_error{s.str()}; + */ } // GPU memory allocation @@ -234,10 +297,31 @@ TrtYoloX::TrtYoloX( out_scores_d_ = cuda_utils::make_unique(batch_config[2] * max_detections_); out_classes_d_ = cuda_utils::make_unique(batch_config[2] * max_detections_); } + if (multitask_) { + // Allocate buffer for segmentation + segmentation_out_elem_num_ = 0; + for (int m = 0; m < multitask_; m++) { + const auto output_dims = + trt_common_->getBindingDimensions(m + 2); // 0 : input, 1 : output for detections + size_t out_elem_num = std::accumulate( + output_dims.d + 1, output_dims.d + output_dims.nbDims, 1, std::multiplies()); + out_elem_num = out_elem_num * batch_config[2]; + segmentation_out_elem_num_ += out_elem_num; + } + segmentation_out_elem_num_per_batch_ = + static_cast(segmentation_out_elem_num_ / batch_config[2]); + segmentation_out_prob_d_ = cuda_utils::make_unique(segmentation_out_elem_num_); + segmentation_out_prob_h_ = + cuda_utils::make_unique_host(segmentation_out_elem_num_, cudaHostAllocPortable); + } if (use_gpu_preprocess) { use_gpu_preprocess_ = true; image_buf_h_ = nullptr; image_buf_d_ = nullptr; + if (multitask_) { + argmax_buf_h_ = nullptr; + argmax_buf_d_ = nullptr; + } } else { use_gpu_preprocess_ = false; } @@ -252,6 +336,9 @@ TrtYoloX::~TrtYoloX() if (image_buf_d_) { image_buf_d_.reset(); } + if (argmax_buf_d_) { + argmax_buf_d_.reset(); + } } } @@ -294,6 +381,26 @@ void TrtYoloX::initPreprocessBuffer(int width, int height) width * height * 3 * batch_size_, cudaHostAllocWriteCombined); image_buf_d_ = cuda_utils::make_unique(width * height * 3 * batch_size_); } + if (multitask_) { + size_t argmax_out_elem_num = 0; + for (int m = 0; m < multitask_; m++) { + const auto output_dims = + trt_common_->getBindingDimensions(m + 2); // 0 : input, 1 : output for detections + const float scale = std::min( + output_dims.d[3] / static_cast(width), + output_dims.d[2] / static_cast(height)); + int out_w = static_cast(width * scale); + int out_h = static_cast(height * scale); + // size_t out_elem_num = std::accumulate( + // output_dims.d + 1, output_dims.d + output_dims.nbDims, 1, std::multiplies()); + // out_elem_num = out_elem_num * batch_size_; + size_t out_elem_num = out_w * out_h * batch_size_; + argmax_out_elem_num += out_elem_num; + } + argmax_buf_h_ = + cuda_utils::make_unique_host(argmax_out_elem_num, cudaHostAllocPortable); + argmax_buf_d_ = cuda_utils::make_unique(argmax_out_elem_num); + } } } @@ -321,6 +428,12 @@ void TrtYoloX::preprocessGpu(const std::vector & images) if (image_buf_d_) { image_buf_d_.reset(); } + if (argmax_buf_h_) { + argmax_buf_h_.reset(); + } + if (argmax_buf_d_) { + argmax_buf_d_.reset(); + } } } src_width_ = width; @@ -333,6 +446,7 @@ void TrtYoloX::preprocessGpu(const std::vector & images) const float input_height = static_cast(input_dims.d[2]); const float input_width = static_cast(input_dims.d[3]); int b = 0; + size_t argmax_out_elem_num = 0; for (const auto & image : images) { if (!image_buf_h_) { const float scale = std::min(input_width / image.cols, input_height / image.rows); @@ -348,7 +462,31 @@ void TrtYoloX::preprocessGpu(const std::vector & images) image_buf_h_.get() + index, &image.data[0], image.cols * image.rows * 3 * sizeof(unsigned char)); b++; + + if (multitask_) { + for (int m = 0; m < multitask_; m++) { + const auto output_dims = + trt_common_->getBindingDimensions(m + 2); // 0: input, 1: output for detections + const float scale = std::min( + output_dims.d[3] / static_cast(image.cols), + output_dims.d[2] / static_cast(image.rows)); + int out_w = static_cast(image.cols * scale); + int out_h = static_cast(image.rows * scale); + argmax_out_elem_num += out_w * out_h * batch_size; + } + } + } + + if (multitask_) { + if (!argmax_buf_h_) { + argmax_buf_h_ = + cuda_utils::make_unique_host(argmax_out_elem_num, cudaHostAllocPortable); + } + if (!argmax_buf_d_) { + argmax_buf_d_ = cuda_utils::make_unique(argmax_out_elem_num); + } } + // Copy into device memory CHECK_CUDA_ERROR(cudaMemcpyAsync( image_buf_d_.get(), image_buf_h_.get(), @@ -406,7 +544,9 @@ void TrtYoloX::preprocess(const std::vector & images) // No Need for Sync } -bool TrtYoloX::doInference(const std::vector & images, ObjectArrays & objects) +bool TrtYoloX::doInference( + const std::vector & images, ObjectArrays & objects, std::vector & masks, + [[maybe_unused]] std::vector & color_masks) { if (!trt_common_->isInitialized()) { return false; @@ -419,7 +559,7 @@ bool TrtYoloX::doInference(const std::vector & images, ObjectArrays & o } if (needs_output_decode_) { - return feedforwardAndDecode(images, objects); + return feedforwardAndDecode(images, objects, masks, color_masks); } else { return feedforward(images, objects); } @@ -659,6 +799,8 @@ void TrtYoloX::multiScalePreprocess(const cv::Mat & image, const std::vector & images, ObjectArrays & objects, const std::vector & rois) { + std::vector masks; + std::vector color_masks; if (!trt_common_->isInitialized()) { return false; } @@ -669,7 +811,7 @@ bool TrtYoloX::doInferenceWithRoi( } if (needs_output_decode_) { - return feedforwardAndDecode(images, objects); + return feedforwardAndDecode(images, objects, masks, color_masks); } else { return feedforward(images, objects); } @@ -678,7 +820,6 @@ bool TrtYoloX::doInferenceWithRoi( bool TrtYoloX::doMultiScaleInference( const cv::Mat & image, ObjectArrays & objects, const std::vector & rois) { - std::vector images; if (!trt_common_->isInitialized()) { return false; } @@ -747,10 +888,14 @@ bool TrtYoloX::feedforward(const std::vector & images, ObjectArrays & o return true; } -bool TrtYoloX::feedforwardAndDecode(const std::vector & images, ObjectArrays & objects) +bool TrtYoloX::feedforwardAndDecode( + const std::vector & images, ObjectArrays & objects, std::vector & out_masks, + [[maybe_unused]] std::vector & color_masks) { std::vector buffers = {input_d_.get(), out_prob_d_.get()}; - + if (multitask_) { + buffers = {input_d_.get(), out_prob_d_.get(), segmentation_out_prob_d_.get()}; + } trt_common_->enqueueV2(buffers.data(), *stream_, nullptr); const auto batch_size = images.size(); @@ -758,6 +903,11 @@ bool TrtYoloX::feedforwardAndDecode(const std::vector & images, ObjectA CHECK_CUDA_ERROR(cudaMemcpyAsync( out_prob_h_.get(), out_prob_d_.get(), sizeof(float) * out_elem_num_, cudaMemcpyDeviceToHost, *stream_)); + if (multitask_ && !use_gpu_preprocess_) { + CHECK_CUDA_ERROR(cudaMemcpyAsync( + segmentation_out_prob_h_.get(), segmentation_out_prob_d_.get(), + sizeof(float) * segmentation_out_elem_num_, cudaMemcpyDeviceToHost, *stream_)); + } cudaStreamSynchronize(*stream_); objects.clear(); @@ -766,7 +916,43 @@ bool TrtYoloX::feedforwardAndDecode(const std::vector & images, ObjectA float * batch_prob = out_prob_h_.get() + (i * out_elem_num_per_batch_); ObjectArray object_array; decodeOutputs(batch_prob, object_array, scales_[i], image_size); + // add refine mask using object objects.emplace_back(object_array); + if (multitask_) { + segmentation_masks_.clear(); + + size_t counter = 0; + int batch = + static_cast(segmentation_out_elem_num_ / segmentation_out_elem_num_per_batch_); + for (int m = 0; m < multitask_; m++) { + const auto output_dims = + trt_common_->getBindingDimensions(m + 2); // 0 : input, 1 : output for detections + size_t out_elem_num = std::accumulate( + output_dims.d + 1, output_dims.d + output_dims.nbDims, 1, std::multiplies()); + out_elem_num = out_elem_num * batch; + const float scale = std::min( + output_dims.d[3] / static_cast(image_size.width), + output_dims.d[2] / static_cast(image_size.height)); + int out_w = static_cast(image_size.width * scale); + int out_h = static_cast(image_size.height * scale); + cv::Mat mask; + if (use_gpu_preprocess_) { + float * d_segmentation_results = + segmentation_out_prob_d_.get() + (i * segmentation_out_elem_num_per_batch_); + mask = getMaskImageGpu(&(d_segmentation_results[counter]), output_dims, out_w, out_h, i); + } else { + float * segmentation_results = + segmentation_out_prob_h_.get() + (i * segmentation_out_elem_num_per_batch_); + mask = getMaskImage(&(segmentation_results[counter]), output_dims, out_w, out_h); + } + segmentation_masks_.emplace_back(std::move(mask)); + counter += out_elem_num; + } + // semantic segmentation was fixed as first task + out_masks.at(i) = segmentation_masks_.at(0); + } else { + continue; + } } return true; } @@ -1036,4 +1222,72 @@ void TrtYoloX::nmsSortedBboxes( } } +cv::Mat TrtYoloX::getMaskImageGpu(float * d_prob, nvinfer1::Dims dims, int out_w, int out_h, int b) +{ + // NCHW + int classes = dims.d[1]; + int height = dims.d[2]; + int width = dims.d[3]; + cv::Mat mask = cv::Mat::zeros(out_h, out_w, CV_8UC1); + int index = b * out_w * out_h; + argmax_gpu( + (unsigned char *)argmax_buf_d_.get() + index, d_prob, out_w, out_h, width, height, classes, 1, + *stream_); + CHECK_CUDA_ERROR(cudaMemcpyAsync( + argmax_buf_h_.get(), argmax_buf_d_.get(), sizeof(unsigned char) * 1 * out_w * out_h, + cudaMemcpyDeviceToHost, *stream_)); + cudaStreamSynchronize(*stream_); + std::memcpy(mask.data, argmax_buf_h_.get() + index, sizeof(unsigned char) * 1 * out_w * out_h); + return mask; +} + +cv::Mat TrtYoloX::getMaskImage(float * prob, nvinfer1::Dims dims, int out_w, int out_h) +{ + // NCHW + int classes = dims.d[1]; + int height = dims.d[2]; + int width = dims.d[3]; + cv::Mat mask = cv::Mat::zeros(out_h, out_w, CV_8UC1); + // argmax + // #pragma omp parallel for + for (int y = 0; y < out_h; y++) { + for (int x = 0; x < out_w; x++) { + float max = 0.0; + int index = 0; + for (int c = 0; c < classes; c++) { + float value = prob[c * height * width + y * width + x]; + if (max < value) { + max = value; + index = c; + } + } + mask.at(y, x) = index; + } + } + return mask; +} + +int TrtYoloX::getMultitaskNum(void) +{ + return multitask_; +} + +void TrtYoloX::getColorizedMask( + const std::vector & colormap, const cv::Mat & mask, cv::Mat & cmask) +{ + int width = mask.cols; + int height = mask.rows; + if ((cmask.cols != mask.cols) || (cmask.rows != mask.rows)) { + throw std::runtime_error("input and output image have difference size."); + } + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + unsigned char id = mask.at(y, x); + cmask.at(y, x)[0] = colormap[id].color[2]; + cmask.at(y, x)[1] = colormap[id].color[1]; + cmask.at(y, x)[2] = colormap[id].color[0]; + } + } +} + } // namespace tensorrt_yolox diff --git a/perception/tensorrt_yolox/src/tensorrt_yolox_node.cpp b/perception/tensorrt_yolox/src/tensorrt_yolox_node.cpp index 4eb266445489e..c13384918bd9c 100644 --- a/perception/tensorrt_yolox/src/tensorrt_yolox_node.cpp +++ b/perception/tensorrt_yolox/src/tensorrt_yolox_node.cpp @@ -31,9 +31,9 @@ TrtYoloXNode::TrtYoloXNode(const rclcpp::NodeOptions & node_options) { { stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); debug_publisher_ = - std::make_unique(this, "tensorrt_yolox"); + std::make_unique(this, this->get_name()); stop_watch_ptr_->tic("cyclic_time"); stop_watch_ptr_->tic("processing_time"); } @@ -96,25 +96,51 @@ TrtYoloXNode::TrtYoloXNode(const rclcpp::NodeOptions & node_options) ("Path to a file which contains path to images." "Those images will be used for int8 quantization.")); + std::string color_map_path = declare_parameter_with_description( + "color_map_path", "", ("Path to a file which contains path to color map.")); if (!readLabelFile(label_path)) { RCLCPP_ERROR(this->get_logger(), "Could not find label file"); rclcpp::shutdown(); } + + is_roi_overlap_segment_ = declare_parameter("is_roi_overlap_segment"); + is_publish_color_mask_ = declare_parameter("is_publish_color_mask"); + overlap_roi_score_threshold_ = declare_parameter("overlap_roi_score_threshold"); + roi_overlay_segment_labels_.UNKNOWN = + declare_parameter("roi_overlay_segment_label.UNKNOWN"); + roi_overlay_segment_labels_.CAR = declare_parameter("roi_overlay_segment_label.CAR"); + roi_overlay_segment_labels_.TRUCK = declare_parameter("roi_overlay_segment_label.TRUCK"); + roi_overlay_segment_labels_.BUS = declare_parameter("roi_overlay_segment_label.BUS"); + roi_overlay_segment_labels_.MOTORCYCLE = + declare_parameter("roi_overlay_segment_label.MOTORCYCLE"); + roi_overlay_segment_labels_.BICYCLE = + declare_parameter("roi_overlay_segment_label.BICYCLE"); + roi_overlay_segment_labels_.PEDESTRIAN = + declare_parameter("roi_overlay_segment_label.PEDESTRIAN"); + roi_overlay_segment_labels_.ANIMAL = declare_parameter("roi_overlay_segment_label.ANIMAL"); replaceLabelMap(); tensorrt_common::BuildConfig build_config( calibration_algorithm, dla_core_id, quantize_first_layer, quantize_last_layer, profile_per_layer, clip_value); + const double norm_factor = 1.0; + const std::string cache_dir = ""; + const tensorrt_common::BatchConfig batch_config{1, 1, 1}; + const size_t max_workspace_size = (1 << 30); + trt_yolox_ = std::make_unique( model_path, precision, label_map_.size(), score_threshold, nms_threshold, build_config, - preprocess_on_gpu, calibration_image_list_path); + preprocess_on_gpu, calibration_image_list_path, norm_factor, cache_dir, batch_config, + max_workspace_size, color_map_path); timer_ = rclcpp::create_timer(this, get_clock(), 100ms, std::bind(&TrtYoloXNode::onConnect, this)); objects_pub_ = this->create_publisher( "~/out/objects", 1); + mask_pub_ = image_transport::create_publisher(this, "~/out/mask"); + color_mask_pub_ = image_transport::create_publisher(this, "~/out/color_mask"); image_pub_ = image_transport::create_publisher(this, "~/out/image"); if (declare_parameter("build_only", false)) { @@ -129,7 +155,8 @@ void TrtYoloXNode::onConnect() if ( objects_pub_->get_subscription_count() == 0 && objects_pub_->get_intra_process_subscription_count() == 0 && - image_pub_.getNumSubscribers() == 0) { + image_pub_.getNumSubscribers() == 0 && mask_pub_.getNumSubscribers() == 0 && + color_mask_pub_.getNumSubscribers() == 0) { image_sub_.shutdown(); } else if (!image_sub_) { image_sub_ = image_transport::create_subscription( @@ -154,10 +181,16 @@ void TrtYoloXNode::onImage(const sensor_msgs::msg::Image::ConstSharedPtr msg) const auto height = in_image_ptr->image.rows; tensorrt_yolox::ObjectArrays objects; - if (!trt_yolox_->doInference({in_image_ptr->image}, objects)) { + std::vector masks = {cv::Mat(cv::Size(height, width), CV_8UC1, cv::Scalar(0))}; + std::vector color_masks = { + cv::Mat(cv::Size(height, width), CV_8UC3, cv::Scalar(0, 0, 0))}; + + if (!trt_yolox_->doInference({in_image_ptr->image}, objects, masks, color_masks)) { RCLCPP_WARN(this->get_logger(), "Fail to inference"); return; } + auto & mask = masks.at(0); + for (const auto & yolox_object : objects.at(0)) { tier4_perception_msgs::msg::DetectedObjectWithFeature object; object.feature.roi.x_offset = yolox_object.x_offset; @@ -177,9 +210,21 @@ void TrtYoloXNode::onImage(const sensor_msgs::msg::Image::ConstSharedPtr msg) cv::rectangle( in_image_ptr->image, cv::Point(left, top), cv::Point(right, bottom), cv::Scalar(0, 0, 255), 3, 8, 0); + // Refine mask: replacing segmentation mask by roi class + // This should remove when the segmentation accuracy is high + if (is_roi_overlap_segment_ && trt_yolox_->getMultitaskNum() > 0) { + overlapSegmentByRoi(yolox_object, mask, width, height); + } + } + // TODO(badai-nguyen): consider to change to 4bits data transfer + if (trt_yolox_->getMultitaskNum() > 0) { + sensor_msgs::msg::Image::SharedPtr out_mask_msg = + cv_bridge::CvImage(std_msgs::msg::Header(), sensor_msgs::image_encodings::MONO8, mask) + .toImageMsg(); + out_mask_msg->header = msg->header; + mask_pub_.publish(out_mask_msg); } image_pub_.publish(in_image_ptr->toImageMsg()); - out_objects.header = msg->header; objects_pub_->publish(out_objects); @@ -198,6 +243,16 @@ void TrtYoloXNode::onImage(const sensor_msgs::msg::Image::ConstSharedPtr msg) debug_publisher_->publish( "debug/pipeline_latency_ms", pipeline_latency_ms); } + + if (is_publish_color_mask_ && trt_yolox_->getMultitaskNum() > 0) { + cv::Mat color_mask = cv::Mat::zeros(mask.rows, mask.cols, CV_8UC3); + trt_yolox_->getColorizedMask(trt_yolox_->getColorMap(), mask, color_mask); + sensor_msgs::msg::Image::SharedPtr output_color_mask_msg = + cv_bridge::CvImage(std_msgs::msg::Header(), sensor_msgs::image_encodings::BGR8, color_mask) + .toImageMsg(); + output_color_mask_msg->header = msg->header; + color_mask_pub_.publish(output_color_mask_msg); + } } bool TrtYoloXNode::readLabelFile(const std::string & label_path) @@ -234,6 +289,37 @@ void TrtYoloXNode::replaceLabelMap() } } +int TrtYoloXNode::mapRoiLabel2SegLabel(const int32_t roi_label_index) +{ + if (roi_overlay_segment_labels_.isOverlay(static_cast(roi_label_index))) { + std::string label = label_map_[roi_label_index]; + + return remap_roi_to_semantic_[label]; + } + return -1; +} + +void TrtYoloXNode::overlapSegmentByRoi( + const tensorrt_yolox::Object & roi_object, cv::Mat & mask, const int orig_width, + const int orig_height) +{ + if (roi_object.score < overlap_roi_score_threshold_) return; + int seg_class_index = mapRoiLabel2SegLabel(roi_object.type); + if (seg_class_index < 0) return; + + const float scale_x = static_cast(mask.cols) / static_cast(orig_width); + const float scale_y = static_cast(mask.rows) / static_cast(orig_height); + const int roi_width = static_cast(roi_object.width * scale_x); + const int roi_height = static_cast(roi_object.height * scale_y); + const int roi_x_offset = static_cast(roi_object.x_offset * scale_x); + const int roi_y_offset = static_cast(roi_object.y_offset * scale_y); + + cv::Mat replace_roi( + cv::Size(roi_width, roi_height), mask.type(), static_cast(seg_class_index)); + replace_roi.copyTo(mask.colRange(roi_x_offset, roi_x_offset + roi_width) + .rowRange(roi_y_offset, roi_y_offset + roi_height)); +} + } // namespace tensorrt_yolox #include "rclcpp_components/register_node_macro.hpp" diff --git a/perception/tensorrt_yolox/src/yolox_single_image_inference_node.cpp b/perception/tensorrt_yolox/src/yolox_single_image_inference_node.cpp index 0657f0096b07e..360f41e470e38 100644 --- a/perception/tensorrt_yolox/src/yolox_single_image_inference_node.cpp +++ b/perception/tensorrt_yolox/src/yolox_single_image_inference_node.cpp @@ -47,7 +47,9 @@ class YoloXSingleImageInferenceNode : public rclcpp::Node auto trt_yolox = std::make_unique(model_path, precision); auto image = cv::imread(image_path); tensorrt_yolox::ObjectArrays objects; - trt_yolox->doInference({image}, objects); + std::vector masks; + std::vector color_masks; + trt_yolox->doInference({image}, objects, masks, color_masks); for (const auto & object : objects[0]) { const auto left = object.x_offset; const auto top = object.y_offset; diff --git a/perception/tracking_object_merger/CMakeLists.txt b/perception/tracking_object_merger/CMakeLists.txt index 9c8e5a321d9be..7e7c698365922 100644 --- a/perception/tracking_object_merger/CMakeLists.txt +++ b/perception/tracking_object_merger/CMakeLists.txt @@ -22,22 +22,22 @@ include_directories( ${EIGEN3_INCLUDE_DIR} ) -ament_auto_add_library(decorative_tracker_merger_node SHARED - src/data_association/data_association.cpp - src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp - src/decorative_tracker_merger.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + src/association/data_association.cpp + src/association/solver/mu_successive_shortest_path_wrapper.cpp + src/decorative_tracker_merger_node.cpp src/utils/utils.cpp src/utils/tracker_state.cpp ) -target_link_libraries(decorative_tracker_merger_node +target_link_libraries(${PROJECT_NAME} Eigen3::Eigen glog::glog ) -rclcpp_components_register_node(decorative_tracker_merger_node - PLUGIN "tracking_object_merger::DecorativeTrackerMergerNode" - EXECUTABLE decorative_tracker_merger +rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "autoware::tracking_object_merger::DecorativeTrackerMergerNode" + EXECUTABLE decorative_tracker_merger_node ) ament_auto_package(INSTALL_TO_SHARE diff --git a/perception/tracking_object_merger/include/tracking_object_merger/data_association/data_association.hpp b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/data_association.hpp similarity index 77% rename from perception/tracking_object_merger/include/tracking_object_merger/data_association/data_association.hpp rename to perception/tracking_object_merger/include/autoware_tracking_object_merger/association/data_association.hpp index 96a474f9dac95..a272e42a74e80 100644 --- a/perception/tracking_object_merger/include/tracking_object_merger/data_association/data_association.hpp +++ b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/data_association.hpp @@ -16,26 +16,28 @@ // Author: v1.0 Yukihiro Saito // -#ifndef TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ -#define TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ - -#include -#include -#include -#include +#ifndef AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__DATA_ASSOCIATION_HPP_ +#define AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__DATA_ASSOCIATION_HPP_ #define EIGEN_MPL2_ONLY -#include "tracking_object_merger/data_association/solver/gnn_solver.hpp" -#include "tracking_object_merger/utils/tracker_state.hpp" + +#include "autoware_tracking_object_merger/association/solver/gnn_solver.hpp" +#include "autoware_tracking_object_merger/utils/tracker_state.hpp" #include #include -#include -#include +#include "autoware_perception_msgs/msg/detected_objects.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" +#include +#include #include +#include +#include +namespace autoware::tracking_object_merger +{ class DataAssociation { private: @@ -68,4 +70,6 @@ class DataAssociation virtual ~DataAssociation() {} }; -#endif // TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__DATA_ASSOCIATION_HPP_ +} // namespace autoware::tracking_object_merger + +#endif // AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__DATA_ASSOCIATION_HPP_ diff --git a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_node.cpp b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/gnn_solver.hpp similarity index 56% rename from localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_node.cpp rename to perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/gnn_solver.hpp index 2bcfe073351f8..4cea0e3cbe96f 100644 --- a/localization/yabloc/yabloc_pose_initializer/src/camera/camera_pose_initializer_node.cpp +++ b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/gnn_solver.hpp @@ -12,15 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "yabloc_pose_initializer/camera/camera_pose_initializer.hpp" +#ifndef AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ +#define AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ -int main(int argc, char * argv[]) -{ - rclcpp::init(argc, argv); - auto node = std::make_shared(); - rclcpp::executors::MultiThreadedExecutor executor; - executor.add_node(node); - executor.spin(); - rclcpp::shutdown(); - return 0; -} +#include "autoware_tracking_object_merger/association/solver/gnn_solver_interface.hpp" +#include "autoware_tracking_object_merger/association/solver/mu_ssp.hpp" +#include "autoware_tracking_object_merger/association/solver/ssp.hpp" + +#endif // AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ diff --git a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/gnn_solver_interface.hpp b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/gnn_solver_interface.hpp similarity index 71% rename from perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/gnn_solver_interface.hpp rename to perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/gnn_solver_interface.hpp index e915b5d2a9e7b..d751075773a09 100644 --- a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/gnn_solver_interface.hpp +++ b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/gnn_solver_interface.hpp @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ -#define TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#ifndef AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#define AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ #include #include -namespace gnn_solver +namespace autoware::tracking_object_merger::gnn_solver { class GnnSolverInterface { @@ -30,6 +30,6 @@ class GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) = 0; }; -} // namespace gnn_solver +} // namespace autoware::tracking_object_merger::gnn_solver -#endif // TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ +#endif // AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__GNN_SOLVER_INTERFACE_HPP_ diff --git a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/mu_successive_shortest_path.hpp b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/mu_ssp.hpp similarity index 68% rename from perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/mu_successive_shortest_path.hpp rename to perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/mu_ssp.hpp index 5c0ebc04fdde3..47c23bc8eb1b1 100644 --- a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/mu_successive_shortest_path.hpp +++ b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/mu_ssp.hpp @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ -#define TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ +#ifndef AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__MU_SSP_HPP_ +#define AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__MU_SSP_HPP_ -#include "tracking_object_merger/data_association/solver/gnn_solver_interface.hpp" +#include "autoware_tracking_object_merger/association/solver/gnn_solver_interface.hpp" #include #include -namespace gnn_solver +namespace autoware::tracking_object_merger::gnn_solver { class MuSSP : public GnnSolverInterface { @@ -32,6 +32,6 @@ class MuSSP : public GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) override; }; -} // namespace gnn_solver +} // namespace autoware::tracking_object_merger::gnn_solver -#endif // TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__MU_SUCCESSIVE_SHORTEST_PATH_HPP_ +#endif // AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__MU_SSP_HPP_ diff --git a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/successive_shortest_path.hpp b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/ssp.hpp similarity index 68% rename from perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/successive_shortest_path.hpp rename to perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/ssp.hpp index 47a737cf58298..bcfac73f3e43b 100644 --- a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/successive_shortest_path.hpp +++ b/perception/tracking_object_merger/include/autoware_tracking_object_merger/association/solver/ssp.hpp @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ -#define TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ +#ifndef AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__SSP_HPP_ +#define AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__SSP_HPP_ -#include "tracking_object_merger/data_association/solver/gnn_solver_interface.hpp" +#include "autoware_tracking_object_merger/association/solver/gnn_solver_interface.hpp" #include #include -namespace gnn_solver +namespace autoware::tracking_object_merger::gnn_solver { class SSP : public GnnSolverInterface { @@ -32,6 +32,6 @@ class SSP : public GnnSolverInterface const std::vector> & cost, std::unordered_map * direct_assignment, std::unordered_map * reverse_assignment) override; }; -} // namespace gnn_solver +} // namespace autoware::tracking_object_merger::gnn_solver -#endif // TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__SUCCESSIVE_SHORTEST_PATH_HPP_ +#endif // AUTOWARE_TRACKING_OBJECT_MERGER__ASSOCIATION__SOLVER__SSP_HPP_ diff --git a/perception/tracking_object_merger/include/tracking_object_merger/utils/tracker_state.hpp b/perception/tracking_object_merger/include/autoware_tracking_object_merger/utils/tracker_state.hpp similarity index 90% rename from perception/tracking_object_merger/include/tracking_object_merger/utils/tracker_state.hpp rename to perception/tracking_object_merger/include/autoware_tracking_object_merger/utils/tracker_state.hpp index a92cd9194b26a..ed1f69191b652 100644 --- a/perception/tracking_object_merger/include/tracking_object_merger/utils/tracker_state.hpp +++ b/perception/tracking_object_merger/include/autoware_tracking_object_merger/utils/tracker_state.hpp @@ -12,17 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef TRACKING_OBJECT_MERGER__UTILS__TRACKER_STATE_HPP_ -#define TRACKING_OBJECT_MERGER__UTILS__TRACKER_STATE_HPP_ +#ifndef AUTOWARE_TRACKING_OBJECT_MERGER__UTILS__TRACKER_STATE_HPP_ +#define AUTOWARE_TRACKING_OBJECT_MERGER__UTILS__TRACKER_STATE_HPP_ #include #include #include -#include -#include -#include -#include +#include "autoware_perception_msgs/msg/object_classification.hpp" +#include "autoware_perception_msgs/msg/tracked_object.hpp" +#include "autoware_perception_msgs/msg/tracked_object_kinematics.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include #include @@ -32,6 +32,9 @@ #include #include #include + +namespace autoware::tracking_object_merger +{ using autoware_perception_msgs::msg::TrackedObject; using autoware_perception_msgs::msg::TrackedObjects; @@ -144,5 +147,6 @@ class TrackerState TrackedObjects getTrackedObjectsFromTrackerStates( std::vector & tracker_states, const rclcpp::Time & time); +} // namespace autoware::tracking_object_merger -#endif // TRACKING_OBJECT_MERGER__UTILS__TRACKER_STATE_HPP_ +#endif // AUTOWARE_TRACKING_OBJECT_MERGER__UTILS__TRACKER_STATE_HPP_ diff --git a/perception/tracking_object_merger/include/tracking_object_merger/utils/utils.hpp b/perception/tracking_object_merger/include/autoware_tracking_object_merger/utils/utils.hpp similarity index 71% rename from perception/tracking_object_merger/include/tracking_object_merger/utils/utils.hpp rename to perception/tracking_object_merger/include/autoware_tracking_object_merger/utils/utils.hpp index 1778e09da5cd9..eb288c4e853ad 100644 --- a/perception/tracking_object_merger/include/tracking_object_merger/utils/utils.hpp +++ b/perception/tracking_object_merger/include/autoware_tracking_object_merger/utils/utils.hpp @@ -14,19 +14,18 @@ // // -#ifndef TRACKING_OBJECT_MERGER__UTILS__UTILS_HPP_ -#define TRACKING_OBJECT_MERGER__UTILS__UTILS_HPP_ +#ifndef AUTOWARE_TRACKING_OBJECT_MERGER__UTILS__UTILS_HPP_ +#define AUTOWARE_TRACKING_OBJECT_MERGER__UTILS__UTILS_HPP_ -// #include #include "autoware/universe_utils/geometry/geometry.hpp" #include -#include -#include -#include -#include -#include +#include "autoware_perception_msgs/msg/object_classification.hpp" +#include "autoware_perception_msgs/msg/shape.hpp" +#include "autoware_perception_msgs/msg/tracked_object.hpp" +#include "autoware_perception_msgs/msg/tracked_object_kinematics.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include #include #include @@ -42,49 +41,13 @@ #include #include +namespace autoware::tracking_object_merger +{ using autoware_perception_msgs::msg::TrackedObject; using autoware_perception_msgs::msg::TrackedObjects; + namespace utils { -enum MSG_COV_IDX { - X_X = 0, - X_Y = 1, - X_Z = 2, - X_ROLL = 3, - X_PITCH = 4, - X_YAW = 5, - Y_X = 6, - Y_Y = 7, - Y_Z = 8, - Y_ROLL = 9, - Y_PITCH = 10, - Y_YAW = 11, - Z_X = 12, - Z_Y = 13, - Z_Z = 14, - Z_ROLL = 15, - Z_PITCH = 16, - Z_YAW = 17, - ROLL_X = 18, - ROLL_Y = 19, - ROLL_Z = 20, - ROLL_ROLL = 21, - ROLL_PITCH = 22, - ROLL_YAW = 23, - PITCH_X = 24, - PITCH_Y = 25, - PITCH_Z = 26, - PITCH_ROLL = 27, - PITCH_PITCH = 28, - PITCH_YAW = 29, - YAW_X = 30, - YAW_Y = 31, - YAW_Z = 32, - YAW_ROLL = 33, - YAW_PITCH = 34, - YAW_YAW = 35 -}; - // linear interpolation for tracked objects TrackedObject linearInterpolationForTrackedObject( const TrackedObject & obj1, const TrackedObject & obj2); @@ -93,7 +56,7 @@ TrackedObject linearInterpolationForTrackedObject( TrackedObject predictPastOrFutureTrackedObject(const TrackedObject & obj, const double dt); TrackedObjects predictPastOrFutureTrackedObjects( - const TrackedObjects & obj, const std_msgs::msg::Header & header); + const TrackedObjects & input_objects, const std_msgs::msg::Header & header); // predict tracked objects TrackedObjects interpolateTrackedObjects( @@ -103,6 +66,9 @@ TrackedObjects interpolateTrackedObjects( namespace merger_utils { +using autoware_perception_msgs::msg::TrackedObject; +using autoware_perception_msgs::msg::TrackedObjects; + // merge policy enum MergePolicy : int { SKIP = 0, OVERWRITE = 1, FUSION = 2 }; @@ -132,4 +98,6 @@ void updateWholeTrackedObject(TrackedObject & main_obj, const TrackedObject & su } // namespace merger_utils -#endif // TRACKING_OBJECT_MERGER__UTILS__UTILS_HPP_ +} // namespace autoware::tracking_object_merger + +#endif // AUTOWARE_TRACKING_OBJECT_MERGER__UTILS__UTILS_HPP_ diff --git a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/gnn_solver.hpp b/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/gnn_solver.hpp deleted file mode 100644 index 31240848f1977..0000000000000 --- a/perception/tracking_object_merger/include/tracking_object_merger/data_association/solver/gnn_solver.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2023 TIER IV, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ -#define TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ - -#include "tracking_object_merger/data_association/solver/gnn_solver_interface.hpp" -#include "tracking_object_merger/data_association/solver/mu_successive_shortest_path.hpp" -#include "tracking_object_merger/data_association/solver/successive_shortest_path.hpp" - -#endif // TRACKING_OBJECT_MERGER__DATA_ASSOCIATION__SOLVER__GNN_SOLVER_HPP_ diff --git a/perception/tracking_object_merger/launch/decorative_tracker_merger.launch.xml b/perception/tracking_object_merger/launch/decorative_tracker_merger.launch.xml index 52b0841f97e97..2cc2a69e295e6 100644 --- a/perception/tracking_object_merger/launch/decorative_tracker_merger.launch.xml +++ b/perception/tracking_object_merger/launch/decorative_tracker_merger.launch.xml @@ -7,7 +7,7 @@ - + diff --git a/perception/tracking_object_merger/package.xml b/perception/tracking_object_merger/package.xml index 370f5beb3e3b3..cc23578773fe2 100644 --- a/perception/tracking_object_merger/package.xml +++ b/perception/tracking_object_merger/package.xml @@ -23,7 +23,6 @@ rclcpp_components tf2 tf2_ros - tier4_perception_msgs ament_lint_auto autoware_lint_common diff --git a/perception/tracking_object_merger/src/data_association/data_association.cpp b/perception/tracking_object_merger/src/association/data_association.cpp similarity index 94% rename from perception/tracking_object_merger/src/data_association/data_association.cpp rename to perception/tracking_object_merger/src/association/data_association.cpp index ae4c05013b7db..e77a71744fe9b 100644 --- a/perception/tracking_object_merger/src/data_association/data_association.cpp +++ b/perception/tracking_object_merger/src/association/data_association.cpp @@ -12,12 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "tracking_object_merger/data_association/data_association.hpp" +#include "autoware_tracking_object_merger/association/data_association.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" +#include "autoware_tracking_object_merger/association/solver/gnn_solver.hpp" +#include "autoware_tracking_object_merger/utils/utils.hpp" #include "object_recognition_utils/object_recognition_utils.hpp" -#include "tracking_object_merger/data_association/solver/gnn_solver.hpp" -#include "tracking_object_merger/utils/utils.hpp" #include #include @@ -31,8 +31,8 @@ double getFormedYawAngle( const geometry_msgs::msg::Quaternion & quat0, const geometry_msgs::msg::Quaternion & quat1, const bool distinguish_front_or_back = true) { - const double yaw0 = autoware_universe_utils::normalizeRadian(tf2::getYaw(quat0)); - const double yaw1 = autoware_universe_utils::normalizeRadian(tf2::getYaw(quat1)); + const double yaw0 = autoware::universe_utils::normalizeRadian(tf2::getYaw(quat0)); + const double yaw1 = autoware::universe_utils::normalizeRadian(tf2::getYaw(quat1)); const double angle_range = distinguish_front_or_back ? M_PI : M_PI_2; const double angle_step = distinguish_front_or_back ? 2.0 * M_PI : M_PI; // Fixed yaw0 to be in the range of +-90 or 180 degrees of yaw1 @@ -47,6 +47,8 @@ double getFormedYawAngle( } } // namespace +namespace autoware::tracking_object_merger +{ DataAssociation::DataAssociation( std::vector can_assign_vector, std::vector max_dist_vector, std::vector max_rad_vector, std::vector min_iou_vector, @@ -183,7 +185,7 @@ double DataAssociation::calcScoreBetweenObjects( double score = 0.0; if (can_assign_matrix_(object1_label, object0_label)) { const double max_dist = max_dist_matrix_(object1_label, object0_label); - const double dist = autoware_universe_utils::calcDistance2d( + const double dist = autoware::universe_utils::calcDistance2d( object0.kinematics.pose_with_covariance.pose.position, object1.kinematics.pose_with_covariance.pose.position); @@ -229,3 +231,5 @@ double DataAssociation::calcScoreBetweenObjects( } return score; } + +} // namespace autoware::tracking_object_merger diff --git a/perception/tracking_object_merger/src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp b/perception/tracking_object_merger/src/association/solver/mu_successive_shortest_path_wrapper.cpp similarity index 85% rename from perception/tracking_object_merger/src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp rename to perception/tracking_object_merger/src/association/solver/mu_successive_shortest_path_wrapper.cpp index fcc79c0a3cbd7..d2db6eba068ec 100644 --- a/perception/tracking_object_merger/src/data_association/mu_successive_shortest_path/mu_successive_shortest_path_wrapper.cpp +++ b/perception/tracking_object_merger/src/association/solver/mu_successive_shortest_path_wrapper.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "tracking_object_merger/data_association/solver/mu_successive_shortest_path.hpp" +#include "autoware_tracking_object_merger/association/solver/mu_ssp.hpp" #include @@ -24,7 +24,7 @@ #include #include -namespace gnn_solver +namespace autoware::tracking_object_merger::gnn_solver { void MuSSP::maximizeLinearAssignment( const std::vector> & cost, std::unordered_map * direct_assignment, @@ -38,4 +38,4 @@ void MuSSP::maximizeLinearAssignment( // Solve DA by muSSP solve_muSSP(cost, direct_assignment, reverse_assignment); } -} // namespace gnn_solver +} // namespace autoware::tracking_object_merger::gnn_solver diff --git a/perception/tracking_object_merger/src/data_association/successive_shortest_path/successive_shortest_path.cpp b/perception/tracking_object_merger/src/association/solver/successive_shortest_path.cpp similarity index 98% rename from perception/tracking_object_merger/src/data_association/successive_shortest_path/successive_shortest_path.cpp rename to perception/tracking_object_merger/src/association/solver/successive_shortest_path.cpp index 133f0d377373f..7be715b24bd5f 100644 --- a/perception/tracking_object_merger/src/data_association/successive_shortest_path/successive_shortest_path.cpp +++ b/perception/tracking_object_merger/src/association/solver/successive_shortest_path.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "tracking_object_merger/data_association/solver/successive_shortest_path.hpp" +#include "autoware_tracking_object_merger/association/solver/ssp.hpp" #include #include @@ -22,7 +22,7 @@ #include #include -namespace gnn_solver +namespace autoware::tracking_object_merger::gnn_solver { struct ResidualEdge { @@ -367,4 +367,4 @@ void SSP::maximizeLinearAssignment( } #endif } -} // namespace gnn_solver +} // namespace autoware::tracking_object_merger::gnn_solver diff --git a/perception/tracking_object_merger/src/decorative_tracker_merger.cpp b/perception/tracking_object_merger/src/decorative_tracker_merger_node.cpp similarity index 96% rename from perception/tracking_object_merger/src/decorative_tracker_merger.cpp rename to perception/tracking_object_merger/src/decorative_tracker_merger_node.cpp index d1bc61d90edac..6f65941c0a747 100644 --- a/perception/tracking_object_merger/src/decorative_tracker_merger.cpp +++ b/perception/tracking_object_merger/src/decorative_tracker_merger_node.cpp @@ -12,11 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "tracking_object_merger/decorative_tracker_merger.hpp" +#define EIGEN_MPL2_ONLY + +#include "decorative_tracker_merger_node.hpp" +#include "autoware_tracking_object_merger/association/solver/ssp.hpp" +#include "autoware_tracking_object_merger/utils/utils.hpp" #include "object_recognition_utils/object_recognition_utils.hpp" -#include "tracking_object_merger/data_association/solver/successive_shortest_path.hpp" -#include "tracking_object_merger/utils/utils.hpp" + +#include +#include #include @@ -25,13 +30,9 @@ #include #include -#define EIGEN_MPL2_ONLY -#include -#include - using Label = autoware_perception_msgs::msg::ObjectClassification; -namespace tracking_object_merger +namespace autoware::tracking_object_merger { using autoware_perception_msgs::msg::TrackedObject; @@ -155,14 +156,14 @@ DecorativeTrackerMergerNode::DecorativeTrackerMergerNode(const rclcpp::NodeOptio set3dDataAssociation("radar-radar", data_association_map_); // debug publisher - processing_time_publisher_ = std::make_unique( + processing_time_publisher_ = std::make_unique( this, "decorative_object_merger_node"); stop_watch_ptr_ = - std::make_unique>(); + std::make_unique>(); stop_watch_ptr_->tic("cyclic_time"); stop_watch_ptr_->tic("processing_time"); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void DecorativeTrackerMergerNode::set3dDataAssociation( @@ -419,7 +420,7 @@ TrackerState DecorativeTrackerMergerNode::createNewTracker( return new_tracker; } -} // namespace tracking_object_merger +} // namespace autoware::tracking_object_merger #include -RCLCPP_COMPONENTS_REGISTER_NODE(tracking_object_merger::DecorativeTrackerMergerNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::tracking_object_merger::DecorativeTrackerMergerNode) diff --git a/perception/tracking_object_merger/include/tracking_object_merger/decorative_tracker_merger.hpp b/perception/tracking_object_merger/src/decorative_tracker_merger_node.hpp similarity index 82% rename from perception/tracking_object_merger/include/tracking_object_merger/decorative_tracker_merger.hpp rename to perception/tracking_object_merger/src/decorative_tracker_merger_node.hpp index be03ec3868af9..ae19f51876490 100644 --- a/perception/tracking_object_merger/include/tracking_object_merger/decorative_tracker_merger.hpp +++ b/perception/tracking_object_merger/src/decorative_tracker_merger_node.hpp @@ -12,19 +12,19 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef TRACKING_OBJECT_MERGER__DECORATIVE_TRACKER_MERGER_HPP_ -#define TRACKING_OBJECT_MERGER__DECORATIVE_TRACKER_MERGER_HPP_ +#ifndef DECORATIVE_TRACKER_MERGER_NODE_HPP_ +#define DECORATIVE_TRACKER_MERGER_NODE_HPP_ -#include "tracking_object_merger/data_association/data_association.hpp" -#include "tracking_object_merger/utils/tracker_state.hpp" -#include "tracking_object_merger/utils/utils.hpp" +#include "autoware/universe_utils/ros/debug_publisher.hpp" +#include "autoware/universe_utils/ros/published_time_publisher.hpp" +#include "autoware/universe_utils/system/stop_watch.hpp" +#include "autoware_tracking_object_merger/association/data_association.hpp" +#include "autoware_tracking_object_merger/utils/tracker_state.hpp" +#include "autoware_tracking_object_merger/utils/utils.hpp" -#include -#include -#include #include -#include +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include #ifdef ROS_DISTRO_GALACTIC @@ -43,7 +43,7 @@ #include #include -namespace tracking_object_merger +namespace autoware::tracking_object_merger { class DecorativeTrackerMergerNode : public rclcpp::Node @@ -86,8 +86,8 @@ class DecorativeTrackerMergerNode : public rclcpp::Node // debug object publisher rclcpp::Publisher::SharedPtr debug_object_pub_; bool publish_interpolated_sub_objects_; - std::unique_ptr> stop_watch_ptr_; - std::unique_ptr processing_time_publisher_; + std::unique_ptr> stop_watch_ptr_; + std::unique_ptr processing_time_publisher_; /* handle objects */ std::unordered_map> @@ -106,7 +106,7 @@ class DecorativeTrackerMergerNode : public rclcpp::Node // tracker default settings TrackerStateParameter tracker_state_parameter_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; // merge policy (currently not used) struct @@ -131,6 +131,6 @@ class DecorativeTrackerMergerNode : public rclcpp::Node } logging_; }; -} // namespace tracking_object_merger +} // namespace autoware::tracking_object_merger -#endif // TRACKING_OBJECT_MERGER__DECORATIVE_TRACKER_MERGER_HPP_ +#endif // DECORATIVE_TRACKER_MERGER_NODE_HPP_ diff --git a/perception/tracking_object_merger/src/utils/tracker_state.cpp b/perception/tracking_object_merger/src/utils/tracker_state.cpp index 36da060a962c3..54b1d73c375a5 100644 --- a/perception/tracking_object_merger/src/utils/tracker_state.cpp +++ b/perception/tracking_object_merger/src/utils/tracker_state.cpp @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "tracking_object_merger/utils/tracker_state.hpp" +#include "autoware_tracking_object_merger/utils/tracker_state.hpp" -#include "tracking_object_merger/utils/utils.hpp" +#include "autoware_tracking_object_merger/utils/utils.hpp" + +namespace autoware::tracking_object_merger +{ using autoware_perception_msgs::msg::TrackedObject; using autoware_perception_msgs::msg::TrackedObjects; @@ -325,3 +328,5 @@ TrackedObjects getTrackedObjectsFromTrackerStates( tracked_objects.header.frame_id = "map"; // TODO(yoshiri): get frame_id from input return tracked_objects; } + +} // namespace autoware::tracking_object_merger diff --git a/perception/tracking_object_merger/src/utils/utils.cpp b/perception/tracking_object_merger/src/utils/utils.cpp index 7d8b5a4cc02f3..1ae705aa38f15 100644 --- a/perception/tracking_object_merger/src/utils/utils.cpp +++ b/perception/tracking_object_merger/src/utils/utils.cpp @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "tracking_object_merger/utils/utils.hpp" +#include "autoware_tracking_object_merger/utils/utils.hpp" -#include -#include -#include +#include "autoware_perception_msgs/msg/shape.hpp" +#include "autoware_perception_msgs/msg/tracked_object.hpp" +#include "autoware_perception_msgs/msg/tracked_objects.hpp" #include #include @@ -25,7 +25,7 @@ using autoware_perception_msgs::msg::TrackedObject; using autoware_perception_msgs::msg::TrackedObjects; -namespace utils +namespace autoware::tracking_object_merger::utils { /** @@ -153,20 +153,20 @@ TrackedObject predictPastOrFutureTrackedObject(const TrackedObject & obj, const /** * @brief predict past or future tracked objects * - * @param obj + * @param input_objects * @param header * @return TrackedObjects */ TrackedObjects predictPastOrFutureTrackedObjects( - const TrackedObjects & obj, const std_msgs::msg::Header & header) + const TrackedObjects & input_objects, const std_msgs::msg::Header & header) { // for each object, predict past or future TrackedObjects output_objects; - output_objects.header = obj.header; + output_objects.header = input_objects.header; output_objects.header.stamp = header.stamp; - const auto dt = (rclcpp::Time(header.stamp) - rclcpp::Time(obj.header.stamp)).seconds(); - for (const auto & obj : obj.objects) { + const auto dt = (rclcpp::Time(header.stamp) - rclcpp::Time(input_objects.header.stamp)).seconds(); + for (const auto & obj : input_objects.objects) { output_objects.objects.push_back(predictPastOrFutureTrackedObject(obj, dt)); } return output_objects; @@ -243,9 +243,9 @@ TrackedObjects interpolateTrackedObjects( return output_objects; } -} // namespace utils +} // namespace autoware::tracking_object_merger::utils -namespace merger_utils +namespace autoware::tracking_object_merger::merger_utils { double mean(const double a, const double b) @@ -280,7 +280,7 @@ bool objectsHaveSameMotionDirections(const TrackedObject & main_obj, const Track // diff of motion yaw angle const auto motion_yaw_diff = std::fabs(main_motion_yaw - sub_motion_yaw); const auto normalized_motion_yaw_diff = - autoware_universe_utils::normalizeRadian(motion_yaw_diff); // -pi ~ pi + autoware::universe_utils::normalizeRadian(motion_yaw_diff); // -pi ~ pi // evaluate if motion yaw angle is same constexpr double yaw_threshold = M_PI / 4.0; // 45 deg if (std::abs(normalized_motion_yaw_diff) < yaw_threshold) { @@ -305,7 +305,7 @@ bool objectsYawIsReverted(const TrackedObject & main_obj, const TrackedObject & const auto sub_yaw = tf2::getYaw(sub_obj.kinematics.pose_with_covariance.pose.orientation); // calc yaw diff const auto yaw_diff = std::fabs(main_yaw - sub_yaw); - const auto normalized_yaw_diff = autoware_universe_utils::normalizeRadian(yaw_diff); // -pi ~ pi + const auto normalized_yaw_diff = autoware::universe_utils::normalizeRadian(yaw_diff); // -pi ~ pi // evaluate if yaw is reverted constexpr double yaw_threshold = M_PI / 2.0; // 90 deg if (std::abs(normalized_yaw_diff) >= yaw_threshold) { @@ -513,4 +513,4 @@ void updateWholeTrackedObject(TrackedObject & main_obj, const TrackedObject & su main_obj = sub_obj; } -} // namespace merger_utils +} // namespace autoware::tracking_object_merger::merger_utils diff --git a/perception/traffic_light_arbiter/include/traffic_light_arbiter/signal_match_validator.hpp b/perception/traffic_light_arbiter/include/traffic_light_arbiter/signal_match_validator.hpp index acec687e0243d..721341bed915d 100644 --- a/perception/traffic_light_arbiter/include/traffic_light_arbiter/signal_match_validator.hpp +++ b/perception/traffic_light_arbiter/include/traffic_light_arbiter/signal_match_validator.hpp @@ -15,7 +15,7 @@ #ifndef TRAFFIC_LIGHT_ARBITER__SIGNAL_MATCH_VALIDATOR_HPP_ #define TRAFFIC_LIGHT_ARBITER__SIGNAL_MATCH_VALIDATOR_HPP_ -#include +#include #include #include diff --git a/perception/traffic_light_arbiter/package.xml b/perception/traffic_light_arbiter/package.xml index f5e396ba4c0fb..6e8fc61bc5306 100644 --- a/perception/traffic_light_arbiter/package.xml +++ b/perception/traffic_light_arbiter/package.xml @@ -11,10 +11,10 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs lanelet2_core - lanelet2_extension rclcpp rclcpp_components diff --git a/perception/traffic_light_arbiter/src/traffic_light_arbiter.cpp b/perception/traffic_light_arbiter/src/traffic_light_arbiter.cpp index 498148d568cc9..033c7fbfb6a35 100644 --- a/perception/traffic_light_arbiter/src/traffic_light_arbiter.cpp +++ b/perception/traffic_light_arbiter/src/traffic_light_arbiter.cpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include +#include +#include #include #include diff --git a/perception/traffic_light_map_based_detector/include/traffic_light_map_based_detector/node.hpp b/perception/traffic_light_map_based_detector/include/traffic_light_map_based_detector/node.hpp index e6e60cd97272b..3aeba4c4a913a 100644 --- a/perception/traffic_light_map_based_detector/include/traffic_light_map_based_detector/node.hpp +++ b/perception/traffic_light_map_based_detector/include/traffic_light_map_based_detector/node.hpp @@ -15,7 +15,7 @@ #ifndef TRAFFIC_LIGHT_MAP_BASED_DETECTOR__NODE_HPP_ #define TRAFFIC_LIGHT_MAP_BASED_DETECTOR__NODE_HPP_ -#include +#include #include #include @@ -25,7 +25,12 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif + #include #include #include diff --git a/perception/traffic_light_map_based_detector/package.xml b/perception/traffic_light_map_based_detector/package.xml index e72cac75cd809..7553b136d791a 100644 --- a/perception/traffic_light_map_based_detector/package.xml +++ b/perception/traffic_light_map_based_detector/package.xml @@ -13,12 +13,12 @@ autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_planning_msgs autoware_universe_utils geometry_msgs image_geometry - lanelet2_extension rclcpp rclcpp_components sensor_msgs diff --git a/perception/traffic_light_map_based_detector/src/node.cpp b/perception/traffic_light_map_based_detector/src/node.cpp index 7224db018ccff..7d241d71ce185 100644 --- a/perception/traffic_light_map_based_detector/src/node.cpp +++ b/perception/traffic_light_map_based_detector/src/node.cpp @@ -16,9 +16,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -512,9 +512,10 @@ void MapBasedDetector::getVisibleTrafficLights( double max_angle_range; if (pedestrian_tl_id_.find(traffic_light.id()) != pedestrian_tl_id_.end()) { max_angle_range = - autoware_universe_utils::deg2rad(config_.pedestrian_traffic_light_max_angle_range); + autoware::universe_utils::deg2rad(config_.pedestrian_traffic_light_max_angle_range); } else { - max_angle_range = autoware_universe_utils::deg2rad(config_.car_traffic_light_max_angle_range); + max_angle_range = + autoware::universe_utils::deg2rad(config_.car_traffic_light_max_angle_range); } // traffic light bottom left const auto & tl_bl = traffic_light.front(); @@ -530,7 +531,7 @@ void MapBasedDetector::getVisibleTrafficLights( } // check angle range - const double tl_yaw = autoware_universe_utils::normalizeRadian( + const double tl_yaw = autoware::universe_utils::normalizeRadian( std::atan2(tl_br.y() - tl_bl.y(), tl_br.x() - tl_bl.x()) + M_PI_2); // get direction of z axis @@ -538,7 +539,7 @@ void MapBasedDetector::getVisibleTrafficLights( tf2::Matrix3x3 camera_rotation_matrix(tf_map2camera.getRotation()); camera_z_dir = camera_rotation_matrix * camera_z_dir; double camera_yaw = std::atan2(camera_z_dir.y(), camera_z_dir.x()); - camera_yaw = autoware_universe_utils::normalizeRadian(camera_yaw); + camera_yaw = autoware::universe_utils::normalizeRadian(camera_yaw); if (!isInAngleRange(tl_yaw, camera_yaw, max_angle_range)) { continue; } diff --git a/perception/traffic_light_multi_camera_fusion/package.xml b/perception/traffic_light_multi_camera_fusion/package.xml index 36dce830a2595..db942d4bb60b9 100644 --- a/perception/traffic_light_multi_camera_fusion/package.xml +++ b/perception/traffic_light_multi_camera_fusion/package.xml @@ -12,9 +12,9 @@ autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs - lanelet2_extension rclcpp rclcpp_components sensor_msgs diff --git a/perception/traffic_light_multi_camera_fusion/src/node.cpp b/perception/traffic_light_multi_camera_fusion/src/node.cpp index a0367459276da..607aabdefa3cc 100644 --- a/perception/traffic_light_multi_camera_fusion/src/node.cpp +++ b/perception/traffic_light_multi_camera_fusion/src/node.cpp @@ -14,8 +14,8 @@ #include "traffic_light_multi_camera_fusion/node.hpp" -#include -#include +#include +#include #include #include diff --git a/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/nodelet.hpp b/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/nodelet.hpp index 638e2797f0a6e..3cd270adf9383 100644 --- a/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/nodelet.hpp +++ b/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/nodelet.hpp @@ -27,7 +27,12 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif + #include #include #include diff --git a/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/occlusion_predictor.hpp b/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/occlusion_predictor.hpp index c14a5d56dc5d4..066f438a9544f 100644 --- a/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/occlusion_predictor.hpp +++ b/perception/traffic_light_occlusion_predictor/include/traffic_light_occlusion_predictor/occlusion_predictor.hpp @@ -24,7 +24,12 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif + #include #include #include diff --git a/perception/traffic_light_occlusion_predictor/package.xml b/perception/traffic_light_occlusion_predictor/package.xml index 9a701548092d9..313c6e1536e85 100644 --- a/perception/traffic_light_occlusion_predictor/package.xml +++ b/perception/traffic_light_occlusion_predictor/package.xml @@ -12,11 +12,11 @@ autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_universe_utils geometry_msgs image_geometry - lanelet2_extension pcl_msgs perception_utils rclcpp diff --git a/perception/traffic_light_occlusion_predictor/src/nodelet.cpp b/perception/traffic_light_occlusion_predictor/src/nodelet.cpp index 1a2eaa6c4d941..0202a26e46ef6 100644 --- a/perception/traffic_light_occlusion_predictor/src/nodelet.cpp +++ b/perception/traffic_light_occlusion_predictor/src/nodelet.cpp @@ -15,9 +15,9 @@ #include "traffic_light_occlusion_predictor/nodelet.hpp" #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/perception/traffic_light_occlusion_predictor/src/occlusion_predictor.cpp b/perception/traffic_light_occlusion_predictor/src/occlusion_predictor.cpp index 8a1bea3303c67..6515a515397da 100644 --- a/perception/traffic_light_occlusion_predictor/src/occlusion_predictor.cpp +++ b/perception/traffic_light_occlusion_predictor/src/occlusion_predictor.cpp @@ -102,7 +102,7 @@ void CloudOcclusionPredictor::predict( pcl::PointCloud cloud_camera; // points within roi pcl::PointCloud cloud_roi; - autoware_universe_utils::transformPointCloudFromROSMsg(*cloud_msg, cloud_camera, camera2cloud); + autoware::universe_utils::transformPointCloudFromROSMsg(*cloud_msg, cloud_camera, camera2cloud); filterCloud(cloud_camera, roi_tls, roi_brs, cloud_roi); diff --git a/perception/traffic_light_visualization/CMakeLists.txt b/perception/traffic_light_visualization/CMakeLists.txt index 8b5f54c034c7b..08f6b48cabbd9 100644 --- a/perception/traffic_light_visualization/CMakeLists.txt +++ b/perception/traffic_light_visualization/CMakeLists.txt @@ -8,6 +8,7 @@ find_package(OpenCV REQUIRED) ament_auto_add_library(traffic_light_roi_visualizer_nodelet SHARED src/traffic_light_roi_visualizer/nodelet.cpp + src/traffic_light_roi_visualizer/shape_draw.cpp ) target_link_libraries(traffic_light_roi_visualizer_nodelet @@ -24,6 +25,12 @@ ament_auto_add_executable(traffic_light_map_visualizer_node src/traffic_light_map_visualizer/main.cpp ) +# Copy the assets directory to the installation directory +install( + DIRECTORY images/ + DESTINATION share/${PROJECT_NAME}/images +) + ament_auto_package( INSTALL_TO_SHARE launch diff --git a/perception/traffic_light_visualization/images/circle.png b/perception/traffic_light_visualization/images/circle.png new file mode 100644 index 0000000000000..1f44f7bff39a2 Binary files /dev/null and b/perception/traffic_light_visualization/images/circle.png differ diff --git a/perception/traffic_light_visualization/images/cross.png b/perception/traffic_light_visualization/images/cross.png new file mode 100644 index 0000000000000..9848d3eeab14e Binary files /dev/null and b/perception/traffic_light_visualization/images/cross.png differ diff --git a/perception/traffic_light_visualization/images/down_left_arrow.png b/perception/traffic_light_visualization/images/down_left_arrow.png new file mode 100644 index 0000000000000..0444591a65121 Binary files /dev/null and b/perception/traffic_light_visualization/images/down_left_arrow.png differ diff --git a/perception/traffic_light_visualization/images/left_arrow.png b/perception/traffic_light_visualization/images/left_arrow.png new file mode 100644 index 0000000000000..e48efaa8092e7 Binary files /dev/null and b/perception/traffic_light_visualization/images/left_arrow.png differ diff --git a/perception/traffic_light_visualization/images/straight_arrow.png b/perception/traffic_light_visualization/images/straight_arrow.png new file mode 100644 index 0000000000000..d941d7acbc8f5 Binary files /dev/null and b/perception/traffic_light_visualization/images/straight_arrow.png differ diff --git a/perception/traffic_light_visualization/images/unknown.png b/perception/traffic_light_visualization/images/unknown.png new file mode 100644 index 0000000000000..52393aeeea1fe Binary files /dev/null and b/perception/traffic_light_visualization/images/unknown.png differ diff --git a/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_map_visualizer/node.hpp b/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_map_visualizer/node.hpp index 725c32360c34c..2cf9a98aea443 100644 --- a/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_map_visualizer/node.hpp +++ b/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_map_visualizer/node.hpp @@ -15,7 +15,7 @@ #ifndef TRAFFIC_LIGHT_VISUALIZATION__TRAFFIC_LIGHT_MAP_VISUALIZER__NODE_HPP_ #define TRAFFIC_LIGHT_VISUALIZATION__TRAFFIC_LIGHT_MAP_VISUALIZER__NODE_HPP_ -#include +#include #include #include diff --git a/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_roi_visualizer/nodelet.hpp b/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_roi_visualizer/nodelet.hpp index a4d916d968071..f7ac7471e21ef 100644 --- a/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_roi_visualizer/nodelet.hpp +++ b/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_roi_visualizer/nodelet.hpp @@ -23,7 +23,11 @@ #include #include -#include +#if __has_include() +#include // for ROS 2 Jazzy or newer +#else +#include // for ROS 2 Humble or older +#endif #include #include #include @@ -81,6 +85,20 @@ class TrafficLightRoiVisualizerNodelet : public rclcpp::Node {tier4_perception_msgs::msg::TrafficLightElement::UNKNOWN, "unknown"}, }; + std::string extractShapeName(const std::string & label) + { + size_t start_pos = label.find('-'); + if (start_pos != std::string::npos) { + start_pos++; // Start after the hyphen + size_t end_pos = label.find(',', start_pos); // Find the next comma after the hyphen + if (end_pos == std::string::npos) { // If no comma is found, take the rest of the string + end_pos = label.length(); + } + return label.substr(start_pos, end_pos - start_pos); + } + return "unknown"; // Return "unknown" if no hyphen is found + } + bool createRect( cv::Mat & image, const tier4_perception_msgs::msg::TrafficLightRoi & tl_roi, const cv::Scalar & color); diff --git a/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_roi_visualizer/shape_draw.hpp b/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_roi_visualizer/shape_draw.hpp new file mode 100644 index 0000000000000..7f83104edf48e --- /dev/null +++ b/perception/traffic_light_visualization/include/traffic_light_visualization/traffic_light_roi_visualizer/shape_draw.hpp @@ -0,0 +1,51 @@ +// Copyright 2024 The Autoware Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#pragma once +#include +#include +#include + +#include +#include + +#include +#include +#include + +struct DrawFunctionParams +{ + cv::Mat & image; + cv::Point position; + cv::Scalar color; + int size; + float probability; +}; + +using DrawFunction = std::function; + +void drawShape( + const DrawFunctionParams & params, const std::string & filename, bool flipHorizontally, + bool flipVertically, int x_offset, int y_offset, double scale_factor = 0.3); +void drawCircle(const DrawFunctionParams & params); +void drawLeftArrow(const DrawFunctionParams & params); +void drawRightArrow(const DrawFunctionParams & params); +void drawStraightArrow(const DrawFunctionParams & params); +void drawDownArrow(const DrawFunctionParams & params); +void drawDownLeftArrow(const DrawFunctionParams & params); +void drawDownRightArrow(const DrawFunctionParams & params); +void drawCross(const DrawFunctionParams & params); +void drawUnknown(const DrawFunctionParams & params); +void drawTrafficLightShape( + cv::Mat & image, const std::string & shape, const cv::Point & position, const cv::Scalar & color, + int size, float probability); diff --git a/perception/traffic_light_visualization/package.xml b/perception/traffic_light_visualization/package.xml index 3d3683a8be6cc..ee113a34f10e4 100644 --- a/perception/traffic_light_visualization/package.xml +++ b/perception/traffic_light_visualization/package.xml @@ -11,10 +11,10 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_perception_msgs cv_bridge image_transport - lanelet2_extension message_filters rclcpp rclcpp_components diff --git a/perception/traffic_light_visualization/src/traffic_light_map_visualizer/node.cpp b/perception/traffic_light_visualization/src/traffic_light_map_visualizer/node.cpp index 028e36157650a..95944a29d6092 100644 --- a/perception/traffic_light_visualization/src/traffic_light_map_visualizer/node.cpp +++ b/perception/traffic_light_visualization/src/traffic_light_map_visualizer/node.cpp @@ -14,9 +14,9 @@ #include "traffic_light_visualization/traffic_light_map_visualizer/node.hpp" -#include -#include -#include +#include +#include +#include #include diff --git a/perception/traffic_light_visualization/src/traffic_light_roi_visualizer/nodelet.cpp b/perception/traffic_light_visualization/src/traffic_light_roi_visualizer/nodelet.cpp index 45d6759e6cb7d..df097e64ecd36 100644 --- a/perception/traffic_light_visualization/src/traffic_light_roi_visualizer/nodelet.cpp +++ b/perception/traffic_light_visualization/src/traffic_light_roi_visualizer/nodelet.cpp @@ -14,6 +14,8 @@ #include "traffic_light_visualization/traffic_light_roi_visualizer/nodelet.hpp" // NOLINT(whitespace/line_length) +#include "traffic_light_visualization/traffic_light_roi_visualizer/shape_draw.hpp" // NOLINT(whitespace/line_length) + #include #include @@ -93,29 +95,24 @@ bool TrafficLightRoiVisualizerNodelet::createRect( { cv::Scalar color; if (result.label.find("red") != std::string::npos) { - color = cv::Scalar{255, 0, 0}; + color = cv::Scalar{254, 149, 149}; } else if (result.label.find("yellow") != std::string::npos) { - color = cv::Scalar{0, 255, 0}; + color = cv::Scalar{254, 250, 149}; } else if (result.label.find("green") != std::string::npos) { - color = cv::Scalar{0, 0, 255}; + color = cv::Scalar{149, 254, 161}; } else { - color = cv::Scalar{255, 255, 255}; + color = cv::Scalar{250, 250, 250}; } cv::rectangle( image, cv::Point(tl_roi.roi.x_offset, tl_roi.roi.y_offset), cv::Point(tl_roi.roi.x_offset + tl_roi.roi.width, tl_roi.roi.y_offset + tl_roi.roi.height), - color, 3); + color, 2); - int offset = 40; - cv::putText( - image, std::to_string(result.prob), - cv::Point(tl_roi.roi.x_offset, tl_roi.roi.y_offset - (offset * 0)), cv::FONT_HERSHEY_COMPLEX, - 1.1, color, 3); + std::string shape_name = extractShapeName(result.label); - cv::putText( - image, result.label, cv::Point(tl_roi.roi.x_offset, tl_roi.roi.y_offset - (offset * 1)), - cv::FONT_HERSHEY_COMPLEX, 1.1, color, 2); + drawTrafficLightShape( + image, shape_name, cv::Point(tl_roi.roi.x_offset, tl_roi.roi.y_offset), color, 16, result.prob); return true; } diff --git a/perception/traffic_light_visualization/src/traffic_light_roi_visualizer/shape_draw.cpp b/perception/traffic_light_visualization/src/traffic_light_roi_visualizer/shape_draw.cpp new file mode 100644 index 0000000000000..91a00a940885c --- /dev/null +++ b/perception/traffic_light_visualization/src/traffic_light_roi_visualizer/shape_draw.cpp @@ -0,0 +1,173 @@ +// Copyright 2024 The Autoware Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +#include "traffic_light_visualization/traffic_light_roi_visualizer/shape_draw.hpp" + +#include "opencv2/core/types.hpp" +#include "opencv2/highgui.hpp" +#include "opencv2/imgproc.hpp" + +void drawShape( + const DrawFunctionParams & params, const std::string & filename, bool flipHorizontally, + bool flipVertically, int x_offset, int y_offset, double scale_factor) +{ + std::string filepath = + ament_index_cpp::get_package_share_directory("traffic_light_visualization") + "/images/" + + filename; + cv::Mat shapeImg = cv::imread(filepath, cv::IMREAD_UNCHANGED); + if (shapeImg.empty()) { + std::cerr << "Failed to load image: " << filepath << std::endl; + return; + } + + if (flipHorizontally) { + cv::flip(shapeImg, shapeImg, 1); // Flip horizontally + } + + if (flipVertically) { + cv::flip(shapeImg, shapeImg, 0); // Flip vertically + } + + cv::resize( + shapeImg, shapeImg, cv::Size(params.size, params.size), scale_factor, scale_factor, + cv::INTER_AREA); + + // Calculate the center position including offsets + cv::Point position( + params.position.x + x_offset, params.position.y - shapeImg.rows / 2 + y_offset); + + // Check for image boundaries + if ( + position.x < 0 || position.y < 0 || position.x + shapeImg.cols > params.image.cols || + position.y + shapeImg.rows > params.image.rows) { + std::cerr << "Adjusted position is out of image bounds." << std::endl; + return; + } + + // Calculate the width of the text + std::string probabilityText = + std::to_string(static_cast(round(params.probability * 100))) + "%"; + int baseline = 0; + cv::Size textSize = + cv::getTextSize(probabilityText, cv::FONT_HERSHEY_SIMPLEX, 0.75, 2, &baseline); + + // Adjust the filled rectangle to be at the top edge and the correct width + int filledRectWidth = + shapeImg.cols + (filename != "unknown.png" ? textSize.width + 10 : 5); // Add some padding + int filledRectHeight = shapeImg.rows + 10; // Add some padding + + cv::rectangle( + params.image, cv::Rect(position.x - 2, position.y - 5, filledRectWidth, filledRectHeight), + params.color, + -1); // Filled rectangle + + // Create ROI on the destination image + cv::Mat destinationROI = params.image(cv::Rect(position, cv::Size(shapeImg.cols, shapeImg.rows))); + + // Overlay the image onto the main image + for (int y = 0; y < shapeImg.rows; ++y) { + for (int x = 0; x < shapeImg.cols; ++x) { + cv::Vec4b & pixel = shapeImg.at(y, x); + if (pixel[3] != 0) { // Only non-transparent pixels + destinationROI.at(y, x) = cv::Vec3b(pixel[0], pixel[1], pixel[2]); + } + } + } + + // Position the probability text right next to the shape + if (filename != "unknown.png") { + cv::putText( + params.image, probabilityText, + cv::Point( + position.x + shapeImg.cols + 5, position.y + shapeImg.rows / 2 + textSize.height / 2), + cv::FONT_HERSHEY_SIMPLEX, 0.75, cv::Scalar(0, 0, 0), 2, cv::LINE_AA); + } +} + +void drawCircle(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; + drawShape(params, "circle.png", false, false, 0, -y_offset); +} + +void drawLeftArrow(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; + drawShape(params, "left_arrow.png", false, false, 0, -y_offset); +} + +void drawRightArrow(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; + drawShape(params, "left_arrow.png", true, false, 0, -y_offset); +} + +void drawStraightArrow(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; // This adjusts the base position upwards + + drawShape(params, "straight_arrow.png", false, false, 0, -y_offset); +} +void drawDownArrow(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; // This adjusts the base position upwards + drawShape(params, "straight_arrow.png", false, true, 0, -y_offset); +} + +void drawDownLeftArrow(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; + drawShape(params, "down_left_arrow.png", false, false, 0, -y_offset); +} + +void drawDownRightArrow(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; + drawShape(params, "down_left_arrow.png", true, false, 0, -y_offset); +} + +void drawCross(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; + + drawShape(params, "cross.png", false, false, 0, -y_offset); +} + +void drawUnknown(const DrawFunctionParams & params) +{ + int y_offset = params.size / 2 + 5; + drawShape(params, "unknown.png", false, false, 0, -y_offset); +} + +void drawTrafficLightShape( + cv::Mat & image, const std::string & shape, const cv::Point & position, const cv::Scalar & color, + int size, float probability) +{ + static std::map shapeToFunction = { + {"circle", drawCircle}, + {"left", drawLeftArrow}, + {"right", drawRightArrow}, + {"straight", drawStraightArrow}, + {"down", drawDownArrow}, + {"down_left", drawDownLeftArrow}, + {"down_right", drawDownRightArrow}, + {"cross", drawCross}, + {"unknown", drawUnknown}}; + auto it = shapeToFunction.find(shape); + if (it != shapeToFunction.end()) { + DrawFunctionParams params{image, position, color, size, probability}; + it->second(params); + } else { + std::cerr << "Unknown shape: " << shape << std::endl; + } +} diff --git a/planning/.pages b/planning/.pages index 67c70b928bdf8..424f83cf47611 100644 --- a/planning/.pages +++ b/planning/.pages @@ -1,35 +1,35 @@ nav: - 'Introduction': planning - 'Behavior Path Planner': - - 'About Behavior Path': planning/autoware_behavior_path_planner + - 'About Behavior Path': planning/behavior_path_planner/autoware_behavior_path_planner - 'Concept': - - 'Planner Manager': planning/autoware_behavior_path_planner/docs/behavior_path_planner_manager_design - - 'Scene Module Interface': planning/autoware_behavior_path_planner/docs/behavior_path_planner_interface_design - - 'Path Generation': planning/autoware_behavior_path_planner_common/docs/behavior_path_planner_path_generation_design - - 'Collision Assessment/Safety Check': planning/autoware_behavior_path_planner_common/docs/behavior_path_planner_safety_check - - 'Dynamic Drivable Area': planning/autoware_behavior_path_planner_common/docs/behavior_path_planner_drivable_area_design - - 'Turn Signal': planning/autoware_behavior_path_planner_common/docs/behavior_path_planner_turn_signal_design + - 'Planner Manager': planning/behavior_path_planner/autoware_behavior_path_planner/docs/behavior_path_planner_manager_design + - 'Scene Module Interface': planning/behavior_path_planner/autoware_behavior_path_planner/docs/behavior_path_planner_interface_design + - 'Path Generation': planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_path_generation_design + - 'Collision Assessment/Safety Check': planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_safety_check + - 'Dynamic Drivable Area': planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_drivable_area_design + - 'Turn Signal': planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_turn_signal_design - 'Scene Module': - - 'Avoidance by Lane Change': planning/autoware_behavior_path_avoidance_by_lane_change_module - - 'Dynamic Obstacle Avoidance': planning/autoware_behavior_path_dynamic_obstacle_avoidance_module - - 'Goal Planner': planning/autoware_behavior_path_goal_planner_module - - 'Lane Change': planning/autoware_behavior_path_lane_change_module - - 'Side Shift': planning/autoware_behavior_path_side_shift_module - - 'Start Planner': planning/autoware_behavior_path_start_planner_module - - 'Static Obstacle Avoidance': planning/autoware_behavior_path_static_obstacle_avoidance_module + - 'Avoidance by Lane Change': planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module + - 'Dynamic Obstacle Avoidance': planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module + - 'Goal Planner': planning/behavior_path_planner/autoware_behavior_path_goal_planner_module + - 'Lane Change': planning/behavior_path_planner/autoware_behavior_path_lane_change_module + - 'Side Shift': planning/behavior_path_planner/autoware_behavior_path_side_shift_module + - 'Start Planner': planning/behavior_path_planner/autoware_behavior_path_start_planner_module + - 'Static Obstacle Avoidance': planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module - 'Behavior Velocity Planner': - 'About Behavior Velocity': planning/behavior_velocity_planner/autoware_behavior_velocity_planner - 'Template for Custom Module': planning/behavior_velocity_planner/autoware_behavior_velocity_template_module - 'Available Module': - 'Blind Spot': planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module - 'Crosswalk': planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module - - 'Detection Area': planning/behavior_velocity_detection_area_module + - 'Detection Area': planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module - 'Intersection': planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module - - 'No Drivable Lane': planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module + - 'No Drivable Lane': planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module - 'No Stopping Area': planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module - 'Occlusion Spot': planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module - 'Run Out': planning/behavior_velocity_planner/autoware_behavior_velocity_run_out_module - - 'Speed Bump': planning/behavior_velocity_planner/behavior_velocity_speed_bump_module + - 'Speed Bump': planning/behavior_velocity_planner/autoware_behavior_velocity_speed_bump_module - 'Stop Line': planning/behavior_velocity_planner/autoware_behavior_velocity_stop_line_module - 'Traffic Light': planning/behavior_velocity_planner/autoware_behavior_velocity_traffic_light_module - 'Virtual Traffic Light': planning/behavior_velocity_planner/autoware_behavior_velocity_virtual_traffic_light_module @@ -48,7 +48,7 @@ nav: - 'Obstacle Cruise Planner': - 'About Obstacle Cruise': planning/autoware_obstacle_cruise_planner - 'How to Debug': planning/autoware_obstacle_cruise_planner/docs/debug - - 'Obstacle Stop Planner': planning/obstacle_stop_planner + - 'Obstacle Stop Planner': planning/autoware_obstacle_stop_planner - 'Path Smoother': - 'About Path Smoother': planning/autoware_path_smoother - 'Elastic Band': planning/autoware_path_smoother/docs/eb @@ -64,7 +64,7 @@ nav: - 'About Motion Velocity Planner': planning/motion_velocity_planner/autoware_motion_velocity_planner_node/ - 'Available Modules': - 'Dynamic Obstacle Stop': planning/motion_velocity_planner/autoware_motion_velocity_dynamic_obstacle_stop_module/ - - 'Out of Lane': planning/motion_velocity_planner/autoware_motion_velocity_planner_out_of_lane_module/ + - 'Out of Lane': planning/motion_velocity_planner/autoware_motion_velocity_out_of_lane_module/ - 'Obstacle Velocity Limiter': planning/motion_velocity_planner/autoware_motion_velocity_obstacle_velocity_limiter_module/ - 'Velocity Smoother': - 'About Velocity Smoother': planning/autoware_velocity_smoother @@ -72,14 +72,13 @@ nav: - 'Scenario Selector': planning/autoware_scenario_selector - 'Static Centerline Generator': planning/autoware_static_centerline_generator - 'API and Library': - - 'Costmap Generator': planning/costmap_generator + - 'Costmap Generator': planning/autoware_costmap_generator - 'External Velocity Limit Selector': planning/autoware_external_velocity_limit_selector - 'Objects of Interest Marker Interface': planning/autoware_objects_of_interest_marker_interface - 'Route Handler': planning/autoware_route_handler - 'RTC Interface': planning/autoware_rtc_interface - 'Additional Tools': - 'Remaining Distance Time Calculator': planning/autoware_remaining_distance_time_calculator - - 'RTC Replayer': planning/rtc_replayer - 'Planning Debug Tools': - 'About Planning Debug Tools': https://github.com/autowarefoundation/autoware_tools/tree/main/planning/planning_debug_tools - 'Stop Reason Visualizer': https://github.com/autowarefoundation/autoware_tools/blob/main/planning/planning_debug_tools/doc-stop-reason-visualizer.md diff --git a/planning/autoware_costmap_generator/include/autoware_costmap_generator/costmap_generator.hpp b/planning/autoware_costmap_generator/include/autoware_costmap_generator/costmap_generator.hpp index 093c88541e9c8..40ed862647095 100644 --- a/planning/autoware_costmap_generator/include/autoware_costmap_generator/costmap_generator.hpp +++ b/planning/autoware_costmap_generator/include/autoware_costmap_generator/costmap_generator.hpp @@ -48,9 +48,9 @@ #include "autoware_costmap_generator/objects_to_costmap.hpp" #include "autoware_costmap_generator/points_to_costmap.hpp" +#include #include #include -#include #include #include diff --git a/planning/autoware_costmap_generator/nodes/autoware_costmap_generator/costmap_generator_node.cpp b/planning/autoware_costmap_generator/nodes/autoware_costmap_generator/costmap_generator_node.cpp index 4302ac6ada645..3cccd9fab0b48 100644 --- a/planning/autoware_costmap_generator/nodes/autoware_costmap_generator/costmap_generator_node.cpp +++ b/planning/autoware_costmap_generator/nodes/autoware_costmap_generator/costmap_generator_node.cpp @@ -45,10 +45,10 @@ #include "autoware_costmap_generator/costmap_generator.hpp" #include "autoware_costmap_generator/object_map_utils.hpp" -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/planning/autoware_costmap_generator/package.xml b/planning/autoware_costmap_generator/package.xml index aa1ae80eaf953..682e06a310bcb 100644 --- a/planning/autoware_costmap_generator/package.xml +++ b/planning/autoware_costmap_generator/package.xml @@ -15,10 +15,10 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_perception_msgs grid_map_ros - lanelet2_extension libpcl-all-dev pcl_conversions pcl_ros diff --git a/planning/autoware_freespace_planner/include/autoware/freespace_planner/freespace_planner_node.hpp b/planning/autoware_freespace_planner/include/autoware/freespace_planner/freespace_planner_node.hpp index 11f05ad126bc1..70167f0833586 100644 --- a/planning/autoware_freespace_planner/include/autoware/freespace_planner/freespace_planner_node.hpp +++ b/planning/autoware_freespace_planner/include/autoware/freespace_planner/freespace_planner_node.hpp @@ -163,7 +163,7 @@ class FreespacePlannerNode : public rclcpp::Node TransformStamped getTransform(const std::string & from, const std::string & to); - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; }; } // namespace autoware::freespace_planner diff --git a/planning/autoware_freespace_planner/src/autoware_freespace_planner/freespace_planner_node.cpp b/planning/autoware_freespace_planner/src/autoware_freespace_planner/freespace_planner_node.cpp index b0cf556c49b5d..55068263f5d5b 100644 --- a/planning/autoware_freespace_planner/src/autoware_freespace_planner/freespace_planner_node.cpp +++ b/planning/autoware_freespace_planner/src/autoware_freespace_planner/freespace_planner_node.cpp @@ -142,8 +142,8 @@ Trajectory getPartialTrajectory( double calcDistance2d(const Trajectory & trajectory, const Pose & pose) { - const auto idx = autoware_motion_utils::findNearestIndex(trajectory.points, pose.position); - return autoware_universe_utils::calcDistance2d(trajectory.points.at(idx), pose); + const auto idx = autoware::motion_utils::findNearestIndex(trajectory.points, pose.position); + return autoware::universe_utils::calcDistance2d(trajectory.points.at(idx), pose); } Pose transformPose(const Pose & pose, const TransformStamped & transform) @@ -287,7 +287,7 @@ FreespacePlannerNode::FreespacePlannerNode(const rclcpp::NodeOptions & node_opti this, get_clock(), period_ns, std::bind(&FreespacePlannerNode::onTimer, this)); } - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); } PlannerCommonParam FreespacePlannerNode::getPlannerCommonParam() @@ -365,7 +365,7 @@ bool FreespacePlannerNode::isPlanRequired() if (node_param_.replan_when_obstacle_found) { algo_->setMap(*occupancy_grid_); - const size_t nearest_index_partial = autoware_motion_utils::findNearestIndex( + const size_t nearest_index_partial = autoware::motion_utils::findNearestIndex( partial_trajectory_.points, current_pose_.pose.position); const size_t end_index_partial = partial_trajectory_.points.size() - 1; @@ -395,7 +395,7 @@ bool FreespacePlannerNode::isPlanRequired() void FreespacePlannerNode::updateTargetIndex() { const auto is_near_target = - autoware_universe_utils::calcDistance2d(trajectory_.points.at(target_index_), current_pose_) < + autoware::universe_utils::calcDistance2d(trajectory_.points.at(target_index_), current_pose_) < node_param_.th_arrived_distance_m; const auto is_stopped = isStopped(odom_buffer_, node_param_.th_stopped_velocity_mps); diff --git a/planning/autoware_freespace_planning_algorithms/scripts/bind/astar_search_pybind.cpp b/planning/autoware_freespace_planning_algorithms/scripts/bind/astar_search_pybind.cpp index 0a76067bc77f8..f557926806382 100644 --- a/planning/autoware_freespace_planning_algorithms/scripts/bind/astar_search_pybind.cpp +++ b/planning/autoware_freespace_planning_algorithms/scripts/bind/astar_search_pybind.cpp @@ -99,6 +99,7 @@ class AstarSearchPython : public freespace_planning_algorithms::AstarSearch namespace py = pybind11; +// cppcheck-suppress syntaxError PYBIND11_MODULE(autoware_freespace_planning_algorithms_pybind, p) { auto pyPlannerWaypointsVector = diff --git a/planning/autoware_freespace_planning_algorithms/src/abstract_algorithm.cpp b/planning/autoware_freespace_planning_algorithms/src/abstract_algorithm.cpp index dbab68be5f8be..c434635ff1401 100644 --- a/planning/autoware_freespace_planning_algorithms/src/abstract_algorithm.cpp +++ b/planning/autoware_freespace_planning_algorithms/src/abstract_algorithm.cpp @@ -21,8 +21,8 @@ namespace autoware::freespace_planning_algorithms { -using autoware_universe_utils::createQuaternionFromYaw; -using autoware_universe_utils::normalizeRadian; +using autoware::universe_utils::createQuaternionFromYaw; +using autoware::universe_utils::normalizeRadian; geometry_msgs::msg::Pose transformPose( const geometry_msgs::msg::Pose & pose, const geometry_msgs::msg::TransformStamped & transform) @@ -91,13 +91,13 @@ geometry_msgs::msg::Pose local2global( double PlannerWaypoints::compute_length() const { if (waypoints.empty()) { - std::runtime_error("cannot compute cost because waypoint has size 0"); + throw std::runtime_error("cannot compute cost because waypoint has size 0"); } double total_cost = 0.0; for (size_t i = 0; i < waypoints.size() - 1; ++i) { const auto pose_a = waypoints.at(i); const auto pose_b = waypoints.at(i + 1); - total_cost += autoware_universe_utils::calcDistance2d(pose_a.pose, pose_b.pose); + total_cost += autoware::universe_utils::calcDistance2d(pose_a.pose, pose_b.pose); } return total_cost; } diff --git a/planning/autoware_freespace_planning_algorithms/src/astar_search.cpp b/planning/autoware_freespace_planning_algorithms/src/astar_search.cpp index 5aa7f9889ccf8..6b04ca87bfb7d 100644 --- a/planning/autoware_freespace_planning_algorithms/src/astar_search.cpp +++ b/planning/autoware_freespace_planning_algorithms/src/astar_search.cpp @@ -42,7 +42,7 @@ double calcReedsSheppDistance( void setYaw(geometry_msgs::msg::Quaternion * orientation, const double yaw) { - *orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + *orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); } geometry_msgs::msg::Pose calcRelativePose( @@ -86,8 +86,9 @@ AstarSearch::TransitionTable createTransitionTable( for (int i = 0; i < turning_radius_size; ++i) { double R = R_min + i * dR; double step = R * dtheta; - const NodeUpdate forward_left{ - R * sin(dtheta), R * (1 - cos(dtheta)), dtheta, step, true, false}; + const double shift_x = R * sin(dtheta); + const double shift_y = R * (1 - cos(dtheta)); + const NodeUpdate forward_left{shift_x, shift_y, dtheta, step, true, false}; const NodeUpdate forward_right = forward_left.flipped(); forward_node_candidates.push_back(forward_left); forward_node_candidates.push_back(forward_right); @@ -209,7 +210,7 @@ double AstarSearch::estimateCost(const geometry_msgs::msg::Pose & pose) const total_cost += calcReedsSheppDistance(pose, goal_pose_, radius) * astar_param_.distance_heuristic_weight; } else { - total_cost += autoware_universe_utils::calcDistance2d(pose, goal_pose_) * + total_cost += autoware::universe_utils::calcDistance2d(pose, goal_pose_) * astar_param_.distance_heuristic_weight; } return total_cost; @@ -332,7 +333,7 @@ bool AstarSearch::isGoal(const AstarNode & node) const const double lateral_goal_range = planner_common_param_.lateral_goal_range / 2.0; const double longitudinal_goal_range = planner_common_param_.longitudinal_goal_range / 2.0; const double goal_angle = - autoware_universe_utils::deg2rad(planner_common_param_.angle_goal_range / 2.0); + autoware::universe_utils::deg2rad(planner_common_param_.angle_goal_range / 2.0); const auto relative_pose = calcRelativePose(goal_pose_, node2pose(node)); @@ -348,7 +349,7 @@ bool AstarSearch::isGoal(const AstarNode & node) const } const auto angle_diff = - autoware_universe_utils::normalizeRadian(tf2::getYaw(relative_pose.orientation)); + autoware::universe_utils::normalizeRadian(tf2::getYaw(relative_pose.orientation)); if (std::abs(angle_diff) > goal_angle) { return false; } @@ -363,7 +364,7 @@ geometry_msgs::msg::Pose AstarSearch::node2pose(const AstarNode & node) const pose_local.position.x = node.x; pose_local.position.y = node.y; pose_local.position.z = goal_pose_.position.z; - pose_local.orientation = autoware_universe_utils::createQuaternionFromYaw(node.theta); + pose_local.orientation = autoware::universe_utils::createQuaternionFromYaw(node.theta); return pose_local; } diff --git a/planning/autoware_mission_planner/package.xml b/planning/autoware_mission_planner/package.xml index deaf9b8e942a2..a7c146f150e7f 100644 --- a/planning/autoware_mission_planner/package.xml +++ b/planning/autoware_mission_planner/package.xml @@ -18,6 +18,7 @@ autoware_cmake autoware_adapi_v1_msgs + autoware_lanelet2_extension autoware_map_msgs autoware_motion_utils autoware_planning_msgs @@ -25,7 +26,6 @@ autoware_universe_utils autoware_vehicle_info_utils geometry_msgs - lanelet2_extension pluginlib rclcpp rclcpp_components diff --git a/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.cpp b/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.cpp index edce59e4f473b..3a9bfc1357798 100644 --- a/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.cpp +++ b/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.cpp @@ -21,11 +21,11 @@ #include #include #include +#include +#include +#include +#include #include -#include -#include -#include -#include #include #include @@ -108,7 +108,7 @@ geometry_msgs::msg::Pose get_closest_centerline_pose( const double lane_yaw = lanelet::utils::getLaneletAngle(closest_lanelet, point.position); - const auto nearest_idx = autoware_motion_utils::findNearestIndex( + const auto nearest_idx = autoware::motion_utils::findNearestIndex( convertCenterlineToPoints(closest_lanelet), point.position); const auto nearest_point = closest_lanelet.centerline()[nearest_idx]; @@ -190,13 +190,13 @@ PlannerPlugin::MarkerArray DefaultPlanner::visualize(const LaneletRoute & route) } const std_msgs::msg::ColorRGBA cl_route = - autoware_universe_utils::createMarkerColor(0.8, 0.99, 0.8, 0.15); + autoware::universe_utils::createMarkerColor(0.8, 0.99, 0.8, 0.15); const std_msgs::msg::ColorRGBA cl_ll_borders = - autoware_universe_utils::createMarkerColor(1.0, 1.0, 1.0, 0.999); + autoware::universe_utils::createMarkerColor(1.0, 1.0, 1.0, 0.999); const std_msgs::msg::ColorRGBA cl_end = - autoware_universe_utils::createMarkerColor(0.2, 0.2, 0.4, 0.05); + autoware::universe_utils::createMarkerColor(0.2, 0.2, 0.4, 0.05); const std_msgs::msg::ColorRGBA cl_goal = - autoware_universe_utils::createMarkerColor(0.2, 0.4, 0.4, 0.05); + autoware::universe_utils::createMarkerColor(0.2, 0.4, 0.4, 0.05); visualization_msgs::msg::MarkerArray route_marker_array; insert_marker_array( @@ -216,27 +216,27 @@ PlannerPlugin::MarkerArray DefaultPlanner::visualize(const LaneletRoute & route) } visualization_msgs::msg::MarkerArray DefaultPlanner::visualize_debug_footprint( - autoware_universe_utils::LinearRing2d goal_footprint) const + autoware::universe_utils::LinearRing2d goal_footprint) const { visualization_msgs::msg::MarkerArray msg; - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", rclcpp::Clock().now(), "goal_footprint", 0, visualization_msgs::msg::Marker::LINE_STRIP, - autoware_universe_utils::createMarkerScale(0.05, 0.0, 0.0), - autoware_universe_utils::createMarkerColor(0.99, 0.99, 0.2, 1.0)); + autoware::universe_utils::createMarkerScale(0.05, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(0.99, 0.99, 0.2, 1.0)); marker.lifetime = rclcpp::Duration::from_seconds(2.5); marker.points.push_back( - autoware_universe_utils::createPoint(goal_footprint[0][0], goal_footprint[0][1], 0.0)); + autoware::universe_utils::createPoint(goal_footprint[0][0], goal_footprint[0][1], 0.0)); marker.points.push_back( - autoware_universe_utils::createPoint(goal_footprint[1][0], goal_footprint[1][1], 0.0)); + autoware::universe_utils::createPoint(goal_footprint[1][0], goal_footprint[1][1], 0.0)); marker.points.push_back( - autoware_universe_utils::createPoint(goal_footprint[2][0], goal_footprint[2][1], 0.0)); + autoware::universe_utils::createPoint(goal_footprint[2][0], goal_footprint[2][1], 0.0)); marker.points.push_back( - autoware_universe_utils::createPoint(goal_footprint[3][0], goal_footprint[3][1], 0.0)); + autoware::universe_utils::createPoint(goal_footprint[3][0], goal_footprint[3][1], 0.0)); marker.points.push_back( - autoware_universe_utils::createPoint(goal_footprint[4][0], goal_footprint[4][1], 0.0)); + autoware::universe_utils::createPoint(goal_footprint[4][0], goal_footprint[4][1], 0.0)); marker.points.push_back( - autoware_universe_utils::createPoint(goal_footprint[5][0], goal_footprint[5][1], 0.0)); + autoware::universe_utils::createPoint(goal_footprint[5][0], goal_footprint[5][1], 0.0)); marker.points.push_back(marker.points.front()); msg.markers.push_back(marker); @@ -247,7 +247,7 @@ visualization_msgs::msg::MarkerArray DefaultPlanner::visualize_debug_footprint( bool DefaultPlanner::check_goal_footprint_inside_lanes( const lanelet::ConstLanelet & current_lanelet, const lanelet::ConstLanelet & combined_prev_lanelet, - const autoware_universe_utils::Polygon2d & goal_footprint, double & next_lane_length, + const autoware::universe_utils::Polygon2d & goal_footprint, double & next_lane_length, const double search_margin) { // check if goal footprint is in current lane @@ -302,8 +302,8 @@ bool DefaultPlanner::is_goal_valid( shoulder_lanelets, goal, &closest_shoulder_lanelet)) { const auto lane_yaw = lanelet::utils::getLaneletAngle(closest_shoulder_lanelet, goal.position); const auto goal_yaw = tf2::getYaw(goal.orientation); - const auto angle_diff = autoware_universe_utils::normalizeRadian(lane_yaw - goal_yaw); - const double th_angle = autoware_universe_utils::deg2rad(param_.goal_angle_threshold_deg); + const auto angle_diff = autoware::universe_utils::normalizeRadian(lane_yaw - goal_yaw); + const double th_angle = autoware::universe_utils::deg2rad(param_.goal_angle_threshold_deg); if (std::abs(angle_diff) < th_angle) { return true; } @@ -332,8 +332,8 @@ bool DefaultPlanner::is_goal_valid( } const auto local_vehicle_footprint = vehicle_info_.createFootprint(); - autoware_universe_utils::LinearRing2d goal_footprint = - transformVector(local_vehicle_footprint, autoware_universe_utils::pose2transform(goal)); + autoware::universe_utils::LinearRing2d goal_footprint = + transformVector(local_vehicle_footprint, autoware::universe_utils::pose2transform(goal)); pub_goal_footprint_marker_->publish(visualize_debug_footprint(goal_footprint)); const auto polygon_footprint = convert_linear_ring_to_polygon(goal_footprint); @@ -357,9 +357,9 @@ bool DefaultPlanner::is_goal_valid( if (is_in_lane(closest_lanelet, goal_lanelet_pt)) { const auto lane_yaw = lanelet::utils::getLaneletAngle(closest_lanelet, goal.position); const auto goal_yaw = tf2::getYaw(goal.orientation); - const auto angle_diff = autoware_universe_utils::normalizeRadian(lane_yaw - goal_yaw); + const auto angle_diff = autoware::universe_utils::normalizeRadian(lane_yaw - goal_yaw); - const double th_angle = autoware_universe_utils::deg2rad(param_.goal_angle_threshold_deg); + const double th_angle = autoware::universe_utils::deg2rad(param_.goal_angle_threshold_deg); if (std::abs(angle_diff) < th_angle) { return true; } diff --git a/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.hpp b/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.hpp index 0b7d889a24f83..60c2a53b82123 100644 --- a/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.hpp +++ b/planning/autoware_mission_planner/src/lanelet2_plugins/default_planner.hpp @@ -52,7 +52,7 @@ class DefaultPlanner : public mission_planner::PlannerPlugin void clearRoute() override; MarkerArray visualize(const LaneletRoute & route) const override; MarkerArray visualize_debug_footprint( - autoware_universe_utils::LinearRing2d goal_footprint_) const; + autoware::universe_utils::LinearRing2d goal_footprint_) const; autoware::vehicle_info_utils::VehicleInfo vehicle_info_; private: @@ -86,7 +86,7 @@ class DefaultPlanner : public mission_planner::PlannerPlugin bool check_goal_footprint_inside_lanes( const lanelet::ConstLanelet & current_lanelet, const lanelet::ConstLanelet & combined_prev_lanelet, - const autoware_universe_utils::Polygon2d & goal_footprint, double & next_lane_length, + const autoware::universe_utils::Polygon2d & goal_footprint, double & next_lane_length, const double search_margin = 2.0); /** diff --git a/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.cpp b/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.cpp index 904e618f825fb..5046b81c72b96 100644 --- a/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.cpp +++ b/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.cpp @@ -21,10 +21,10 @@ #include #include -autoware_universe_utils::Polygon2d convert_linear_ring_to_polygon( - autoware_universe_utils::LinearRing2d footprint) +autoware::universe_utils::Polygon2d convert_linear_ring_to_polygon( + autoware::universe_utils::LinearRing2d footprint) { - autoware_universe_utils::Polygon2d footprint_polygon; + autoware::universe_utils::Polygon2d footprint_polygon; boost::geometry::append(footprint_polygon.outer(), footprint[0]); boost::geometry::append(footprint_polygon.outer(), footprint[1]); boost::geometry::append(footprint_polygon.outer(), footprint[2]); @@ -120,7 +120,7 @@ geometry_msgs::msg::Pose convertBasicPoint3dToPose( pose.position.y = point.y(); pose.position.z = point.z(); - pose.orientation = autoware_universe_utils::createQuaternionFromYaw(lane_yaw); + pose.orientation = autoware::universe_utils::createQuaternionFromYaw(lane_yaw); return pose; } diff --git a/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.hpp b/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.hpp index 04f235a58206f..c8812e2c76dd6 100644 --- a/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.hpp +++ b/planning/autoware_mission_planner/src/lanelet2_plugins/utility_functions.hpp @@ -42,8 +42,8 @@ bool exists(const std::vector & vectors, const T & item) return false; } -autoware_universe_utils::Polygon2d convert_linear_ring_to_polygon( - autoware_universe_utils::LinearRing2d footprint); +autoware::universe_utils::Polygon2d convert_linear_ring_to_polygon( + autoware::universe_utils::LinearRing2d footprint); void insert_marker_array( visualization_msgs::msg::MarkerArray * a1, const visualization_msgs::msg::MarkerArray & a2); diff --git a/planning/autoware_mission_planner/src/mission_planner/arrival_checker.cpp b/planning/autoware_mission_planner/src/mission_planner/arrival_checker.cpp index b0af480d10357..da14712dd6c64 100644 --- a/planning/autoware_mission_planner/src/mission_planner/arrival_checker.cpp +++ b/planning/autoware_mission_planner/src/mission_planner/arrival_checker.cpp @@ -26,7 +26,7 @@ namespace autoware::mission_planner ArrivalChecker::ArrivalChecker(rclcpp::Node * node) : vehicle_stop_checker_(node) { const double angle_deg = node->declare_parameter("arrival_check_angle_deg"); - angle_ = autoware_universe_utils::deg2rad(angle_deg); + angle_ = autoware::universe_utils::deg2rad(angle_deg); distance_ = node->declare_parameter("arrival_check_distance"); duration_ = node->declare_parameter("arrival_check_duration"); } @@ -67,14 +67,14 @@ bool ArrivalChecker::is_arrived(const PoseStamped & pose) const } // Check distance. - if (distance_ < autoware_universe_utils::calcDistance2d(pose.pose, goal.pose)) { + if (distance_ < autoware::universe_utils::calcDistance2d(pose.pose, goal.pose)) { return false; } // Check angle. const double yaw_pose = tf2::getYaw(pose.pose.orientation); const double yaw_goal = tf2::getYaw(goal.pose.orientation); - const double yaw_diff = autoware_universe_utils::normalizeRadian(yaw_pose - yaw_goal); + const double yaw_diff = autoware::universe_utils::normalizeRadian(yaw_pose - yaw_goal); if (angle_ < std::fabs(yaw_diff)) { return false; } diff --git a/planning/autoware_mission_planner/src/mission_planner/arrival_checker.hpp b/planning/autoware_mission_planner/src/mission_planner/arrival_checker.hpp index 0b892d7998078..708b3de40bdab 100644 --- a/planning/autoware_mission_planner/src/mission_planner/arrival_checker.hpp +++ b/planning/autoware_mission_planner/src/mission_planner/arrival_checker.hpp @@ -42,7 +42,7 @@ class ArrivalChecker double duration_; std::optional goal_with_uuid_; rclcpp::Subscription::SharedPtr sub_goal_; - autoware_motion_utils::VehicleStopChecker vehicle_stop_checker_; + autoware::motion_utils::VehicleStopChecker vehicle_stop_checker_; }; } // namespace autoware::mission_planner diff --git a/planning/autoware_mission_planner/src/mission_planner/mission_planner.cpp b/planning/autoware_mission_planner/src/mission_planner/mission_planner.cpp index fc90b91f6d996..0df01257f049e 100644 --- a/planning/autoware_mission_planner/src/mission_planner/mission_planner.cpp +++ b/planning/autoware_mission_planner/src/mission_planner/mission_planner.cpp @@ -16,10 +16,10 @@ #include "service_utils.hpp" -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -78,7 +78,7 @@ MissionPlanner::MissionPlanner(const rclcpp::NodeOptions & options) const auto period = rclcpp::Rate(10).period(); data_check_timer_ = create_wall_timer(period, [this] { check_initialization(); }); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); } void MissionPlanner::publish_pose_log(const Pose & pose, const std::string & pose_type) diff --git a/planning/autoware_mission_planner/src/mission_planner/mission_planner.hpp b/planning/autoware_mission_planner/src/mission_planner/mission_planner.hpp index ab108d07918d2..1a04a91c14ba3 100644 --- a/planning/autoware_mission_planner/src/mission_planner/mission_planner.hpp +++ b/planning/autoware_mission_planner/src/mission_planner/mission_planner.hpp @@ -85,7 +85,7 @@ class MissionPlanner : public rclcpp::Node rclcpp::Subscription::SharedPtr sub_modified_goal_; rclcpp::Subscription::SharedPtr sub_odometry_; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_reroute_availability_{this, "~/input/reroute_availability"}; rclcpp::Subscription::SharedPtr sub_vector_map_; @@ -132,7 +132,7 @@ class MissionPlanner : public rclcpp::Node double minimum_reroute_length_; bool check_reroute_safety(const LaneletRoute & original_route, const LaneletRoute & target_route); - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; }; } // namespace autoware::mission_planner diff --git a/planning/autoware_objects_of_interest_marker_interface/src/coloring.cpp b/planning/autoware_objects_of_interest_marker_interface/src/coloring.cpp index 8dba7731649b4..038006517f45a 100644 --- a/planning/autoware_objects_of_interest_marker_interface/src/coloring.cpp +++ b/planning/autoware_objects_of_interest_marker_interface/src/coloring.cpp @@ -22,7 +22,7 @@ std_msgs::msg::ColorRGBA convertFromColorCode(const uint64_t code, const float a const float g = static_cast((code << 48) >> 56) / 255.0; const float b = static_cast((code << 56) >> 56) / 255.0; - return autoware_universe_utils::createMarkerColor(r, g, b, alpha); + return autoware::universe_utils::createMarkerColor(r, g, b, alpha); } } // namespace diff --git a/planning/autoware_objects_of_interest_marker_interface/src/marker_utils.cpp b/planning/autoware_objects_of_interest_marker_interface/src/marker_utils.cpp index 4cbf6924abf36..42d92bd0c91da 100644 --- a/planning/autoware_objects_of_interest_marker_interface/src/marker_utils.cpp +++ b/planning/autoware_objects_of_interest_marker_interface/src/marker_utils.cpp @@ -20,8 +20,8 @@ using geometry_msgs::msg::Point; using std_msgs::msg::ColorRGBA; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerScale; using visualization_msgs::msg::Marker; using visualization_msgs::msg::MarkerArray; @@ -66,9 +66,9 @@ Marker createCircleMarker( for (size_t i = 0; i < num_points; ++i) { Point point; const double ratio = static_cast(i) / static_cast(num_points); - const double theta = 2 * autoware_universe_utils::pi * ratio; - point.x = data.pose.position.x + radius * autoware_universe_utils::cos(theta); - point.y = data.pose.position.y + radius * autoware_universe_utils::sin(theta); + const double theta = 2 * autoware::universe_utils::pi * ratio; + point.x = data.pose.position.x + radius * autoware::universe_utils::cos(theta); + point.y = data.pose.position.y + radius * autoware::universe_utils::sin(theta); point.z = data.pose.position.z + height + height_offset; marker.points.push_back(point); } diff --git a/planning/autoware_obstacle_cruise_planner/config/obstacle_cruise_planner.param.yaml b/planning/autoware_obstacle_cruise_planner/config/obstacle_cruise_planner.param.yaml index 8b338e9d0cd9a..e797faaff9aa9 100644 --- a/planning/autoware_obstacle_cruise_planner/config/obstacle_cruise_planner.param.yaml +++ b/planning/autoware_obstacle_cruise_planner/config/obstacle_cruise_planner.param.yaml @@ -37,6 +37,7 @@ motorcycle: true bicycle: true pedestrian: true + pointcloud: false cruise_obstacle_type: inside: @@ -68,8 +69,17 @@ motorcycle: true bicycle: true pedestrian: true + pointcloud: false behavior_determination: + pointcloud_search_radius: 5.0 + pointcloud_voxel_grid_x: 0.05 + pointcloud_voxel_grid_y: 0.05 + pointcloud_voxel_grid_z: 100000.0 + pointcloud_cluster_tolerance: 1.0 + pointcloud_min_cluster_size: 1 + pointcloud_max_cluster_size: 100000 + decimate_trajectory_step_length : 2.0 # longitudinal step length to calculate trajectory polygon for collision checking prediction_resampling_time_interval: 0.1 diff --git a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/common_structs.hpp b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/common_structs.hpp index a7f4787f76c48..fc8a0a96ade42 100644 --- a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/common_structs.hpp +++ b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/common_structs.hpp @@ -58,15 +58,15 @@ struct Obstacle const geometry_msgs::msg::Pose & arg_pose, const double ego_to_obstacle_distance, const double lat_dist_from_obstacle_to_traj) : stamp(arg_stamp), + ego_to_obstacle_distance(ego_to_obstacle_distance), + lat_dist_from_obstacle_to_traj(lat_dist_from_obstacle_to_traj), pose(arg_pose), orientation_reliable(true), twist(object.kinematics.initial_twist_with_covariance.twist), twist_reliable(true), classification(object.classification.at(0)), - uuid(autoware_universe_utils::toHexString(object.object_id)), - shape(object.shape), - ego_to_obstacle_distance(ego_to_obstacle_distance), - lat_dist_from_obstacle_to_traj(lat_dist_from_obstacle_to_traj) + uuid(autoware::universe_utils::toHexString(object.object_id)), + shape(object.shape) { predicted_paths.clear(); for (const auto & path : object.kinematics.predicted_paths) { @@ -74,9 +74,26 @@ struct Obstacle } } - Polygon2d toPolygon() const { return autoware_universe_utils::toPolygon2d(pose, shape); } + Obstacle( + const rclcpp::Time & arg_stamp, + const std::optional & stop_collision_point, + const std::optional & slow_down_front_collision_point, + const std::optional & slow_down_back_collision_point, + const double ego_to_obstacle_distance, const double lat_dist_from_obstacle_to_traj) + : stamp(arg_stamp), + ego_to_obstacle_distance(ego_to_obstacle_distance), + lat_dist_from_obstacle_to_traj(lat_dist_from_obstacle_to_traj), + stop_collision_point(stop_collision_point), + slow_down_front_collision_point(slow_down_front_collision_point), + slow_down_back_collision_point(slow_down_back_collision_point) + { + } rclcpp::Time stamp; // This is not the current stamp, but when the object was observed. + double ego_to_obstacle_distance; + double lat_dist_from_obstacle_to_traj; + + // for PredictedObject geometry_msgs::msg::Pose pose; // interpolated with the current stamp bool orientation_reliable; Twist twist; @@ -85,8 +102,11 @@ struct Obstacle std::string uuid; Shape shape; std::vector predicted_paths; - double ego_to_obstacle_distance; - double lat_dist_from_obstacle_to_traj; + + // for PointCloud + std::optional stop_collision_point; + std::optional slow_down_front_collision_point; + std::optional slow_down_back_collision_point; }; struct TargetObstacleInterface @@ -198,33 +218,33 @@ struct LongitudinalInfo void onParam(const std::vector & parameters) { - autoware_universe_utils::updateParam(parameters, "normal.max_accel", max_accel); - autoware_universe_utils::updateParam(parameters, "normal.min_accel", min_accel); - autoware_universe_utils::updateParam(parameters, "normal.max_jerk", max_jerk); - autoware_universe_utils::updateParam(parameters, "normal.min_jerk", min_jerk); - autoware_universe_utils::updateParam(parameters, "limit.max_accel", limit_max_accel); - autoware_universe_utils::updateParam(parameters, "limit.min_accel", limit_min_accel); - autoware_universe_utils::updateParam(parameters, "limit.max_jerk", limit_max_jerk); - autoware_universe_utils::updateParam(parameters, "limit.min_jerk", limit_min_jerk); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam(parameters, "normal.max_accel", max_accel); + autoware::universe_utils::updateParam(parameters, "normal.min_accel", min_accel); + autoware::universe_utils::updateParam(parameters, "normal.max_jerk", max_jerk); + autoware::universe_utils::updateParam(parameters, "normal.min_jerk", min_jerk); + autoware::universe_utils::updateParam(parameters, "limit.max_accel", limit_max_accel); + autoware::universe_utils::updateParam(parameters, "limit.min_accel", limit_min_accel); + autoware::universe_utils::updateParam(parameters, "limit.max_jerk", limit_max_jerk); + autoware::universe_utils::updateParam(parameters, "limit.min_jerk", limit_min_jerk); + autoware::universe_utils::updateParam( parameters, "common.slow_down_min_accel", slow_down_min_accel); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.slow_down_min_jerk", slow_down_min_jerk); - autoware_universe_utils::updateParam(parameters, "common.idling_time", idling_time); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam(parameters, "common.idling_time", idling_time); + autoware::universe_utils::updateParam( parameters, "common.min_ego_accel_for_rss", min_ego_accel_for_rss); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.min_object_accel_for_rss", min_object_accel_for_rss); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.safe_distance_margin", safe_distance_margin); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.terminal_safe_distance_margin", terminal_safe_distance_margin); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.hold_stop_velocity_threshold", hold_stop_velocity_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.hold_stop_distance_threshold", hold_stop_distance_threshold); } @@ -265,7 +285,7 @@ struct DebugData MarkerArray stop_wall_marker; MarkerArray cruise_wall_marker; MarkerArray slow_down_wall_marker; - std::vector detection_polygons; + std::vector detection_polygons; }; struct EgoNearestParam @@ -280,21 +300,22 @@ struct EgoNearestParam TrajectoryPoint calcInterpolatedPoint( const std::vector & traj_points, const geometry_msgs::msg::Pose & pose) const { - return autoware_motion_utils::calcInterpolatedPoint( - autoware_motion_utils::convertToTrajectory(traj_points), pose, dist_threshold, yaw_threshold); + return autoware::motion_utils::calcInterpolatedPoint( + autoware::motion_utils::convertToTrajectory(traj_points), pose, dist_threshold, + yaw_threshold); } size_t findIndex( const std::vector & traj_points, const geometry_msgs::msg::Pose & pose) const { - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( traj_points, pose, dist_threshold, yaw_threshold); } size_t findSegmentIndex( const std::vector & traj_points, const geometry_msgs::msg::Pose & pose) const { - return autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( traj_points, pose, dist_threshold, yaw_threshold); } diff --git a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/node.hpp b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/node.hpp index 5d0d99a742d1c..b96605f57b943 100644 --- a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/node.hpp +++ b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/node.hpp @@ -27,6 +27,9 @@ #include #include +#include +#include + #include #include #include @@ -58,16 +61,27 @@ class ObstacleCruisePlannerNode : public rclcpp::Node std::vector convertToObstacles( const Odometry & odometry, const PredictedObjects & objects, const std::vector & traj_points) const; + std::vector convertToObstacles( + const Odometry & odometry, const PointCloud2 & pointcloud, + const std::vector & traj_points, + const std_msgs::msg::Header & traj_header) const; std::tuple, std::vector, std::vector> - determineEgoBehaviorAgainstObstacles( + determineEgoBehaviorAgainstPredictedObjectObstacles( const Odometry & odometry, const PredictedObjects & objects, const std::vector & traj_points, const std::vector & obstacles); + std::tuple, std::vector, std::vector> + determineEgoBehaviorAgainstPointCloudObstacles( + const Odometry & odometry, const std::vector & traj_points, + const std::vector & obstacles); std::vector decimateTrajectoryPoints( const Odometry & odometry, const std::vector & traj_points) const; - std::optional createStopObstacle( + std::optional createStopObstacleForPredictedObject( const Odometry & odometry, const std::vector & traj_points, const std::vector & traj_polys, const Obstacle & obstacle, const double precise_lateral_dist) const; + std::optional createStopObstacleForPointCloud( + const std::vector & traj_points, const Obstacle & obstacle, + const double precise_lateral_dist) const; bool isStopObstacle(const uint8_t label) const; bool isInsideCruiseObstacle(const uint8_t label) const; bool isOutsideCruiseObstacle(const uint8_t label) const; @@ -94,9 +108,11 @@ class ObstacleCruisePlannerNode : public rclcpp::Node double calcCollisionTimeMargin( const Odometry & odometry, const std::vector & collision_points, const std::vector & traj_points, const bool is_driving_forward) const; - std::optional createSlowDownObstacle( + std::optional createSlowDownObstacleForPredictedObject( const Odometry & odometry, const std::vector & traj_points, const Obstacle & obstacle, const double precise_lat_dist); + std::optional createSlowDownObstacleForPointCloud( + const Obstacle & obstacle, const double precise_lat_dist); PlannerData createPlannerData( const Odometry & odometry, const AccelWithCovarianceStamped & acc, const std::vector & traj_points) const; @@ -116,6 +132,8 @@ class ObstacleCruisePlannerNode : public rclcpp::Node bool enable_debug_info_; bool enable_calculation_time_info_; + bool use_pointcloud_for_stop_; + bool use_pointcloud_for_slow_down_; double min_behavior_stop_margin_; bool enable_approaching_on_curve_; double additional_safe_distance_margin_on_curve_; @@ -145,13 +163,18 @@ class ObstacleCruisePlannerNode : public rclcpp::Node // subscriber rclcpp::Subscription::SharedPtr traj_sub_; - autoware_universe_utils::InterProcessPollingSubscriber ego_odom_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber ego_odom_sub_{ this, "~/input/odometry"}; - autoware_universe_utils::InterProcessPollingSubscriber objects_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber objects_sub_{ this, "~/input/objects"}; - autoware_universe_utils::InterProcessPollingSubscriber acc_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber pointcloud_sub_{ + this, "~/input/pointcloud"}; + autoware::universe_utils::InterProcessPollingSubscriber acc_sub_{ this, "~/input/acceleration"}; + std::unique_ptr tf_buffer_; + std::shared_ptr tf_listener_{nullptr}; + // Vehicle Parameters VehicleInfo vehicle_info_; @@ -161,7 +184,7 @@ class ObstacleCruisePlannerNode : public rclcpp::Node PlanningAlgorithm planning_algorithm_; // stop watch - mutable autoware_universe_utils::StopWatch< + mutable autoware::universe_utils::StopWatch< std::chrono::milliseconds, std::chrono::microseconds, std::chrono::steady_clock> stop_watch_; mutable std::shared_ptr debug_data_ptr_{nullptr}; @@ -182,6 +205,13 @@ class ObstacleCruisePlannerNode : public rclcpp::Node void onParam(const std::vector & parameters); double decimate_trajectory_step_length; + double pointcloud_search_radius; + double pointcloud_voxel_grid_x; + double pointcloud_voxel_grid_y; + double pointcloud_voxel_grid_z; + double pointcloud_cluster_tolerance; + int pointcloud_min_cluster_size; + int pointcloud_max_cluster_size; // hysteresis for stop and cruise double obstacle_velocity_threshold_from_cruise_to_stop; double obstacle_velocity_threshold_from_stop_to_cruise; @@ -271,12 +301,13 @@ class ObstacleCruisePlannerNode : public rclcpp::Node bool is_driving_forward_{true}; bool enable_slow_down_planning_{false}; + bool use_pointcloud_{false}; std::vector prev_closest_stop_obstacles_{}; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace autoware::motion_planning diff --git a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/optimization_based_planner/optimization_based_planner.hpp b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/optimization_based_planner/optimization_based_planner.hpp index f08ff8fef369c..e173a19ea19de 100644 --- a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/optimization_based_planner/optimization_based_planner.hpp +++ b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/optimization_based_planner/optimization_based_planner.hpp @@ -21,8 +21,8 @@ #include "autoware/obstacle_cruise_planner/type_alias.hpp" #include "autoware_vehicle_info_utils/vehicle_info_utils.hpp" -#include -#include +#include +#include #include #include diff --git a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/planner_interface.hpp b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/planner_interface.hpp index 525a2cfca6ece..3679c253e2bbb 100644 --- a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/planner_interface.hpp +++ b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/planner_interface.hpp @@ -63,12 +63,13 @@ class PlannerInterface void setParam( const bool enable_debug_info, const bool enable_calculation_time_info, - const double min_behavior_stop_margin, const double enable_approaching_on_curve, - const double additional_safe_distance_margin_on_curve, + const bool use_pointcloud, const double min_behavior_stop_margin, + const double enable_approaching_on_curve, const double additional_safe_distance_margin_on_curve, const double min_safe_distance_margin_on_curve, const bool suppress_sudden_obstacle_stop) { enable_debug_info_ = enable_debug_info; enable_calculation_time_info_ = enable_calculation_time_info; + use_pointcloud_ = use_pointcloud; min_behavior_stop_margin_ = min_behavior_stop_margin; enable_approaching_on_curve_ = enable_approaching_on_curve; additional_safe_distance_margin_on_curve_ = additional_safe_distance_margin_on_curve; @@ -117,6 +118,7 @@ class PlannerInterface // Parameters bool enable_debug_info_{false}; bool enable_calculation_time_info_{false}; + bool use_pointcloud_{false}; LongitudinalInfo longitudinal_info_; double min_behavior_stop_margin_; bool enable_approaching_on_curve_; @@ -125,7 +127,7 @@ class PlannerInterface bool suppress_sudden_obstacle_stop_; // stop watch - autoware_universe_utils::StopWatch< + autoware::universe_utils::StopWatch< std::chrono::milliseconds, std::chrono::microseconds, std::chrono::steady_clock> stop_watch_; @@ -172,7 +174,7 @@ class PlannerInterface const geometry_msgs::msg::Pose & ego_pose) const { const auto & p = ego_nearest_param_; - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( traj_points, ego_pose, p.dist_threshold, p.yaw_threshold); } @@ -181,7 +183,7 @@ class PlannerInterface const geometry_msgs::msg::Pose & ego_pose) const { const auto & p = ego_nearest_param_; - return autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( traj_points, ego_pose, p.dist_threshold, p.yaw_threshold); } @@ -303,29 +305,29 @@ class PlannerInterface if (obstacle_to_param_struct_map.count(label + "." + movement_postfix) < 1) continue; auto & param_by_obstacle_label = obstacle_to_param_struct_map.at(label + "." + movement_postfix); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down." + label + "." + movement_postfix + ".max_lat_margin", param_by_obstacle_label.max_lat_margin); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down." + label + "." + movement_postfix + ".min_lat_margin", param_by_obstacle_label.min_lat_margin); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down." + label + "." + movement_postfix + ".max_ego_velocity", param_by_obstacle_label.max_ego_velocity); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down." + label + "." + movement_postfix + ".min_ego_velocity", param_by_obstacle_label.min_ego_velocity); } } // common parameters - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down.time_margin_on_target_velocity", time_margin_on_target_velocity); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down.lpf_gain_slow_down_vel", lpf_gain_slow_down_vel); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down.lpf_gain_lat_dist", lpf_gain_lat_dist); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "slow_down.lpf_gain_dist_to_slow_down", lpf_gain_dist_to_slow_down); } @@ -385,15 +387,15 @@ class PlannerInterface if (type_str == "default") { continue; } - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, param_prefix + type_str + ".limit_min_acc", param.limit_min_acc); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, param_prefix + type_str + ".sudden_object_acc_threshold", param.sudden_object_acc_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, param_prefix + type_str + ".sudden_object_dist_threshold", param.sudden_object_dist_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, param_prefix + type_str + ".abandon_to_stop", param.abandon_to_stop); param.sudden_object_acc_threshold = diff --git a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/polygon_utils.hpp b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/polygon_utils.hpp index e9c661d575733..fa6ee17d117be 100644 --- a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/polygon_utils.hpp +++ b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/polygon_utils.hpp @@ -30,8 +30,8 @@ namespace polygon_utils { namespace bg = boost::geometry; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; Polygon2d createOneStepPolygon( const std::vector & last_poses, diff --git a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/type_alias.hpp b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/type_alias.hpp index bc9f6070e159d..03e536ce238cd 100644 --- a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/type_alias.hpp +++ b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/type_alias.hpp @@ -27,6 +27,7 @@ #include "geometry_msgs/msg/transform_stamped.hpp" #include "geometry_msgs/msg/twist_stamped.hpp" #include "nav_msgs/msg/odometry.hpp" +#include "sensor_msgs/msg/point_cloud2.hpp" #include "tier4_debug_msgs/msg/float32_stamped.hpp" #include "tier4_planning_msgs/msg/stop_factor.hpp" #include "tier4_planning_msgs/msg/stop_reason_array.hpp" @@ -35,6 +36,9 @@ #include "tier4_planning_msgs/msg/velocity_limit_clear_command.hpp" #include "visualization_msgs/msg/marker_array.hpp" +#include +#include + using autoware::vehicle_info_utils::VehicleInfo; using autoware_adapi_v1_msgs::msg::PlanningBehavior; using autoware_adapi_v1_msgs::msg::VelocityFactor; @@ -50,6 +54,7 @@ using geometry_msgs::msg::AccelStamped; using geometry_msgs::msg::AccelWithCovarianceStamped; using geometry_msgs::msg::Twist; using nav_msgs::msg::Odometry; +using sensor_msgs::msg::PointCloud2; using tier4_debug_msgs::msg::Float32Stamped; using tier4_planning_msgs::msg::StopFactor; using tier4_planning_msgs::msg::StopReason; @@ -60,7 +65,9 @@ using tier4_planning_msgs::msg::VelocityLimitClearCommand; using visualization_msgs::msg::Marker; using visualization_msgs::msg::MarkerArray; namespace bg = boost::geometry; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; + +using PointCloud = pcl::PointCloud; #endif // AUTOWARE__OBSTACLE_CRUISE_PLANNER__TYPE_ALIAS_HPP_ diff --git a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/utils.hpp b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/utils.hpp index ceb5da13882bd..8af9a63f3a1fa 100644 --- a/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/utils.hpp +++ b/planning/autoware_obstacle_cruise_planner/include/autoware/obstacle_cruise_planner/utils.hpp @@ -62,7 +62,7 @@ size_t getIndexWithLongitudinalOffset( if (longitudinal_offset > 0) { for (size_t i = *start_idx; i < points.size() - 1; ++i) { const double segment_length = - autoware_universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); + autoware::universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); sum_length += segment_length; if (sum_length >= longitudinal_offset) { const double back_length = sum_length - longitudinal_offset; @@ -79,7 +79,7 @@ size_t getIndexWithLongitudinalOffset( for (size_t i = *start_idx; 0 < i; --i) { const double segment_length = - autoware_universe_utils::calcDistance2d(points.at(i - 1), points.at(i)); + autoware::universe_utils::calcDistance2d(points.at(i - 1), points.at(i)); sum_length += segment_length; if (sum_length >= -longitudinal_offset) { const double back_length = sum_length + longitudinal_offset; diff --git a/planning/autoware_obstacle_cruise_planner/package.xml b/planning/autoware_obstacle_cruise_planner/package.xml index 6055327a906e1..79335dc23221b 100644 --- a/planning/autoware_obstacle_cruise_planner/package.xml +++ b/planning/autoware_obstacle_cruise_planner/package.xml @@ -18,6 +18,7 @@ autoware_cmake autoware_adapi_v1_msgs + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_planning_msgs @@ -26,7 +27,6 @@ autoware_vehicle_info_utils geometry_msgs interpolation - lanelet2_extension nav_msgs object_recognition_utils osqp_interface diff --git a/planning/autoware_obstacle_cruise_planner/src/node.cpp b/planning/autoware_obstacle_cruise_planner/src/node.cpp index 8acdfea013e12..c8f962c3ad711 100644 --- a/planning/autoware_obstacle_cruise_planner/src/node.cpp +++ b/planning/autoware_obstacle_cruise_planner/src/node.cpp @@ -23,8 +23,15 @@ #include "autoware/universe_utils/ros/update_param.hpp" #include "object_recognition_utils/predicted_path_utils.hpp" +#include +#include + #include +#include +#include +#include + #include #include @@ -58,9 +65,9 @@ std::optional calcDistanceToFrontVehicle( const std::vector & traj_points, const size_t ego_idx, const geometry_msgs::msg::Point & obstacle_pos) { - const size_t obstacle_idx = autoware_motion_utils::findNearestIndex(traj_points, obstacle_pos); + const size_t obstacle_idx = autoware::motion_utils::findNearestIndex(traj_points, obstacle_pos); const auto ego_to_obstacle_distance = - autoware_motion_utils::calcSignedArcLength(traj_points, ego_idx, obstacle_idx); + autoware::motion_utils::calcSignedArcLength(traj_points, ego_idx, obstacle_idx); if (ego_to_obstacle_distance < 0.0) return std::nullopt; return ego_to_obstacle_distance; } @@ -83,12 +90,12 @@ double calcDiffAngleAgainstTrajectory( const std::vector & traj_points, const geometry_msgs::msg::Pose & target_pose) { const size_t nearest_idx = - autoware_motion_utils::findNearestIndex(traj_points, target_pose.position); + autoware::motion_utils::findNearestIndex(traj_points, target_pose.position); const double traj_yaw = tf2::getYaw(traj_points.at(nearest_idx).pose.orientation); const double target_yaw = tf2::getYaw(target_pose.orientation); - const double diff_yaw = autoware_universe_utils::normalizeRadian(target_yaw - traj_yaw); + const double diff_yaw = autoware::universe_utils::normalizeRadian(target_yaw - traj_yaw); return diff_yaw; } @@ -96,7 +103,7 @@ std::pair projectObstacleVelocityToTrajectory( const std::vector & traj_points, const Obstacle & obstacle) { const size_t object_idx = - autoware_motion_utils::findNearestIndex(traj_points, obstacle.pose.position); + autoware::motion_utils::findNearestIndex(traj_points, obstacle.pose.position); const double traj_yaw = tf2::getYaw(traj_points.at(object_idx).pose.orientation); const double obstacle_yaw = tf2::getYaw(obstacle.pose.orientation); @@ -132,7 +139,7 @@ TrajectoryPoint getExtendTrajectoryPoint( const double extend_distance, const TrajectoryPoint & goal_point, const bool is_driving_forward) { TrajectoryPoint extend_trajectory_point; - extend_trajectory_point.pose = autoware_universe_utils::calcOffsetPose( + extend_trajectory_point.pose = autoware::universe_utils::calcOffsetPose( goal_point.pose, extend_distance * (is_driving_forward ? 1.0 : -1.0), 0.0, 0.0); extend_trajectory_point.longitudinal_velocity_mps = goal_point.longitudinal_velocity_mps; extend_trajectory_point.lateral_velocity_mps = goal_point.lateral_velocity_mps; @@ -146,7 +153,7 @@ std::vector extendTrajectoryPoints( { auto output_points = input_points; const auto is_driving_forward_opt = - autoware_motion_utils::isDrivingForwardWithTwist(input_points); + autoware::motion_utils::isDrivingForwardWithTwist(input_points); const bool is_driving_forward = is_driving_forward_opt ? *is_driving_forward_opt : true; if (extend_distance < std::numeric_limits::epsilon()) { @@ -189,12 +196,21 @@ std::vector getTargetObjectType(rclcpp::Node & node, const std::string & pa std::vector resampleTrajectoryPoints( const std::vector & traj_points, const double interval) { - const auto traj = autoware_motion_utils::convertToTrajectory(traj_points); - const auto resampled_traj = autoware_motion_utils::resampleTrajectory(traj, interval); - return autoware_motion_utils::convertToTrajectoryPointArray(resampled_traj); + const auto traj = autoware::motion_utils::convertToTrajectory(traj_points); + const auto resampled_traj = autoware::motion_utils::resampleTrajectory(traj, interval); + return autoware::motion_utils::convertToTrajectoryPointArray(resampled_traj); +} + +geometry_msgs::msg::Point toGeomPoint(const pcl::PointXYZ & point) +{ + geometry_msgs::msg::Point geom_point; + geom_point.x = point.x; + geom_point.y = point.y; + geom_point.z = point.z; + return geom_point; } -geometry_msgs::msg::Point toGeomPoint(const autoware_universe_utils::Point2d & point) +geometry_msgs::msg::Point toGeomPoint(const autoware::universe_utils::Point2d & point) { geometry_msgs::msg::Point geom_point; geom_point.x = point.x(); @@ -216,6 +232,12 @@ bool isLowerConsideringHysteresis( } return false; } + +template +void concatenate(std::vector & first, const std::vector & last) +{ + first.insert(first.end(), last.begin(), last.end()); +} } // namespace namespace autoware::motion_planning @@ -225,6 +247,20 @@ ObstacleCruisePlannerNode::BehaviorDeterminationParam::BehaviorDeterminationPara { // behavior determination decimate_trajectory_step_length = node.declare_parameter("behavior_determination.decimate_trajectory_step_length"); + pointcloud_search_radius = + node.declare_parameter("behavior_determination.pointcloud_search_radius"); + pointcloud_voxel_grid_x = + node.declare_parameter("behavior_determination.pointcloud_voxel_grid_x"); + pointcloud_voxel_grid_y = + node.declare_parameter("behavior_determination.pointcloud_voxel_grid_y"); + pointcloud_voxel_grid_z = + node.declare_parameter("behavior_determination.pointcloud_voxel_grid_z"); + pointcloud_cluster_tolerance = + node.declare_parameter("behavior_determination.pointcloud_cluster_tolerance"); + pointcloud_min_cluster_size = + node.declare_parameter("behavior_determination.pointcloud_min_cluster_size"); + pointcloud_max_cluster_size = + node.declare_parameter("behavior_determination.pointcloud_max_cluster_size"); obstacle_velocity_threshold_from_cruise_to_stop = node.declare_parameter( "behavior_determination.obstacle_velocity_threshold_from_cruise_to_stop"); obstacle_velocity_threshold_from_stop_to_cruise = node.declare_parameter( @@ -281,75 +317,90 @@ void ObstacleCruisePlannerNode::BehaviorDeterminationParam::onParam( const std::vector & parameters) { // behavior determination - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.decimate_trajectory_step_length", decimate_trajectory_step_length); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( + parameters, "behavior_determination.pointcloud_search_radius", pointcloud_search_radius); + autoware::universe_utils::updateParam( + parameters, "behavior_determination.pointcloud_voxel_grid_x", pointcloud_voxel_grid_x); + autoware::universe_utils::updateParam( + parameters, "behavior_determination.pointcloud_voxel_grid_y", pointcloud_voxel_grid_y); + autoware::universe_utils::updateParam( + parameters, "behavior_determination.pointcloud_voxel_grid_z", pointcloud_voxel_grid_z); + autoware::universe_utils::updateParam( + parameters, "behavior_determination.pointcloud_cluster_tolerance", + pointcloud_cluster_tolerance); + autoware::universe_utils::updateParam( + parameters, "behavior_determination.pointcloud_min_cluster_size", pointcloud_min_cluster_size); + autoware::universe_utils::updateParam( + parameters, "behavior_determination.pointcloud_max_cluster_size", pointcloud_max_cluster_size); + autoware::universe_utils::updateParam( parameters, "behavior_determination.crossing_obstacle.obstacle_velocity_threshold", crossing_obstacle_velocity_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.crossing_obstacle.obstacle_traj_angle_threshold", crossing_obstacle_traj_angle_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.stop.crossing_obstacle.collision_time_margin", collision_time_margin); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.outside_obstacle.obstacle_velocity_threshold", outside_obstacle_min_velocity_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.outside_obstacle.ego_obstacle_overlap_time_threshold", ego_obstacle_overlap_time_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.outside_obstacle.max_prediction_time_for_collision_check", max_prediction_time_for_collision_check); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.stop_obstacle_hold_time_threshold", stop_obstacle_hold_time_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.prediction_resampling_time_interval", prediction_resampling_time_interval); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.prediction_resampling_time_horizon", prediction_resampling_time_horizon); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.stop.max_lat_margin", max_lat_margin_for_stop); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.stop.max_lat_margin_against_unknown", max_lat_margin_for_stop_against_unknown); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.max_lat_margin", max_lat_margin_for_cruise); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.yield.enable_yield", enable_yield); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.yield.lat_distance_threshold", yield_lat_distance_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.yield.max_lat_dist_between_obstacles", max_lat_dist_between_obstacles); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.yield.stopped_obstacle_velocity_threshold", stopped_obstacle_velocity_threshold); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.cruise.yield.max_obstacles_collision_time", max_obstacles_collision_time); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.slow_down.max_lat_margin", max_lat_margin_for_slow_down); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.slow_down.lat_hysteresis_margin", lat_hysteresis_margin_for_slow_down); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.slow_down.successive_num_to_entry_slow_down_condition", successive_num_to_entry_slow_down_condition); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.slow_down.successive_num_to_exit_slow_down_condition", successive_num_to_exit_slow_down_condition); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.consider_current_pose.enable_to_consider_current_pose", enable_to_consider_current_pose); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "behavior_determination.consider_current_pose.time_to_convergence", time_to_convergence); } @@ -387,6 +438,10 @@ ObstacleCruisePlannerNode::ObstacleCruisePlannerNode(const rclcpp::NodeOptions & debug_slow_down_planning_info_pub_ = create_publisher("~/debug/slow_down_planning_info", 1); + // tf listener + tf_buffer_ = std::make_unique(get_clock()); + tf_listener_ = std::make_shared(*tf_buffer_); + const auto longitudinal_info = LongitudinalInfo(*this); ego_nearest_param_ = EgoNearestParam(*this); @@ -395,6 +450,11 @@ ObstacleCruisePlannerNode::ObstacleCruisePlannerNode(const rclcpp::NodeOptions & enable_calculation_time_info_ = declare_parameter("common.enable_calculation_time_info"); enable_slow_down_planning_ = declare_parameter("common.enable_slow_down_planning"); + use_pointcloud_for_stop_ = declare_parameter("common.stop_obstacle_type.pointcloud"); + use_pointcloud_for_slow_down_ = + declare_parameter("common.slow_down_obstacle_type.pointcloud"); + use_pointcloud_ = use_pointcloud_for_stop_ || use_pointcloud_for_slow_down_; + behavior_determination_param_ = BehaviorDeterminationParam(*this); { // planning algorithm @@ -409,7 +469,7 @@ ObstacleCruisePlannerNode::ObstacleCruisePlannerNode(const rclcpp::NodeOptions & planner_ptr_ = std::make_unique( *this, longitudinal_info, vehicle_info_, ego_nearest_param_, debug_data_ptr_); } else { - std::logic_error("Designated algorithm is not supported."); + throw std::logic_error("Designated algorithm is not supported."); } min_behavior_stop_margin_ = declare_parameter("common.min_behavior_stop_margin"); @@ -422,7 +482,7 @@ ObstacleCruisePlannerNode::ObstacleCruisePlannerNode(const rclcpp::NodeOptions & suppress_sudden_obstacle_stop_ = declare_parameter("common.suppress_sudden_obstacle_stop"); planner_ptr_->setParam( - enable_debug_info_, enable_calculation_time_info_, min_behavior_stop_margin_, + enable_debug_info_, enable_calculation_time_info_, use_pointcloud_, min_behavior_stop_margin_, enable_approaching_on_curve_, additional_safe_distance_margin_on_curve_, min_safe_distance_margin_on_curve_, suppress_sudden_obstacle_stop_); } @@ -440,9 +500,9 @@ ObstacleCruisePlannerNode::ObstacleCruisePlannerNode(const rclcpp::NodeOptions & set_param_res_ = this->add_on_set_parameters_callback( std::bind(&ObstacleCruisePlannerNode::onParam, this, std::placeholders::_1)); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } ObstacleCruisePlannerNode::PlanningAlgorithm ObstacleCruisePlannerNode::getPlanningAlgorithmType( @@ -461,26 +521,26 @@ rcl_interfaces::msg::SetParametersResult ObstacleCruisePlannerNode::onParam( { planner_ptr_->onParam(parameters); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.enable_debug_info", enable_debug_info_); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.enable_calculation_time_info", enable_calculation_time_info_); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.stop_on_curve.enable_approaching", enable_approaching_on_curve_); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.stop_on_curve.additional_safe_distance_margin", additional_safe_distance_margin_on_curve_); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.stop_on_curve.min_safe_distance_margin", min_safe_distance_margin_on_curve_); planner_ptr_->setParam( - enable_debug_info_, enable_calculation_time_info_, min_behavior_stop_margin_, + enable_debug_info_, enable_calculation_time_info_, use_pointcloud_, min_behavior_stop_margin_, enable_approaching_on_curve_, additional_safe_distance_margin_on_curve_, min_safe_distance_margin_on_curve_, suppress_sudden_obstacle_stop_); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "common.enable_slow_down_planning", enable_slow_down_planning_); behavior_determination_param_.onParam(parameters); @@ -495,16 +555,16 @@ void ObstacleCruisePlannerNode::onTrajectory(const Trajectory::ConstSharedPtr ms { const auto ego_odom_ptr = ego_odom_sub_.takeData(); const auto objects_ptr = objects_sub_.takeData(); + const auto pointcloud_ptr = use_pointcloud_ ? pointcloud_sub_.takeData() : nullptr; const auto acc_ptr = acc_sub_.takeData(); - if (!ego_odom_ptr || !objects_ptr || !acc_ptr) { + if (!ego_odom_ptr || (!objects_ptr && (!use_pointcloud_ || !pointcloud_ptr)) || !acc_ptr) { return; } const auto & ego_odom = *ego_odom_ptr; - const auto & objects = *objects_ptr; const auto & acc = *acc_ptr; - const auto traj_points = autoware_motion_utils::convertToTrajectoryPointArray(*msg); + const auto traj_points = autoware::motion_utils::convertToTrajectoryPointArray(*msg); // check if subscribed variables are ready if (traj_points.empty()) { return; @@ -513,18 +573,42 @@ void ObstacleCruisePlannerNode::onTrajectory(const Trajectory::ConstSharedPtr ms stop_watch_.tic(__func__); *debug_data_ptr_ = DebugData(); - const auto is_driving_forward = autoware_motion_utils::isDrivingForwardWithTwist(traj_points); + const auto is_driving_forward = autoware::motion_utils::isDrivingForwardWithTwist(traj_points); is_driving_forward_ = is_driving_forward ? is_driving_forward.value() : is_driving_forward_; - // 1. Convert predicted objects to obstacles which are - // (1) with a proper label - // (2) in front of ego - // (3) not too far from trajectory - const auto target_obstacles = convertToObstacles(ego_odom, objects, traj_points); + const auto & [stop_obstacles, cruise_obstacles, slow_down_obstacles] = [&]() { + std::vector stop_obstacles; + std::vector cruise_obstacles; + std::vector slow_down_obstacles; + if (objects_ptr) { + // 1. Convert predicted objects to obstacles which are + // (1) with a proper label + // (2) in front of ego + // (3) not too far from trajectory + const auto target_obstacles = convertToObstacles(ego_odom, *objects_ptr, traj_points); + + // 2. Determine ego's behavior against each obstacle from stop, cruise and slow down. + const auto & [stop_object_obstacles, cruise_object_obstacles, slow_down_object_obstacles] = + determineEgoBehaviorAgainstPredictedObjectObstacles( + ego_odom, *objects_ptr, traj_points, target_obstacles); + + concatenate(stop_obstacles, stop_object_obstacles); + concatenate(cruise_obstacles, cruise_object_obstacles); + concatenate(slow_down_obstacles, slow_down_object_obstacles); + } + if (pointcloud_ptr && !pointcloud_ptr->data.empty()) { + const auto target_obstacles = + convertToObstacles(ego_odom, *pointcloud_ptr, traj_points, msg->header); + + const auto & [stop_pc_obstacles, cruise_pc_obstacles, slow_down_pc_obstacles] = + determineEgoBehaviorAgainstPointCloudObstacles(ego_odom, traj_points, target_obstacles); - // 2. Determine ego's behavior against each obstacle from stop, cruise and slow down. - const auto & [stop_obstacles, cruise_obstacles, slow_down_obstacles] = - determineEgoBehaviorAgainstObstacles(ego_odom, objects, traj_points, target_obstacles); + concatenate(stop_obstacles, stop_pc_obstacles); + concatenate(cruise_obstacles, cruise_pc_obstacles); + concatenate(slow_down_obstacles, slow_down_pc_obstacles); + } + return std::make_tuple(stop_obstacles, cruise_obstacles, slow_down_obstacles); + }(); // 3. Create data for planning const auto planner_data = createPlannerData(ego_odom, acc, traj_points); @@ -546,7 +630,7 @@ void ObstacleCruisePlannerNode::onTrajectory(const Trajectory::ConstSharedPtr ms // 7. Publish trajectory const auto output_traj = - autoware_motion_utils::convertToTrajectory(slow_down_traj_points, msg->header); + autoware::motion_utils::convertToTrajectory(slow_down_traj_points, msg->header); trajectory_pub_->publish(output_traj); // 8. Publish debug data @@ -573,10 +657,10 @@ std::vector ObstacleCruisePlannerNode::createOneStepPolygons( const double vehicle_width = vehicle_info.vehicle_width_m; const size_t nearest_idx = - autoware_motion_utils::findNearestSegmentIndex(traj_points, current_ego_pose.position); + autoware::motion_utils::findNearestSegmentIndex(traj_points, current_ego_pose.position); const auto nearest_pose = traj_points.at(nearest_idx).pose; const auto current_ego_pose_error = - autoware_universe_utils::inverseTransformPose(current_ego_pose, nearest_pose); + autoware::universe_utils::inverseTransformPose(current_ego_pose, nearest_pose); const double current_ego_lat_error = current_ego_pose_error.position.y; const double current_ego_yaw_error = tf2::getYaw(current_ego_pose_error.orientation); double time_elapsed{0.0}; @@ -592,11 +676,11 @@ std::vector ObstacleCruisePlannerNode::createOneStepPolygons( const double rem_ratio = (p.time_to_convergence - time_elapsed) / p.time_to_convergence; geometry_msgs::msg::Pose indexed_pose_err; indexed_pose_err.set__orientation( - autoware_universe_utils::createQuaternionFromYaw(current_ego_yaw_error * rem_ratio)); + autoware::universe_utils::createQuaternionFromYaw(current_ego_yaw_error * rem_ratio)); indexed_pose_err.set__position( - autoware_universe_utils::createPoint(0.0, current_ego_lat_error * rem_ratio, 0.0)); + autoware::universe_utils::createPoint(0.0, current_ego_lat_error * rem_ratio, 0.0)); current_poses.push_back( - autoware_universe_utils::transformPose(indexed_pose_err, traj_points.at(i).pose)); + autoware::universe_utils::transformPose(indexed_pose_err, traj_points.at(i).pose)); if (traj_points.at(i).longitudinal_velocity_mps != 0.0) { time_elapsed += p.decimate_trajectory_step_length / std::abs(traj_points.at(i).longitudinal_velocity_mps); @@ -610,23 +694,23 @@ std::vector ObstacleCruisePlannerNode::createOneStepPolygons( if (i == 0 && traj_points.at(i).longitudinal_velocity_mps > 1e-3) { boost::geometry::append( idx_poly, - autoware_universe_utils::toFootprint(pose, front_length, rear_length, vehicle_width) + autoware::universe_utils::toFootprint(pose, front_length, rear_length, vehicle_width) .outer()); boost::geometry::append( - idx_poly, autoware_universe_utils::fromMsg( - autoware_universe_utils::calcOffsetPose( + idx_poly, autoware::universe_utils::fromMsg( + autoware::universe_utils::calcOffsetPose( pose, front_length, vehicle_width * 0.5 + lat_margin, 0.0) .position) .to_2d()); boost::geometry::append( - idx_poly, autoware_universe_utils::fromMsg( - autoware_universe_utils::calcOffsetPose( + idx_poly, autoware::universe_utils::fromMsg( + autoware::universe_utils::calcOffsetPose( pose, front_length, -vehicle_width * 0.5 - lat_margin, 0.0) .position) .to_2d()); } else { boost::geometry::append( - idx_poly, autoware_universe_utils::toFootprint( + idx_poly, autoware::universe_utils::toFootprint( pose, front_length, rear_length, vehicle_width + lat_margin * 2.0) .outer()); } @@ -655,7 +739,7 @@ std::vector ObstacleCruisePlannerNode::convertToObstacles( std::vector target_obstacles; for (const auto & predicted_object : objects.objects) { const auto & object_id = - autoware_universe_utils::toHexString(predicted_object.object_id).substr(0, 4); + autoware::universe_utils::toHexString(predicted_object.object_id).substr(0, 4); const auto & current_obstacle_pose = obstacle_cruise_utils::getCurrentObjectPose(predicted_object, obj_stamp, now(), true); @@ -683,7 +767,7 @@ std::vector ObstacleCruisePlannerNode::convertToObstacles( // 3. Check if rough lateral distance is smaller than the threshold const double lat_dist_from_obstacle_to_traj = - autoware_motion_utils::calcLateralOffset(traj_points, current_obstacle_pose.pose.position); + autoware::motion_utils::calcLateralOffset(traj_points, current_obstacle_pose.pose.position); const double min_lat_dist_to_traj_poly = [&]() { const double obstacle_max_length = calcObstacleMaxLength(predicted_object.shape); @@ -715,6 +799,124 @@ std::vector ObstacleCruisePlannerNode::convertToObstacles( return target_obstacles; } +std::vector ObstacleCruisePlannerNode::convertToObstacles( + const Odometry & odometry, const PointCloud2 & pointcloud, + const std::vector & traj_points, const std_msgs::msg::Header & traj_header) const +{ + stop_watch_.tic(__func__); + + const auto & p = behavior_determination_param_; + + std::vector target_obstacles; + + std::optional transform_stamped{}; + try { + transform_stamped = tf_buffer_->lookupTransform( + traj_header.frame_id, pointcloud.header.frame_id, pointcloud.header.stamp, + rclcpp::Duration::from_seconds(0.5)); + } catch (tf2::TransformException & ex) { + RCLCPP_ERROR_STREAM( + get_logger(), "Failed to look up transform from " << traj_header.frame_id << " to " + << pointcloud.header.frame_id); + transform_stamped = std::nullopt; + } + + if (transform_stamped) { + // 1. transform pointcloud + PointCloud::Ptr pointcloud_ptr(new PointCloud); + pcl::fromROSMsg(pointcloud, *pointcloud_ptr); + const Eigen::Matrix4f transform = + tf2::transformToEigen(transform_stamped.value().transform).matrix().cast(); + pcl::transformPointCloud(*pointcloud_ptr, *pointcloud_ptr, transform); + + // 2. downsample & cluster pointcloud + PointCloud::Ptr filtered_points_ptr(new PointCloud); + pcl::VoxelGrid filter; + filter.setInputCloud(pointcloud_ptr); + filter.setLeafSize( + p.pointcloud_voxel_grid_x, p.pointcloud_voxel_grid_y, p.pointcloud_voxel_grid_z); + filter.filter(*filtered_points_ptr); + + pcl::search::KdTree::Ptr tree(new pcl::search::KdTree); + tree->setInputCloud(filtered_points_ptr); + std::vector clusters; + pcl::EuclideanClusterExtraction ec; + ec.setClusterTolerance(p.pointcloud_cluster_tolerance); + ec.setMinClusterSize(p.pointcloud_min_cluster_size); + ec.setMaxClusterSize(p.pointcloud_max_cluster_size); + ec.setSearchMethod(tree); + ec.setInputCloud(filtered_points_ptr); + ec.extract(clusters); + + const auto max_lat_margin = + std::max(p.max_lat_margin_for_stop_against_unknown, p.max_lat_margin_for_slow_down); + const size_t ego_idx = ego_nearest_param_.findIndex(traj_points, odometry.pose.pose); + + // 3. convert clusters to obstacles + for (const auto & cluster_indices : clusters) { + double ego_to_stop_collision_distance = std::numeric_limits::max(); + double ego_to_slow_down_front_collision_distance = std::numeric_limits::max(); + double ego_to_slow_down_back_collision_distance = std::numeric_limits::min(); + double lat_dist_from_obstacle_to_traj = std::numeric_limits::max(); + double ego_to_obstacle_distance = std::numeric_limits::max(); + std::optional stop_collision_point = std::nullopt; + std::optional slow_down_front_collision_point = std::nullopt; + std::optional slow_down_back_collision_point = std::nullopt; + + for (const auto & index : cluster_indices.indices) { + const auto obstacle_point = toGeomPoint(filtered_points_ptr->points[index]); + const auto current_lat_dist_from_obstacle_to_traj = + autoware::motion_utils::calcLateralOffset(traj_points, obstacle_point); + const auto min_lat_dist_to_traj_poly = + std::abs(current_lat_dist_from_obstacle_to_traj) - vehicle_info_.vehicle_width_m; + + if (min_lat_dist_to_traj_poly < max_lat_margin) { + const auto current_ego_to_obstacle_distance = + calcDistanceToFrontVehicle(traj_points, ego_idx, obstacle_point); + if (current_ego_to_obstacle_distance) { + ego_to_obstacle_distance = + std::min(ego_to_obstacle_distance, *current_ego_to_obstacle_distance); + } else { + continue; + } + + lat_dist_from_obstacle_to_traj = + std::min(lat_dist_from_obstacle_to_traj, current_lat_dist_from_obstacle_to_traj); + + if (min_lat_dist_to_traj_poly < p.max_lat_margin_for_stop_against_unknown) { + if (*current_ego_to_obstacle_distance < ego_to_stop_collision_distance) { + stop_collision_point = obstacle_point; + ego_to_stop_collision_distance = *current_ego_to_obstacle_distance; + } + } else if (min_lat_dist_to_traj_poly < p.max_lat_margin_for_slow_down) { + if (*current_ego_to_obstacle_distance < ego_to_slow_down_front_collision_distance) { + slow_down_front_collision_point = obstacle_point; + ego_to_slow_down_front_collision_distance = *current_ego_to_obstacle_distance; + } else if ( + *current_ego_to_obstacle_distance > ego_to_slow_down_back_collision_distance) { + slow_down_back_collision_point = obstacle_point; + ego_to_slow_down_back_collision_distance = *current_ego_to_obstacle_distance; + } + } + } + } + + if (stop_collision_point || slow_down_front_collision_point) { + target_obstacles.emplace_back( + pointcloud.header.stamp, stop_collision_point, slow_down_front_collision_point, + slow_down_back_collision_point, ego_to_obstacle_distance, lat_dist_from_obstacle_to_traj); + } + } + } + + const double calculation_time = stop_watch_.toc(__func__); + RCLCPP_INFO_EXPRESSION( + rclcpp::get_logger("ObstacleCruisePlanner"), enable_debug_info_, " %s := %f [ms]", __func__, + calculation_time); + + return target_obstacles; +} + bool ObstacleCruisePlannerNode::isStopObstacle(const uint8_t label) const { const auto & types = stop_obstacle_types_; @@ -749,10 +951,10 @@ bool ObstacleCruisePlannerNode::isFrontCollideObstacle( const size_t first_collision_idx) const { const auto obstacle_idx = - autoware_motion_utils::findNearestIndex(traj_points, obstacle.pose.position); + autoware::motion_utils::findNearestIndex(traj_points, obstacle.pose.position); const double obstacle_to_col_points_distance = - autoware_motion_utils::calcSignedArcLength(traj_points, obstacle_idx, first_collision_idx); + autoware::motion_utils::calcSignedArcLength(traj_points, obstacle_idx, first_collision_idx); const double obstacle_max_length = calcObstacleMaxLength(obstacle.shape); // If the obstacle is far in front of the collision point, the obstacle is behind the ego. @@ -760,7 +962,7 @@ bool ObstacleCruisePlannerNode::isFrontCollideObstacle( } std::tuple, std::vector, std::vector> -ObstacleCruisePlannerNode::determineEgoBehaviorAgainstObstacles( +ObstacleCruisePlannerNode::determineEgoBehaviorAgainstPredictedObjectObstacles( const Odometry & odometry, const PredictedObjects & objects, const std::vector & traj_points, const std::vector & obstacles) { @@ -778,7 +980,7 @@ ObstacleCruisePlannerNode::determineEgoBehaviorAgainstObstacles( std::vector slow_down_obstacles; slow_down_condition_counter_.resetCurrentUuids(); for (const auto & obstacle : obstacles) { - const auto obstacle_poly = obstacle.toPolygon(); + const auto obstacle_poly = autoware::universe_utils::toPolygon2d(obstacle.pose, obstacle.shape); // Calculate distance between trajectory and obstacle first double precise_lat_dist = std::numeric_limits::max(); @@ -794,14 +996,14 @@ ObstacleCruisePlannerNode::determineEgoBehaviorAgainstObstacles( cruise_obstacles.push_back(*cruise_obstacle); continue; } - const auto stop_obstacle = createStopObstacle( + const auto stop_obstacle = createStopObstacleForPredictedObject( odometry, decimated_traj_points, decimated_traj_polys, obstacle, precise_lat_dist); if (stop_obstacle) { stop_obstacles.push_back(*stop_obstacle); continue; } - const auto slow_down_obstacle = - createSlowDownObstacle(odometry, decimated_traj_points, obstacle, precise_lat_dist); + const auto slow_down_obstacle = createSlowDownObstacleForPredictedObject( + odometry, decimated_traj_points, obstacle, precise_lat_dist); if (slow_down_obstacle) { slow_down_obstacles.push_back(*slow_down_obstacle); continue; @@ -842,6 +1044,47 @@ ObstacleCruisePlannerNode::determineEgoBehaviorAgainstObstacles( return {stop_obstacles, cruise_obstacles, slow_down_obstacles}; } +std::tuple, std::vector, std::vector> +ObstacleCruisePlannerNode::determineEgoBehaviorAgainstPointCloudObstacles( + const Odometry & odometry, const std::vector & traj_points, + const std::vector & obstacles) +{ + stop_watch_.tic(__func__); + + // calculated decimated trajectory points and trajectory polygon + const auto decimated_traj_points = decimateTrajectoryPoints(odometry, traj_points); + const auto decimated_traj_polys = + createOneStepPolygons(decimated_traj_points, vehicle_info_, odometry.pose.pose); + debug_data_ptr_->detection_polygons = decimated_traj_polys; + + // determine ego's behavior from stop and slow down + std::vector stop_obstacles; + std::vector slow_down_obstacles; + for (const auto & obstacle : obstacles) { + const auto & precise_lat_dist = obstacle.lat_dist_from_obstacle_to_traj; + + // Filter obstacles for stop and slow down + const auto stop_obstacle = + createStopObstacleForPointCloud(decimated_traj_points, obstacle, precise_lat_dist); + if (stop_obstacle) { + stop_obstacles.push_back(*stop_obstacle); + continue; + } + const auto slow_down_obstacle = createSlowDownObstacleForPointCloud(obstacle, precise_lat_dist); + if (slow_down_obstacle) { + slow_down_obstacles.push_back(*slow_down_obstacle); + continue; + } + } + + const double calculation_time = stop_watch_.toc(__func__); + RCLCPP_INFO_EXPRESSION( + rclcpp::get_logger("ObstacleCruisePlanner"), enable_calculation_time_info_, " %s := %f [ms]", + __func__, calculation_time); + + return {stop_obstacles, {}, slow_down_obstacles}; +} + std::vector ObstacleCruisePlannerNode::decimateTrajectoryPoints( const Odometry & odometry, const std::vector & traj_points) const { @@ -944,7 +1187,7 @@ std::optional ObstacleCruisePlannerNode::createYieldCruiseObstac } const auto collision_points = [&]() -> std::optional> { - const auto obstacle_idx = autoware_motion_utils::findNearestIndex(traj_points, obstacle.pose); + const auto obstacle_idx = autoware::motion_utils::findNearestIndex(traj_points, obstacle.pose); if (!obstacle_idx) return std::nullopt; const auto collision_traj_point = traj_points.at(obstacle_idx.value()); const auto object_time = now() + traj_points.at(obstacle_idx.value()).time_from_start; @@ -1173,7 +1416,7 @@ ObstacleCruisePlannerNode::createCollisionPointsForOutsideCruiseObstacle( return collision_points; } -std::optional ObstacleCruisePlannerNode::createStopObstacle( +std::optional ObstacleCruisePlannerNode::createStopObstacleForPredictedObject( const Odometry & odometry, const std::vector & traj_points, const std::vector & traj_polys, const Obstacle & obstacle, const double precise_lat_dist) const @@ -1209,8 +1452,8 @@ std::optional ObstacleCruisePlannerNode::createStopObstacle( // NOTE: Dynamic obstacles for stop are crossing ego's trajectory with high speed, // and the collision between ego and obstacles are within the margin threshold. const bool is_obstacle_crossing = isObstacleCrossing(traj_points, obstacle); - const double has_high_speed = p.crossing_obstacle_velocity_threshold < - std::hypot(obstacle.twist.linear.x, obstacle.twist.linear.y); + const bool has_high_speed = p.crossing_obstacle_velocity_threshold < + std::hypot(obstacle.twist.linear.x, obstacle.twist.linear.y); if (is_obstacle_crossing && has_high_speed) { // Get highest confidence predicted path const auto resampled_predicted_path = resampleHighestConfidencePredictedPath( @@ -1264,7 +1507,45 @@ std::optional ObstacleCruisePlannerNode::createStopObstacle( normal_vel, collision_point->first, collision_point->second}; } -std::optional ObstacleCruisePlannerNode::createSlowDownObstacle( +std::optional ObstacleCruisePlannerNode::createStopObstacleForPointCloud( + const std::vector & traj_points, const Obstacle & obstacle, + const double precise_lat_dist) const +{ + const auto & p = behavior_determination_param_; + + if (!use_pointcloud_for_stop_) { + return std::nullopt; + } + + if (!obstacle.stop_collision_point) { + return std::nullopt; + } + + const double max_lat_margin_for_stop = + (obstacle.classification.label == ObjectClassification::UNKNOWN) + ? p.max_lat_margin_for_stop_against_unknown + : p.max_lat_margin_for_stop; + + if (precise_lat_dist > std::max(max_lat_margin_for_stop, 1e-3)) { + return std::nullopt; + } + + const auto dist_to_collide_on_traj = + autoware::motion_utils::calcSignedArcLength(traj_points, 0, *obstacle.stop_collision_point); + + return StopObstacle{ + obstacle.uuid, + obstacle.stamp, + obstacle.classification, + obstacle.pose, + obstacle.shape, + {}, + {}, + *obstacle.stop_collision_point, + dist_to_collide_on_traj}; +} + +std::optional ObstacleCruisePlannerNode::createSlowDownObstacleForPredictedObject( const Odometry & odometry, const std::vector & traj_points, const Obstacle & obstacle, const double precise_lat_dist) { @@ -1315,7 +1596,7 @@ std::optional ObstacleCruisePlannerNode::createSlowDownObstacl return std::nullopt; } - const auto obstacle_poly = obstacle.toPolygon(); + const auto obstacle_poly = autoware::universe_utils::toPolygon2d(obstacle.pose, obstacle.shape); // calculate collision points with trajectory with lateral stop margin // NOTE: For additional margin, hysteresis is not divided by two. @@ -1358,7 +1639,7 @@ std::optional ObstacleCruisePlannerNode::createSlowDownObstacl for (const auto & collision_poly : front_collision_polygons) { for (const auto & collision_point : collision_poly.outer()) { const auto collision_geom_point = toGeomPoint(collision_point); - const double dist = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double dist = autoware::motion_utils::calcLongitudinalOffsetToSegment( traj_points, front_seg_idx, collision_geom_point); if (dist < front_min_dist) { front_min_dist = dist; @@ -1373,7 +1654,7 @@ std::optional ObstacleCruisePlannerNode::createSlowDownObstacl for (const auto & collision_poly : back_collision_polygons) { for (const auto & collision_point : collision_poly.outer()) { const auto collision_geom_point = toGeomPoint(collision_point); - const double dist = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double dist = autoware::motion_utils::calcLongitudinalOffsetToSegment( traj_points, back_seg_idx, collision_geom_point); if (back_max_dist < dist) { back_max_dist = dist; @@ -1388,6 +1669,26 @@ std::optional ObstacleCruisePlannerNode::createSlowDownObstacl precise_lat_dist, front_collision_point, back_collision_point}; } +std::optional ObstacleCruisePlannerNode::createSlowDownObstacleForPointCloud( + const Obstacle & obstacle, const double precise_lat_dist) +{ + if (!enable_slow_down_planning_ || !use_pointcloud_for_slow_down_) { + return std::nullopt; + } + + if (!obstacle.slow_down_front_collision_point) { + return std::nullopt; + } + + auto front_collision_point = *obstacle.slow_down_front_collision_point; + auto back_collision_point = + obstacle.slow_down_back_collision_point.value_or(front_collision_point); + + return SlowDownObstacle{ + obstacle.uuid, obstacle.stamp, obstacle.classification, obstacle.pose, {}, {}, + precise_lat_dist, front_collision_point, back_collision_point}; +} + void ObstacleCruisePlannerNode::checkConsistency( const rclcpp::Time & current_time, const PredictedObjects & predicted_objects, std::vector & stop_obstacles) @@ -1396,7 +1697,7 @@ void ObstacleCruisePlannerNode::checkConsistency( const auto predicted_object_itr = std::find_if( predicted_objects.objects.begin(), predicted_objects.objects.end(), [&prev_closest_stop_obstacle](const PredictedObject & po) { - return autoware_universe_utils::toHexString(po.object_id) == + return autoware::universe_utils::toHexString(po.object_id) == prev_closest_stop_obstacle.uuid; }); // If previous closest obstacle disappear from the perception result, do nothing anymore. @@ -1456,7 +1757,7 @@ double ObstacleCruisePlannerNode::calcCollisionTimeMargin( ? std::abs(vehicle_info_.max_longitudinal_offset_m) : std::abs(vehicle_info_.min_longitudinal_offset_m); const double dist_from_ego_to_obstacle = - std::abs(autoware_motion_utils::calcSignedArcLength( + std::abs(autoware::motion_utils::calcSignedArcLength( traj_points, ego_pose.position, collision_points.front().point)) - abs_ego_offset; return dist_from_ego_to_obstacle / std::max(1e-6, std::abs(ego_vel)); @@ -1531,10 +1832,10 @@ void ObstacleCruisePlannerNode::publishDebugMarker() const } } for (size_t i = 0; i < stop_collision_points.size(); ++i) { - auto collision_point_marker = autoware_universe_utils::createDefaultMarker( + auto collision_point_marker = autoware::universe_utils::createDefaultMarker( "map", now(), "cruise_collision_points", i, Marker::SPHERE, - autoware_universe_utils::createMarkerScale(0.25, 0.25, 0.25), - autoware_universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); + autoware::universe_utils::createMarkerScale(0.25, 0.25, 0.25), + autoware::universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); collision_point_marker.pose.position = stop_collision_points.at(i); debug_marker.markers.push_back(collision_point_marker); } @@ -1547,10 +1848,10 @@ void ObstacleCruisePlannerNode::publishDebugMarker() const debug_marker.markers.push_back(obstacle_marker); // collision point - auto collision_point_marker = autoware_universe_utils::createDefaultMarker( + auto collision_point_marker = autoware::universe_utils::createDefaultMarker( "map", now(), "stop_collision_points", 0, Marker::SPHERE, - autoware_universe_utils::createMarkerScale(0.25, 0.25, 0.25), - autoware_universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); + autoware::universe_utils::createMarkerScale(0.25, 0.25, 0.25), + autoware::universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); collision_point_marker.pose.position = debug_data_ptr_->obstacles_to_stop.at(i).collision_point; debug_marker.markers.push_back(collision_point_marker); } @@ -1564,16 +1865,16 @@ void ObstacleCruisePlannerNode::publishDebugMarker() const debug_marker.markers.push_back(obstacle_marker); // collision points - auto front_collision_point_marker = autoware_universe_utils::createDefaultMarker( + auto front_collision_point_marker = autoware::universe_utils::createDefaultMarker( "map", now(), "slow_down_collision_points", i * 2 + 0, Marker::SPHERE, - autoware_universe_utils::createMarkerScale(0.25, 0.25, 0.25), - autoware_universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); + autoware::universe_utils::createMarkerScale(0.25, 0.25, 0.25), + autoware::universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); front_collision_point_marker.pose.position = debug_data_ptr_->obstacles_to_slow_down.at(i).front_collision_point; - auto back_collision_point_marker = autoware_universe_utils::createDefaultMarker( + auto back_collision_point_marker = autoware::universe_utils::createDefaultMarker( "map", now(), "slow_down_collision_points", i * 2 + 1, Marker::SPHERE, - autoware_universe_utils::createMarkerScale(0.25, 0.25, 0.25), - autoware_universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); + autoware::universe_utils::createMarkerScale(0.25, 0.25, 0.25), + autoware::universe_utils::createMarkerColor(1.0, 0.0, 0.0, 0.999)); back_collision_point_marker.pose.position = debug_data_ptr_->obstacles_to_slow_down.at(i).back_collision_point; @@ -1590,10 +1891,10 @@ void ObstacleCruisePlannerNode::publishDebugMarker() const } { // footprint polygons - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", now(), "detection_polygons", 0, Marker::LINE_LIST, - autoware_universe_utils::createMarkerScale(0.01, 0.0, 0.0), - autoware_universe_utils::createMarkerColor(0.0, 1.0, 0.0, 0.999)); + autoware::universe_utils::createMarkerScale(0.01, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(0.0, 1.0, 0.0, 0.999)); for (const auto & detection_polygon : debug_data_ptr_->detection_polygons) { for (size_t dp_idx = 0; dp_idx < detection_polygon.outer().size(); ++dp_idx) { @@ -1602,16 +1903,16 @@ void ObstacleCruisePlannerNode::publishDebugMarker() const detection_polygon.outer().at((dp_idx + 1) % detection_polygon.outer().size()); marker.points.push_back( - autoware_universe_utils::createPoint(current_point.x(), current_point.y(), 0.0)); + autoware::universe_utils::createPoint(current_point.x(), current_point.y(), 0.0)); marker.points.push_back( - autoware_universe_utils::createPoint(next_point.x(), next_point.y(), 0.0)); + autoware::universe_utils::createPoint(next_point.x(), next_point.y(), 0.0)); } } debug_marker.markers.push_back(marker); } // slow down debug wall marker - autoware_universe_utils::appendMarkerArray( + autoware::universe_utils::appendMarkerArray( debug_data_ptr_->slow_down_debug_wall_marker, &debug_marker); debug_marker_pub_->publish(debug_marker); diff --git a/planning/autoware_obstacle_cruise_planner/src/optimization_based_planner/optimization_based_planner.cpp b/planning/autoware_obstacle_cruise_planner/src/optimization_based_planner/optimization_based_planner.cpp index b409ed9239f7e..b3a0fc014c410 100644 --- a/planning/autoware_obstacle_cruise_planner/src/optimization_based_planner/optimization_based_planner.cpp +++ b/planning/autoware_obstacle_cruise_planner/src/optimization_based_planner/optimization_based_planner.cpp @@ -174,7 +174,7 @@ std::vector OptimizationBasedPlanner::generateCruiseTrajectory( // Publish Debug trajectories const double traj_front_to_vehicle_offset = - autoware_motion_utils::calcSignedArcLength(stop_traj_points, 0, closest_idx); + autoware::motion_utils::calcSignedArcLength(stop_traj_points, 0, closest_idx); publishDebugTrajectory( planner_data, traj_front_to_vehicle_offset, time_vec, *s_boundaries, optimized_result); @@ -217,7 +217,7 @@ std::vector OptimizationBasedPlanner::generateCruiseTrajectory( } } const auto traj_stop_dist = - autoware_motion_utils::calcDistanceToForwardStopPoint(stop_traj_points, closest_idx); + autoware::motion_utils::calcDistanceToForwardStopPoint(stop_traj_points, closest_idx); if (traj_stop_dist) { closest_stop_dist = std::min(*traj_stop_dist + traj_front_to_vehicle_offset, closest_stop_dist); } @@ -227,7 +227,7 @@ std::vector OptimizationBasedPlanner::generateCruiseTrajectory( std::vector resampled_opt_position; for (size_t i = closest_idx; i < stop_traj_points.size(); ++i) { const double query_s = std::max( - autoware_motion_utils::calcSignedArcLength(stop_traj_points, 0, i), opt_position.front()); + autoware::motion_utils::calcSignedArcLength(stop_traj_points, 0, i), opt_position.front()); if (query_s > opt_position.back()) { break_id = i; break; @@ -253,7 +253,7 @@ std::vector OptimizationBasedPlanner::generateCruiseTrajectory( output.back().longitudinal_velocity_mps = 0.0; // terminal velocity is zero // Insert Closest Stop Point - autoware_motion_utils::insertStopPoint(0, closest_stop_dist, output); + autoware::motion_utils::insertStopPoint(0, closest_stop_dist, output); prev_output_ = output; return output; @@ -309,7 +309,7 @@ std::tuple OptimizationBasedPlanner::calcInitialMotion( TrajectoryPoint prev_output_closest_point; if (smoothed_trajectory_ptr_) { - prev_output_closest_point = autoware_motion_utils::calcInterpolatedPoint( + prev_output_closest_point = autoware::motion_utils::calcInterpolatedPoint( *smoothed_trajectory_ptr_, ego_pose, ego_nearest_param_.dist_threshold, ego_nearest_param_.yaw_threshold); } else { @@ -336,19 +336,24 @@ std::tuple OptimizationBasedPlanner::calcInitialMotion( const double engage_vel_thr = engage_velocity_ * engage_exit_ratio_; if (vehicle_speed < engage_vel_thr) { if (target_vel >= engage_velocity_) { - const auto stop_dist = autoware_motion_utils::calcDistanceToForwardStopPoint( + const auto stop_dist = autoware::motion_utils::calcDistanceToForwardStopPoint( input_traj_points, ego_pose, ego_nearest_param_.dist_threshold, ego_nearest_param_.yaw_threshold); - if ((stop_dist && *stop_dist > stop_dist_to_prohibit_engage_) || !stop_dist) { - initial_vel = engage_velocity_; - initial_acc = engage_acceleration_; + if (!stop_dist.has_value()) { + RCLCPP_DEBUG( + rclcpp::get_logger("ObstacleCruisePlanner::OptimizationBasedPlanner"), + "calcInitialMotion : vehicle speed is low (%.3f), and desired speed is high (%.3f). Use " + "engage speed (%.3f) until vehicle speed reaches engage_vel_thr (%.3f)", + vehicle_speed, target_vel, engage_velocity_, engage_vel_thr); + return std::make_tuple(engage_velocity_, engage_acceleration_); + } else if (stop_dist.value() > stop_dist_to_prohibit_engage_) { RCLCPP_DEBUG( rclcpp::get_logger("ObstacleCruisePlanner::OptimizationBasedPlanner"), "calcInitialMotion : vehicle speed is low (%.3f), and desired speed is high (%.3f). Use " "engage speed (%.3f) until vehicle speed reaches engage_vel_thr (%.3f). stop_dist = %.3f", vehicle_speed, target_vel, engage_velocity_, engage_vel_thr, stop_dist.value()); - return std::make_tuple(initial_vel, initial_acc); - } else if (stop_dist) { + return std::make_tuple(engage_velocity_, engage_acceleration_); + } else { RCLCPP_DEBUG( rclcpp::get_logger("ObstacleCruisePlanner::OptimizationBasedPlanner"), "calcInitialMotion : stop point is close (%.3f[m]). no engage.", stop_dist.value()); @@ -372,7 +377,7 @@ bool OptimizationBasedPlanner::checkHasReachedGoal( const PlannerData & planner_data, const std::vector & stop_traj_points) { // If goal is close and current velocity is low, we don't optimize trajectory - const auto closest_stop_dist = autoware_motion_utils::calcDistanceToForwardStopPoint( + const auto closest_stop_dist = autoware::motion_utils::calcDistanceToForwardStopPoint( stop_traj_points, planner_data.ego_pose, ego_nearest_param_.dist_threshold, ego_nearest_param_.yaw_threshold); if (closest_stop_dist && *closest_stop_dist < 0.5 && planner_data.ego_vel < 0.6) { @@ -428,7 +433,7 @@ std::optional OptimizationBasedPlanner::getSBoundaries( const double rss_dist = calcRSSDistance(planner_data.ego_vel, obj_vel); const auto & safe_distance_margin = longitudinal_info_.safe_distance_margin; - const double ego_obj_length = autoware_motion_utils::calcSignedArcLength( + const double ego_obj_length = autoware::motion_utils::calcSignedArcLength( stop_traj_points, planner_data.ego_pose.position, obj.collision_points.front().point); const double slow_down_point_length = ego_obj_length - (rss_dist + safe_distance_margin); @@ -442,15 +447,15 @@ std::optional OptimizationBasedPlanner::getSBoundaries( if (min_slow_down_idx) { const auto & current_time = planner_data.current_time; - const auto marker_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto marker_pose = autoware::motion_utils::calcLongitudinalOffsetPose( stop_traj_points, planner_data.ego_pose.position, min_slow_down_point_length); if (marker_pose) { MarkerArray wall_msg; - const auto markers = autoware_motion_utils::createSlowDownVirtualWallMarker( + const auto markers = autoware::motion_utils::createSlowDownVirtualWallMarker( marker_pose.value(), "obstacle to follow", current_time, 0); - autoware_universe_utils::appendMarkerArray(markers, &wall_msg); + autoware::universe_utils::appendMarkerArray(markers, &wall_msg); // publish rviz marker debug_wall_marker_pub_->publish(wall_msg); @@ -583,7 +588,7 @@ bool OptimizationBasedPlanner::checkOnTrajectory( } const double lateral_offset = - std::fabs(autoware_motion_utils::calcLateralOffset(stop_traj_points, point.point)); + std::fabs(autoware::motion_utils::calcLateralOffset(stop_traj_points, point.point)); if (lateral_offset < vehicle_info_.max_lateral_offset_m + 0.1) { return true; @@ -597,10 +602,10 @@ std::optional OptimizationBasedPlanner::calcTrajectoryLengthFromCurrentP { const size_t ego_segment_idx = ego_nearest_param_.findSegmentIndex(traj_points, ego_pose); - const double traj_length = autoware_motion_utils::calcSignedArcLength( + const double traj_length = autoware::motion_utils::calcSignedArcLength( traj_points, ego_pose.position, ego_segment_idx, traj_points.size() - 1); - const auto dist_to_closest_stop_point = autoware_motion_utils::calcDistanceToForwardStopPoint( + const auto dist_to_closest_stop_point = autoware::motion_utils::calcDistanceToForwardStopPoint( traj_points, ego_pose, ego_nearest_param_.dist_threshold, ego_nearest_param_.yaw_threshold); if (dist_to_closest_stop_point) { return std::min(traj_length, dist_to_closest_stop_point.value()); @@ -627,7 +632,7 @@ geometry_msgs::msg::Pose OptimizationBasedPlanner::transformBaseLink2Center( geometry_msgs::msg::Pose center_pose; center_pose.position = - autoware_universe_utils::createPoint(map2center.x(), map2center.y(), map2center.z()); + autoware::universe_utils::createPoint(map2center.x(), map2center.y(), map2center.z()); center_pose.orientation = pose_base_link.orientation; return center_pose; @@ -702,7 +707,6 @@ void OptimizationBasedPlanner::publishDebugTrajectory( const SBoundaries & s_boundaries, const VelocityOptimizer::OptimizationResult & opt_result) { const auto & current_time = planner_data.current_time; - const std::vector time = opt_result.t; // Publish optimized result and boundary Trajectory boundary_traj; boundary_traj.header.stamp = current_time; diff --git a/planning/autoware_obstacle_cruise_planner/src/pid_based_planner/pid_based_planner.cpp b/planning/autoware_obstacle_cruise_planner/src/pid_based_planner/pid_based_planner.cpp index 56201229cdee6..d0736c6158a7a 100644 --- a/planning/autoware_obstacle_cruise_planner/src/pid_based_planner/pid_based_planner.cpp +++ b/planning/autoware_obstacle_cruise_planner/src/pid_based_planner/pid_based_planner.cpp @@ -313,13 +313,13 @@ std::vector PIDBasedPlanner::planCruise( const size_t wall_idx = obstacle_cruise_utils::getIndexWithLongitudinalOffset( stop_traj_points, dist_to_rss_wall, ego_idx); - auto markers = autoware_motion_utils::createSlowDownVirtualWallMarker( + auto markers = autoware::motion_utils::createSlowDownVirtualWallMarker( stop_traj_points.at(wall_idx).pose, "obstacle cruise", planner_data.current_time, 0); // NOTE: use a different color from slow down one to visualize cruise and slow down // separately. markers.markers.front().color = - autoware_universe_utils::createMarkerColor(1.0, 0.6, 0.1, 0.5); - autoware_universe_utils::appendMarkerArray(markers, &debug_data_ptr_->cruise_wall_marker); + autoware::universe_utils::createMarkerColor(1.0, 0.6, 0.1, 0.5); + autoware::universe_utils::appendMarkerArray(markers, &debug_data_ptr_->cruise_wall_marker); // cruise obstacle debug_data_ptr_->obstacles_to_cruise.push_back(cruise_obstacle_info->obstacle); @@ -345,8 +345,8 @@ std::vector PIDBasedPlanner::planCruise( // delete marker const auto markers = - autoware_motion_utils::createDeletedSlowDownVirtualWallMarker(planner_data.current_time, 0); - autoware_universe_utils::appendMarkerArray(markers, &debug_data_ptr_->cruise_wall_marker); + autoware::motion_utils::createDeletedSlowDownVirtualWallMarker(planner_data.current_time, 0); + autoware::universe_utils::appendMarkerArray(markers, &debug_data_ptr_->cruise_wall_marker); return stop_traj_points; } @@ -480,7 +480,7 @@ std::vector PIDBasedPlanner::doCruiseWithTrajectory( // set target longitudinal motion const auto prev_traj_closest_point = [&]() -> TrajectoryPoint { // if (smoothed_trajectory_ptr_) { - // return autoware_motion_utils::calcInterpolatedPoint( + // return autoware::motion_utils::calcInterpolatedPoint( // *smoothed_trajectory_ptr_, planner_data.ego_pose, nearest_dist_deviation_threshold_, // nearest_yaw_deviation_threshold_); // } @@ -492,7 +492,7 @@ std::vector PIDBasedPlanner::doCruiseWithTrajectory( auto cruise_traj_points = getAccelerationLimitedTrajectory( stop_traj_points, planner_data.ego_pose, v0, a0, target_acc, target_jerk_ratio); - const auto zero_vel_idx_opt = autoware_motion_utils::searchZeroVelocityIndex(cruise_traj_points); + const auto zero_vel_idx_opt = autoware::motion_utils::searchZeroVelocityIndex(cruise_traj_points); if (!zero_vel_idx_opt) { return cruise_traj_points; } @@ -509,7 +509,6 @@ std::vector PIDBasedPlanner::getAccelerationLimitedTrajectory( const double v0, const double a0, const double target_acc, const double target_jerk_ratio) const { // calculate vt function - const auto & i = longitudinal_info_; const auto vt = [&]( const double v0, const double a0, const double jerk, const double t, const double target_acc) { @@ -529,7 +528,7 @@ std::vector PIDBasedPlanner::getAccelerationLimitedTrajectory( }; // calculate sv graph - const double s_traj = autoware_motion_utils::calcArcLength(traj_points); + const double s_traj = autoware::motion_utils::calcArcLength(traj_points); // const double t_max = 10.0; const double s_max = 50.0; const double max_sampling_num = 100.0; @@ -541,8 +540,8 @@ std::vector PIDBasedPlanner::getAccelerationLimitedTrajectory( // Therefore, we calculate v1 (velocity at next step) and use it for initial velocity. const double v1 = v0; // + 0.1; // a0 * 0.1; // + jerk * 0.1 * 0.1 / 2.0; const double a1 = a0; // + jerk * 0.1; - const double jerk = - target_acc > a1 ? i.max_jerk * target_jerk_ratio : i.min_jerk * target_jerk_ratio; + const double jerk = target_acc > a1 ? longitudinal_info_.max_jerk * target_jerk_ratio + : longitudinal_info_.min_jerk * target_jerk_ratio; double t_current = 0.0; std::vector s_vec{0.0}; @@ -599,7 +598,7 @@ std::vector PIDBasedPlanner::getAccelerationLimitedTrajectory( double sum_dist = 0.0; for (size_t i = ego_seg_idx; i < acc_limited_traj_points.size(); ++i) { if (i != ego_seg_idx) { - sum_dist += autoware_universe_utils::calcDistance2d( + sum_dist += autoware::universe_utils::calcDistance2d( acc_limited_traj_points.at(i - 1), acc_limited_traj_points.at(i)); } @@ -622,7 +621,7 @@ std::vector PIDBasedPlanner::getAccelerationLimitedTrajectory( void PIDBasedPlanner::updateCruiseParam(const std::vector & parameters) { - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.min_accel_during_cruise", min_accel_during_cruise_); { // velocity limit based planner @@ -632,26 +631,26 @@ void PIDBasedPlanner::updateCruiseParam(const std::vector & p double ki = p.pid_vel_controller->getKi(); double kd = p.pid_vel_controller->getKd(); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_limit_based_planner.kp", kp); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_limit_based_planner.ki", ki); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_limit_based_planner.kd", kd); p.pid_vel_controller->updateParam(kp, ki, kd); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_limit_based_planner.output_ratio_during_accel", p.output_ratio_during_accel); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.vel_to_acc_weight", p.vel_to_acc_weight); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_limit_based_planner.enable_jerk_limit_to_output_acc", p.enable_jerk_limit_to_output_acc); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_limit_based_planner.disable_target_acceleration", p.disable_target_acceleration); @@ -665,11 +664,11 @@ void PIDBasedPlanner::updateCruiseParam(const std::vector & p double ki_acc = p.pid_acc_controller->getKi(); double kd_acc = p.pid_acc_controller->getKd(); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.kp_acc", kp_acc); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.ki_acc", ki_acc); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.kd_acc", kd_acc); p.pid_acc_controller->updateParam(kp_acc, ki_acc, kd_acc); @@ -678,32 +677,32 @@ void PIDBasedPlanner::updateCruiseParam(const std::vector & p double ki_jerk = p.pid_jerk_controller->getKi(); double kd_jerk = p.pid_jerk_controller->getKd(); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.kp_jerk", kp_jerk); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.ki_jerk", ki_jerk); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.kd_jerk", kd_jerk); p.pid_jerk_controller->updateParam(kp_jerk, ki_jerk, kd_jerk); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.output_acc_ratio_during_accel", p.output_acc_ratio_during_accel); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.output_jerk_ratio_during_accel", p.output_jerk_ratio_during_accel); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.velocity_insertion_based_planner.enable_jerk_limit_to_output_acc", p.enable_jerk_limit_to_output_acc); } // min_cruise_target_vel - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.min_cruise_target_vel", min_cruise_target_vel_); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "cruise.pid_based_planner.time_to_evaluate_rss", time_to_evaluate_rss_); } diff --git a/planning/autoware_obstacle_cruise_planner/src/planner_interface.cpp b/planning/autoware_obstacle_cruise_planner/src/planner_interface.cpp index 5ab0ba237ec78..0413d4bbf3529 100644 --- a/planning/autoware_obstacle_cruise_planner/src/planner_interface.cpp +++ b/planning/autoware_obstacle_cruise_planner/src/planner_interface.cpp @@ -50,7 +50,7 @@ tier4_planning_msgs::msg::StopReasonArray makeStopReasonArray( stop_factor.stop_pose = stop_pose; geometry_msgs::msg::Point stop_factor_point = stop_obstacle.collision_point; stop_factor_point.z = stop_pose.position.z; - stop_factor.dist_to_stop_pose = autoware_motion_utils::calcSignedArcLength( + stop_factor.dist_to_stop_pose = autoware::motion_utils::calcSignedArcLength( planner_data.traj_points, planner_data.ego_pose.position, stop_pose.position); stop_factor.stop_factor_points.emplace_back(stop_factor_point); @@ -143,7 +143,7 @@ double findReachTime( return j * t * t * t / 6.0 + a * t * t / 2.0 + v * t - d; }; if (f(min, j, a, v, d) > 0 || f(max, j, a, v, d) < 0) { - std::logic_error("[obstacle_cruise_planner](findReachTime): search range is invalid"); + throw std::logic_error("[obstacle_cruise_planner](findReachTime): search range is invalid"); } const double eps = 1e-5; const int warn_iter = 100; @@ -175,7 +175,7 @@ double calcDecelerationVelocityFromDistanceToTarget( const double current_velocity, const double distance_to_target) { if (max_slowdown_jerk > 0 || max_slowdown_accel > 0) { - std::logic_error("max_slowdown_jerk and max_slowdown_accel should be negative"); + throw std::logic_error("max_slowdown_jerk and max_slowdown_accel should be negative"); } // case0: distance to target is behind ego if (distance_to_target <= 0) return current_velocity; @@ -218,14 +218,14 @@ double calcDecelerationVelocityFromDistanceToTarget( std::vector resampleTrajectoryPoints( const std::vector & traj_points, const double interval) { - const auto traj = autoware_motion_utils::convertToTrajectory(traj_points); - const auto resampled_traj = autoware_motion_utils::resampleTrajectory(traj, interval); - return autoware_motion_utils::convertToTrajectoryPointArray(resampled_traj); + const auto traj = autoware::motion_utils::convertToTrajectory(traj_points); + const auto resampled_traj = autoware::motion_utils::resampleTrajectory(traj, interval); + return autoware::motion_utils::convertToTrajectoryPointArray(resampled_traj); } -autoware_universe_utils::Point2d convertPoint(const geometry_msgs::msg::Point & p) +autoware::universe_utils::Point2d convertPoint(const geometry_msgs::msg::Point & p) { - return autoware_universe_utils::Point2d{p.x, p.y}; + return autoware::universe_utils::Point2d{p.x, p.y}; } } // namespace @@ -248,8 +248,8 @@ std::vector PlannerInterface::generateStopTrajectory( // delete marker const auto markers = - autoware_motion_utils::createDeletedStopVirtualWallMarker(planner_data.current_time, 0); - autoware_universe_utils::appendMarkerArray(markers, &debug_data_ptr_->stop_wall_marker); + autoware::motion_utils::createDeletedStopVirtualWallMarker(planner_data.current_time, 0); + autoware::universe_utils::appendMarkerArray(markers, &debug_data_ptr_->stop_wall_marker); prev_stop_distance_info_ = std::nullopt; return planner_data.traj_points; @@ -269,14 +269,14 @@ std::vector PlannerInterface::generateStopTrajectory( const auto ego_segment_idx = ego_nearest_param_.findSegmentIndex(planner_data.traj_points, planner_data.ego_pose); const double dist_to_collide_on_ref_traj = - autoware_motion_utils::calcSignedArcLength(planner_data.traj_points, 0, ego_segment_idx) + + autoware::motion_utils::calcSignedArcLength(planner_data.traj_points, 0, ego_segment_idx) + stop_obstacle.dist_to_collide_on_decimated_traj; const double desired_margin = [&]() { const double margin_from_obstacle = calculateMarginFromObstacleOnCurve(planner_data, stop_obstacle); // Use terminal margin (terminal_safe_distance_margin) for obstacle stop - const auto ref_traj_length = autoware_motion_utils::calcSignedArcLength( + const auto ref_traj_length = autoware::motion_utils::calcSignedArcLength( planner_data.traj_points, 0, planner_data.traj_points.size() - 1); if (dist_to_collide_on_ref_traj > ref_traj_length) { return longitudinal_info_.terminal_safe_distance_margin; @@ -284,11 +284,11 @@ std::vector PlannerInterface::generateStopTrajectory( // If behavior stop point is ahead of the closest_obstacle_stop point within a certain // margin we set closest_obstacle_stop_distance to closest_behavior_stop_distance - const auto closest_behavior_stop_idx = autoware_motion_utils::searchZeroVelocityIndex( + const auto closest_behavior_stop_idx = autoware::motion_utils::searchZeroVelocityIndex( planner_data.traj_points, ego_segment_idx + 1); if (closest_behavior_stop_idx) { const double closest_behavior_stop_dist_on_ref_traj = - autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::calcSignedArcLength( planner_data.traj_points, 0, *closest_behavior_stop_idx); const double stop_dist_diff = closest_behavior_stop_dist_on_ref_traj - (dist_to_collide_on_ref_traj - margin_from_obstacle); @@ -329,7 +329,7 @@ std::vector PlannerInterface::generateStopTrajectory( } const double acceptable_stop_pos = - autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::calcSignedArcLength( planner_data.traj_points, 0, planner_data.ego_pose.position) + calcMinimumDistanceToStop( planner_data.ego_vel, longitudinal_info_.limit_max_accel, acceptable_stop_acc.value()); @@ -356,8 +356,8 @@ std::vector PlannerInterface::generateStopTrajectory( if (!determined_zero_vel_dist) { // delete marker const auto markers = - autoware_motion_utils::createDeletedStopVirtualWallMarker(planner_data.current_time, 0); - autoware_universe_utils::appendMarkerArray(markers, &debug_data_ptr_->stop_wall_marker); + autoware::motion_utils::createDeletedStopVirtualWallMarker(planner_data.current_time, 0); + autoware::universe_utils::appendMarkerArray(markers, &debug_data_ptr_->stop_wall_marker); prev_stop_distance_info_ = std::nullopt; return planner_data.traj_points; @@ -370,9 +370,9 @@ std::vector PlannerInterface::generateStopTrajectory( // NOTE: We assume that the current trajectory's front point is ahead of the previous // trajectory's front point. const size_t traj_front_point_prev_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( prev_stop_distance_info_->first, planner_data.traj_points.front().pose); - const double diff_dist_front_points = autoware_motion_utils::calcSignedArcLength( + const double diff_dist_front_points = autoware::motion_utils::calcSignedArcLength( prev_stop_distance_info_->first, 0, planner_data.traj_points.front().pose.position, traj_front_point_prev_seg_idx); @@ -387,13 +387,13 @@ std::vector PlannerInterface::generateStopTrajectory( // Insert stop point auto output_traj_points = planner_data.traj_points; const auto zero_vel_idx = - autoware_motion_utils::insertStopPoint(0, *determined_zero_vel_dist, output_traj_points); + autoware::motion_utils::insertStopPoint(0, *determined_zero_vel_dist, output_traj_points); if (zero_vel_idx) { // virtual wall marker for stop obstacle - const auto markers = autoware_motion_utils::createStopVirtualWallMarker( + const auto markers = autoware::motion_utils::createStopVirtualWallMarker( output_traj_points.at(*zero_vel_idx).pose, "obstacle stop", planner_data.current_time, 0, abs_ego_offset, "", planner_data.is_driving_forward); - autoware_universe_utils::appendMarkerArray(markers, &debug_data_ptr_->stop_wall_marker); + autoware::universe_utils::appendMarkerArray(markers, &debug_data_ptr_->stop_wall_marker); debug_data_ptr_->obstacles_to_stop.push_back(*determined_stop_obstacle); // Publish Stop Reason @@ -406,7 +406,7 @@ std::vector PlannerInterface::generateStopTrajectory( // Publish if ego vehicle will over run against the stop point with a limit acceleration const bool will_over_run = determined_zero_vel_dist.value() > - autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::calcSignedArcLength( planner_data.traj_points, 0, planner_data.ego_pose.position) + determined_stop_obstacle->dist_to_collide_on_decimated_traj + determined_desired_margin.value() + 0.1; @@ -439,7 +439,7 @@ std::vector PlannerInterface::generateStopTrajectory( double PlannerInterface::calculateMarginFromObstacleOnCurve( const PlannerData & planner_data, const StopObstacle & stop_obstacle) const { - if (!enable_approaching_on_curve_) { + if (!enable_approaching_on_curve_ || use_pointcloud_) { return longitudinal_info_.safe_distance_margin; } @@ -448,7 +448,7 @@ double PlannerInterface::calculateMarginFromObstacleOnCurve( : std::abs(vehicle_info_.min_longitudinal_offset_m); // calculate short trajectory points towards obstacle - const size_t obj_segment_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t obj_segment_idx = autoware::motion_utils::findNearestSegmentIndex( planner_data.traj_points, stop_obstacle.collision_point); std::vector short_traj_points{planner_data.traj_points.at(obj_segment_idx + 1)}; double sum_short_traj_length{0.0}; @@ -460,7 +460,7 @@ double PlannerInterface::calculateMarginFromObstacleOnCurve( longitudinal_info_.safe_distance_margin + abs_ego_offset < sum_short_traj_length) { break; } - sum_short_traj_length += autoware_universe_utils::calcDistance2d( + sum_short_traj_length += autoware::universe_utils::calcDistance2d( planner_data.traj_points.at(i), planner_data.traj_points.at(i + 1)); } std::reverse(short_traj_points.begin(), short_traj_points.end()); @@ -471,15 +471,15 @@ double PlannerInterface::calculateMarginFromObstacleOnCurve( // calculate collision index between straight line from ego pose and object const auto calculate_distance_from_straight_ego_path = [&](const auto & ego_pose, const auto & object_polygon) { - const auto forward_ego_pose = autoware_universe_utils::calcOffsetPose( + const auto forward_ego_pose = autoware::universe_utils::calcOffsetPose( ego_pose, longitudinal_info_.safe_distance_margin + 3.0, 0.0, 0.0); - const auto ego_straight_segment = autoware_universe_utils::Segment2d{ + const auto ego_straight_segment = autoware::universe_utils::Segment2d{ convertPoint(ego_pose.position), convertPoint(forward_ego_pose.position)}; return boost::geometry::distance(ego_straight_segment, object_polygon); }; const auto resampled_short_traj_points = resampleTrajectoryPoints(short_traj_points, 0.5); const auto object_polygon = - autoware_universe_utils::toPolygon2d(stop_obstacle.pose, stop_obstacle.shape); + autoware::universe_utils::toPolygon2d(stop_obstacle.pose, stop_obstacle.shape); const auto collision_idx = [&]() -> std::optional { for (size_t i = 0; i < resampled_short_traj_points.size(); ++i) { const double dist_to_obj = calculate_distance_from_straight_ego_path( @@ -499,7 +499,7 @@ double PlannerInterface::calculateMarginFromObstacleOnCurve( // calculate margin from obstacle const double partial_segment_length = [&]() { - const double collision_segment_length = autoware_universe_utils::calcDistance2d( + const double collision_segment_length = autoware::universe_utils::calcDistance2d( resampled_short_traj_points.at(*collision_idx - 1), resampled_short_traj_points.at(*collision_idx)); const double prev_dist = calculate_distance_from_straight_ego_path( @@ -512,7 +512,7 @@ double PlannerInterface::calculateMarginFromObstacleOnCurve( const double short_margin_from_obstacle = partial_segment_length + - autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::calcSignedArcLength( resampled_short_traj_points, *collision_idx, stop_obstacle.collision_point) - abs_ego_offset + additional_safe_distance_margin_on_curve_; @@ -532,9 +532,9 @@ double PlannerInterface::calcDistanceToCollisionPoint( ego_nearest_param_.findSegmentIndex(planner_data.traj_points, planner_data.ego_pose); const size_t collision_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(planner_data.traj_points, collision_point); + autoware::motion_utils::findNearestSegmentIndex(planner_data.traj_points, collision_point); - const auto dist_to_collision_point = autoware_motion_utils::calcSignedArcLength( + const auto dist_to_collision_point = autoware::motion_utils::calcSignedArcLength( planner_data.traj_points, planner_data.ego_pose.position, ego_segment_idx, collision_point, collision_segment_idx); @@ -553,7 +553,7 @@ std::vector PlannerInterface::generateSlowDownTrajectory( const double dist_to_ego = [&]() { const size_t ego_seg_idx = ego_nearest_param_.findSegmentIndex(slow_down_traj_points, planner_data.ego_pose); - return autoware_motion_utils::calcSignedArcLength( + return autoware::motion_utils::calcSignedArcLength( slow_down_traj_points, 0, planner_data.ego_pose.position, ego_seg_idx); }(); const double abs_ego_offset = planner_data.is_driving_forward @@ -563,7 +563,7 @@ std::vector PlannerInterface::generateSlowDownTrajectory( // define function to insert slow down velocity to trajectory const auto insert_point_in_trajectory = [&](const double lon_dist) -> std::optional { const auto inserted_idx = - autoware_motion_utils::insertTargetPoint(0, lon_dist, slow_down_traj_points); + autoware::motion_utils::insertTargetPoint(0, lon_dist, slow_down_traj_points); if (inserted_idx) { if (inserted_idx.value() + 1 <= slow_down_traj_points.size() - 1) { // zero-order hold for velocity interpolation @@ -598,8 +598,9 @@ std::vector PlannerInterface::generateSlowDownTrajectory( obstacle.uuid.c_str()); continue; } - const auto [dist_to_slow_down_start, dist_to_slow_down_end, feasible_slow_down_vel] = - *dist_vec_to_slow_down; + const auto dist_to_slow_down_start = std::get<0>(*dist_vec_to_slow_down); + const auto dist_to_slow_down_end = std::get<1>(*dist_vec_to_slow_down); + const auto feasible_slow_down_vel = std::get<2>(*dist_vec_to_slow_down); // calculate slow down end distance, and insert slow down velocity // NOTE: slow_down_start_idx will not be wrong since inserted back point is after inserted @@ -622,9 +623,9 @@ std::vector PlannerInterface::generateSlowDownTrajectory( }(); // insert slow down velocity between slow start and end - for (size_t i = (slow_down_start_idx ? *slow_down_start_idx : 0); i <= *slow_down_end_idx; - ++i) { - auto & traj_point = slow_down_traj_points.at(i); + for (size_t j = (slow_down_start_idx ? *slow_down_start_idx : 0); j <= *slow_down_end_idx; + ++j) { + auto & traj_point = slow_down_traj_points.at(j); traj_point.longitudinal_velocity_mps = std::min(traj_point.longitudinal_velocity_mps, static_cast(stable_slow_down_vel)); } @@ -636,7 +637,7 @@ std::vector PlannerInterface::generateSlowDownTrajectory( slow_down_debug_multi_array_.data.push_back(feasible_slow_down_vel); slow_down_debug_multi_array_.data.push_back(stable_slow_down_vel); slow_down_debug_multi_array_.data.push_back(slow_down_start_idx ? *slow_down_start_idx : -1.0); - slow_down_debug_multi_array_.data.push_back(slow_down_end_idx ? *slow_down_end_idx : -1.0); + slow_down_debug_multi_array_.data.push_back(*slow_down_end_idx); // add virtual wall if (slow_down_start_idx && slow_down_end_idx) { @@ -648,25 +649,25 @@ std::vector PlannerInterface::generateSlowDownTrajectory( return *slow_down_end_idx; }(); - const auto markers = autoware_motion_utils::createSlowDownVirtualWallMarker( + const auto markers = autoware::motion_utils::createSlowDownVirtualWallMarker( slow_down_traj_points.at(slow_down_wall_idx).pose, "obstacle slow down", planner_data.current_time, i, abs_ego_offset, "", planner_data.is_driving_forward); - autoware_universe_utils::appendMarkerArray(markers, &debug_data_ptr_->slow_down_wall_marker); + autoware::universe_utils::appendMarkerArray(markers, &debug_data_ptr_->slow_down_wall_marker); } // add debug virtual wall if (slow_down_start_idx) { - const auto markers = autoware_motion_utils::createSlowDownVirtualWallMarker( + const auto markers = autoware::motion_utils::createSlowDownVirtualWallMarker( slow_down_traj_points.at(*slow_down_start_idx).pose, "obstacle slow down start", planner_data.current_time, i * 2, abs_ego_offset, "", planner_data.is_driving_forward); - autoware_universe_utils::appendMarkerArray( + autoware::universe_utils::appendMarkerArray( markers, &debug_data_ptr_->slow_down_debug_wall_marker); } if (slow_down_end_idx) { - const auto markers = autoware_motion_utils::createSlowDownVirtualWallMarker( + const auto markers = autoware::motion_utils::createSlowDownVirtualWallMarker( slow_down_traj_points.at(*slow_down_end_idx).pose, "obstacle slow down end", planner_data.current_time, i * 2 + 1, abs_ego_offset, "", planner_data.is_driving_forward); - autoware_universe_utils::appendMarkerArray( + autoware::universe_utils::appendMarkerArray( markers, &debug_data_ptr_->slow_down_debug_wall_marker); } @@ -728,9 +729,9 @@ PlannerInterface::calculateDistanceToSlowDownWithConstraints( // calculate distance to collision points const double dist_to_front_collision = - autoware_motion_utils::calcSignedArcLength(traj_points, 0, obstacle.front_collision_point); + autoware::motion_utils::calcSignedArcLength(traj_points, 0, obstacle.front_collision_point); const double dist_to_back_collision = - autoware_motion_utils::calcSignedArcLength(traj_points, 0, obstacle.back_collision_point); + autoware::motion_utils::calcSignedArcLength(traj_points, 0, obstacle.back_collision_point); // calculate offset distance to first collision considering relative velocity const double relative_vel = planner_data.ego_vel - obstacle.velocity; @@ -773,9 +774,9 @@ PlannerInterface::calculateDistanceToSlowDownWithConstraints( const auto apply_lowpass_filter = [&](const double dist_to_slow_down, const auto prev_point) { if (prev_output && prev_point) { const size_t seg_idx = - autoware_motion_utils::findNearestSegmentIndex(traj_points, prev_point->position); + autoware::motion_utils::findNearestSegmentIndex(traj_points, prev_point->position); const double prev_dist_to_slow_down = - autoware_motion_utils::calcSignedArcLength(traj_points, 0, prev_point->position, seg_idx); + autoware::motion_utils::calcSignedArcLength(traj_points, 0, prev_point->position, seg_idx); return signal_processing::lowpassFilter( dist_to_slow_down, prev_dist_to_slow_down, slow_down_param_.lpf_gain_dist_to_slow_down); } diff --git a/planning/autoware_obstacle_cruise_planner/src/polygon_utils.cpp b/planning/autoware_obstacle_cruise_planner/src/polygon_utils.cpp index 1a032c9f5603f..8c3abe58f5d59 100644 --- a/planning/autoware_obstacle_cruise_planner/src/polygon_utils.cpp +++ b/planning/autoware_obstacle_cruise_planner/src/polygon_utils.cpp @@ -35,7 +35,7 @@ PointWithStamp calcNearestCollisionPoint( std::vector dist_vec; for (const auto & collision_point : collision_points) { - const double dist = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double dist = autoware::motion_utils::calcLongitudinalOffsetToSegment( segment_points, 0, collision_point.point); dist_vec.push_back(dist); } @@ -51,10 +51,10 @@ std::optional>> getCollisionIndex( const geometry_msgs::msg::Pose & object_pose, const rclcpp::Time & object_time, const Shape & object_shape, const double max_dist = std::numeric_limits::max()) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(object_pose, object_shape); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(object_pose, object_shape); for (size_t i = 0; i < traj_polygons.size(); ++i) { const double approximated_dist = - autoware_universe_utils::calcDistance2d(traj_points.at(i).pose, object_pose); + autoware::universe_utils::calcDistance2d(traj_points.at(i).pose, object_pose); if (approximated_dist > max_dist) { continue; } @@ -105,14 +105,14 @@ std::optional> getCollisionPoint( const double x_diff_to_bumper = is_driving_forward ? vehicle_info.max_longitudinal_offset_m : vehicle_info.min_longitudinal_offset_m; - const auto bumper_pose = autoware_universe_utils::calcOffsetPose( + const auto bumper_pose = autoware::universe_utils::calcOffsetPose( traj_points.at(collision_info->first).pose, x_diff_to_bumper, 0.0, 0.0); std::optional max_collision_length = std::nullopt; std::optional max_collision_point = std::nullopt; for (const auto & poly_vertex : collision_info->second) { const double dist_from_bumper = - std::abs(autoware_universe_utils::inverseTransformPoint(poly_vertex.point, bumper_pose).x); + std::abs(autoware::universe_utils::inverseTransformPoint(poly_vertex.point, bumper_pose).x); if (!max_collision_length.has_value() || dist_from_bumper > *max_collision_length) { max_collision_length = dist_from_bumper; @@ -121,7 +121,7 @@ std::optional> getCollisionPoint( } return std::make_pair( *max_collision_point, - autoware_motion_utils::calcSignedArcLength(traj_points, 0, collision_info->first) - + autoware::motion_utils::calcSignedArcLength(traj_points, 0, collision_info->first) - *max_collision_length); } diff --git a/planning/autoware_obstacle_cruise_planner/src/utils.cpp b/planning/autoware_obstacle_cruise_planner/src/utils.cpp index b95fb6e5d29f9..8162d8036d9dc 100644 --- a/planning/autoware_obstacle_cruise_planner/src/utils.cpp +++ b/planning/autoware_obstacle_cruise_planner/src/utils.cpp @@ -59,10 +59,10 @@ visualization_msgs::msg::Marker getObjectMarker( { const auto current_time = rclcpp::Clock().now(); - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", current_time, ns, idx, visualization_msgs::msg::Marker::SPHERE, - autoware_universe_utils::createMarkerScale(2.0, 2.0, 2.0), - autoware_universe_utils::createMarkerColor(r, g, b, 0.8)); + autoware::universe_utils::createMarkerScale(2.0, 2.0, 2.0), + autoware::universe_utils::createMarkerColor(r, g, b, 0.8)); marker.pose = obj_pose; diff --git a/planning/obstacle_stop_planner/CMakeLists.txt b/planning/autoware_obstacle_stop_planner/CMakeLists.txt similarity index 60% rename from planning/obstacle_stop_planner/CMakeLists.txt rename to planning/autoware_obstacle_stop_planner/CMakeLists.txt index 5b7edcd559fe5..9e663820b02f1 100644 --- a/planning/obstacle_stop_planner/CMakeLists.txt +++ b/planning/autoware_obstacle_stop_planner/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.14) -project(obstacle_stop_planner) +project(autoware_obstacle_stop_planner) find_package(autoware_cmake REQUIRED) autoware_package() @@ -7,26 +7,26 @@ autoware_package() find_package(Eigen3 REQUIRED) find_package(PCL REQUIRED) -ament_auto_add_library(obstacle_stop_planner SHARED - src/debug_marker.cpp - src/node.cpp - src/planner_utils.cpp - src/adaptive_cruise_control.cpp +ament_auto_add_library(${PROJECT_NAME} SHARED + DIRECTORY + src ) -target_include_directories(obstacle_stop_planner +target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC ${PCL_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR} + INTERFACE + src ) -target_link_libraries(obstacle_stop_planner +target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES} ) -rclcpp_components_register_node(obstacle_stop_planner +rclcpp_components_register_node(${PROJECT_NAME} PLUGIN "motion_planning::ObstacleStopPlannerNode" - EXECUTABLE obstacle_stop_planner_node + EXECUTABLE ${PROJECT_NAME}_node ) if(BUILD_TESTING) diff --git a/planning/obstacle_stop_planner/README.md b/planning/autoware_obstacle_stop_planner/README.md similarity index 100% rename from planning/obstacle_stop_planner/README.md rename to planning/autoware_obstacle_stop_planner/README.md diff --git a/planning/obstacle_stop_planner/config/adaptive_cruise_control.param.yaml b/planning/autoware_obstacle_stop_planner/config/adaptive_cruise_control.param.yaml similarity index 100% rename from planning/obstacle_stop_planner/config/adaptive_cruise_control.param.yaml rename to planning/autoware_obstacle_stop_planner/config/adaptive_cruise_control.param.yaml diff --git a/planning/obstacle_stop_planner/config/common.param.yaml b/planning/autoware_obstacle_stop_planner/config/common.param.yaml similarity index 100% rename from planning/obstacle_stop_planner/config/common.param.yaml rename to planning/autoware_obstacle_stop_planner/config/common.param.yaml diff --git a/planning/obstacle_stop_planner/config/obstacle_stop_planner.param.yaml b/planning/autoware_obstacle_stop_planner/config/obstacle_stop_planner.param.yaml similarity index 100% rename from planning/obstacle_stop_planner/config/obstacle_stop_planner.param.yaml rename to planning/autoware_obstacle_stop_planner/config/obstacle_stop_planner.param.yaml diff --git a/planning/obstacle_stop_planner/config/plot_juggler_adaptive_cruise.xml b/planning/autoware_obstacle_stop_planner/config/plot_juggler_adaptive_cruise.xml similarity index 100% rename from planning/obstacle_stop_planner/config/plot_juggler_adaptive_cruise.xml rename to planning/autoware_obstacle_stop_planner/config/plot_juggler_adaptive_cruise.xml diff --git a/planning/obstacle_stop_planner/config/plot_juggler_slow_down.xml b/planning/autoware_obstacle_stop_planner/config/plot_juggler_slow_down.xml similarity index 100% rename from planning/obstacle_stop_planner/config/plot_juggler_slow_down.xml rename to planning/autoware_obstacle_stop_planner/config/plot_juggler_slow_down.xml diff --git a/planning/obstacle_stop_planner/config/rqt_multiplot_adaptive_cruise.xml b/planning/autoware_obstacle_stop_planner/config/rqt_multiplot_adaptive_cruise.xml similarity index 100% rename from planning/obstacle_stop_planner/config/rqt_multiplot_adaptive_cruise.xml rename to planning/autoware_obstacle_stop_planner/config/rqt_multiplot_adaptive_cruise.xml diff --git a/planning/obstacle_stop_planner/docs/adaptive_cruise.drawio.svg b/planning/autoware_obstacle_stop_planner/docs/adaptive_cruise.drawio.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/adaptive_cruise.drawio.svg rename to planning/autoware_obstacle_stop_planner/docs/adaptive_cruise.drawio.svg diff --git a/planning/obstacle_stop_planner/docs/collision_parameters.svg b/planning/autoware_obstacle_stop_planner/docs/collision_parameters.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/collision_parameters.svg rename to planning/autoware_obstacle_stop_planner/docs/collision_parameters.svg diff --git a/planning/obstacle_stop_planner/docs/keep_stopping.svg b/planning/autoware_obstacle_stop_planner/docs/keep_stopping.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/keep_stopping.svg rename to planning/autoware_obstacle_stop_planner/docs/keep_stopping.svg diff --git a/planning/obstacle_stop_planner/docs/min_longitudinal_margin.svg b/planning/autoware_obstacle_stop_planner/docs/min_longitudinal_margin.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/min_longitudinal_margin.svg rename to planning/autoware_obstacle_stop_planner/docs/min_longitudinal_margin.svg diff --git a/planning/obstacle_stop_planner/docs/restart.svg b/planning/autoware_obstacle_stop_planner/docs/restart.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/restart.svg rename to planning/autoware_obstacle_stop_planner/docs/restart.svg diff --git a/planning/obstacle_stop_planner/docs/restart_prevention.svg b/planning/autoware_obstacle_stop_planner/docs/restart_prevention.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/restart_prevention.svg rename to planning/autoware_obstacle_stop_planner/docs/restart_prevention.svg diff --git a/planning/obstacle_stop_planner/docs/slow_down_parameters.svg b/planning/autoware_obstacle_stop_planner/docs/slow_down_parameters.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/slow_down_parameters.svg rename to planning/autoware_obstacle_stop_planner/docs/slow_down_parameters.svg diff --git a/planning/obstacle_stop_planner/docs/slow_down_target.svg b/planning/autoware_obstacle_stop_planner/docs/slow_down_target.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/slow_down_target.svg rename to planning/autoware_obstacle_stop_planner/docs/slow_down_target.svg diff --git a/planning/obstacle_stop_planner/docs/stop_target.svg b/planning/autoware_obstacle_stop_planner/docs/stop_target.svg similarity index 100% rename from planning/obstacle_stop_planner/docs/stop_target.svg rename to planning/autoware_obstacle_stop_planner/docs/stop_target.svg diff --git a/planning/obstacle_stop_planner/launch/obstacle_stop_planner.launch.xml b/planning/autoware_obstacle_stop_planner/launch/obstacle_stop_planner.launch.xml similarity index 100% rename from planning/obstacle_stop_planner/launch/obstacle_stop_planner.launch.xml rename to planning/autoware_obstacle_stop_planner/launch/obstacle_stop_planner.launch.xml diff --git a/planning/obstacle_stop_planner/package.xml b/planning/autoware_obstacle_stop_planner/package.xml similarity index 94% rename from planning/obstacle_stop_planner/package.xml rename to planning/autoware_obstacle_stop_planner/package.xml index 5aca5efb36384..71eec208f7fdc 100644 --- a/planning/obstacle_stop_planner/package.xml +++ b/planning/autoware_obstacle_stop_planner/package.xml @@ -1,9 +1,9 @@ - obstacle_stop_planner + autoware_obstacle_stop_planner 0.1.0 - The obstacle_stop_planner package + The autoware_obstacle_stop_planner package Satoshi Ota Taiki Tanaka diff --git a/planning/obstacle_stop_planner/src/adaptive_cruise_control.cpp b/planning/autoware_obstacle_stop_planner/src/adaptive_cruise_control.cpp similarity index 98% rename from planning/obstacle_stop_planner/src/adaptive_cruise_control.cpp rename to planning/autoware_obstacle_stop_planner/src/adaptive_cruise_control.cpp index 1f01bf4417319..c5fcf29466936 100644 --- a/planning/obstacle_stop_planner/src/adaptive_cruise_control.cpp +++ b/planning/autoware_obstacle_stop_planner/src/adaptive_cruise_control.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "obstacle_stop_planner/adaptive_cruise_control.hpp" +#include "adaptive_cruise_control.hpp" #include "autoware/motion_utils/trajectory/trajectory.hpp" @@ -35,6 +35,7 @@ #include #include #include +#include #include namespace bg = boost::geometry; @@ -122,7 +123,7 @@ constexpr double sign(const double value) } } // namespace -namespace motion_planning +namespace autoware::motion_planning { AdaptiveCruiseController::AdaptiveCruiseController( rclcpp::Node * node, const double vehicle_width, const double vehicle_length, @@ -367,7 +368,7 @@ void AdaptiveCruiseController::calcDistanceToNearestPointOnPath( double dist_to_point = 0; // get distance from self to next nearest point dist_to_point += - autoware_motion_utils::calcSignedArcLength(trajectory, self_pose.position, size_t(1)); + autoware::motion_utils::calcSignedArcLength(trajectory, self_pose.position, size_t(1)); // add distance from next self-nearest-point(=idx:0) to prev point of nearest_point_idx for (int i = 1; i < nearest_point_idx - 1; i++) { @@ -459,7 +460,7 @@ void AdaptiveCruiseController::calculateProjectedVelocityFromObject( object.kinematics.initial_twist_with_covariance.twist.linear.x); *velocity = - obj_vel_norm * std::cos(autoware_universe_utils::normalizeRadian(obj_vel_yaw - traj_yaw)); + obj_vel_norm * std::cos(autoware::universe_utils::normalizeRadian(obj_vel_yaw - traj_yaw)); debug_values_.data.at(DBGVAL::ESTIMATED_VEL_OBJ) = *velocity; } @@ -639,14 +640,11 @@ double AdaptiveCruiseController::calcTargetVelocity_D( return 0.0; } - double add_vel_d = 0; - - add_vel_d = diff_vel; + double add_vel_d = diff_vel; if (add_vel_d >= 0) { - diff_vel *= param_.d_coeff_pos; - } - if (add_vel_d < 0) { - diff_vel *= param_.d_coeff_neg; + add_vel_d *= param_.d_coeff_pos; + } else { + add_vel_d *= param_.d_coeff_neg; } add_vel_d = boost::algorithm::clamp(add_vel_d, -param_.d_max_vel_norm, param_.d_max_vel_norm); @@ -685,8 +683,8 @@ void AdaptiveCruiseController::insertMaxVelocityToPath( double dist_to_first_point = 0.0; if (output_trajectory->size() > 1) { - dist_to_first_point = - autoware_motion_utils::calcSignedArcLength(*output_trajectory, self_pose.position, size_t(1)); + dist_to_first_point = autoware::motion_utils::calcSignedArcLength( + *output_trajectory, self_pose.position, size_t(1)); } double margin_to_insert = dist_to_collision_point * param_.margin_rate_to_change_vel; @@ -786,4 +784,4 @@ double AdaptiveCruiseController::lowpass_filter( return gain * prev_value + (1.0 - gain) * current_value; } -} // namespace motion_planning +} // namespace autoware::motion_planning diff --git a/planning/obstacle_stop_planner/include/obstacle_stop_planner/adaptive_cruise_control.hpp b/planning/autoware_obstacle_stop_planner/src/adaptive_cruise_control.hpp similarity index 97% rename from planning/obstacle_stop_planner/include/obstacle_stop_planner/adaptive_cruise_control.hpp rename to planning/autoware_obstacle_stop_planner/src/adaptive_cruise_control.hpp index 55501cf596b07..25664b14320c1 100644 --- a/planning/obstacle_stop_planner/include/obstacle_stop_planner/adaptive_cruise_control.hpp +++ b/planning/autoware_obstacle_stop_planner/src/adaptive_cruise_control.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBSTACLE_STOP_PLANNER__ADAPTIVE_CRUISE_CONTROL_HPP_ -#define OBSTACLE_STOP_PLANNER__ADAPTIVE_CRUISE_CONTROL_HPP_ +#ifndef ADAPTIVE_CRUISE_CONTROL_HPP_ +#define ADAPTIVE_CRUISE_CONTROL_HPP_ #include @@ -29,7 +29,7 @@ #include #include -namespace motion_planning +namespace autoware::motion_planning { using autoware_planning_msgs::msg::TrajectoryPoint; using TrajectoryPoints = std::vector; @@ -232,6 +232,6 @@ class AdaptiveCruiseController static constexpr unsigned int num_debug_values_ = 10; }; -} // namespace motion_planning +} // namespace autoware::motion_planning -#endif // OBSTACLE_STOP_PLANNER__ADAPTIVE_CRUISE_CONTROL_HPP_ +#endif // ADAPTIVE_CRUISE_CONTROL_HPP_ diff --git a/planning/obstacle_stop_planner/src/debug_marker.cpp b/planning/autoware_obstacle_stop_planner/src/debug_marker.cpp similarity index 92% rename from planning/obstacle_stop_planner/src/debug_marker.cpp rename to planning/autoware_obstacle_stop_planner/src/debug_marker.cpp index 835417f33a4c0..75d25f3f8db80 100644 --- a/planning/obstacle_stop_planner/src/debug_marker.cpp +++ b/planning/autoware_obstacle_stop_planner/src/debug_marker.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "obstacle_stop_planner/debug_marker.hpp" +#include "debug_marker.hpp" #include #include @@ -24,21 +24,22 @@ #include #endif +#include #include #include -using autoware_motion_utils::createDeletedSlowDownVirtualWallMarker; -using autoware_motion_utils::createDeletedStopVirtualWallMarker; -using autoware_motion_utils::createSlowDownVirtualWallMarker; -using autoware_motion_utils::createStopVirtualWallMarker; -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; - -namespace motion_planning +using autoware::motion_utils::createDeletedSlowDownVirtualWallMarker; +using autoware::motion_utils::createDeletedStopVirtualWallMarker; +using autoware::motion_utils::createSlowDownVirtualWallMarker; +using autoware::motion_utils::createStopVirtualWallMarker; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; + +namespace autoware::motion_planning { ObstacleStopPlannerDebugNode::ObstacleStopPlannerDebugNode( rclcpp::Node * node, const double base_link2front) @@ -54,7 +55,7 @@ ObstacleStopPlannerDebugNode::ObstacleStopPlannerDebugNode( } bool ObstacleStopPlannerDebugNode::pushPolygon( - const autoware_universe_utils::Polygon2d & polygon, const double z, const PolygonType & type) + const autoware::universe_utils::Polygon2d & polygon, const double z, const PolygonType & type) { std::vector eigen_polygon; for (const auto & point : polygon.outer()) { @@ -100,7 +101,7 @@ bool ObstacleStopPlannerDebugNode::pushPolygon( } bool ObstacleStopPlannerDebugNode::pushPolyhedron( - const autoware_universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, + const autoware::universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, const PolygonType & type) { std::vector eigen_polyhedron; @@ -458,39 +459,35 @@ MarkerArray ObstacleStopPlannerDebugNode::makeVisualizationMarker() } if (stop_obstacle_point_ptr_ != nullptr) { - auto marker = createDefaultMarker( + auto marker1 = createDefaultMarker( "map", current_time, "stop_obstacle_point", 0, Marker::SPHERE, createMarkerScale(0.25, 0.25, 0.25), createMarkerColor(1.0, 0.0, 0.0, 0.999)); - marker.pose.position = *stop_obstacle_point_ptr_; - msg.markers.push_back(marker); - } + marker1.pose.position = *stop_obstacle_point_ptr_; + msg.markers.push_back(marker1); - if (stop_obstacle_point_ptr_ != nullptr) { - auto marker = createDefaultMarker( + auto marker2 = createDefaultMarker( "map", current_time, "stop_obstacle_text", 0, Marker::TEXT_VIEW_FACING, createMarkerScale(0.0, 0.0, 1.0), createMarkerColor(1.0, 1.0, 1.0, 0.999)); - marker.pose.position = *stop_obstacle_point_ptr_; - marker.pose.position.z += 2.0; - marker.text = "!"; - msg.markers.push_back(marker); + marker2.pose.position = *stop_obstacle_point_ptr_; + marker2.pose.position.z += 2.0; + marker2.text = "!"; + msg.markers.push_back(marker2); } if (slow_down_obstacle_point_ptr_ != nullptr) { - auto marker = createDefaultMarker( + auto marker1 = createDefaultMarker( "map", current_time, "slow_down_obstacle_point", 0, Marker::SPHERE, createMarkerScale(0.25, 0.25, 0.25), createMarkerColor(1.0, 0.0, 0.0, 0.999)); - marker.pose.position = *slow_down_obstacle_point_ptr_; - msg.markers.push_back(marker); - } + marker1.pose.position = *slow_down_obstacle_point_ptr_; + msg.markers.push_back(marker1); - if (slow_down_obstacle_point_ptr_ != nullptr) { - auto marker = createDefaultMarker( + auto marker2 = createDefaultMarker( "map", current_time, "slow_down_obstacle_text", 0, Marker::TEXT_VIEW_FACING, createMarkerScale(0.0, 0.0, 1.0), createMarkerColor(1.0, 1.0, 1.0, 0.999)); - marker.pose.position = *slow_down_obstacle_point_ptr_; - marker.pose.position.z += 2.0; - marker.text = "!"; - msg.markers.push_back(marker); + marker2.pose.position = *slow_down_obstacle_point_ptr_; + marker2.pose.position.z += 2.0; + marker2.text = "!"; + msg.markers.push_back(marker2); } return msg; @@ -542,4 +539,4 @@ VelocityFactorArray ObstacleStopPlannerDebugNode::makeVelocityFactorArray() return velocity_factor_array; } -} // namespace motion_planning +} // namespace autoware::motion_planning diff --git a/planning/obstacle_stop_planner/include/obstacle_stop_planner/debug_marker.hpp b/planning/autoware_obstacle_stop_planner/src/debug_marker.hpp similarity index 93% rename from planning/obstacle_stop_planner/include/obstacle_stop_planner/debug_marker.hpp rename to planning/autoware_obstacle_stop_planner/src/debug_marker.hpp index 54c12ed0ef543..4fc8386e92b44 100644 --- a/planning/obstacle_stop_planner/include/obstacle_stop_planner/debug_marker.hpp +++ b/planning/autoware_obstacle_stop_planner/src/debug_marker.hpp @@ -11,8 +11,8 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBSTACLE_STOP_PLANNER__DEBUG_MARKER_HPP_ -#define OBSTACLE_STOP_PLANNER__DEBUG_MARKER_HPP_ +#ifndef DEBUG_MARKER_HPP_ +#define DEBUG_MARKER_HPP_ #include @@ -34,7 +34,7 @@ #include #include #include -namespace motion_planning +namespace autoware::motion_planning { using geometry_msgs::msg::Point; @@ -108,10 +108,10 @@ class ObstacleStopPlannerDebugNode explicit ObstacleStopPlannerDebugNode(rclcpp::Node * node, const double base_link2front); ~ObstacleStopPlannerDebugNode() {} bool pushPolygon( - const autoware_universe_utils::Polygon2d & polygon, const double z, const PolygonType & type); + const autoware::universe_utils::Polygon2d & polygon, const double z, const PolygonType & type); bool pushPolygon(const std::vector & polygon, const PolygonType & type); bool pushPolyhedron( - const autoware_universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, + const autoware::universe_utils::Polygon2d & polyhedron, const double z_min, const double z_max, const PolygonType & type); bool pushPolyhedron(const std::vector & polyhedron, const PolygonType & type); bool pushPose(const Pose & pose, const PoseType & type); @@ -154,6 +154,6 @@ class ObstacleStopPlannerDebugNode DebugValues debug_values_; }; -} // namespace motion_planning +} // namespace autoware::motion_planning -#endif // OBSTACLE_STOP_PLANNER__DEBUG_MARKER_HPP_ +#endif // DEBUG_MARKER_HPP_ diff --git a/planning/obstacle_stop_planner/src/node.cpp b/planning/autoware_obstacle_stop_planner/src/node.cpp similarity index 97% rename from planning/obstacle_stop_planner/src/node.cpp rename to planning/autoware_obstacle_stop_planner/src/node.cpp index db39b31241456..dde218c94e77c 100644 --- a/planning/obstacle_stop_planner/src/node.cpp +++ b/planning/autoware_obstacle_stop_planner/src/node.cpp @@ -20,8 +20,8 @@ #include #define EIGEN_MPL2_ONLY -#include "obstacle_stop_planner/node.hpp" -#include "obstacle_stop_planner/planner_utils.hpp" +#include "node.hpp" +#include "planner_utils.hpp" #include #include @@ -38,19 +38,19 @@ #include #endif -namespace motion_planning +namespace autoware::motion_planning { -using autoware_motion_utils::calcLongitudinalOffsetPose; -using autoware_motion_utils::calcLongitudinalOffsetToSegment; -using autoware_motion_utils::calcSignedArcLength; -using autoware_motion_utils::findFirstNearestIndexWithSoftConstraints; -using autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; +using autoware::motion_utils::calcLongitudinalOffsetPose; +using autoware::motion_utils::calcLongitudinalOffsetToSegment; +using autoware::motion_utils::calcSignedArcLength; +using autoware::motion_utils::findFirstNearestIndexWithSoftConstraints; +using autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::getPoint; +using autoware::universe_utils::getPose; +using autoware::universe_utils::getRPY; using autoware_perception_msgs::msg::PredictedObject; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::getPoint; -using autoware_universe_utils::getPose; -using autoware_universe_utils::getRPY; ObstacleStopPlannerNode::ObstacleStopPlannerNode(const rclcpp::NodeOptions & node_options) : Node("obstacle_stop_planner", node_options) @@ -245,9 +245,9 @@ ObstacleStopPlannerNode::ObstacleStopPlannerNode(const rclcpp::NodeOptions & nod std::bind(&ObstacleStopPlannerNode::onExpandStopRange, this, std::placeholders::_1), createSubscriptionOptions(this)); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void ObstacleStopPlannerNode::onPointCloud(const PointCloud2::ConstSharedPtr input_msg) @@ -327,7 +327,7 @@ void ObstacleStopPlannerNode::onTrigger(const Trajectory::ConstSharedPtr input_m // TODO(someone): support backward path const auto is_driving_forward = - autoware_motion_utils::isDrivingForwardWithTwist(input_msg->points); + autoware::motion_utils::isDrivingForwardWithTwist(input_msg->points); is_driving_forward_ = is_driving_forward ? is_driving_forward.value() : is_driving_forward_; if (!is_driving_forward_) { RCLCPP_WARN_THROTTLE( @@ -343,11 +343,11 @@ void ObstacleStopPlannerNode::onTrigger(const Trajectory::ConstSharedPtr input_m Trajectory output_trajectory = *input_msg; TrajectoryPoints output_trajectory_points = - autoware_motion_utils::convertToTrajectoryPointArray(*input_msg); + autoware::motion_utils::convertToTrajectoryPointArray(*input_msg); // trim trajectory from self pose TrajectoryPoints base_trajectory = trimTrajectoryWithIndexFromSelfPose( - autoware_motion_utils::convertToTrajectoryPointArray(*input_msg), planner_data.current_pose, + autoware::motion_utils::convertToTrajectoryPointArray(*input_msg), planner_data.current_pose, planner_data.trajectory_trim_index); // extend trajectory to consider obstacles after the goal @@ -379,7 +379,7 @@ void ObstacleStopPlannerNode::onTrigger(const Trajectory::ConstSharedPtr input_m resetExternalVelocityLimit(current_acc, current_vel); } - auto trajectory = autoware_motion_utils::convertToTrajectory(output_trajectory_points); + auto trajectory = autoware::motion_utils::convertToTrajectory(output_trajectory_points); publishDebugData(planner_data, current_acc, current_vel); trajectory.header = input_msg->header; @@ -1557,10 +1557,10 @@ void ObstacleStopPlannerNode::filterObstacles( // Check is it near to trajectory const double max_length = calcObstacleMaxLength(object.shape); - const size_t seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t seg_idx = autoware::motion_utils::findNearestSegmentIndex( traj, object.kinematics.initial_pose_with_covariance.pose.position); - const auto p_front = autoware_universe_utils::getPoint(traj.at(seg_idx)); - const auto p_back = autoware_universe_utils::getPoint(traj.at(seg_idx + 1)); + const auto p_front = autoware::universe_utils::getPoint(traj.at(seg_idx)); + const auto p_back = autoware::universe_utils::getPoint(traj.at(seg_idx + 1)); const auto & p_target = object.kinematics.initial_pose_with_covariance.pose.position; const Eigen::Vector3d segment_vec{p_back.x - p_front.x, p_back.y - p_front.y, 0.0}; const Eigen::Vector3d target_vec{p_target.x - p_front.x, p_target.y - p_front.y, 0.0}; @@ -1601,7 +1601,7 @@ void ObstacleStopPlannerNode::publishDebugData( debug_ptr_->publish(); } -} // namespace motion_planning +} // namespace autoware::motion_planning #include -RCLCPP_COMPONENTS_REGISTER_NODE(motion_planning::ObstacleStopPlannerNode) +RCLCPP_COMPONENTS_REGISTER_NODE(autoware::motion_planning::ObstacleStopPlannerNode) diff --git a/planning/obstacle_stop_planner/include/obstacle_stop_planner/node.hpp b/planning/autoware_obstacle_stop_planner/src/node.hpp similarity index 94% rename from planning/obstacle_stop_planner/include/obstacle_stop_planner/node.hpp rename to planning/autoware_obstacle_stop_planner/src/node.hpp index 2a50cfd2e24e8..fba24061896b6 100644 --- a/planning/obstacle_stop_planner/include/obstacle_stop_planner/node.hpp +++ b/planning/autoware_obstacle_stop_planner/src/node.hpp @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBSTACLE_STOP_PLANNER__NODE_HPP_ -#define OBSTACLE_STOP_PLANNER__NODE_HPP_ +#ifndef NODE_HPP_ +#define NODE_HPP_ +#include "adaptive_cruise_control.hpp" #include "autoware/universe_utils/ros/logger_level_configure.hpp" #include "autoware/universe_utils/system/stop_watch.hpp" -#include "obstacle_stop_planner/adaptive_cruise_control.hpp" -#include "obstacle_stop_planner/debug_marker.hpp" -#include "obstacle_stop_planner/planner_data.hpp" +#include "debug_marker.hpp" +#include "planner_data.hpp" #include #include @@ -62,7 +62,7 @@ #include #include -namespace motion_planning +namespace autoware::motion_planning { namespace bg = boost::geometry; @@ -77,13 +77,13 @@ using nav_msgs::msg::Odometry; using sensor_msgs::msg::PointCloud2; using std_msgs::msg::Header; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; +using autoware::universe_utils::StopWatch; using autoware::vehicle_info_utils::VehicleInfo; using autoware_perception_msgs::msg::PredictedObjects; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; -using autoware_universe_utils::StopWatch; using tier4_debug_msgs::msg::BoolStamped; using tier4_debug_msgs::msg::Float32MultiArrayStamped; using tier4_debug_msgs::msg::Float32Stamped; @@ -315,10 +315,10 @@ class ObstacleStopPlannerNode : public rclcpp::Node return ret; } - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; -} // namespace motion_planning +} // namespace autoware::motion_planning -#endif // OBSTACLE_STOP_PLANNER__NODE_HPP_ +#endif // NODE_HPP_ diff --git a/planning/obstacle_stop_planner/include/obstacle_stop_planner/planner_data.hpp b/planning/autoware_obstacle_stop_planner/src/planner_data.hpp similarity index 97% rename from planning/obstacle_stop_planner/include/obstacle_stop_planner/planner_data.hpp rename to planning/autoware_obstacle_stop_planner/src/planner_data.hpp index 1d1e8a3a9844d..bb9cbd59423e9 100644 --- a/planning/obstacle_stop_planner/include/obstacle_stop_planner/planner_data.hpp +++ b/planning/autoware_obstacle_stop_planner/src/planner_data.hpp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBSTACLE_STOP_PLANNER__PLANNER_DATA_HPP_ -#define OBSTACLE_STOP_PLANNER__PLANNER_DATA_HPP_ +#ifndef PLANNER_DATA_HPP_ +#define PLANNER_DATA_HPP_ #include @@ -27,7 +27,7 @@ #include -namespace motion_planning +namespace autoware::motion_planning { using diagnostic_msgs::msg::DiagnosticStatus; @@ -282,6 +282,6 @@ struct PlannerData bool enable_adaptive_cruise{false}; }; -} // namespace motion_planning +} // namespace autoware::motion_planning -#endif // OBSTACLE_STOP_PLANNER__PLANNER_DATA_HPP_ +#endif // PLANNER_DATA_HPP_ diff --git a/planning/obstacle_stop_planner/src/planner_utils.cpp b/planning/autoware_obstacle_stop_planner/src/planner_utils.cpp similarity index 92% rename from planning/obstacle_stop_planner/src/planner_utils.cpp rename to planning/autoware_obstacle_stop_planner/src/planner_utils.cpp index 3a4839aed7a36..bff8f9588215e 100644 --- a/planning/obstacle_stop_planner/src/planner_utils.cpp +++ b/planning/autoware_obstacle_stop_planner/src/planner_utils.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "obstacle_stop_planner/planner_utils.hpp" +#include "planner_utils.hpp" #include #include @@ -29,16 +29,19 @@ #include -namespace motion_planning +#include +#include + +namespace autoware::motion_planning { -using autoware_motion_utils::calcDecelDistWithJerkAndAccConstraints; -using autoware_motion_utils::findFirstNearestIndexWithSoftConstraints; -using autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; +using autoware::motion_utils::calcDecelDistWithJerkAndAccConstraints; +using autoware::motion_utils::findFirstNearestIndexWithSoftConstraints; +using autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::getRPY; using autoware_perception_msgs::msg::PredictedObject; using autoware_perception_msgs::msg::PredictedObjects; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::getRPY; std::optional> calcFeasibleMarginAndVelocity( const SlowDownParam & slow_down_param, const double dist_baselink_to_obstacle, @@ -327,40 +330,40 @@ void createOneStepPolygon( { // base step appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, width, 0.0) + autoware::universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, width, 0.0) .position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, -width, 0.0) + autoware::universe_utils::calcOffsetPose(base_step_pose, longitudinal_offset, -width, 0.0) .position); appendPointToPolygon( - polygon, autoware_universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, -width, 0.0) + polygon, autoware::universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, -width, 0.0) .position); appendPointToPolygon( - polygon, - autoware_universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, width, 0.0).position); + polygon, autoware::universe_utils::calcOffsetPose(base_step_pose, -rear_overhang, width, 0.0) + .position); } { // next step appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, width, 0.0) + autoware::universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, width, 0.0) .position); appendPointToPolygon( polygon, - autoware_universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, -width, 0.0) + autoware::universe_utils::calcOffsetPose(next_step_pose, longitudinal_offset, -width, 0.0) .position); appendPointToPolygon( - polygon, autoware_universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, -width, 0.0) + polygon, autoware::universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, -width, 0.0) .position); appendPointToPolygon( - polygon, - autoware_universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, width, 0.0).position); + polygon, autoware::universe_utils::calcOffsetPose(next_step_pose, -rear_overhang, width, 0.0) + .position); } - polygon = autoware_universe_utils::isClockwise(polygon) + polygon = autoware::universe_utils::isClockwise(polygon) ? polygon - : autoware_universe_utils::inverseClockwise(polygon); + : autoware::universe_utils::inverseClockwise(polygon); boost::geometry::convex_hull(polygon, hull_polygon); } @@ -552,7 +555,7 @@ double getNearestPointAndDistanceForPredictedObject( bool is_init = false; for (const auto & p : points.poses) { - double norm = autoware_universe_utils::calcDistance2d(p, base_pose); + double norm = autoware::universe_utils::calcDistance2d(p, base_pose); if (norm < min_norm || !is_init) { min_norm = norm; *nearest_collision_point = p.position; @@ -627,9 +630,9 @@ Polygon2d convertBoundingBoxObjectToGeometryPolygon( object_polygon.outer().emplace_back(p4_obj.x(), p4_obj.y()); object_polygon.outer().push_back(object_polygon.outer().front()); - object_polygon = autoware_universe_utils::isClockwise(object_polygon) + object_polygon = autoware::universe_utils::isClockwise(object_polygon) ? object_polygon - : autoware_universe_utils::inverseClockwise(object_polygon); + : autoware::universe_utils::inverseClockwise(object_polygon); return object_polygon; } @@ -650,9 +653,9 @@ Polygon2d convertCylindricalObjectToGeometryPolygon( } object_polygon.outer().push_back(object_polygon.outer().front()); - object_polygon = autoware_universe_utils::isClockwise(object_polygon) + object_polygon = autoware::universe_utils::isClockwise(object_polygon) ? object_polygon - : autoware_universe_utils::inverseClockwise(object_polygon); + : autoware::universe_utils::inverseClockwise(object_polygon); return object_polygon; } @@ -670,9 +673,9 @@ Polygon2d convertPolygonObjectToGeometryPolygon( object_polygon.outer().emplace_back(tf_obj.x(), tf_obj.y()); } object_polygon.outer().push_back(object_polygon.outer().front()); - object_polygon = autoware_universe_utils::isClockwise(object_polygon) + object_polygon = autoware::universe_utils::isClockwise(object_polygon) ? object_polygon - : autoware_universe_utils::inverseClockwise(object_polygon); + : autoware::universe_utils::inverseClockwise(object_polygon); return object_polygon; } @@ -692,7 +695,7 @@ std::optional getObstacleFromUuid( bool isFrontObstacle(const Pose & ego_pose, const geometry_msgs::msg::Point & obstacle_pos) { - const auto yaw = autoware_universe_utils::getRPY(ego_pose).z; + const auto yaw = autoware::universe_utils::getRPY(ego_pose).z; const Eigen::Vector2d base_pose_vec(std::cos(yaw), std::sin(yaw)); const Eigen::Vector2d obstacle_vec( obstacle_pos.x - ego_pose.position.x, obstacle_pos.y - ego_pose.position.y); @@ -720,4 +723,4 @@ double calcObstacleMaxLength(const autoware_perception_msgs::msg::Shape & shape) throw std::logic_error("The shape type is not supported in obstacle_cruise_planner."); } -} // namespace motion_planning +} // namespace autoware::motion_planning diff --git a/planning/obstacle_stop_planner/include/obstacle_stop_planner/planner_utils.hpp b/planning/autoware_obstacle_stop_planner/src/planner_utils.hpp similarity index 94% rename from planning/obstacle_stop_planner/include/obstacle_stop_planner/planner_utils.hpp rename to planning/autoware_obstacle_stop_planner/src/planner_utils.hpp index bdd2a0a403fcb..21943c46f5ca5 100644 --- a/planning/obstacle_stop_planner/include/obstacle_stop_planner/planner_utils.hpp +++ b/planning/autoware_obstacle_stop_planner/src/planner_utils.hpp @@ -13,10 +13,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef OBSTACLE_STOP_PLANNER__PLANNER_UTILS_HPP_ -#define OBSTACLE_STOP_PLANNER__PLANNER_UTILS_HPP_ +#ifndef PLANNER_UTILS_HPP_ +#define PLANNER_UTILS_HPP_ -#include "obstacle_stop_planner/planner_data.hpp" +#include "planner_data.hpp" #include #include @@ -33,7 +33,7 @@ #include #include -namespace motion_planning +namespace autoware::motion_planning { namespace bg = boost::geometry; @@ -45,10 +45,10 @@ using geometry_msgs::msg::Pose; using geometry_msgs::msg::PoseArray; using std_msgs::msg::Header; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware::vehicle_info_utils::VehicleInfo; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using TrajectoryPoints = std::vector; using PointCloud = pcl::PointCloud; @@ -149,6 +149,6 @@ double calcObstacleMaxLength(const autoware_perception_msgs::msg::Shape & shape) rclcpp::SubscriptionOptions createSubscriptionOptions(rclcpp::Node * node_ptr); -} // namespace motion_planning +} // namespace autoware::motion_planning -#endif // OBSTACLE_STOP_PLANNER__PLANNER_UTILS_HPP_ +#endif // PLANNER_UTILS_HPP_ diff --git a/planning/obstacle_stop_planner/test/test_obstacle_stop_planner_node_interface.cpp b/planning/autoware_obstacle_stop_planner/test/test_autoware_obstacle_stop_planner_node_interface.cpp similarity index 94% rename from planning/obstacle_stop_planner/test/test_obstacle_stop_planner_node_interface.cpp rename to planning/autoware_obstacle_stop_planner/test/test_autoware_obstacle_stop_planner_node_interface.cpp index 474ed9a338725..99a1ab46d2304 100644 --- a/planning/obstacle_stop_planner/test/test_obstacle_stop_planner_node_interface.cpp +++ b/planning/autoware_obstacle_stop_planner/test/test_autoware_obstacle_stop_planner_node_interface.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "obstacle_stop_planner/node.hpp" +#include "node.hpp" #include #include @@ -22,8 +22,8 @@ #include +using autoware::motion_planning::ObstacleStopPlannerNode; using autoware::planning_test_manager::PlanningInterfaceTestManager; -using motion_planning::ObstacleStopPlannerNode; std::shared_ptr generateTestManager() { @@ -41,7 +41,7 @@ std::shared_ptr generateNode() const auto autoware_test_utils_dir = ament_index_cpp::get_package_share_directory("autoware_test_utils"); const auto obstacle_stop_planner_dir = - ament_index_cpp::get_package_share_directory("obstacle_stop_planner"); + ament_index_cpp::get_package_share_directory("autoware_obstacle_stop_planner"); node_options.append_parameter_override("enable_slow_down", false); @@ -53,7 +53,7 @@ std::shared_ptr generateNode() obstacle_stop_planner_dir + "/config/adaptive_cruise_control.param.yaml", "--params-file", obstacle_stop_planner_dir + "/config/obstacle_stop_planner.param.yaml"}); - return std::make_shared(node_options); + return std::make_shared(node_options); } void publishMandatoryTopics( diff --git a/planning/autoware_path_optimizer/include/autoware/path_optimizer/common_structs.hpp b/planning/autoware_path_optimizer/include/autoware/path_optimizer/common_structs.hpp index df9dec3cf3b75..7f2688ffaad95 100644 --- a/planning/autoware_path_optimizer/include/autoware/path_optimizer/common_structs.hpp +++ b/planning/autoware_path_optimizer/include/autoware/path_optimizer/common_structs.hpp @@ -89,7 +89,7 @@ struct TimeKeeper double accumulated_time{0.0}; - autoware_universe_utils::StopWatch< + autoware::universe_utils::StopWatch< std::chrono::milliseconds, std::chrono::microseconds, std::chrono::steady_clock> stop_watch_; }; @@ -122,7 +122,7 @@ struct TrajectoryParam void onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; // common updateParam( @@ -145,7 +145,7 @@ struct EgoNearestParam void onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; updateParam(parameters, "ego_nearest_dist_threshold", dist_threshold); updateParam(parameters, "ego_nearest_yaw_threshold", yaw_threshold); } diff --git a/planning/autoware_path_optimizer/include/autoware/path_optimizer/mpt_optimizer.hpp b/planning/autoware_path_optimizer/include/autoware/path_optimizer/mpt_optimizer.hpp index cece0142bc29a..4303e5c7e05b4 100644 --- a/planning/autoware_path_optimizer/include/autoware/path_optimizer/mpt_optimizer.hpp +++ b/planning/autoware_path_optimizer/include/autoware/path_optimizer/mpt_optimizer.hpp @@ -93,9 +93,9 @@ struct ReferencePoint geometry_msgs::msg::Pose offsetDeviation(const double lat_dev, const double yaw_dev) const { - auto pose_with_deviation = autoware_universe_utils::calcOffsetPose(pose, 0.0, lat_dev, 0.0); + auto pose_with_deviation = autoware::universe_utils::calcOffsetPose(pose, 0.0, lat_dev, 0.0); pose_with_deviation.orientation = - autoware_universe_utils::createQuaternionFromYaw(getYaw() + yaw_dev); + autoware::universe_utils::createQuaternionFromYaw(getYaw() + yaw_dev); return pose_with_deviation; } }; diff --git a/planning/autoware_path_optimizer/include/autoware/path_optimizer/node.hpp b/planning/autoware_path_optimizer/include/autoware/path_optimizer/node.hpp index d7356c0e43fc4..359c20f2a4d29 100644 --- a/planning/autoware_path_optimizer/include/autoware/path_optimizer/node.hpp +++ b/planning/autoware_path_optimizer/include/autoware/path_optimizer/node.hpp @@ -52,7 +52,7 @@ class PathOptimizer : public rclcpp::Node public: bool isDrivingForward(const std::vector & path_points) { - const auto is_driving_forward = autoware_motion_utils::isDrivingForward(path_points); + const auto is_driving_forward = autoware::motion_utils::isDrivingForward(path_points); is_driving_forward_ = is_driving_forward ? is_driving_forward.value() : is_driving_forward_; return is_driving_forward_; } @@ -90,7 +90,7 @@ class PathOptimizer : public rclcpp::Node // interface subscriber rclcpp::Subscription::SharedPtr path_sub_; - autoware_universe_utils::InterProcessPollingSubscriber ego_odom_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber ego_odom_sub_{ this, "~/input/odometry"}; // debug publisher @@ -137,9 +137,9 @@ class PathOptimizer : public rclcpp::Node private: double vehicle_stop_margin_outside_drivable_area_; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace autoware::path_optimizer diff --git a/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/geometry_utils.hpp b/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/geometry_utils.hpp index e53cf37890691..edc91bd40d4dc 100644 --- a/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/geometry_utils.hpp +++ b/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/geometry_utils.hpp @@ -36,14 +36,14 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template <> geometry_msgs::msg::Point getPoint(const autoware::path_optimizer::ReferencePoint & p); template <> geometry_msgs::msg::Pose getPose(const autoware::path_optimizer::ReferencePoint & p); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils namespace autoware::path_optimizer { @@ -52,8 +52,8 @@ namespace geometry_utils template bool isSamePoint(const T1 & t1, const T2 & t2) { - const auto p1 = autoware_universe_utils::getPoint(t1); - const auto p2 = autoware_universe_utils::getPoint(t2); + const auto p1 = autoware::universe_utils::getPoint(t1); + const auto p2 = autoware::universe_utils::getPoint(t2); constexpr double epsilon = 1e-6; if (epsilon < std::abs(p1.x - p2.x) || epsilon < std::abs(p1.y - p2.y)) { diff --git a/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/trajectory_utils.hpp b/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/trajectory_utils.hpp index acc40573ef542..a54d60835aadf 100644 --- a/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/trajectory_utils.hpp +++ b/planning/autoware_path_optimizer/include/autoware/path_optimizer/utils/trajectory_utils.hpp @@ -35,7 +35,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template <> geometry_msgs::msg::Point getPoint(const autoware::path_optimizer::ReferencePoint & p); @@ -45,7 +45,7 @@ geometry_msgs::msg::Pose getPose(const autoware::path_optimizer::ReferencePoint template <> double getLongitudinalVelocity(const autoware::path_optimizer::ReferencePoint & p); -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils namespace autoware::path_optimizer { @@ -61,14 +61,14 @@ std::optional getPointIndexAfter( } double sum_length = - -autoware_motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); + -autoware::motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); std::optional output_idx{std::nullopt}; // search forward if (sum_length < min_offset) { for (size_t i = target_seg_idx + 1; i < points.size(); ++i) { - sum_length += autoware_universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); + sum_length += autoware::universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); if (min_offset < sum_length) { output_idx = i - 1; } @@ -82,7 +82,7 @@ std::optional getPointIndexAfter( // search backward for (size_t i = target_seg_idx; 0 < i; --i) { // NOTE: use size_t since i is always positive value - sum_length -= autoware_universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); + sum_length -= autoware::universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); if (sum_length < min_offset) { output_idx = i - 1; } @@ -98,7 +98,7 @@ template TrajectoryPoint convertToTrajectoryPoint(const T & point) { TrajectoryPoint traj_point; - traj_point.pose = autoware_universe_utils::getPose(point); + traj_point.pose = autoware::universe_utils::getPose(point); traj_point.longitudinal_velocity_mps = point.longitudinal_velocity_mps; traj_point.lateral_velocity_mps = point.lateral_velocity_mps; traj_point.heading_rate_rps = point.heading_rate_rps; @@ -109,9 +109,9 @@ template <> inline TrajectoryPoint convertToTrajectoryPoint(const ReferencePoint & ref_point) { TrajectoryPoint traj_point; - traj_point.pose = autoware_universe_utils::getPose(ref_point); + traj_point.pose = autoware::universe_utils::getPose(ref_point); traj_point.longitudinal_velocity_mps = - autoware_universe_utils::getLongitudinalVelocity(ref_point); + autoware::universe_utils::getLongitudinalVelocity(ref_point); return traj_point; } @@ -144,7 +144,7 @@ size_t findEgoIndex( const std::vector & points, const geometry_msgs::msg::Pose & ego_pose, const EgoNearestParam & ego_nearest_param) { - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( points, ego_pose, ego_nearest_param.dist_threshold, ego_nearest_param.yaw_threshold); } @@ -153,7 +153,7 @@ size_t findEgoSegmentIndex( const std::vector & points, const geometry_msgs::msg::Pose & ego_pose, const EgoNearestParam & ego_nearest_param) { - return autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( points, ego_pose, ego_nearest_param.dist_threshold, ego_nearest_param.yaw_threshold); } @@ -173,13 +173,13 @@ std::optional updateFrontPointForFix( { // calculate front point to insert in points as a fixed point const size_t front_seg_idx_for_fix = trajectory_utils::findEgoSegmentIndex( - points_for_fix, autoware_universe_utils::getPose(points.front()), ego_nearest_param); + points_for_fix, autoware::universe_utils::getPose(points.front()), ego_nearest_param); const size_t front_point_idx_for_fix = front_seg_idx_for_fix; const auto & front_fix_point = points_for_fix.at(front_point_idx_for_fix); // check if the points_for_fix is longer in front than points const double lon_offset_to_prev_front = - autoware_motion_utils::calcSignedArcLength(points, 0, front_fix_point.pose.position); + autoware::motion_utils::calcSignedArcLength(points, 0, front_fix_point.pose.position); if (0 < lon_offset_to_prev_front) { RCLCPP_DEBUG( rclcpp::get_logger("autoware_path_optimizer.trajectory_utils"), @@ -187,7 +187,7 @@ std::optional updateFrontPointForFix( return std::nullopt; } - const double dist = autoware_universe_utils::calcDistance2d(points.front(), front_fix_point); + const double dist = autoware::universe_utils::calcDistance2d(points.front(), front_fix_point); // check if deviation is not too large constexpr double max_lat_error = 3.0; diff --git a/planning/autoware_path_optimizer/src/debug_marker.cpp b/planning/autoware_path_optimizer/src/debug_marker.cpp index eea6ada555044..397c334eca5b7 100644 --- a/planning/autoware_path_optimizer/src/debug_marker.cpp +++ b/planning/autoware_path_optimizer/src/debug_marker.cpp @@ -20,10 +20,10 @@ namespace autoware::path_optimizer { -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; namespace { @@ -53,16 +53,16 @@ MarkerArray getFootprintsMarkerArray( const double base_to_rear = vehicle_info.rear_overhang_m; marker.points.push_back( - autoware_universe_utils::calcOffsetPose(traj_point.pose, base_to_front, base_to_left, 0.0) + autoware::universe_utils::calcOffsetPose(traj_point.pose, base_to_front, base_to_left, 0.0) .position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(traj_point.pose, base_to_front, -base_to_right, 0.0) + autoware::universe_utils::calcOffsetPose(traj_point.pose, base_to_front, -base_to_right, 0.0) .position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(traj_point.pose, -base_to_rear, -base_to_right, 0.0) + autoware::universe_utils::calcOffsetPose(traj_point.pose, -base_to_rear, -base_to_right, 0.0) .position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(traj_point.pose, -base_to_rear, base_to_left, 0.0) + autoware::universe_utils::calcOffsetPose(traj_point.pose, -base_to_rear, base_to_left, 0.0) .position); marker.points.push_back(marker.points.front()); @@ -110,7 +110,7 @@ MarkerArray getBoundsWidthMarkerArray( (vehicle_info.wheel_tread_m / 2.0) + vehicle_info.right_overhang_m; const double lb_y = ref_points.at(i).bounds_on_constraints.at(bound_idx).lower_bound - base_to_right; - const auto lb = autoware_universe_utils::calcOffsetPose(pose, 0.0, lb_y, 0.0).position; + const auto lb = autoware::universe_utils::calcOffsetPose(pose, 0.0, lb_y, 0.0).position; lb_marker.points.push_back(pose.position); lb_marker.points.push_back(lb); @@ -132,7 +132,7 @@ MarkerArray getBoundsWidthMarkerArray( (vehicle_info.wheel_tread_m / 2.0) + vehicle_info.left_overhang_m; const double ub_y = ref_points.at(i).bounds_on_constraints.at(bound_idx).upper_bound + base_to_left; - const auto ub = autoware_universe_utils::calcOffsetPose(pose, 0.0, ub_y, 0.0).position; + const auto ub = autoware::universe_utils::calcOffsetPose(pose, 0.0, ub_y, 0.0).position; ub_marker.points.push_back(pose.position); ub_marker.points.push_back(ub); @@ -167,11 +167,11 @@ MarkerArray getBoundsLineMarkerArray( const double base_to_right = (vehicle_info.wheel_tread_m / 2.0) + vehicle_info.right_overhang_m; const double base_to_left = (vehicle_info.wheel_tread_m / 2.0) + vehicle_info.left_overhang_m; const double ub_y = ref_points.at(i).bounds.upper_bound + base_to_left; - const auto ub = autoware_universe_utils::calcOffsetPose(pose, 0.0, ub_y, 0.0).position; + const auto ub = autoware::universe_utils::calcOffsetPose(pose, 0.0, ub_y, 0.0).position; ub_marker.points.push_back(ub); const double lb_y = ref_points.at(i).bounds.lower_bound - base_to_right; - const auto lb = autoware_universe_utils::calcOffsetPose(pose, 0.0, lb_y, 0.0).position; + const auto lb = autoware::universe_utils::calcOffsetPose(pose, 0.0, lb_y, 0.0).position; lb_marker.points.push_back(lb); } marker_array.markers.push_back(ub_marker); @@ -205,22 +205,22 @@ MarkerArray getVehicleCircleLinesMarkerArray( // apply lateral and yaw deviation auto pose_with_deviation = - autoware_universe_utils::calcOffsetPose(ref_point.pose, 0.0, lat_dev, 0.0); + autoware::universe_utils::calcOffsetPose(ref_point.pose, 0.0, lat_dev, 0.0); pose_with_deviation.orientation = - autoware_universe_utils::createQuaternionFromYaw(ref_point.getYaw() + yaw_dev); + autoware::universe_utils::createQuaternionFromYaw(ref_point.getYaw() + yaw_dev); for (const double d : vehicle_circle_longitudinal_offsets) { // apply longitudinal offset - auto base_pose = autoware_universe_utils::calcOffsetPose(pose_with_deviation, d, 0.0, 0.0); + auto base_pose = autoware::universe_utils::calcOffsetPose(pose_with_deviation, d, 0.0, 0.0); base_pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(ref_point.getYaw() + ref_point.alpha); + autoware::universe_utils::createQuaternionFromYaw(ref_point.getYaw() + ref_point.alpha); const double base_to_right = (vehicle_info.wheel_tread_m / 2.0) + vehicle_info.right_overhang_m; const double base_to_left = (vehicle_info.wheel_tread_m / 2.0) + vehicle_info.left_overhang_m; const auto ub = - autoware_universe_utils::calcOffsetPose(base_pose, 0.0, base_to_left, 0.0).position; + autoware::universe_utils::calcOffsetPose(base_pose, 0.0, base_to_left, 0.0).position; const auto lb = - autoware_universe_utils::calcOffsetPose(base_pose, 0.0, -base_to_right, 0.0).position; + autoware::universe_utils::calcOffsetPose(base_pose, 0.0, -base_to_right, 0.0).position; marker.points.push_back(ub); marker.points.push_back(lb); @@ -247,7 +247,7 @@ MarkerArray getCurrentVehicleCirclesMarkerArray( "map", rclcpp::Clock().now(), ns, id, Marker::LINE_STRIP, createMarkerScale(0.05, 0.0, 0.0), createMarkerColor(r, g, b, 0.8)); marker.lifetime = rclcpp::Duration::from_seconds(1.5); - marker.pose = autoware_universe_utils::calcOffsetPose(ego_pose, offset, 0.0, 0.0); + marker.pose = autoware::universe_utils::calcOffsetPose(ego_pose, offset, 0.0, 0.0); constexpr size_t circle_dividing_num = 16; for (size_t e_idx = 0; e_idx < circle_dividing_num + 1; ++e_idx) { @@ -289,7 +289,7 @@ MarkerArray getVehicleCirclesMarkerArray( "map", rclcpp::Clock().now(), ns, id, Marker::LINE_STRIP, createMarkerScale(0.05, 0.0, 0.0), createMarkerColor(r, g, b, 0.8)); marker.lifetime = rclcpp::Duration::from_seconds(1.5); - marker.pose = autoware_universe_utils::calcOffsetPose(mpt_traj_point.pose, offset, 0.0, 0.0); + marker.pose = autoware::universe_utils::calcOffsetPose(mpt_traj_point.pose, offset, 0.0, 0.0); constexpr size_t circle_dividing_num = 16; for (size_t e_idx = 0; e_idx < circle_dividing_num + 1; ++e_idx) { @@ -356,15 +356,15 @@ visualization_msgs::msg::MarkerArray getFootprintByDrivableAreaMarkerArray( const double base_to_rear = vehicle_info.rear_overhang_m; marker.points.push_back( - autoware_universe_utils::calcOffsetPose(stop_pose, base_to_front, base_to_left, 0.0).position); + autoware::universe_utils::calcOffsetPose(stop_pose, base_to_front, base_to_left, 0.0).position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(stop_pose, base_to_front, -base_to_right, 0.0) + autoware::universe_utils::calcOffsetPose(stop_pose, base_to_front, -base_to_right, 0.0) .position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(stop_pose, -base_to_rear, -base_to_right, 0.0) + autoware::universe_utils::calcOffsetPose(stop_pose, -base_to_rear, -base_to_right, 0.0) .position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(stop_pose, -base_to_rear, base_to_left, 0.0).position); + autoware::universe_utils::calcOffsetPose(stop_pose, -base_to_rear, base_to_left, 0.0).position); marker.points.push_back(marker.points.front()); msg.markers.push_back(marker); diff --git a/planning/autoware_path_optimizer/src/mpt_optimizer.cpp b/planning/autoware_path_optimizer/src/mpt_optimizer.cpp index 7ecb7543d0463..b5fd266006a48 100644 --- a/planning/autoware_path_optimizer/src/mpt_optimizer.cpp +++ b/planning/autoware_path_optimizer/src/mpt_optimizer.cpp @@ -125,8 +125,8 @@ std::vector toStdVector(const Eigen::VectorXd & eigen_vec) bool isLeft(const geometry_msgs::msg::Pose & pose, const geometry_msgs::msg::Point & target_pos) { const double base_theta = tf2::getYaw(pose.orientation); - const double target_theta = autoware_universe_utils::calcAzimuthAngle(pose.position, target_pos); - const double diff_theta = autoware_universe_utils::normalizeRadian(target_theta - base_theta); + const double target_theta = autoware::universe_utils::calcAzimuthAngle(pose.position, target_pos); + const double diff_theta = autoware::universe_utils::normalizeRadian(target_theta - base_theta); return diff_theta > 0; } @@ -141,18 +141,18 @@ double calcLateralDistToBounds( const double max_lat_offset = is_left_bound ? max_lat_offset_for_left : -max_lat_offset_for_left; const double min_lat_offset = is_left_bound ? min_lat_offset_for_left : -min_lat_offset_for_left; const auto max_lat_offset_point = - autoware_universe_utils::calcOffsetPose(pose, 0.0, max_lat_offset, 0.0).position; + autoware::universe_utils::calcOffsetPose(pose, 0.0, max_lat_offset, 0.0).position; const auto min_lat_offset_point = - autoware_universe_utils::calcOffsetPose(pose, 0.0, min_lat_offset, 0.0).position; + autoware::universe_utils::calcOffsetPose(pose, 0.0, min_lat_offset, 0.0).position; double closest_dist_to_bound = max_lat_offset; for (size_t i = 0; i < bound.size() - 1; ++i) { - const auto intersect_point = autoware_universe_utils::intersect( + const auto intersect_point = autoware::universe_utils::intersect( min_lat_offset_point, max_lat_offset_point, bound.at(i), bound.at(i + 1)); if (intersect_point) { const bool is_point_left = isLeft(pose, *intersect_point); const double dist_to_bound = - autoware_universe_utils::calcDistance2d(pose.position, *intersect_point) * + autoware::universe_utils::calcDistance2d(pose.position, *intersect_point) * (is_point_left ? 1.0 : -1.0); // the bound which is closest to the centerline will be chosen @@ -283,7 +283,7 @@ MPTOptimizer::MPTParam::MPTParam( void MPTOptimizer::MPTParam::onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; { // option updateParam(parameters, "mpt.option.steer_limit_constraint", steer_limit_constraint); @@ -564,7 +564,7 @@ std::vector MPTOptimizer::calcReferencePoints( constexpr double tmp_margin = 10.0; size_t ego_seg_idx = trajectory_utils::findEgoSegmentIndex(ref_points, p.ego_pose, ego_nearest_param_); - ref_points = autoware_motion_utils::cropPoints( + ref_points = autoware::motion_utils::cropPoints( ref_points, p.ego_pose.position, ego_seg_idx, forward_traj_length + tmp_margin, backward_traj_length + tmp_margin); @@ -579,7 +579,7 @@ std::vector MPTOptimizer::calcReferencePoints( // 4. crop backward // NOTE: Start point may change. Spline calculation is required. - ref_points = autoware_motion_utils::cropPoints( + ref_points = autoware::motion_utils::cropPoints( ref_points, p.ego_pose.position, ego_seg_idx, forward_traj_length + tmp_margin, backward_traj_length); ref_points_spline = SplineInterpolationPoints2d(ref_points); @@ -605,7 +605,7 @@ std::vector MPTOptimizer::calcReferencePoints( updateExtraPoints(ref_points); // 9. crop forward - // ref_points = autoware_motion_utils::cropForwardPoints( + // ref_points = autoware::motion_utils::cropForwardPoints( // ref_points, p.ego_pose.position, ego_seg_idx, forward_traj_length); if (static_cast(mpt_param_.num_points) < ref_points.size()) { ref_points.resize(mpt_param_.num_points); @@ -623,7 +623,7 @@ void MPTOptimizer::updateOrientation( const auto yaw_vec = ref_points_spline.getSplineInterpolatedYaws(); for (size_t i = 0; i < ref_points.size(); ++i) { ref_points.at(i).pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw_vec.at(i)); + autoware::universe_utils::createQuaternionFromYaw(yaw_vec.at(i)); } } @@ -691,7 +691,7 @@ void MPTOptimizer::updateDeltaArcLength(std::vector & ref_points ref_points.at(i).delta_arc_length = (i == ref_points.size() - 1) ? 0.0 - : autoware_universe_utils::calcDistance2d(ref_points.at(i + 1), ref_points.at(i)); + : autoware::universe_utils::calcDistance2d(ref_points.at(i + 1), ref_points.at(i)); } } @@ -704,14 +704,14 @@ void MPTOptimizer::updateExtraPoints(std::vector & ref_points) c const auto front_wheel_pos = trajectory_utils::getNearestPosition(ref_points, i, vehicle_info_.wheel_base_m); - const bool are_too_close_points = autoware_universe_utils::calcDistance2d( + const bool are_too_close_points = autoware::universe_utils::calcDistance2d( front_wheel_pos, ref_points.at(i).pose.position) < 1e-03; const auto front_wheel_yaw = are_too_close_points ? ref_points.at(i).getYaw() - : autoware_universe_utils::calcAzimuthAngle( + : autoware::universe_utils::calcAzimuthAngle( ref_points.at(i).pose.position, front_wheel_pos); ref_points.at(i).alpha = - autoware_universe_utils::normalizeRadian(front_wheel_yaw - ref_points.at(i).getYaw()); + autoware::universe_utils::normalizeRadian(front_wheel_yaw - ref_points.at(i).getYaw()); } { // avoidance @@ -771,10 +771,10 @@ void MPTOptimizer::updateExtraPoints(std::vector & ref_points) c if (prev_ref_points_ptr_ && !prev_ref_points_ptr_->empty()) { for (int i = 0; i < static_cast(ref_points.size()); ++i) { const size_t prev_idx = trajectory_utils::findEgoIndex( - *prev_ref_points_ptr_, autoware_universe_utils::getPose(ref_points.at(i)), + *prev_ref_points_ptr_, autoware::universe_utils::getPose(ref_points.at(i)), ego_nearest_param_); - const double dist_to_prev = autoware_universe_utils::calcDistance2d( + const double dist_to_prev = autoware::universe_utils::calcDistance2d( ref_points.at(i), prev_ref_points_ptr_->at(prev_idx)); if (max_dist_threshold < dist_to_prev) { continue; @@ -954,7 +954,6 @@ void MPTOptimizer::keepMinimumBoundsWidth(std::vector & ref_poin // much. b.lower_bound = std::min(b.lower_bound, original_b.upper_bound - min_dynamic_drivable_width_vec.at(p_idx)); - continue; } // extend longitudinal if it overlaps out_of_upper_bound_sections if (upper_bound_start_idx) { @@ -1004,7 +1003,6 @@ void MPTOptimizer::keepMinimumBoundsWidth(std::vector & ref_poin // much. b.upper_bound = std::max(b.upper_bound, original_b.lower_bound + min_dynamic_drivable_width_vec.at(p_idx)); - continue; } // extend longitudinal if it overlaps out_of_lower_bound_sections if (lower_bound_start_idx) { @@ -1081,7 +1079,7 @@ void MPTOptimizer::avoidSuddenSteering( return; } const size_t prev_ego_idx = trajectory_utils::findEgoIndex( - *prev_ref_points_ptr_, autoware_universe_utils::getPose(ref_points.front()), + *prev_ref_points_ptr_, autoware::universe_utils::getPose(ref_points.front()), ego_nearest_param_); const double max_bound_fixing_length = ego_vel * mpt_param_.max_bound_fixing_time; @@ -1129,11 +1127,11 @@ void MPTOptimizer::updateVehicleBounds( collision_check_pose.position.y - ref_point.pose.position.y, collision_check_pose.position.x - ref_point.pose.position.x); const double offset_y = - -autoware_universe_utils::calcDistance2d(ref_point, collision_check_pose) * + -autoware::universe_utils::calcDistance2d(ref_point, collision_check_pose) * std::sin(tmp_yaw - collision_check_yaw); const auto vehicle_bounds_pose = - autoware_universe_utils::calcOffsetPose(collision_check_pose, 0.0, offset_y, 0.0); + autoware::universe_utils::calcOffsetPose(collision_check_pose, 0.0, offset_y, 0.0); // interpolate bounds const auto bounds = [&]() { @@ -1587,7 +1585,7 @@ Eigen::VectorXd MPTOptimizer::calcInitialSolutionForManualWarmStart( Eigen::VectorXd u0 = Eigen::VectorXd::Zero(D_un); - const size_t nearest_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const size_t nearest_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( prev_ref_points, ref_points.front().pose, ego_nearest_param_.dist_threshold, ego_nearest_param_.yaw_threshold); @@ -1713,17 +1711,17 @@ void MPTOptimizer::publishDebugTrajectories( time_keeper_ptr_->tic(__func__); // reference points - const auto ref_traj = autoware_motion_utils::convertToTrajectory( + const auto ref_traj = autoware::motion_utils::convertToTrajectory( trajectory_utils::convertToTrajectoryPoints(ref_points), header); debug_ref_traj_pub_->publish(ref_traj); // fixed reference points const auto fixed_traj_points = extractFixedPoints(ref_points); - const auto fixed_traj = autoware_motion_utils::convertToTrajectory(fixed_traj_points, header); + const auto fixed_traj = autoware::motion_utils::convertToTrajectory(fixed_traj_points, header); debug_fixed_traj_pub_->publish(fixed_traj); // mpt points - const auto mpt_traj = autoware_motion_utils::convertToTrajectory(mpt_traj_points, header); + const auto mpt_traj = autoware::motion_utils::convertToTrajectory(mpt_traj_points, header); debug_mpt_traj_pub_->publish(mpt_traj); time_keeper_ptr_->toc(__func__, " "); diff --git a/planning/autoware_path_optimizer/src/node.cpp b/planning/autoware_path_optimizer/src/node.cpp index 46fb7d0d5bb95..3899867a9dcce 100644 --- a/planning/autoware_path_optimizer/src/node.cpp +++ b/planning/autoware_path_optimizer/src/node.cpp @@ -56,7 +56,7 @@ Float64Stamped createFloat64Stamped(const rclcpp::Time & now, const float & data void setZeroVelocityAfterStopPoint(std::vector & traj_points) { - const auto opt_zero_vel_idx = autoware_motion_utils::searchZeroVelocityIndex(traj_points); + const auto opt_zero_vel_idx = autoware::motion_utils::searchZeroVelocityIndex(traj_points); if (opt_zero_vel_idx) { for (size_t i = opt_zero_vel_idx.value(); i < traj_points.size(); ++i) { traj_points.at(i).longitudinal_velocity_mps = 0.0; @@ -75,7 +75,7 @@ std::vector calcSegmentLengthVector(const std::vector & std::vector segment_length_vector; for (size_t i = 0; i < points.size() - 1; ++i) { const double segment_length = - autoware_universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); + autoware::universe_utils::calcDistance2d(points.at(i), points.at(i + 1)); segment_length_vector.push_back(segment_length); } return segment_length_vector; @@ -150,15 +150,15 @@ PathOptimizer::PathOptimizer(const rclcpp::NodeOptions & node_options) set_param_res_ = this->add_on_set_parameters_callback( std::bind(&PathOptimizer::onParam, this, std::placeholders::_1)); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } rcl_interfaces::msg::SetParametersResult PathOptimizer::onParam( const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; // parameters for option updateParam( @@ -246,7 +246,7 @@ void PathOptimizer::onPath(const Path::ConstSharedPtr path_ptr) const auto traj_points = trajectory_utils::convertToTrajectoryPoints(path_ptr->points); const auto output_traj_msg = - autoware_motion_utils::convertToTrajectory(traj_points, path_ptr->header); + autoware::motion_utils::convertToTrajectory(traj_points, path_ptr->header); traj_pub_->publish(output_traj_msg); published_time_publisher_->publish_if_subscribed(traj_pub_, output_traj_msg.header.stamp); return; @@ -279,7 +279,7 @@ void PathOptimizer::onPath(const Path::ConstSharedPtr path_ptr) createFloat64Stamped(now(), time_keeper_ptr_->getAccumulatedTime())); const auto output_traj_msg = - autoware_motion_utils::convertToTrajectory(full_traj_points, path_ptr->header); + autoware::motion_utils::convertToTrajectory(full_traj_points, path_ptr->header); traj_pub_->publish(output_traj_msg); published_time_publisher_->publish_if_subscribed(traj_pub_, output_traj_msg.header.stamp); } @@ -400,7 +400,7 @@ void PathOptimizer::applyInputVelocity( const size_t ego_seg_idx = trajectory_utils::findEgoSegmentIndex(input_traj_points, ego_pose, ego_nearest_param_); - const auto cropped_points = autoware_motion_utils::cropForwardPoints( + const auto cropped_points = autoware::motion_utils::cropForwardPoints( input_traj_points, ego_pose.position, ego_seg_idx, optimized_traj_length + margin_traj_length); @@ -453,14 +453,14 @@ void PathOptimizer::applyInputVelocity( // insert stop point explicitly const auto stop_idx = - autoware_motion_utils::searchZeroVelocityIndex(forward_cropped_input_traj_points); + autoware::motion_utils::searchZeroVelocityIndex(forward_cropped_input_traj_points); if (stop_idx) { const auto & input_stop_pose = forward_cropped_input_traj_points.at(stop_idx.value()).pose; - // NOTE: autoware_motion_utils::findNearestSegmentIndex is used instead of + // NOTE: autoware::motion_utils::findNearestSegmentIndex is used instead of // trajectory_utils::findEgoSegmentIndex // for the case where input_traj_points is much longer than output_traj_points, and the // former has a stop point but the latter will not have. - const auto stop_seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const auto stop_seg_idx = autoware::motion_utils::findNearestSegmentIndex( output_traj_points, input_stop_pose, ego_nearest_param_.dist_threshold, ego_nearest_param_.yaw_threshold); @@ -471,9 +471,9 @@ void PathOptimizer::applyInputVelocity( } if (*stop_seg_idx == output_traj_points.size() - 2) { const double signed_projected_length_to_segment = - autoware_motion_utils::calcLongitudinalOffsetToSegment( + autoware::motion_utils::calcLongitudinalOffsetToSegment( output_traj_points, *stop_seg_idx, input_stop_pose.position); - const double segment_length = autoware_motion_utils::calcSignedArcLength( + const double segment_length = autoware::motion_utils::calcSignedArcLength( output_traj_points, *stop_seg_idx, *stop_seg_idx + 1); if (segment_length < signed_projected_length_to_segment) { // NOTE: input_stop_pose is outside output_traj_points. @@ -533,10 +533,10 @@ void PathOptimizer::insertZeroVelocityOutsideDrivableArea( debug_data_ptr_->stop_pose_by_drivable_area = optimized_traj_points.at(*first_outside_idx).pose; const auto stop_idx = [&]() { const auto dist = - autoware_motion_utils::calcSignedArcLength(optimized_traj_points, 0, *first_outside_idx); + autoware::motion_utils::calcSignedArcLength(optimized_traj_points, 0, *first_outside_idx); const auto dist_with_margin = dist - vehicle_stop_margin_outside_drivable_area_; const auto first_outside_idx_with_margin = - autoware_motion_utils::insertTargetPoint(0, dist_with_margin, optimized_traj_points); + autoware::motion_utils::insertTargetPoint(0, dist_with_margin, optimized_traj_points); if (first_outside_idx_with_margin) { return *first_outside_idx_with_margin; } @@ -561,11 +561,11 @@ void PathOptimizer::publishVirtualWall(const geometry_msgs::msg::Pose & stop_pos { time_keeper_ptr_->tic(__func__); - auto virtual_wall_marker = autoware_motion_utils::createStopVirtualWallMarker( + auto virtual_wall_marker = autoware::motion_utils::createStopVirtualWallMarker( stop_pose, "outside drivable area", now(), 0, vehicle_info_.max_longitudinal_offset_m); if (!enable_outside_drivable_area_stop_) { virtual_wall_marker.markers.front().color = - autoware_universe_utils::createMarkerColor(0.0, 1.0, 0.0, 0.5); + autoware::universe_utils::createMarkerColor(0.0, 1.0, 0.0, 0.5); } virtual_wall_pub_->publish(virtual_wall_marker); @@ -664,7 +664,7 @@ void PathOptimizer::publishDebugData(const Header & header) const // publish trajectories const auto debug_extended_traj = - autoware_motion_utils::convertToTrajectory(debug_data_ptr_->extended_traj_points, header); + autoware::motion_utils::convertToTrajectory(debug_data_ptr_->extended_traj_points, header); debug_extended_traj_pub_->publish(debug_extended_traj); time_keeper_ptr_->toc(__func__, " "); diff --git a/planning/autoware_path_optimizer/src/replan_checker.cpp b/planning/autoware_path_optimizer/src/replan_checker.cpp index 9228631b80afa..11e31bfd2d459 100644 --- a/planning/autoware_path_optimizer/src/replan_checker.cpp +++ b/planning/autoware_path_optimizer/src/replan_checker.cpp @@ -39,7 +39,7 @@ ReplanChecker::ReplanChecker(rclcpp::Node * node, const EgoNearestParam & ego_ne void ReplanChecker::onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; updateParam( parameters, "replan.max_path_shape_around_ego_lat_dist", max_path_shape_around_ego_lat_dist_); @@ -78,7 +78,7 @@ bool ReplanChecker::isResetRequired(const PlannerData & planner_data) const // ego pose is lost or new ego pose is designated in simulation const double delta_dist = - autoware_universe_utils::calcDistance2d(p.ego_pose, prev_ego_pose_ptr_->position); + autoware::universe_utils::calcDistance2d(p.ego_pose, prev_ego_pose_ptr_->position); if (max_ego_moving_dist_ < delta_dist) { RCLCPP_DEBUG( logger_, @@ -144,14 +144,14 @@ bool ReplanChecker::isPathAroundEgoChanged( // calculate ego's lateral offset to previous trajectory points const auto prev_ego_seg_idx = trajectory_utils::findEgoSegmentIndex(prev_traj_points, p.ego_pose, ego_nearest_param_); - const double prev_ego_lat_offset = autoware_motion_utils::calcLateralOffset( + const double prev_ego_lat_offset = autoware::motion_utils::calcLateralOffset( prev_traj_points, p.ego_pose.position, prev_ego_seg_idx); // calculate ego's lateral offset to current trajectory points const auto ego_seg_idx = trajectory_utils::findEgoSegmentIndex(p.traj_points, p.ego_pose, ego_nearest_param_); const double ego_lat_offset = - autoware_motion_utils::calcLateralOffset(p.traj_points, p.ego_pose.position, ego_seg_idx); + autoware::motion_utils::calcLateralOffset(p.traj_points, p.ego_pose.position, ego_seg_idx); const double diff_ego_lat_offset = prev_ego_lat_offset - ego_lat_offset; if (std::abs(diff_ego_lat_offset) < max_path_shape_around_ego_lat_dist_) { @@ -174,7 +174,7 @@ bool ReplanChecker::isPathForwardChanged( constexpr double lon_dist_interval = 10.0; for (double lon_dist = lon_dist_interval; lon_dist <= max_path_shape_forward_lon_dist_; lon_dist += lon_dist_interval) { - const auto prev_forward_point = autoware_motion_utils::calcLongitudinalOffsetPoint( + const auto prev_forward_point = autoware::motion_utils::calcLongitudinalOffsetPoint( prev_traj_points, prev_ego_seg_idx, lon_dist); if (!prev_forward_point) { continue; @@ -182,9 +182,9 @@ bool ReplanChecker::isPathForwardChanged( // calculate lateral offset of current trajectory points to prev forward point const auto forward_seg_idx = - autoware_motion_utils::findNearestSegmentIndex(p.traj_points, *prev_forward_point); - const double forward_lat_offset = - autoware_motion_utils::calcLateralOffset(p.traj_points, *prev_forward_point, forward_seg_idx); + autoware::motion_utils::findNearestSegmentIndex(p.traj_points, *prev_forward_point); + const double forward_lat_offset = autoware::motion_utils::calcLateralOffset( + p.traj_points, *prev_forward_point, forward_seg_idx); if (max_path_shape_forward_lat_dist_ < std::abs(forward_lat_offset)) { return true; } @@ -205,7 +205,7 @@ bool ReplanChecker::isPathGoalChanged( } const double goal_moving_dist = - autoware_universe_utils::calcDistance2d(p.traj_points.back(), prev_traj_points.back()); + autoware::universe_utils::calcDistance2d(p.traj_points.back(), prev_traj_points.back()); if (goal_moving_dist < max_goal_moving_dist_) { return false; } diff --git a/planning/autoware_path_optimizer/src/utils/geometry_utils.cpp b/planning/autoware_path_optimizer/src/utils/geometry_utils.cpp index a94f8b4bbabe7..bed9bbfa500c6 100644 --- a/planning/autoware_path_optimizer/src/utils/geometry_utils.cpp +++ b/planning/autoware_path_optimizer/src/utils/geometry_utils.cpp @@ -39,17 +39,17 @@ namespace autoware::path_optimizer { namespace bg = boost::geometry; -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::LineString2d; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::LineString2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; namespace { geometry_msgs::msg::Point getStartPoint( const std::vector & bound, const geometry_msgs::msg::Point & point) { - const size_t segment_idx = autoware_motion_utils::findNearestSegmentIndex(bound, point); + const size_t segment_idx = autoware::motion_utils::findNearestSegmentIndex(bound, point); const auto & curr_seg_point = bound.at(segment_idx); const auto & next_seg_point = bound.at(segment_idx); const Eigen::Vector2d first_to_target{point.x - curr_seg_point.x, point.y - curr_seg_point.y}; @@ -62,7 +62,7 @@ geometry_msgs::msg::Point getStartPoint( } const auto first_point = - autoware_motion_utils::calcLongitudinalOffsetPoint(bound, segment_idx, length); + autoware::motion_utils::calcLongitudinalOffsetPoint(bound, segment_idx, length); if (first_point) { return *first_point; } @@ -86,7 +86,7 @@ bool isFrontDrivableArea( // ignore point behind of the front line const std::vector front_bound = {left_start_point, right_start_point}; const double lat_dist_to_front_bound = - autoware_motion_utils::calcLateralOffset(front_bound, point); + autoware::motion_utils::calcLateralOffset(front_bound, point); if (lat_dist_to_front_bound < min_dist) { return true; } @@ -136,13 +136,13 @@ bool isOutsideDrivableAreaFromRectangleFootprint( // calculate footprint corner points const auto top_left_pos = - autoware_universe_utils::calcOffsetPose(pose, base_to_front, base_to_left, 0.0).position; + autoware::universe_utils::calcOffsetPose(pose, base_to_front, base_to_left, 0.0).position; const auto top_right_pos = - autoware_universe_utils::calcOffsetPose(pose, base_to_front, -base_to_right, 0.0).position; + autoware::universe_utils::calcOffsetPose(pose, base_to_front, -base_to_right, 0.0).position; const auto bottom_right_pos = - autoware_universe_utils::calcOffsetPose(pose, -base_to_rear, -base_to_right, 0.0).position; + autoware::universe_utils::calcOffsetPose(pose, -base_to_rear, -base_to_right, 0.0).position; const auto bottom_left_pos = - autoware_universe_utils::calcOffsetPose(pose, -base_to_rear, base_to_left, 0.0).position; + autoware::universe_utils::calcOffsetPose(pose, -base_to_rear, base_to_left, 0.0).position; if (use_footprint_polygon_for_outside_drivable_area_check) { // calculate footprint polygon diff --git a/planning/autoware_path_optimizer/src/utils/trajectory_utils.cpp b/planning/autoware_path_optimizer/src/utils/trajectory_utils.cpp index a1b429ae2357e..433d1d0995088 100644 --- a/planning/autoware_path_optimizer/src/utils/trajectory_utils.cpp +++ b/planning/autoware_path_optimizer/src/utils/trajectory_utils.cpp @@ -33,7 +33,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template <> geometry_msgs::msg::Point getPoint(const autoware::path_optimizer::ReferencePoint & p) @@ -52,7 +52,7 @@ double getLongitudinalVelocity(const autoware::path_optimizer::ReferencePoint & { return p.longitudinal_velocity_mps; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils namespace autoware::path_optimizer { @@ -108,12 +108,12 @@ void compensateLastPose( const geometry_msgs::msg::Pose last_traj_pose = traj_points.back().pose; - const double dist = - autoware_universe_utils::calcDistance2d(last_path_point.pose.position, last_traj_pose.position); + const double dist = autoware::universe_utils::calcDistance2d( + last_path_point.pose.position, last_traj_pose.position); const double norm_diff_yaw = [&]() { const double diff_yaw = tf2::getYaw(last_path_point.pose.orientation) - tf2::getYaw(last_traj_pose.orientation); - return autoware_universe_utils::normalizeRadian(diff_yaw); + return autoware::universe_utils::normalizeRadian(diff_yaw); }(); if (dist > delta_dist_threshold || std::fabs(norm_diff_yaw) > delta_yaw_threshold) { traj_points.push_back(convertToTrajectoryPoint(last_path_point)); @@ -140,10 +140,10 @@ std::vector resampleTrajectoryPoints( { constexpr bool enable_resampling_stop_point = true; - const auto traj = autoware_motion_utils::convertToTrajectory(traj_points); - const auto resampled_traj = autoware_motion_utils::resampleTrajectory( + const auto traj = autoware::motion_utils::convertToTrajectory(traj_points); + const auto resampled_traj = autoware::motion_utils::resampleTrajectory( traj, interval, false, true, true, enable_resampling_stop_point); - return autoware_motion_utils::convertToTrajectoryPointArray(resampled_traj); + return autoware::motion_utils::convertToTrajectoryPointArray(resampled_traj); } // NOTE: stop point will not be resampled @@ -152,10 +152,10 @@ std::vector resampleTrajectoryPointsWithoutStopPoint( { constexpr bool enable_resampling_stop_point = false; - const auto traj = autoware_motion_utils::convertToTrajectory(traj_points); - const auto resampled_traj = autoware_motion_utils::resampleTrajectory( + const auto traj = autoware::motion_utils::convertToTrajectory(traj_points); + const auto resampled_traj = autoware::motion_utils::resampleTrajectory( traj, interval, false, true, true, enable_resampling_stop_point); - return autoware_motion_utils::convertToTrajectoryPointArray(resampled_traj); + return autoware::motion_utils::convertToTrajectoryPointArray(resampled_traj); } std::vector resampleReferencePoints( @@ -175,7 +175,7 @@ std::vector resampleReferencePoints( base_keys.push_back(0.0); } else { const double delta_arc_length = - autoware_universe_utils::calcDistance2d(ref_points.at(i), ref_points.at(i - 1)); + autoware::universe_utils::calcDistance2d(ref_points.at(i), ref_points.at(i - 1)); base_keys.push_back(base_keys.back() + delta_arc_length); } @@ -187,7 +187,7 @@ std::vector resampleReferencePoints( if (i == 0) { query_keys.push_back(0.0); } else { - const double delta_arc_length = autoware_universe_utils::calcDistance2d( + const double delta_arc_length = autoware::universe_utils::calcDistance2d( resampled_ref_points.at(i), resampled_ref_points.at(i - 1)); const double key = query_keys.back() + delta_arc_length; if (base_keys.back() < key) { @@ -220,7 +220,7 @@ void insertStopPoint( std::vector & traj_points, const geometry_msgs::msg::Pose & input_stop_pose, const size_t stop_seg_idx) { - const double offset_to_segment = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double offset_to_segment = autoware::motion_utils::calcLongitudinalOffsetToSegment( traj_points, stop_seg_idx, input_stop_pose.position); const auto traj_spline = SplineInterpolationPoints2d(traj_points); diff --git a/planning/autoware_path_smoother/include/autoware/path_smoother/common_structs.hpp b/planning/autoware_path_smoother/include/autoware/path_smoother/common_structs.hpp index e26d13b94ecb0..0b7e28ee1cbb5 100644 --- a/planning/autoware_path_smoother/include/autoware/path_smoother/common_structs.hpp +++ b/planning/autoware_path_smoother/include/autoware/path_smoother/common_structs.hpp @@ -83,7 +83,7 @@ struct TimeKeeper double accumulated_time{0.0}; - autoware_universe_utils::StopWatch< + autoware::universe_utils::StopWatch< std::chrono::milliseconds, std::chrono::microseconds, std::chrono::steady_clock> stop_watch_; }; @@ -100,7 +100,7 @@ struct CommonParam void onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; // common updateParam( @@ -123,7 +123,7 @@ struct EgoNearestParam void onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; updateParam(parameters, "ego_nearest_dist_threshold", dist_threshold); updateParam(parameters, "ego_nearest_yaw_threshold", yaw_threshold); } diff --git a/planning/autoware_path_smoother/include/autoware/path_smoother/elastic_band_smoother.hpp b/planning/autoware_path_smoother/include/autoware/path_smoother/elastic_band_smoother.hpp index 6a2c3ef45f66b..2de74a4f14f4f 100644 --- a/planning/autoware_path_smoother/include/autoware/path_smoother/elastic_band_smoother.hpp +++ b/planning/autoware_path_smoother/include/autoware/path_smoother/elastic_band_smoother.hpp @@ -49,7 +49,7 @@ class ElasticBandSmoother : public rclcpp::Node public: bool isDrivingForward(const std::vector & path_points) { - const auto is_driving_forward = autoware_motion_utils::isDrivingForward(path_points); + const auto is_driving_forward = autoware::motion_utils::isDrivingForward(path_points); is_driving_forward_ = is_driving_forward ? is_driving_forward.value() : is_driving_forward_; return is_driving_forward_; } @@ -82,7 +82,7 @@ class ElasticBandSmoother : public rclcpp::Node // interface subscriber rclcpp::Subscription::SharedPtr path_sub_; - autoware_universe_utils::InterProcessPollingSubscriber odom_sub_{ + autoware::universe_utils::InterProcessPollingSubscriber odom_sub_{ this, "~/input/odometry"}; // debug publisher @@ -113,9 +113,9 @@ class ElasticBandSmoother : public rclcpp::Node const std::vector & traj_points, const std::vector & optimized_points) const; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace autoware::path_smoother diff --git a/planning/autoware_path_smoother/include/autoware/path_smoother/utils/geometry_utils.hpp b/planning/autoware_path_smoother/include/autoware/path_smoother/utils/geometry_utils.hpp index df9dbdf7f7e49..603ae8a91f944 100644 --- a/planning/autoware_path_smoother/include/autoware/path_smoother/utils/geometry_utils.hpp +++ b/planning/autoware_path_smoother/include/autoware/path_smoother/utils/geometry_utils.hpp @@ -24,8 +24,8 @@ namespace geometry_utils template bool isSamePoint(const T1 & t1, const T2 & t2) { - const auto p1 = autoware_universe_utils::getPoint(t1); - const auto p2 = autoware_universe_utils::getPoint(t2); + const auto p1 = autoware::universe_utils::getPoint(t1); + const auto p2 = autoware::universe_utils::getPoint(t2); constexpr double epsilon = 1e-6; return (std::abs(p1.x - p2.x) <= epsilon && std::abs(p1.y - p2.y) <= epsilon); diff --git a/planning/autoware_path_smoother/include/autoware/path_smoother/utils/trajectory_utils.hpp b/planning/autoware_path_smoother/include/autoware/path_smoother/utils/trajectory_utils.hpp index 715a3c35609a1..77a9dbae81a0c 100644 --- a/planning/autoware_path_smoother/include/autoware/path_smoother/utils/trajectory_utils.hpp +++ b/planning/autoware_path_smoother/include/autoware/path_smoother/utils/trajectory_utils.hpp @@ -49,14 +49,14 @@ std::optional getPointIndexAfter( } double sum_length = - -autoware_motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); + -autoware::motion_utils::calcLongitudinalOffsetToSegment(points, target_seg_idx, target_pos); std::optional output_idx{std::nullopt}; // search forward if (sum_length < min_offset) { for (size_t i = target_seg_idx + 1; i < points.size(); ++i) { - sum_length += autoware_universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); + sum_length += autoware::universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); if (min_offset < sum_length) { output_idx = i - 1; } @@ -70,7 +70,7 @@ std::optional getPointIndexAfter( // search backward for (size_t i = target_seg_idx; 0 < i; --i) { // NOTE: use size_t since i is always positive value - sum_length -= autoware_universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); + sum_length -= autoware::universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); if (sum_length < min_offset) { output_idx = i - 1; } @@ -86,7 +86,7 @@ template TrajectoryPoint convertToTrajectoryPoint(const T & point) { TrajectoryPoint traj_point; - traj_point.pose = autoware_universe_utils::getPose(point); + traj_point.pose = autoware::universe_utils::getPose(point); traj_point.longitudinal_velocity_mps = point.longitudinal_velocity_mps; traj_point.lateral_velocity_mps = point.lateral_velocity_mps; traj_point.heading_rate_rps = point.heading_rate_rps; @@ -109,7 +109,7 @@ size_t findEgoSegmentIndex( const std::vector & points, const geometry_msgs::msg::Pose & ego_pose, const EgoNearestParam & ego_nearest_param) { - return autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( points, ego_pose, ego_nearest_param.dist_threshold, ego_nearest_param.yaw_threshold); } @@ -128,13 +128,13 @@ std::optional updateFrontPointForFix( { // calculate front point to insert in points as a fixed point const size_t front_seg_idx_for_fix = trajectory_utils::findEgoSegmentIndex( - points_for_fix, autoware_universe_utils::getPose(points.front()), ego_nearest_param); + points_for_fix, autoware::universe_utils::getPose(points.front()), ego_nearest_param); const size_t front_point_idx_for_fix = front_seg_idx_for_fix; const auto & front_fix_point = points_for_fix.at(front_point_idx_for_fix); // check if the points_for_fix is longer in front than points const double lon_offset_to_prev_front = - autoware_motion_utils::calcSignedArcLength(points, 0, front_fix_point.pose.position); + autoware::motion_utils::calcSignedArcLength(points, 0, front_fix_point.pose.position); if (0 < lon_offset_to_prev_front) { RCLCPP_DEBUG( rclcpp::get_logger("autoware_path_smoother.trajectory_utils"), @@ -142,7 +142,7 @@ std::optional updateFrontPointForFix( return std::nullopt; } - const double dist = autoware_universe_utils::calcDistance2d(points.front(), front_fix_point); + const double dist = autoware::universe_utils::calcDistance2d(points.front(), front_fix_point); // check if deviation is not too large constexpr double max_lat_error = 3.0; diff --git a/planning/autoware_path_smoother/src/elastic_band.cpp b/planning/autoware_path_smoother/src/elastic_band.cpp index b0c5974eca036..4222e0fe98438 100644 --- a/planning/autoware_path_smoother/src/elastic_band.cpp +++ b/planning/autoware_path_smoother/src/elastic_band.cpp @@ -125,7 +125,7 @@ EBPathSmoother::EBParam::EBParam(rclcpp::Node * node) void EBPathSmoother::EBParam::onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; { // option updateParam(parameters, "elastic_band.option.enable_warm_start", enable_warm_start); @@ -212,7 +212,7 @@ std::vector EBPathSmoother::smoothTrajectory( const size_t ego_seg_idx = trajectory_utils::findEgoSegmentIndex(traj_points, ego_pose, ego_nearest_param_); - const auto cropped_traj_points = autoware_motion_utils::cropPoints( + const auto cropped_traj_points = autoware::motion_utils::cropPoints( traj_points, ego_pose.position, ego_seg_idx, forward_traj_length, backward_traj_length); // check if goal is contained in cropped_traj_points @@ -263,7 +263,7 @@ std::vector EBPathSmoother::smoothTrajectory( // 8. publish eb trajectory const auto eb_traj = - autoware_motion_utils::convertToTrajectory(*eb_traj_points, createHeader(clock_.now())); + autoware::motion_utils::convertToTrajectory(*eb_traj_points, createHeader(clock_.now())); debug_eb_traj_pub_->publish(eb_traj); time_keeper_ptr_->toc(__func__, " "); @@ -389,8 +389,8 @@ void EBPathSmoother::updateConstraint( } // publish fixed trajectory - const auto eb_fixed_traj = - autoware_motion_utils::convertToTrajectory(debug_fixed_traj_points, createHeader(clock_.now())); + const auto eb_fixed_traj = autoware::motion_utils::convertToTrajectory( + debug_fixed_traj_points, createHeader(clock_.now())); debug_eb_fixed_traj_pub_->publish(eb_fixed_traj); time_keeper_ptr_->toc(__func__, " "); @@ -443,12 +443,12 @@ std::optional> EBPathSmoother::convertOptimizedPoin auto eb_traj_point = traj_points.at(i); eb_traj_point.pose = - autoware_universe_utils::calcOffsetPose(eb_traj_point.pose, 0.0, lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(eb_traj_point.pose, 0.0, lat_offset, 0.0); eb_traj_points.push_back(eb_traj_point); } // update orientation - autoware_motion_utils::insertOrientation(eb_traj_points, true); + autoware::motion_utils::insertOrientation(eb_traj_points, true); time_keeper_ptr_->toc(__func__, " "); return eb_traj_points; diff --git a/planning/autoware_path_smoother/src/elastic_band_smoother.cpp b/planning/autoware_path_smoother/src/elastic_band_smoother.cpp index 8814fb5f9e5fd..b92798f92728c 100644 --- a/planning/autoware_path_smoother/src/elastic_band_smoother.cpp +++ b/planning/autoware_path_smoother/src/elastic_band_smoother.cpp @@ -54,7 +54,7 @@ Float64Stamped createFloat64Stamped(const rclcpp::Time & now, const float & data void setZeroVelocityAfterStopPoint(std::vector & traj_points) { - const auto opt_zero_vel_idx = autoware_motion_utils::searchZeroVelocityIndex(traj_points); + const auto opt_zero_vel_idx = autoware::motion_utils::searchZeroVelocityIndex(traj_points); if (opt_zero_vel_idx) { for (size_t i = opt_zero_vel_idx.value(); i < traj_points.size(); ++i) { traj_points.at(i).longitudinal_velocity_mps = 0.0; @@ -105,15 +105,15 @@ ElasticBandSmoother::ElasticBandSmoother(const rclcpp::NodeOptions & node_option set_param_res_ = this->add_on_set_parameters_callback( std::bind(&ElasticBandSmoother::onParam, this, std::placeholders::_1)); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } rcl_interfaces::msg::SetParametersResult ElasticBandSmoother::onParam( const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; // parameters for ego nearest search ego_nearest_param_.onParam(parameters); @@ -170,7 +170,7 @@ void ElasticBandSmoother::onPath(const Path::ConstSharedPtr path_ptr) const auto traj_points = trajectory_utils::convertToTrajectoryPoints(path_ptr->points); const auto output_traj_msg = - autoware_motion_utils::convertToTrajectory(traj_points, path_ptr->header); + autoware::motion_utils::convertToTrajectory(traj_points, path_ptr->header); traj_pub_->publish(output_traj_msg); path_pub_->publish(*path_ptr); published_time_publisher_->publish_if_subscribed(path_pub_, path_ptr->header.stamp); @@ -224,7 +224,7 @@ void ElasticBandSmoother::onPath(const Path::ConstSharedPtr path_ptr) createFloat64Stamped(now(), time_keeper_ptr_->getAccumulatedTime())); const auto output_traj_msg = - autoware_motion_utils::convertToTrajectory(full_traj_points, path_ptr->header); + autoware::motion_utils::convertToTrajectory(full_traj_points, path_ptr->header); traj_pub_->publish(output_traj_msg); const auto output_path_msg = trajectory_utils::create_path(*path_ptr, full_traj_points); path_pub_->publish(output_path_msg); @@ -261,12 +261,12 @@ void ElasticBandSmoother::applyInputVelocity( time_keeper_ptr_->tic(__func__); // crop forward for faster calculation - const double output_traj_length = autoware_motion_utils::calcArcLength(output_traj_points); + const double output_traj_length = autoware::motion_utils::calcArcLength(output_traj_points); constexpr double margin_traj_length = 10.0; const auto forward_cropped_input_traj_points = [&]() { const size_t ego_seg_idx = trajectory_utils::findEgoSegmentIndex(input_traj_points, ego_pose, ego_nearest_param_); - return autoware_motion_utils::cropForwardPoints( + return autoware::motion_utils::cropForwardPoints( input_traj_points, ego_pose.position, ego_seg_idx, output_traj_length + margin_traj_length); }(); @@ -289,14 +289,14 @@ void ElasticBandSmoother::applyInputVelocity( // insert stop point explicitly const auto stop_idx = - autoware_motion_utils::searchZeroVelocityIndex(forward_cropped_input_traj_points); + autoware::motion_utils::searchZeroVelocityIndex(forward_cropped_input_traj_points); if (stop_idx) { const auto & input_stop_pose = forward_cropped_input_traj_points.at(stop_idx.value()).pose; - // NOTE: autoware_motion_utils::findNearestSegmentIndex is used instead of + // NOTE: autoware::motion_utils::findNearestSegmentIndex is used instead of // trajectory_utils::findEgoSegmentIndex // for the case where input_traj_points is much longer than output_traj_points, and the // former has a stop point but the latter will not have. - const auto stop_seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const auto stop_seg_idx = autoware::motion_utils::findNearestSegmentIndex( output_traj_points, input_stop_pose, ego_nearest_param_.dist_threshold, ego_nearest_param_.yaw_threshold); @@ -307,9 +307,9 @@ void ElasticBandSmoother::applyInputVelocity( } if (*stop_seg_idx == output_traj_points.size() - 2) { const double signed_projected_length_to_segment = - autoware_motion_utils::calcLongitudinalOffsetToSegment( + autoware::motion_utils::calcLongitudinalOffsetToSegment( output_traj_points, *stop_seg_idx, input_stop_pose.position); - const double segment_length = autoware_motion_utils::calcSignedArcLength( + const double segment_length = autoware::motion_utils::calcSignedArcLength( output_traj_points, *stop_seg_idx, *stop_seg_idx + 1); if (segment_length < signed_projected_length_to_segment) { // NOTE: input_stop_pose is outside output_traj_points. diff --git a/planning/autoware_path_smoother/src/replan_checker.cpp b/planning/autoware_path_smoother/src/replan_checker.cpp index 67096d29cab8d..5d2e7a05e4b17 100644 --- a/planning/autoware_path_smoother/src/replan_checker.cpp +++ b/planning/autoware_path_smoother/src/replan_checker.cpp @@ -40,7 +40,7 @@ ReplanChecker::ReplanChecker(rclcpp::Node * node, const EgoNearestParam & ego_ne void ReplanChecker::onParam(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; updateParam(parameters, "replan.enable", enable_); updateParam( @@ -80,7 +80,7 @@ bool ReplanChecker::isResetRequired(const PlannerData & planner_data) const // ego pose is lost or new ego pose is designated in simulation const double delta_dist = - autoware_universe_utils::calcDistance2d(p.ego_pose, prev_ego_pose_ptr_->position); + autoware::universe_utils::calcDistance2d(p.ego_pose, prev_ego_pose_ptr_->position); if (max_ego_moving_dist_ < delta_dist) { RCLCPP_DEBUG( logger_, @@ -140,14 +140,14 @@ bool ReplanChecker::isPathAroundEgoChanged( // calculate ego's lateral offset to previous trajectory points const auto prev_ego_seg_idx = trajectory_utils::findEgoSegmentIndex(prev_traj_points, p.ego_pose, ego_nearest_param_); - const double prev_ego_lat_offset = autoware_motion_utils::calcLateralOffset( + const double prev_ego_lat_offset = autoware::motion_utils::calcLateralOffset( prev_traj_points, p.ego_pose.position, prev_ego_seg_idx); // calculate ego's lateral offset to current trajectory points const auto ego_seg_idx = trajectory_utils::findEgoSegmentIndex(p.traj_points, p.ego_pose, ego_nearest_param_); const double ego_lat_offset = - autoware_motion_utils::calcLateralOffset(p.traj_points, p.ego_pose.position, ego_seg_idx); + autoware::motion_utils::calcLateralOffset(p.traj_points, p.ego_pose.position, ego_seg_idx); const double diff_ego_lat_offset = prev_ego_lat_offset - ego_lat_offset; if (std::abs(diff_ego_lat_offset) < max_path_shape_around_ego_lat_dist_) { @@ -170,7 +170,7 @@ bool ReplanChecker::isPathForwardChanged( constexpr double lon_dist_interval = 10.0; for (double lon_dist = lon_dist_interval; lon_dist <= max_path_shape_forward_lon_dist_; lon_dist += lon_dist_interval) { - const auto prev_forward_point = autoware_motion_utils::calcLongitudinalOffsetPoint( + const auto prev_forward_point = autoware::motion_utils::calcLongitudinalOffsetPoint( prev_traj_points, prev_ego_seg_idx, lon_dist); if (!prev_forward_point) { continue; @@ -178,9 +178,9 @@ bool ReplanChecker::isPathForwardChanged( // calculate lateral offset of current trajectory points to prev forward point const auto forward_seg_idx = - autoware_motion_utils::findNearestSegmentIndex(p.traj_points, *prev_forward_point); - const double forward_lat_offset = - autoware_motion_utils::calcLateralOffset(p.traj_points, *prev_forward_point, forward_seg_idx); + autoware::motion_utils::findNearestSegmentIndex(p.traj_points, *prev_forward_point); + const double forward_lat_offset = autoware::motion_utils::calcLateralOffset( + p.traj_points, *prev_forward_point, forward_seg_idx); if (max_path_shape_forward_lat_dist_ < std::abs(forward_lat_offset)) { return true; } @@ -201,7 +201,7 @@ bool ReplanChecker::isPathGoalChanged( } const double goal_moving_dist = - autoware_universe_utils::calcDistance2d(p.traj_points.back(), prev_traj_points.back()); + autoware::universe_utils::calcDistance2d(p.traj_points.back(), prev_traj_points.back()); if (goal_moving_dist < max_goal_moving_dist_) { return false; } diff --git a/planning/autoware_path_smoother/src/utils/trajectory_utils.cpp b/planning/autoware_path_smoother/src/utils/trajectory_utils.cpp index b55dc901b0cdc..4a36359ded4f3 100644 --- a/planning/autoware_path_smoother/src/utils/trajectory_utils.cpp +++ b/planning/autoware_path_smoother/src/utils/trajectory_utils.cpp @@ -54,10 +54,10 @@ std::vector resampleTrajectoryPoints( { constexpr bool enable_resampling_stop_point = true; - const auto traj = autoware_motion_utils::convertToTrajectory(traj_points); - const auto resampled_traj = autoware_motion_utils::resampleTrajectory( + const auto traj = autoware::motion_utils::convertToTrajectory(traj_points); + const auto resampled_traj = autoware::motion_utils::resampleTrajectory( traj, interval, false, true, true, enable_resampling_stop_point); - return autoware_motion_utils::convertToTrajectoryPointArray(resampled_traj); + return autoware::motion_utils::convertToTrajectoryPointArray(resampled_traj); } // NOTE: stop point will not be resampled @@ -66,17 +66,17 @@ std::vector resampleTrajectoryPointsWithoutStopPoint( { constexpr bool enable_resampling_stop_point = false; - const auto traj = autoware_motion_utils::convertToTrajectory(traj_points); - const auto resampled_traj = autoware_motion_utils::resampleTrajectory( + const auto traj = autoware::motion_utils::convertToTrajectory(traj_points); + const auto resampled_traj = autoware::motion_utils::resampleTrajectory( traj, interval, false, true, true, enable_resampling_stop_point); - return autoware_motion_utils::convertToTrajectoryPointArray(resampled_traj); + return autoware::motion_utils::convertToTrajectoryPointArray(resampled_traj); } void insertStopPoint( std::vector & traj_points, const geometry_msgs::msg::Pose & input_stop_pose, const size_t stop_seg_idx) { - const double offset_to_segment = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double offset_to_segment = autoware::motion_utils::calcLongitudinalOffsetToSegment( traj_points, stop_seg_idx, input_stop_pose.position); const auto traj_spline = SplineInterpolationPoints2d(traj_points); diff --git a/planning/autoware_planning_test_manager/include/autoware_planning_test_manager/autoware_planning_test_manager_utils.hpp b/planning/autoware_planning_test_manager/include/autoware_planning_test_manager/autoware_planning_test_manager_utils.hpp index dfaefd7c882d1..9a93b647dac02 100644 --- a/planning/autoware_planning_test_manager/include/autoware_planning_test_manager/autoware_planning_test_manager_utils.hpp +++ b/planning/autoware_planning_test_manager/include/autoware_planning_test_manager/autoware_planning_test_manager_utils.hpp @@ -57,8 +57,8 @@ Pose createPoseFromLaneID(const lanelet::Id & lane_id) // calculate middle pose geometry_msgs::msg::Pose middle_pose; middle_pose.position = middle_pos; - const double yaw = autoware_universe_utils::calcAzimuthAngle(middle_pos, next_middle_pos); - middle_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + const double yaw = autoware::universe_utils::calcAzimuthAngle(middle_pos, next_middle_pos); + middle_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); return middle_pose; } diff --git a/planning/autoware_planning_test_manager/package.xml b/planning/autoware_planning_test_manager/package.xml index 416528257fe3b..f2aa5513ee81a 100644 --- a/planning/autoware_planning_test_manager/package.xml +++ b/planning/autoware_planning_test_manager/package.xml @@ -14,6 +14,7 @@ autoware_cmake autoware_control_msgs + autoware_lanelet2_extension autoware_map_msgs autoware_motion_utils autoware_perception_msgs @@ -24,7 +25,6 @@ autoware_vehicle_msgs component_interface_specs component_interface_utils - lanelet2_extension lanelet2_io nav_msgs rclcpp diff --git a/planning/autoware_planning_test_manager/src/autoware_planning_test_manager.cpp b/planning/autoware_planning_test_manager/src/autoware_planning_test_manager.cpp index 2907d264d1a1d..1526e061ca4d1 100644 --- a/planning/autoware_planning_test_manager/src/autoware_planning_test_manager.cpp +++ b/planning/autoware_planning_test_manager/src/autoware_planning_test_manager.cpp @@ -296,7 +296,7 @@ void PlanningInterfaceTestManager::publishNominalPath( { autoware::test_utils::publishToTargetNode( test_node_, target_node, topic_name, normal_path_pub_, - autoware_motion_utils::convertToPath( + autoware::motion_utils::convertToPath( autoware::test_utils::loadPathWithLaneIdInYaml()), 5); } diff --git a/planning/autoware_planning_topic_converter/src/path_to_trajectory.cpp b/planning/autoware_planning_topic_converter/src/path_to_trajectory.cpp index a03897ebb86f6..ff2f3084fc9ba 100644 --- a/planning/autoware_planning_topic_converter/src/path_to_trajectory.cpp +++ b/planning/autoware_planning_topic_converter/src/path_to_trajectory.cpp @@ -24,7 +24,7 @@ namespace TrajectoryPoint convertToTrajectoryPoint(const PathPoint & point) { TrajectoryPoint traj_point; - traj_point.pose = autoware_universe_utils::getPose(point); + traj_point.pose = autoware::universe_utils::getPose(point); traj_point.longitudinal_velocity_mps = point.longitudinal_velocity_mps; traj_point.lateral_velocity_mps = point.lateral_velocity_mps; traj_point.heading_rate_rps = point.heading_rate_rps; @@ -50,7 +50,7 @@ PathToTrajectory::PathToTrajectory(const rclcpp::NodeOptions & options) void PathToTrajectory::process(const Path::ConstSharedPtr msg) { const auto trajectory_points = convertToTrajectoryPoints(msg->points); - const auto output = autoware_motion_utils::convertToTrajectory(trajectory_points, msg->header); + const auto output = autoware::motion_utils::convertToTrajectory(trajectory_points, msg->header); pub_->publish(output); } diff --git a/planning/autoware_planning_validator/include/autoware/planning_validator/planning_validator.hpp b/planning/autoware_planning_validator/include/autoware/planning_validator/planning_validator.hpp index 1d47aefaa31e4..e996855b9b4da 100644 --- a/planning/autoware_planning_validator/include/autoware/planning_validator/planning_validator.hpp +++ b/planning/autoware_planning_validator/include/autoware/planning_validator/planning_validator.hpp @@ -36,10 +36,10 @@ namespace autoware::planning_validator { +using autoware::universe_utils::StopWatch; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; using autoware_planning_validator::msg::PlanningValidatorStatus; -using autoware_universe_utils::StopWatch; using diagnostic_updater::DiagnosticStatusWrapper; using diagnostic_updater::Updater; using nav_msgs::msg::Odometry; @@ -103,7 +103,7 @@ class PlanningValidator : public rclcpp::Node void setStatus(DiagnosticStatusWrapper & stat, const bool & is_ok, const std::string & msg); - autoware_universe_utils::InterProcessPollingSubscriber sub_kinematics_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_kinematics_{ this, "~/input/kinematics"}; rclcpp::Subscription::SharedPtr sub_traj_; rclcpp::Publisher::SharedPtr pub_traj_; @@ -137,9 +137,9 @@ class PlanningValidator : public rclcpp::Node std::shared_ptr debug_pose_publisher_; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; StopWatch stop_watch_; }; diff --git a/planning/autoware_planning_validator/src/debug_marker.cpp b/planning/autoware_planning_validator/src/debug_marker.cpp index d4aa27ca2ee9a..7de23de8eda01 100644 --- a/planning/autoware_planning_validator/src/debug_marker.cpp +++ b/planning/autoware_planning_validator/src/debug_marker.cpp @@ -48,7 +48,7 @@ void PlanningValidatorDebugMarkerPublisher::pushPoseMarker( void PlanningValidatorDebugMarkerPublisher::pushPoseMarker( const geometry_msgs::msg::Pose & pose, const std::string & ns, int id) { - using autoware_universe_utils::createMarkerColor; + using autoware::universe_utils::createMarkerColor; // append arrow marker std_msgs::msg::ColorRGBA color; @@ -64,9 +64,9 @@ void PlanningValidatorDebugMarkerPublisher::pushPoseMarker( { color = createMarkerColor(0.0, 0.0, 1.0, 0.999); } - Marker marker = autoware_universe_utils::createDefaultMarker( + Marker marker = autoware::universe_utils::createDefaultMarker( "map", node_->get_clock()->now(), ns, getMarkerId(ns), Marker::ARROW, - autoware_universe_utils::createMarkerScale(0.2, 0.1, 0.3), color); + autoware::universe_utils::createMarkerScale(0.2, 0.1, 0.3), color); marker.lifetime = rclcpp::Duration::from_seconds(0.2); marker.pose = pose; @@ -76,10 +76,10 @@ void PlanningValidatorDebugMarkerPublisher::pushPoseMarker( void PlanningValidatorDebugMarkerPublisher::pushWarningMsg( const geometry_msgs::msg::Pose & pose, const std::string & msg) { - visualization_msgs::msg::Marker marker = autoware_universe_utils::createDefaultMarker( + visualization_msgs::msg::Marker marker = autoware::universe_utils::createDefaultMarker( "map", node_->get_clock()->now(), "warning_msg", 0, Marker::TEXT_VIEW_FACING, - autoware_universe_utils::createMarkerScale(0.0, 0.0, 1.0), - autoware_universe_utils::createMarkerColor(1.0, 0.1, 0.1, 0.999)); + autoware::universe_utils::createMarkerScale(0.0, 0.0, 1.0), + autoware::universe_utils::createMarkerColor(1.0, 0.1, 0.1, 0.999)); marker.lifetime = rclcpp::Duration::from_seconds(0.2); marker.pose = pose; marker.text = msg; @@ -89,9 +89,9 @@ void PlanningValidatorDebugMarkerPublisher::pushWarningMsg( void PlanningValidatorDebugMarkerPublisher::pushVirtualWall(const geometry_msgs::msg::Pose & pose) { const auto now = node_->get_clock()->now(); - const auto stop_wall_marker = - autoware_motion_utils::createStopVirtualWallMarker(pose, "autoware_planning_validator", now, 0); - autoware_universe_utils::appendMarkerArray(stop_wall_marker, &marker_array_virtual_wall_, now); + const auto stop_wall_marker = autoware::motion_utils::createStopVirtualWallMarker( + pose, "autoware_planning_validator", now, 0); + autoware::universe_utils::appendMarkerArray(stop_wall_marker, &marker_array_virtual_wall_, now); } void PlanningValidatorDebugMarkerPublisher::publish() diff --git a/planning/autoware_planning_validator/src/planning_validator.cpp b/planning/autoware_planning_validator/src/planning_validator.cpp index b3f2ab88a4a45..29e8932c87842 100644 --- a/planning/autoware_planning_validator/src/planning_validator.cpp +++ b/planning/autoware_planning_validator/src/planning_validator.cpp @@ -44,9 +44,9 @@ PlanningValidator::PlanningValidator(const rclcpp::NodeOptions & options) setupParameters(); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void PlanningValidator::setupParameters() @@ -450,7 +450,7 @@ bool PlanningValidator::checkValidSteeringRate(const Trajectory & trajectory) bool PlanningValidator::checkValidVelocityDeviation(const Trajectory & trajectory) { // TODO(horibe): set appropriate thresholds for index search - const auto idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const auto idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( trajectory.points, current_kinematics_->pose.pose); validation_status_.velocity_deviation = std::abs( @@ -466,10 +466,10 @@ bool PlanningValidator::checkValidVelocityDeviation(const Trajectory & trajector bool PlanningValidator::checkValidDistanceDeviation(const Trajectory & trajectory) { // TODO(horibe): set appropriate thresholds for index search - const auto idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const auto idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( trajectory.points, current_kinematics_->pose.pose); - validation_status_.distance_deviation = autoware_universe_utils::calcDistance2d( + validation_status_.distance_deviation = autoware::universe_utils::calcDistance2d( trajectory.points.at(idx), current_kinematics_->pose.pose); if (validation_status_.distance_deviation > validation_params_.distance_deviation_threshold) { @@ -487,7 +487,7 @@ bool PlanningValidator::checkValidLongitudinalDistanceDeviation(const Trajectory const auto ego_pose = current_kinematics_->pose.pose; const size_t idx = - autoware_motion_utils::findFirstNearestIndexWithSoftConstraints(trajectory.points, ego_pose); + autoware::motion_utils::findFirstNearestIndexWithSoftConstraints(trajectory.points, ego_pose); if (0 < idx && idx < trajectory.points.size() - 1) { return true; // ego-nearest point exists between trajectory points. @@ -495,13 +495,13 @@ bool PlanningValidator::checkValidLongitudinalDistanceDeviation(const Trajectory // Check if the valid longitudinal deviation for given segment index const auto HasValidLongitudinalDeviation = [&](const size_t seg_idx, const bool is_last) { - auto long_offset = autoware_motion_utils::calcLongitudinalOffsetToSegment( + auto long_offset = autoware::motion_utils::calcLongitudinalOffsetToSegment( trajectory.points, seg_idx, ego_pose.position); // for last, need to remove distance for the last segment. if (is_last) { const auto size = trajectory.points.size(); - long_offset -= autoware_universe_utils::calcDistance2d( + long_offset -= autoware::universe_utils::calcDistance2d( trajectory.points.at(size - 1), trajectory.points.at(size - 2)); } @@ -532,7 +532,7 @@ bool PlanningValidator::checkValidForwardTrajectoryLength(const Trajectory & tra return true; // Ego is almost stopped. } - const auto forward_length = autoware_motion_utils::calcSignedArcLength( + const auto forward_length = autoware::motion_utils::calcSignedArcLength( trajectory.points, current_kinematics_->pose.pose.position, trajectory.points.size() - 1); const auto acc = validation_params_.forward_trajectory_length_acceleration; diff --git a/planning/autoware_planning_validator/src/utils.cpp b/planning/autoware_planning_validator/src/utils.cpp index 3d21c89704a03..ae580a7a7c6f1 100644 --- a/planning/autoware_planning_validator/src/utils.cpp +++ b/planning/autoware_planning_validator/src/utils.cpp @@ -24,9 +24,9 @@ namespace autoware::planning_validator { -using autoware_universe_utils::calcCurvature; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::getPoint; +using autoware::universe_utils::calcCurvature; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::getPoint; namespace { @@ -138,7 +138,7 @@ void calcCurvature( const auto p2 = getPoint(trajectory.points.at(i)); const auto p3 = getPoint(trajectory.points.at(next_idx)); try { - curvature_arr.at(i) = autoware_universe_utils::calcCurvature(p1, p2, p3); + curvature_arr.at(i) = autoware::universe_utils::calcCurvature(p1, p2, p3); } catch (...) { curvature_arr.at(i) = 0.0; // maybe distance is too close } @@ -236,12 +236,12 @@ std::pair calcMaxRelativeAngles(const Trajectory & trajectory) const auto & p2 = trajectory.points.at(i + 1).pose.position; const auto & p3 = trajectory.points.at(i + 2).pose.position; - const auto angle_a = autoware_universe_utils::calcAzimuthAngle(p1, p2); - const auto angle_b = autoware_universe_utils::calcAzimuthAngle(p2, p3); + const auto angle_a = autoware::universe_utils::calcAzimuthAngle(p1, p2); + const auto angle_b = autoware::universe_utils::calcAzimuthAngle(p2, p3); // convert relative angle to [-pi ~ pi] const auto relative_angle = - std::abs(autoware_universe_utils::normalizeRadian(angle_b - angle_a)); + std::abs(autoware::universe_utils::normalizeRadian(angle_b - angle_a)); takeBigger(max_relative_angles, max_index, std::abs(relative_angle), i); } diff --git a/planning/autoware_planning_validator/test/src/test_planning_validator_helper.cpp b/planning/autoware_planning_validator/test/src/test_planning_validator_helper.cpp index b4985700fdcb6..bdf4ca96d9fdd 100644 --- a/planning/autoware_planning_validator/test/src/test_planning_validator_helper.cpp +++ b/planning/autoware_planning_validator/test/src/test_planning_validator_helper.cpp @@ -19,9 +19,9 @@ #include +using autoware::universe_utils::createQuaternionFromYaw; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::createQuaternionFromYaw; Trajectory generateTrajectoryWithConstantAcceleration( const double interval_distance, const double speed, const double yaw, const size_t size, diff --git a/planning/autoware_remaining_distance_time_calculator/package.xml b/planning/autoware_remaining_distance_time_calculator/package.xml index 4e8fc23ffe391..aec6695cae5fd 100644 --- a/planning/autoware_remaining_distance_time_calculator/package.xml +++ b/planning/autoware_remaining_distance_time_calculator/package.xml @@ -12,13 +12,13 @@ autoware_cmake autoware_internal_msgs + autoware_lanelet2_extension autoware_motion_utils autoware_planning_msgs autoware_route_handler autoware_test_utils autoware_universe_utils geometry_msgs - lanelet2_extension nav_msgs rclcpp rclcpp_components diff --git a/planning/autoware_remaining_distance_time_calculator/src/remaining_distance_time_calculator_node.cpp b/planning/autoware_remaining_distance_time_calculator/src/remaining_distance_time_calculator_node.cpp index 4c1eb1d1c4ef6..e507cc910cf86 100644 --- a/planning/autoware_remaining_distance_time_calculator/src/remaining_distance_time_calculator_node.cpp +++ b/planning/autoware_remaining_distance_time_calculator/src/remaining_distance_time_calculator_node.cpp @@ -15,9 +15,9 @@ #include "remaining_distance_time_calculator_node.hpp" #include -#include -#include -#include +#include +#include +#include #include #include @@ -143,7 +143,7 @@ void RemainingDistanceTimeCalculatorNode::calculate_remaining_distance() for (auto & llt : remaining_shortest_path) { if (remaining_shortest_path.size() == 1) { - remaining_distance_ += autoware_universe_utils::calcDistance2d( + remaining_distance_ += autoware::universe_utils::calcDistance2d( current_vehicle_pose_.position, goal_pose_.position); break; } diff --git a/planning/autoware_route_handler/package.xml b/planning/autoware_route_handler/package.xml index f7d10a519ed4e..3c0c14da72817 100644 --- a/planning/autoware_route_handler/package.xml +++ b/planning/autoware_route_handler/package.xml @@ -23,12 +23,12 @@ ament_lint_auto autoware_lint_common + autoware_lanelet2_extension autoware_map_msgs autoware_planning_msgs autoware_test_utils autoware_universe_utils geometry_msgs - lanelet2_extension rclcpp rclcpp_components tf2_ros diff --git a/planning/autoware_route_handler/src/route_handler.cpp b/planning/autoware_route_handler/src/route_handler.cpp index cffac44b6947e..0540fb1758802 100644 --- a/planning/autoware_route_handler/src/route_handler.cpp +++ b/planning/autoware_route_handler/src/route_handler.cpp @@ -15,11 +15,11 @@ #include "autoware/route_handler/route_handler.hpp" #include +#include +#include +#include +#include #include -#include -#include -#include -#include #include #include @@ -110,7 +110,7 @@ PathWithLaneId removeOverlappingPoints(const PathWithLaneId & input_path) constexpr double min_dist = 0.001; if ( - autoware_universe_utils::calcDistance3d(filtered_path.points.back().point, pt.point) < + autoware::universe_utils::calcDistance3d(filtered_path.points.back().point, pt.point) < min_dist) { filtered_path.points.back().lane_ids.push_back(pt.lane_ids.front()); filtered_path.points.back().point.longitudinal_velocity_mps = std::min( @@ -1725,14 +1725,14 @@ PathWithLaneId RouteHandler::getCenterLinePath( double angle{0.0}; const auto & pts = reference_path.points; if (i + 1 < reference_path.points.size()) { - angle = autoware_universe_utils::calcAzimuthAngle( + angle = autoware::universe_utils::calcAzimuthAngle( pts.at(i).point.pose.position, pts.at(i + 1).point.pose.position); } else if (i != 0) { - angle = autoware_universe_utils::calcAzimuthAngle( + angle = autoware::universe_utils::calcAzimuthAngle( pts.at(i - 1).point.pose.position, pts.at(i).point.pose.position); } reference_path.points.at(i).point.pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(angle); + autoware::universe_utils::createQuaternionFromYaw(angle); } return reference_path; diff --git a/planning/autoware_route_handler/test/test_route_handler.cpp b/planning/autoware_route_handler/test/test_route_handler.cpp index 056d46056f452..9a4081c51be3b 100644 --- a/planning/autoware_route_handler/test/test_route_handler.cpp +++ b/planning/autoware_route_handler/test/test_route_handler.cpp @@ -49,14 +49,15 @@ TEST_F(TestRouteHandler, getGoalLaneId) TEST_F(TestRouteHandler, getLaneletSequenceWhenOverlappingRoute) { - set_route_handler("/test_map/overlap_map.osm"); + set_route_handler("overlap_map.osm"); ASSERT_FALSE(route_handler_->isHandlerReady()); - geometry_msgs::msg::Pose start_pose, goal_pose; - start_pose.position = autoware_universe_utils::createPoint(3728.870361, 73739.281250, 0); - start_pose.orientation = autoware_universe_utils::createQuaternion(0, 0, -0.513117, 0.858319); - goal_pose.position = autoware_universe_utils::createPoint(3729.961182, 73727.328125, 0); - goal_pose.orientation = autoware_universe_utils::createQuaternion(0, 0, 0.234831, 0.972036); + geometry_msgs::msg::Pose start_pose; + geometry_msgs::msg::Pose goal_pose; + start_pose.position = autoware::universe_utils::createPoint(3728.870361, 73739.281250, 0); + start_pose.orientation = autoware::universe_utils::createQuaternion(0, 0, -0.513117, 0.858319); + goal_pose.position = autoware::universe_utils::createPoint(3729.961182, 73727.328125, 0); + goal_pose.orientation = autoware::universe_utils::createQuaternion(0, 0, 0.234831, 0.972036); lanelet::ConstLanelets path_lanelets; ASSERT_TRUE( @@ -79,93 +80,213 @@ TEST_F(TestRouteHandler, getLaneletSequenceWhenOverlappingRoute) TEST_F(TestRouteHandler, getClosestRouteLaneletFromLaneletWhenOverlappingRoute) { - set_route_handler("/test_map/overlap_map.osm"); - set_test_route("/test_route/overlap_test_route.yaml"); + set_route_handler("overlap_map.osm"); + set_test_route("overlap_test_route.yaml"); ASSERT_TRUE(route_handler_->isHandlerReady()); - geometry_msgs::msg::Pose reference_pose, search_pose; + geometry_msgs::msg::Pose reference_pose; + geometry_msgs::msg::Pose search_pose; lanelet::ConstLanelet reference_lanelet; - reference_pose.position = autoware_universe_utils::createPoint(3730.88, 73735.3, 0); - reference_pose.orientation = autoware_universe_utils::createQuaternion(0, 0, -0.504626, 0.863338); + reference_pose.position = autoware::universe_utils::createPoint(3730.88, 73735.3, 0); + reference_pose.orientation = + autoware::universe_utils::createQuaternion(0, 0, -0.504626, 0.863338); const auto found_reference_lanelet = route_handler_->getClosestLaneletWithinRoute(reference_pose, &reference_lanelet); ASSERT_TRUE(found_reference_lanelet); ASSERT_EQ(reference_lanelet.id(), 168); lanelet::ConstLanelet closest_lanelet; - search_pose.position = autoware_universe_utils::createPoint(3736.89, 73730.8, 0); - search_pose.orientation = autoware_universe_utils::createQuaternion(0, 0, 0.223244, 0.974763); + search_pose.position = autoware::universe_utils::createPoint(3736.89, 73730.8, 0); + search_pose.orientation = autoware::universe_utils::createQuaternion(0, 0, 0.223244, 0.974763); bool found_lanelet = route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lanelet); ASSERT_TRUE(found_lanelet); ASSERT_EQ(closest_lanelet.id(), 345); found_lanelet = route_handler_->getClosestRouteLaneletFromLanelet( - search_pose, reference_lanelet, &closest_lanelet, 3.0, 1.046); + search_pose, reference_lanelet, &closest_lanelet, dist_threshold, yaw_threshold); ASSERT_TRUE(found_lanelet); ASSERT_EQ(closest_lanelet.id(), 277); } -// TEST_F(TestRouteHandler, getClosestLaneletWithinRouteWhenPointsInRoute) -// { -// lanelet::ConstLanelet closest_lane; - -// Pose search_pose; - -// search_pose.position = autoware_universe_utils::createPoint(-1.0, 1.75, 0); -// search_pose.orientation = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); -// const auto closest_lane_obtained7 = -// route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lane); - -// ASSERT_TRUE(closest_lane_obtained7); -// ASSERT_EQ(closest_lane.id(), 4775); - -// search_pose.position = autoware_universe_utils::createPoint(-0.5, 1.75, 0); -// const auto closest_lane_obtained = -// search_pose.orientation = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); -// route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lane); - -// ASSERT_TRUE(closest_lane_obtained); -// ASSERT_EQ(closest_lane.id(), 4775); - -// search_pose.position = autoware_universe_utils::createPoint(-.01, 1.75, 0); -// search_pose.orientation = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); -// const auto closest_lane_obtained3 = -// route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lane); +TEST_F(TestRouteHandler, CheckLaneIsInGoalRouteSection) +{ + const auto lane = route_handler_->getLaneletsFromId(4785); + const auto is_lane_in_goal_route_section = route_handler_->isInGoalRouteSection(lane); + ASSERT_TRUE(is_lane_in_goal_route_section); +} -// ASSERT_TRUE(closest_lane_obtained3); -// ASSERT_EQ(closest_lane.id(), 4775); +TEST_F(TestRouteHandler, CheckLaneIsNotInGoalRouteSection) +{ + const auto lane = route_handler_->getLaneletsFromId(4780); + const auto is_lane_in_goal_route_section = route_handler_->isInGoalRouteSection(lane); + ASSERT_FALSE(is_lane_in_goal_route_section); +} -// search_pose.position = autoware_universe_utils::createPoint(0.0, 1.75, 0); -// search_pose.orientation = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); -// const auto closest_lane_obtained1 = -// route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lane); +TEST_F(TestRouteHandler, checkGetLaneletSequence) +{ + const auto current_pose = autoware::test_utils::createPose(-50.0, 1.75, 0.0, 0.0, 0.0, 0.0); -// ASSERT_TRUE(closest_lane_obtained1); -// ASSERT_EQ(closest_lane.id(), 4775); + lanelet::ConstLanelet closest_lanelet; + const auto found_closest_lanelet = route_handler_->getClosestLaneletWithConstrainsWithinRoute( + current_pose, &closest_lanelet, dist_threshold, yaw_threshold); + ASSERT_TRUE(found_closest_lanelet); + ASSERT_EQ(closest_lanelet.id(), 4765ul); + + const auto current_lanes = route_handler_->getLaneletSequence( + closest_lanelet, current_pose, backward_path_length, forward_path_length); + + ASSERT_EQ(current_lanes.size(), 6ul); + ASSERT_EQ(current_lanes.at(0).id(), 4765ul); + ASSERT_EQ(current_lanes.at(1).id(), 4770ul); + ASSERT_EQ(current_lanes.at(2).id(), 4775ul); + ASSERT_EQ(current_lanes.at(3).id(), 4424ul); + ASSERT_EQ(current_lanes.at(4).id(), 4780ul); + ASSERT_EQ(current_lanes.at(5).id(), 4785ul); +} -// search_pose.position = autoware_universe_utils::createPoint(0.01, 1.75, 0); -// search_pose.orientation = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); -// const auto closest_lane_obtained2 = -// route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lane); +TEST_F(TestRouteHandler, checkLateralIntervalToPreferredLaneWhenLaneChangeToRight) +{ + const auto current_lanes = get_current_lanes(); + + // The input is within expectation. + // this lane is of preferred lane type + std::for_each(current_lanes.begin(), current_lanes.begin() + 3, [&](const auto & lane) { + const auto result = route_handler_->getLateralIntervalsToPreferredLane(lane, Direction::RIGHT); + ASSERT_EQ(result.size(), 0ul); + }); + + // The input is within expectation. + // this alternative lane is a subset of preferred lane route section + std::for_each(current_lanes.begin() + 3, current_lanes.end(), [&](const auto & lane) { + const auto result = route_handler_->getLateralIntervalsToPreferredLane(lane, Direction::RIGHT); + ASSERT_EQ(result.size(), 1ul); + EXPECT_DOUBLE_EQ(result.at(0), -3.5); + }); + + // The input is within expectation. + // Although Direction::NONE, the function should still return result similar to + // Direction::RIGHT. + std::for_each(current_lanes.begin(), current_lanes.begin() + 3, [&](const auto & lane) { + const auto result = route_handler_->getLateralIntervalsToPreferredLane(lane, Direction::NONE); + ASSERT_EQ(result.size(), 0ul); + }); + + // The input is within expectation. + // Although Direction::NONE is provided, the function should behave similarly to + // Direction::RIGHT. + std::for_each(current_lanes.begin() + 3, current_lanes.end(), [&](const auto & lane) { + const auto result = route_handler_->getLateralIntervalsToPreferredLane(lane, Direction::NONE); + ASSERT_EQ(result.size(), 1ul); + EXPECT_DOUBLE_EQ(result.at(0), -3.5); + }); +} -// ASSERT_TRUE(closest_lane_obtained2); -// ASSERT_EQ(closest_lane.id(), 4424); +TEST_F(TestRouteHandler, checkLateralIntervalToPreferredLaneUsingUnexpectedResults) +{ + const auto current_lanes = get_current_lanes(); -// search_pose.position = autoware_universe_utils::createPoint(0.5, 1.75, 0); -// search_pose.orientation = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); -// const auto closest_lane_obtained4 = -// route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lane); + std::for_each(current_lanes.begin(), current_lanes.end(), [&](const auto & lane) { + const auto result = route_handler_->getLateralIntervalsToPreferredLane(lane, Direction::LEFT); + ASSERT_EQ(result.size(), 0ul); + }); +} -// ASSERT_TRUE(closest_lane_obtained4); -// ASSERT_EQ(closest_lane.id(), 4424); +TEST_F(TestRouteHandler, testGetCenterLinePath) +{ + const auto current_lanes = route_handler_->getLaneletsFromIds({4424, 4780, 4785}); + { + // The input is within expectation. + const auto center_line_path = route_handler_->getCenterLinePath(current_lanes, 0.0, 50.0); + ASSERT_EQ(center_line_path.points.size(), 51); // 26 + 26 - 1(overlapped) + ASSERT_EQ(center_line_path.points.back().lane_ids.size(), 2); + ASSERT_EQ(center_line_path.points.back().lane_ids.at(0), 4780); + ASSERT_EQ(center_line_path.points.back().lane_ids.at(1), 4785); + } + { + // The input is broken. + // s_start is negative, and s_end is over the boundary. + const auto center_line_path = route_handler_->getCenterLinePath(current_lanes, -1.0, 200.0); + ASSERT_EQ(center_line_path.points.size(), 76); // 26 + 26 + 26 - 2(overlapped) + ASSERT_EQ(center_line_path.points.front().lane_ids.size(), 1); + ASSERT_EQ(center_line_path.points.front().lane_ids.at(0), 4424); + ASSERT_EQ(center_line_path.points.back().lane_ids.size(), 1); + ASSERT_EQ(center_line_path.points.back().lane_ids.at(0), 4785); + } +} +TEST_F(TestRouteHandler, DISABLED_testGetCenterLinePathWhenLanesIsNotConnected) +{ + // broken current lanes. 4424 and 4785 are not connected directly. + const auto current_lanes = route_handler_->getLaneletsFromIds({4424, 4780, 4785}); + + // The input is broken. Test is disabled because it doesn't pass. + const auto center_line_path = route_handler_->getCenterLinePath(current_lanes, 0.0, 75.0); + ASSERT_EQ(center_line_path.points.size(), 26); // 26 + 26 + 26 - 2(overlapped) + ASSERT_EQ(center_line_path.points.front().lane_ids.size(), 1); + ASSERT_EQ(center_line_path.points.front().lane_ids.at(0), 4424); + ASSERT_EQ(center_line_path.points.back().lane_ids.size(), 1); + ASSERT_EQ(center_line_path.points.back().lane_ids.at(0), 4424); +} -// search_pose.position = autoware_universe_utils::createPoint(1.0, 1.75, 0); -// search_pose.orientation = autoware_universe_utils::createQuaternion(0.0, 0.0, 0.0, 1.0); -// const auto closest_lane_obtained5 = -// route_handler_->getClosestLaneletWithinRoute(search_pose, &closest_lane); +TEST_F(TestRouteHandler, getClosestLaneletWithinRouteWhenPointsInRoute) +{ + auto get_closest_lanelet_within_route = + [&](double x, double y, double z) -> std::optional { + const auto pose = autoware::test_utils::createPose(x, y, z, 0.0, 0.0, 0.0); + lanelet::ConstLanelet closest_lanelet; + const auto closest_lane_obtained = + route_handler_->getClosestLaneletWithinRoute(pose, &closest_lanelet); + if (!closest_lane_obtained) { + return std::nullopt; + } + return closest_lanelet.id(); + }; + + ASSERT_TRUE(get_closest_lanelet_within_route(-0.5, 1.75, 0).has_value()); + ASSERT_EQ(get_closest_lanelet_within_route(-0.5, 1.75, 0).value(), 4775ul); + + ASSERT_TRUE(get_closest_lanelet_within_route(-0.01, 1.75, 0).has_value()); + ASSERT_EQ(get_closest_lanelet_within_route(-0.01, 1.75, 0).value(), 4775ul); + + ASSERT_TRUE(get_closest_lanelet_within_route(0.0, 1.75, 0).has_value()); + ASSERT_EQ(get_closest_lanelet_within_route(0.0, 1.75, 0).value(), 4775ul); + + ASSERT_TRUE(get_closest_lanelet_within_route(0.01, 1.75, 0).has_value()); + ASSERT_EQ(get_closest_lanelet_within_route(0.01, 1.75, 0).value(), 4424ul); + + ASSERT_TRUE(get_closest_lanelet_within_route(0.5, 1.75, 0).has_value()); + ASSERT_EQ(get_closest_lanelet_within_route(0.5, 1.75, 0).value(), 4424ul); +} -// ASSERT_TRUE(closest_lane_obtained5); -// ASSERT_EQ(closest_lane.id(), 4424); -// } +TEST_F(TestRouteHandler, testGetLaneChangeTargetLanes) +{ + { + // The input is within expectation. + // There exist no lane changing lane since both 4770 and 4775 are preferred lane. + const auto current_lanes = route_handler_->getLaneletsFromIds({4770, 4775}); + const auto lane_change_lane = + route_handler_->getLaneChangeTarget(current_lanes, Direction::RIGHT); + ASSERT_FALSE(lane_change_lane.has_value()); + } + + { + // The input is within expectation. + // There exist lane changing lane since 4424 is subset of preferred lane 9598. + const auto current_lanes = route_handler_->getLaneletsFromIds({4775, 4424}); + const auto lane_change_lane = + route_handler_->getLaneChangeTarget(current_lanes, Direction::RIGHT); + EXPECT_TRUE(lane_change_lane.has_value()); + ASSERT_EQ(lane_change_lane.value().id(), 9598ul); + } + + { + // The input is within expectation. + // There is a lane-changing lane. Within the maximum current lanes, there is an alternative lane + // to the preferred lane. Therefore, the lane-changing lane exists. + const auto current_lanes = get_current_lanes(); + const auto lane_change_lane = route_handler_->getLaneChangeTarget(current_lanes); + ASSERT_TRUE(lane_change_lane.has_value()); + ASSERT_EQ(lane_change_lane.value().id(), 9598ul); + } +} } // namespace autoware::route_handler::test diff --git a/planning/autoware_route_handler/test/test_route_handler.hpp b/planning/autoware_route_handler/test/test_route_handler.hpp index 86f7461fc7538..cd7813243c25e 100644 --- a/planning/autoware_route_handler/test/test_route_handler.hpp +++ b/planning/autoware_route_handler/test/test_route_handler.hpp @@ -15,16 +15,15 @@ #ifndef TEST_ROUTE_HANDLER_HPP_ #define TEST_ROUTE_HANDLER_HPP_ -#include "ament_index_cpp/get_package_share_directory.hpp" #include "autoware_test_utils/autoware_test_utils.hpp" #include "autoware_test_utils/mock_data_parser.hpp" #include "gtest/gtest.h" #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -37,16 +36,16 @@ namespace autoware::route_handler::test { +using autoware::test_utils::get_absolute_path_to_lanelet_map; +using autoware::test_utils::get_absolute_path_to_route; using autoware_map_msgs::msg::LaneletMapBin; - class TestRouteHandler : public ::testing::Test { public: TestRouteHandler() { - autoware_test_utils_dir = ament_index_cpp::get_package_share_directory("autoware_test_utils"); - set_route_handler("/test_map/2km_test.osm"); - set_test_route("/test_route/lane_change_test_route.yaml"); + set_route_handler("2km_test.osm"); + set_test_route(lane_change_right_test_route_filename); } TestRouteHandler(const TestRouteHandler &) = delete; @@ -55,26 +54,44 @@ class TestRouteHandler : public ::testing::Test TestRouteHandler & operator=(TestRouteHandler &&) = delete; ~TestRouteHandler() override = default; - void set_route_handler(const std::string & relative_path) + void set_route_handler(const std::string & lanelet_map_filename) { route_handler_.reset(); - const auto lanelet2_path = autoware_test_utils_dir + relative_path; + const auto lanelet2_path = + get_absolute_path_to_lanelet_map(autoware_test_utils_dir, lanelet_map_filename); const auto map_bin_msg = autoware::test_utils::make_map_bin_msg(lanelet2_path, center_line_resolution); route_handler_ = std::make_shared(map_bin_msg); } - void set_test_route(const std::string & route_path) + void set_test_route(const std::string & route_filename) { - const auto route_handler_dir = - ament_index_cpp::get_package_share_directory("autoware_route_handler"); - const auto rh_test_route = route_handler_dir + route_path; + const auto rh_test_route = + get_absolute_path_to_route(autoware_route_handler_dir, route_filename); route_handler_->setRoute(autoware::test_utils::parse_lanelet_route_file(rh_test_route)); } + lanelet::ConstLanelets get_current_lanes() + { + const auto current_pose = autoware::test_utils::createPose(-50.0, 1.75, 0.0, 0.0, 0.0, 0.0); + lanelet::ConstLanelet closest_lanelet; + [[maybe_unused]] const auto found_closest_lanelet = + route_handler_->getClosestLaneletWithConstrainsWithinRoute( + current_pose, &closest_lanelet, dist_threshold, yaw_threshold); + return route_handler_->getLaneletSequence( + closest_lanelet, current_pose, backward_path_length, forward_path_length); + } + std::shared_ptr route_handler_; - std::string autoware_test_utils_dir; - static constexpr double center_line_resolution = 5.0; + std::string autoware_test_utils_dir{"autoware_test_utils"}; + std::string autoware_route_handler_dir{"autoware_route_handler"}; + std::string lane_change_right_test_route_filename{"lane_change_test_route.yaml"}; + + static constexpr double center_line_resolution{5.0}; + static constexpr double dist_threshold{3.0}; + static constexpr double yaw_threshold{1.045}; + static constexpr double backward_path_length{5.0}; + static constexpr double forward_path_length{300.0}; }; } // namespace autoware::route_handler::test diff --git a/planning/autoware_rtc_interface/README.md b/planning/autoware_rtc_interface/README.md index 19d200592bcf3..0446ca2d3ca4d 100644 --- a/planning/autoware_rtc_interface/README.md +++ b/planning/autoware_rtc_interface/README.md @@ -185,6 +185,10 @@ Return `true` if `uuid` is registered. If `uuid` is registered, return `true`. If not, return `false`. +## Debugging Tools + +There is a debugging tool called [RTC Replayer](https://autowarefoundation.github.io/autoware_tools/main/planning/autoware_rtc_replayer/) for the RTC interface. + ## Assumptions / Known limits ## Future extensions / Unimplemented parts diff --git a/planning/autoware_scenario_selector/include/autoware/scenario_selector/node.hpp b/planning/autoware_scenario_selector/include/autoware/scenario_selector/node.hpp index e008a3d647436..557c0c871583d 100644 --- a/planning/autoware_scenario_selector/include/autoware/scenario_selector/node.hpp +++ b/planning/autoware_scenario_selector/include/autoware/scenario_selector/node.hpp @@ -73,12 +73,12 @@ class ScenarioSelectorNode : public rclcpp::Node rclcpp::Subscription::SharedPtr sub_lanelet_map_; rclcpp::Subscription::SharedPtr sub_route_; - autoware_universe_utils::InterProcessPollingSubscriber::SharedPtr + autoware::universe_utils::InterProcessPollingSubscriber::SharedPtr sub_odom_; rclcpp::Subscription::SharedPtr sub_lane_driving_trajectory_; rclcpp::Subscription::SharedPtr sub_parking_trajectory_; - autoware_universe_utils::InterProcessPollingSubscriber::SharedPtr + autoware::universe_utils::InterProcessPollingSubscriber::SharedPtr sub_parking_state_; rclcpp::Publisher::SharedPtr pub_trajectory_; rclcpp::Publisher::SharedPtr pub_scenario_; @@ -93,7 +93,7 @@ class ScenarioSelectorNode : public rclcpp::Node std::deque twist_buffer_; std::shared_ptr route_handler_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; // Parameters double update_rate_; diff --git a/planning/autoware_scenario_selector/package.xml b/planning/autoware_scenario_selector/package.xml index 4a3c0c5c99eaf..c076ea2a5401d 100644 --- a/planning/autoware_scenario_selector/package.xml +++ b/planning/autoware_scenario_selector/package.xml @@ -16,12 +16,12 @@ ament_cmake_auto autoware_cmake + autoware_lanelet2_extension autoware_map_msgs autoware_planning_msgs autoware_planning_test_manager autoware_route_handler autoware_universe_utils - lanelet2_extension nav_msgs rclcpp rclcpp_components diff --git a/planning/autoware_scenario_selector/src/node.cpp b/planning/autoware_scenario_selector/src/node.cpp index d1516c68050c1..0e204ae82146c 100644 --- a/planning/autoware_scenario_selector/src/node.cpp +++ b/planning/autoware_scenario_selector/src/node.cpp @@ -14,8 +14,8 @@ #include "autoware/scenario_selector/node.hpp" -#include -#include +#include +#include #include #include @@ -382,7 +382,7 @@ ScenarioSelectorNode::ScenarioSelectorNode(const rclcpp::NodeOptions & node_opti timer_ = rclcpp::create_timer( this, get_clock(), period_ns, std::bind(&ScenarioSelectorNode::onTimer, this)); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } } // namespace autoware::scenario_selector diff --git a/planning/autoware_static_centerline_generator/CMakeLists.txt b/planning/autoware_static_centerline_generator/CMakeLists.txt index 08a97c9010008..261e8beb0022f 100644 --- a/planning/autoware_static_centerline_generator/CMakeLists.txt +++ b/planning/autoware_static_centerline_generator/CMakeLists.txt @@ -60,5 +60,7 @@ endif() install(PROGRAMS scripts/app.py + scripts/centerline_updater_helper.py + scripts/show_lanelet2_map_diff.py DESTINATION lib/${PROJECT_NAME} ) diff --git a/planning/autoware_static_centerline_generator/config/static_centerline_generator.param.yaml b/planning/autoware_static_centerline_generator/config/static_centerline_generator.param.yaml index 24a5536949479..060590803428a 100644 --- a/planning/autoware_static_centerline_generator/config/static_centerline_generator.param.yaml +++ b/planning/autoware_static_centerline_generator/config/static_centerline_generator.param.yaml @@ -1,5 +1,9 @@ /**: ros__parameters: - marker_color: ["FF0000", "00FF00", "0000FF"] + marker_color: ["FF0000", "FF5A00", "FFFF00"] marker_color_dist_thresh : [0.1, 0.2, 0.3] output_trajectory_interval: 1.0 + + validation: + dist_threshold_to_road_border: 0.0 + max_steer_angle_margin: 0.0 # [rad] NOTE: Positive value makes max steer angle threshold to decrease. diff --git a/planning/autoware_static_centerline_generator/launch/static_centerline_generator.launch.xml b/planning/autoware_static_centerline_generator/launch/static_centerline_generator.launch.xml index 3d786ab995e5b..38379a52e4c92 100644 --- a/planning/autoware_static_centerline_generator/launch/static_centerline_generator.launch.xml +++ b/planning/autoware_static_centerline_generator/launch/static_centerline_generator.launch.xml @@ -3,17 +3,19 @@ - + - - + - + + + + @@ -28,7 +30,7 @@ default="$(find-pkg-share autoware_launch)/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_velocity_planner/behavior_velocity_planner.param.yaml" /> - + @@ -55,12 +57,8 @@ - - - - - + @@ -75,12 +73,19 @@ + + + + + + + - + diff --git a/planning/autoware_static_centerline_generator/package.xml b/planning/autoware_static_centerline_generator/package.xml index 1362f04e720e3..6473c3150dcab 100644 --- a/planning/autoware_static_centerline_generator/package.xml +++ b/planning/autoware_static_centerline_generator/package.xml @@ -16,6 +16,7 @@ rosidl_default_generators autoware_behavior_path_planner_common + autoware_lanelet2_extension autoware_map_msgs autoware_mission_planner autoware_motion_utils @@ -30,7 +31,6 @@ geometry_msgs global_parameter_loader interpolation - lanelet2_extension map_loader map_projection_loader osqp_interface diff --git a/planning/autoware_static_centerline_generator/rviz/static_centerline_generator.rviz b/planning/autoware_static_centerline_generator/rviz/static_centerline_generator.rviz index 62b4c9b75ec87..f1bd110783009 100644 --- a/planning/autoware_static_centerline_generator/rviz/static_centerline_generator.rviz +++ b/planning/autoware_static_centerline_generator/rviz/static_centerline_generator.rviz @@ -122,7 +122,7 @@ Visualization Manager: Name: Map - Class: rviz_plugins/PathWithLaneId Color Border Vel Max: 3 - Enabled: true + Enabled: false Name: Raw Centerline Topic: Depth: 5 @@ -179,11 +179,11 @@ Visualization Manager: Filter size: 10 History Policy: Keep Last Reliability Policy: Reliable - Value: /static_centerline_generator/output_centerline + Value: /static_centerline_generator/output/centerline Value: true View Footprint: - Alpha: 1 - Color: 255; 0; 0 + Alpha: 0.5 + Color: 0; 255; 0 Offset from BaseLink: 0 Rear Overhang: 1.0299999713897705 Value: true @@ -268,9 +268,33 @@ Visualization Manager: Durability Policy: Transient Local History Policy: Keep Last Reliability Policy: Reliable - Value: /static_centerline_generator/debug/unsafe_footprints + Value: /static_centerline_generator/output/validation_results Value: true - Enabled: false + - Class: rviz_default_plugins/MarkerArray + Enabled: true + Name: Debug Markers + Namespaces: + curvature: false + Topic: + Depth: 5 + Durability Policy: Transient Local + History Policy: Keep Last + Reliability Policy: Reliable + Value: /static_centerline_generator/debug/markers + Value: true + - Class: rviz_default_plugins/MarkerArray + Enabled: false + Name: MarkerArray + Namespaces: + {} + Topic: + Depth: 5 + Durability Policy: Transient Local + History Policy: Keep Last + Reliability Policy: Reliable + Value: /static_centerline_generator/debug/ego_footprint_bounds + Value: true + Enabled: true Name: debug Enabled: true Global Options: diff --git a/planning/autoware_static_centerline_generator/scripts/centerline_updater_helper.py b/planning/autoware_static_centerline_generator/scripts/centerline_updater_helper.py index 3672165caed85..f3d908713361d 100755 --- a/planning/autoware_static_centerline_generator/scripts/centerline_updater_helper.py +++ b/planning/autoware_static_centerline_generator/scripts/centerline_updater_helper.py @@ -20,18 +20,20 @@ from PyQt5 import QtCore from PyQt5.QtWidgets import QApplication -from PyQt5.QtWidgets import QGridLayout +from PyQt5.QtWidgets import QGroupBox from PyQt5.QtWidgets import QMainWindow from PyQt5.QtWidgets import QPushButton from PyQt5.QtWidgets import QSizePolicy from PyQt5.QtWidgets import QSlider +from PyQt5.QtWidgets import QVBoxLayout from PyQt5.QtWidgets import QWidget from autoware_planning_msgs.msg import Trajectory import rclpy from rclpy.node import Node from rclpy.qos import QoSDurabilityPolicy from rclpy.qos import QoSProfile -from std_msgs.msg import Bool +from std_msgs.msg import Empty +from std_msgs.msg import Float32 from std_msgs.msg import Int32 @@ -46,25 +48,8 @@ def setupUI(self): self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) central_widget = QWidget(self) - central_widget.setObjectName("central_widget") - - self.grid_layout = QGridLayout(central_widget) + self.grid_layout = QVBoxLayout(central_widget) self.grid_layout.setContentsMargins(10, 10, 10, 10) - self.grid_layout.setObjectName("grid_layout") - - # button to update the trajectory's start and end index - self.update_button = QPushButton("update slider") - self.update_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) - self.update_button.clicked.connect(self.onUpdateButton) - - # button to reset the trajectory's start and end index - self.reset_button = QPushButton("reset") - self.reset_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) - self.reset_button.clicked.connect(self.onResetButton) - - # button to save map - self.save_map_button = QPushButton("save map") - self.save_map_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # slide of the trajectory's start and end index self.traj_start_index_slider = QSlider(QtCore.Qt.Horizontal) @@ -72,69 +57,61 @@ def setupUI(self): self.min_traj_start_index = 0 self.max_traj_end_index = None - # set layout - self.grid_layout.addWidget(self.update_button, 1, 0, 1, -1) - self.grid_layout.addWidget(self.reset_button, 2, 0, 1, -1) - self.grid_layout.addWidget(self.save_map_button, 3, 0, 1, -1) - self.grid_layout.addWidget(self.traj_start_index_slider, 4, 0, 1, -1) - self.grid_layout.addWidget(self.traj_end_index_slider, 5, 0, 1, -1) - self.setCentralWidget(central_widget) - - def initWithEndIndex(self, max_traj_end_index): - self.max_traj_end_index = max_traj_end_index - - # initialize slider - self.displayed_min_traj_start_index = self.min_traj_start_index - self.displayed_max_traj_end_index = self.max_traj_end_index - self.initializeSlider() - - def initializeSlider(self, move_value_to_end=True): - self.traj_start_index_slider.setMinimum(0) - self.traj_end_index_slider.setMinimum(0) - self.traj_start_index_slider.setMaximum( - self.displayed_max_traj_end_index - self.displayed_min_traj_start_index - ) - self.traj_end_index_slider.setMaximum( - self.displayed_max_traj_end_index - self.displayed_min_traj_start_index + # Layout: Range of Centerline + centerline_vertical_box = QVBoxLayout(self) + centerline_vertical_box.addWidget(self.traj_start_index_slider) + centerline_vertical_box.addWidget(self.traj_end_index_slider) + centerline_group = QGroupBox("Centerline") + centerline_group.setLayout(centerline_vertical_box) + self.grid_layout.addWidget(centerline_group) + + """ + # 2. Road Boundary + road_boundary_group = QGroupBox("Road Boundary") + road_boundary_vertical_box = QVBoxLayout(self) + road_boundary_group.setLayout(road_boundary_vertical_box) + self.grid_layout.addWidget(road_boundary_group) + + # 2.1. Slider + self.road_boundary_lateral_margin_slider = QSlider(QtCore.Qt.Horizontal) + road_boundary_vertical_box.addWidget(self.road_boundary_lateral_margin_slider) + self.road_boundary_lateral_margin_ratio = 10 + self.road_boundary_lateral_margin_slider.setMinimum(0) + self.road_boundary_lateral_margin_slider.setMaximum( + 5 * self.road_boundary_lateral_margin_ratio ) + road_boundary_vertical_box.addWidget(QPushButton("reset")) + """ - if move_value_to_end: - self.traj_start_index_slider.setValue(0) - self.traj_end_index_slider.setValue(self.traj_end_index_slider.maximum()) - - def onResetButton(self, event): - current_traj_start_index = self.displayed_min_traj_start_index - current_traj_end_index = self.displayed_max_traj_end_index + # 3. General + general_group = QGroupBox("General") + general_vertical_box = QVBoxLayout(self) + general_group.setLayout(general_vertical_box) + self.grid_layout.addWidget(general_group) - self.displayed_min_traj_start_index = self.min_traj_start_index - self.displayed_max_traj_end_index = self.max_traj_end_index + # 3.1. Validate Centerline + self.validate_button = QPushButton("validate") + self.validate_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + general_vertical_box.addWidget(self.validate_button) - self.initializeSlider(False) - self.traj_start_index_slider.setValue(current_traj_start_index) - if ( - current_traj_start_index == self.min_traj_start_index - and current_traj_end_index == self.max_traj_end_index - ): - self.traj_end_index_slider.setValue(self.displayed_max_traj_end_index) - else: - self.traj_end_index_slider.setValue( - current_traj_start_index + self.traj_end_index_slider.value() - ) - - def onUpdateButton(self, event): - current_traj_start_index = self.getCurrentStartIndex() - current_traj_end_index = self.getCurrentEndIndex() + # 3.2. Save Map + self.save_map_button = QPushButton("save map") + self.save_map_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + general_vertical_box.addWidget(self.save_map_button) - self.displayed_min_traj_start_index = current_traj_start_index - self.displayed_max_traj_end_index = current_traj_end_index + self.setCentralWidget(central_widget) - self.initializeSlider() + def initWithEndIndex(self, max_traj_end_index): + self.max_traj_end_index = max_traj_end_index - def getCurrentStartIndex(self): - return self.displayed_min_traj_start_index + self.traj_start_index_slider.value() + # initialize sliders + self.traj_start_index_slider.setMinimum(self.min_traj_start_index) + self.traj_start_index_slider.setMaximum(self.max_traj_end_index) + self.traj_start_index_slider.setValue(self.min_traj_start_index) - def getCurrentEndIndex(self): - return self.displayed_min_traj_start_index + self.traj_end_index_slider.value() + self.traj_end_index_slider.setMinimum(self.min_traj_start_index) + self.traj_end_index_slider.setMaximum(self.max_traj_end_index) + self.traj_end_index_slider.setValue(self.max_traj_end_index) class CenterlineUpdaterHelper(Node): @@ -144,18 +121,32 @@ def __init__(self): self.widget = CenterlineUpdaterWidget() self.widget.show() self.widget.save_map_button.clicked.connect(self.onSaveMapButtonPushed) + self.widget.validate_button.clicked.connect(self.onValidateButtonPushed) self.widget.traj_start_index_slider.valueChanged.connect(self.onStartIndexChanged) self.widget.traj_end_index_slider.valueChanged.connect(self.onEndIndexChanged) + """ + self.widget.road_boundary_lateral_margin_slider.valueChanged.connect( + self.onRoadBoundaryLateralMargin + ) + """ # ROS - self.pub_save_map = self.create_publisher(Bool, "~/save_map", 1) - self.pub_traj_start_index = self.create_publisher(Int32, "~/traj_start_index", 1) - self.pub_traj_end_index = self.create_publisher(Int32, "~/traj_end_index", 1) + self.pub_save_map = self.create_publisher(Empty, "/static_centerline_generator/save_map", 1) + self.pub_validate = self.create_publisher(Empty, "/static_centerline_generator/validate", 1) + self.pub_traj_start_index = self.create_publisher( + Int32, "/static_centerline_generator/traj_start_index", 1 + ) + self.pub_traj_end_index = self.create_publisher( + Int32, "/static_centerline_generator/traj_end_index", 1 + ) + self.pub_road_boundary_lateral_margin = self.create_publisher( + Float32, "/static_centerline_generator/road_boundary_lateral_margin", 1 + ) transient_local_qos = QoSProfile(depth=1, durability=QoSDurabilityPolicy.TRANSIENT_LOCAL) self.sub_whole_centerline = self.create_subscription( Trajectory, - "/static_centerline_generator/output_whole_centerline", + "/static_centerline_generator/output/whole_centerline", self.onWholeCenterline, transient_local_qos, ) @@ -168,20 +159,38 @@ def onWholeCenterline(self, whole_centerline): self.widget.initWithEndIndex(len(whole_centerline.points) - 1) def onSaveMapButtonPushed(self, event): - msg = Bool() - msg.data = True + msg = Empty() self.pub_save_map.publish(msg) + # NOTE: After saving the map, the generated centerline is written + # in original_map_ptr_ in static_centerline_generator_node. + # When saving the map again, another centerline is written without + # removing the previous centerline. + # Therefore, saving the map can be called only once. + self.widget.save_map_button.setEnabled(False) + + def onValidateButtonPushed(self, event): + msg = Empty() + self.pub_validate.publish(msg) + def onStartIndexChanged(self, event): msg = Int32() - msg.data = self.widget.getCurrentStartIndex() + msg.data = self.widget.traj_start_index_slider.value() self.pub_traj_start_index.publish(msg) def onEndIndexChanged(self, event): msg = Int32() - msg.data = self.widget.getCurrentEndIndex() + msg.data = self.widget.traj_end_index_slider.value() self.pub_traj_end_index.publish(msg) + def onRoadBoundaryLateralMargin(self, event): + msg = Float32() + msg.data = ( + self.widget.road_boundary_lateral_margin_slider.value() + / self.widget.road_boundary_lateral_margin_ratio + ) + self.pub_road_boundary_lateral_margin.publish(msg) + def main(args=None): app = QApplication(sys.argv) diff --git a/planning/autoware_static_centerline_generator/scripts/tmp/bag_ego_trajectory_based_centerline.sh b/planning/autoware_static_centerline_generator/scripts/tmp/bag_ego_trajectory_based_centerline.sh index e7f86062a9d20..c170e24e475d9 100755 --- a/planning/autoware_static_centerline_generator/scripts/tmp/bag_ego_trajectory_based_centerline.sh +++ b/planning/autoware_static_centerline_generator/scripts/tmp/bag_ego_trajectory_based_centerline.sh @@ -1,3 +1,5 @@ #!/bin/bash -ros2 launch autoware_static_centerline_generator static_centerline_generator.launch.xml centerline_source:="bag_ego_trajectory_base" run_background:=false lanelet2_input_file_path:="$HOME/autoware_map/sample_map/lanelet2_map.osm" bag_filename:="$(ros2 pkg prefix autoware_static_centerline_generator --share)/test/data/bag_ego_trajectory.db3" vehicle_model:=lexus +ros2 launch autoware_static_centerline_generator static_centerline_generator.launch.xml centerline_source:="bag_ego_trajectory_base" mode:="GUI" lanelet2_input_file_path:="$HOME/autoware_map/sample_map/lanelet2_map.osm" bag_filename:="$(ros2 pkg prefix autoware_static_centerline_generator --share)/test/data/bag_ego_trajectory_turn-right.db3" vehicle_model:=lexus + +# ros2 launch autoware_static_centerline_generator static_centerline_generator.launch.xml centerline_source:="bag_ego_trajectory_base" mode:="GUI" lanelet2_input_file_path:="$HOME/autoware_map/sample_map/lanelet2_map.osm" bag_filename:="$(ros2 pkg prefix autoware_static_centerline_generator --share)/test/data/bag_ego_trajectory_turn-left-right.db3" vehicle_model:=lexus diff --git a/planning/autoware_static_centerline_generator/src/centerline_source/bag_ego_trajectory_based_centerline.cpp b/planning/autoware_static_centerline_generator/src/centerline_source/bag_ego_trajectory_based_centerline.cpp index d73573833d1fa..cbfcac5789812 100644 --- a/planning/autoware_static_centerline_generator/src/centerline_source/bag_ego_trajectory_based_centerline.cpp +++ b/planning/autoware_static_centerline_generator/src/centerline_source/bag_ego_trajectory_based_centerline.cpp @@ -73,10 +73,10 @@ std::vector generate_centerline_with_bag(rclcpp::Node & node) centerline_traj_points.at(i - 1).pose.orientation; } } else { - const double yaw_angle = autoware_universe_utils::calcAzimuthAngle( + const double yaw_angle = autoware::universe_utils::calcAzimuthAngle( centerline_traj_points.at(i).pose.position, centerline_traj_points.at(i + 1).pose.position); centerline_traj_points.at(i).pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(yaw_angle); + autoware::universe_utils::createQuaternionFromYaw(yaw_angle); } } diff --git a/planning/autoware_static_centerline_generator/src/centerline_source/optimization_trajectory_based_centerline.cpp b/planning/autoware_static_centerline_generator/src/centerline_source/optimization_trajectory_based_centerline.cpp index 7bba3a6d5a722..1f72dea1cd35f 100644 --- a/planning/autoware_static_centerline_generator/src/centerline_source/optimization_trajectory_based_centerline.cpp +++ b/planning/autoware_static_centerline_generator/src/centerline_source/optimization_trajectory_based_centerline.cpp @@ -82,20 +82,20 @@ OptimizationTrajectoryBasedCenterline::generate_centerline_with_optimization( // get ego nearest search parameters and resample interval in behavior_path_planner const double ego_nearest_dist_threshold = - autoware_universe_utils::getOrDeclareParameter(node, "ego_nearest_dist_threshold"); + autoware::universe_utils::getOrDeclareParameter(node, "ego_nearest_dist_threshold"); const double ego_nearest_yaw_threshold = - autoware_universe_utils::getOrDeclareParameter(node, "ego_nearest_yaw_threshold"); + autoware::universe_utils::getOrDeclareParameter(node, "ego_nearest_yaw_threshold"); const double behavior_path_interval = - autoware_universe_utils::getOrDeclareParameter(node, "output_path_interval"); + autoware::universe_utils::getOrDeclareParameter(node, "output_path_interval"); const double behavior_vel_interval = - autoware_universe_utils::getOrDeclareParameter(node, "behavior_output_path_interval"); + autoware::universe_utils::getOrDeclareParameter(node, "behavior_output_path_interval"); // extract path with lane id from lanelets const auto raw_path_with_lane_id = [&]() { const auto non_resampled_path_with_lane_id = utils::get_path_with_lane_id( route_handler, route_lanelets, start_center_pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); - return autoware_motion_utils::resamplePath( + return autoware::motion_utils::resamplePath( non_resampled_path_with_lane_id, behavior_path_interval); }(); pub_raw_path_with_lane_id_->publish(raw_path_with_lane_id); @@ -104,7 +104,7 @@ OptimizationTrajectoryBasedCenterline::generate_centerline_with_optimization( // convert path with lane id to path const auto raw_path = [&]() { const auto non_resampled_path = convert_to_path(raw_path_with_lane_id); - return autoware_motion_utils::resamplePath(non_resampled_path, behavior_vel_interval); + return autoware::motion_utils::resamplePath(non_resampled_path, behavior_vel_interval); }(); pub_raw_path_->publish(raw_path); RCLCPP_INFO(node.get_logger(), "Converted to path and published."); @@ -124,7 +124,7 @@ std::vector OptimizationTrajectoryBasedCenterline::optimize_tra // convert to trajectory points const auto raw_traj_points = [&]() { const auto raw_traj = convert_to_trajectory(raw_path); - return autoware_motion_utils::convertToTrajectoryPointArray(raw_traj); + return autoware::motion_utils::convertToTrajectoryPointArray(raw_traj); }(); // create an instance of elastic band and model predictive trajectory. @@ -166,7 +166,7 @@ std::vector OptimizationTrajectoryBasedCenterline::optimize_tra // connect the previously and currently optimized trajectory points for (size_t j = 0; j < whole_optimized_traj_points.size(); ++j) { - const double dist = autoware_universe_utils::calcDistance2d( + const double dist = autoware::universe_utils::calcDistance2d( whole_optimized_traj_points.at(j), optimized_traj_points.front()); if (dist < 0.5) { const std::vector extracted_whole_optimized_traj_points{ diff --git a/planning/autoware_static_centerline_generator/src/main.cpp b/planning/autoware_static_centerline_generator/src/main.cpp index 9f52f271cd5e5..5afc7e58ba52b 100644 --- a/planning/autoware_static_centerline_generator/src/main.cpp +++ b/planning/autoware_static_centerline_generator/src/main.cpp @@ -25,11 +25,19 @@ int main(int argc, char * argv[]) node_options); // get ros parameter - const bool run_background = node->declare_parameter("run_background"); + const auto mode = node->declare_parameter("mode"); // process - if (!run_background) { - node->run(); + if (mode == "AUTO") { + node->generate_centerline(); + node->validate(); + node->save_map(); + } else if (mode == "GUI") { + node->generate_centerline(); + } else if (mode == "VMB") { + // Do nothing + } else { + throw std::invalid_argument("The `mode` is invalid."); } // NOTE: spin node to keep showing debug path/trajectory in rviz with transient local diff --git a/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.cpp b/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.cpp index 706f0e9c75475..4b9c5a73e81bc 100644 --- a/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.cpp +++ b/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.cpp @@ -18,11 +18,12 @@ #include "autoware/motion_utils/trajectory/conversion.hpp" #include "autoware/universe_utils/geometry/geometry.hpp" #include "autoware/universe_utils/ros/parameter.hpp" +#include "autoware_lanelet2_extension/utility/message_conversion.hpp" +#include "autoware_lanelet2_extension/utility/query.hpp" +#include "autoware_lanelet2_extension/utility/utilities.hpp" #include "autoware_static_centerline_generator/msg/points_with_lane_id.hpp" #include "centerline_source/bag_ego_trajectory_based_centerline.hpp" -#include "lanelet2_extension/utility/message_conversion.hpp" -#include "lanelet2_extension/utility/query.hpp" -#include "lanelet2_extension/utility/utilities.hpp" +#include "interpolation/spline_interpolation_points_2d.hpp" #include "map_loader/lanelet2_map_loader_node.hpp" #include "map_projection_loader/load_info_from_lanelet2_map.hpp" #include "map_projection_loader/map_projection_loader.hpp" @@ -34,7 +35,7 @@ #include #include -#include "std_msgs/msg/bool.hpp" +#include "std_msgs/msg/empty.hpp" #include "std_msgs/msg/float32.hpp" #include "std_msgs/msg/int32.hpp" @@ -55,6 +56,10 @@ #include #include +#define RESET_TEXT "\x1B[0m" +#define RED_TEXT "\x1B[31m" +#define BOLD_TEXT "\x1B[1m" + namespace autoware::static_centerline_generator { namespace @@ -89,13 +94,13 @@ LinearRing2d create_vehicle_footprint( std::vector geom_points; geom_points.push_back( - autoware_universe_utils::calcOffsetPose(pose, x_front, y_left, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, x_front, y_left, 0.0).position); geom_points.push_back( - autoware_universe_utils::calcOffsetPose(pose, x_front, y_right, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, x_front, y_right, 0.0).position); geom_points.push_back( - autoware_universe_utils::calcOffsetPose(pose, x_rear, y_right, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, x_rear, y_right, 0.0).position); geom_points.push_back( - autoware_universe_utils::calcOffsetPose(pose, x_rear, y_left, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, x_rear, y_left, 0.0).position); LinearRing2d footprint; for (const auto & geom_point : geom_points) { @@ -115,9 +120,9 @@ geometry_msgs::msg::Pose get_text_pose( const auto & i = vehicle_info; const double x_front = i.front_overhang_m + i.wheel_base_m; - const double y_left = i.wheel_tread_m / 2.0 + i.left_overhang_m + 1.0; + const double y_left = i.wheel_tread_m / 2.0 + i.left_overhang_m + 0.5; - return autoware_universe_utils::calcOffsetPose(pose, x_front, y_left, 0.0); + return autoware::universe_utils::calcOffsetPose(pose, x_front, y_left, 0.0); } std::array convert_hex_string_to_decimal(const std::string & hex_str_color) @@ -166,10 +171,36 @@ std::vector resample_trajectory_points( const std::vector & input_traj_points, const double resample_interval) { // resample and calculate trajectory points' orientation - const auto input_traj = autoware_motion_utils::convertToTrajectory(input_traj_points); + const auto input_traj = autoware::motion_utils::convertToTrajectory(input_traj_points); auto resampled_input_traj = - autoware_motion_utils::resampleTrajectory(input_traj, resample_interval); - return autoware_motion_utils::convertToTrajectoryPointArray(resampled_input_traj); + autoware::motion_utils::resampleTrajectory(input_traj, resample_interval); + return autoware::motion_utils::convertToTrajectoryPointArray(resampled_input_traj); +} + +bool arePointsClose( + const geometry_msgs::msg::Point & p1, const geometry_msgs::msg::Point & p2, const double epsilon) +{ + return std::abs(p1.x - p2.x) < epsilon && std::abs(p1.y - p2.y) < epsilon; +} + +bool areSameDirection( + const double yaw, const geometry_msgs::msg::Point & start_point, + const geometry_msgs::msg::Point & end_point) +{ + return autoware::universe_utils::normalizeRadian( + yaw - std::atan2(end_point.y - start_point.y, end_point.x - start_point.x)) < M_PI_2; +} + +std::vector convertToGeometryPoints(const LineString2d & lanelet_points) +{ + std::vector points; + for (const auto & lanelet_point : lanelet_points) { + geometry_msgs::msg::Point point; + point.x = lanelet_point.x(); + point.y = lanelet_point.y(); + points.push_back(point); + } + return points; } } // namespace @@ -181,46 +212,48 @@ StaticCenterlineGeneratorNode::StaticCenterlineGeneratorNode( pub_map_bin_ = create_publisher("lanelet2_map_topic", utils::create_transient_local_qos()); pub_whole_centerline_ = - create_publisher("output_whole_centerline", utils::create_transient_local_qos()); + create_publisher("~/output/whole_centerline", utils::create_transient_local_qos()); pub_centerline_ = - create_publisher("output_centerline", utils::create_transient_local_qos()); + create_publisher("~/output/centerline", utils::create_transient_local_qos()); // debug publishers - pub_debug_unsafe_footprints_ = - create_publisher("debug/unsafe_footprints", utils::create_transient_local_qos()); + pub_validation_results_ = + create_publisher("~/validation_results", utils::create_transient_local_qos()); + pub_debug_markers_ = + create_publisher("~/debug/markers", utils::create_transient_local_qos()); + + pub_debug_ego_footprint_bounds_ = create_publisher( + "~/debug/ego_footprint_bounds", utils::create_transient_local_qos()); // subscribers + sub_footprint_margin_for_road_bound_ = create_subscription( + "/static_centerline_generator/road_boundary_lateral_margin", rclcpp::QoS{1}, + [this](const std_msgs::msg::Float32 & msg) { footprint_margin_for_road_bound_ = msg.data; }); sub_traj_start_index_ = create_subscription( - "/centerline_updater_helper/traj_start_index", rclcpp::QoS{1}, + "/static_centerline_generator/traj_start_index", rclcpp::QoS{1}, [this](const std_msgs::msg::Int32 & msg) { - update_centerline_range(msg.data, traj_range_indices_.second); + if (centerline_handler_.update_start_index(msg.data)) { + visualize_selected_centerline(); + } }); sub_traj_end_index_ = create_subscription( - "/centerline_updater_helper/traj_end_index", rclcpp::QoS{1}, + "/static_centerline_generator/traj_end_index", rclcpp::QoS{1}, [this](const std_msgs::msg::Int32 & msg) { - update_centerline_range(traj_range_indices_.first, msg.data); - }); - sub_save_map_ = create_subscription( - "/centerline_updater_helper/save_map", rclcpp::QoS{1}, [this](const std_msgs::msg::Bool & msg) { - const auto lanelet2_output_file_path = - autoware_universe_utils::getOrDeclareParameter( - *this, "lanelet2_output_file_path"); - if (!centerline_with_route_ || msg.data) { - const auto & c = *centerline_with_route_; - const auto selected_centerline = std::vector( - c.centerline.begin() + traj_range_indices_.first, - c.centerline.begin() + traj_range_indices_.second + 1); - const auto selected_route_lane_ids = get_route_lane_ids_from_points(selected_centerline); - save_map( - lanelet2_output_file_path, - CenterlineWithRoute{selected_centerline, selected_route_lane_ids}); + if (centerline_handler_.update_end_index(msg.data)) { + visualize_selected_centerline(); } }); - sub_traj_resample_interval_ = create_subscription( - "/centerline_updater_helper/traj_resample_interval", rclcpp::QoS{1}, - [this]([[maybe_unused]] const std_msgs::msg::Float32 & msg) { - // TODO(murooka) + sub_save_map_ = create_subscription( + "/static_centerline_generator/save_map", rclcpp::QoS{1}, + [this]([[maybe_unused]] const std_msgs::msg::Empty & msg) { + if (!centerline_handler_.is_valid()) { + return; + } + save_map(); }); + sub_validate_ = create_subscription( + "/static_centerline_generator/validate", rclcpp::QoS{1}, + [this]([[maybe_unused]] const std_msgs::msg::Empty & msg) { validate(); }); // services callback_group_ = create_callback_group(rclcpp::CallbackGroupType::MutuallyExclusive); @@ -259,43 +292,35 @@ StaticCenterlineGeneratorNode::StaticCenterlineGeneratorNode( }(); } -void StaticCenterlineGeneratorNode::update_centerline_range( - const int traj_start_index, const int traj_end_index) +void StaticCenterlineGeneratorNode::visualize_selected_centerline() { - if (!centerline_with_route_ || traj_range_indices_.second + 1 < traj_start_index) { - return; - } - - traj_range_indices_ = std::make_pair(traj_start_index, traj_end_index); - - const auto & centerline = centerline_with_route_->centerline; - const auto selected_centerline = std::vector( - centerline.begin() + traj_range_indices_.first, - centerline.begin() + traj_range_indices_.second + 1); - + // publish selected centerline + const auto selected_centerline = centerline_handler_.get_selected_centerline(); pub_centerline_->publish( - autoware_motion_utils::convertToTrajectory(selected_centerline, create_header(this->now()))); + autoware::motion_utils::convertToTrajectory(selected_centerline, create_header(this->now()))); + + // delete markers for validation + pub_validation_results_->publish(utils::create_delete_all_marker_array({}, now())); + pub_debug_markers_->publish(utils::create_delete_all_marker_array( + {"unsafe_footprints", "unsafe_footprints_distance"}, now())); + pub_debug_ego_footprint_bounds_->publish( + utils::create_delete_all_marker_array({"road_bounds"}, now())); } -void StaticCenterlineGeneratorNode::run() +void StaticCenterlineGeneratorNode::generate_centerline() { // declare planning setting parameters const auto lanelet2_input_file_path = declare_parameter("lanelet2_input_file_path"); - const auto lanelet2_output_file_path = - declare_parameter("lanelet2_output_file_path"); // process load_map(lanelet2_input_file_path); - const auto centerline_with_route = generate_centerline_with_route(); - traj_range_indices_ = std::make_pair(0, centerline_with_route.centerline.size() - 1); + const auto whole_centerline_with_route = generate_whole_centerline_with_route(); + centerline_handler_ = CenterlineHandler(whole_centerline_with_route); - evaluate(centerline_with_route.route_lane_ids, centerline_with_route.centerline); - save_map(lanelet2_output_file_path, centerline_with_route); - - centerline_with_route_ = centerline_with_route; + visualize_selected_centerline(); } -CenterlineWithRoute StaticCenterlineGeneratorNode::generate_centerline_with_route() +CenterlineWithRoute StaticCenterlineGeneratorNode::generate_whole_centerline_with_route() { if (!route_handler_ptr_) { RCLCPP_ERROR(get_logger(), "Route handler is not ready. Return empty trajectory."); @@ -307,14 +332,15 @@ CenterlineWithRoute StaticCenterlineGeneratorNode::generate_centerline_with_rout if (centerline_source_ == CenterlineSource::OptimizationTrajectoryBase) { const lanelet::Id start_lanelet_id = declare_parameter("start_lanelet_id"); const lanelet::Id end_lanelet_id = declare_parameter("end_lanelet_id"); - const auto route_lane_ids = plan_route(start_lanelet_id, end_lanelet_id); + const auto route_lane_ids = plan_route_by_lane_ids(start_lanelet_id, end_lanelet_id); const auto optimized_centerline = optimization_trajectory_based_centerline_.generate_centerline_with_optimization( *this, *route_handler_ptr_, route_lane_ids); return CenterlineWithRoute{optimized_centerline, route_lane_ids}; } else if (centerline_source_ == CenterlineSource::BagEgoTrajectoryBase) { const auto bag_centerline = generate_centerline_with_bag(*this); - const auto route_lane_ids = get_route_lane_ids_from_points(bag_centerline); + const auto route_lane_ids = + plan_route(bag_centerline.front().pose, bag_centerline.back().pose); return CenterlineWithRoute{bag_centerline, route_lane_ids}; } throw std::logic_error( @@ -326,33 +352,12 @@ CenterlineWithRoute StaticCenterlineGeneratorNode::generate_centerline_with_rout centerline_with_route.centerline = resample_trajectory_points(centerline_with_route.centerline, output_trajectory_interval); - pub_whole_centerline_->publish(autoware_motion_utils::convertToTrajectory( - centerline_with_route.centerline, create_header(this->now()))); - - pub_centerline_->publish(autoware_motion_utils::convertToTrajectory( + pub_whole_centerline_->publish(autoware::motion_utils::convertToTrajectory( centerline_with_route.centerline, create_header(this->now()))); return centerline_with_route; } -std::vector StaticCenterlineGeneratorNode::get_route_lane_ids_from_points( - const std::vector & points) -{ - const auto start_lanelets = route_handler_ptr_->getRoadLaneletsAtPose(points.front().pose); - const auto end_lanelets = route_handler_ptr_->getRoadLaneletsAtPose(points.back().pose); - if (start_lanelets.empty() || end_lanelets.empty()) { - RCLCPP_ERROR(get_logger(), "Nearest lanelets to the bag's points are not found."); - return std::vector{}; - } - - const lanelet::Id start_lanelet_id = start_lanelets.front().id(); - const lanelet::Id end_lanelet_id = end_lanelets.front().id(); - if (start_lanelet_id == end_lanelet_id) { - return std::vector{start_lanelet_id}; - } - return plan_route(start_lanelet_id, end_lanelet_id); -} - void StaticCenterlineGeneratorNode::load_map(const std::string & lanelet2_input_file_path) { // copy the input LL2 map to the temporary file for debugging @@ -426,24 +431,35 @@ void StaticCenterlineGeneratorNode::on_load_map( response->message = "InvalidMapFormat"; } -std::vector StaticCenterlineGeneratorNode::plan_route( +std::vector StaticCenterlineGeneratorNode::plan_route_by_lane_ids( const lanelet::Id start_lanelet_id, const lanelet::Id end_lanelet_id) { - if (!map_bin_ptr_ || !route_handler_ptr_) { + if (!route_handler_ptr_) { RCLCPP_ERROR(get_logger(), "Map or route handler is not ready. Return empty lane ids."); return std::vector{}; } - // calculate check points (= start and goal pose) - const auto check_points = [&]() { - const auto start_center_pose = utils::get_center_pose(*route_handler_ptr_, start_lanelet_id); - const auto end_center_pose = utils::get_center_pose(*route_handler_ptr_, end_lanelet_id); - return std::vector{start_center_pose, end_center_pose}; - }(); - RCLCPP_INFO(get_logger(), "Calculated check points."); + const auto start_center_pose = utils::get_center_pose(*route_handler_ptr_, start_lanelet_id); + const auto end_center_pose = utils::get_center_pose(*route_handler_ptr_, end_lanelet_id); + return plan_route(start_center_pose, end_center_pose); +} + +std::vector StaticCenterlineGeneratorNode::plan_route( + const geometry_msgs::msg::Pose & start_center_pose, + const geometry_msgs::msg::Pose & end_center_pose) +{ + if (!map_bin_ptr_) { + RCLCPP_ERROR(get_logger(), "Map or route handler is not ready. Return empty lane ids."); + return std::vector{}; + } // plan route by the mission_planner package const auto route = [&]() { + // calculate check points + RCLCPP_INFO(get_logger(), "Calculated check points."); + const auto check_points = + std::vector{start_center_pose, end_center_pose}; + // create mission_planner plugin auto plugin_loader = pluginlib::ClassLoader( "autoware_mission_planner", "autoware::mission_planner::PlannerPlugin"); @@ -459,10 +475,16 @@ std::vector StaticCenterlineGeneratorNode::plan_route( return route; }(); - RCLCPP_INFO(get_logger(), "Planned route."); // get lanelets const auto route_lane_ids = get_lane_ids_from_route(route); + + std::string route_lane_ids_str = ""; + for (const lanelet::Id route_lane_id : route_lane_ids) { + route_lane_ids_str += std::to_string(route_lane_id) + ","; + } + RCLCPP_INFO_STREAM(get_logger(), "Planned route. (" << route_lane_ids_str << ")"); + return route_lane_ids; } @@ -479,7 +501,7 @@ void StaticCenterlineGeneratorNode::on_plan_route( const lanelet::Id end_lanelet_id = request->end_lane_id; // plan route - const auto route_lane_ids = plan_route(start_lanelet_id, end_lanelet_id); + const auto route_lane_ids = plan_route_by_lane_ids(start_lanelet_id, end_lanelet_id); const auto route_lanelets = utils::get_lanelets_from_ids(*route_handler_ptr_, route_lane_ids); // extract lane ids @@ -533,8 +555,11 @@ void StaticCenterlineGeneratorNode::on_plan_path( return; } + centerline_handler_ = + CenterlineHandler(CenterlineWithRoute{optimized_traj_points, route_lane_ids}); + // publish unsafe_footprints - evaluate(route_lane_ids, optimized_traj_points); + validate(); // create output data auto target_traj_point = optimized_traj_points.cbegin(); @@ -572,15 +597,132 @@ void StaticCenterlineGeneratorNode::on_plan_path( response->message = ""; } -void StaticCenterlineGeneratorNode::evaluate( - const std::vector & route_lane_ids, - const std::vector & optimized_traj_points) +RoadBounds StaticCenterlineGeneratorNode::update_road_boundary( + const std::vector & centerline) +{ + const double max_ego_lon_offset = vehicle_info_.front_overhang_m + vehicle_info_.wheel_base_m; + const double min_ego_lon_offset = -vehicle_info_.rear_overhang_m; + const double max_ego_lat_offset = + vehicle_info_.wheel_tread_m / 2.0 + vehicle_info_.left_overhang_m; + const double ego_lat_offset = max_ego_lat_offset + footprint_margin_for_road_bound_; + + std::vector ego_left_bound; + std::vector ego_right_bound; + for (size_t i = 0; i < centerline.size(); ++i) { + const auto & centerline_point = centerline.at(i).pose; + if (i == 0) { + // Add the first bound point + ego_left_bound.push_back(autoware::universe_utils::calcOffsetPose( + centerline_point, min_ego_lon_offset, ego_lat_offset, 0.0) + .position); + ego_right_bound.push_back(autoware::universe_utils::calcOffsetPose( + centerline_point, min_ego_lon_offset, -ego_lat_offset, 0.0) + .position); + } + + if (i == centerline.size() - 1) { + // Add the last bound point + const auto ego_left_bound_last_point = + autoware::universe_utils::calcOffsetPose( + centerline_point, max_ego_lon_offset, ego_lat_offset, 0.0) + .position; + if (!arePointsClose(ego_left_bound.back(), ego_left_bound_last_point, 1e-6)) { + ego_left_bound.push_back(ego_left_bound_last_point); + } + const auto ego_right_bound_last_point = + autoware::universe_utils::calcOffsetPose( + centerline_point, max_ego_lon_offset, -ego_lat_offset, 0.0) + .position; + if (!arePointsClose(ego_right_bound.back(), ego_right_bound_last_point, 1e-6)) { + ego_right_bound.push_back(ego_right_bound_last_point); + } + } else { + // Calculate new bound point depending on the orientation + const auto & next_centerline_point = centerline.at(i + 1).pose; + const double diff_yaw = autoware::universe_utils::normalizeRadian( + tf2::getYaw(next_centerline_point.orientation) - tf2::getYaw(centerline_point.orientation)); + const auto [ego_left_bound_new_point, ego_right_bound_new_point] = [&]() { + if (0 < diff_yaw) { + return std::make_pair( + autoware::universe_utils::calcOffsetPose(centerline_point, 0.0, ego_lat_offset, 0.0) + .position, + autoware::universe_utils::calcOffsetPose( + centerline_point, max_ego_lon_offset, -ego_lat_offset, 0.0) + .position); + } + return std::make_pair( + autoware::universe_utils::calcOffsetPose( + centerline_point, max_ego_lon_offset, ego_lat_offset, 0.0) + .position, + autoware::universe_utils::calcOffsetPose(centerline_point, 0.0, -ego_lat_offset, 0.0) + .position); + }(); + + // Check if the bound will be longitudinally monotonic. + if (areSameDirection( + tf2::getYaw(centerline_point.orientation), ego_left_bound.back(), + ego_left_bound_new_point)) { + ego_left_bound.push_back(ego_left_bound_new_point); + } + if (areSameDirection( + tf2::getYaw(centerline_point.orientation), ego_right_bound.back(), + ego_right_bound_new_point)) { + ego_right_bound.push_back(ego_right_bound_new_point); + } + } + } + + // Publish marker + MarkerArray ego_footprint_bounds_marker_array; + { + auto left_bound_marker = autoware::universe_utils::createDefaultMarker( + "map", now(), "road_bounds", 0, Marker::LINE_STRIP, + autoware::universe_utils::createMarkerScale(0.05, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(1.0, 0.5, 0.7, 0.8)); + left_bound_marker.lifetime = rclcpp::Duration(0, 0); + for (const auto & ego_left_bound_point : ego_left_bound) { + left_bound_marker.points.push_back(ego_left_bound_point); + } + ego_footprint_bounds_marker_array.markers.push_back(left_bound_marker); + } + { + auto right_bound_marker = autoware::universe_utils::createDefaultMarker( + "map", now(), "road_bounds", 1, Marker::LINE_STRIP, + autoware::universe_utils::createMarkerScale(0.05, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(1.0, 0.5, 0.7, 0.8)); + right_bound_marker.lifetime = rclcpp::Duration(0, 0); + for (const auto & ego_right_bound_point : ego_right_bound) { + right_bound_marker.points.push_back(ego_right_bound_point); + } + ego_footprint_bounds_marker_array.markers.push_back(right_bound_marker); + } + pub_debug_ego_footprint_bounds_->publish(ego_footprint_bounds_marker_array); + + return RoadBounds{ego_left_bound, ego_right_bound}; +} + +void StaticCenterlineGeneratorNode::validate() { + // const auto selected_centerline = centerline_handler_.get_selected_centerline(); + // const auto road_bounds = update_road_boundary(selected_centerline); + + std::cerr << std::endl + << "############################################## Validation Results " + "##############################################" + << std::endl; + + const auto & centerline = centerline_handler_.get_selected_centerline(); + const auto & route_lane_ids = centerline_handler_.get_route_lane_ids(); const auto route_lanelets = utils::get_lanelets_from_ids(*route_handler_ptr_, route_lane_ids); - const auto dist_thresh_vec = autoware_universe_utils::getOrDeclareParameter>( - *this, "marker_color_dist_thresh"); - const auto marker_color_vec = - autoware_universe_utils::getOrDeclareParameter>(*this, "marker_color"); + + const double dist_thresh_to_road_border = + getRosParameter("validation.dist_threshold_to_road_border"); + const double max_steer_angle_margin = + getRosParameter("validation.max_steer_angle_margin"); + + // calculate color for distance to road border + const auto dist_thresh_vec = getRosParameter>("marker_color_dist_thresh"); + const auto marker_color_vec = getRosParameter>("marker_color"); const auto get_marker_color = [&](const double dist) -> boost::optional> { for (size_t i = 0; i < dist_thresh_vec.size(); ++i) { const double dist_thresh = dist_thresh_vec.at(i); @@ -592,27 +734,34 @@ void StaticCenterlineGeneratorNode::evaluate( }; // create right/left bound - LineString2d right_bound; - LineString2d left_bound; + LineString2d lanelet_right_bound; + LineString2d lanelet_left_bound; for (const auto & lanelet : route_lanelets) { for (const auto & point : lanelet.rightBound()) { - boost::geometry::append(right_bound, Point2d(point.x(), point.y())); + boost::geometry::append(lanelet_right_bound, Point2d(point.x(), point.y())); } for (const auto & point : lanelet.leftBound()) { - boost::geometry::append(left_bound, Point2d(point.x(), point.y())); + boost::geometry::append(lanelet_left_bound, Point2d(point.x(), point.y())); } } + // calculate curvature + SplineInterpolationPoints2d centerline_spline(centerline); + const auto curvature_vec = centerline_spline.getSplineInterpolatedCurvatures(); + const double curvature_threshold = vehicle_info_.calcCurvatureFromSteerAngle( + vehicle_info_.max_steer_angle_rad - max_steer_angle_margin); + // calculate the distance between footprint and right/left bounds MarkerArray marker_array; double min_dist = std::numeric_limits::max(); - for (size_t i = 0; i < optimized_traj_points.size(); ++i) { - const auto & traj_point = optimized_traj_points.at(i); + double max_curvature = std::numeric_limits::min(); + for (size_t i = 0; i < centerline.size(); ++i) { + const auto & traj_point = centerline.at(i); const auto footprint_poly = create_vehicle_footprint(traj_point.pose, vehicle_info_); - const double dist_to_right = boost::geometry::distance(footprint_poly, right_bound); - const double dist_to_left = boost::geometry::distance(footprint_poly, left_bound); + const double dist_to_right = boost::geometry::distance(footprint_poly, lanelet_right_bound); + const double dist_to_left = boost::geometry::distance(footprint_poly, lanelet_left_bound); const double min_dist_to_bound = std::min(dist_to_right, dist_to_left); if (min_dist_to_bound < min_dist) { @@ -621,46 +770,111 @@ void StaticCenterlineGeneratorNode::evaluate( // create marker const auto marker_color_opt = get_marker_color(min_dist_to_bound); + const auto text_pose = get_text_pose(traj_point.pose, vehicle_info_); if (marker_color_opt) { const auto & marker_color = marker_color_opt.get(); // add footprint marker - const auto footprint_marker = - utils::create_footprint_marker(footprint_poly, marker_color, now(), i); - autoware_universe_utils::appendMarkerArray(footprint_marker, &marker_array); + const auto footprint_marker = utils::create_footprint_marker( + footprint_poly, 0.05, marker_color.at(0), marker_color.at(1), marker_color.at(2), 0.7, + now(), i); + marker_array.markers.push_back(footprint_marker); // add text of distance to bounds marker - const auto text_pose = get_text_pose(traj_point.pose, vehicle_info_); - const auto text_marker = - utils::create_distance_text_marker(text_pose, min_dist_to_bound, marker_color, now(), i); - autoware_universe_utils::appendMarkerArray(text_marker, &marker_array); + const auto text_marker = utils::create_text_marker( + "unsafe_footprints_distance", text_pose, min_dist_to_bound, marker_color.at(0), + marker_color.at(1), marker_color.at(2), 0.999, now(), i); + marker_array.markers.push_back(text_marker); + } + + const double curvature = curvature_vec.at(i); + const auto text_marker = + utils::create_text_marker("curvature", text_pose, curvature, 0.05, 0.05, 0.0, 0.9, now(), i); + marker_array.markers.push_back(text_marker); + + if (max_curvature < std::abs(curvature)) { + max_curvature = std::abs(curvature); } } - pub_debug_unsafe_footprints_->publish(marker_array); + // publish road boundaries + const auto left_bound = convertToGeometryPoints(lanelet_left_bound); + const auto right_bound = convertToGeometryPoints(lanelet_right_bound); + + marker_array.markers.push_back( + utils::create_points_marker("left_bound", left_bound, 0.05, 0.0, 0.6, 0.8, 0.8, now())); + marker_array.markers.push_back( + utils::create_points_marker("right_bound", right_bound, 0.05, 0.0, 0.6, 0.8, 0.8, now())); + pub_debug_markers_->publish(marker_array); + + // show the validation results + // 1. distance from footprints to road boundaries + const bool are_footprints_inside_lanelets = [&]() { + std::cerr << "1. Footprints inside Lanelets:" << std::endl; + if (dist_thresh_to_road_border < min_dist) { + std::cerr << " The generated centerline is inside the lanelet. (threshold:" + << dist_thresh_to_road_border << " < actual:" << min_dist << ")" << std::endl + << " Passed." << std::endl; + return true; + } + std::cerr << RED_TEXT + << " The generated centerline is outside the lanelet. (actual:" << min_dist + << " <= threshold:" << dist_thresh_to_road_border << ")" << std::endl + << " Failed." << RESET_TEXT << std::endl; + return false; + }(); + // 2. centerline's curvature + const bool is_curvature_low = [&]() { + std::cerr << "2. Curvature:" << std::endl; + if (max_curvature < curvature_threshold) { + std::cerr << " The generated centerline has no high curvature. (actual:" << max_curvature + << " < threshold:" << curvature_threshold << ")" + << " Passed." << std::endl; + return true; + } + std::cerr << RED_TEXT << " The generated centerline has a too high curvature. (threshold:" + << curvature_threshold << " <= actual:" << max_curvature << ")" + << " Failed." << RESET_TEXT << std::endl; + return false; + }(); + // 3. result + std::cerr << std::endl << BOLD_TEXT << "Result:" << RESET_TEXT << std::endl; + if (are_footprints_inside_lanelets && is_curvature_low) { + std::cerr << BOLD_TEXT << " Passed!" << RESET_TEXT << std::endl; + } else { + std::cerr << BOLD_TEXT << RED_TEXT << " Failed!" << RESET_TEXT << std::endl; + } - RCLCPP_INFO(get_logger(), "Minimum distance to road is %f [m]", min_dist); + std::cerr << "###################################################################################" + "#############################" + << std::endl + << std::endl; + RCLCPP_INFO(get_logger(), "Validated the generated centerline."); } -void StaticCenterlineGeneratorNode::save_map( - const std::string & lanelet2_output_file_path, const CenterlineWithRoute & centerline_with_route) +void StaticCenterlineGeneratorNode::save_map() { if (!route_handler_ptr_) { return; } - const auto & c = centerline_with_route; - const auto route_lanelets = utils::get_lanelets_from_ids(*route_handler_ptr_, c.route_lane_ids); + const auto & centerline = centerline_handler_.get_selected_centerline(); + const auto & route_lane_ids = centerline_handler_.get_route_lane_ids(); + + const auto lanelet2_output_file_path = getRosParameter("lanelet2_output_file_path"); + + const auto route_lanelets = utils::get_lanelets_from_ids(*route_handler_ptr_, route_lane_ids); // update centerline in map - utils::update_centerline(original_map_ptr_, route_lanelets, c.centerline); + utils::update_centerline(original_map_ptr_, route_lanelets, centerline); RCLCPP_INFO(get_logger(), "Updated centerline in map."); // save map with modified center line - std::filesystem::create_directory("/tmp/static_centerline_generator"); // TODO(murooka) + std::filesystem::create_directory("/tmp/autoware_static_centerline_generator"); const auto map_projector = geography_utils::get_lanelet2_projector(*map_projector_info_); lanelet::write(lanelet2_output_file_path, *original_map_ptr_, *map_projector); - RCLCPP_INFO(get_logger(), "Saved map."); + RCLCPP_INFO( + get_logger(), "Saved map in %s", "/tmp/autoware_static_centerline_generator/lanelet2_map.osm"); // copy the output LL2 map to the temporary file for debugging const std::string debug_output_file_dir{"/tmp/autoware_static_centerline_generator/output/"}; diff --git a/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.hpp b/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.hpp index 2f25a064dca2a..fd2314d42e46f 100644 --- a/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.hpp +++ b/planning/autoware_static_centerline_generator/src/static_centerline_generator_node.hpp @@ -15,6 +15,7 @@ #ifndef STATIC_CENTERLINE_GENERATOR_NODE_HPP_ #define STATIC_CENTERLINE_GENERATOR_NODE_HPP_ +#include "autoware/universe_utils/ros/parameter.hpp" #include "autoware_static_centerline_generator/srv/load_map.hpp" #include "autoware_static_centerline_generator/srv/plan_path.hpp" #include "autoware_static_centerline_generator/srv/plan_route.hpp" @@ -23,7 +24,7 @@ #include "rclcpp/rclcpp.hpp" #include "type_alias.hpp" -#include "std_msgs/msg/bool.hpp" +#include "std_msgs/msg/empty.hpp" #include "std_msgs/msg/float32.hpp" #include "std_msgs/msg/int32.hpp" #include "tier4_map_msgs/msg/map_projector_info.hpp" @@ -45,12 +46,67 @@ struct CenterlineWithRoute std::vector centerline{}; std::vector route_lane_ids{}; }; +struct CenterlineHandler +{ + CenterlineHandler() = default; + explicit CenterlineHandler(const CenterlineWithRoute & centerline_with_route) + : whole_centerline_with_route(centerline_with_route), + start_index(0), + end_index(centerline_with_route.centerline.size() - 1) + { + } + std::vector get_selected_centerline() const + { + if (!whole_centerline_with_route) { + return std::vector{}; + } + const auto & centerline_begin = whole_centerline_with_route->centerline.begin(); + return std::vector( + centerline_begin + start_index, centerline_begin + end_index + 1); + } + std::vector get_route_lane_ids() const + { + if (!whole_centerline_with_route) { + return std::vector{}; + } + return whole_centerline_with_route->route_lane_ids; + } + bool is_valid() const { return whole_centerline_with_route && start_index < end_index; } + bool update_start_index(const int arg_start_index) + { + if (whole_centerline_with_route && arg_start_index < end_index) { + start_index = arg_start_index; + return true; + } + return false; + } + bool update_end_index(const int arg_end_index) + { + if (whole_centerline_with_route && start_index < arg_end_index) { + end_index = arg_end_index; + return true; + } + return false; + } + + std::optional whole_centerline_with_route{std::nullopt}; + int start_index{}; + int end_index{}; +}; + +struct RoadBounds +{ + std::vector left_bound; + std::vector right_bound; +}; class StaticCenterlineGeneratorNode : public rclcpp::Node { public: explicit StaticCenterlineGeneratorNode(const rclcpp::NodeOptions & node_options); - void run(); + void generate_centerline(); + void validate(); + void save_map(); private: // load map @@ -59,33 +115,40 @@ class StaticCenterlineGeneratorNode : public rclcpp::Node const LoadMap::Request::SharedPtr request, const LoadMap::Response::SharedPtr response); // plan route - std::vector plan_route( + std::vector plan_route_by_lane_ids( const lanelet::Id start_lanelet_id, const lanelet::Id end_lanelet_id); + std::vector plan_route( + const geometry_msgs::msg::Pose & start_center_pose, + const geometry_msgs::msg::Pose & end_center_pose); + void on_plan_route( const PlanRoute::Request::SharedPtr request, const PlanRoute::Response::SharedPtr response); // plan centerline - CenterlineWithRoute generate_centerline_with_route(); + CenterlineWithRoute generate_whole_centerline_with_route(); std::vector get_route_lane_ids_from_points( const std::vector & points); void on_plan_path( const PlanPath::Request::SharedPtr request, const PlanPath::Response::SharedPtr response); - void update_centerline_range(const int traj_start_index, const int traj_end_index); - void evaluate( - const std::vector & route_lane_ids, - const std::vector & optimized_traj_points); - void save_map( - const std::string & lanelet2_output_file_path, - const CenterlineWithRoute & centerline_with_route); + void visualize_selected_centerline(); + RoadBounds update_road_boundary(const std::vector & centerline); + + // parameter + template + T getRosParameter(const std::string & param_name) + { + return autoware::universe_utils::getOrDeclareParameter(*this, param_name); + } lanelet::LaneletMapPtr original_map_ptr_{nullptr}; LaneletMapBin::ConstSharedPtr map_bin_ptr_{nullptr}; std::shared_ptr route_handler_ptr_{nullptr}; std::unique_ptr map_projector_info_{nullptr}; - std::pair traj_range_indices_{0, 0}; - std::optional centerline_with_route_{std::nullopt}; + CenterlineHandler centerline_handler_; + + float footprint_margin_for_road_bound_{0.0}; enum class CenterlineSource { OptimizationTrajectoryBase = 0, @@ -96,15 +159,19 @@ class StaticCenterlineGeneratorNode : public rclcpp::Node // publisher rclcpp::Publisher::SharedPtr pub_map_bin_{nullptr}; - rclcpp::Publisher::SharedPtr pub_debug_unsafe_footprints_{nullptr}; rclcpp::Publisher::SharedPtr pub_whole_centerline_{nullptr}; rclcpp::Publisher::SharedPtr pub_centerline_{nullptr}; + rclcpp::Publisher::SharedPtr pub_validation_results_{nullptr}; + rclcpp::Publisher::SharedPtr pub_debug_ego_footprint_bounds_{nullptr}; + rclcpp::Publisher::SharedPtr pub_debug_markers_{nullptr}; // subscriber rclcpp::Subscription::SharedPtr sub_traj_start_index_; rclcpp::Subscription::SharedPtr sub_traj_end_index_; - rclcpp::Subscription::SharedPtr sub_save_map_; + rclcpp::Subscription::SharedPtr sub_save_map_; + rclcpp::Subscription::SharedPtr sub_validate_; rclcpp::Subscription::SharedPtr sub_traj_resample_interval_; + rclcpp::Subscription::SharedPtr sub_footprint_margin_for_road_bound_; // service rclcpp::Service::SharedPtr srv_load_map_; diff --git a/planning/autoware_static_centerline_generator/src/type_alias.hpp b/planning/autoware_static_centerline_generator/src/type_alias.hpp index 88b4d3ffa14b4..2b7b99bfe81be 100644 --- a/planning/autoware_static_centerline_generator/src/type_alias.hpp +++ b/planning/autoware_static_centerline_generator/src/type_alias.hpp @@ -29,6 +29,9 @@ namespace autoware::static_centerline_generator { using autoware::route_handler::RouteHandler; +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::LineString2d; +using autoware::universe_utils::Point2d; using autoware_map_msgs::msg::LaneletMapBin; using autoware_perception_msgs::msg::PredictedObjects; using autoware_planning_msgs::msg::LaneletRoute; @@ -36,10 +39,8 @@ using autoware_planning_msgs::msg::Path; using autoware_planning_msgs::msg::PathPoint; using autoware_planning_msgs::msg::Trajectory; using autoware_planning_msgs::msg::TrajectoryPoint; -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::LineString2d; -using autoware_universe_utils::Point2d; using tier4_planning_msgs::msg::PathWithLaneId; +using visualization_msgs::msg::Marker; using visualization_msgs::msg::MarkerArray; } // namespace autoware::static_centerline_generator diff --git a/planning/autoware_static_centerline_generator/src/utils.cpp b/planning/autoware_static_centerline_generator/src/utils.cpp index 10b2589f3bf7b..1a8e0eae2fbd9 100644 --- a/planning/autoware_static_centerline_generator/src/utils.cpp +++ b/planning/autoware_static_centerline_generator/src/utils.cpp @@ -23,6 +23,7 @@ #include #include +#include namespace autoware::static_centerline_generator { @@ -94,8 +95,8 @@ geometry_msgs::msg::Pose get_center_pose( // calculate middle pose geometry_msgs::msg::Pose middle_pose; middle_pose.position = middle_pos; - const double yaw = autoware_universe_utils::calcAzimuthAngle(middle_pos, next_middle_pos); - middle_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + const double yaw = autoware::universe_utils::calcAzimuthAngle(middle_pos, next_middle_pos); + middle_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); return middle_pose; } @@ -151,6 +152,7 @@ void update_centerline( auto & lanelet_ref = lanelets_ref.at(lanelet_idx); const lanelet::BasicPoint2d point(traj_pos.x, traj_pos.y); + // TODO(murooka) This does not work with L-crank map. const bool is_inside = lanelet::geometry::inside(lanelet_ref, point); if (is_inside) { const auto center_point = createPoint3d(traj_pos.x, traj_pos.y, traj_pos.z); @@ -181,20 +183,17 @@ void update_centerline( } } -MarkerArray create_footprint_marker( - const LinearRing2d & footprint_poly, const std::array & marker_color, - const rclcpp::Time & now, const size_t idx) +Marker create_footprint_marker( + const LinearRing2d & footprint_poly, const double width, const double r, const double g, + const double b, const double a, const rclcpp::Time & now, const size_t idx) { - const double r = marker_color.at(0); - const double g = marker_color.at(1); - const double b = marker_color.at(2); - - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", rclcpp::Clock().now(), "unsafe_footprints", idx, visualization_msgs::msg::Marker::LINE_STRIP, - autoware_universe_utils::createMarkerScale(0.1, 0.0, 0.0), - autoware_universe_utils::createMarkerColor(r, g, b, 0.999)); + autoware::universe_utils::createMarkerScale(width, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(r, g, b, a)); marker.header.stamp = now; + // TODO(murooka) Ideally, the following is unnecessary for the topic of transient local. marker.lifetime = rclcpp::Duration(0, 0); for (const auto & point : footprint_poly) { @@ -206,38 +205,79 @@ MarkerArray create_footprint_marker( marker.points.push_back(geom_point); } marker.points.push_back(marker.points.front()); - - visualization_msgs::msg::MarkerArray marker_array; - marker_array.markers.push_back(marker); - - return marker_array; + return marker; } -MarkerArray create_distance_text_marker( - const geometry_msgs::msg::Pose & pose, const double dist, - const std::array & marker_color, const rclcpp::Time & now, const size_t idx) +Marker create_text_marker( + const std::string & ns, const geometry_msgs::msg::Pose & pose, const double value, const double r, + const double g, const double b, const double a, const rclcpp::Time & now, const size_t idx) { - const double r = marker_color.at(0); - const double g = marker_color.at(1); - const double b = marker_color.at(2); - - auto marker = autoware_universe_utils::createDefaultMarker( - "map", rclcpp::Clock().now(), "unsafe_footprints_distance", idx, - visualization_msgs::msg::Marker::TEXT_VIEW_FACING, - autoware_universe_utils::createMarkerScale(0.5, 0.5, 0.5), - autoware_universe_utils::createMarkerColor(r, g, b, 0.999)); + auto marker = autoware::universe_utils::createDefaultMarker( + "map", rclcpp::Clock().now(), ns, idx, visualization_msgs::msg::Marker::TEXT_VIEW_FACING, + autoware::universe_utils::createMarkerScale(0.5, 0.5, 0.5), + autoware::universe_utils::createMarkerColor(r, g, b, a)); marker.pose = pose; marker.header.stamp = now; marker.lifetime = rclcpp::Duration(0, 0); std::stringstream ss; - ss << std::setprecision(2) << dist; + ss << std::setprecision(2) << value; marker.text = ss.str(); - visualization_msgs::msg::MarkerArray marker_array; - marker_array.markers.push_back(marker); + return marker; +} + +Marker create_points_marker( + const std::string & ns, const std::vector & points, const double width, + const double r, const double g, const double b, const double a, const rclcpp::Time & now) +{ + auto marker = autoware::universe_utils::createDefaultMarker( + "map", now, ns, 1, Marker::LINE_STRIP, + autoware::universe_utils::createMarkerScale(width, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(r, g, b, a)); + marker.lifetime = rclcpp::Duration(0, 0); + marker.points = points; + return marker; +} + +MarkerArray create_delete_all_marker_array( + const std::vector & ns_vec, const rclcpp::Time & now) +{ + Marker marker; + marker.header.stamp = now; + marker.action = visualization_msgs::msg::Marker::DELETEALL; + + MarkerArray marker_array; + for (const auto & ns : ns_vec) { + marker.ns = ns; + marker_array.markers.push_back(marker); + } return marker_array; } + +std::pair, std::vector> +calcBoundsFromLanelets(const lanelet::ConstLanelets lanelets) +{ + std::vector left_bound; + std::vector right_bound; + for (const auto & lanelet : lanelets) { + for (const auto & lanelet_left_bound_point : lanelet.leftBound()) { + geometry_msgs::msg::Point left_bound_point; + left_bound_point.x = lanelet_left_bound_point.x(); + left_bound_point.y = lanelet_left_bound_point.y(); + left_bound_point.z = lanelet_left_bound_point.z(); + left_bound.push_back(left_bound_point); + } + for (const auto & lanelet_right_bound_point : lanelet.rightBound()) { + geometry_msgs::msg::Point right_bound_point; + right_bound_point.x = lanelet_right_bound_point.x(); + right_bound_point.y = lanelet_right_bound_point.y(); + right_bound_point.z = lanelet_right_bound_point.z(); + right_bound.push_back(right_bound_point); + } + } + return std::make_pair(left_bound, right_bound); +} } // namespace utils } // namespace autoware::static_centerline_generator diff --git a/planning/autoware_static_centerline_generator/src/utils.hpp b/planning/autoware_static_centerline_generator/src/utils.hpp index 70a7e61e19b18..e7fd51b30e658 100644 --- a/planning/autoware_static_centerline_generator/src/utils.hpp +++ b/planning/autoware_static_centerline_generator/src/utils.hpp @@ -22,6 +22,7 @@ #include #include +#include #include namespace autoware::static_centerline_generator @@ -45,13 +46,23 @@ void update_centerline( lanelet::LaneletMapPtr lanelet_map_ptr, const lanelet::ConstLanelets & lanelets, const std::vector & new_centerline); -MarkerArray create_footprint_marker( - const LinearRing2d & footprint_poly, const std::array & marker_color, - const rclcpp::Time & now, const size_t idx); +Marker create_footprint_marker( + const LinearRing2d & footprint_poly, const double width, const double r, const double g, + const double b, const double a, const rclcpp::Time & now, const size_t idx); -MarkerArray create_distance_text_marker( - const geometry_msgs::msg::Pose & pose, const double dist, - const std::array & marker_color, const rclcpp::Time & now, const size_t idx); +Marker create_text_marker( + const std::string & ns, const geometry_msgs::msg::Pose & pose, const double value, const double r, + const double g, const double b, const double a, const rclcpp::Time & now, const size_t idx); + +Marker create_points_marker( + const std::string & ns, const std::vector & points, const double width, + const double r, const double g, const double b, const double a, const rclcpp::Time & now); + +MarkerArray create_delete_all_marker_array( + const std::vector & ns_vec, const rclcpp::Time & now); + +std::pair, std::vector> +calcBoundsFromLanelets(const lanelet::ConstLanelets lanelets); } // namespace utils } // namespace autoware::static_centerline_generator diff --git a/planning/autoware_static_centerline_generator/test/data/bag_ego_trajectory_turn-left-right.db3 b/planning/autoware_static_centerline_generator/test/data/bag_ego_trajectory_turn-left-right.db3 new file mode 100644 index 0000000000000..ed3448772b794 Binary files /dev/null and b/planning/autoware_static_centerline_generator/test/data/bag_ego_trajectory_turn-left-right.db3 differ diff --git a/planning/autoware_static_centerline_generator/test/data/bag_ego_trajectory.db3 b/planning/autoware_static_centerline_generator/test/data/bag_ego_trajectory_turn-right.db3 similarity index 100% rename from planning/autoware_static_centerline_generator/test/data/bag_ego_trajectory.db3 rename to planning/autoware_static_centerline_generator/test/data/bag_ego_trajectory_turn-right.db3 diff --git a/planning/autoware_static_centerline_generator/test/test_static_centerline_generator.test.py b/planning/autoware_static_centerline_generator/test/test_static_centerline_generator.test.py index 07f8f3e30e659..4bb0630d13942 100644 --- a/planning/autoware_static_centerline_generator/test/test_static_centerline_generator.test.py +++ b/planning/autoware_static_centerline_generator/test/test_static_centerline_generator.test.py @@ -38,7 +38,7 @@ def generate_test_description(): output="screen", parameters=[ {"lanelet2_map_path": lanelet2_map_path}, - {"run_background": False}, + {"mode": "AUTO"}, {"rviz": False}, {"centerline_source": "optimization_trajectory_base"}, {"lanelet2_input_file_path": lanelet2_map_path}, diff --git a/planning/autoware_surround_obstacle_checker/src/debug_marker.cpp b/planning/autoware_surround_obstacle_checker/src/debug_marker.cpp index e4eaf259e95f9..7897a868ee172 100644 --- a/planning/autoware_surround_obstacle_checker/src/debug_marker.cpp +++ b/planning/autoware_surround_obstacle_checker/src/debug_marker.cpp @@ -52,12 +52,12 @@ Polygon2d createSelfPolygon( } } // namespace -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; SurroundObstacleCheckerDebugNode::SurroundObstacleCheckerDebugNode( const autoware::vehicle_info_utils::VehicleInfo & vehicle_info, const double base_link2front, diff --git a/planning/autoware_surround_obstacle_checker/src/node.cpp b/planning/autoware_surround_obstacle_checker/src/node.cpp index 8a02c6d686736..9c899c2226497 100644 --- a/planning/autoware_surround_obstacle_checker/src/node.cpp +++ b/planning/autoware_surround_obstacle_checker/src/node.cpp @@ -51,9 +51,9 @@ namespace autoware::surround_obstacle_checker namespace bg = boost::geometry; using Point2d = bg::model::d2::point_xy; using Polygon2d = bg::model::polygon; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::pose2transform; using autoware_perception_msgs::msg::ObjectClassification; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::pose2transform; namespace { @@ -193,7 +193,7 @@ SurroundObstacleCheckerNode::SurroundObstacleCheckerNode(const rclcpp::NodeOptio p.publish_debug_footprints = this->declare_parameter("publish_debug_footprints"); p.debug_footprint_label = this->declare_parameter("debug_footprint_label"); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); } vehicle_info_ = autoware::vehicle_info_utils::VehicleInfoUtils(*this).getVehicleInfo(); @@ -251,12 +251,12 @@ rcl_interfaces::msg::SetParametersResult SurroundObstacleCheckerNode::onParam( use_dynamic_object_ = false; for (const auto & label_pair : label_map_) { bool & check_current_label = node_param_.enable_check_map.at(label_pair.second); - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, label_pair.first + ".enable_check", check_current_label); use_dynamic_object_ = use_dynamic_object_ || check_current_label; } - autoware_universe_utils::updateParam( + autoware::universe_utils::updateParam( parameters, "debug_footprint_label", node_param_.debug_footprint_label); const auto check_distances = getCheckDistances(node_param_.debug_footprint_label); debug_ptr_->updateFootprintMargin( @@ -411,7 +411,7 @@ std::optional SurroundObstacleCheckerNode::getNearestObstacleByPointCl tf2::transformToEigen(transform_stamped.value().transform).cast(); pcl::PointCloud transformed_pointcloud; pcl::fromROSMsg(*pointcloud_ptr_, transformed_pointcloud); - autoware_universe_utils::transformPointCloud( + autoware::universe_utils::transformPointCloud( transformed_pointcloud, transformed_pointcloud, isometry); const double front_margin = node_param_.pointcloud_surround_check_front_distance; diff --git a/planning/autoware_surround_obstacle_checker/src/node.hpp b/planning/autoware_surround_obstacle_checker/src/node.hpp index 8a21f6cee6a32..e0bcf771948ca 100644 --- a/planning/autoware_surround_obstacle_checker/src/node.hpp +++ b/planning/autoware_surround_obstacle_checker/src/node.hpp @@ -46,8 +46,8 @@ namespace autoware::surround_obstacle_checker { +using autoware::motion_utils::VehicleStopChecker; using autoware::vehicle_info_utils::VehicleInfo; -using autoware_motion_utils::VehicleStopChecker; using autoware_perception_msgs::msg::PredictedObjects; using autoware_perception_msgs::msg::Shape; using tier4_planning_msgs::msg::VelocityLimit; @@ -111,11 +111,11 @@ class SurroundObstacleCheckerNode : public rclcpp::Node rclcpp::TimerBase::SharedPtr timer_; // publisher and subscriber - autoware_universe_utils::InterProcessPollingSubscriber sub_odometry_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_odometry_{ this, "~/input/odometry"}; - autoware_universe_utils::InterProcessPollingSubscriber - sub_pointcloud_{this, "~/input/pointcloud", autoware_universe_utils::SingleDepthSensorQoS()}; - autoware_universe_utils::InterProcessPollingSubscriber sub_dynamic_objects_{ + autoware::universe_utils::InterProcessPollingSubscriber + sub_pointcloud_{this, "~/input/pointcloud", autoware::universe_utils::SingleDepthSensorQoS()}; + autoware::universe_utils::InterProcessPollingSubscriber sub_dynamic_objects_{ this, "~/input/objects"}; rclcpp::Publisher::SharedPtr pub_stop_reason_; rclcpp::Publisher::SharedPtr pub_clear_velocity_limit_; @@ -143,7 +143,7 @@ class SurroundObstacleCheckerNode : public rclcpp::Node State state_ = State::PASS; std::shared_ptr last_obstacle_found_time_; - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; bool use_dynamic_object_; diff --git a/planning/autoware_velocity_smoother/include/autoware/velocity_smoother/node.hpp b/planning/autoware_velocity_smoother/include/autoware/velocity_smoother/node.hpp index b64f681be46fe..0dd18615be5ef 100644 --- a/planning/autoware_velocity_smoother/include/autoware/velocity_smoother/node.hpp +++ b/planning/autoware_velocity_smoother/include/autoware/velocity_smoother/node.hpp @@ -88,13 +88,13 @@ class VelocitySmootherNode : public rclcpp::Node rclcpp::Publisher::SharedPtr pub_virtual_wall_; rclcpp::Publisher::SharedPtr pub_over_stop_velocity_; rclcpp::Subscription::SharedPtr sub_current_trajectory_; - autoware_universe_utils::InterProcessPollingSubscriber sub_current_odometry_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_current_odometry_{ this, "/localization/kinematic_state"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_current_acceleration_{this, "~/input/acceleration"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_external_velocity_limit_{this, "~/input/external_velocity_limit_mps"}; - autoware_universe_utils::InterProcessPollingSubscriber sub_operation_mode_{ + autoware::universe_utils::InterProcessPollingSubscriber sub_operation_mode_{ this, "~/input/operation_mode_state"}; Odometry::ConstSharedPtr current_odometry_ptr_; // current odometry @@ -245,7 +245,7 @@ class VelocitySmootherNode : public rclcpp::Node void initCommonParam(); // debug - autoware_universe_utils::StopWatch stop_watch_; + autoware::universe_utils::StopWatch stop_watch_; std::shared_ptr prev_time_; double prev_acc_; rclcpp::Publisher::SharedPtr pub_dist_to_stopline_; @@ -273,8 +273,8 @@ class VelocitySmootherNode : public rclcpp::Node void flipVelocity(TrajectoryPoints & points) const; void publishStopWatchTime(); - std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr logger_configure_; + std::unique_ptr published_time_publisher_; }; } // namespace autoware::velocity_smoother diff --git a/planning/autoware_velocity_smoother/src/node.cpp b/planning/autoware_velocity_smoother/src/node.cpp index 42c5f1657999c..5c66f5b906bba 100644 --- a/planning/autoware_velocity_smoother/src/node.cpp +++ b/planning/autoware_velocity_smoother/src/node.cpp @@ -90,9 +90,9 @@ VelocitySmootherNode::VelocitySmootherNode(const rclcpp::NodeOptions & node_opti clock_ = get_clock(); - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void VelocitySmootherNode::setupSmoother(const double wheelbase) @@ -300,7 +300,7 @@ void VelocitySmootherNode::initCommonParam() void VelocitySmootherNode::publishTrajectory(const TrajectoryPoints & trajectory) const { - Trajectory publishing_trajectory = autoware_motion_utils::convertToTrajectory(trajectory); + Trajectory publishing_trajectory = autoware::motion_utils::convertToTrajectory(trajectory); publishing_trajectory.header = base_traj_raw_ptr_->header; pub_trajectory_->publish(publishing_trajectory); published_time_publisher_->publish_if_subscribed( @@ -434,10 +434,10 @@ void VelocitySmootherNode::onCurrentTrajectory(const Trajectory::ConstSharedPtr } // calculate trajectory velocity - auto input_points = autoware_motion_utils::convertToTrajectoryPointArray(*base_traj_raw_ptr_); + auto input_points = autoware::motion_utils::convertToTrajectoryPointArray(*base_traj_raw_ptr_); // guard for invalid trajectory - input_points = autoware_motion_utils::removeOverlapPoints(input_points); + input_points = autoware::motion_utils::removeOverlapPoints(input_points); if (input_points.size() < 2) { RCLCPP_ERROR(get_logger(), "No enough points in trajectory after overlap points removal"); return; @@ -687,7 +687,7 @@ void VelocitySmootherNode::insertBehindVelocity( // TODO(planning/control team) deal with overlapped lanes with the same direction const size_t seg_idx = [&]() { // with distance and yaw thresholds - const auto opt_nearest_seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const auto opt_nearest_seg_idx = autoware::motion_utils::findNearestSegmentIndex( prev_output_, output.at(i).pose, node_param_.ego_nearest_dist_threshold, node_param_.ego_nearest_yaw_threshold); if (opt_nearest_seg_idx) { @@ -695,13 +695,13 @@ void VelocitySmootherNode::insertBehindVelocity( } // with distance threshold - const auto opt_second_nearest_seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const auto opt_second_nearest_seg_idx = autoware::motion_utils::findNearestSegmentIndex( prev_output_, output.at(i).pose, node_param_.ego_nearest_dist_threshold); if (opt_second_nearest_seg_idx) { return opt_second_nearest_seg_idx.value(); } - return autoware_motion_utils::findNearestSegmentIndex( + return autoware::motion_utils::findNearestSegmentIndex( prev_output_, output.at(i).pose.position); }(); const auto prev_output_point = @@ -722,9 +722,9 @@ void VelocitySmootherNode::publishStopDistance(const TrajectoryPoints & trajecto // stop distance calculation const double stop_dist_lim{50.0}; double stop_dist{stop_dist_lim}; - const auto stop_idx{autoware_motion_utils::searchZeroVelocityIndex(trajectory)}; + const auto stop_idx{autoware::motion_utils::searchZeroVelocityIndex(trajectory)}; if (stop_idx) { - stop_dist = autoware_motion_utils::calcSignedArcLength(trajectory, closest, *stop_idx); + stop_dist = autoware::motion_utils::calcSignedArcLength(trajectory, closest, *stop_idx); } else { stop_dist = closest > 0 ? stop_dist : -stop_dist; } @@ -820,14 +820,14 @@ std::pair VelocitySmootherNode::ca void VelocitySmootherNode::overwriteStopPoint( const TrajectoryPoints & input, TrajectoryPoints & output) const { - const auto stop_idx = autoware_motion_utils::searchZeroVelocityIndex(input); + const auto stop_idx = autoware::motion_utils::searchZeroVelocityIndex(input); if (!stop_idx) { return; } // Get Closest Point from Output // TODO(planning/control team) deal with overlapped lanes with the same directions - const auto nearest_output_point_idx = autoware_motion_utils::findNearestIndex( + const auto nearest_output_point_idx = autoware::motion_utils::findNearestIndex( output, input.at(*stop_idx).pose, node_param_.ego_nearest_dist_threshold, node_param_.ego_nearest_yaw_threshold); @@ -876,11 +876,11 @@ void VelocitySmootherNode::applyExternalVelocityLimit(TrajectoryPoints & traj) c // insert the point at the distance of external velocity limit const auto & current_pose = current_odometry_ptr_->pose.pose; const size_t closest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( traj, current_pose, node_param_.ego_nearest_dist_threshold, node_param_.ego_nearest_yaw_threshold); const auto inserted_index = - autoware_motion_utils::insertTargetPoint(closest_seg_idx, external_velocity_limit_.dist, traj); + autoware::motion_utils::insertTargetPoint(closest_seg_idx, external_velocity_limit_.dist, traj); if (!inserted_index) { traj.back().longitudinal_velocity_mps = std::min( traj.back().longitudinal_velocity_mps, static_cast(external_velocity_limit_.velocity)); @@ -893,7 +893,7 @@ void VelocitySmootherNode::applyExternalVelocityLimit(TrajectoryPoints & traj) c // create virtual wall if (std::abs(external_velocity_limit_.velocity) < 1e-3) { - const auto virtual_wall_marker = autoware_motion_utils::createStopVirtualWallMarker( + const auto virtual_wall_marker = autoware::motion_utils::createStopVirtualWallMarker( traj.at(*inserted_index).pose, external_velocity_limit_.sender, this->now(), 0, base_link2front_); pub_virtual_wall_->publish(virtual_wall_marker); @@ -905,13 +905,13 @@ void VelocitySmootherNode::applyExternalVelocityLimit(TrajectoryPoints & traj) c void VelocitySmootherNode::applyStopApproachingVelocity(TrajectoryPoints & traj) const { - const auto stop_idx = autoware_motion_utils::searchZeroVelocityIndex(traj); + const auto stop_idx = autoware::motion_utils::searchZeroVelocityIndex(traj); if (!stop_idx) { return; // no stop point. } double distance_sum = 0.0; for (size_t i = *stop_idx - 1; i < traj.size(); --i) { // search backward - distance_sum += autoware_universe_utils::calcDistance2d(traj.at(i), traj.at(i + 1)); + distance_sum += autoware::universe_utils::calcDistance2d(traj.at(i), traj.at(i + 1)); if (distance_sum > node_param_.stopping_distance) { break; } @@ -1013,7 +1013,6 @@ VelocitySmootherNode::AlgorithmType VelocitySmootherNode::getAlgorithmType( } throw std::domain_error("[VelocitySmootherNode] undesired algorithm is selected."); - return AlgorithmType::INVALID; } double VelocitySmootherNode::calcTravelDistance() const @@ -1022,7 +1021,7 @@ double VelocitySmootherNode::calcTravelDistance() const if (prev_closest_point_) { const double travel_dist = - autoware_universe_utils::calcDistance2d(*prev_closest_point_, closest_point); + autoware::universe_utils::calcDistance2d(*prev_closest_point_, closest_point); return travel_dist; } @@ -1039,14 +1038,14 @@ bool VelocitySmootherNode::isEngageStatus(const double target_vel) const Trajectory VelocitySmootherNode::toTrajectoryMsg( const TrajectoryPoints & points, const std_msgs::msg::Header * header) const { - auto trajectory = autoware_motion_utils::convertToTrajectory(points); + auto trajectory = autoware::motion_utils::convertToTrajectory(points); trajectory.header = header ? *header : base_traj_raw_ptr_->header; return trajectory; } size_t VelocitySmootherNode::findNearestIndexFromEgo(const TrajectoryPoints & points) const { - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( points, current_odometry_ptr_->pose.pose, node_param_.ego_nearest_dist_threshold, node_param_.ego_nearest_yaw_threshold); } @@ -1077,7 +1076,7 @@ TrajectoryPoint VelocitySmootherNode::calcProjectedTrajectoryPoint( const TrajectoryPoints & trajectory, const Pose & pose) const { const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( trajectory, pose, node_param_.ego_nearest_dist_threshold, node_param_.ego_nearest_yaw_threshold); return trajectory_utils::calcInterpolatedTrajectoryPoint(trajectory, pose, current_seg_idx); diff --git a/planning/autoware_velocity_smoother/src/resample.cpp b/planning/autoware_velocity_smoother/src/resample.cpp index f24dc17df0538..f69ad5a592272 100644 --- a/planning/autoware_velocity_smoother/src/resample.cpp +++ b/planning/autoware_velocity_smoother/src/resample.cpp @@ -33,17 +33,17 @@ TrajectoryPoints resampleTrajectory( { // Arc length from the initial point to the closest point const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( input, current_pose, nearest_dist_threshold, nearest_yaw_threshold); - const double negative_front_arclength_value = autoware_motion_utils::calcSignedArcLength( + const double negative_front_arclength_value = autoware::motion_utils::calcSignedArcLength( input, current_pose.position, current_seg_idx, input.at(0).pose.position, 0); const auto front_arclength_value = std::fabs(negative_front_arclength_value); const auto dist_to_closest_stop_point = - autoware_motion_utils::calcDistanceToForwardStopPoint(input, current_pose); + autoware::motion_utils::calcDistanceToForwardStopPoint(input, current_pose); // Get the resample size from the closest point - const double trajectory_length = autoware_motion_utils::calcArcLength(input); + const double trajectory_length = autoware::motion_utils::calcArcLength(input); const double Nt = param.resample_time / std::max(param.dense_resample_dt, 0.001); const double ds_nominal = std::max(v_current * param.dense_resample_dt, param.dense_min_interval_distance); @@ -128,14 +128,14 @@ TrajectoryPoints resampleTrajectory( return input; } - const auto output_traj = autoware_motion_utils::resampleTrajectory( - autoware_motion_utils::convertToTrajectory(input), out_arclength, false, true, use_zoh_for_v); - auto output = autoware_motion_utils::convertToTrajectoryPointArray(output_traj); + const auto output_traj = autoware::motion_utils::resampleTrajectory( + autoware::motion_utils::convertToTrajectory(input), out_arclength, false, true, use_zoh_for_v); + auto output = autoware::motion_utils::convertToTrajectoryPointArray(output_traj); // add end point directly to consider the endpoint velocity. if (is_endpoint_included) { constexpr double ep_dist = 1.0E-3; - if (autoware_universe_utils::calcDistance2d(output.back(), input.back()) < ep_dist) { + if (autoware::universe_utils::calcDistance2d(output.back(), input.back()) < ep_dist) { output.back() = input.back(); } else { output.push_back(input.back()); @@ -151,9 +151,9 @@ TrajectoryPoints resampleTrajectory( const ResampleParam & param, const double nominal_ds, const bool use_zoh_for_v) { // input arclength - const double trajectory_length = autoware_motion_utils::calcArcLength(input); + const double trajectory_length = autoware::motion_utils::calcArcLength(input); const auto dist_to_closest_stop_point = - autoware_motion_utils::calcDistanceToForwardStopPoint(input, current_pose); + autoware::motion_utils::calcDistanceToForwardStopPoint(input, current_pose); // distance to stop point double stop_arclength_value = param.max_trajectory_length; @@ -172,9 +172,9 @@ TrajectoryPoints resampleTrajectory( // Step1. Resample front trajectory // Arc length from the initial point to the closest point const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( input, current_pose, nearest_dist_threshold, nearest_yaw_threshold); - const double negative_front_arclength_value = autoware_motion_utils::calcSignedArcLength( + const double negative_front_arclength_value = autoware::motion_utils::calcSignedArcLength( input, current_pose.position, current_seg_idx, input.at(0).pose.position, static_cast(0)); const auto front_arclength_value = std::fabs(negative_front_arclength_value); @@ -248,14 +248,14 @@ TrajectoryPoints resampleTrajectory( return input; } - const auto output_traj = autoware_motion_utils::resampleTrajectory( - autoware_motion_utils::convertToTrajectory(input), out_arclength, false, true, use_zoh_for_v); - auto output = autoware_motion_utils::convertToTrajectoryPointArray(output_traj); + const auto output_traj = autoware::motion_utils::resampleTrajectory( + autoware::motion_utils::convertToTrajectory(input), out_arclength, false, true, use_zoh_for_v); + auto output = autoware::motion_utils::convertToTrajectoryPointArray(output_traj); // add end point directly to consider the endpoint velocity. if (is_endpoint_included) { constexpr double ep_dist = 1.0E-3; - if (autoware_universe_utils::calcDistance2d(output.back(), input.back()) < ep_dist) { + if (autoware::universe_utils::calcDistance2d(output.back(), input.back()) < ep_dist) { output.back() = input.back(); } else { output.push_back(input.back()); diff --git a/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/analytical_jerk_constrained_smoother.cpp b/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/analytical_jerk_constrained_smoother.cpp index 27b54ccf8bf2b..7f263fdea5e36 100644 --- a/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/analytical_jerk_constrained_smoother.cpp +++ b/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/analytical_jerk_constrained_smoother.cpp @@ -252,7 +252,7 @@ TrajectoryPoints AnalyticalJerkConstrainedSmoother::resampleTrajectory( const auto tp1 = input.at(i + 1); const double dist_thr = 0.001; // 1mm - const double dist_tp0_tp1 = autoware_universe_utils::calcDistance2d(tp0, tp1); + const double dist_tp0_tp1 = autoware::universe_utils::calcDistance2d(tp0, tp1); if (std::fabs(dist_tp0_tp1) < dist_thr) { output.push_back(input.at(i)); continue; @@ -298,9 +298,9 @@ TrajectoryPoints AnalyticalJerkConstrainedSmoother::applyLateralAccelerationFilt for (double s = 0; s < in_arclength.back(); s += points_interval) { out_arclength.push_back(s); } - const auto output_traj = autoware_motion_utils::resampleTrajectory( - autoware_motion_utils::convertToTrajectory(input), out_arclength); - output = autoware_motion_utils::convertToTrajectoryPointArray(output_traj); + const auto output_traj = autoware::motion_utils::resampleTrajectory( + autoware::motion_utils::convertToTrajectory(input), out_arclength); + output = autoware::motion_utils::convertToTrajectoryPointArray(output_traj); output.back() = input.back(); // keep the final speed. } else { output = input; @@ -355,7 +355,7 @@ TrajectoryPoints AnalyticalJerkConstrainedSmoother::applyLateralAccelerationFilt } if ( - autoware_universe_utils::calcDistance2d(output.at(end_index), output.at(index)) < + autoware::universe_utils::calcDistance2d(output.at(end_index), output.at(index)) < dist_threshold) { end_index = index; min_latacc_velocity = std::min( @@ -441,7 +441,7 @@ bool AnalyticalJerkConstrainedSmoother::applyForwardJerkFilter( for (size_t i = start_index + 1; i < base_trajectory.size(); ++i) { const double prev_vel = output_trajectory.at(i - 1).longitudinal_velocity_mps; const double ds = - autoware_universe_utils::calcDistance2d(base_trajectory.at(i - 1), base_trajectory.at(i)); + autoware::universe_utils::calcDistance2d(base_trajectory.at(i - 1), base_trajectory.at(i)); const double dt = ds / std::max(prev_vel, 1.0); const double prev_acc = output_trajectory.at(i - 1).acceleration_mps2; @@ -487,7 +487,7 @@ bool AnalyticalJerkConstrainedSmoother::applyBackwardDecelFilter( } } for (size_t i = decel_target_index; i > start_index; --i) { - dist += autoware_universe_utils::calcDistance2d( + dist += autoware::universe_utils::calcDistance2d( output_trajectory.at(i - 1), output_trajectory.at(i)); dist_to_target.at(i - 1) = dist; } diff --git a/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/velocity_planning_utils.cpp b/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/velocity_planning_utils.cpp index fd9c4f34b4dc7..739ba6e7cef38 100644 --- a/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/velocity_planning_utils.cpp +++ b/planning/autoware_velocity_smoother/src/smoother/analytical_jerk_constrained_smoother/velocity_planning_utils.cpp @@ -225,8 +225,8 @@ bool calcStopVelocityWithConstantJerkAccLimit( std::vector distances; distances.push_back(distance); for (size_t i = start_index; i < output_trajectory.size() - 1; ++i) { - distance += - autoware_universe_utils::calcDistance2d(output_trajectory.at(i), output_trajectory.at(i + 1)); + distance += autoware::universe_utils::calcDistance2d( + output_trajectory.at(i), output_trajectory.at(i + 1)); if (distance > xs.back()) { break; } diff --git a/planning/autoware_velocity_smoother/src/smoother/jerk_filtered_smoother.cpp b/planning/autoware_velocity_smoother/src/smoother/jerk_filtered_smoother.cpp index 9f9f50b955757..cab8e49a3b45d 100644 --- a/planning/autoware_velocity_smoother/src/smoother/jerk_filtered_smoother.cpp +++ b/planning/autoware_velocity_smoother/src/smoother/jerk_filtered_smoother.cpp @@ -131,7 +131,7 @@ bool JerkFilteredSmoother::apply( // to avoid getting 0 as a stop point, search zero velocity index from 1. // the size of the resampled trajectory must not be less than 2. - const auto zero_vel_id = autoware_motion_utils::searchZeroVelocityIndex( + const auto zero_vel_id = autoware::motion_utils::searchZeroVelocityIndex( opt_resampled_trajectory, 1, opt_resampled_trajectory.size()); if (!zero_vel_id) { @@ -385,7 +385,7 @@ TrajectoryPoints JerkFilteredSmoother::forwardJerkFilter( output.front().longitudinal_velocity_mps = current_vel; output.front().acceleration_mps2 = current_acc; for (size_t i = 1; i < input.size(); ++i) { - const double ds = autoware_universe_utils::calcDistance2d(input.at(i), input.at(i - 1)); + const double ds = autoware::universe_utils::calcDistance2d(input.at(i), input.at(i - 1)); const double max_dt = std::pow(6.0 * ds / j_max, 1.0 / 3.0); // assuming v0 = a0 = 0. const double dt = std::min(ds / std::max(current_vel, 1.0e-6), max_dt); @@ -439,8 +439,8 @@ TrajectoryPoints JerkFilteredSmoother::mergeFilteredTrajectory( merged.at(i).longitudinal_velocity_mps = current_vel; merged.at(i).acceleration_mps2 = current_acc; - const double ds = - autoware_universe_utils::calcDistance2d(forward_filtered.at(i + 1), forward_filtered.at(i)); + const double ds = autoware::universe_utils::calcDistance2d( + forward_filtered.at(i + 1), forward_filtered.at(i)); const double max_dt = std::pow(6.0 * ds / std::fabs(j_min), 1.0 / 3.0); // assuming v0 = a0 = 0. const double dt = std::min(ds / std::max(current_vel, 1.0e-6), max_dt); diff --git a/planning/autoware_velocity_smoother/src/smoother/smoother_base.cpp b/planning/autoware_velocity_smoother/src/smoother/smoother_base.cpp index a1972d5dbc1e0..700cf45b7eb9d 100644 --- a/planning/autoware_velocity_smoother/src/smoother/smoother_base.cpp +++ b/planning/autoware_velocity_smoother/src/smoother/smoother_base.cpp @@ -34,10 +34,10 @@ namespace TrajectoryPoints applyPreProcess( const TrajectoryPoints & input, const double interval, const bool use_resampling) { - using autoware_motion_utils::calcArcLength; - using autoware_motion_utils::convertToTrajectory; - using autoware_motion_utils::convertToTrajectoryPointArray; - using autoware_motion_utils::resampleTrajectory; + using autoware::motion_utils::calcArcLength; + using autoware::motion_utils::convertToTrajectory; + using autoware::motion_utils::convertToTrajectoryPointArray; + using autoware::motion_utils::resampleTrajectory; if (!use_resampling) { return input; @@ -141,13 +141,13 @@ TrajectoryPoints SmootherBase::applyLateralAccelerationFilter( // since the resampling takes a long time, omit the resampling when it is not requested if (use_resampling) { std::vector out_arclength; - const auto traj_length = autoware_motion_utils::calcArcLength(input); + const auto traj_length = autoware::motion_utils::calcArcLength(input); for (double s = 0; s < traj_length; s += points_interval) { out_arclength.push_back(s); } - const auto output_traj = autoware_motion_utils::resampleTrajectory( - autoware_motion_utils::convertToTrajectory(input), out_arclength); - output = autoware_motion_utils::convertToTrajectoryPointArray(output_traj); + const auto output_traj = autoware::motion_utils::resampleTrajectory( + autoware::motion_utils::convertToTrajectory(input), out_arclength); + output = autoware::motion_utils::convertToTrajectoryPointArray(output_traj); output.back() = input.back(); // keep the final speed. } else { output = input; @@ -249,7 +249,7 @@ TrajectoryPoints SmootherBase::applySteeringRateLimit( } const auto steer_rate = steer_rate_arr.at(i); - if (steer_rate < autoware_universe_utils::deg2rad(base_param_.max_steering_angle_rate)) { + if (steer_rate < autoware::universe_utils::deg2rad(base_param_.max_steering_angle_rate)) { continue; } @@ -257,7 +257,7 @@ TrajectoryPoints SmootherBase::applySteeringRateLimit( (output.at(i).longitudinal_velocity_mps + output.at(i + 1).longitudinal_velocity_mps) / 2.0; const auto target_mean_vel = mean_vel * - (autoware_universe_utils::deg2rad(base_param_.max_steering_angle_rate) / steer_rate); + (autoware::universe_utils::deg2rad(base_param_.max_steering_angle_rate) / steer_rate); for (size_t k = 0; k < 2; k++) { auto & velocity = output.at(i + k).longitudinal_velocity_mps; diff --git a/planning/autoware_velocity_smoother/src/trajectory_utils.cpp b/planning/autoware_velocity_smoother/src/trajectory_utils.cpp index 51a2be57ebe02..ea0453370e03a 100644 --- a/planning/autoware_velocity_smoother/src/trajectory_utils.cpp +++ b/planning/autoware_velocity_smoother/src/trajectory_utils.cpp @@ -34,7 +34,7 @@ inline void convertEulerAngleToMonotonic(std::vector & a) { for (unsigned int i = 1; i < a.size(); ++i) { const double da = a[i] - a[i - 1]; - a[i] = a[i - 1] + autoware_universe_utils::normalizeRadian(da); + a[i] = a[i - 1] + autoware::universe_utils::normalizeRadian(da); } } @@ -87,7 +87,7 @@ TrajectoryPoint calcInterpolatedTrajectoryPoint( { const auto & seg_pt = trajectory.at(seg_idx); const auto & next_pt = trajectory.at(seg_idx + 1); - traj_p.pose = autoware_universe_utils::calcInterpolatedPose(seg_pt.pose, next_pt.pose, prop); + traj_p.pose = autoware::universe_utils::calcInterpolatedPose(seg_pt.pose, next_pt.pose, prop); traj_p.longitudinal_velocity_mps = interpolation::lerp( seg_pt.longitudinal_velocity_mps, next_pt.longitudinal_velocity_mps, prop); traj_p.acceleration_mps2 = @@ -110,7 +110,7 @@ TrajectoryPoints extractPathAroundIndex( { double dist_sum = 0.0; for (size_t i = index; i < trajectory.size() - 1; ++i) { - dist_sum += autoware_universe_utils::calcDistance2d(trajectory.at(i), trajectory.at(i + 1)); + dist_sum += autoware::universe_utils::calcDistance2d(trajectory.at(i), trajectory.at(i + 1)); if (dist_sum > ahead_length) { ahead_index = i + 1; break; @@ -123,7 +123,7 @@ TrajectoryPoints extractPathAroundIndex( { double dist_sum{0.0}; for (size_t i = index; i != 0; --i) { - dist_sum += autoware_universe_utils::calcDistance2d(trajectory.at(i), trajectory[i - 1]); + dist_sum += autoware::universe_utils::calcDistance2d(trajectory.at(i), trajectory[i - 1]); if (dist_sum > behind_length) { behind_index = i - 1; break; @@ -152,7 +152,7 @@ std::vector calcArclengthArray(const TrajectoryPoints & trajectory) for (unsigned int i = 1; i < trajectory.size(); ++i) { const TrajectoryPoint tp = trajectory.at(i); const TrajectoryPoint tp_prev = trajectory.at(i - 1); - dist += autoware_universe_utils::calcDistance2d(tp.pose, tp_prev.pose); + dist += autoware::universe_utils::calcDistance2d(tp.pose, tp_prev.pose); arclength.at(i) = dist; } return arclength; @@ -164,7 +164,7 @@ std::vector calcTrajectoryIntervalDistance(const TrajectoryPoints & traj for (unsigned int i = 1; i < trajectory.size(); ++i) { const TrajectoryPoint tp = trajectory.at(i); const TrajectoryPoint tp_prev = trajectory.at(i - 1); - const double dist = autoware_universe_utils::calcDistance2d(tp.pose, tp_prev.pose); + const double dist = autoware::universe_utils::calcDistance2d(tp.pose, tp_prev.pose); intervals.push_back(dist); } return intervals; @@ -173,8 +173,8 @@ std::vector calcTrajectoryIntervalDistance(const TrajectoryPoints & traj std::vector calcTrajectoryCurvatureFrom3Points( const TrajectoryPoints & trajectory, size_t idx_dist) { - using autoware_universe_utils::calcCurvature; - using autoware_universe_utils::getPoint; + using autoware::universe_utils::calcCurvature; + using autoware::universe_utils::getPoint; if (trajectory.size() < 3) { const std::vector k_arr(trajectory.size(), 0.0); @@ -300,7 +300,6 @@ bool calcStopDistWithJerkConstraints( } double x, v, a, j; - std::tuple state; switch (type) { case AccelerationType::TRAPEZOID: { @@ -596,7 +595,7 @@ std::vector calcVelocityProfileWithConstantJerkAndAccelerationLimit( double calcStopDistance(const TrajectoryPoints & trajectory, const size_t closest) { - const auto idx = autoware_motion_utils::searchZeroVelocityIndex(trajectory); + const auto idx = autoware::motion_utils::searchZeroVelocityIndex(trajectory); if (!idx) { return std::numeric_limits::max(); // stop point is located far away @@ -604,7 +603,7 @@ double calcStopDistance(const TrajectoryPoints & trajectory, const size_t closes // TODO(Horibe): use arc length distance const double stop_dist = - autoware_universe_utils::calcDistance2d(trajectory.at(*idx), trajectory.at(closest)); + autoware::universe_utils::calcDistance2d(trajectory.at(*idx), trajectory.at(closest)); return stop_dist; } diff --git a/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/package.xml b/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/package.xml index e9a4ba5094310..aa3a207ea5be9 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/package.xml +++ b/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/package.xml @@ -22,10 +22,10 @@ autoware_behavior_path_planner autoware_behavior_path_planner_common autoware_behavior_path_static_obstacle_avoidance_module + autoware_lanelet2_extension autoware_motion_utils autoware_rtc_interface autoware_universe_utils - lanelet2_extension pluginlib rclcpp tier4_planning_msgs diff --git a/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/manager.cpp index 267963dc32681..02b90186d9b2f 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/manager.cpp @@ -32,8 +32,8 @@ using autoware::behavior_path_planner::ObjectParameter; void AvoidanceByLaneChangeModuleManager::init(rclcpp::Node * node) { + using autoware::universe_utils::getOrDeclareParameter; using autoware_perception_msgs::msg::ObjectClassification; - using autoware_universe_utils::getOrDeclareParameter; // init manager interface initInterface(node, {"left", "right"}); diff --git a/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/scene.cpp b/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/scene.cpp index 247f94c63fc8f..856681d538db0 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/scene.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_avoidance_by_lane_change_module/src/scene.cpp @@ -22,7 +22,7 @@ #include #include -#include +#include #include #include @@ -40,7 +40,6 @@ using autoware::behavior_path_planner::LaneChangeModuleType; using autoware::behavior_path_planner::ObjectInfo; using autoware::behavior_path_planner::Point2d; using autoware::behavior_path_planner::utils::lane_change::debug::createExecutionArea; -namespace utils = autoware::behavior_path_planner::utils; AvoidanceByLaneChange::AvoidanceByLaneChange( const std::shared_ptr & parameters, @@ -195,9 +194,9 @@ void AvoidanceByLaneChange::fillAvoidanceTargetObjects( std::optional AvoidanceByLaneChange::createObjectData( const AvoidancePlanningData & data, const PredictedObject & object) const { - using autoware_motion_utils::findNearestIndex; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::calcLateralDeviation; + using autoware::motion_utils::findNearestIndex; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::calcLateralDeviation; using boost::geometry::return_centroid; const auto p = std::dynamic_pointer_cast(avoidance_parameters_); diff --git a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/include/autoware/behavior_path_dynamic_obstacle_avoidance_module/scene.hpp b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/include/autoware/behavior_path_dynamic_obstacle_avoidance_module/scene.hpp index 53ecf19b8215f..6ea15a9309c3c 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/include/autoware/behavior_path_dynamic_obstacle_avoidance_module/scene.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/include/autoware/behavior_path_dynamic_obstacle_avoidance_module/scene.hpp @@ -57,8 +57,8 @@ std::vector getAllKeys(const std::unordered_map & map) namespace autoware::behavior_path_planner { +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedPath; -using autoware_universe_utils::Polygon2d; using tier4_planning_msgs::msg::PathWithLaneId; struct MinMaxValue @@ -176,7 +176,7 @@ class DynamicObstacleAvoidanceModule : public SceneModuleInterface const PredictedObject & predicted_object, const double arg_vel, const double arg_lat_vel, const bool arg_is_object_on_ego_path, const std::optional & arg_latest_time_inside_ego_path) - : uuid(autoware_universe_utils::toHexString(predicted_object.object_id)), + : uuid(autoware::universe_utils::toHexString(predicted_object.object_id)), label(predicted_object.classification.front().label), pose(predicted_object.kinematics.initial_pose_with_covariance.pose), shape(predicted_object.shape), @@ -374,8 +374,8 @@ class DynamicObstacleAvoidanceModule : public SceneModuleInterface }; struct EgoPathReservePoly { - const autoware_universe_utils::Polygon2d left_avoid; - const autoware_universe_utils::Polygon2d right_avoid; + const autoware::universe_utils::Polygon2d left_avoid; + const autoware::universe_utils::Polygon2d right_avoid; }; bool canTransitSuccessState() override; @@ -431,11 +431,11 @@ class DynamicObstacleAvoidanceModule : public SceneModuleInterface const DynamicAvoidanceObject & object) const; std::pair getAdjacentLanes( const double forward_distance, const double backward_distance) const; - std::optional calcEgoPathBasedDynamicObstaclePolygon( + std::optional calcEgoPathBasedDynamicObstaclePolygon( const DynamicAvoidanceObject & object) const; - std::optional calcObjectPathBasedDynamicObstaclePolygon( + std::optional calcObjectPathBasedDynamicObstaclePolygon( const DynamicAvoidanceObject & object) const; - std::optional calcPredictedPathBasedDynamicObstaclePolygon( + std::optional calcPredictedPathBasedDynamicObstaclePolygon( const DynamicAvoidanceObject & object, const EgoPathReservePoly & ego_path_poly) const; EgoPathReservePoly calcEgoPathReservePoly(const PathWithLaneId & ego_path) const; @@ -455,7 +455,7 @@ class DynamicObstacleAvoidanceModule : public SceneModuleInterface TargetObjectsManager target_objects_manager_; - mutable autoware_universe_utils::StopWatch< + mutable autoware::universe_utils::StopWatch< std::chrono::milliseconds, std::chrono::microseconds, std::chrono::steady_clock> stop_watch_; }; diff --git a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/package.xml b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/package.xml index 6dd430ce35f44..af9a042cc4a79 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/package.xml +++ b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/package.xml @@ -18,6 +18,7 @@ autoware_behavior_path_planner autoware_behavior_path_planner_common + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_planning_msgs @@ -25,7 +26,6 @@ autoware_vehicle_msgs geometry_msgs lanelet2_core - lanelet2_extension object_recognition_utils pluginlib rclcpp diff --git a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/manager.cpp index 9b0db95bb0df5..eccf2b2a1bfde 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/manager.cpp @@ -152,7 +152,7 @@ void DynamicObstacleAvoidanceModuleManager::init(rclcpp::Node * node) void DynamicObstacleAvoidanceModuleManager::updateModuleParams( [[maybe_unused]] const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; auto & p = parameters_; { // common diff --git a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/scene.cpp b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/scene.cpp index 0c8ec1c530b7a..7fa9ed012b2b9 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/scene.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_dynamic_obstacle_avoidance_module/src/scene.cpp @@ -20,7 +20,7 @@ #include "object_recognition_utils/predicted_path_utils.hpp" #include "signal_processing/lowpass_filter_1d.hpp" -#include +#include #include #include @@ -41,7 +41,7 @@ namespace autoware::behavior_path_planner { namespace { -geometry_msgs::msg::Point toGeometryPoint(const autoware_universe_utils::Point2d & point) +geometry_msgs::msg::Point toGeometryPoint(const autoware::universe_utils::Point2d & point) { geometry_msgs::msg::Point geom_obj_point; geom_obj_point.x = point.x(); @@ -65,25 +65,25 @@ MinMaxValue combineMinMaxValues(const MinMaxValue & r1, const MinMaxValue & r2) void appendObjectMarker(MarkerArray & marker_array, const geometry_msgs::msg::Pose & obj_pose) { - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", rclcpp::Clock{RCL_ROS_TIME}.now(), "dynamic_objects_to_avoid", marker_array.markers.size(), visualization_msgs::msg::Marker::CUBE, - autoware_universe_utils::createMarkerScale(3.0, 1.0, 1.0), - autoware_universe_utils::createMarkerColor(1.0, 0.5, 0.6, 0.8)); + autoware::universe_utils::createMarkerScale(3.0, 1.0, 1.0), + autoware::universe_utils::createMarkerColor(1.0, 0.5, 0.6, 0.8)); marker.pose = obj_pose; marker_array.markers.push_back(marker); } void appendExtractedPolygonMarker( - MarkerArray & marker_array, const autoware_universe_utils::Polygon2d & obj_poly, + MarkerArray & marker_array, const autoware::universe_utils::Polygon2d & obj_poly, const double obj_z) { - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", rclcpp::Clock{RCL_ROS_TIME}.now(), "extracted_polygons", marker_array.markers.size(), visualization_msgs::msg::Marker::LINE_STRIP, - autoware_universe_utils::createMarkerScale(0.1, 0.0, 0.0), - autoware_universe_utils::createMarkerColor(1.0, 0.5, 0.6, 0.8)); + autoware::universe_utils::createMarkerScale(0.1, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(1.0, 0.5, 0.6, 0.8)); // NOTE: obj_poly.outer() has already duplicated points to close the polygon. for (size_t i = 0; i < obj_poly.outer().size(); ++i) { @@ -117,7 +117,7 @@ std::pair projectObstacleVelocityToTrajectory( { const auto & obj_pose = object.kinematics.initial_pose_with_covariance.pose; const double obj_yaw = tf2::getYaw(obj_pose.orientation); - const size_t obj_idx = autoware_motion_utils::findNearestIndex(path_points, obj_pose.position); + const size_t obj_idx = autoware::motion_utils::findNearestIndex(path_points, obj_pose.position); const double path_yaw = tf2::getYaw(path_points.at(obj_idx).point.pose.orientation); const Eigen::Rotation2Dd R_ego_to_obstacle(obj_yaw - path_yaw); @@ -173,19 +173,19 @@ double calcDiffAngleAgainstPath( const geometry_msgs::msg::Pose & target_pose) { const size_t nearest_idx = - autoware_motion_utils::findNearestIndex(path_points, target_pose.position); + autoware::motion_utils::findNearestIndex(path_points, target_pose.position); const double traj_yaw = tf2::getYaw(path_points.at(nearest_idx).point.pose.orientation); const double target_yaw = tf2::getYaw(target_pose.orientation); - const double diff_yaw = autoware_universe_utils::normalizeRadian(target_yaw - traj_yaw); + const double diff_yaw = autoware::universe_utils::normalizeRadian(target_yaw - traj_yaw); return diff_yaw; } [[maybe_unused]] double calcDiffAngleBetweenPaths( const std::vector & path_points, const PredictedPath & predicted_path) { - const size_t nearest_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t nearest_idx = autoware::motion_utils::findNearestSegmentIndex( path_points, predicted_path.path.front().position); const double ego_yaw = tf2::getYaw(path_points.at(nearest_idx).point.pose.orientation); @@ -193,7 +193,7 @@ double calcDiffAngleAgainstPath( double signed_max_angle{0.0}; for (size_t i = 0; i < std::min(max_predicted_path_size, predicted_path.path.size()); ++i) { const double obj_yaw = tf2::getYaw(predicted_path.path.at(i).orientation); - const double diff_yaw = autoware_universe_utils::normalizeRadian(obj_yaw - ego_yaw); + const double diff_yaw = autoware::universe_utils::normalizeRadian(obj_yaw - ego_yaw); if (std::abs(signed_max_angle) < std::abs(diff_yaw)) { signed_max_angle = diff_yaw; } @@ -205,34 +205,34 @@ double calcDistanceToPath( const std::vector & path_points, const geometry_msgs::msg::Point & target_pos) { - const size_t target_idx = autoware_motion_utils::findNearestIndex(path_points, target_pos); + const size_t target_idx = autoware::motion_utils::findNearestIndex(path_points, target_pos); if (target_idx == 0 || target_idx == path_points.size() - 1) { const double target_yaw = tf2::getYaw(path_points.at(target_idx).point.pose.orientation); - const double angle_to_target_pos = autoware_universe_utils::calcAzimuthAngle( + const double angle_to_target_pos = autoware::universe_utils::calcAzimuthAngle( path_points.at(target_idx).point.pose.position, target_pos); const double diff_yaw = - autoware_universe_utils::normalizeRadian(angle_to_target_pos - target_yaw); + autoware::universe_utils::normalizeRadian(angle_to_target_pos - target_yaw); if ( (target_idx == 0 && (diff_yaw < -M_PI_2 || M_PI_2 < diff_yaw)) || (target_idx == path_points.size() - 1 && (-M_PI_2 < diff_yaw && diff_yaw < M_PI_2))) { - return autoware_universe_utils::calcDistance2d(path_points.at(target_idx), target_pos); + return autoware::universe_utils::calcDistance2d(path_points.at(target_idx), target_pos); } } - return std::abs(autoware_motion_utils::calcLateralOffset(path_points, target_pos)); + return std::abs(autoware::motion_utils::calcLateralOffset(path_points, target_pos)); } bool isLeft( const std::vector & path_points, const geometry_msgs::msg::Point & target_pos) { - const size_t target_idx = autoware_motion_utils::findNearestIndex(path_points, target_pos); + const size_t target_idx = autoware::motion_utils::findNearestIndex(path_points, target_pos); const double target_yaw = tf2::getYaw(path_points.at(target_idx).point.pose.orientation); - const double angle_to_target_pos = autoware_universe_utils::calcAzimuthAngle( + const double angle_to_target_pos = autoware::universe_utils::calcAzimuthAngle( path_points.at(target_idx).point.pose.position, target_pos); const double diff_yaw = - autoware_universe_utils::normalizeRadian(angle_to_target_pos - target_yaw); + autoware::universe_utils::normalizeRadian(angle_to_target_pos - target_yaw); if (0 < diff_yaw) { return true; @@ -283,7 +283,7 @@ std::optional> intersectLines( ++source_seg_idx) { for (int target_seg_idx = 0; target_seg_idx < static_cast(target_line.size()) - 1; ++target_seg_idx) { - const auto intersect_point = autoware_universe_utils::intersect( + const auto intersect_point = autoware::universe_utils::intersect( source_line.at(source_seg_idx).position, source_line.at(source_seg_idx + 1).position, target_line.at(target_seg_idx), target_line.at(target_seg_idx + 1)); if (intersect_point) { @@ -329,7 +329,7 @@ bool DynamicObstacleAvoidanceModule::isExecutionRequested() const } // check if the ego is driving forward - const auto is_driving_forward = autoware_motion_utils::isDrivingForward(input_path.points); + const auto is_driving_forward = autoware::motion_utils::isDrivingForward(input_path.points); if (!is_driving_forward || !(*is_driving_forward)) { return false; } @@ -498,7 +498,7 @@ void DynamicObstacleAvoidanceModule::registerRegulatedObjects( const auto & predicted_objects = planner_data_->dynamic_object->objects; for (const auto & predicted_object : predicted_objects) { - const auto obj_uuid = autoware_universe_utils::toHexString(predicted_object.object_id); + const auto obj_uuid = autoware::universe_utils::toHexString(predicted_object.object_id); const auto & obj_pose = predicted_object.kinematics.initial_pose_with_covariance.pose; const double obj_vel_norm = std::hypot( predicted_object.kinematics.initial_twist_with_covariance.twist.linear.x, @@ -586,7 +586,7 @@ void DynamicObstacleAvoidanceModule::registerUnregulatedObjects( const auto & predicted_objects = planner_data_->dynamic_object->objects; for (const auto & predicted_object : predicted_objects) { - const auto obj_uuid = autoware_universe_utils::toHexString(predicted_object.object_id); + const auto obj_uuid = autoware::universe_utils::toHexString(predicted_object.object_id); const auto & obj_pose = predicted_object.kinematics.initial_pose_with_covariance.pose; const double obj_vel_norm = std::hypot( predicted_object.kinematics.initial_twist_with_covariance.twist.linear.x, @@ -626,7 +626,7 @@ void DynamicObstacleAvoidanceModule::registerUnregulatedObjects( // 1.f. calculate the object is on ego's path or not const double dist_obj_center_to_path = - std::abs(autoware_motion_utils::calcLateralOffset(input_path.points, obj_pose.position)); + std::abs(autoware::motion_utils::calcLateralOffset(input_path.points, obj_pose.position)); const bool is_object_on_ego_path = dist_obj_center_to_path < planner_data_->parameters.vehicle_width / 2.0 + parameters_->min_obj_lat_offset_to_ego_path; @@ -766,7 +766,7 @@ void DynamicObstacleAvoidanceModule::determineWhetherToAvoidAgainstRegulatedObje // 2.g. check if the ego is not ahead of the object. const double signed_dist_ego_to_obj = [&]() { const size_t ego_seg_idx = planner_data_->findEgoSegmentIndex(input_path.points); - const double lon_offset_ego_to_obj = autoware_motion_utils::calcSignedArcLength( + const double lon_offset_ego_to_obj = autoware::motion_utils::calcSignedArcLength( input_path.points, getEgoPose().position, ego_seg_idx, lat_lon_offset.nearest_idx); if (0 < lon_offset_ego_to_obj) { return std::max( @@ -788,7 +788,7 @@ void DynamicObstacleAvoidanceModule::determineWhetherToAvoidAgainstRegulatedObje // 2.h. calculate longitudinal and lateral offset to avoid to generate object polygon by // "ego_path_base" - const auto obj_points = autoware_universe_utils::toPolygon2d(object.pose, object.shape); + const auto obj_points = autoware::universe_utils::toPolygon2d(object.pose, object.shape); const auto lon_offset_to_avoid = calcMinMaxLongitudinalOffsetToAvoid( ref_path_points_for_obj_poly, object.pose, obj_points, object.vel, obj_path, object.shape, time_while_collision); @@ -831,7 +831,7 @@ void DynamicObstacleAvoidanceModule::determineWhetherToAvoidAgainstUnregulatedOb getLateralLongitudinalOffset(input_path.points, object.pose, object.shape); const double signed_dist_ego_to_obj = [&]() { const size_t ego_seg_idx = planner_data_->findEgoSegmentIndex(input_path.points); - const double lon_offset_ego_to_obj = autoware_motion_utils::calcSignedArcLength( + const double lon_offset_ego_to_obj = autoware::motion_utils::calcSignedArcLength( input_path.points, getEgoPose().position, ego_seg_idx, lat_lon_offset.nearest_idx); if (0 < lon_offset_ego_to_obj) { return std::max( @@ -891,19 +891,19 @@ LatFeasiblePaths DynamicObstacleAvoidanceModule::generateLateralFeasiblePaths( const double y = feasible_lat_offset; const auto feasible_left_bound_point = - autoware_universe_utils::calcOffsetPose(ego_pose, x, -y, 0.0).position; + autoware::universe_utils::calcOffsetPose(ego_pose, x, -y, 0.0).position; ego_lat_feasible_paths.left_path.push_back(feasible_left_bound_point); const auto feasible_right_bound_point = - autoware_universe_utils::calcOffsetPose(ego_pose, x, y, 0.0).position; + autoware::universe_utils::calcOffsetPose(ego_pose, x, y, 0.0).position; ego_lat_feasible_paths.right_path.push_back(feasible_right_bound_point); } - autoware_universe_utils::appendMarkerArray( + autoware::universe_utils::appendMarkerArray( marker_utils::createPointsMarkerArray( ego_lat_feasible_paths.left_path, "ego_lat_feasible_left_path", 0, 0.6, 0.9, 0.9), &debug_marker_); - autoware_universe_utils::appendMarkerArray( + autoware::universe_utils::appendMarkerArray( marker_utils::createPointsMarkerArray( ego_lat_feasible_paths.right_path, "ego_lat_feasible_right_path", 0, 0.6, 0.9, 0.9), &debug_marker_); @@ -918,7 +918,7 @@ LatFeasiblePaths DynamicObstacleAvoidanceModule::generateLateralFeasiblePaths( // check if the ego is close enough to the current ref path, meaning that lane change ends. const auto ego_pos = getEgoPose().position; const double dist_to_ref_path = - std::abs(autoware_motion_utils::calcLateralOffset(ego_ref_path_points, ego_pos)); + std::abs(autoware::motion_utils::calcLateralOffset(ego_ref_path_points, ego_pos)); constexpr double epsilon_dist_to_ref_path = 0.5; if (dist_to_ref_path < epsilon_dist_to_ref_path) { @@ -927,7 +927,7 @@ LatFeasiblePaths DynamicObstacleAvoidanceModule::generateLateralFeasiblePaths( } else { // check if the ego is during lane change. if (prev_input_ref_path_points_ && !prev_input_ref_path_points_->empty()) { - const double dist_ref_paths = std::abs(autoware_motion_utils::calcLateralOffset( + const double dist_ref_paths = std::abs(autoware::motion_utils::calcLateralOffset( ego_ref_path_points, prev_input_ref_path_points_->front().point.pose.position)); constexpr double epsilon_ref_paths_diff = 1.0; if (epsilon_ref_paths_diff < dist_ref_paths) { @@ -947,7 +947,7 @@ DynamicObstacleAvoidanceModule::calcCollisionSection( std::optional collision_start_idx{std::nullopt}; double lon_dist = 0.0; for (size_t i = ego_idx; i < ego_path.size() - 1; ++i) { - lon_dist += autoware_universe_utils::calcDistance2d(ego_path.at(i), ego_path.at(i + 1)); + lon_dist += autoware::universe_utils::calcDistance2d(ego_path.at(i), ego_path.at(i + 1)); const double elapsed_time = lon_dist / ego_vel; const auto future_ego_pose = ego_path.at(i); @@ -956,7 +956,7 @@ DynamicObstacleAvoidanceModule::calcCollisionSection( if (future_obj_pose) { const double dist_ego_to_obj = - autoware_universe_utils::calcDistance2d(future_ego_pose, *future_obj_pose); + autoware::universe_utils::calcDistance2d(future_ego_pose, *future_obj_pose); if (dist_ego_to_obj < 1.0) { if (!collision_start_idx) { collision_start_idx = i; @@ -982,7 +982,7 @@ TimeWhileCollision DynamicObstacleAvoidanceModule::calcTimeWhileCollision( // Set maximum time-to-collision 0 if the object longitudinally overlaps ego. // NOTE: This is to avoid objects running right beside ego even if time-to-collision is negative. const size_t ego_seg_idx = planner_data_->findEgoSegmentIndex(ego_path); - const double lon_offset_ego_to_obj_idx = autoware_motion_utils::calcSignedArcLength( + const double lon_offset_ego_to_obj_idx = autoware::motion_utils::calcSignedArcLength( ego_path, getEgoPose().position, ego_seg_idx, lat_lon_offset.nearest_idx); const double relative_velocity = getEgoSpeed() - obj_tangent_vel; @@ -1054,7 +1054,7 @@ bool DynamicObstacleAvoidanceModule::willObjectCutIn( const bool will_object_cut_in = [&]() { for (const auto & predicted_path_point : predicted_path.path) { const double paths_lat_diff = - autoware_motion_utils::calcLateralOffset(ego_path, predicted_path_point.position); + autoware::motion_utils::calcLateralOffset(ego_path, predicted_path_point.position); if (std::abs(paths_lat_diff) < planner_data_->parameters.vehicle_width / 2.0) { return true; } @@ -1070,7 +1070,7 @@ bool DynamicObstacleAvoidanceModule::willObjectCutIn( const size_t ego_seg_idx = planner_data_->findEgoSegmentIndex(ego_path); const double relative_velocity = getEgoSpeed() - obj_tangent_vel; const double lon_offset_ego_to_obj = - autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::calcSignedArcLength( ego_path, getEgoPose().position, ego_seg_idx, lat_lon_offset.nearest_idx) + lat_lon_offset.min_lon_offset; if ( @@ -1134,7 +1134,7 @@ DynamicObstacleAvoidanceModule::DecisionWithReason DynamicObstacleAvoidanceModul // Check if object is in the lane before ego's lane change. const double dist_to_ref_path_before_lane_change = std::abs( - autoware_motion_utils::calcLateralOffset(*ref_path_before_lane_change_, obj_pose.position)); + autoware::motion_utils::calcLateralOffset(*ref_path_before_lane_change_, obj_pose.position)); const double epsilon_dist_checking_in_lane = calcObstacleWidth(obj_shape); if (epsilon_dist_checking_in_lane < dist_to_ref_path_before_lane_change) { return false; @@ -1190,8 +1190,8 @@ DynamicObstacleAvoidanceModule::getLateralLongitudinalOffset( const autoware_perception_msgs::msg::Shape & obj_shape) const { const size_t obj_seg_idx = - autoware_motion_utils::findNearestSegmentIndex(ego_path, obj_pose.position); - const auto obj_points = autoware_universe_utils::toPolygon2d(obj_pose, obj_shape); + autoware::motion_utils::findNearestSegmentIndex(ego_path, obj_pose.position); + const auto obj_points = autoware::universe_utils::toPolygon2d(obj_pose, obj_shape); // TODO(murooka) calculation is not so accurate. std::vector obj_lat_offset_vec; @@ -1199,16 +1199,16 @@ DynamicObstacleAvoidanceModule::getLateralLongitudinalOffset( for (size_t i = 0; i < obj_points.outer().size(); ++i) { const auto geom_obj_point = toGeometryPoint(obj_points.outer().at(i)); const size_t obj_point_seg_idx = - autoware_motion_utils::findNearestSegmentIndex(ego_path, geom_obj_point); + autoware::motion_utils::findNearestSegmentIndex(ego_path, geom_obj_point); // calculate lateral offset const double obj_point_lat_offset = - autoware_motion_utils::calcLateralOffset(ego_path, geom_obj_point, obj_point_seg_idx); + autoware::motion_utils::calcLateralOffset(ego_path, geom_obj_point, obj_point_seg_idx); obj_lat_offset_vec.push_back(obj_point_lat_offset); // calculate longitudinal offset - const double lon_offset = - autoware_motion_utils::calcLongitudinalOffsetToSegment(ego_path, obj_seg_idx, geom_obj_point); + const double lon_offset = autoware::motion_utils::calcLongitudinalOffsetToSegment( + ego_path, obj_seg_idx, geom_obj_point); obj_lon_offset_vec.push_back(lon_offset); } @@ -1226,15 +1226,15 @@ MinMaxValue DynamicObstacleAvoidanceModule::calcMinMaxLongitudinalOffsetToAvoid( const PredictedPath & obj_path, const autoware_perception_msgs::msg::Shape & obj_shape, const TimeWhileCollision & time_while_collision) const { - const size_t obj_seg_idx = - autoware_motion_utils::findNearestSegmentIndex(ref_path_points_for_obj_poly, obj_pose.position); + const size_t obj_seg_idx = autoware::motion_utils::findNearestSegmentIndex( + ref_path_points_for_obj_poly, obj_pose.position); // calculate min/max longitudinal offset from object to path const auto obj_lon_offset = [&]() { std::vector obj_lon_offset_vec; for (size_t i = 0; i < obj_points.outer().size(); ++i) { const auto geom_obj_point = toGeometryPoint(obj_points.outer().at(i)); - const double lon_offset = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double lon_offset = autoware::motion_utils::calcLongitudinalOffsetToSegment( ref_path_points_for_obj_poly, obj_seg_idx, geom_obj_point); obj_lon_offset_vec.push_back(lon_offset); } @@ -1299,7 +1299,7 @@ double DynamicObstacleAvoidanceModule::calcValidLengthToAvoid( { const auto & input_path_points = getPreviousModuleOutput().path.points; const size_t obj_seg_idx = - autoware_motion_utils::findNearestSegmentIndex(input_path_points, obj_pose.position); + autoware::motion_utils::findNearestSegmentIndex(input_path_points, obj_pose.position); constexpr double dist_threshold_additional_margin = 0.5; const double dist_threshold_paths = @@ -1317,7 +1317,7 @@ double DynamicObstacleAvoidanceModule::calcValidLengthToAvoid( std::reverse(cropped_ego_path_points.begin(), cropped_ego_path_points.end()); } if (cropped_ego_path_points.size() < 2) { - return autoware_motion_utils::calcArcLength(obj_path.path); + return autoware::motion_utils::calcArcLength(obj_path.path); } // calculate where the object's path will be forked from (= far from) the ego's path. @@ -1371,18 +1371,18 @@ double DynamicObstacleAvoidanceModule::calcValidLengthToAvoid( const auto prev_min_dist = calc_min_dist(prev_valid_obj_path_end_idx); const auto next_min_dist = calc_min_dist(next_valid_obj_path_end_idx); if (prev_min_dist && next_min_dist) { - const double segment_length = autoware_universe_utils::calcDistance2d( + const double segment_length = autoware::universe_utils::calcDistance2d( obj_path.path.at(prev_valid_obj_path_end_idx), obj_path.path.at(next_valid_obj_path_end_idx)); const double partial_segment_length = segment_length * (dist_threshold_paths - *prev_min_dist) / (*next_min_dist - *prev_min_dist); - return autoware_motion_utils::calcSignedArcLength( + return autoware::motion_utils::calcSignedArcLength( obj_path.path, 0, prev_valid_obj_path_end_idx) + partial_segment_length; } } - return autoware_motion_utils::calcSignedArcLength(obj_path.path, 0, valid_obj_path_end_idx); + return autoware::motion_utils::calcSignedArcLength(obj_path.path, 0, valid_obj_path_end_idx); } // min value denotes near side, max value denotes far side @@ -1400,8 +1400,8 @@ DynamicObstacleAvoidanceModule::calcMinMaxLateralOffsetToAvoidRegulatedObject( return true; } const size_t obj_point_idx = - autoware_motion_utils::findNearestIndex(ref_path_points_for_obj_poly, obj_pos); - const double paths_lat_diff = std::abs(autoware_motion_utils::calcLateralOffset( + autoware::motion_utils::findNearestIndex(ref_path_points_for_obj_poly, obj_pos); + const double paths_lat_diff = std::abs(autoware::motion_utils::calcLateralOffset( prev_object->ref_path_points_for_obj_poly, ref_path_points_for_obj_poly.at(obj_point_idx).point.pose.position)); @@ -1419,9 +1419,9 @@ DynamicObstacleAvoidanceModule::calcMinMaxLateralOffsetToAvoidRegulatedObject( std::vector obj_lat_abs_offset_vec; for (size_t i = 0; i < obj_points.outer().size(); ++i) { const auto geom_obj_point = toGeometryPoint(obj_points.outer().at(i)); - const size_t obj_point_seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t obj_point_seg_idx = autoware::motion_utils::findNearestSegmentIndex( ref_path_points_for_obj_poly, geom_obj_point); - const double obj_point_lat_offset = autoware_motion_utils::calcLateralOffset( + const double obj_point_lat_offset = autoware::motion_utils::calcLateralOffset( ref_path_points_for_obj_poly, geom_obj_point, obj_point_seg_idx); obj_lat_abs_offset_vec.push_back(obj_point_lat_offset); } @@ -1471,7 +1471,7 @@ DynamicObstacleAvoidanceModule::calcMinMaxLateralOffsetToAvoidRegulatedObject( return prev_object->lat_offset_to_avoid->min_value; }(); const double filtered_min_bound_lat_offset = - (prev_min_lat_avoid_to_offset.has_value() & enable_lowpass_filter) + (prev_min_lat_avoid_to_offset.has_value() && enable_lowpass_filter) ? signal_processing::lowpassFilter( min_bound_lat_offset, *prev_min_lat_avoid_to_offset, parameters_->lpf_gain_for_lat_avoid_to_offset) @@ -1494,8 +1494,8 @@ DynamicObstacleAvoidanceModule::calcMinMaxLateralOffsetToAvoidUnregulatedObject( return true; } const size_t obj_point_idx = - autoware_motion_utils::findNearestIndex(ref_path_points_for_obj_poly, object.pose.position); - const double paths_lat_diff = std::abs(autoware_motion_utils::calcLateralOffset( + autoware::motion_utils::findNearestIndex(ref_path_points_for_obj_poly, object.pose.position); + const double paths_lat_diff = std::abs(autoware::motion_utils::calcLateralOffset( prev_object->ref_path_points_for_obj_poly, ref_path_points_for_obj_poly.at(obj_point_idx).point.pose.position)); @@ -1509,13 +1509,13 @@ DynamicObstacleAvoidanceModule::calcMinMaxLateralOffsetToAvoidUnregulatedObject( }(); const auto obj_occupancy_region = [&]() { - const auto obj_points = autoware_universe_utils::toPolygon2d(object.pose, object.shape); + const auto obj_points = autoware::universe_utils::toPolygon2d(object.pose, object.shape); std::vector lat_pos_vec; for (size_t i = 0; i < obj_points.outer().size(); ++i) { const auto geom_obj_point = toGeometryPoint(obj_points.outer().at(i)); - const double obj_point_lat_offset = autoware_motion_utils::calcLateralOffset( + const double obj_point_lat_offset = autoware::motion_utils::calcLateralOffset( ref_path_points_for_obj_poly, geom_obj_point, - autoware_motion_utils::findNearestSegmentIndex( + autoware::motion_utils::findNearestSegmentIndex( ref_path_points_for_obj_poly, geom_obj_point)); lat_pos_vec.push_back(obj_point_lat_offset); } @@ -1556,7 +1556,7 @@ DynamicObstacleAvoidanceModule::calcMinMaxLateralOffsetToAvoidUnregulatedObject( return prev_object->lat_offset_to_avoid->min_value; }(); const double filtered_min_bound_pos = - (prev_min_lat_avoid_to_offset.has_value() & enable_lowpass_filter) + (prev_min_lat_avoid_to_offset.has_value() && enable_lowpass_filter) ? signal_processing::lowpassFilter( bound_pos.min_value, *prev_min_lat_avoid_to_offset, parameters_->lpf_gain_for_lat_avoid_to_offset) @@ -1566,7 +1566,7 @@ DynamicObstacleAvoidanceModule::calcMinMaxLateralOffsetToAvoidUnregulatedObject( } // NOTE: object does not have const only to update min_bound_lat_offset. -std::optional +std::optional DynamicObstacleAvoidanceModule::calcEgoPathBasedDynamicObstaclePolygon( const DynamicAvoidanceObject & object) const { @@ -1576,16 +1576,16 @@ DynamicObstacleAvoidanceModule::calcEgoPathBasedDynamicObstaclePolygon( auto ref_path_points_for_obj_poly = object.ref_path_points_for_obj_poly; - const size_t obj_seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t obj_seg_idx = autoware::motion_utils::findNearestSegmentIndex( ref_path_points_for_obj_poly, object.pose.position); - // const auto obj_points = autoware_universe_utils::toPolygon2d(object.pose, object.shape); + // const auto obj_points = autoware::universe_utils::toPolygon2d(object.pose, object.shape); - const auto lon_bound_start_idx_opt = autoware_motion_utils::insertTargetPoint( + const auto lon_bound_start_idx_opt = autoware::motion_utils::insertTargetPoint( obj_seg_idx, object.lon_offset_to_avoid->min_value, ref_path_points_for_obj_poly); const size_t updated_obj_seg_idx = (lon_bound_start_idx_opt && lon_bound_start_idx_opt.value() <= obj_seg_idx) ? obj_seg_idx + 1 : obj_seg_idx; - const auto lon_bound_end_idx_opt = autoware_motion_utils::insertTargetPoint( + const auto lon_bound_end_idx_opt = autoware::motion_utils::insertTargetPoint( updated_obj_seg_idx, object.lon_offset_to_avoid->max_value, ref_path_points_for_obj_poly); if (!lon_bound_start_idx_opt && !lon_bound_end_idx_opt) { @@ -1602,7 +1602,7 @@ DynamicObstacleAvoidanceModule::calcEgoPathBasedDynamicObstaclePolygon( std::vector obj_inner_bound_poses; for (size_t i = lon_bound_start_idx; i <= lon_bound_end_idx; ++i) { // NOTE: object.lat_offset_to_avoid->min_value is not the minimum value but the inner value. - obj_inner_bound_poses.push_back(autoware_universe_utils::calcOffsetPose( + obj_inner_bound_poses.push_back(autoware::universe_utils::calcOffsetPose( ref_path_points_for_obj_poly.at(i).point.pose, 0.0, object.lat_offset_to_avoid->min_value, 0.0)); } @@ -1618,18 +1618,18 @@ DynamicObstacleAvoidanceModule::calcEgoPathBasedDynamicObstaclePolygon( // Check if the object polygon intersects with the ego_lat_feasible_path. if (intersect_result) { const auto & [bound_seg_idx, intersect_point] = *intersect_result; - const double lon_offset = autoware_universe_utils::calcDistance2d( + const double lon_offset = autoware::universe_utils::calcDistance2d( obj_inner_bound_poses.at(bound_seg_idx), intersect_point); const auto obj_inner_bound_start_idx_opt = - autoware_motion_utils::insertTargetPoint(bound_seg_idx, lon_offset, obj_inner_bound_poses); + autoware::motion_utils::insertTargetPoint(bound_seg_idx, lon_offset, obj_inner_bound_poses); if (obj_inner_bound_start_idx_opt) { return *obj_inner_bound_start_idx_opt; } } // Check if the object polygon is fully outside the ego_lat_feasible_path. - const double obj_poly_lat_offset = autoware_motion_utils::calcLateralOffset( + const double obj_poly_lat_offset = autoware::motion_utils::calcLateralOffset( ego_lat_feasible_path, obj_inner_bound_poses.front().position); if ( (!object.is_collision_left && 0 < obj_poly_lat_offset) || @@ -1650,17 +1650,17 @@ DynamicObstacleAvoidanceModule::calcEgoPathBasedDynamicObstaclePolygon( std::vector feasible_obj_outer_bound_points; for (const auto & feasible_obj_inner_bound_pose : feasible_obj_inner_bound_poses) { feasible_obj_outer_bound_points.push_back( - autoware_universe_utils::calcOffsetPose( + autoware::universe_utils::calcOffsetPose( feasible_obj_inner_bound_pose, 0.0, object.lat_offset_to_avoid->max_value - object.lat_offset_to_avoid->min_value, 0.0) .position); } // create obj_polygon from inner/outer bound points - autoware_universe_utils::Polygon2d obj_poly; + autoware::universe_utils::Polygon2d obj_poly; const auto add_points_to_obj_poly = [&](const auto & bound_points) { for (const auto & bound_point : bound_points) { - obj_poly.outer().push_back(autoware_universe_utils::Point2d(bound_point.x, bound_point.y)); + obj_poly.outer().push_back(autoware::universe_utils::Point2d(bound_point.x, bound_point.y)); } }; add_points_to_obj_poly(feasible_obj_inner_bound_points); @@ -1672,7 +1672,7 @@ DynamicObstacleAvoidanceModule::calcEgoPathBasedDynamicObstaclePolygon( } // should be replace by the function calcPredictedPathBasedDynamicObstaclePolygon() (takagi) -std::optional +std::optional DynamicObstacleAvoidanceModule::calcObjectPathBasedDynamicObstaclePolygon( const DynamicAvoidanceObject & object) const { @@ -1683,7 +1683,7 @@ DynamicObstacleAvoidanceModule::calcObjectPathBasedDynamicObstaclePolygon( // calculate left and right bound std::vector obj_left_bound_points; std::vector obj_right_bound_points; - const double obj_path_length = autoware_motion_utils::calcArcLength(obj_path.path); + const double obj_path_length = autoware::motion_utils::calcArcLength(obj_path.path); for (size_t i = 0; i < obj_path.path.size(); ++i) { const double lon_offset = [&]() { if (i == 0) @@ -1701,26 +1701,26 @@ DynamicObstacleAvoidanceModule::calcObjectPathBasedDynamicObstaclePolygon( const auto & obj_pose = obj_path.path.at(i); obj_left_bound_points.push_back( - autoware_universe_utils::calcOffsetPose( + autoware::universe_utils::calcOffsetPose( obj_pose, lon_offset, object.shape.dimensions.y / 2.0 + parameters_->lat_offset_from_obstacle, 0.0) .position); obj_right_bound_points.push_back( - autoware_universe_utils::calcOffsetPose( + autoware::universe_utils::calcOffsetPose( obj_pose, lon_offset, -object.shape.dimensions.y / 2.0 - parameters_->lat_offset_from_obstacle, 0.0) .position); } // create obj_polygon from inner/outer bound points - autoware_universe_utils::Polygon2d obj_poly; + autoware::universe_utils::Polygon2d obj_poly; for (const auto & bound_point : obj_right_bound_points) { - const auto obj_poly_point = autoware_universe_utils::Point2d(bound_point.x, bound_point.y); + const auto obj_poly_point = autoware::universe_utils::Point2d(bound_point.x, bound_point.y); obj_poly.outer().push_back(obj_poly_point); } std::reverse(obj_left_bound_points.begin(), obj_left_bound_points.end()); for (const auto & bound_point : obj_left_bound_points) { - const auto obj_poly_point = autoware_universe_utils::Point2d(bound_point.x, bound_point.y); + const auto obj_poly_point = autoware::universe_utils::Point2d(bound_point.x, bound_point.y); obj_poly.outer().push_back(obj_poly_point); } @@ -1731,7 +1731,7 @@ DynamicObstacleAvoidanceModule::calcObjectPathBasedDynamicObstaclePolygon( // Calculate polygons according to predicted_path with certain confidence, // except for the area required for ego safety. // input: an object, the minimum area required for ego safety, and some global params -std::optional +std::optional DynamicObstacleAvoidanceModule::calcPredictedPathBasedDynamicObstaclePolygon( const DynamicAvoidanceObject & object, const EgoPathReservePoly & ego_path_poly) const { @@ -1747,10 +1747,10 @@ DynamicObstacleAvoidanceModule::calcPredictedPathBasedDynamicObstaclePolygon( } } - autoware_universe_utils::Polygon2d obj_points_as_poly; + autoware::universe_utils::Polygon2d obj_points_as_poly; for (const auto pose : obj_poses) { boost::geometry::append( - obj_points_as_poly, autoware_universe_utils::toFootprint( + obj_points_as_poly, autoware::universe_utils::toFootprint( pose, object.shape.dimensions.x * 0.5, object.shape.dimensions.x * 0.5, object.shape.dimensions.y * 0.5) .outer()); @@ -1759,7 +1759,7 @@ DynamicObstacleAvoidanceModule::calcPredictedPathBasedDynamicObstaclePolygon( Polygon2d obj_poly; boost::geometry::convex_hull(obj_points_as_poly, obj_poly); - autoware_universe_utils::MultiPolygon2d expanded_poly; + autoware::universe_utils::MultiPolygon2d expanded_poly; namespace strategy = boost::geometry::strategy::buffer; boost::geometry::buffer( obj_poly, expanded_poly, @@ -1768,7 +1768,7 @@ DynamicObstacleAvoidanceModule::calcPredictedPathBasedDynamicObstaclePolygon( strategy::point_circle()); if (expanded_poly.empty()) return {}; - autoware_universe_utils::MultiPolygon2d output_poly; + autoware::universe_utils::MultiPolygon2d output_poly; boost::geometry::difference( expanded_poly[0], object.is_collision_left ? ego_path_poly.right_avoid : ego_path_poly.left_avoid, output_poly); @@ -1804,27 +1804,27 @@ DynamicObstacleAvoidanceModule::calcEgoPathReservePoly(const PathWithLaneId & eg assert(!ego_path.points.empty()); - autoware_universe_utils::LineString2d ego_path_lines; + autoware::universe_utils::LineString2d ego_path_lines; for (const auto & path_point : ego_path.points) { ego_path_lines.push_back( - autoware_universe_utils::fromMsg(path_point.point.pose.position).to_2d()); + autoware::universe_utils::fromMsg(path_point.point.pose.position).to_2d()); } auto calcReservePoly = [&ego_path_lines]( const strategy::distance_asymmetric path_expand_strategy, const strategy::distance_asymmetric steer_expand_strategy, const std::vector & outer_body_path) - -> autoware_universe_utils::Polygon2d { + -> autoware::universe_utils::Polygon2d { // reserve area based on the reference path - autoware_universe_utils::MultiPolygon2d path_poly; + autoware::universe_utils::MultiPolygon2d path_poly; boost::geometry::buffer( ego_path_lines, path_poly, path_expand_strategy, strategy::side_straight(), strategy::join_round(), strategy::end_flat(), strategy::point_circle()); // reserve area steer to the avoidance path - autoware_universe_utils::LineString2d steer_lines; + autoware::universe_utils::LineString2d steer_lines; for (const auto & point : outer_body_path) { - const auto bg_point = autoware_universe_utils::fromMsg(point).to_2d(); + const auto bg_point = autoware::universe_utils::fromMsg(point).to_2d(); if (boost::geometry::within(bg_point, path_poly)) { if (steer_lines.size() != 0) { ; @@ -1834,12 +1834,12 @@ DynamicObstacleAvoidanceModule::calcEgoPathReservePoly(const PathWithLaneId & eg } // boost::geometry::append(steer_lines, bg_point); } - autoware_universe_utils::MultiPolygon2d steer_poly; + autoware::universe_utils::MultiPolygon2d steer_poly; boost::geometry::buffer( steer_lines, steer_poly, steer_expand_strategy, strategy::side_straight(), strategy::join_round(), strategy::end_flat(), strategy::point_circle()); - autoware_universe_utils::MultiPolygon2d output_poly; + autoware::universe_utils::MultiPolygon2d output_poly; boost::geometry::union_(path_poly, steer_poly, output_poly); if (output_poly.size() != 1) { assert(false); @@ -1853,11 +1853,11 @@ DynamicObstacleAvoidanceModule::calcEgoPathReservePoly(const PathWithLaneId & eg const double vehicle_half_width = planner_data_->parameters.vehicle_width * 0.5; const double reserve_width_obj_side = vehicle_half_width - parameters_->max_lat_offset_to_avoid; - const autoware_universe_utils::Polygon2d left_avoid_poly = calcReservePoly( + const autoware::universe_utils::Polygon2d left_avoid_poly = calcReservePoly( strategy::distance_asymmetric(vehicle_half_width, reserve_width_obj_side), strategy::distance_asymmetric(vehicle_half_width, 0.0), motion_saturated_outer_paths.right_path); - const autoware_universe_utils::Polygon2d right_avoid_poly = calcReservePoly( + const autoware::universe_utils::Polygon2d right_avoid_poly = calcReservePoly( strategy::distance_asymmetric(reserve_width_obj_side, vehicle_half_width), strategy::distance_asymmetric(0.0, vehicle_half_width), motion_saturated_outer_paths.left_path); diff --git a/planning/behavior_path_planner/autoware_behavior_path_external_request_lane_change_module/src/scene.cpp b/planning/behavior_path_planner/autoware_behavior_path_external_request_lane_change_module/src/scene.cpp index ce2a75d0eebce..d5aaaca50d942 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_external_request_lane_change_module/src/scene.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_external_request_lane_change_module/src/scene.cpp @@ -14,7 +14,7 @@ #include "scene.hpp" -#include +#include #include diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/README.md b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/README.md index 1be3e04914cda..3e155aba0af2e 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/README.md +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/README.md @@ -382,13 +382,14 @@ In addition, the safety check has a time hysteresis, and if the path is judged " ### Parameters for safety check -| Name | Unit | Type | Description | Default value | -| :----------------------- | :--- | :----- | :------------------------------------------------------------------------------------------------------- | :--------------------------- | -| enable_safety_check | [-] | bool | flag whether to use safety check | true | -| method | [-] | string | method for safety check. `RSS` or `integral_predicted_polygon` | `integral_predicted_polygon` | -| keep_unsafe_time | [s] | double | safety check Hysteresis time. if the path is judged "safe" for the time it is finally treated as "safe". | 3.0 | -| check_all_predicted_path | - | bool | Flag to check all predicted paths | true | -| publish_debug_marker | - | bool | Flag to publish debug markers | false | +| Name | Unit | Type | Description | Default value | +| :----------------------------------- | :---- | :----- | :------------------------------------------------------------------------------------------------------- | :--------------------------- | +| enable_safety_check | [-] | bool | flag whether to use safety check | true | +| method | [-] | string | method for safety check. `RSS` or `integral_predicted_polygon` | `integral_predicted_polygon` | +| keep_unsafe_time | [s] | double | safety check Hysteresis time. if the path is judged "safe" for the time it is finally treated as "safe". | 3.0 | +| check_all_predicted_path | - | bool | Flag to check all predicted paths | true | +| publish_debug_marker | - | bool | Flag to publish debug markers | false | +| `collision_check_yaw_diff_threshold` | [rad] | double | Maximum yaw difference between ego and object when executing rss-based collision checking | 3.1416 | #### Parameters for RSS safety check diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/config/goal_planner.param.yaml b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/config/goal_planner.param.yaml index 915d256aba1db..53e06631a81d5 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/config/goal_planner.param.yaml +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/config/goal_planner.param.yaml @@ -180,6 +180,7 @@ time_horizon: 10.0 # hysteresis factor to expand/shrink polygon with the value hysteresis_factor_expand_rate: 1.0 + collision_check_yaw_diff_threshold: 3.1416 # temporary backward_path_length: 100.0 forward_path_length: 100.0 diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/fixed_goal_planner_base.hpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/fixed_goal_planner_base.hpp index dc8a60c9a8373..f670e3b05fa77 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/fixed_goal_planner_base.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/fixed_goal_planner_base.hpp @@ -22,7 +22,7 @@ #include -using autoware_universe_utils::LinearRing2d; +using autoware::universe_utils::LinearRing2d; using geometry_msgs::msg::Pose; using tier4_planning_msgs::msg::PathWithLaneId; diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_planner_module.hpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_planner_module.hpp index ed2735448fdbc..e34cd202011d0 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_planner_module.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_planner_module.hpp @@ -69,7 +69,7 @@ using autoware::behavior_path_planner::utils::path_safety_checker::ObjectsFilter using autoware::behavior_path_planner::utils::path_safety_checker::PoseWithVelocityStamped; using autoware::behavior_path_planner::utils::path_safety_checker::SafetyCheckParams; using autoware::behavior_path_planner::utils::path_safety_checker::TargetObjectsOnLane; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::Polygon2d; #define DEFINE_SETTER_WITH_MUTEX(TYPE, NAME) \ public: \ @@ -387,7 +387,7 @@ class GoalPlannerModule : public SceneModuleInterface std::shared_ptr ego_predicted_path_params; std::shared_ptr objects_filtering_params; std::shared_ptr safety_check_params; - autoware_universe_utils::LinearRing2d vehicle_footprint; + autoware::universe_utils::LinearRing2d vehicle_footprint; PlannerData planner_data; ModuleStatus current_status; @@ -409,7 +409,7 @@ class GoalPlannerModule : public SceneModuleInterface const PlannerData & planner_data, const ModuleStatus & current_status, const BehaviorModuleOutput & previous_module_output, const std::shared_ptr goal_searcher_, - const autoware_universe_utils::LinearRing2d & vehicle_footprint); + const autoware::universe_utils::LinearRing2d & vehicle_footprint); private: void initializeOccupancyGridMap( @@ -484,7 +484,7 @@ class GoalPlannerModule : public SceneModuleInterface std::deque odometry_buffer_stopped_; std::deque odometry_buffer_stuck_; - autoware_universe_utils::LinearRing2d vehicle_footprint_; + autoware::universe_utils::LinearRing2d vehicle_footprint_; std::recursive_mutex mutex_; // TODO(Mamoru Sobue): isSafePath() modifies ThreadSafeData::check_collision, avoid this mutable diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher.hpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher.hpp index 38c55b0b87ecb..5d056add4665e 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher.hpp @@ -23,7 +23,7 @@ namespace autoware::behavior_path_planner { -using autoware_universe_utils::LinearRing2d; +using autoware::universe_utils::LinearRing2d; using BasicPolygons2d = std::vector; class GoalSearcher : public GoalSearcherBase diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher_base.hpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher_base.hpp index 4a1a925eb114c..baead4c229efd 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher_base.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_searcher_base.hpp @@ -26,7 +26,7 @@ namespace autoware::behavior_path_planner { -using autoware_universe_utils::MultiPolygon2d; +using autoware::universe_utils::MultiPolygon2d; using geometry_msgs::msg::Pose; struct GoalCandidate diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/pull_over_planner_base.hpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/pull_over_planner_base.hpp index d1760c7f5a137..d2ba416c7fa90 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/pull_over_planner_base.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/pull_over_planner_base.hpp @@ -25,7 +25,7 @@ #include #include -using autoware_universe_utils::LinearRing2d; +using autoware::universe_utils::LinearRing2d; using geometry_msgs::msg::Pose; using tier4_planning_msgs::msg::PathWithLaneId; @@ -67,7 +67,7 @@ struct PullOverPath partial_paths.at(i).points.end()); } } - path.points = autoware_motion_utils::removeOverlapPoints(path.points); + path.points = autoware::motion_utils::removeOverlapPoints(path.points); return path; } @@ -76,7 +76,7 @@ struct PullOverPath { const PathWithLaneId full_path = getFullPath(); const size_t start_idx = - autoware_motion_utils::findNearestIndex(full_path.points, start_pose.position); + autoware::motion_utils::findNearestIndex(full_path.points, start_pose.position); PathWithLaneId parking_path{}; std::copy( diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/util.hpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/util.hpp index 927145fc69db1..98a513d519b43 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/util.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/util.hpp @@ -42,7 +42,7 @@ using geometry_msgs::msg::Twist; using tier4_planning_msgs::msg::PathWithLaneId; using visualization_msgs::msg::Marker; using visualization_msgs::msg::MarkerArray; -using Polygon2d = autoware_universe_utils::Polygon2d; +using Polygon2d = autoware::universe_utils::Polygon2d; lanelet::ConstLanelets getPullOverLanes( const RouteHandler & route_handler, const bool left_side, const double backward_distance, @@ -94,8 +94,8 @@ std::vector createPathFootPrints( // debug MarkerArray createPullOverAreaMarkerArray( - const autoware_universe_utils::MultiPolygon2d area_polygons, const std_msgs::msg::Header & header, - const std_msgs::msg::ColorRGBA & color, const double z); + const autoware::universe_utils::MultiPolygon2d area_polygons, + const std_msgs::msg::Header & header, const std_msgs::msg::ColorRGBA & color, const double z); MarkerArray createPosesMarkerArray( const std::vector & poses, std::string && ns, const std_msgs::msg::ColorRGBA & color); MarkerArray createTextsMarkerArray( diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/default_fixed_goal_planner.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/default_fixed_goal_planner.cpp index b5dac4264de39..2709dbe8635d3 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/default_fixed_goal_planner.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/default_fixed_goal_planner.cpp @@ -18,14 +18,14 @@ #include "autoware/behavior_path_planner_common/utils/path_utils.hpp" #include "autoware/behavior_path_planner_common/utils/utils.hpp" -#include -#include +#include +#include #include namespace autoware::behavior_path_planner { -using Point2d = autoware_universe_utils::Point2d; +using Point2d = autoware::universe_utils::Point2d; using tier4_planning_msgs::msg::PathWithLaneId; BehaviorModuleOutput DefaultFixedGoalPlanner::plan( const std::shared_ptr & planner_data) const diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/freespace_pull_over.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/freespace_pull_over.cpp index 3082bcf26cba7..ee35790ee2ab1 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/freespace_pull_over.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/freespace_pull_over.cpp @@ -57,7 +57,7 @@ std::optional FreespacePullOver::plan(const Pose & goal_pose) constexpr double straight_distance = 1.0; const Pose end_pose = use_back_ ? goal_pose - : autoware_universe_utils::calcOffsetPose(goal_pose, -straight_distance, 0.0, 0.0); + : autoware::universe_utils::calcOffsetPose(goal_pose, -straight_distance, 0.0, 0.0); if (!planner_->makePlan(current_pose, end_pose)) { return {}; } @@ -85,7 +85,7 @@ std::optional FreespacePullOver::plan(const Pose & goal_pose) size_t index = std::distance(last_path.points.begin(), it); if (index == 0) continue; const double distance = - autoware_universe_utils::calcDistance2d(end_pose.position, it->point.pose.position); + autoware::universe_utils::calcDistance2d(end_pose.position, it->point.pose.position); if (distance < th_goal_distance) { last_path.points.erase(it, last_path.points.end()); break; @@ -123,7 +123,7 @@ std::optional FreespacePullOver::plan(const Pose & goal_pose) // Check if driving forward for each path, return empty if not for (auto & path : partial_paths) { - if (!autoware_motion_utils::isDrivingForward(path.points)) { + if (!autoware::motion_utils::isDrivingForward(path.points)) { return {}; } } diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/geometric_pull_over.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/geometric_pull_over.cpp index 50cb090ca04d8..ffae76bff1abe 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/geometric_pull_over.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/geometric_pull_over.cpp @@ -17,8 +17,8 @@ #include "autoware/behavior_path_goal_planner_module/util.hpp" #include "autoware/behavior_path_planner_common/utils/drivable_area_expansion/static_drivable_area.hpp" -#include -#include +#include +#include #include #include diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_planner_module.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_planner_module.cpp index a329e984fc7c0..00510a8725e32 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_planner_module.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_planner_module.cpp @@ -25,9 +25,9 @@ #include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" #include "autoware/universe_utils/math/unit_conversion.hpp" -#include -#include -#include +#include +#include +#include #include #include @@ -40,14 +40,14 @@ #include using autoware::behavior_path_planner::utils::parking_departure::calcFeasibleDecelDistance; -using autoware_motion_utils::calcLongitudinalOffsetPose; -using autoware_motion_utils::calcSignedArcLength; -using autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; -using autoware_motion_utils::insertDecelPoint; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::inverseTransformPose; +using autoware::motion_utils::calcLongitudinalOffsetPose; +using autoware::motion_utils::calcSignedArcLength; +using autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints; +using autoware::motion_utils::insertDecelPoint; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::inverseTransformPose; using nav_msgs::msg::OccupancyGrid; namespace autoware::behavior_path_planner @@ -137,7 +137,7 @@ bool GoalPlannerModule::hasPreviousModulePathShapeChanged( // the last path constexpr double LATERAL_DEVIATION_THRESH = 0.3; for (const auto & p : previous_module_output.path.points) { - const size_t nearest_seg_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t nearest_seg_idx = autoware::motion_utils::findNearestSegmentIndex( last_previous_module_output->path.points, p.point.pose.position); const auto seg_front = last_previous_module_output->path.points.at(nearest_seg_idx); const auto seg_back = last_previous_module_output->path.points.at(nearest_seg_idx + 1); @@ -155,7 +155,7 @@ bool GoalPlannerModule::hasPreviousModulePathShapeChanged( // p.point.pose.position is not within the segment, skip lateral distance check continue; } - const double lateral_distance = std::abs(autoware_motion_utils::calcLateralOffset( + const double lateral_distance = std::abs(autoware::motion_utils::calcLateralOffset( last_previous_module_output->path.points, p.point.pose.position, nearest_seg_idx)); if (lateral_distance > LATERAL_DEVIATION_THRESH) { return true; @@ -171,7 +171,7 @@ bool GoalPlannerModule::hasDeviatedFromLastPreviousModulePath( if (!last_previous_module_output) { return true; } - return std::abs(autoware_motion_utils::calcLateralOffset( + return std::abs(autoware::motion_utils::calcLateralOffset( last_previous_module_output->path.points, planner_data->self_odometry->pose.pose.position)) > 0.3; } @@ -181,7 +181,7 @@ bool GoalPlannerModule::hasDeviatedFromCurrentPreviousModulePath( const BehaviorModuleOutput & previous_module_output) const { constexpr double LATERAL_DEVIATION_THRESH = 0.3; - return std::abs(autoware_motion_utils::calcLateralOffset( + return std::abs(autoware::motion_utils::calcLateralOffset( previous_module_output.path.points, planner_data->self_odometry->pose.pose.position)) > LATERAL_DEVIATION_THRESH; } @@ -770,7 +770,7 @@ bool GoalPlannerModule::canReturnToLaneParking() const Point & current_point = planner_data_->self_odometry->pose.pose.position; constexpr double th_distance = 0.5; const bool is_close_to_path = - std::abs(autoware_motion_utils::calcLateralOffset(path.points, current_point)) < th_distance; + std::abs(autoware::motion_utils::calcLateralOffset(path.points, current_point)) < th_distance; if (!is_close_to_path) { return false; } @@ -1266,9 +1266,9 @@ DecidingPathStatusWithStamp GoalPlannerModule::checkDecidingPathStatus( // if ego is sufficiently close to the start of the nearest candidate path, the path is decided const auto & current_pose = planner_data->self_odometry->pose.pose; const size_t ego_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(current_path.points, current_pose.position); + autoware::motion_utils::findNearestSegmentIndex(current_path.points, current_pose.position); - const size_t start_pose_segment_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t start_pose_segment_idx = autoware::motion_utils::findNearestSegmentIndex( current_path.points, pull_over_path->start_pose.position); const double dist_to_parking_start_pose = calcSignedArcLength( current_path.points, current_pose.position, ego_segment_idx, @@ -1500,19 +1500,19 @@ std::pair GoalPlannerModule::calcDistanceToPathChange() const const auto full_path = thread_safe_data_.get_pull_over_path()->getFullPath(); - const auto ego_segment_idx = autoware_motion_utils::findNearestSegmentIndex( + const auto ego_segment_idx = autoware::motion_utils::findNearestSegmentIndex( full_path.points, planner_data_->self_odometry->pose.pose, std::numeric_limits::max(), M_PI_2); if (!ego_segment_idx) { return {std::numeric_limits::max(), std::numeric_limits::max()}; } - const size_t start_pose_segment_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t start_pose_segment_idx = autoware::motion_utils::findNearestSegmentIndex( full_path.points, thread_safe_data_.get_pull_over_path()->start_pose.position); const double dist_to_parking_start_pose = calcSignedArcLength( full_path.points, planner_data_->self_odometry->pose.pose.position, *ego_segment_idx, thread_safe_data_.get_pull_over_path()->start_pose.position, start_pose_segment_idx); - const size_t goal_pose_segment_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t goal_pose_segment_idx = autoware::motion_utils::findNearestSegmentIndex( full_path.points, thread_safe_data_.get_modified_goal_pose()->goal_pose.position); const double dist_to_parking_finish_pose = calcSignedArcLength( full_path.points, planner_data_->self_odometry->pose.pose.position, *ego_segment_idx, @@ -1646,7 +1646,7 @@ PathWithLaneId GoalPlannerModule::generateFeasibleStopPath(const PathWithLaneId auto stop_path = path; const auto & current_pose = planner_data_->self_odometry->pose.pose; const auto stop_idx = - autoware_motion_utils::insertStopPoint(current_pose, *min_stop_distance, stop_path.points); + autoware::motion_utils::insertStopPoint(current_pose, *min_stop_distance, stop_path.points); if (stop_idx) { debug_stop_pose_with_info_.set(stop_path.points.at(*stop_idx).point.pose, "feasible stop"); } @@ -1764,7 +1764,7 @@ bool GoalPlannerModule::hasFinishedCurrentPath() const auto current_path_end = thread_safe_data_.get_pull_over_path()->getCurrentPath().points.back(); const auto & self_pose = planner_data_->self_odometry->pose.pose; - return autoware_universe_utils::calcDistance2d(current_path_end, self_pose) < + return autoware::universe_utils::calcDistance2d(current_path_end, self_pose) < parameters_->th_arrived_distance; } @@ -1789,9 +1789,9 @@ TurnSignalInfo GoalPlannerModule::calcTurnSignalInfo() const auto & end_pose = thread_safe_data_.get_pull_over_path()->end_pose; const auto shift_start_idx = - autoware_motion_utils::findNearestIndex(path.points, start_pose.position); + autoware::motion_utils::findNearestIndex(path.points, start_pose.position); const auto shift_end_idx = - autoware_motion_utils::findNearestIndex(path.points, end_pose.position); + autoware::motion_utils::findNearestIndex(path.points, end_pose.position); const auto is_ignore_signal = [this](const lanelet::Id & id) { if (!ignore_signal_.has_value()) { @@ -1835,7 +1835,7 @@ TurnSignalInfo GoalPlannerModule::calcTurnSignalInfo() const auto stop_point = thread_safe_data_.get_pull_over_path()->partial_paths.front().points.back(); const double distance_from_ego_to_stop_point = - std::abs(autoware_motion_utils::calcSignedArcLength( + std::abs(autoware::motion_utils::calcSignedArcLength( path.points, stop_point.point.pose.position, current_pose.position)); return distance_from_ego_to_stop_point < distance_threshold; }); @@ -1880,7 +1880,7 @@ bool GoalPlannerModule::checkObjectsCollision( std::vector obj_polygons; for (const auto & object : target_objects.objects) { - obj_polygons.push_back(autoware_universe_utils::toPolygon2d(object)); + obj_polygons.push_back(autoware::universe_utils::toPolygon2d(object)); } /* Expand ego collision check polygon @@ -1889,7 +1889,7 @@ bool GoalPlannerModule::checkObjectsCollision( * - `extra_lateral_margin` adds the lateral margin on curves. */ std::vector ego_polygons_expanded{}; - const auto curvatures = autoware_motion_utils::calcCurvature(path.points); + const auto curvatures = autoware::motion_utils::calcCurvature(path.points); for (size_t i = 0; i < path.points.size(); ++i) { const auto p = path.points.at(i); @@ -1904,7 +1904,7 @@ bool GoalPlannerModule::checkObjectsCollision( extra_stopping_margin, std::abs(curvatures.at(i) * std::pow(p.point.longitudinal_velocity_mps, 2))); - const auto ego_polygon = autoware_universe_utils::toFootprint( + const auto ego_polygon = autoware::universe_utils::toFootprint( p.point.pose, planner_data->parameters.base_link2front + collision_check_margin + extra_stopping_margin, planner_data->parameters.base_link2rear + collision_check_margin, @@ -2202,7 +2202,7 @@ static std::vector filterOb for (const auto & target_lane : target_lanes) { const auto lane_poly = target_lane.polygon2d().basicPolygon(); for (const auto & filtered_object : filtered_objects.objects) { - const auto object_bbox = autoware_universe_utils::toPolygon2d(filtered_object); + const auto object_bbox = autoware::universe_utils::toPolygon2d(filtered_object); if (boost::geometry::within(object_bbox, lane_poly)) { within_filtered_objects.push_back(filtered_object); } @@ -2285,7 +2285,7 @@ std::pair GoalPlannerModule::isSafePath( lanelet::utils::conversion::toGeomMsgPt(fist_road_lane.centerline().front()); const double lane_yaw = lanelet::utils::getLaneletAngle(fist_road_lane, first_road_point); first_road_pose.position = first_road_point; - first_road_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(lane_yaw); + first_road_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(lane_yaw); // if current ego pose is before pull over lanes segment, use first road lanelet center pose if ( calcSignedArcLength(pull_over_path.points, first_road_pose.position, current_pose.position) < @@ -2319,8 +2319,10 @@ std::pair GoalPlannerModule::isSafePath( return autoware::behavior_path_planner::utils::path_safety_checker::checkSafetyWithRSS( pull_over_path, ego_predicted_path, filtered_objects, collision_check, planner_data->parameters, safety_check_params->rss_params, - objects_filtering_params->use_all_predicted_path, hysteresis_factor); - } else if (parameters.safety_check_params.method == "integral_predicted_polygon") { + objects_filtering_params->use_all_predicted_path, hysteresis_factor, + safety_check_params->collision_check_yaw_diff_threshold); + } + if (parameters.safety_check_params.method == "integral_predicted_polygon") { return utils::path_safety_checker::checkSafetyWithIntegralPredictedPolygon( ego_predicted_path, vehicle_info_, filtered_objects, objects_filtering_params->check_all_predicted_path, @@ -2362,10 +2364,10 @@ void GoalPlannerModule::setDebugData() { debug_marker_.markers.clear(); - using autoware_motion_utils::createStopVirtualWallMarker; - using autoware_universe_utils::createDefaultMarker; - using autoware_universe_utils::createMarkerColor; - using autoware_universe_utils::createMarkerScale; + using autoware::motion_utils::createStopVirtualWallMarker; + using autoware::universe_utils::createDefaultMarker; + using autoware::universe_utils::createMarkerColor; + using autoware::universe_utils::createMarkerScale; using marker_utils::createObjectsMarkerArray; using marker_utils::createPathMarkerArray; using marker_utils::createPoseMarkerArray; @@ -2380,7 +2382,7 @@ void GoalPlannerModule::setDebugData() for (auto & marker : added.markers) { marker.lifetime = rclcpp::Duration::from_seconds(1.5); } - autoware_universe_utils::appendMarkerArray(added, &debug_marker_); + autoware::universe_utils::appendMarkerArray(added, &debug_marker_); }; if (utils::isAllowedGoalModification(planner_data_->route_handler)) { // Visualize pull over areas @@ -2428,10 +2430,10 @@ void GoalPlannerModule::setDebugData() createPathMarkerArray(partial_path, "partial_path_" + std::to_string(i), 0, 0.9, 0.5, 0.9)); } - auto marker = autoware_universe_utils::createDefaultMarker( + auto marker = autoware::universe_utils::createDefaultMarker( "map", rclcpp::Clock{RCL_ROS_TIME}.now(), "detection_polygons", 0, Marker::LINE_LIST, - autoware_universe_utils::createMarkerScale(0.01, 0.0, 0.0), - autoware_universe_utils::createMarkerColor(0.0, 0.0, 1.0, 0.999)); + autoware::universe_utils::createMarkerScale(0.01, 0.0, 0.0), + autoware::universe_utils::createMarkerColor(0.0, 0.0, 1.0, 0.999)); const double ego_z = planner_data_->self_odometry->pose.pose.position.z; for (const auto & ego_polygon : debug_data_.ego_polygons_expanded) { for (size_t ep_idx = 0; ep_idx < ego_polygon.outer().size(); ++ep_idx) { @@ -2439,19 +2441,19 @@ void GoalPlannerModule::setDebugData() const auto & next_point = ego_polygon.outer().at((ep_idx + 1) % ego_polygon.outer().size()); marker.points.push_back( - autoware_universe_utils::createPoint(current_point.x(), current_point.y(), ego_z)); + autoware::universe_utils::createPoint(current_point.x(), current_point.y(), ego_z)); marker.points.push_back( - autoware_universe_utils::createPoint(next_point.x(), next_point.y(), ego_z)); + autoware::universe_utils::createPoint(next_point.x(), next_point.y(), ego_z)); } } debug_marker_.markers.push_back(marker); if (parameters_->safety_check_params.enable_safety_check) { - autoware_universe_utils::appendMarkerArray( + autoware::universe_utils::appendMarkerArray( goal_planner_utils::createLaneletPolygonMarkerArray( debug_data_.expanded_pull_over_lane_between_ego.polygon3d(), header, "expanded_pull_over_lane_between_ego", - autoware_universe_utils::createMarkerColor(1.0, 0.7, 0.0, 0.999)), + autoware::universe_utils::createMarkerColor(1.0, 0.7, 0.0, 0.999)), &debug_marker_); } @@ -2578,7 +2580,7 @@ void GoalPlannerModule::printParkingPositionError() const real_shoulder_to_map_shoulder + parameters_->margin_from_boundary - dy; RCLCPP_INFO( getLogger(), "current pose to goal, dx:%f dy:%f dyaw:%f from_real_shoulder:%f", dx, dy, - autoware_universe_utils::rad2deg( + autoware::universe_utils::rad2deg( tf2::getYaw(current_pose.orientation) - tf2::getYaw(thread_safe_data_.get_modified_goal_pose()->goal_pose.orientation)), distance_from_real_shoulder); @@ -2634,7 +2636,7 @@ void GoalPlannerModule::GoalPlannerData::update( const PlannerData & planner_data_, const ModuleStatus & current_status_, const BehaviorModuleOutput & previous_module_output_, const std::shared_ptr goal_searcher_, - const autoware_universe_utils::LinearRing2d & vehicle_footprint_) + const autoware::universe_utils::LinearRing2d & vehicle_footprint_) { parameters = parameters_; ego_predicted_path_params = ego_predicted_path_params_; diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_searcher.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_searcher.cpp index 564d22f2df2eb..9c501b7b2ae82 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_searcher.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_searcher.cpp @@ -19,9 +19,9 @@ #include "autoware/behavior_path_planner_common/utils/path_utils.hpp" #include "autoware/behavior_path_planner_common/utils/utils.hpp" #include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" -#include "lanelet2_extension/regulatory_elements/no_parking_area.hpp" -#include "lanelet2_extension/regulatory_elements/no_stopping_area.hpp" -#include "lanelet2_extension/utility/utilities.hpp" +#include "autoware_lanelet2_extension/regulatory_elements/no_parking_area.hpp" +#include "autoware_lanelet2_extension/regulatory_elements/no_stopping_area.hpp" +#include "autoware_lanelet2_extension/utility/utilities.hpp" #include @@ -33,7 +33,7 @@ namespace autoware::behavior_path_planner { using autoware::lane_departure_checker::LaneDepartureChecker; -using autoware_universe_utils::calcOffsetPose; +using autoware::universe_utils::calcOffsetPose; using lanelet::autoware::NoParkingArea; using lanelet::autoware::NoStoppingArea; @@ -136,7 +136,7 @@ GoalCandidates GoalSearcher::search( // todo(kosuke55): fix orientation for inverseTransformPoint temporarily Pose center_pose = p.point.pose; center_pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(tf2::getYaw(center_pose.orientation)); + autoware::universe_utils::createQuaternionFromYaw(tf2::getYaw(center_pose.orientation)); // ignore goal_pose near lane start const double distance_from_lane_start = @@ -156,18 +156,16 @@ GoalCandidates GoalSearcher::search( // original means non lateral offset poses const Pose original_search_pose = calcOffsetPose(center_pose, 0, offset_from_center_line, 0); const double longitudinal_distance_from_original_goal = - std::abs(autoware_motion_utils::calcSignedArcLength( + std::abs(autoware::motion_utils::calcSignedArcLength( center_line_path.points, reference_goal_pose_.position, original_search_pose.position)); original_search_poses.push_back(original_search_pose); // for createAreaPolygon Pose search_pose{}; // search goal_pose in lateral direction - double lateral_offset = 0.0; for (double dy = 0; dy <= max_lateral_offset; dy += lateral_offset_interval) { - lateral_offset = dy; search_pose = calcOffsetPose(original_search_pose, 0, sign * dy, 0); const auto transformed_vehicle_footprint = - transformVector(vehicle_footprint_, autoware_universe_utils::pose2transform(search_pose)); + transformVector(vehicle_footprint_, autoware::universe_utils::pose2transform(search_pose)); if (isInAreas(transformed_vehicle_footprint, getNoParkingAreaPolygons(pull_over_lanes))) { // break here to exclude goals located laterally in no_parking_areas @@ -185,7 +183,7 @@ GoalCandidates GoalSearcher::search( GoalCandidate goal_candidate{}; goal_candidate.goal_pose = search_pose; - goal_candidate.lateral_offset = lateral_offset; + goal_candidate.lateral_offset = dy; goal_candidate.id = goal_id; goal_id++; // use longitudinal_distance as distance_from_original_goal @@ -245,8 +243,8 @@ void GoalSearcher::countObjectsToAvoid( for (const auto & object : objects.objects) { for (const auto & p : current_center_line_path.points) { const auto transformed_vehicle_footprint = - transformVector(vehicle_footprint_, autoware_universe_utils::pose2transform(p.point.pose)); - const auto obj_polygon = autoware_universe_utils::toPolygon2d(object); + transformVector(vehicle_footprint_, autoware::universe_utils::pose2transform(p.point.pose)); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(object); const double distance = boost::geometry::distance(obj_polygon, transformed_vehicle_footprint); if (distance > parameters_.object_recognition_collision_check_hard_margins.back()) { continue; @@ -431,9 +429,9 @@ bool GoalSearcher::checkCollisionWithLongitudinalDistance( void GoalSearcher::createAreaPolygons( std::vector original_search_poses, const std::shared_ptr & planner_data) { - using autoware_universe_utils::MultiPolygon2d; - using autoware_universe_utils::Point2d; - using autoware_universe_utils::Polygon2d; + using autoware::universe_utils::MultiPolygon2d; + using autoware::universe_utils::Point2d; + using autoware::universe_utils::Polygon2d; const double vehicle_width = planner_data->parameters.vehicle_width; const double base_link2front = planner_data->parameters.base_link2front; diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/manager.cpp index 098405f2378b5..b079db9babf31 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/manager.cpp @@ -357,6 +357,8 @@ void GoalPlannerModuleManager::init(rclcpp::Node * node) p.safety_check_params.method = node->declare_parameter(safety_check_ns + "method"); p.safety_check_params.hysteresis_factor_expand_rate = node->declare_parameter(safety_check_ns + "hysteresis_factor_expand_rate"); + p.safety_check_params.collision_check_yaw_diff_threshold = + node->declare_parameter(safety_check_ns + "collision_check_yaw_diff_threshold"); p.safety_check_params.backward_path_length = node->declare_parameter(safety_check_ns + "backward_path_length"); p.safety_check_params.forward_path_length = @@ -428,7 +430,7 @@ void GoalPlannerModuleManager::updateModuleParams( // object_recognition_collision_check_hard_margins, maximum_deceleration, shift_sampling_num or // parking_policy, there seems to be a problem when we use a temp value to check these values. - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; auto & p = parameters_; @@ -778,6 +780,9 @@ void GoalPlannerModuleManager::updateModuleParams( updateParam( parameters, safety_check_ns + "hysteresis_factor_expand_rate", p->safety_check_params.hysteresis_factor_expand_rate); + updateParam( + parameters, safety_check_ns + "collision_check_yaw_diff_threshold", + p->safety_check_params.collision_check_yaw_diff_threshold); updateParam( parameters, safety_check_ns + "backward_path_length", p->safety_check_params.backward_path_length); diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/shift_pull_over.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/shift_pull_over.cpp index 46b4c66a7c9fa..3d2bf9500bc78 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/shift_pull_over.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/shift_pull_over.cpp @@ -18,8 +18,8 @@ #include "autoware/behavior_path_planner_common/utils/drivable_area_expansion/static_drivable_area.hpp" #include "autoware/behavior_path_planner_common/utils/path_utils.hpp" -#include -#include +#include +#include #include #include @@ -101,7 +101,7 @@ std::optional ShiftPullOver::cropPrevModulePath( const PathWithLaneId & prev_module_path, const Pose & shift_end_pose) const { // clip previous module path to shift end pose nearest segment index - const size_t shift_end_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t shift_end_idx = autoware::motion_utils::findNearestSegmentIndex( prev_module_path.points, shift_end_pose.position); std::vector clipped_points{ prev_module_path.points.begin(), prev_module_path.points.begin() + shift_end_idx}; @@ -111,10 +111,10 @@ std::optional ShiftPullOver::cropPrevModulePath( // add projected shift end pose to clipped points PathPointWithLaneId projected_point = clipped_points.back(); - const double offset = autoware_motion_utils::calcSignedArcLength( + const double offset = autoware::motion_utils::calcSignedArcLength( prev_module_path.points, shift_end_idx, shift_end_pose.position); projected_point.point.pose = - autoware_universe_utils::calcOffsetPose(clipped_points.back().point.pose, offset, 0, 0); + autoware::universe_utils::calcOffsetPose(clipped_points.back().point.pose, offset, 0, 0); clipped_points.push_back(projected_point); auto clipped_prev_module_path = prev_module_path; clipped_prev_module_path.points = clipped_points; @@ -131,7 +131,7 @@ std::optional ShiftPullOver::generatePullOverPath( // shift end pose is longitudinal offset from goal pose to improve parking angle accuracy const Pose shift_end_pose = - autoware_universe_utils::calcOffsetPose(goal_pose, -after_shift_straight_distance, 0, 0); + autoware::universe_utils::calcOffsetPose(goal_pose, -after_shift_straight_distance, 0, 0); // calculate lateral shift of previous module path terminal pose from road lane reference path const auto road_lane_reference_path_to_shift_end = utils::resamplePathWithSpline( @@ -162,7 +162,7 @@ std::optional ShiftPullOver::generatePullOverPath( const Pose & shift_end_pose_prev_module_path = processed_prev_module_path->points.back().point.pose; const double shift_end_road_to_target_distance = - autoware_universe_utils::inverseTransformPoint( + autoware::universe_utils::inverseTransformPoint( shift_end_pose.position, shift_end_pose_prev_module_path) .y; @@ -171,7 +171,7 @@ std::optional ShiftPullOver::generatePullOverPath( shift_end_road_to_target_distance, lateral_jerk, pull_over_velocity); const double before_shifted_pull_over_distance = calcBeforeShiftedArcLength( processed_prev_module_path.value(), pull_over_distance, shift_end_road_to_target_distance); - const auto shift_start_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto shift_start_pose = autoware::motion_utils::calcLongitudinalOffsetPose( processed_prev_module_path->points, shift_end_pose_prev_module_path.position, -before_shifted_pull_over_distance); @@ -188,8 +188,8 @@ std::optional ShiftPullOver::generatePullOverPath( if (!path_shifter.generate(&shifted_path, offset_back)) { return {}; } - shifted_path.path.points = autoware_motion_utils::removeOverlapPoints(shifted_path.path.points); - autoware_motion_utils::insertOrientation(shifted_path.path.points, true); + shifted_path.path.points = autoware::motion_utils::removeOverlapPoints(shifted_path.path.points); + autoware::motion_utils::insertOrientation(shifted_path.path.points, true); // set same orientation, because the reference center line orientation is not same to the shifted_path.path.points.back().point.pose.orientation = shift_end_pose.orientation; @@ -309,7 +309,7 @@ double ShiftPullOver::calcBeforeShiftedArcLength( double before_arc_length{0.0}; double after_arc_length{0.0}; for (const auto & [k, segment_length] : - autoware_motion_utils::calcCurvatureAndArcLength(reversed_path.points)) { + autoware::motion_utils::calcCurvatureAndArcLength(reversed_path.points)) { // after shifted segment length const double after_segment_length = k > 0 ? segment_length * (1 + k * dr) : segment_length / (1 - k * dr); diff --git a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/util.cpp b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/util.cpp index f99a240f291a7..d6f03f79186d8 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/util.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/util.cpp @@ -18,9 +18,9 @@ #include "autoware/behavior_path_planner_common/utils/utils.hpp" #include -#include -#include -#include +#include +#include +#include #include #include @@ -38,11 +38,11 @@ namespace autoware::behavior_path_planner::goal_planner_utils { -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; lanelet::ConstLanelets getPullOverLanes( const RouteHandler & route_handler, const bool left_side, const double backward_distance, @@ -116,9 +116,9 @@ lanelet::ConstLanelets generateBetweenEgoAndExpandedPullOverLanes( const double ego_length_to_front = wheel_base + front_overhang; const double ego_width_to_front = !left_side ? (-wheel_tread / 2.0 - side_overhang) : (wheel_tread / 2.0 + side_overhang); - autoware_universe_utils::Point2d front_edge_local{ego_length_to_front, ego_width_to_front}; - const auto front_edge_glob = autoware_universe_utils::transformPoint( - front_edge_local, autoware_universe_utils::pose2transform(ego_pose)); + autoware::universe_utils::Point2d front_edge_local{ego_length_to_front, ego_width_to_front}; + const auto front_edge_glob = autoware::universe_utils::transformPoint( + front_edge_local, autoware::universe_utils::pose2transform(ego_pose)); geometry_msgs::msg::Pose ego_front_pose; ego_front_pose.position = createPoint(front_edge_glob.x(), front_edge_glob.y(), ego_pose.position.z); @@ -180,8 +180,8 @@ PredictedObjects filterObjectsByLateralDistance( } MarkerArray createPullOverAreaMarkerArray( - const autoware_universe_utils::MultiPolygon2d area_polygons, const std_msgs::msg::Header & header, - const std_msgs::msg::ColorRGBA & color, const double z) + const autoware::universe_utils::MultiPolygon2d area_polygons, + const std_msgs::msg::Header & header, const std_msgs::msg::ColorRGBA & color, const double z) { MarkerArray marker_array{}; for (size_t i = 0; i < area_polygons.size(); ++i) { @@ -205,7 +205,7 @@ MarkerArray createPosesMarkerArray( MarkerArray msg{}; int32_t i = 0; for (const auto & pose : poses) { - Marker marker = autoware_universe_utils::createDefaultMarker( + Marker marker = autoware::universe_utils::createDefaultMarker( "map", rclcpp::Clock{RCL_ROS_TIME}.now(), ns, i, Marker::ARROW, createMarkerScale(0.5, 0.25, 0.25), color); marker.pose = pose; @@ -305,11 +305,11 @@ double calcLateralDeviationBetweenPaths( { double lateral_deviation = 0.0; for (const auto & target_point : target_path.points) { - const size_t nearest_index = autoware_motion_utils::findNearestIndex( + const size_t nearest_index = autoware::motion_utils::findNearestIndex( reference_path.points, target_point.point.pose.position); lateral_deviation = std::max( lateral_deviation, - std::abs(autoware_universe_utils::calcLateralDeviation( + std::abs(autoware::universe_utils::calcLateralDeviation( reference_path.points[nearest_index].point.pose, target_point.point.pose.position))); } return lateral_deviation; @@ -326,7 +326,7 @@ bool isReferencePath( std::optional cropPath(const PathWithLaneId & path, const Pose & end_pose) { const size_t end_idx = - autoware_motion_utils::findNearestSegmentIndex(path.points, end_pose.position); + autoware::motion_utils::findNearestSegmentIndex(path.points, end_pose.position); std::vector clipped_points{ path.points.begin(), path.points.begin() + end_idx}; if (clipped_points.empty()) { @@ -336,9 +336,9 @@ std::optional cropPath(const PathWithLaneId & path, const Pose & // add projected end pose to clipped points PathPointWithLaneId projected_point = clipped_points.back(); const double offset = - autoware_motion_utils::calcSignedArcLength(path.points, end_idx, end_pose.position); + autoware::motion_utils::calcSignedArcLength(path.points, end_idx, end_pose.position); projected_point.point.pose = - autoware_universe_utils::calcOffsetPose(clipped_points.back().point.pose, offset, 0, 0); + autoware::universe_utils::calcOffsetPose(clipped_points.back().point.pose, offset, 0, 0); clipped_points.push_back(projected_point); auto clipped_path = path; clipped_path.points = clipped_points; @@ -354,7 +354,7 @@ PathWithLaneId cropForwardPoints( double sum_length = 0; for (size_t i = target_seg_idx + 1; i < points.size(); ++i) { const double seg_length = - autoware_universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); + autoware::universe_utils::calcDistance2d(points.at(i), points.at(i - 1)); if (forward_length < sum_length + seg_length) { const auto cropped_points = std::vector{points.begin() + target_seg_idx, points.begin() + i}; @@ -393,7 +393,7 @@ PathWithLaneId extendPath( const auto & target_terminal_pose = target_path.points.back().point.pose; // generate clipped road lane reference path from previous module path terminal pose to shift end - const size_t target_path_terminal_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t target_path_terminal_idx = autoware::motion_utils::findNearestSegmentIndex( reference_path.points, target_terminal_pose.position); PathWithLaneId clipped_path = @@ -401,9 +401,9 @@ PathWithLaneId extendPath( // shift clipped path to previous module path terminal pose const double lateral_shift_from_reference_path = - autoware_motion_utils::calcLateralOffset(reference_path.points, target_terminal_pose.position); + autoware::motion_utils::calcLateralOffset(reference_path.points, target_terminal_pose.position); for (auto & p : clipped_path.points) { - p.point.pose = autoware_universe_utils::calcOffsetPose( + p.point.pose = autoware::universe_utils::calcOffsetPose( p.point.pose, 0, lateral_shift_from_reference_path, 0); } @@ -411,15 +411,15 @@ PathWithLaneId extendPath( const auto start_point = std::find_if(clipped_path.points.begin(), clipped_path.points.end(), [&](const auto & p) { const bool is_forward = - autoware_universe_utils::inverseTransformPoint(p.point.pose.position, target_terminal_pose) + autoware::universe_utils::inverseTransformPoint(p.point.pose.position, target_terminal_pose) .x > 0.0; - const bool is_close = autoware_universe_utils::calcDistance2d( + const bool is_close = autoware::universe_utils::calcDistance2d( p.point.pose.position, target_terminal_pose.position) < 0.1; return is_forward && !is_close; }); std::copy(start_point, clipped_path.points.end(), std::back_inserter(extended_path.points)); - extended_path.points = autoware_motion_utils::removeOverlapPoints(extended_path.points); + extended_path.points = autoware::motion_utils::removeOverlapPoints(extended_path.points); return extended_path; } @@ -429,9 +429,9 @@ PathWithLaneId extendPath( const Pose & extend_pose) { const auto & target_terminal_pose = target_path.points.back().point.pose; - const size_t target_path_terminal_idx = autoware_motion_utils::findNearestSegmentIndex( + const size_t target_path_terminal_idx = autoware::motion_utils::findNearestSegmentIndex( reference_path.points, target_terminal_pose.position); - const double extend_distance = autoware_motion_utils::calcSignedArcLength( + const double extend_distance = autoware::motion_utils::calcSignedArcLength( reference_path.points, target_path_terminal_idx, extend_pose.position); return extendPath(target_path, reference_path, extend_distance); @@ -445,7 +445,7 @@ std::vector createPathFootPrints( for (const auto & point : path.points) { const auto & pose = point.point.pose; footprints.push_back( - autoware_universe_utils::toFootprint(pose, base_to_front, base_to_rear, width)); + autoware::universe_utils::toFootprint(pose, base_to_front, base_to_rear, width)); } return footprints; } diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md index a0870fe428c8a..5790be377b7aa 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/README.md @@ -725,6 +725,7 @@ The following parameters are configurable in [lane_change.param.yaml](https://gi | `check_objects_on_current_lanes` | [-] | boolean | If true, the lane change module check objects on current lanes when performing collision assessment. | false | | `check_objects_on_other_lanes` | [-] | boolean | If true, the lane change module include objects on other lanes. when performing collision assessment | false | | `use_all_predicted_path` | [-] | boolean | If false, use only the predicted path that has the maximum confidence. | true | +| `safety_check.collision_check_yaw_diff_threshold` | [rad] | double | Maximum yaw difference between ego and object when executing rss-based collision checking | 3.1416 | #### safety constraints during lane change path is computed diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/config/lane_change.param.yaml b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/config/lane_change.param.yaml index 1ab33514c5f24..d2f695071649a 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/config/lane_change.param.yaml +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/config/lane_change.param.yaml @@ -30,6 +30,7 @@ # safety check safety_check: allow_loose_check_for_cancel: true + collision_check_yaw_diff_threshold: 3.1416 execution: expected_front_deceleration: -1.0 expected_rear_deceleration: -1.0 diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/scene.hpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/scene.hpp index 69e9e90a236b9..be62492b7c2cc 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/scene.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/scene.hpp @@ -31,10 +31,10 @@ using autoware::behavior_path_planner::utils::path_safety_checker:: using autoware::behavior_path_planner::utils::path_safety_checker::PoseWithVelocityStamped; using autoware::behavior_path_planner::utils::path_safety_checker::PredictedPathWithPolygon; using autoware::route_handler::Direction; -using data::lane_change::LanesPolygon; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using geometry_msgs::msg::Twist; +using lane_change::LanesPolygon; using tier4_planning_msgs::msg::PathWithLaneId; using utils::path_safety_checker::ExtendedPredictedObjects; diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/base_class.hpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/base_class.hpp index 89f5f715549bd..e8e83a0703a76 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/base_class.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/base_class.hpp @@ -37,11 +37,11 @@ namespace autoware::behavior_path_planner { using autoware::route_handler::Direction; -using autoware_universe_utils::StopWatch; -using data::lane_change::PathSafetyStatus; +using autoware::universe_utils::StopWatch; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using geometry_msgs::msg::Twist; +using lane_change::PathSafetyStatus; using tier4_planning_msgs::msg::PathWithLaneId; class LaneChangeBase @@ -126,7 +126,7 @@ class LaneChangeBase const LaneChangeStatus & getLaneChangeStatus() const { return status_; } - const data::lane_change::Debug & getDebugData() const { return lane_change_debug_; } + const lane_change::Debug & getDebugData() const { return lane_change_debug_; } const Pose & getEgoPose() const { return planner_data_->self_odometry->pose.pose; } @@ -233,7 +233,7 @@ class LaneChangeBase LaneChangeModuleType type_{LaneChangeModuleType::NORMAL}; mutable StopWatch stop_watch_; - mutable data::lane_change::Debug lane_change_debug_; + mutable lane_change::Debug lane_change_debug_; rclcpp::Logger logger_ = utils::lane_change::getLogger(getModuleTypeStr()); mutable rclcpp::Clock clock_{RCL_ROS_TIME}; diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/data_structs.hpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/data_structs.hpp index 0facd8c077505..ffd2754acc38f 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/data_structs.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/data_structs.hpp @@ -137,6 +137,7 @@ struct LaneChangeParameters // safety check bool allow_loose_check_for_cancel{true}; + double collision_check_yaw_diff_threshold{3.1416}; utils::path_safety_checker::RSSparams rss_params{}; utils::path_safety_checker::RSSparams rss_params_for_abort{}; utils::path_safety_checker::RSSparams rss_params_for_stuck{}; @@ -189,13 +190,6 @@ struct LaneChangeInfo double terminal_lane_changing_velocity{0.0}; }; -struct LaneChangeTargetObjectIndices -{ - std::vector current_lane{}; - std::vector target_lane{}; - std::vector other_lane{}; -}; - struct LaneChangeLanesFilteredObjects { utils::path_safety_checker::ExtendedPredictedObjects current_lane{}; @@ -210,7 +204,7 @@ enum class LaneChangeModuleType { }; } // namespace autoware::behavior_path_planner -namespace autoware::behavior_path_planner::data::lane_change +namespace autoware::behavior_path_planner::lane_change { struct PathSafetyStatus { @@ -224,6 +218,6 @@ struct LanesPolygon std::optional target; std::vector target_backward; }; -} // namespace autoware::behavior_path_planner::data::lane_change +} // namespace autoware::behavior_path_planner::lane_change #endif // AUTOWARE__BEHAVIOR_PATH_LANE_CHANGE_MODULE__UTILS__DATA_STRUCTS_HPP_ diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/debug_structs.hpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/debug_structs.hpp index 3b8159dc3ad47..1890b9f308e8e 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/debug_structs.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/debug_structs.hpp @@ -26,7 +26,7 @@ #include #include -namespace autoware::behavior_path_planner::data::lane_change +namespace autoware::behavior_path_planner::lane_change { using utils::path_safety_checker::CollisionCheckDebugMap; struct Debug @@ -71,6 +71,6 @@ struct Debug is_abort = false; } }; -} // namespace autoware::behavior_path_planner::data::lane_change +} // namespace autoware::behavior_path_planner::lane_change #endif // AUTOWARE__BEHAVIOR_PATH_LANE_CHANGE_MODULE__UTILS__DEBUG_STRUCTS_HPP_ diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/markers.hpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/markers.hpp index c40db47adf280..91d1f1db15cbc 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/markers.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/markers.hpp @@ -30,7 +30,7 @@ namespace marker_utils::lane_change_markers { using autoware::behavior_path_planner::LaneChangePath; -using autoware::behavior_path_planner::data::lane_change::Debug; +using autoware::behavior_path_planner::lane_change::Debug; using autoware::behavior_path_planner::utils::path_safety_checker::ExtendedPredictedObjects; using visualization_msgs::msg::MarkerArray; MarkerArray showAllValidLaneChangePath( diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/utils.hpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/utils.hpp index 3162b99b441d1..e25b67bdb73d8 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/utils.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/utils.hpp @@ -44,12 +44,12 @@ using autoware::behavior_path_planner::utils::path_safety_checker:: using autoware::behavior_path_planner::utils::path_safety_checker::PoseWithVelocityStamped; using autoware::behavior_path_planner::utils::path_safety_checker::PredictedPathWithPolygon; using autoware::route_handler::Direction; +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedObject; using autoware_perception_msgs::msg::PredictedObjects; using autoware_perception_msgs::msg::PredictedPath; -using autoware_universe_utils::Polygon2d; -using data::lane_change::LanesPolygon; -using data::lane_change::PathSafetyStatus; +using behavior_path_planner::lane_change::LanesPolygon; +using behavior_path_planner::lane_change::PathSafetyStatus; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using geometry_msgs::msg::Twist; diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/interface.cpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/interface.cpp index 435769231e08c..0a5b31f9e32d2 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/interface.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/interface.cpp @@ -29,7 +29,7 @@ namespace autoware::behavior_path_planner { -using autoware_universe_utils::appendMarkerArray; +using autoware::universe_utils::appendMarkerArray; using utils::lane_change::assignToCandidate; LaneChangeInterface::LaneChangeInterface( @@ -352,9 +352,9 @@ void LaneChangeInterface::updateSteeringFactorPtr(const BehaviorModuleOutput & o const auto current_position = module_type_->getEgoPosition(); const auto status = module_type_->getLaneChangeStatus(); - const auto start_distance = autoware_motion_utils::calcSignedArcLength( + const auto start_distance = autoware::motion_utils::calcSignedArcLength( output.path.points, current_position, status.lane_change_path.info.shift_line.start.position); - const auto finish_distance = autoware_motion_utils::calcSignedArcLength( + const auto finish_distance = autoware::motion_utils::calcSignedArcLength( output.path.points, current_position, status.lane_change_path.info.shift_line.end.position); steering_factor_interface_ptr_->updateSteeringFactor( diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/manager.cpp index 1e066d297f878..22c93f7d4bfd5 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/manager.cpp @@ -36,7 +36,7 @@ void LaneChangeModuleManager::init(rclcpp::Node * node) void LaneChangeModuleManager::initParams(rclcpp::Node * node) { - using autoware_universe_utils::getOrDeclareParameter; + using autoware::universe_utils::getOrDeclareParameter; LaneChangeParameters p{}; @@ -102,6 +102,8 @@ void LaneChangeModuleManager::initParams(rclcpp::Node * node) // safety check p.allow_loose_check_for_cancel = getOrDeclareParameter(*node, parameter("safety_check.allow_loose_check_for_cancel")); + p.collision_check_yaw_diff_threshold = getOrDeclareParameter( + *node, parameter("safety_check.collision_check_yaw_diff_threshold")); p.rss_params.longitudinal_distance_min_threshold = getOrDeclareParameter( *node, parameter("safety_check.execution.longitudinal_distance_min_threshold")); @@ -281,7 +283,7 @@ std::unique_ptr LaneChangeModuleManager::createNewSceneMod void LaneChangeModuleManager::updateModuleParams(const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; auto p = parameters_; diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/scene.cpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/scene.cpp index f00c68c8651fe..f3e05eca1e92d 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/scene.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/scene.cpp @@ -23,13 +23,14 @@ #include "autoware/behavior_path_planner_common/utils/utils.hpp" #include -#include -#include +#include +#include #include #include #include +#include #include #include #include @@ -37,7 +38,7 @@ namespace autoware::behavior_path_planner { -using autoware_motion_utils::calcSignedArcLength; +using autoware::motion_utils::calcSignedArcLength; using utils::lane_change::calcMinimumLaneChangeLength; using utils::lane_change::createLanesPolygon; using utils::path_safety_checker::isPolygonOverlapLanelet; @@ -182,12 +183,12 @@ TurnSignalInfo NormalLaneChange::get_current_turn_signal_info() const double buffer = next_lane_change_buffer + min_length_for_turn_signal_activation + base_to_front; - const double path_length = autoware_motion_utils::calcArcLength(path.points); + const double path_length = autoware::motion_utils::calcArcLength(path.points); const size_t current_nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, nearest_dist_threshold, nearest_yaw_threshold); const double dist_to_terminal = utils::getDistanceToEndOfLane(current_pose, current_lanes); - const auto start_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto start_pose = autoware::motion_utils::calcLongitudinalOffsetPose( path.points, 0, std::max(path_length - buffer, 0.0)); if (dist_to_terminal - base_to_front < buffer && start_pose) { // modify turn signal @@ -389,10 +390,10 @@ void NormalLaneChange::insertStopPoint( // calculate distance from path front to the stationary object polygon on the ego lane. const auto polygon = - autoware_universe_utils::toPolygon2d(object.initial_pose.pose, object.shape).outer(); + autoware::universe_utils::toPolygon2d(object.initial_pose.pose, object.shape).outer(); for (const auto & polygon_p : polygon) { - const auto p_fp = autoware_universe_utils::toMsg(polygon_p.to_3d()); - const auto lateral_fp = autoware_motion_utils::calcLateralOffset(path.points, p_fp); + const auto p_fp = autoware::universe_utils::toMsg(polygon_p.to_3d()); + const auto lateral_fp = autoware::motion_utils::calcLateralOffset(path.points, p_fp); // ignore if the point is around the ego path if (std::abs(lateral_fp) > planner_data_->parameters.vehicle_width) { @@ -442,7 +443,7 @@ void NormalLaneChange::insertStopPoint( // target_objects includes objects out of target lanes, so filter them out if (!boost::geometry::intersects( - autoware_universe_utils::toPolygon2d(o.initial_pose.pose, o.shape).outer(), + autoware::universe_utils::toPolygon2d(o.initial_pose.pose, o.shape).outer(), lanelet::utils::combineLaneletsShape(status_.target_lanes) .polygon2d() .basicPolygon())) { @@ -467,8 +468,16 @@ void NormalLaneChange::insertStopPoint( PathWithLaneId NormalLaneChange::getReferencePath() const { - return utils::getCenterLinePathFromLanelet( - status_.lane_change_path.info.target_lanes.front(), planner_data_); + lanelet::ConstLanelet closest_lanelet; + if (!lanelet::utils::query::getClosestLanelet( + status_.lane_change_path.info.target_lanes, getEgoPose(), &closest_lanelet)) { + return prev_module_output_.reference_path; + } + const auto reference_path = utils::getCenterLinePathFromLanelet(closest_lanelet, planner_data_); + if (reference_path.points.empty()) { + return prev_module_output_.reference_path; + } + return reference_path; } std::optional NormalLaneChange::extendPath() @@ -690,7 +699,7 @@ bool NormalLaneChange::isAbleToReturnCurrentLane() const return false; } - const auto nearest_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + const auto nearest_idx = autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( status_.lane_change_path.path.points, getEgoPose(), planner_data_->parameters.ego_nearest_dist_threshold, planner_data_->parameters.ego_nearest_yaw_threshold); @@ -729,7 +738,7 @@ bool NormalLaneChange::isAbleToStopSafely() const return false; } - const auto nearest_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + const auto nearest_idx = autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( status_.lane_change_path.path.points, getEgoPose(), planner_data_->parameters.ego_nearest_dist_threshold, planner_data_->parameters.ego_nearest_yaw_threshold); @@ -798,7 +807,7 @@ std::pair NormalLaneChange::calcCurrentMinMaxAcceleration() cons const auto vehicle_min_acc = std::max(p.min_acc, lane_change_parameters_->min_longitudinal_acc); const auto vehicle_max_acc = std::min(p.max_acc, lane_change_parameters_->max_longitudinal_acc); - const auto ego_seg_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + const auto ego_seg_idx = autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( prev_module_output_.path.points, getEgoPose(), p.ego_nearest_dist_threshold, p.ego_nearest_yaw_threshold); const auto max_path_velocity = @@ -915,7 +924,7 @@ PathWithLaneId NormalLaneChange::getPrepareSegment( auto prepare_segment = prev_module_output_.path; const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( prepare_segment.points, getEgoPose(), 3.0, 1.0); utils::clipPathLength(prepare_segment, current_seg_idx, prepare_length, backward_path_length); @@ -992,11 +1001,11 @@ LaneChangeLanesFilteredObjects NormalLaneChange::filterObjects( } const auto is_ahead_of_ego = [&path, ¤t_pose](const auto & object) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(object).outer(); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(object).outer(); double max_dist_ego_to_obj = std::numeric_limits::lowest(); for (const auto & polygon_p : obj_polygon) { - const auto obj_p = autoware_universe_utils::createPoint(polygon_p.x(), polygon_p.y(), 0.0); + const auto obj_p = autoware::universe_utils::createPoint(polygon_p.x(), polygon_p.y(), 0.0); const auto dist_ego_to_obj = calcSignedArcLength(path.points, current_pose.position, obj_p); max_dist_ego_to_obj = std::max(dist_ego_to_obj, max_dist_ego_to_obj); } @@ -1084,11 +1093,11 @@ void NormalLaneChange::filterAheadTerminalObjects( // ignore object that are ahead of terminal lane change start utils::path_safety_checker::filterObjects(objects, [&](const PredictedObject & object) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(object).outer(); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(object).outer(); // ignore object that are ahead of terminal lane change start auto distance_to_terminal_from_object = std::numeric_limits::max(); for (const auto & polygon_p : obj_polygon) { - const auto obj_p = autoware_universe_utils::createPoint(polygon_p.x(), polygon_p.y(), 0.0); + const auto obj_p = autoware::universe_utils::createPoint(polygon_p.x(), polygon_p.y(), 0.0); Pose polygon_pose; polygon_pose.position = obj_p; polygon_pose.orientation = object.kinematics.initial_pose_with_covariance.pose.orientation; @@ -1668,7 +1677,7 @@ std::optional NormalLaneChange::calcTerminalLaneChangePath( utils::getDistanceToEndOfLane(route_handler.getGoalPose(), current_lanes); } - const auto lane_changing_start_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto lane_changing_start_pose = autoware::motion_utils::calcLongitudinalOffsetPose( prev_module_output_.path.points, current_lane_terminal_point, -(lane_change_buffer + next_lane_change_buffer + distance_to_terminal_from_goal)); @@ -1753,7 +1762,7 @@ std::optional NormalLaneChange::calcTerminalLaneChangePath( target_lane_reference_path, shift_length); auto reference_segment = prev_module_output_.path; - const double length_to_lane_changing_start = autoware_motion_utils::calcSignedArcLength( + const double length_to_lane_changing_start = autoware::motion_utils::calcSignedArcLength( reference_segment.points, reference_segment.points.front().point.pose.position, lane_changing_start_pose->position); utils::clipPathLength(reference_segment, 0, length_to_lane_changing_start, 0.0); @@ -1895,12 +1904,12 @@ bool NormalLaneChange::calcAbortPath() lanelet::utils::getLaneletLength2d(reference_lanelets) - minimum_lane_change_length, 0.0); const auto ref = route_handler->getCenterLinePath(reference_lanelets, s_start, s_end); - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( lane_changing_path.points, ref.points.back().point.pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); }); - const auto ego_pose_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const auto ego_pose_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( lane_changing_path.points, current_pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); const auto get_abort_idx_and_distance = [&](const double param_time) { @@ -1982,10 +1991,10 @@ bool NormalLaneChange::calcAbortPath() // reference_lane_segment = terminal_path->path; // } const auto return_pose = shifted_path.path.points.at(abort_return_idx).point.pose; - const auto seg_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + const auto seg_idx = autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( reference_lane_segment.points, return_pose, common_param.ego_nearest_dist_threshold, common_param.ego_nearest_yaw_threshold); - reference_lane_segment.points = autoware_motion_utils::cropPoints( + reference_lane_segment.points = autoware::motion_utils::cropPoints( reference_lane_segment.points, return_pose.position, seg_idx, common_param.forward_path_length, 0.0); } @@ -2048,6 +2057,8 @@ PathSafetyStatus NormalLaneChange::isLaneChangePathSafe( lane_change_parameters_->lane_expansion_left_offset, lane_change_parameters_->lane_expansion_right_offset); + constexpr double collision_check_yaw_diff_threshold{M_PI}; + for (const auto & obj : collision_check_objects) { auto current_debug_data = utils::path_safety_checker::createObjectDebug(obj); const auto obj_predicted_paths = utils::path_safety_checker::getPredictedPathFromObj( @@ -2056,7 +2067,8 @@ PathSafetyStatus NormalLaneChange::isLaneChangePathSafe( for (const auto & obj_path : obj_predicted_paths) { const auto collided_polygons = utils::path_safety_checker::getCollidedPolygons( path, ego_predicted_path, obj, obj_path, common_parameters, rss_params, 1.0, - get_max_velocity_for_safety_check(), current_debug_data.second); + get_max_velocity_for_safety_check(), collision_check_yaw_diff_threshold, + current_debug_data.second); if (collided_polygons.empty()) { utils::path_safety_checker::updateCollisionCheckDebugMap( @@ -2080,7 +2092,7 @@ PathSafetyStatus NormalLaneChange::isLaneChangePathSafe( utils::path_safety_checker::updateCollisionCheckDebugMap( debug_data, current_debug_data, is_safe); const auto & obj_pose = obj.initial_pose.pose; - const auto obj_polygon = autoware_universe_utils::toPolygon2d(obj_pose, obj.shape); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(obj_pose, obj.shape); path_safety_status.is_object_coming_from_rear |= !utils::path_safety_checker::isTargetObjectFront( path, current_pose, common_parameters.vehicle_info, obj_polygon); diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/markers.cpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/markers.cpp index 78db0ba0a1b4f..85840b2bb3dd6 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/markers.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/markers.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include @@ -34,8 +34,8 @@ namespace marker_utils::lane_change_markers { -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerScale; using geometry_msgs::msg::Point; MarkerArray showAllValidLaneChangePath(const std::vector & lanes, std::string && ns) @@ -172,7 +172,7 @@ MarkerArray createDebugMarkerArray( MarkerArray debug_marker; const auto add = [&debug_marker](const MarkerArray & added) { - autoware_universe_utils::appendMarkerArray(added, &debug_marker); + autoware::universe_utils::appendMarkerArray(added, &debug_marker); }; if (!debug_data.execution_area.points.empty()) { diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/utils.cpp index 7edd2d063348b..ad789975cbcd7 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/utils/utils.cpp @@ -30,9 +30,9 @@ #include #include #include +#include +#include #include -#include -#include #include #include @@ -58,11 +58,11 @@ namespace autoware::behavior_path_planner::utils::lane_change { using autoware::route_handler::RouteHandler; +using autoware::universe_utils::LineString2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::ObjectClassification; using autoware_perception_msgs::msg::PredictedObjects; -using autoware_universe_utils::LineString2d; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Pose; using tier4_planning_msgs::msg::PathWithLaneId; @@ -368,7 +368,7 @@ std::optional constructCandidatePath( LaneChangePath candidate_path; candidate_path.info = lane_change_info; - const auto lane_change_end_idx = autoware_motion_utils::findNearestIndex( + const auto lane_change_end_idx = autoware::motion_utils::findNearestIndex( shifted_path.path.points, candidate_path.info.lane_changing_end); if (!lane_change_end_idx) { @@ -385,7 +385,7 @@ std::optional constructCandidatePath( continue; } const auto nearest_idx = - autoware_motion_utils::findNearestIndex(target_segment.points, point.point.pose); + autoware::motion_utils::findNearestIndex(target_segment.points, point.point.pose); point.lane_ids = target_segment.points.at(*nearest_idx).lane_ids; } @@ -404,13 +404,13 @@ std::optional constructCandidatePath( std::prev(prepare_segment.points.end() - 1)->point.pose; const auto & lane_change_start_from_shifted = std::next(shifted_path.path.points.begin())->point.pose; - const auto yaw_diff2 = std::abs(autoware_universe_utils::normalizeRadian( + const auto yaw_diff2 = std::abs(autoware::universe_utils::normalizeRadian( tf2::getYaw(prepare_segment_second_last_point.orientation) - tf2::getYaw(lane_change_start_from_shifted.orientation))); - if (yaw_diff2 > autoware_universe_utils::deg2rad(5.0)) { + if (yaw_diff2 > autoware::universe_utils::deg2rad(5.0)) { RCLCPP_DEBUG( get_logger(), "Excessive yaw difference %.3f which exceeds the 5 degrees threshold.", - autoware_universe_utils::rad2deg(yaw_diff2)); + autoware::universe_utils::rad2deg(yaw_diff2)); return std::nullopt; } } @@ -473,10 +473,10 @@ ShiftLine getLaneChangingShiftLine( shift_line.end_shift_length = shift_length; shift_line.start = lane_changing_start_pose; shift_line.end = lane_changing_end_pose; - shift_line.start_idx = autoware_motion_utils::findNearestIndex( + shift_line.start_idx = autoware::motion_utils::findNearestIndex( reference_path.points, lane_changing_start_pose.position); - shift_line.end_idx = - autoware_motion_utils::findNearestIndex(reference_path.points, lane_changing_end_pose.position); + shift_line.end_idx = autoware::motion_utils::findNearestIndex( + reference_path.points, lane_changing_end_pose.position); return shift_line; } @@ -768,9 +768,9 @@ CandidateOutput assignToCandidate( CandidateOutput candidate_output; candidate_output.path_candidate = lane_change_path.path; candidate_output.lateral_shift = utils::lane_change::getLateralShift(lane_change_path); - candidate_output.start_distance_to_path_change = autoware_motion_utils::calcSignedArcLength( + candidate_output.start_distance_to_path_change = autoware::motion_utils::calcSignedArcLength( lane_change_path.path.points, ego_position, lane_change_path.info.shift_line.start.position); - candidate_output.finish_distance_to_path_change = autoware_motion_utils::calcSignedArcLength( + candidate_output.finish_distance_to_path_change = autoware::motion_utils::calcSignedArcLength( lane_change_path.path.points, ego_position, lane_change_path.info.shift_line.end.position); return candidate_output; @@ -807,7 +807,7 @@ std::vector convertToPredictedPath( lane_change_parameters.minimum_lane_changing_velocity; const auto nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, vehicle_pose, common_parameters.ego_nearest_dist_threshold, common_parameters.ego_nearest_yaw_threshold); @@ -821,8 +821,8 @@ std::vector convertToPredictedPath( const double velocity = std::max(initial_velocity + prepare_acc * t, minimum_lane_changing_velocity); const double length = initial_velocity * t + 0.5 * prepare_acc * t * t; - const auto pose = - autoware_motion_utils::calcInterpolatedPose(path.points, vehicle_pose_frenet.length + length); + const auto pose = autoware::motion_utils::calcInterpolatedPose( + path.points, vehicle_pose_frenet.length + length); predicted_path.emplace_back(t, pose, velocity); } @@ -836,8 +836,8 @@ std::vector convertToPredictedPath( const double velocity = lane_changing_velocity + lane_changing_acc * delta_t; const double length = lane_changing_velocity * delta_t + 0.5 * lane_changing_acc * delta_t * delta_t + offset; - const auto pose = - autoware_motion_utils::calcInterpolatedPose(path.points, vehicle_pose_frenet.length + length); + const auto pose = autoware::motion_utils::calcInterpolatedPose( + path.points, vehicle_pose_frenet.length + length); predicted_path.emplace_back(t, pose, velocity); } @@ -870,7 +870,7 @@ bool isParkedObject( const auto & object_pose = object.initial_pose.pose; const auto object_closest_index = - autoware_motion_utils::findNearestIndex(path.points, object_pose.position); + autoware::motion_utils::findNearestIndex(path.points, object_pose.position); const auto object_closest_pose = path.points.at(object_closest_index).point.pose; lanelet::ConstLanelet closest_lanelet; @@ -879,7 +879,7 @@ bool isParkedObject( } const double lat_dist = - autoware_motion_utils::calcLateralOffset(path.points, object_pose.position); + autoware::motion_utils::calcLateralOffset(path.points, object_pose.position); lanelet::BasicLineString2d bound; double center_to_bound_buffer = 0.0; if (lat_dist > 0.0) { @@ -937,7 +937,7 @@ bool isParkedObject( const auto & obj_pose = object.initial_pose.pose; const auto & obj_shape = object.shape; - const auto obj_poly = autoware_universe_utils::toPolygon2d(obj_pose, obj_shape); + const auto obj_poly = autoware::universe_utils::toPolygon2d(obj_pose, obj_shape); const auto obj_point = obj_pose.position; double max_dist_to_bound = std::numeric_limits::lowest(); @@ -996,7 +996,7 @@ bool passParkedObject( const auto & leading_obj = objects.at(*leading_obj_idx); auto debug = utils::path_safety_checker::createObjectDebug(leading_obj); const auto leading_obj_poly = - autoware_universe_utils::toPolygon2d(leading_obj.initial_pose.pose, leading_obj.shape); + autoware::universe_utils::toPolygon2d(leading_obj.initial_pose.pose, leading_obj.shape); if (leading_obj_poly.outer().empty()) { return false; } @@ -1004,13 +1004,13 @@ bool passParkedObject( const auto & current_path_end = current_lane_path.points.back().point.pose.position; double min_dist_to_end_of_current_lane = std::numeric_limits::max(); for (const auto & point : leading_obj_poly.outer()) { - const auto obj_p = autoware_universe_utils::createPoint(point.x(), point.y(), 0.0); - const double dist = - autoware_motion_utils::calcSignedArcLength(current_lane_path.points, obj_p, current_path_end); + const auto obj_p = autoware::universe_utils::createPoint(point.x(), point.y(), 0.0); + const double dist = autoware::motion_utils::calcSignedArcLength( + current_lane_path.points, obj_p, current_path_end); min_dist_to_end_of_current_lane = std::min(dist, min_dist_to_end_of_current_lane); if (is_goal_in_route) { const auto goal_pose = route_handler.getGoalPose(); - const double dist_to_goal = autoware_motion_utils::calcSignedArcLength( + const double dist_to_goal = autoware::motion_utils::calcSignedArcLength( current_lane_path.points, obj_p, goal_pose.position); min_dist_to_end_of_current_lane = std::min(min_dist_to_end_of_current_lane, dist_to_goal); } @@ -1061,14 +1061,14 @@ std::optional getLeadingStaticObjectIdx( continue; } - const double dist_back_to_obj = autoware_motion_utils::calcSignedArcLength( + const double dist_back_to_obj = autoware::motion_utils::calcSignedArcLength( path.points, path_end.point.pose.position, obj_pose.position); if (dist_back_to_obj > 0.0) { // object is not on the lane change path continue; } - const double dist_lc_start_to_obj = autoware_motion_utils::calcSignedArcLength( + const double dist_lc_start_to_obj = autoware::motion_utils::calcSignedArcLength( path.points, lane_change_start.position, obj_pose.position); if (dist_lc_start_to_obj < 0.0) { // object is on the lane changing path or behind it. It will be detected in safety check @@ -1124,7 +1124,7 @@ ExtendedPredictedObject transform( } const auto obj_pose = object_recognition_utils::calcInterpolatedPose(path, t); if (obj_pose) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(*obj_pose, object.shape); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(*obj_pose, object.shape); extended_object.predicted_paths.at(i).path.emplace_back( t, *obj_pose, obj_vel_norm, obj_polygon); } @@ -1167,7 +1167,7 @@ Polygon2d getEgoCurrentFootprint( const auto base_to_rear = ego_info.rear_overhang_m; const auto width = ego_info.vehicle_width_m; - return autoware_universe_utils::toFootprint(ego_pose, base_to_front, base_to_rear, width); + return autoware::universe_utils::toFootprint(ego_pose, base_to_front, base_to_rear, width); } bool isWithinIntersection( @@ -1255,13 +1255,13 @@ geometry_msgs::msg::Polygon createExecutionArea( const double lat_offset = width / 2.0 + additional_lat_offset; const auto p1 = - autoware_universe_utils::calcOffsetPose(pose, forward_lon_offset, lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(pose, forward_lon_offset, lat_offset, 0.0); const auto p2 = - autoware_universe_utils::calcOffsetPose(pose, forward_lon_offset, -lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(pose, forward_lon_offset, -lat_offset, 0.0); const auto p3 = - autoware_universe_utils::calcOffsetPose(pose, backward_lon_offset, -lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(pose, backward_lon_offset, -lat_offset, 0.0); const auto p4 = - autoware_universe_utils::calcOffsetPose(pose, backward_lon_offset, lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(pose, backward_lon_offset, lat_offset, 0.0); geometry_msgs::msg::Polygon polygon; polygon.points.push_back(create_point32(p1)); diff --git a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/test/test_lane_change_utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/test/test_lane_change_utils.cpp index a31172ac0050b..68547a491324d 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/test/test_lane_change_utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_lane_change_module/test/test_lane_change_utils.cpp @@ -24,16 +24,16 @@ constexpr double epsilon = 1e-6; TEST(BehaviorPathPlanningLaneChangeUtilsTest, projectCurrentPoseToTarget) { geometry_msgs::msg::Pose ego_pose; - const auto ego_yaw = autoware_universe_utils::deg2rad(0.0); - ego_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(ego_yaw); - ego_pose.position = autoware_universe_utils::createPoint(0, 0, 0); + const auto ego_yaw = autoware::universe_utils::deg2rad(0.0); + ego_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(ego_yaw); + ego_pose.position = autoware::universe_utils::createPoint(0, 0, 0); geometry_msgs::msg::Pose obj_pose; - const auto obj_yaw = autoware_universe_utils::deg2rad(0.0); - obj_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(obj_yaw); - obj_pose.position = autoware_universe_utils::createPoint(-4, 3, 0); + const auto obj_yaw = autoware::universe_utils::deg2rad(0.0); + obj_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(obj_yaw); + obj_pose.position = autoware::universe_utils::createPoint(-4, 3, 0); - const auto result = autoware_universe_utils::inverseTransformPose(obj_pose, ego_pose); + const auto result = autoware::universe_utils::inverseTransformPose(obj_pose, ego_pose); EXPECT_NEAR(result.position.x, -4, epsilon); EXPECT_NEAR(result.position.y, 3, epsilon); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/config/scene_module_manager.param.yaml b/planning/behavior_path_planner/autoware_behavior_path_planner/config/scene_module_manager.param.yaml index 6cf8719b2ef83..ef6cb82d1412a 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/config/scene_module_manager.param.yaml +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/config/scene_module_manager.param.yaml @@ -9,7 +9,6 @@ enable_simultaneous_execution_as_candidate_module: true keep_last: false priority: 6 - max_module_size: 1 external_request_lane_change_right: enable_rtc: false @@ -17,7 +16,6 @@ enable_simultaneous_execution_as_candidate_module: true keep_last: false priority: 6 - max_module_size: 1 lane_change_left: enable_rtc: false @@ -25,7 +23,6 @@ enable_simultaneous_execution_as_candidate_module: true keep_last: false priority: 5 - max_module_size: 1 lane_change_right: enable_rtc: false @@ -33,7 +30,6 @@ enable_simultaneous_execution_as_candidate_module: true keep_last: false priority: 5 - max_module_size: 1 start_planner: enable_rtc: false @@ -41,7 +37,6 @@ enable_simultaneous_execution_as_candidate_module: false keep_last: false priority: 0 - max_module_size: 1 side_shift: enable_rtc: false @@ -49,7 +44,6 @@ enable_simultaneous_execution_as_candidate_module: false keep_last: false priority: 2 - max_module_size: 1 goal_planner: enable_rtc: false @@ -57,7 +51,6 @@ enable_simultaneous_execution_as_candidate_module: false keep_last: true priority: 1 - max_module_size: 1 static_obstacle_avoidance: enable_rtc: false @@ -65,7 +58,6 @@ enable_simultaneous_execution_as_candidate_module: false keep_last: false priority: 4 - max_module_size: 1 avoidance_by_lane_change: enable_rtc: false @@ -73,7 +65,6 @@ enable_simultaneous_execution_as_candidate_module: false keep_last: false priority: 3 - max_module_size: 1 dynamic_obstacle_avoidance: enable_rtc: false @@ -81,7 +72,6 @@ enable_simultaneous_execution_as_candidate_module: true keep_last: false priority: 7 - max_module_size: 1 sampling_planner: enable_module: true @@ -90,4 +80,3 @@ enable_simultaneous_execution_as_candidate_module: false keep_last: true priority: 16 - max_module_size: 1 diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/docs/behavior_path_planner_manager_design.md b/planning/behavior_path_planner/autoware_behavior_path_planner/docs/behavior_path_planner_manager_design.md index 5ffdcafdb2497..09627d2d5d91e 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/docs/behavior_path_planner_manager_design.md +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/docs/behavior_path_planner_manager_design.md @@ -88,7 +88,6 @@ struct ModuleConfigParameters bool enable_simultaneous_execution_as_approved_module{false}; bool enable_simultaneous_execution_as_candidate_module{false}; uint8_t priority{0}; - uint8_t max_module_size{0}; }; ``` @@ -101,7 +100,6 @@ Code is [here](https://github.com/autowarefoundation/autoware.universe/blob/b173 | `enable_simultaneous_execution_as_candidate_module` | bool | if true, the manager allows its scene modules to run with other scene modules as **candidate module**. | | `enable_simultaneous_execution_as_approved_module` | bool | if true, the manager allows its scene modules to run with other scene modules as **approved module**. | | `priority` | uint8_t | the manager decides execution priority based on this parameter. The smaller the number is, the higher the priority is. | -| `max_module_size` | uint8_t | the sub-manager can run some modules simultaneously. this parameter set the maximum number of the launched modules. | ### Scene modules diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/behavior_path_planner_node.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/behavior_path_planner_node.hpp index 1420926f32bd7..3c62cc241b323 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/behavior_path_planner_node.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/behavior_path_planner_node.hpp @@ -88,30 +88,30 @@ class BehaviorPathPlannerNode : public rclcpp::Node private: // subscriber - autoware_universe_utils::InterProcessPollingSubscriber route_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber route_subscriber_{ this, "~/input/route", rclcpp::QoS{1}.transient_local()}; - autoware_universe_utils::InterProcessPollingSubscriber vector_map_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber vector_map_subscriber_{ this, "~/input/vector_map", rclcpp::QoS{1}.transient_local()}; - autoware_universe_utils::InterProcessPollingSubscriber velocity_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber velocity_subscriber_{ this, "~/input/odometry"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber acceleration_subscriber_{this, "~/input/accel"}; - autoware_universe_utils::InterProcessPollingSubscriber scenario_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber scenario_subscriber_{ this, "~/input/scenario"}; - autoware_universe_utils::InterProcessPollingSubscriber perception_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber perception_subscriber_{ this, "~/input/perception"}; - autoware_universe_utils::InterProcessPollingSubscriber occupancy_grid_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber occupancy_grid_subscriber_{ this, "~/input/occupancy_grid_map"}; - autoware_universe_utils::InterProcessPollingSubscriber costmap_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber costmap_subscriber_{ this, "~/input/costmap"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber traffic_signals_subscriber_{this, "~/input/traffic_signals"}; - autoware_universe_utils::InterProcessPollingSubscriber lateral_offset_subscriber_{ + autoware::universe_utils::InterProcessPollingSubscriber lateral_offset_subscriber_{ this, "~/input/lateral_offset"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber operation_mode_subscriber_{ this, "/system/operation_mode/state", rclcpp::QoS{1}.transient_local()}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber external_limit_max_velocity_subscriber_{this, "/planning/scenario_planning/max_velocity"}; // publisher @@ -236,9 +236,9 @@ class BehaviorPathPlannerNode : public rclcpp::Node const std::shared_ptr & path_candidate_ptr, const bool is_ready, const std::shared_ptr & planner_data); - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; }; } // namespace autoware::behavior_path_planner diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/planner_manager.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/planner_manager.hpp index ecd9dd37c363a..a76284b70b7d8 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/planner_manager.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/include/autoware/behavior_path_planner/planner_manager.hpp @@ -39,12 +39,12 @@ namespace autoware::behavior_path_planner { -using autoware_universe_utils::StopWatch; +using autoware::universe_utils::StopWatch; using tier4_planning_msgs::msg::PathWithLaneId; using tier4_planning_msgs::msg::StopReasonArray; using SceneModulePtr = std::shared_ptr; using SceneModuleManagerPtr = std::shared_ptr; -using DebugPublisher = autoware_universe_utils::DebugPublisher; +using DebugPublisher = autoware::universe_utils::DebugPublisher; using DebugDoubleMsg = tier4_debug_msgs::msg::Float64Stamped; using DebugStringMsg = tier4_debug_msgs::msg::StringStamped; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/package.xml b/planning/behavior_path_planner/autoware_behavior_path_planner/package.xml index a4eeba6051b61..981051a363029 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/package.xml +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/package.xml @@ -41,6 +41,7 @@ autoware_freespace_planning_algorithms autoware_frenet_planner autoware_lane_departure_checker + autoware_lanelet2_extension autoware_motion_utils autoware_path_sampler autoware_perception_msgs @@ -52,7 +53,6 @@ behaviortree_cpp_v3 geometry_msgs interpolation - lanelet2_extension libboost-dev libopencv-dev magic_enum diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/src/behavior_path_planner_node.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner/src/behavior_path_planner_node.cpp index 378d8f9c5a5f2..0e586211bc9ee 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/src/behavior_path_planner_node.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/src/behavior_path_planner_node.cpp @@ -114,9 +114,9 @@ BehaviorPathPlannerNode::BehaviorPathPlannerNode(const rclcpp::NodeOptions & nod this, get_clock(), period_ns, std::bind(&BehaviorPathPlannerNode::run, this)); } - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } std::vector BehaviorPathPlannerNode::getWaitingApprovalModules() @@ -445,7 +445,7 @@ void BehaviorPathPlannerNode::run() const auto current_pose = planner_data_->self_odometry->pose.pose; if (!path->points.empty()) { const size_t current_seg_idx = planner_data_->findEgoSegmentIndex(path->points); - path->points = autoware_motion_utils::cropPoints( + path->points = autoware::motion_utils::cropPoints( path->points, current_pose.position, current_seg_idx, planner_data_->parameters.forward_path_length, planner_data_->parameters.backward_path_length + @@ -472,7 +472,7 @@ void BehaviorPathPlannerNode::run() if ( output.modified_goal && /* has changed modified goal */ ( - !planner_data_->prev_modified_goal || autoware_universe_utils::calcDistance2d( + !planner_data_->prev_modified_goal || autoware::universe_utils::calcDistance2d( planner_data_->prev_modified_goal->pose.position, output.modified_goal->pose.position) > 0.01)) { PoseWithUuidStamped modified_goal = *(output.modified_goal); @@ -566,29 +566,29 @@ void BehaviorPathPlannerNode::publish_turn_signal_debug_data(const TurnSignalDeb constexpr double scale_x = 1.0; constexpr double scale_y = 1.0; constexpr double scale_z = 1.0; - const auto scale = autoware_universe_utils::createMarkerScale(scale_x, scale_y, scale_z); + const auto scale = autoware::universe_utils::createMarkerScale(scale_x, scale_y, scale_z); const auto desired_section_color = - autoware_universe_utils::createMarkerColor(0.0, 1.0, 0.0, 0.999); + autoware::universe_utils::createMarkerColor(0.0, 1.0, 0.0, 0.999); const auto required_section_color = - autoware_universe_utils::createMarkerColor(1.0, 0.0, 1.0, 0.999); + autoware::universe_utils::createMarkerColor(1.0, 0.0, 1.0, 0.999); // intersection turn signal info { const auto & turn_signal_info = debug_data.intersection_turn_signal_info; - auto desired_start_marker = autoware_universe_utils::createDefaultMarker( + auto desired_start_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "intersection_turn_signal_desired_start", 0L, Marker::SPHERE, scale, desired_section_color); - auto desired_end_marker = autoware_universe_utils::createDefaultMarker( + auto desired_end_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "intersection_turn_signal_desired_end", 0L, Marker::SPHERE, scale, desired_section_color); desired_start_marker.pose = turn_signal_info.desired_start_point; desired_end_marker.pose = turn_signal_info.desired_end_point; - auto required_start_marker = autoware_universe_utils::createDefaultMarker( + auto required_start_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "intersection_turn_signal_required_start", 0L, Marker::SPHERE, scale, required_section_color); - auto required_end_marker = autoware_universe_utils::createDefaultMarker( + auto required_end_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "intersection_turn_signal_required_end", 0L, Marker::SPHERE, scale, required_section_color); required_start_marker.pose = turn_signal_info.required_start_point; @@ -604,19 +604,19 @@ void BehaviorPathPlannerNode::publish_turn_signal_debug_data(const TurnSignalDeb { const auto & turn_signal_info = debug_data.behavior_turn_signal_info; - auto desired_start_marker = autoware_universe_utils::createDefaultMarker( + auto desired_start_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "behavior_turn_signal_desired_start", 0L, Marker::CUBE, scale, desired_section_color); - auto desired_end_marker = autoware_universe_utils::createDefaultMarker( + auto desired_end_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "behavior_turn_signal_desired_end", 0L, Marker::CUBE, scale, desired_section_color); desired_start_marker.pose = turn_signal_info.desired_start_point; desired_end_marker.pose = turn_signal_info.desired_end_point; - auto required_start_marker = autoware_universe_utils::createDefaultMarker( + auto required_start_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "behavior_turn_signal_required_start", 0L, Marker::CUBE, scale, required_section_color); - auto required_end_marker = autoware_universe_utils::createDefaultMarker( + auto required_end_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "behavior_turn_signal_required_end", 0L, Marker::CUBE, scale, required_section_color); required_start_marker.pose = turn_signal_info.required_start_point; @@ -642,18 +642,18 @@ void BehaviorPathPlannerNode::publish_bounds(const PathWithLaneId & path) constexpr double color_a = 0.999; const auto current_time = path.header.stamp; - auto left_marker = autoware_universe_utils::createDefaultMarker( + auto left_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "left_bound", 0L, Marker::LINE_STRIP, - autoware_universe_utils::createMarkerScale(scale_x, scale_y, scale_z), - autoware_universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); + autoware::universe_utils::createMarkerScale(scale_x, scale_y, scale_z), + autoware::universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); for (const auto lb : path.left_bound) { left_marker.points.push_back(lb); } - auto right_marker = autoware_universe_utils::createDefaultMarker( + auto right_marker = autoware::universe_utils::createDefaultMarker( "map", current_time, "right_bound", 0L, Marker::LINE_STRIP, - autoware_universe_utils::createMarkerScale(scale_x, scale_y, scale_z), - autoware_universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); + autoware::universe_utils::createMarkerScale(scale_x, scale_y, scale_z), + autoware::universe_utils::createMarkerColor(color_r, color_g, color_b, color_a)); for (const auto rb : path.right_bound) { right_marker.points.push_back(rb); } @@ -744,7 +744,7 @@ Path BehaviorPathPlannerNode::convertToPath( return output; } - output = autoware_motion_utils::convertToPath( + output = autoware::motion_utils::convertToPath( *path_candidate_ptr); // header is replaced by the input one, so it is substituted again output.header = planner_data->route_handler->getRouteHeader(); @@ -830,7 +830,7 @@ void BehaviorPathPlannerNode::onLateralOffset(const LateralOffset::ConstSharedPt SetParametersResult BehaviorPathPlannerNode::onSetParam( const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; rcl_interfaces::msg::SetParametersResult result; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp index 71714cda9052d..05dcc2163d14a 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/src/planner_manager.cpp @@ -20,7 +20,7 @@ #include "autoware/universe_utils/ros/debug_publisher.hpp" #include "autoware/universe_utils/system/stop_watch.hpp" -#include +#include #include #include @@ -219,7 +219,7 @@ void PlannerManager::generateCombinedDrivableArea( const auto & di = output.drivable_area_info; constexpr double epsilon = 1e-3; - const auto is_driving_forward_opt = autoware_motion_utils::isDrivingForward(output.path.points); + const auto is_driving_forward_opt = autoware::motion_utils::isDrivingForward(output.path.points); const bool is_driving_forward = is_driving_forward_opt ? *is_driving_forward_opt : true; if (epsilon < std::abs(di.drivable_margin)) { @@ -466,10 +466,10 @@ void PlannerManager::publishDebugRootReferencePath( { using visualization_msgs::msg::Marker; MarkerArray array; - Marker m = autoware_universe_utils::createDefaultMarker( + Marker m = autoware::universe_utils::createDefaultMarker( "map", clock_.now(), "root_reference_path", 0UL, Marker::LINE_STRIP, - autoware_universe_utils::createMarkerScale(1.0, 1.0, 1.0), - autoware_universe_utils::createMarkerColor(1.0, 0.0, 0.0, 1.0)); + autoware::universe_utils::createMarkerScale(1.0, 1.0, 1.0), + autoware::universe_utils::createMarkerColor(1.0, 0.0, 0.0, 1.0)); for (const auto & p : reference_path.path.points) m.points.push_back(p.point.pose.position); array.markers.push_back(m); m.points.clear(); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner/test/test_utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner/test/test_utils.cpp index f79087d7df405..da8657c82c58e 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner/test/test_utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner/test/test_utils.cpp @@ -35,7 +35,7 @@ TEST(BehaviorPathPlanningUtilitiesBehaviorTest, vehiclePoseToFrenetOnStraightLin Pose vehicle_pose = autoware::behavior_path_planner::generateEgoSamplePose(10.7f, -1.7f, 0.0); const size_t vehicle_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, vehicle_pose, 3.0, 1.0); const auto vehicle_pose_frenet = autoware::behavior_path_planner::utils::convertToFrenetPoint( path.points, vehicle_pose.position, vehicle_seg_idx); @@ -51,7 +51,7 @@ TEST(BehaviorPathPlanningUtilitiesBehaviorTest, vehiclePoseToFrenetOnDiagonalLin Pose vehicle_pose = autoware::behavior_path_planner::generateEgoSamplePose(0.1f, 0.1f, 0.0); const size_t vehicle_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, vehicle_pose, 3.0, 1.0); const auto vehicle_pose_frenet = autoware::behavior_path_planner::utils::convertToFrenetPoint( path.points, vehicle_pose.position, vehicle_seg_idx); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_safety_check.md b/planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_safety_check.md index 4733fe7832da6..5511202c390b1 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_safety_check.md +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/docs/behavior_path_planner_safety_check.md @@ -48,7 +48,7 @@ $$ rss_{dist} = v_{rear} (t_{reaction} + t_{margin}) + \frac{v_{rear}^2}{2|a_{rear, decel}|} - \frac{v_{front}^2}{2|a_{front, decel|}} $$ -where $V_{front}$, $v_{rear}$ are front and rear vehicle velocity respectively and $a_{rear, front}$, $a_{rear, decel}$ are front and rear vehicle deceleration. +where $V_{front}$, $v_{rear}$ are front and rear vehicle velocity respectively and $a_{rear, front}$, $a_{rear, decel}$ are front and rear vehicle deceleration. Note that RSS distance is normally used for objects traveling in the same direction, if the yaw difference between a given ego pose and object pose is more than a user-defined yaw difference threshold, the rss collision check will be skipped for that specific pair of poses. #### 5. Create extended ego and target object polygons @@ -56,7 +56,7 @@ In this step, we compute extended ego and target object polygons. The extended p ![extended_polygons](../images/path_safety_checker/extended_polygons.drawio.svg) -As the picture shows, we expand the rear object polygon. For the longitudinal side, we extend it with the RSS distance, and for the lateral side, we extend it by the lateral margin +As the picture shows, we expand the rear object polygon. For the longitudinal side, we extend it with the RSS distance, and for the lateral side, we extend it by the lateral margin. #### 6. Check overlap diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/data_manager.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/data_manager.hpp index ec9a67a40e052..1b0bb240cabf2 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/data_manager.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/data_manager.hpp @@ -21,8 +21,8 @@ #include "autoware/motion_utils/trajectory/trajectory.hpp" #include -#include -#include +#include +#include #include #include @@ -102,7 +102,7 @@ struct DrivableAreaInfo struct Obstacle { geometry_msgs::msg::Pose pose; - autoware_universe_utils::Polygon2d poly; + autoware::universe_utils::Polygon2d poly; bool is_left{true}; }; std::vector drivable_lanes{}; @@ -254,7 +254,7 @@ struct PlannerData template size_t findEgoIndex(const std::vector & points) const { - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( points, self_odometry->pose.pose, parameters.ego_nearest_dist_threshold, parameters.ego_nearest_yaw_threshold); } @@ -262,7 +262,7 @@ struct PlannerData template size_t findEgoSegmentIndex(const std::vector & points) const { - return autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( points, self_odometry->pose.pose, parameters.ego_nearest_dist_threshold, parameters.ego_nearest_yaw_threshold); } diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_interface.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_interface.hpp index 898414c29eaa4..d11c3181526d2 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_interface.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_interface.hpp @@ -59,10 +59,10 @@ namespace autoware::behavior_path_planner using autoware::objects_of_interest_marker_interface::ColorName; using autoware::objects_of_interest_marker_interface::ObjectsOfInterestMarkerInterface; using autoware::rtc_interface::RTCInterface; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::generateUUID; using autoware_adapi_v1_msgs::msg::PlanningBehavior; using autoware_adapi_v1_msgs::msg::SteeringFactor; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::generateUUID; using steering_factor_interface::SteeringFactorInterface; using tier4_planning_msgs::msg::AvoidanceDebugMsgArray; using tier4_planning_msgs::msg::PathWithLaneId; @@ -146,7 +146,7 @@ class SceneModuleInterface updateData(); const auto output = isWaitingApproval() ? planWaitingApproval() : plan(); try { - autoware_motion_utils::validateNonEmpty(output.path.points); + autoware::motion_utils::validateNonEmpty(output.path.points); } catch (const std::exception & ex) { throw std::invalid_argument("[" + name_ + "]" + ex.what()); } @@ -566,7 +566,7 @@ class SceneModuleInterface StopFactor stop_factor; stop_factor.stop_pose = stop_pose_.value(); - stop_factor.dist_to_stop_pose = autoware_motion_utils::calcSignedArcLength( + stop_factor.dist_to_stop_pose = autoware::motion_utils::calcSignedArcLength( path.points, getEgoPosition(), stop_pose_.value().position); stop_reason_.stop_factors.push_back(stop_factor); } diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_manager_interface.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_manager_interface.hpp index 02e29e028f74c..fab9a6ba45113 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_manager_interface.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/interface/scene_module_manager_interface.hpp @@ -36,10 +36,10 @@ namespace autoware::behavior_path_planner { -using autoware_motion_utils::createDeadLineVirtualWallMarker; -using autoware_motion_utils::createSlowDownVirtualWallMarker; -using autoware_motion_utils::createStopVirtualWallMarker; -using autoware_universe_utils::toHexString; +using autoware::motion_utils::createDeadLineVirtualWallMarker; +using autoware::motion_utils::createSlowDownVirtualWallMarker; +using autoware::motion_utils::createStopVirtualWallMarker; +using autoware::universe_utils::toHexString; using unique_identifier_msgs::msg::UUID; using SceneModulePtr = std::shared_ptr; using SceneModuleObserver = std::weak_ptr; @@ -111,7 +111,7 @@ class SceneModuleManagerInterface void publishVirtualWall() const { - using autoware_universe_utils::appendMarkerArray; + using autoware::universe_utils::appendMarkerArray; MarkerArray markers{}; @@ -155,7 +155,7 @@ class SceneModuleManagerInterface void publishMarker() const { - using autoware_universe_utils::appendMarkerArray; + using autoware::universe_utils::appendMarkerArray; MarkerArray info_markers{}; MarkerArray debug_markers{}; @@ -205,7 +205,16 @@ class SceneModuleManagerInterface }); } - bool canLaunchNewModule() const { return observers_.size() < config_.max_module_size; } + /** + * Determine if a new module can be launched. It ensures that only one instance of a particular + * scene module type is registered at a time. + * + * When this returns true: + * - A new instance of the scene module can be launched. + * - No other instance of the same name of scene module is currently active or registered. + * + */ + bool canLaunchNewModule() const { return observers_.empty(); } /** * Determine if the module is always executable, regardless of the state of other modules. @@ -271,7 +280,7 @@ class SceneModuleManagerInterface protected: void initInterface(rclcpp::Node * node, const std::vector & rtc_types) { - using autoware_universe_utils::getOrDeclareParameter; + using autoware::universe_utils::getOrDeclareParameter; // init manager configuration { @@ -290,7 +299,6 @@ class SceneModuleManagerInterface *node, ns + "enable_simultaneous_execution_as_candidate_module"); config_.keep_last = getOrDeclareParameter(*node, ns + "keep_last"); config_.priority = getOrDeclareParameter(*node, ns + "priority"); - config_.max_module_size = getOrDeclareParameter(*node, ns + "max_module_size"); } // init rtc configuration diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/colors.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/colors.hpp index 4151f4dcacf19..f2318e9d5c1ad 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/colors.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/colors.hpp @@ -26,62 +26,62 @@ using std_msgs::msg::ColorRGBA; inline ColorRGBA red(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(1., 0., 0., a); + return autoware::universe_utils::createMarkerColor(1., 0., 0., a); } inline ColorRGBA green(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(0., 1., 0., a); + return autoware::universe_utils::createMarkerColor(0., 1., 0., a); } inline ColorRGBA blue(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(0., 0., 1., a); + return autoware::universe_utils::createMarkerColor(0., 0., 1., a); } inline ColorRGBA yellow(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(1., 1., 0., a); + return autoware::universe_utils::createMarkerColor(1., 1., 0., a); } inline ColorRGBA aqua(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(0., 1., 1., a); + return autoware::universe_utils::createMarkerColor(0., 1., 1., a); } inline ColorRGBA magenta(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(1., 0., 1., a); + return autoware::universe_utils::createMarkerColor(1., 0., 1., a); } inline ColorRGBA medium_orchid(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(0.729, 0.333, 0.827, a); + return autoware::universe_utils::createMarkerColor(0.729, 0.333, 0.827, a); } inline ColorRGBA light_pink(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(1., 0.713, 0.756, a); + return autoware::universe_utils::createMarkerColor(1., 0.713, 0.756, a); } inline ColorRGBA light_yellow(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(1., 1., 0.878, a); + return autoware::universe_utils::createMarkerColor(1., 1., 0.878, a); } inline ColorRGBA light_steel_blue(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(0.690, 0.768, 0.870, a); + return autoware::universe_utils::createMarkerColor(0.690, 0.768, 0.870, a); } inline ColorRGBA white(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(1., 1., 1., a); + return autoware::universe_utils::createMarkerColor(1., 1., 1., a); } inline ColorRGBA grey(float a = 0.99) { - return autoware_universe_utils::createMarkerColor(.5, .5, .5, a); + return autoware::universe_utils::createMarkerColor(.5, .5, .5, a); } inline std::vector colors_list(float a = 0.99) diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/utils.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/utils.hpp index fc0efc38ae617..819800281fcc5 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/utils.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/marker_utils/utils.hpp @@ -40,9 +40,9 @@ using autoware::behavior_path_planner::utils::path_safety_checker::CollisionChec using autoware::behavior_path_planner::utils::path_safety_checker::CollisionCheckDebugPair; using autoware::behavior_path_planner::utils::path_safety_checker::ExtendedPredictedObject; using autoware::behavior_path_planner::utils::path_safety_checker::ExtendedPredictedObjects; +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedObjects; using autoware_perception_msgs::msg::PredictedPath; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::Polygon; using geometry_msgs::msg::Pose; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/parameters.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/parameters.hpp index bbc249f5a0daf..a45e8366f45d8 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/parameters.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/parameters.hpp @@ -25,7 +25,6 @@ struct ModuleConfigParameters bool enable_simultaneous_execution_as_candidate_module{false}; bool keep_last{false}; uint8_t priority{0}; - uint8_t max_module_size{0}; }; struct BehaviorPathPlannerParameters diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/turn_signal_decider.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/turn_signal_decider.hpp index fa3236d7fd868..bc41c77a07cea 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/turn_signal_decider.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/turn_signal_decider.hpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include @@ -239,8 +239,8 @@ class TurnSignalDecider const ShiftedPath & path, const ShiftLine & shift_line, const lanelet::ConstLanelets & lanes, const autoware::vehicle_info_utils::VehicleInfo & vehicle_info) const { - using autoware_universe_utils::pose2transform; - using autoware_universe_utils::transformVector; + using autoware::universe_utils::pose2transform; + using autoware::universe_utils::transformVector; using boost::geometry::intersects; const auto footprint = vehicle_info.createFootprint(); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/drivable_area_expansion/types.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/drivable_area_expansion/types.hpp index de29886c27b4e..afe88ac04f302 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/drivable_area_expansion/types.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/drivable_area_expansion/types.hpp @@ -36,13 +36,13 @@ using geometry_msgs::msg::Pose; using tier4_planning_msgs::msg::PathPointWithLaneId; using tier4_planning_msgs::msg::PathWithLaneId; -using autoware_universe_utils::LineString2d; -using autoware_universe_utils::MultiLineString2d; -using autoware_universe_utils::MultiPoint2d; -using autoware_universe_utils::MultiPolygon2d; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; -using autoware_universe_utils::Segment2d; +using autoware::universe_utils::LineString2d; +using autoware::universe_utils::MultiLineString2d; +using autoware::universe_utils::MultiPoint2d; +using autoware::universe_utils::MultiPolygon2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; +using autoware::universe_utils::Segment2d; using SegmentRtree = boost::geometry::index::rtree>; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/objects_filtering.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/objects_filtering.hpp index 8dfc590230064..4fd6fce325f49 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/objects_filtering.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/objects_filtering.hpp @@ -70,7 +70,7 @@ bool isCentroidWithinLanelet(const PredictedObject & object, const lanelet::Cons bool isPolygonOverlapLanelet(const PredictedObject & object, const lanelet::ConstLanelet & lanelet); bool isPolygonOverlapLanelet( - const PredictedObject & object, const autoware_universe_utils::Polygon2d & lanelet_polygon); + const PredictedObject & object, const autoware::universe_utils::Polygon2d & lanelet_polygon); bool isPolygonOverlapLanelet( const PredictedObject & object, const lanelet::BasicPolygon2d & lanelet_polygon); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/path_safety_checker_parameters.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/path_safety_checker_parameters.hpp index 421c495555c3c..0e7d1cee65f02 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/path_safety_checker_parameters.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/path_safety_checker_parameters.hpp @@ -23,6 +23,7 @@ #include +#include #include #include #include @@ -31,8 +32,8 @@ namespace autoware::behavior_path_planner::utils::path_safety_checker { +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedObject; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Pose; using geometry_msgs::msg::Twist; @@ -203,7 +204,9 @@ struct SafetyCheckParams /// possible values: ["RSS", "integral_predicted_polygon"] double keep_unsafe_time{0.0}; ///< Time to keep unsafe before changing to safe. double hysteresis_factor_expand_rate{ - 0.0}; ///< Hysteresis factor to expand/shrink polygon with the value. + 0.0}; ///< Hysteresis factor to expand/shrink polygon with the value. + double collision_check_yaw_diff_threshold{ + 3.1416}; ///< threshold yaw difference between ego and object. double backward_path_length{0.0}; ///< Length of the backward lane for path generation. double forward_path_length{0.0}; ///< Length of the forward path lane for path generation. RSSparams rss_params{}; ///< Parameters related to the RSS model. diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/safety_check.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/safety_check.hpp index 92b7bab5c26ba..d0d19b6b8fed2 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/safety_check.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_safety_checker/safety_check.hpp @@ -26,19 +26,20 @@ #include #include +#include #include namespace autoware::behavior_path_planner::utils::path_safety_checker { using autoware::behavior_path_planner::utils::path_safety_checker::CollisionCheckDebug; +using autoware::universe_utils::calcYawDeviation; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware::vehicle_info_utils::VehicleInfo; using autoware_perception_msgs::msg::PredictedObject; using autoware_perception_msgs::msg::PredictedPath; using autoware_perception_msgs::msg::Shape; -using autoware_universe_utils::calcYawDeviation; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Pose; using geometry_msgs::msg::Twist; @@ -98,7 +99,8 @@ bool checkSafetyWithRSS( const std::vector & ego_predicted_path, const std::vector & objects, CollisionCheckDebugMap & debug_map, const BehaviorPathPlannerParameters & parameters, const RSSparams & rss_params, - const bool check_all_predicted_path, const double hysteresis_factor); + const bool check_all_predicted_path, const double hysteresis_factor, + const double yaw_difference_th); /** * @brief Iterate the points in the ego and target's predicted path and @@ -111,6 +113,8 @@ bool checkSafetyWithRSS( * @param common_parameters The common parameters used in behavior path planner. * @param front_object_deceleration The deceleration of the object in the front.(used in RSS) * @param rear_object_deceleration The deceleration of the object in the rear.(used in RSS) + * @param yaw_difference_th maximum yaw difference between any given ego path pose and object + * predicted path pose. * @param debug The debug information for collision checking. * @return true if distance is safe. */ @@ -120,7 +124,7 @@ bool checkCollision( const ExtendedPredictedObject & target_object, const PredictedPathWithPolygon & target_object_path, const BehaviorPathPlannerParameters & common_parameters, const RSSparams & rss_parameters, - const double hysteresis_factor, CollisionCheckDebug & debug); + const double hysteresis_factor, const double yaw_difference_th, CollisionCheckDebug & debug); /** * @brief Iterate the points in the ego and target's predicted path and @@ -142,7 +146,8 @@ std::vector getCollidedPolygons( const ExtendedPredictedObject & target_object, const PredictedPathWithPolygon & target_object_path, const BehaviorPathPlannerParameters & common_parameters, const RSSparams & rss_parameters, - const double hysteresis_factor, const double max_velocity_limit, CollisionCheckDebug & debug); + const double hysteresis_factor, const double max_velocity_limit, const double yaw_difference_th, + CollisionCheckDebug & debug); bool checkPolygonsIntersects( const std::vector & polys_1, const std::vector & polys_2); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_shifter/path_shifter.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_shifter/path_shifter.hpp index 1e31bafe3fa0b..8164ef659b7b1 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_shifter/path_shifter.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/path_shifter/path_shifter.hpp @@ -29,7 +29,7 @@ #include namespace autoware::behavior_path_planner { -using autoware_universe_utils::generateUUID; +using autoware::universe_utils::generateUUID; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using tier4_planning_msgs::msg::PathPointWithLaneId; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/traffic_light_utils.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/traffic_light_utils.hpp index ef8465988ad73..bd892c68b0ada 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/traffic_light_utils.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/traffic_light_utils.hpp @@ -15,9 +15,9 @@ #define AUTOWARE__BEHAVIOR_PATH_PLANNER_COMMON__UTILS__TRAFFIC_LIGHT_UTILS_HPP_ #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/utils.hpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/utils.hpp index 9196123c4e73a..5c1eee92c2a5d 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/utils.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/include/autoware/behavior_path_planner_common/utils/utils.hpp @@ -47,8 +47,8 @@ using autoware_perception_msgs::msg::PredictedObjects; using autoware_perception_msgs::msg::PredictedPath; using autoware::route_handler::RouteHandler; -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::Polygon2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using geometry_msgs::msg::Vector3; @@ -93,11 +93,11 @@ FrenetPoint convertToFrenetPoint( FrenetPoint frenet_point; const double longitudinal_length = - autoware_motion_utils::calcLongitudinalOffsetToSegment(points, seg_idx, search_point_geom); + autoware::motion_utils::calcLongitudinalOffsetToSegment(points, seg_idx, search_point_geom); frenet_point.length = - autoware_motion_utils::calcSignedArcLength(points, 0, seg_idx) + longitudinal_length; + autoware::motion_utils::calcSignedArcLength(points, 0, seg_idx) + longitudinal_length; frenet_point.distance = - autoware_motion_utils::calcLateralOffset(points, search_point_geom, seg_idx); + autoware::motion_utils::calcLateralOffset(points, search_point_geom, seg_idx); return frenet_point; } @@ -147,7 +147,7 @@ bool checkCollisionWithExtraStoppingMargin( * @return Has collision or not */ bool checkCollisionBetweenPathFootprintsAndObjects( - const autoware_universe_utils::LinearRing2d & vehicle_footprint, const PathWithLaneId & ego_path, + const autoware::universe_utils::LinearRing2d & vehicle_footprint, const PathWithLaneId & ego_path, const PredictedObjects & dynamic_objects, const double margin); /** @@ -155,7 +155,7 @@ bool checkCollisionBetweenPathFootprintsAndObjects( * @return Has collision or not */ bool checkCollisionBetweenFootprintAndObjects( - const autoware_universe_utils::LinearRing2d & vehicle_footprint, const Pose & ego_pose, + const autoware::universe_utils::LinearRing2d & vehicle_footprint, const Pose & ego_pose, const PredictedObjects & dynamic_objects, const double margin); /** @@ -344,12 +344,12 @@ size_t findNearestSegmentIndex( const double yaw_threshold) { const auto nearest_idx = - autoware_motion_utils::findNearestSegmentIndex(points, pose, dist_threshold, yaw_threshold); + autoware::motion_utils::findNearestSegmentIndex(points, pose, dist_threshold, yaw_threshold); if (nearest_idx) { return nearest_idx.value(); } - return autoware_motion_utils::findNearestSegmentIndex(points, pose.position); + return autoware::motion_utils::findNearestSegmentIndex(points, pose.position); } } // namespace autoware::behavior_path_planner::utils diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/package.xml b/planning/behavior_path_planner/autoware_behavior_path_planner_common/package.xml index 46ee55c07fe09..7a189250c088d 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/package.xml +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/package.xml @@ -45,6 +45,7 @@ autoware_adapi_v1_msgs autoware_freespace_planning_algorithms autoware_lane_departure_checker + autoware_lanelet2_extension autoware_motion_utils autoware_objects_of_interest_marker_interface autoware_perception_msgs @@ -55,7 +56,6 @@ autoware_vehicle_info_utils geometry_msgs interpolation - lanelet2_extension magic_enum object_recognition_utils rclcpp diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/marker_utils/utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/marker_utils/utils.cpp index 154ceb6dc6dd5..8c9b4ef35d5af 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/marker_utils/utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/marker_utils/utils.cpp @@ -31,12 +31,12 @@ namespace marker_utils { using autoware::behavior_path_planner::utils::calcPathArcLengthArray; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerOrientation; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerOrientation; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; using std_msgs::msg::ColorRGBA; using visualization_msgs::msg::Marker; @@ -49,13 +49,13 @@ void addFootprintMarker( const double base_to_rear = vehicle_info.rear_overhang_m; marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, base_to_front, -half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, base_to_front, -half_width, 0.0).position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, base_to_front, half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, base_to_front, half_width, 0.0).position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, -base_to_rear, half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, -base_to_rear, half_width, 0.0).position); marker.points.push_back( - autoware_universe_utils::calcOffsetPose(pose, -base_to_rear, -half_width, 0.0).position); + autoware::universe_utils::calcOffsetPose(pose, -base_to_rear, -half_width, 0.0).position); marker.points.push_back(marker.points.front()); } @@ -214,7 +214,7 @@ MarkerArray createShiftLengthMarkerArray( Marker marker = createDefaultMarker( "map", rclcpp::Clock{RCL_ROS_TIME}.now(), ns, 0L, Marker::LINE_STRIP, createMarkerScale(0.1, 0.0, 0.0), createMarkerColor(r, g, b, 0.9)); - marker.pose.orientation = autoware_universe_utils::createMarkerOrientation(0, 0, 0, 1.0); + marker.pose.orientation = autoware::universe_utils::createMarkerOrientation(0, 0, 0, 1.0); marker.points.reserve(shift_distance.size()); for (size_t i = 0; i < shift_distance.size(); ++i) { @@ -271,7 +271,7 @@ MarkerArray createLaneletsAreaMarkerArray( "map", current_time, ns, static_cast(lanelet.id()), Marker::LINE_STRIP, createMarkerScale(0.1, 0.0, 0.0), createMarkerColor(r, g, b, 0.999)); - marker.pose.orientation = autoware_universe_utils::createMarkerOrientation(0, 0, 0, 1.0); + marker.pose.orientation = autoware::universe_utils::createMarkerOrientation(0, 0, 0, 1.0); if (!lanelet.polygon3d().empty()) { marker.points.reserve(lanelet.polygon3d().size() + 1); @@ -299,7 +299,7 @@ MarkerArray createPolygonMarkerArray( "map", rclcpp::Clock{RCL_ROS_TIME}.now(), ns, static_cast(lane_id), Marker::LINE_STRIP, createMarkerScale(w, 0.0, 0.0), createMarkerColor(r, g, b, 0.8)); - marker.pose.orientation = autoware_universe_utils::createMarkerOrientation(0, 0, 0, 1.0); + marker.pose.orientation = autoware::universe_utils::createMarkerOrientation(0, 0, 0, 1.0); if (!polygon.points.empty()) { marker.points.reserve(polygon.points.size() + 1); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/turn_signal_decider.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/turn_signal_decider.cpp index 5a785a71b863d..2a9d3fb4d1d13 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/turn_signal_decider.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/turn_signal_decider.cpp @@ -23,8 +23,8 @@ #include #include #include -#include -#include +#include +#include #include #include @@ -33,16 +33,16 @@ namespace autoware::behavior_path_planner { -using autoware_motion_utils::calcSignedArcLength; +using autoware::motion_utils::calcSignedArcLength; double calc_distance( const PathWithLaneId & path, const Pose & current_pose, const size_t current_seg_idx, const Pose & input_point, const double nearest_dist_threshold, const double nearest_yaw_threshold) { const size_t nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, input_point, nearest_dist_threshold, nearest_yaw_threshold); - return autoware_motion_utils::calcSignedArcLength( + return autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, current_seg_idx, input_point.position, nearest_seg_idx); } @@ -83,8 +83,9 @@ TurnIndicatorsCommand TurnSignalDecider::getTurnSignal( } // Closest ego segment - const size_t ego_seg_idx = autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( - extended_path.points, current_pose, nearest_dist_threshold, nearest_yaw_threshold); + const size_t ego_seg_idx = + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + extended_path.points, current_pose, nearest_dist_threshold, nearest_yaw_threshold); // Get closest intersection turn signal if exists const auto intersection_turn_signal_info = getIntersectionTurnSignalInfo( @@ -231,20 +232,20 @@ std::optional TurnSignalDecider::getIntersectionTurnSignalInfo( } const size_t front_nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, lane_front_pose, nearest_dist_threshold, nearest_yaw_threshold); const size_t back_nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, lane_back_pose, nearest_dist_threshold, nearest_yaw_threshold); // Distance from ego vehicle front pose to front point of the lane - const double dist_to_front_point = autoware_motion_utils::calcSignedArcLength( + const double dist_to_front_point = autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, current_seg_idx, lane_front_pose.position, front_nearest_seg_idx) - base_link2front_; // Distance from ego vehicle base link to the terminal point of the lane - const double dist_to_back_point = autoware_motion_utils::calcSignedArcLength( + const double dist_to_back_point = autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, current_seg_idx, lane_back_pose.position, back_nearest_seg_idx); @@ -280,9 +281,9 @@ std::optional TurnSignalDecider::getIntersectionTurnSignalInfo( const auto & turn_signal_info = signal_queue.front(); const auto & required_end_point = turn_signal_info.required_end_point; const size_t nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, required_end_point, nearest_dist_threshold, nearest_yaw_threshold); - const double dist_to_end_point = autoware_motion_utils::calcSignedArcLength( + const double dist_to_end_point = autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, current_seg_idx, required_end_point.position, nearest_seg_idx); @@ -407,9 +408,9 @@ TurnSignalInfo TurnSignalDecider::overwrite_turn_signal( const auto get_distance = [&](const Pose & input_point) { const size_t nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, input_point, nearest_dist_threshold, nearest_yaw_threshold); - return autoware_motion_utils::calcSignedArcLength( + return autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, current_seg_idx, input_point.position, nearest_seg_idx) - base_link2front_; @@ -434,9 +435,9 @@ TurnSignalInfo TurnSignalDecider::use_prior_turn_signal( { const auto get_distance = [&](const Pose & input_point) { const size_t nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, input_point, nearest_dist_threshold, nearest_yaw_threshold); - return autoware_motion_utils::calcSignedArcLength( + return autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, current_seg_idx, input_point.position, nearest_seg_idx); }; @@ -557,9 +558,9 @@ geometry_msgs::msg::Pose TurnSignalDecider::get_required_end_point( for (size_t i = 0; i < centerline.size(); ++i) { converted_centerline.at(i).position = lanelet::utils::conversion::toGeomMsgPt(centerline[i]); } - autoware_motion_utils::insertOrientation(converted_centerline, true); + autoware::motion_utils::insertOrientation(converted_centerline, true); - const double length = autoware_motion_utils::calcArcLength(converted_centerline); + const double length = autoware::motion_utils::calcArcLength(converted_centerline); // Create resampling intervals const double resampling_interval = 1.0; @@ -569,20 +570,21 @@ geometry_msgs::msg::Pose TurnSignalDecider::get_required_end_point( } // Insert terminal point - if (length - resampling_arclength.back() < autoware_motion_utils::overlap_threshold) { + if (length - resampling_arclength.back() < autoware::motion_utils::overlap_threshold) { resampling_arclength.back() = length; } else { resampling_arclength.push_back(length); } const auto resampled_centerline = - autoware_motion_utils::resamplePoseVector(converted_centerline, resampling_arclength); + autoware::motion_utils::resamplePoseVector(converted_centerline, resampling_arclength); const double terminal_yaw = tf2::getYaw(resampled_centerline.back().orientation); for (size_t i = 0; i < resampled_centerline.size(); ++i) { const double yaw = tf2::getYaw(resampled_centerline.at(i).orientation); - const double yaw_diff = autoware_universe_utils::normalizeRadian(yaw - terminal_yaw); - if (std::fabs(yaw_diff) < autoware_universe_utils::deg2rad(intersection_angle_threshold_deg_)) { + const double yaw_diff = autoware::universe_utils::normalizeRadian(yaw - terminal_yaw); + if ( + std::fabs(yaw_diff) < autoware::universe_utils::deg2rad(intersection_angle_threshold_deg_)) { return resampled_centerline.at(i); } } @@ -597,9 +599,9 @@ void TurnSignalDecider::set_intersection_info( { const auto get_distance = [&](const Pose & input_point) { const size_t nearest_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, input_point, nearest_dist_threshold, nearest_yaw_threshold); - return autoware_motion_utils::calcSignedArcLength( + return autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, current_seg_idx, input_point.position, nearest_seg_idx); }; @@ -639,9 +641,9 @@ void TurnSignalDecider::initialize_intersection_info() geometry_msgs::msg::Quaternion TurnSignalDecider::calc_orientation( const Point & src_point, const Point & dst_point) { - const double pitch = autoware_universe_utils::calcElevationAngle(src_point, dst_point); - const double yaw = autoware_universe_utils::calcAzimuthAngle(src_point, dst_point); - return autoware_universe_utils::createQuaternionFromRPY(0.0, pitch, yaw); + const double pitch = autoware::universe_utils::calcElevationAngle(src_point, dst_point); + const double yaw = autoware::universe_utils::calcAzimuthAngle(src_point, dst_point); + return autoware::universe_utils::createQuaternionFromRPY(0.0, pitch, yaw); } std::pair TurnSignalDecider::getBehaviorTurnSignalInfo( @@ -652,7 +654,7 @@ std::pair TurnSignalDecider::getBehaviorTurnSignalInfo( const double current_shift_length, const bool is_driving_forward, const bool egos_lane_is_shifted, const bool override_ego_stopped_check, const bool is_pull_out) const { - using autoware_universe_utils::getPose; + using autoware::universe_utils::getPose; const auto & p = parameters; const auto & rh = route_handler; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/drivable_area_expansion.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/drivable_area_expansion.cpp index e3ebc07a8ce39..6e028cec2ed1b 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/drivable_area_expansion.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/drivable_area_expansion.cpp @@ -50,8 +50,8 @@ void reuse_previous_poses( std::vector cropped_curvatures; const auto ego_is_behind = prev_poses.size() > 1 && - autoware_motion_utils::calcLongitudinalOffsetToSegment(prev_poses, 0, ego_point) < 0.0; - const auto ego_is_far = !prev_poses.empty() && autoware_universe_utils::calcDistance2d( + autoware::motion_utils::calcLongitudinalOffsetToSegment(prev_poses, 0, ego_point) < 0.0; + const auto ego_is_far = !prev_poses.empty() && autoware::universe_utils::calcDistance2d( ego_point, prev_poses.front()) < 0.0; // make sure the reused points are not behind the current original drivable area LineString2d left_bound; @@ -65,9 +65,9 @@ void reuse_previous_poses( if (!ego_is_behind && !ego_is_far && prev_poses.size() > 1 && !prev_poses_across_bounds) { const auto first_idx = - autoware_motion_utils::findNearestSegmentIndex(prev_poses, path.points.front().point.pose); - const auto deviation = - autoware_motion_utils::calcLateralOffset(prev_poses, path.points.front().point.pose.position); + autoware::motion_utils::findNearestSegmentIndex(prev_poses, path.points.front().point.pose); + const auto deviation = autoware::motion_utils::calcLateralOffset( + prev_poses, path.points.front().point.pose.position); if (first_idx && deviation < params.max_reuse_deviation) { LineString2d path_ls; for (const auto & p : path.points) path_ls.push_back(convert_point(p.point.pose.position)); @@ -87,27 +87,29 @@ void reuse_previous_poses( } if (cropped_poses.empty()) { const auto resampled_path_points = - autoware_motion_utils::resamplePath(path, params.resample_interval, true, true, false).points; + autoware::motion_utils::resamplePath(path, params.resample_interval, true, true, false) + .points; const auto cropped_path = params.max_path_arc_length <= 0.0 ? resampled_path_points - : autoware_motion_utils::cropForwardPoints( + : autoware::motion_utils::cropForwardPoints( resampled_path_points, resampled_path_points.front().point.pose.position, 0, params.max_path_arc_length); for (const auto & p : cropped_path) cropped_poses.push_back(p.point.pose); } else { - const auto initial_arc_length = autoware_motion_utils::calcArcLength(cropped_poses); - const auto max_path_arc_length = autoware_motion_utils::calcArcLength(path.points); - const auto first_arc_length = autoware_motion_utils::calcSignedArcLength( + const auto initial_arc_length = autoware::motion_utils::calcArcLength(cropped_poses); + const auto max_path_arc_length = autoware::motion_utils::calcArcLength(path.points); + const auto first_arc_length = autoware::motion_utils::calcSignedArcLength( path.points, path.points.front().point.pose.position, cropped_poses.back().position); for (auto arc_length = first_arc_length + params.resample_interval; (params.max_path_arc_length <= 0.0 || initial_arc_length + (arc_length - first_arc_length) <= params.max_path_arc_length) && arc_length <= max_path_arc_length; arc_length += params.resample_interval) - cropped_poses.push_back(autoware_motion_utils::calcInterpolatedPose(path.points, arc_length)); + cropped_poses.push_back( + autoware::motion_utils::calcInterpolatedPose(path.points, arc_length)); } - prev_poses = autoware_motion_utils::removeOverlapPoints(cropped_poses); + prev_poses = autoware::motion_utils::removeOverlapPoints(cropped_poses); prev_curvatures = cropped_curvatures; } @@ -162,7 +164,7 @@ void apply_arc_length_range_smoothing( auto arc_length = boost::geometry::distance( bound_projections[path_idx].point, convert_point(bound[bound_idx + 1])); const auto update_arc_length_and_bound_expansions = [&](auto idx) { - arc_length += autoware_universe_utils::calcDistance2d(bound[idx - 1], bound[idx]); + arc_length += autoware::universe_utils::calcDistance2d(bound[idx - 1], bound[idx]); bound_expansions[idx] = std::max(bound_expansions[idx], original_expansions[bound_idx]); }; for (auto up_bound_idx = bound_idx + 2; up_bound_idx < bound.size(); ++up_bound_idx) { @@ -201,7 +203,7 @@ void apply_bound_change_rate_limit( if (distances.empty()) return; const auto apply_max_vel = [&](auto & exp, const auto from, const auto to) { if (exp[from] > exp[to]) { - const auto arc_length = autoware_universe_utils::calcDistance2d(bound[from], bound[to]); + const auto arc_length = autoware::universe_utils::calcDistance2d(bound[from], bound[to]); const auto smoothed_dist = exp[from] - arc_length * max_rate; exp[to] = std::max(exp[to], smoothed_dist); } @@ -285,12 +287,12 @@ void expand_bound( for (auto idx = 1LU; idx < bound.size(); ++idx) { bool is_intersecting = false; for (auto succ_idx = idx + 1; succ_idx < bound.size(); ++succ_idx) { - const auto intersection = autoware_universe_utils::intersect( + const auto intersection = autoware::universe_utils::intersect( bound[idx - 1], bound[idx], bound[succ_idx - 1], bound[succ_idx]); if ( intersection && - autoware_universe_utils::calcDistance2d(*intersection, bound[idx - 1]) < 1e-3 && - autoware_universe_utils::calcDistance2d(*intersection, bound[idx]) < 1e-3) { + autoware::universe_utils::calcDistance2d(*intersection, bound[idx - 1]) < 1e-3 && + autoware::universe_utils::calcDistance2d(*intersection, bound[idx]) < 1e-3) { idx = succ_idx; is_intersecting = true; } @@ -303,7 +305,7 @@ void expand_bound( std::vector calculate_smoothed_curvatures( const std::vector & poses, const size_t smoothing_window_size) { - const auto curvatures = autoware_motion_utils::calcCurvature(poses); + const auto curvatures = autoware::motion_utils::calcCurvature(poses); std::vector smoothed_curvatures(curvatures.size()); for (auto i = 0UL; i < curvatures.size(); ++i) { auto sum = 0.0; @@ -364,7 +366,7 @@ void expand_drivable_area( { // skip if no bounds or not enough points to calculate path curvature if (path.points.size() < 3 || path.left_bound.empty() || path.right_bound.empty()) return; - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; stop_watch.tic("overall"); stop_watch.tic("preprocessing"); const auto & params = planner_data->drivable_area_expansion_parameters; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/footprints.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/footprints.cpp index b01669871276a..a25a33c1668fa 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/footprints.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/footprints.cpp @@ -37,7 +37,7 @@ Polygon2d create_footprint(const geometry_msgs::msg::Pose & pose, const Polygon2 { const auto angle = tf2::getYaw(pose.orientation); return translate_polygon( - autoware_universe_utils::rotatePolygon(base_footprint, angle), pose.position.x, + autoware::universe_utils::rotatePolygon(base_footprint, angle), pose.position.x, pose.position.y); } diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/static_drivable_area.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/static_drivable_area.cpp index 87e7d297c65c7..d861f3459a3e6 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/static_drivable_area.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/drivable_area_expansion/static_drivable_area.cpp @@ -19,9 +19,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include @@ -55,8 +55,8 @@ std::vector removeSharpPoints(const std::vector & points) const auto product = std::inner_product(vec_1to2.begin(), vec_1to2.end(), vec_3to2.begin(), 0.0); - const auto dist_1to2 = autoware_universe_utils::calcDistance3d(p1, p2); - const auto dist_3to2 = autoware_universe_utils::calcDistance3d(p3, p2); + const auto dist_1to2 = autoware::universe_utils::calcDistance3d(p1, p2); + const auto dist_3to2 = autoware::universe_utils::calcDistance3d(p3, p2); constexpr double epsilon = 1e-3; @@ -82,15 +82,15 @@ template size_t findNearestSegmentIndexFromLateralDistance( const std::vector & points, const geometry_msgs::msg::Point & target_point) { - using autoware_universe_utils::calcAzimuthAngle; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::normalizeRadian; + using autoware::universe_utils::calcAzimuthAngle; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::normalizeRadian; std::optional closest_idx{std::nullopt}; double min_lateral_dist = std::numeric_limits::max(); for (size_t seg_idx = 0; seg_idx < points.size() - 1; ++seg_idx) { const double lon_dist = - autoware_motion_utils::calcLongitudinalOffsetToSegment(points, seg_idx, target_point); + autoware::motion_utils::calcLongitudinalOffsetToSegment(points, seg_idx, target_point); const double segment_length = calcDistance2d(points.at(seg_idx), points.at(seg_idx + 1)); const double lat_dist = [&]() { if (lon_dist < 0.0) { @@ -99,7 +99,7 @@ size_t findNearestSegmentIndexFromLateralDistance( if (segment_length < lon_dist) { return calcDistance2d(points.at(seg_idx + 1), target_point); } - return std::abs(autoware_motion_utils::calcLateralOffset(points, target_point, seg_idx)); + return std::abs(autoware::motion_utils::calcLateralOffset(points, target_point, seg_idx)); }(); if (lat_dist < min_lateral_dist) { closest_idx = seg_idx; @@ -111,7 +111,7 @@ size_t findNearestSegmentIndexFromLateralDistance( return *closest_idx; } - return autoware_motion_utils::findNearestSegmentIndex(points, target_point); + return autoware::motion_utils::findNearestSegmentIndex(points, target_point); } template @@ -119,9 +119,9 @@ size_t findNearestSegmentIndexFromLateralDistance( const std::vector & points, const geometry_msgs::msg::Pose & target_point, const double yaw_threshold) { - using autoware_universe_utils::calcAzimuthAngle; - using autoware_universe_utils::calcDistance2d; - using autoware_universe_utils::normalizeRadian; + using autoware::universe_utils::calcAzimuthAngle; + using autoware::universe_utils::calcDistance2d; + using autoware::universe_utils::normalizeRadian; std::optional closest_idx{std::nullopt}; double min_lateral_dist = std::numeric_limits::max(); @@ -132,7 +132,7 @@ size_t findNearestSegmentIndexFromLateralDistance( if (yaw_threshold < std::abs(yaw)) { continue; } - const double lon_dist = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double lon_dist = autoware::motion_utils::calcLongitudinalOffsetToSegment( points, seg_idx, target_point.position); const double segment_length = calcDistance2d(points.at(seg_idx), points.at(seg_idx + 1)); const double lat_dist = [&]() { @@ -143,7 +143,7 @@ size_t findNearestSegmentIndexFromLateralDistance( return calcDistance2d(points.at(seg_idx + 1), target_point.position); } return std::abs( - autoware_motion_utils::calcLateralOffset(points, target_point.position, seg_idx)); + autoware::motion_utils::calcLateralOffset(points, target_point.position, seg_idx)); }(); if (lat_dist < min_lateral_dist) { closest_idx = seg_idx; @@ -155,7 +155,7 @@ size_t findNearestSegmentIndexFromLateralDistance( return *closest_idx; } - return autoware_motion_utils::findNearestSegmentIndex(points, target_point.position); + return autoware::motion_utils::findNearestSegmentIndex(points, target_point.position); } bool checkHasSameLane( @@ -177,9 +177,9 @@ geometry_msgs::msg::Point calcLongitudinalOffsetStartPoint( const std::vector & points, const geometry_msgs::msg::Pose & pose, const size_t nearest_segment_idx, const double offset) { - const double offset_length = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double offset_length = autoware::motion_utils::calcLongitudinalOffsetToSegment( points, nearest_segment_idx, pose.position); - const auto offset_point = autoware_motion_utils::calcLongitudinalOffsetPoint( + const auto offset_point = autoware::motion_utils::calcLongitudinalOffsetPoint( points, nearest_segment_idx, offset_length + offset); return offset_point ? offset_point.value() : points.at(nearest_segment_idx); @@ -189,9 +189,9 @@ geometry_msgs::msg::Point calcLongitudinalOffsetGoalPoint( const std::vector & points, const geometry_msgs::msg::Pose & pose, const size_t nearest_segment_idx, const double offset) { - const double offset_length = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double offset_length = autoware::motion_utils::calcLongitudinalOffsetToSegment( points, nearest_segment_idx, pose.position); - const auto offset_point = autoware_motion_utils::calcLongitudinalOffsetPoint( + const auto offset_point = autoware::motion_utils::calcLongitudinalOffsetPoint( points, nearest_segment_idx, offset_length + offset); return offset_point ? offset_point.value() : points.at(nearest_segment_idx + 1); @@ -246,7 +246,7 @@ std::optional> intersectBound( static_cast(bound.size()) - 1, static_cast(std::max(seg_idx1, seg_idx2)) + 1 + 5)); for (int i = start_idx; i < static_cast(end_idx); ++i) { const auto intersect_point = - autoware_universe_utils::intersect(p1, p2, bound.at(i), bound.at(i + 1)); + autoware::universe_utils::intersect(p1, p2, bound.at(i), bound.at(i + 1)); if (intersect_point) { std::pair result; result.first = static_cast(i); @@ -262,7 +262,7 @@ double calcSquaredDistanceFromPointToSegment( const geometry_msgs::msg::Point & segment_end_point, const geometry_msgs::msg::Point & target_point) { - using autoware_universe_utils::calcSquaredDistance2d; + using autoware::universe_utils::calcSquaredDistance2d; const auto & a = segment_start_point; const auto & b = segment_end_point; @@ -294,10 +294,10 @@ PolygonPoint transformBoundFrenetCoordinate( const size_t min_dist_seg_idx = std::distance( dist_to_bound_segment_vec.begin(), std::min_element(dist_to_bound_segment_vec.begin(), dist_to_bound_segment_vec.end())); - const double lon_dist_to_segment = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double lon_dist_to_segment = autoware::motion_utils::calcLongitudinalOffsetToSegment( bound_points, min_dist_seg_idx, target_point); const double lat_dist_to_segment = - autoware_motion_utils::calcLateralOffset(bound_points, target_point, min_dist_seg_idx); + autoware::motion_utils::calcLateralOffset(bound_points, target_point, min_dist_seg_idx); return PolygonPoint{target_point, min_dist_seg_idx, lon_dist_to_segment, lat_dist_to_segment}; } @@ -343,7 +343,7 @@ std::vector generatePolygonInsideBounds( if (!intersection) { continue; } - const double lon_dist = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double lon_dist = autoware::motion_utils::calcLongitudinalOffsetToSegment( bound, intersection->first, intersection->second); const auto intersect_point = PolygonPoint{intersection->second, intersection->first, lon_dist, 0.0}; @@ -357,7 +357,6 @@ std::vector generatePolygonInsideBounds( // Here is if (!is_prev_outside && is_curr_outside). inside_poly.push_back(prev_poly); inside_poly.push_back(intersect_point); - continue; } if (has_intersection) { return inside_poly; @@ -438,7 +437,7 @@ std::vector concatenateTwoPolygons( double min_dist_to_intersection = std::numeric_limits::max(); PolygonPoint closest_intersect_point; for (size_t i = 0; i < get_in_poly().size() - 1; ++i) { - const auto intersection = autoware_universe_utils::intersect( + const auto intersection = autoware::universe_utils::intersect( get_out_poly().at(curr_idx).point, get_out_poly().at(next_idx).point, get_in_poly().at(i).point, get_in_poly().at(i + 1).point); if (!intersection) { @@ -455,7 +454,7 @@ std::vector concatenateTwoPolygons( const auto intersect_point = PolygonPoint{*intersection, 0, 0.0, 0.0}; const double dist_to_intersection = - autoware_universe_utils::calcDistance2d(get_out_poly().at(curr_idx).point, *intersection); + autoware::universe_utils::calcDistance2d(get_out_poly().at(curr_idx).point, *intersection); if (dist_to_intersection < min_dist_to_intersection) { closest_idx = i; min_dist_to_intersection = dist_to_intersection; @@ -569,7 +568,7 @@ std::vector getPolygonPointsInsideBounds( // add start and end points projected to bound if necessary if (inside_polygon.at(start_idx).lat_dist_to_bound != 0.0) { // not on bound auto start_point = inside_polygon.at(start_idx); - const auto start_point_on_bound = autoware_motion_utils::calcLongitudinalOffsetPoint( + const auto start_point_on_bound = autoware::motion_utils::calcLongitudinalOffsetPoint( bound, start_point.bound_seg_idx, start_point.lon_dist_to_segment); if (start_point_on_bound) { start_point.point = start_point_on_bound.value(); @@ -578,7 +577,7 @@ std::vector getPolygonPointsInsideBounds( } if (inside_polygon.at(end_idx).lat_dist_to_bound != 0.0) { // not on bound auto end_point = inside_polygon.at(end_idx); - const auto end_point_on_bound = autoware_motion_utils::calcLongitudinalOffsetPoint( + const auto end_point_on_bound = autoware::motion_utils::calcLongitudinalOffsetPoint( bound, end_point.bound_seg_idx, end_point.lon_dist_to_segment); if (end_point_on_bound) { end_point.point = end_point_on_bound.value(); @@ -606,7 +605,7 @@ std::vector updateBoundary( const auto & start_poly = polygon.front(); const auto & end_poly = polygon.back(); - const double front_offset = autoware_motion_utils::calcLongitudinalOffsetToSegment( + const double front_offset = autoware::motion_utils::calcLongitudinalOffsetToSegment( updated_bound, start_poly.bound_seg_idx, start_poly.point); const size_t removed_start_idx = @@ -641,7 +640,7 @@ std::vector updateBoundary( namespace autoware::behavior_path_planner::utils { -using autoware_universe_utils::Point2d; +using autoware::universe_utils::Point2d; std::optional getOverlappedLaneletId(const std::vector & lanes) { @@ -746,9 +745,9 @@ std::vector cutOverlappedLanes( } // Step2. pick up only path points within drivable lanes - for (const auto & lanes : shorten_lanes) { + for (const auto & drivable_lanes : shorten_lanes) { for (size_t i = start_point_idx; i < original_points.size(); ++i) { - if (is_point_in_drivable_lanes(lanes, original_points.at(i))) { + if (is_point_in_drivable_lanes(drivable_lanes, original_points.at(i))) { path.points.push_back(original_points.at(i)); continue; } @@ -853,7 +852,7 @@ void generateDrivableArea( PathWithLaneId & path, const double vehicle_length, const double offset, const bool is_driving_forward) { - using autoware_universe_utils::calcOffsetPose; + using autoware::universe_utils::calcOffsetPose; // remove path points which is close to the previous point PathWithLaneId resampled_path{}; @@ -865,7 +864,7 @@ void generateDrivableArea( const auto & prev_point = resampled_path.points.back().point.pose.position; const auto & curr_point = path.points.at(i).point.pose.position; const double signed_arc_length = - autoware_motion_utils::calcSignedArcLength(path.points, prev_point, curr_point); + autoware::motion_utils::calcSignedArcLength(path.points, prev_point, curr_point); if (signed_arc_length > resample_interval) { resampled_path.points.push_back(path.points.at(i)); } @@ -874,7 +873,7 @@ void generateDrivableArea( // add last point of path if enough far from the one of resampled path constexpr double th_last_point_distance = 0.3; if ( - autoware_universe_utils::calcDistance2d( + autoware::universe_utils::calcDistance2d( resampled_path.points.back().point.pose.position, path.points.back().point.pose.position) > th_last_point_distance) { resampled_path.points.push_back(path.points.back()); @@ -947,7 +946,7 @@ void generateDrivableArea( p_line.push_back(p2); bool intersection_found = false; for (size_t j = i + 2; j < bound.size() - 1; j++) { - const double distance = autoware_universe_utils::calcDistance2d(bound.at(i), bound.at(j)); + const double distance = autoware::universe_utils::calcDistance2d(bound.at(i), bound.at(j)); if (distance > intersection_check_distance) { break; } @@ -1041,12 +1040,12 @@ void extractObstaclesFromDrivableArea( const auto & obj_pos = obstacle.pose.position; // get edge points of the object - const size_t nearest_path_idx = - autoware_motion_utils::findNearestIndex(path.points, obj_pos); // to get z for object polygon + const size_t nearest_path_idx = autoware::motion_utils::findNearestIndex( + path.points, obj_pos); // to get z for object polygon std::vector edge_points; for (int i = 0; i < static_cast(obstacle.poly.outer().size()) - 1; ++i) { // NOTE: There is a duplicated points - edge_points.push_back(autoware_universe_utils::createPoint( + edge_points.push_back(autoware::universe_utils::createPoint( obstacle.poly.outer().at(i).x(), obstacle.poly.outer().at(i).y(), path.points.at(nearest_path_idx).point.pose.position.z)); } @@ -1303,9 +1302,9 @@ std::pair, bool> getBoundWithFreeSpaceAreas( const std::vector & other_side_bound, const std::shared_ptr planner_data, const bool is_left) { - using autoware_universe_utils::getPose; - using autoware_universe_utils::pose2transform; - using autoware_universe_utils::transformVector; + using autoware::universe_utils::getPose; + using autoware::universe_utils::pose2transform; + using autoware::universe_utils::transformVector; using lanelet::utils::to2D; using lanelet::utils::conversion::toGeomMsgPt; using lanelet::utils::conversion::toLaneletPoint; @@ -1383,12 +1382,12 @@ std::pair, bool> getBoundWithFreeSpaceAreas( return bound; } - const auto p_offset = autoware_universe_utils::calcOffsetPose( + const auto p_offset = autoware::universe_utils::calcOffsetPose( ego_pose, (trim_behind_bound ? -100.0 : 100.0), (is_left ? 0.1 : -0.1), 0.0); std::vector ret; for (size_t i = 1; i < bound.size(); ++i) { - const auto intersect = autoware_universe_utils::intersect( + const auto intersect = autoware::universe_utils::intersect( ego_pose.position, p_offset.position, toGeomMsgPt(bound.at(i - 1)), toGeomMsgPt(bound.at(i))); @@ -1493,7 +1492,7 @@ std::vector postProcess( const auto cp = lanelet::utils::conversion::toGeomMsgPt(bound_p); if (bound.empty()) { bound.push_back(cp); - } else if (autoware_universe_utils::calcDistance2d(cp, bound.back()) > overlap_threshold) { + } else if (autoware::universe_utils::calcDistance2d(cp, bound.back()) > overlap_threshold) { bound.push_back(cp); } } @@ -1558,7 +1557,7 @@ std::vector postProcess( const auto start_idx = [&]() { const size_t current_seg_idx = planner_data->findEgoSegmentIndex(path.points); - const auto cropped_path_points = autoware_motion_utils::cropPoints( + const auto cropped_path_points = autoware::motion_utils::cropPoints( path.points, current_pose.position, current_seg_idx, planner_data->parameters.forward_path_length, planner_data->parameters.backward_path_length + planner_data->parameters.input_path_interval); @@ -1597,7 +1596,8 @@ std::vector postProcess( // Insert middle points for (size_t i = start_idx + 1; i <= goal_idx; ++i) { const auto & next_point = tmp_bound.at(i); - const double dist = autoware_universe_utils::calcDistance2d(processed_bound.back(), next_point); + const double dist = + autoware::universe_utils::calcDistance2d(processed_bound.back(), next_point); if (dist > overlap_threshold) { processed_bound.push_back(next_point); } @@ -1605,7 +1605,7 @@ std::vector postProcess( // Insert a goal point if ( - autoware_universe_utils::calcDistance2d(processed_bound.back(), goal_point) > + autoware::universe_utils::calcDistance2d(processed_bound.back(), goal_point) > overlap_threshold) { processed_bound.push_back(goal_point); } @@ -1620,7 +1620,7 @@ std::vector calcBound( const bool enable_expanding_hatched_road_markings, const bool enable_expanding_intersection_areas, const bool enable_expanding_freespace_areas, const bool is_left, const bool is_driving_forward) { - using autoware_motion_utils::removeOverlapPoints; + using autoware::motion_utils::removeOverlapPoints; const auto & route_handler = planner_data->route_handler; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/occupancy_grid_based_collision_detector/occupancy_grid_based_collision_detector.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/occupancy_grid_based_collision_detector/occupancy_grid_based_collision_detector.cpp index 875de7ff18400..e4f1919b08dbc 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/occupancy_grid_based_collision_detector/occupancy_grid_based_collision_detector.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/occupancy_grid_based_collision_detector/occupancy_grid_based_collision_detector.cpp @@ -21,9 +21,9 @@ namespace autoware::behavior_path_planner { -using autoware_universe_utils::createQuaternionFromYaw; -using autoware_universe_utils::normalizeRadian; -using autoware_universe_utils::transformPose; +using autoware::universe_utils::createQuaternionFromYaw; +using autoware::universe_utils::normalizeRadian; +using autoware::universe_utils::transformPose; int discretizeAngle(const double theta, const int theta_size) { diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/geometric_parallel_parking.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/geometric_parallel_parking.cpp index 92d955edb4542..7afce28019c3f 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/geometric_parallel_parking.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/geometric_parallel_parking.cpp @@ -20,8 +20,8 @@ #include "autoware/universe_utils/geometry/geometry.hpp" #include "autoware/universe_utils/math/unit_conversion.hpp" +#include #include -#include #include @@ -31,11 +31,11 @@ #include #include -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::inverseTransformPoint; -using autoware_universe_utils::normalizeRadian; -using autoware_universe_utils::transformPose; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::inverseTransformPoint; +using autoware::universe_utils::normalizeRadian; +using autoware::universe_utils::transformPose; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using lanelet::utils::getArcCoordinates; @@ -70,7 +70,7 @@ PathWithLaneId GeometricParallelParking::getFullPath() const } PathWithLaneId filtered_path = path; - filtered_path.points = autoware_motion_utils::removeOverlapPoints(filtered_path.points); + filtered_path.points = autoware::motion_utils::removeOverlapPoints(filtered_path.points); return filtered_path; } @@ -132,10 +132,10 @@ std::vector GeometricParallelParking::generatePullOverPaths( // check the continuity of straight path and arc path const Pose & road_path_last_pose = straight_path.points.back().point.pose; const Pose & arc_path_first_pose = arc_paths.front().points.front().point.pose; - const double yaw_diff = std::abs(autoware_universe_utils::normalizeRadian( + const double yaw_diff = std::abs(autoware::universe_utils::normalizeRadian( tf2::getYaw(road_path_last_pose.orientation) - tf2::getYaw(arc_path_first_pose.orientation))); const double distance = calcDistance2d(road_path_last_pose, arc_path_first_pose); - if (yaw_diff > autoware_universe_utils::deg2rad(5.0) || distance > 0.1) { + if (yaw_diff > autoware::universe_utils::deg2rad(5.0) || distance > 0.1) { return std::vector{}; } @@ -282,10 +282,10 @@ bool GeometricParallelParking::planPullOut( // check the continuity of straight path and arc path const Pose & road_path_first_pose = road_center_line_path.points.front().point.pose; const Pose & arc_path_last_pose = arc_paths.back().points.back().point.pose; - const double yaw_diff = std::abs(autoware_universe_utils::normalizeRadian( + const double yaw_diff = std::abs(autoware::universe_utils::normalizeRadian( tf2::getYaw(road_path_first_pose.orientation) - tf2::getYaw(arc_path_last_pose.orientation))); const double distance = calcDistance2d(road_path_first_pose, arc_path_last_pose); - if (yaw_diff > autoware_universe_utils::deg2rad(5.0) || distance > 0.1) { + if (yaw_diff > autoware::universe_utils::deg2rad(5.0) || distance > 0.1) { continue; } @@ -299,7 +299,7 @@ bool GeometricParallelParking::planPullOut( paths.back().points.end(), road_center_line_path.points.begin() + 1, // to avoid overlapped point road_center_line_path.points.end()); - paths.back().points = autoware_motion_utils::removeOverlapPoints(paths.back().points); + paths.back().points = autoware::motion_utils::removeOverlapPoints(paths.back().points); // if the end point is the goal, set the velocity to 0 if (path_terminal_is_goal) { @@ -399,7 +399,7 @@ std::vector GeometricParallelParking::planOneTrial( // combine road and shoulder lanes // cut the road lanes up to start_pose to prevent unintended processing for overlapped lane lanelet::ConstLanelets lanes{}; - autoware_universe_utils::Point2d start_point2d(start_pose.position.x, start_pose.position.y); + autoware::universe_utils::Point2d start_point2d(start_pose.position.x, start_pose.position.y); for (const auto & lane : road_lanes) { if (boost::geometry::within(start_point2d, lane.polygon2d().basicPolygon())) { lanes.push_back(lane); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/utils.cpp index 3a9f70c16fb35..7ca11e7d7fd20 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/parking_departure/utils.cpp @@ -17,12 +17,12 @@ #include "autoware/behavior_path_planner_common/utils/utils.hpp" #include -#include +#include namespace autoware::behavior_path_planner::utils::parking_departure { -using autoware_motion_utils::calcDecelDistWithJerkAndAccConstraints; +using autoware::motion_utils::calcDecelDistWithJerkAndAccConstraints; std::optional calcFeasibleDecelDistance( std::shared_ptr planner_data, const double acc_lim, const double jerk_lim, @@ -58,7 +58,7 @@ void modifyVelocityByDirection( auto pair_itr = std::begin(terminal_vel_acc_pairs); for (; path_itr != std::end(paths); ++path_itr, ++pair_itr) { - const auto is_driving_forward = autoware_motion_utils::isDrivingForward(path_itr->points); + const auto is_driving_forward = autoware::motion_utils::isDrivingForward(path_itr->points); // If the number of points in the path is less than 2, don't insert stop velocity and // set pairs_terminal_velocity_and_accel to 0 @@ -144,7 +144,7 @@ std::optional generateFeasibleStopPath( } // set stop point - const auto stop_idx = autoware_motion_utils::insertStopPoint( + const auto stop_idx = autoware::motion_utils::insertStopPoint( planner_data->self_odometry->pose.pose, *min_stop_distance, current_path.points); if (!stop_idx) { diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/objects_filtering.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/objects_filtering.cpp index ca72be6fa1568..469be03eb905c 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/objects_filtering.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/objects_filtering.cpp @@ -39,7 +39,7 @@ bool position_filter( const geometry_msgs::msg::Point & current_pose, const double forward_distance, const double backward_distance) { - const auto dist_ego_to_obj = autoware_motion_utils::calcSignedArcLength( + const auto dist_ego_to_obj = autoware::motion_utils::calcSignedArcLength( path_points, current_pose, object.kinematics.initial_pose_with_covariance.pose.position); return (backward_distance < dist_ego_to_obj && dist_ego_to_obj < forward_distance); @@ -71,16 +71,16 @@ bool isPolygonOverlapLanelet(const PredictedObject & object, const lanelet::Cons } bool isPolygonOverlapLanelet( - const PredictedObject & object, const autoware_universe_utils::Polygon2d & lanelet_polygon) + const PredictedObject & object, const autoware::universe_utils::Polygon2d & lanelet_polygon) { - const auto object_polygon = autoware_universe_utils::toPolygon2d(object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object); return !boost::geometry::disjoint(lanelet_polygon, object_polygon); } bool isPolygonOverlapLanelet( const PredictedObject & object, const lanelet::BasicPolygon2d & lanelet_polygon) { - const auto object_polygon = autoware_universe_utils::toPolygon2d(object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object); return !boost::geometry::disjoint(lanelet_polygon, object_polygon); } @@ -273,8 +273,8 @@ std::vector createPredictedPath( length = current_velocity * t_with_delay + 0.5 * acceleration * t_with_delay * t_with_delay; } - const auto pose = - autoware_motion_utils::calcInterpolatedPose(path_points, vehicle_pose_frenet.length + length); + const auto pose = autoware::motion_utils::calcInterpolatedPose( + path_points, vehicle_pose_frenet.length + length); predicted_path.emplace_back(t, pose, velocity); } @@ -315,7 +315,7 @@ ExtendedPredictedObject transform( for (double t = 0.0; t < safety_check_time_horizon + 1e-3; t += safety_check_time_resolution) { const auto obj_pose = object_recognition_utils::calcInterpolatedPose(path, t); if (obj_pose) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(*obj_pose, object.shape); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(*obj_pose, object.shape); extended_object.predicted_paths[i].path.emplace_back( t, *obj_pose, obj_velocity, obj_polygon); } diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/safety_check.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/safety_check.cpp index 57ce48c540046..b05d869cca6b5 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/safety_check.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_safety_checker/safety_check.cpp @@ -26,6 +26,9 @@ #include #include +#include + +#include #include namespace autoware::behavior_path_planner::utils::path_safety_checker @@ -55,13 +58,13 @@ bool isTargetObjectFront( { const double base_to_front = vehicle_info.max_longitudinal_offset_m; const auto ego_offset_pose = - autoware_universe_utils::calcOffsetPose(ego_pose, base_to_front, 0.0, 0.0); + autoware::universe_utils::calcOffsetPose(ego_pose, base_to_front, 0.0, 0.0); // check all edges in the polygon const auto obj_polygon_outer = obj_polygon.outer(); for (const auto & obj_edge : obj_polygon_outer) { - const auto obj_point = autoware_universe_utils::createPoint(obj_edge.x(), obj_edge.y(), 0.0); - if (autoware_universe_utils::calcLongitudinalDeviation(ego_offset_pose, obj_point) > 0.0) { + const auto obj_point = autoware::universe_utils::createPoint(obj_edge.x(), obj_edge.y(), 0.0); + if (autoware::universe_utils::calcLongitudinalDeviation(ego_offset_pose, obj_point) > 0.0) { return true; } } @@ -75,13 +78,13 @@ bool isTargetObjectFront( { const double base_to_front = vehicle_info.max_longitudinal_offset_m; const auto ego_point = - autoware_universe_utils::calcOffsetPose(ego_pose, base_to_front, 0.0, 0.0).position; + autoware::universe_utils::calcOffsetPose(ego_pose, base_to_front, 0.0, 0.0).position; // check all edges in the polygon const auto obj_polygon_outer = obj_polygon.outer(); for (const auto & obj_edge : obj_polygon_outer) { - const auto obj_point = autoware_universe_utils::createPoint(obj_edge.x(), obj_edge.y(), 0.0); - if (autoware_motion_utils::isTargetPointFront(path.points, ego_point, obj_point)) { + const auto obj_point = autoware::universe_utils::createPoint(obj_edge.x(), obj_edge.y(), 0.0); + if (autoware::motion_utils::isTargetPointFront(path.points, ego_point, obj_point)) { return true; } } @@ -111,13 +114,13 @@ Polygon2d createExtendedPolygon( } const auto p1 = - autoware_universe_utils::calcOffsetPose(base_link_pose, forward_lon_offset, lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(base_link_pose, forward_lon_offset, lat_offset, 0.0); const auto p2 = - autoware_universe_utils::calcOffsetPose(base_link_pose, forward_lon_offset, -lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(base_link_pose, forward_lon_offset, -lat_offset, 0.0); const auto p3 = - autoware_universe_utils::calcOffsetPose(base_link_pose, backward_lon_offset, -lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(base_link_pose, backward_lon_offset, -lat_offset, 0.0); const auto p4 = - autoware_universe_utils::calcOffsetPose(base_link_pose, backward_lon_offset, lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(base_link_pose, backward_lon_offset, lat_offset, 0.0); Polygon2d polygon; appendPointToPolygon(polygon, p1.position); @@ -125,16 +128,16 @@ Polygon2d createExtendedPolygon( appendPointToPolygon(polygon, p3.position); appendPointToPolygon(polygon, p4.position); appendPointToPolygon(polygon, p1.position); - return autoware_universe_utils::isClockwise(polygon) + return autoware::universe_utils::isClockwise(polygon) ? polygon - : autoware_universe_utils::inverseClockwise(polygon); + : autoware::universe_utils::inverseClockwise(polygon); } Polygon2d createExtendedPolygon( const Pose & obj_pose, const Shape & shape, const double lon_length, const double lat_margin, const bool is_stopped_obj, CollisionCheckDebug & debug) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(obj_pose, shape); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(obj_pose, shape); if (obj_polygon.outer().empty()) { return obj_polygon; } @@ -145,8 +148,8 @@ Polygon2d createExtendedPolygon( double min_y = std::numeric_limits::max(); const auto obj_polygon_outer = obj_polygon.outer(); for (const auto & polygon_p : obj_polygon_outer) { - const auto obj_p = autoware_universe_utils::createPoint(polygon_p.x(), polygon_p.y(), 0.0); - const auto transformed_p = autoware_universe_utils::inverseTransformPoint(obj_p, obj_pose); + const auto obj_p = autoware::universe_utils::createPoint(polygon_p.x(), polygon_p.y(), 0.0); + const auto transformed_p = autoware::universe_utils::inverseTransformPoint(obj_p, obj_pose); max_x = std::max(transformed_p.x, max_x); min_x = std::min(transformed_p.x, min_x); @@ -168,13 +171,13 @@ Polygon2d createExtendedPolygon( } const auto p1 = - autoware_universe_utils::calcOffsetPose(obj_pose, forward_lon_offset, left_lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(obj_pose, forward_lon_offset, left_lat_offset, 0.0); const auto p2 = - autoware_universe_utils::calcOffsetPose(obj_pose, forward_lon_offset, right_lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(obj_pose, forward_lon_offset, right_lat_offset, 0.0); const auto p3 = - autoware_universe_utils::calcOffsetPose(obj_pose, backward_lon_offset, right_lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(obj_pose, backward_lon_offset, right_lat_offset, 0.0); const auto p4 = - autoware_universe_utils::calcOffsetPose(obj_pose, backward_lon_offset, left_lat_offset, 0.0); + autoware::universe_utils::calcOffsetPose(obj_pose, backward_lon_offset, left_lat_offset, 0.0); Polygon2d polygon; appendPointToPolygon(polygon, p1.position); @@ -182,9 +185,9 @@ Polygon2d createExtendedPolygon( appendPointToPolygon(polygon, p3.position); appendPointToPolygon(polygon, p4.position); appendPointToPolygon(polygon, p1.position); - return autoware_universe_utils::isClockwise(polygon) + return autoware::universe_utils::isClockwise(polygon) ? polygon - : autoware_universe_utils::inverseClockwise(polygon); + : autoware::universe_utils::inverseClockwise(polygon); } Polygon2d createExtendedPolygonAlongPath( @@ -208,7 +211,7 @@ Polygon2d createExtendedPolygonAlongPath( debug.lat_offset = lat_offset; } - const auto lon_offset_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto lon_offset_pose = autoware::motion_utils::calcLongitudinalOffsetPose( planned_path.points, base_link_pose.position, lon_length); if (!lon_offset_pose.has_value()) { return createExtendedPolygon( @@ -216,57 +219,57 @@ Polygon2d createExtendedPolygonAlongPath( } const size_t start_idx = - autoware_motion_utils::findNearestSegmentIndex(planned_path.points, base_link_pose.position); - const size_t end_idx = autoware_motion_utils::findNearestSegmentIndex( + autoware::motion_utils::findNearestSegmentIndex(planned_path.points, base_link_pose.position); + const size_t end_idx = autoware::motion_utils::findNearestSegmentIndex( planned_path.points, lon_offset_pose.value().position); Polygon2d polygon; { - const auto p_offset = - autoware_universe_utils::calcOffsetPose(base_link_pose, backward_lon_offset, lat_offset, 0.0); + const auto p_offset = autoware::universe_utils::calcOffsetPose( + base_link_pose, backward_lon_offset, lat_offset, 0.0); appendPointToPolygon(polygon, p_offset.position); } for (size_t i = start_idx + 1; i < end_idx + 1; ++i) { - const auto p = autoware_universe_utils::getPose(planned_path.points.at(i)); - const auto p_offset = autoware_universe_utils::calcOffsetPose(p, 0.0, lat_offset, 0.0); + const auto p = autoware::universe_utils::getPose(planned_path.points.at(i)); + const auto p_offset = autoware::universe_utils::calcOffsetPose(p, 0.0, lat_offset, 0.0); appendPointToPolygon(polygon, p_offset.position); } { - const auto p_offset = autoware_universe_utils::calcOffsetPose( + const auto p_offset = autoware::universe_utils::calcOffsetPose( lon_offset_pose.value(), base_to_front, lat_offset, 0.0); appendPointToPolygon(polygon, p_offset.position); } { - const auto p_offset = autoware_universe_utils::calcOffsetPose( + const auto p_offset = autoware::universe_utils::calcOffsetPose( lon_offset_pose.value(), base_to_front, -lat_offset, 0.0); appendPointToPolygon(polygon, p_offset.position); } for (size_t i = end_idx; i > start_idx; --i) { - const auto p = autoware_universe_utils::getPose(planned_path.points.at(i)); - const auto p_offset = autoware_universe_utils::calcOffsetPose(p, 0.0, -lat_offset, 0.0); + const auto p = autoware::universe_utils::getPose(planned_path.points.at(i)); + const auto p_offset = autoware::universe_utils::calcOffsetPose(p, 0.0, -lat_offset, 0.0); appendPointToPolygon(polygon, p_offset.position); } { - const auto p_offset = autoware_universe_utils::calcOffsetPose( + const auto p_offset = autoware::universe_utils::calcOffsetPose( base_link_pose, backward_lon_offset, -lat_offset, 0.0); appendPointToPolygon(polygon, p_offset.position); } { - const auto p_offset = - autoware_universe_utils::calcOffsetPose(base_link_pose, backward_lon_offset, lat_offset, 0.0); + const auto p_offset = autoware::universe_utils::calcOffsetPose( + base_link_pose, backward_lon_offset, lat_offset, 0.0); appendPointToPolygon(polygon, p_offset.position); } - return autoware_universe_utils::isClockwise(polygon) + return autoware::universe_utils::isClockwise(polygon) ? polygon - : autoware_universe_utils::inverseClockwise(polygon); + : autoware::universe_utils::inverseClockwise(polygon); } std::vector createExtendedPolygonsFromPoseWithVelocityStamped( @@ -283,7 +286,7 @@ std::vector createExtendedPolygonsFromPoseWithVelocityStamped( const double width = vehicle_info.vehicle_width_m + lat_margin * 2; const auto polygon = - autoware_universe_utils::toFootprint(pose, base_to_front, base_to_rear, width); + autoware::universe_utils::toFootprint(pose, base_to_front, base_to_rear, width); polygons.push_back(polygon); } @@ -350,7 +353,7 @@ std::optional calcInterpolatedPoseWithVelocity( const double time_step = pt.time - prev_pt.time; const double ratio = std::clamp(offset / time_step, 0.0, 1.0); const auto interpolated_pose = - autoware_universe_utils::calcInterpolatedPose(prev_pt.pose, pt.pose, ratio, false); + autoware::universe_utils::calcInterpolatedPose(prev_pt.pose, pt.pose, ratio, false); const double interpolated_velocity = interpolation::lerp(prev_pt.velocity, pt.velocity, ratio); return PoseWithVelocityStamped{relative_time, interpolated_pose, interpolated_velocity}; @@ -378,7 +381,7 @@ std::optional getInterpolatedPoseWithVelocity const auto & velocity = interpolation_result->velocity; const auto ego_polygon = - autoware_universe_utils::toFootprint(pose, base_to_front, base_to_rear, width); + autoware::universe_utils::toFootprint(pose, base_to_front, base_to_rear, width); return PoseWithVelocityAndPolygonStamped{current_time, pose, velocity, ego_polygon}; } @@ -406,7 +409,7 @@ std::optional getInterpolatedPoseWithVelocity const auto & pose = interpolation_result->pose; const auto & velocity = interpolation_result->velocity; - const auto obj_polygon = autoware_universe_utils::toPolygon2d(pose, shape); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(pose, shape); return PoseWithVelocityAndPolygonStamped{current_time, pose, velocity, obj_polygon}; } @@ -482,7 +485,8 @@ bool checkSafetyWithRSS( const std::vector & ego_predicted_path, const std::vector & objects, CollisionCheckDebugMap & debug_map, const BehaviorPathPlannerParameters & parameters, const RSSparams & rss_params, - const bool check_all_predicted_path, const double hysteresis_factor) + const bool check_all_predicted_path, const double hysteresis_factor, + const double yaw_difference_th) { // Check for collisions with each predicted path of the object const bool is_safe = !std::any_of(objects.begin(), objects.end(), [&](const auto & object) { @@ -495,7 +499,7 @@ bool checkSafetyWithRSS( obj_predicted_paths.begin(), obj_predicted_paths.end(), [&](const auto & obj_path) { const bool has_collision = !utils::path_safety_checker::checkCollision( planned_path, ego_predicted_path, object, obj_path, parameters, rss_params, - hysteresis_factor, current_debug_data.second); + hysteresis_factor, yaw_difference_th, current_debug_data.second); utils::path_safety_checker::updateCollisionCheckDebugMap( debug_map, current_debug_data, !has_collision); @@ -559,11 +563,12 @@ bool checkCollision( const ExtendedPredictedObject & target_object, const PredictedPathWithPolygon & target_object_path, const BehaviorPathPlannerParameters & common_parameters, const RSSparams & rss_parameters, - const double hysteresis_factor, CollisionCheckDebug & debug) + const double hysteresis_factor, const double yaw_difference_th, CollisionCheckDebug & debug) { const auto collided_polygons = getCollidedPolygons( planned_path, predicted_ego_path, target_object, target_object_path, common_parameters, - rss_parameters, hysteresis_factor, std::numeric_limits::max(), debug); + rss_parameters, hysteresis_factor, std::numeric_limits::max(), yaw_difference_th, + debug); return collided_polygons.empty(); } @@ -573,7 +578,8 @@ std::vector getCollidedPolygons( const ExtendedPredictedObject & target_object, const PredictedPathWithPolygon & target_object_path, const BehaviorPathPlannerParameters & common_parameters, const RSSparams & rss_parameters, - double hysteresis_factor, const double max_velocity_limit, CollisionCheckDebug & debug) + double hysteresis_factor, const double max_velocity_limit, const double yaw_difference_th, + CollisionCheckDebug & debug) { { debug.ego_predicted_path = predicted_ego_path; @@ -604,6 +610,11 @@ std::vector getCollidedPolygons( const auto & ego_polygon = interpolated_data->poly; const auto ego_velocity = std::min(interpolated_data->velocity, max_velocity_limit); + const double ego_yaw = tf2::getYaw(ego_pose.orientation); + const double object_yaw = tf2::getYaw(obj_pose.orientation); + const double yaw_difference = autoware::universe_utils::normalizeRadian(ego_yaw - object_yaw); + if (std::abs(yaw_difference) > yaw_difference_th) continue; + // check overlap if (boost::geometry::overlaps(ego_polygon, obj_polygon)) { debug.unsafe_reason = "overlap_polygon"; @@ -692,10 +703,10 @@ CollisionCheckDebugPair createObjectDebug(const ExtendedPredictedObject & obj) CollisionCheckDebug debug; debug.current_obj_pose = obj.initial_pose.pose; debug.extended_obj_polygon = - autoware_universe_utils::toPolygon2d(obj.initial_pose.pose, obj.shape); + autoware::universe_utils::toPolygon2d(obj.initial_pose.pose, obj.shape); debug.obj_shape = obj.shape; debug.current_twist = obj.initial_twist.twist; - return {autoware_universe_utils::toBoostUUID(obj.uuid), debug}; + return {autoware::universe_utils::toBoostUUID(obj.uuid), debug}; } void updateCollisionCheckDebugMap( diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_shifter/path_shifter.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_shifter/path_shifter.cpp index fa2c45b74942e..a0ae99d54df0b 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_shifter/path_shifter.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_shifter/path_shifter.cpp @@ -17,8 +17,8 @@ #include "autoware/behavior_path_planner_common/utils/path_utils.hpp" #include +#include #include -#include #include #include @@ -51,10 +51,10 @@ std::string toStr(const std::vector & v) namespace autoware::behavior_path_planner { -using autoware_motion_utils::findNearestIndex; -using autoware_motion_utils::insertOrientation; -using autoware_motion_utils::removeFirstInvalidOrientationPoints; -using autoware_motion_utils::removeOverlapPoints; +using autoware::motion_utils::findNearestIndex; +using autoware::motion_utils::insertOrientation; +using autoware::motion_utils::removeFirstInvalidOrientationPoints; +using autoware::motion_utils::removeOverlapPoints; void PathShifter::setPath(const PathWithLaneId & path) { diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_utils.cpp index 1e2ceac5cd19a..79b4ba8e16344 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/path_utils.cpp @@ -20,9 +20,9 @@ #include #include #include +#include +#include #include -#include -#include #include @@ -49,8 +49,8 @@ std::vector calcPathArcLengthArray( out.push_back(sum); for (size_t i = bounded_start + 1; i < bounded_end; ++i) { - sum += - autoware_universe_utils::calcDistance2d(path.points.at(i).point, path.points.at(i - 1).point); + sum += autoware::universe_utils::calcDistance2d( + path.points.at(i).point, path.points.at(i - 1).point); out.push_back(sum); } return out; @@ -98,7 +98,7 @@ PathWithLaneId resamplePathWithSpline( // Get lane ids that are not duplicated std::vector s_in; std::unordered_set unique_lane_ids; - const auto s_vec = autoware_motion_utils::calcSignedArcLengthPartialSum( + const auto s_vec = autoware::motion_utils::calcSignedArcLengthPartialSum( transformed_path, 0, transformed_path.size()); for (size_t i = 0; i < path.points.size(); ++i) { const double s = s_vec.at(i); @@ -130,7 +130,7 @@ PathWithLaneId resamplePathWithSpline( // Insert Stop Point const auto closest_stop_dist = - autoware_motion_utils::calcDistanceToForwardStopPoint(transformed_path); + autoware::motion_utils::calcDistanceToForwardStopPoint(transformed_path); if (closest_stop_dist) { const auto close_indices = find_almost_same_values(s_out, *closest_stop_dist); if (close_indices) { @@ -153,7 +153,7 @@ PathWithLaneId resamplePathWithSpline( std::sort(s_out.begin(), s_out.end()); - return autoware_motion_utils::resamplePath(path, s_out); + return autoware::motion_utils::resamplePath(path, s_out); } size_t getIdxByArclength( @@ -163,7 +163,7 @@ size_t getIdxByArclength( throw std::runtime_error("[getIdxByArclength] path points must be > 0"); } - using autoware_universe_utils::calcDistance2d; + using autoware::universe_utils::calcDistance2d; double sum_length = 0.0; if (signed_arc >= 0.0) { for (size_t i = target_idx; i < path.points.size() - 1; ++i) { @@ -185,7 +185,7 @@ size_t getIdxByArclength( return 0; } -// TODO(murooka) This function should be replaced with autoware_motion_utils::cropPoints +// TODO(murooka) This function should be replaced with autoware::motion_utils::cropPoints void clipPathLength( PathWithLaneId & path, const size_t target_idx, const double forward, const double backward) { @@ -202,7 +202,7 @@ void clipPathLength( path.points = clipped_points; } -// TODO(murooka) This function should be replaced with autoware_motion_utils::cropPoints +// TODO(murooka) This function should be replaced with autoware::motion_utils::cropPoints void clipPathLength( PathWithLaneId & path, const size_t target_idx, const BehaviorPathPlannerParameters & params) { @@ -412,7 +412,7 @@ std::vector dividePath( void correctDividedPathVelocity(std::vector & divided_paths) { for (auto & path : divided_paths) { - const auto is_driving_forward = autoware_motion_utils::isDrivingForward(path.points); + const auto is_driving_forward = autoware::motion_utils::isDrivingForward(path.points); // If the number of points in the path is less than 2, don't correct the velocity if (!is_driving_forward) { continue; @@ -471,14 +471,15 @@ std::vector interpolatePose( { std::vector interpolated_poses{}; // output - const std::vector base_s{ - 0, autoware_universe_utils::calcDistance2d(start_pose.position, end_pose.position)}; + const double distance = + autoware::universe_utils::calcDistance2d(start_pose.position, end_pose.position); + const std::vector base_s{0.0, distance}; const std::vector base_x{start_pose.position.x, end_pose.position.x}; const std::vector base_y{start_pose.position.y, end_pose.position.y}; std::vector new_s; constexpr double eps = 0.3; // prevent overlapping - for (double s = eps; s < base_s.back() - eps; s += resample_interval) { + for (double s = eps; s < distance - eps; s += resample_interval) { new_s.push_back(s); } @@ -490,8 +491,8 @@ std::vector interpolatePose( std::sin(tf2::getYaw(end_pose.orientation)), new_s); for (size_t i = 0; i < interpolated_x.size(); ++i) { Pose pose{}; - pose = autoware_universe_utils::calcInterpolatedPose( - end_pose, start_pose, (base_s.back() - new_s.at(i)) / base_s.back()); + pose = autoware::universe_utils::calcInterpolatedPose( + end_pose, start_pose, (distance - new_s.at(i)) / distance); pose.position.x = interpolated_x.at(i); pose.position.y = interpolated_y.at(i); pose.position.z = end_pose.position.z; @@ -509,14 +510,14 @@ Pose getUnshiftedEgoPose(const Pose & ego_pose, const ShiftedPath & prev_path) // un-shifted for current ideal pose const auto closest_idx = - autoware_motion_utils::findNearestIndex(prev_path.path.points, ego_pose.position); + autoware::motion_utils::findNearestIndex(prev_path.path.points, ego_pose.position); // NOTE: Considering avoidance by motion, we set unshifted_pose as previous path instead of // ego_pose. auto unshifted_pose = - autoware_motion_utils::calcInterpolatedPoint(prev_path.path, ego_pose).point.pose; + autoware::motion_utils::calcInterpolatedPoint(prev_path.path, ego_pose).point.pose; - unshifted_pose = autoware_universe_utils::calcOffsetPose( + unshifted_pose = autoware::universe_utils::calcOffsetPose( unshifted_pose, 0.0, -prev_path.shift_length.at(closest_idx), 0.0); unshifted_pose.orientation = ego_pose.orientation; @@ -574,7 +575,7 @@ PathWithLaneId combinePath(const PathWithLaneId & path1, const PathWithLaneId & path.points.insert(path.points.end(), next(path2.points.begin()), path2.points.end()); PathWithLaneId filtered_path = path; - filtered_path.points = autoware_motion_utils::removeOverlapPoints(filtered_path.points); + filtered_path.points = autoware::motion_utils::removeOverlapPoints(filtered_path.points); return filtered_path; } @@ -616,10 +617,10 @@ BehaviorModuleOutput getReferencePath( // NOTE: In order to keep backward_path_length at least, resampling interval is added to the // backward. const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( reference_path.points, no_shift_pose, p.ego_nearest_dist_threshold, p.ego_nearest_yaw_threshold); - reference_path.points = autoware_motion_utils::cropPoints( + reference_path.points = autoware::motion_utils::cropPoints( reference_path.points, no_shift_pose.position, current_seg_idx, p.forward_path_length, p.backward_path_length + p.input_path_interval); diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/traffic_light_utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/traffic_light_utils.cpp index db41e59e63dbb..40802558c0b38 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/traffic_light_utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/traffic_light_utils.cpp @@ -18,7 +18,7 @@ namespace autoware::behavior_path_planner::utils::traffic_light { -using autoware_motion_utils::calcSignedArcLength; +using autoware::motion_utils::calcSignedArcLength; double getDistanceToNextTrafficLight( const Pose & current_pose, const lanelet::ConstLanelets & lanelets) @@ -99,7 +99,7 @@ std::optional calcDistanceToRedTrafficLight( const auto z = 0.5 * (stop_line.front().z() + stop_line.back().z()); return calcSignedArcLength( - path.points, ego_pos, autoware_universe_utils::createPoint(x, y, z)); + path.points, ego_pos, autoware::universe_utils::createPoint(x, y, z)); } } diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/utils.cpp index c6a6256ef43c1..b7955da9a44f1 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/src/utils/utils.cpp @@ -21,9 +21,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include @@ -43,11 +43,11 @@ double calcInterpolatedZ( const tier4_planning_msgs::msg::PathWithLaneId & input, const geometry_msgs::msg::Point target_pos, const size_t seg_idx) { - const double closest_to_target_dist = autoware_motion_utils::calcSignedArcLength( + const double closest_to_target_dist = autoware::motion_utils::calcSignedArcLength( input.points, input.points.at(seg_idx).point.pose.position, target_pos); // TODO(murooka) implement calcSignedArcLength(points, idx, point) const double seg_dist = - autoware_motion_utils::calcSignedArcLength(input.points, seg_idx, seg_idx + 1); + autoware::motion_utils::calcSignedArcLength(input.points, seg_idx, seg_idx + 1); const double closest_z = input.points.at(seg_idx).point.pose.position.z; const double next_z = input.points.at(seg_idx + 1).point.pose.position.z; @@ -62,7 +62,7 @@ double calcInterpolatedVelocity( const tier4_planning_msgs::msg::PathWithLaneId & input, const size_t seg_idx) { const double seg_dist = - autoware_motion_utils::calcSignedArcLength(input.points, seg_idx, seg_idx + 1); + autoware::motion_utils::calcSignedArcLength(input.points, seg_idx, seg_idx + 1); const double closest_vel = input.points.at(seg_idx).point.longitudinal_velocity_mps; const double next_vel = input.points.at(seg_idx + 1).point.longitudinal_velocity_mps; @@ -73,10 +73,10 @@ double calcInterpolatedVelocity( namespace autoware::behavior_path_planner::utils { +using autoware::universe_utils::LineString2d; +using autoware::universe_utils::Point2d; using autoware_perception_msgs::msg::ObjectClassification; using autoware_perception_msgs::msg::Shape; -using autoware_universe_utils::LineString2d; -using autoware_universe_utils::Point2d; using geometry_msgs::msg::PoseWithCovarianceStamped; std::optional getPolygonByPoint( @@ -113,7 +113,7 @@ double getDistanceBetweenPredictedPaths( if (!ego_pose) { continue; } - double distance = autoware_universe_utils::calcDistance3d(*object_pose, *ego_pose); + double distance = autoware::universe_utils::calcDistance3d(*object_pose, *ego_pose); if (distance < min_distance) { min_distance = distance; } @@ -130,7 +130,7 @@ double getDistanceBetweenPredictedPathAndObject( double min_distance = std::numeric_limits::max(); rclcpp::Time ros_start_time = clock.now() + rclcpp::Duration::from_seconds(start_time); rclcpp::Time ros_end_time = clock.now() + rclcpp::Duration::from_seconds(end_time); - const auto obj_polygon = autoware_universe_utils::toPolygon2d(object); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(object); for (double t = start_time; t < end_time; t += resolution) { const auto ego_pose = object_recognition_utils::calcInterpolatedPose(ego_path, t); if (!ego_pose) { @@ -147,7 +147,7 @@ double getDistanceBetweenPredictedPathAndObject( } bool checkCollisionBetweenPathFootprintsAndObjects( - const autoware_universe_utils::LinearRing2d & local_vehicle_footprint, + const autoware::universe_utils::LinearRing2d & local_vehicle_footprint, const PathWithLaneId & ego_path, const PredictedObjects & dynamic_objects, const double margin) { for (const auto & p : ego_path.points) { @@ -160,14 +160,14 @@ bool checkCollisionBetweenPathFootprintsAndObjects( } bool checkCollisionBetweenFootprintAndObjects( - const autoware_universe_utils::LinearRing2d & local_vehicle_footprint, const Pose & ego_pose, + const autoware::universe_utils::LinearRing2d & local_vehicle_footprint, const Pose & ego_pose, const PredictedObjects & dynamic_objects, const double margin) { const auto vehicle_footprint = - transformVector(local_vehicle_footprint, autoware_universe_utils::pose2transform(ego_pose)); + transformVector(local_vehicle_footprint, autoware::universe_utils::pose2transform(ego_pose)); for (const auto & object : dynamic_objects.objects) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(object); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(object); const double distance = boost::geometry::distance(obj_polygon, vehicle_footprint); if (distance < margin) return true; } @@ -178,18 +178,18 @@ double calcLateralDistanceFromEgoToObject( const Pose & ego_pose, const double vehicle_width, const PredictedObject & dynamic_object) { double min_distance = std::numeric_limits::max(); - const auto obj_polygon = autoware_universe_utils::toPolygon2d(dynamic_object); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(dynamic_object); const auto vehicle_left_pose = - autoware_universe_utils::calcOffsetPose(ego_pose, 0, vehicle_width / 2, 0); + autoware::universe_utils::calcOffsetPose(ego_pose, 0, vehicle_width / 2, 0); const auto vehicle_right_pose = - autoware_universe_utils::calcOffsetPose(ego_pose, 0, -vehicle_width / 2, 0); + autoware::universe_utils::calcOffsetPose(ego_pose, 0, -vehicle_width / 2, 0); for (const auto & p : obj_polygon.outer()) { - const auto point = autoware_universe_utils::createPoint(p.x(), p.y(), 0.0); + const auto point = autoware::universe_utils::createPoint(p.x(), p.y(), 0.0); const double signed_distance_from_left = - autoware_universe_utils::calcLateralDeviation(vehicle_left_pose, point); + autoware::universe_utils::calcLateralDeviation(vehicle_left_pose, point); const double signed_distance_from_right = - autoware_universe_utils::calcLateralDeviation(vehicle_right_pose, point); + autoware::universe_utils::calcLateralDeviation(vehicle_right_pose, point); if (signed_distance_from_left < 0.0 && signed_distance_from_right > 0.0) { // point is between left and right @@ -208,21 +208,21 @@ double calcLongitudinalDistanceFromEgoToObject( const PredictedObject & dynamic_object) { double min_distance = std::numeric_limits::max(); - const auto obj_polygon = autoware_universe_utils::toPolygon2d(dynamic_object); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(dynamic_object); const auto vehicle_front_pose = - autoware_universe_utils::calcOffsetPose(ego_pose, base_link2front, 0, 0); + autoware::universe_utils::calcOffsetPose(ego_pose, base_link2front, 0, 0); const auto vehicle_rear_pose = - autoware_universe_utils::calcOffsetPose(ego_pose, base_link2rear, 0, 0); + autoware::universe_utils::calcOffsetPose(ego_pose, base_link2rear, 0, 0); for (const auto & p : obj_polygon.outer()) { - const auto point = autoware_universe_utils::createPoint(p.x(), p.y(), 0.0); + const auto point = autoware::universe_utils::createPoint(p.x(), p.y(), 0.0); // forward is positive const double signed_distance_from_front = - autoware_universe_utils::calcLongitudinalDeviation(vehicle_front_pose, point); + autoware::universe_utils::calcLongitudinalDeviation(vehicle_front_pose, point); // backward is positive const double signed_distance_from_rear = - -autoware_universe_utils::calcLongitudinalDeviation(vehicle_rear_pose, point); + -autoware::universe_utils::calcLongitudinalDeviation(vehicle_rear_pose, point); if (signed_distance_from_front < 0.0 && signed_distance_from_rear < 0.0) { // point is between front and rear @@ -254,7 +254,7 @@ std::vector calcObjectsDistanceToPath( { std::vector distance_array; for (const auto & obj : objects.objects) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(obj); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(obj); LineString2d ego_path_line; ego_path_line.reserve(ego_path.points.size()); for (const auto & p : ego_path.points) { @@ -290,7 +290,7 @@ std::optional findIndexOutOfGoalSearchRange( const auto & lane_ids = points.at(i).lane_ids; const double dist_to_goal = - autoware_universe_utils::calcDistance2d(points.at(i).point.pose, goal); + autoware::universe_utils::calcDistance2d(points.at(i).point.pose, goal); const bool is_goal_lane_id_in_point = std::find(lane_ids.begin(), lane_ids.end(), goal_lane_id) != lane_ids.end(); if (dist_to_goal < max_dist && dist_to_goal < min_dist && is_goal_lane_id_in_point) { @@ -307,7 +307,7 @@ std::optional findIndexOutOfGoalSearchRange( // find index out of goal search range size_t min_dist_out_of_range_index = min_dist_index; for (int i = min_dist_index; 0 <= i; --i) { - const double dist = autoware_universe_utils::calcDistance2d(points.at(i).point, goal); + const double dist = autoware::universe_utils::calcDistance2d(points.at(i).point, goal); min_dist_out_of_range_index = i; if (max_dist < dist) { break; @@ -343,7 +343,7 @@ bool setGoal( PathPointWithLaneId pre_refined_goal{}; constexpr double goal_to_pre_goal_distance = -1.0; pre_refined_goal.point.pose = - autoware_universe_utils::calcOffsetPose(goal, goal_to_pre_goal_distance, 0.0, 0.0); + autoware::universe_utils::calcOffsetPose(goal, goal_to_pre_goal_distance, 0.0, 0.0); const size_t closest_seg_idx_for_pre_goal = findNearestSegmentIndex(input.points, pre_refined_goal.point.pose, 3.0, M_PI_4); pre_refined_goal.point.pose.position.z = @@ -441,7 +441,7 @@ PathWithLaneId refinePathForGoal( { PathWithLaneId filtered_path = input; PathWithLaneId path_with_goal; - filtered_path.points = autoware_motion_utils::removeOverlapPoints(filtered_path.points); + filtered_path.points = autoware::motion_utils::removeOverlapPoints(filtered_path.points); // always set zero velocity at the end of path for safety if (!filtered_path.points.empty()) { @@ -484,7 +484,7 @@ bool isInLaneletWithYawThreshold( const double pose_yaw = tf2::getYaw(current_pose.orientation); const double lanelet_angle = lanelet::utils::getLaneletAngle(lanelet, current_pose.position); const double angle_diff = - std::abs(autoware_universe_utils::normalizeRadian(lanelet_angle - pose_yaw)); + std::abs(autoware::universe_utils::normalizeRadian(lanelet_angle - pose_yaw)); return (angle_diff < std::abs(yaw_threshold)) && lanelet::utils::isInLanelet(current_pose, lanelet, radius); @@ -511,7 +511,7 @@ bool isEgoOutOfRoute( } // If ego vehicle is over goal on goal lane, return true - const double yaw_threshold = autoware_universe_utils::deg2rad(90); + const double yaw_threshold = autoware::universe_utils::deg2rad(90); if ( closest_road_lane.id() == goal_lane.id() && isInLaneletWithYawThreshold(self_pose, goal_lane, yaw_threshold)) { @@ -564,7 +564,7 @@ bool isEgoWithinOriginalLane( const auto base_link2front = common_param.base_link2front; const auto base_link2rear = common_param.base_link2rear; const auto vehicle_width = common_param.vehicle_width; - const auto vehicle_poly = autoware_universe_utils::toFootprint( + const auto vehicle_poly = autoware::universe_utils::toFootprint( current_pose, base_link2front, base_link2rear, vehicle_width); // Check if the ego vehicle is entirely within the lane with a given outer margin. @@ -734,12 +734,11 @@ double getDistanceToCrosswalk( boost::geometry::intersection(centerline, polygon, points_intersection); for (const auto & point : points_intersection) { - lanelet::ConstLanelets lanelets = {llt}; Pose pose_point; pose_point.position.x = point.x(); pose_point.position.y = point.y(); const lanelet::ArcCoordinates & arc_crosswalk = - lanelet::utils::getArcCoordinates(lanelets, pose_point); + lanelet::utils::getArcCoordinates({llt}, pose_point); const double distance_to_crosswalk = arc_crosswalk.length; if (distance_to_crosswalk < min_distance_to_crosswalk) { @@ -782,7 +781,7 @@ PathPointWithLaneId insertStopPoint(const double length, PathWithLaneId & path) const size_t original_size = path.points.size(); // insert stop point - const auto insert_idx = autoware_motion_utils::insertStopPoint(length, path.points); + const auto insert_idx = autoware::motion_utils::insertStopPoint(length, path.points); if (!insert_idx) { return PathPointWithLaneId(); } @@ -851,16 +850,16 @@ std::optional getSignedDistanceFromBoundary( rear_left.y = vehicle_width / 2; front_left.x = base_link2front; front_left.y = vehicle_width / 2; - rear_corner_point = autoware_universe_utils::transformPoint(rear_left, vehicle_pose); - front_corner_point = autoware_universe_utils::transformPoint(front_left, vehicle_pose); + rear_corner_point = autoware::universe_utils::transformPoint(rear_left, vehicle_pose); + front_corner_point = autoware::universe_utils::transformPoint(front_left, vehicle_pose); } else { Point front_right, rear_right; rear_right.x = -base_link2rear; rear_right.y = -vehicle_width / 2; front_right.x = base_link2front; front_right.y = -vehicle_width / 2; - rear_corner_point = autoware_universe_utils::transformPoint(rear_right, vehicle_pose); - front_corner_point = autoware_universe_utils::transformPoint(front_right, vehicle_pose); + rear_corner_point = autoware::universe_utils::transformPoint(rear_right, vehicle_pose); + front_corner_point = autoware::universe_utils::transformPoint(front_right, vehicle_pose); } const auto combined_lane = lanelet::utils::combineLaneletsShape(lanelets); @@ -885,17 +884,17 @@ std::optional getSignedDistanceFromBoundary( const Point p2 = lanelet::utils::conversion::toGeomMsgPt(bound_line_2d[i + 1]); const Point inverse_p1 = - autoware_universe_utils::inverseTransformPoint(p1, vehicle_corner_pose); + autoware::universe_utils::inverseTransformPoint(p1, vehicle_corner_pose); const Point inverse_p2 = - autoware_universe_utils::inverseTransformPoint(p2, vehicle_corner_pose); + autoware::universe_utils::inverseTransformPoint(p2, vehicle_corner_pose); const double dx_p1 = inverse_p1.x; const double dx_p2 = inverse_p2.x; const double dy_p1 = inverse_p1.y; const double dy_p2 = inverse_p2.y; // Calculate the Euclidean distances between vehicle's corner and the current and next points. - const double distance1 = autoware_universe_utils::calcDistance2d(p1, vehicle_corner_point); - const double distance2 = autoware_universe_utils::calcDistance2d(p2, vehicle_corner_point); + const double distance1 = autoware::universe_utils::calcDistance2d(p1, vehicle_corner_point); + const double distance2 = autoware::universe_utils::calcDistance2d(p2, vehicle_corner_point); // If one of the bound points is behind and the other is in front of the vehicle corner point // and any of these points is closer than the current minimum distance, @@ -948,9 +947,9 @@ std::optional getSignedDistanceFromBoundary( bound_pose.orientation = vehicle_pose.orientation; const Point inverse_rear_point = - autoware_universe_utils::inverseTransformPoint(rear_corner_point, bound_pose); + autoware::universe_utils::inverseTransformPoint(rear_corner_point, bound_pose); const Point inverse_front_point = - autoware_universe_utils::inverseTransformPoint(front_corner_point, bound_pose); + autoware::universe_utils::inverseTransformPoint(front_corner_point, bound_pose); const double dx_rear = inverse_rear_point.x; const double dx_front = inverse_front_point.x; const double dy_rear = inverse_rear_point.y; @@ -1008,9 +1007,9 @@ Polygon2d toPolygon2d(const lanelet::ConstLanelet & lanelet) } polygon.outer().push_back(polygon.outer().front()); - return autoware_universe_utils::isClockwise(polygon) + return autoware::universe_utils::isClockwise(polygon) ? polygon - : autoware_universe_utils::inverseClockwise(polygon); + : autoware::universe_utils::inverseClockwise(polygon); } Polygon2d toPolygon2d(const lanelet::BasicPolygon2d & polygon) @@ -1021,8 +1020,9 @@ Polygon2d toPolygon2d(const lanelet::BasicPolygon2d & polygon) } ret.outer().push_back(ret.outer().front()); - return autoware_universe_utils::isClockwise(ret) ? ret - : autoware_universe_utils::inverseClockwise(ret); + return autoware::universe_utils::isClockwise(ret) + ? ret + : autoware::universe_utils::inverseClockwise(ret); } std::vector getTargetLaneletPolygons( @@ -1150,13 +1150,13 @@ PathWithLaneId getCenterLinePath( const auto raw_path_with_lane_id = route_handler.getCenterLinePath(lanelet_sequence, s_backward, s_forward, true); - auto resampled_path_with_lane_id = autoware_motion_utils::resamplePath( + auto resampled_path_with_lane_id = autoware::motion_utils::resamplePath( raw_path_with_lane_id, parameter.input_path_interval, parameter.enable_akima_spline_first); // convert centerline, which we consider as CoG center, to rear wheel center if (parameter.enable_cog_on_centerline) { const double rear_to_cog = parameter.vehicle_length / 2 - parameter.rear_overhang; - return autoware_motion_utils::convertToRearWheelCenter( + return autoware::motion_utils::convertToRearWheelCenter( resampled_path_with_lane_id, rear_to_cog); } @@ -1196,7 +1196,7 @@ PathWithLaneId setDecelerationVelocity( for (auto & point : reference_path.points) { const auto arclength_to_target = std::max( - 0.0, autoware_motion_utils::calcSignedArcLength( + 0.0, autoware::motion_utils::calcSignedArcLength( reference_path.points, point.point.pose.position, target_pose.position) + buffer); if (arclength_to_target > deceleration_interval) continue; @@ -1209,7 +1209,7 @@ PathWithLaneId setDecelerationVelocity( } const auto stop_point_length = - autoware_motion_utils::calcSignedArcLength(reference_path.points, 0, target_pose.position) + + autoware::motion_utils::calcSignedArcLength(reference_path.points, 0, target_pose.position) + buffer; constexpr double eps{0.01}; if (std::abs(target_velocity) < eps && stop_point_length > 0.0) { diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_drivable_area_expansion.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_drivable_area_expansion.cpp index bf69647304833..b6fee5efb3ef8 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_drivable_area_expansion.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_drivable_area_expansion.cpp @@ -16,7 +16,7 @@ #include "autoware/behavior_path_planner_common/utils/drivable_area_expansion/drivable_area_expansion.hpp" #include "autoware/behavior_path_planner_common/utils/drivable_area_expansion/path_projection.hpp" #include "autoware/behavior_path_planner_common/utils/drivable_area_expansion/types.hpp" -#include "lanelet2_extension/utility/message_conversion.hpp" +#include "autoware_lanelet2_extension/utility/message_conversion.hpp" #include #include diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_safety_check.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_safety_check.cpp index 543fbecd1b38b..85a80eac8f215 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_safety_check.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_safety_check.cpp @@ -28,9 +28,9 @@ constexpr double epsilon = 1e-6; using autoware::behavior_path_planner::utils::path_safety_checker::CollisionCheckDebug; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::Shape; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::Pose; using geometry_msgs::msg::Twist; @@ -47,8 +47,8 @@ TEST(BehaviorPathPlanningSafetyUtilsTest, createExtendedEgoPolygon) { Pose ego_pose; - ego_pose.position = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); - ego_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(0.0); + ego_pose.position = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); + ego_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(0.0); const double lon_length = 10.0; const double lat_margin = 2.0; @@ -75,8 +75,8 @@ TEST(BehaviorPathPlanningSafetyUtilsTest, createExtendedEgoPolygon) { Pose ego_pose; - ego_pose.position = autoware_universe_utils::createPoint(3.0, 4.0, 0.0); - ego_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(0.0); + ego_pose.position = autoware::universe_utils::createPoint(3.0, 4.0, 0.0); + ego_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(0.0); const double lon_length = 10.0; const double lat_margin = 2.0; @@ -103,9 +103,9 @@ TEST(BehaviorPathPlanningSafetyUtilsTest, createExtendedEgoPolygon) { Pose ego_pose; - ego_pose.position = autoware_universe_utils::createPoint(0.0, 0.0, 0.0); + ego_pose.position = autoware::universe_utils::createPoint(0.0, 0.0, 0.0); ego_pose.orientation = - autoware_universe_utils::createQuaternionFromYaw(autoware_universe_utils::deg2rad(60)); + autoware::universe_utils::createQuaternionFromYaw(autoware::universe_utils::deg2rad(60)); const double lon_length = 10.0; const double lat_margin = 2.0; @@ -134,13 +134,13 @@ TEST(BehaviorPathPlanningSafetyUtilsTest, createExtendedEgoPolygon) TEST(BehaviorPathPlanningSafetyUtilsTest, createExtendedObjPolygon) { using autoware::behavior_path_planner::utils::path_safety_checker::createExtendedPolygon; - using autoware_universe_utils::createPoint; - using autoware_universe_utils::createQuaternionFromYaw; + using autoware::universe_utils::createPoint; + using autoware::universe_utils::createQuaternionFromYaw; { Pose obj_pose; obj_pose.position = createPoint(0.0, 0.0, 0.0); - obj_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(0.0); + obj_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(0.0); Shape shape; shape.type = autoware_perception_msgs::msg::Shape::POLYGON; diff --git a/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_turn_signal.cpp b/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_turn_signal.cpp index 342ebc985a518..b6149e3b5f99c 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_turn_signal.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_planner_common/test/test_turn_signal.cpp @@ -26,9 +26,9 @@ using autoware::behavior_path_planner::PathWithLaneId; using autoware::behavior_path_planner::Pose; using autoware::behavior_path_planner::TurnSignalDecider; using autoware::behavior_path_planner::TurnSignalInfo; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromYaw; using autoware_planning_msgs::msg::PathPoint; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromYaw; using autoware_vehicle_msgs::msg::HazardLightsCommand; using autoware_vehicle_msgs::msg::TurnIndicatorsCommand; using geometry_msgs::msg::Point; @@ -106,7 +106,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(5.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -118,7 +118,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(34.99f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -130,7 +130,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(40.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -142,7 +142,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(45.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -154,7 +154,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(48.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -166,7 +166,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(48.1f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -178,7 +178,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(50.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -190,7 +190,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(50.1f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -202,7 +202,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(65.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -214,7 +214,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition1) { Pose current_pose = generateEgoSamplePose(65.1f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -255,7 +255,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition2) { Pose current_pose = generateEgoSamplePose(5.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -267,7 +267,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition2) { Pose current_pose = generateEgoSamplePose(34.99f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -279,7 +279,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition2) { Pose current_pose = generateEgoSamplePose(40.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -291,7 +291,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition2) { Pose current_pose = generateEgoSamplePose(45.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -303,7 +303,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition2) { Pose current_pose = generateEgoSamplePose(50.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -315,7 +315,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition2) { Pose current_pose = generateEgoSamplePose(50.1f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -327,7 +327,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition2) { Pose current_pose = generateEgoSamplePose(65.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -355,7 +355,6 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) TurnSignalInfo behavior_signal_info; behavior_signal_info.turn_signal.command = TurnIndicatorsCommand::ENABLE_RIGHT; - behavior_signal_info.turn_signal.command = TurnIndicatorsCommand::ENABLE_RIGHT; behavior_signal_info.desired_start_point.position = createPoint(5.0, 0.0, 0.0); behavior_signal_info.desired_start_point.orientation = createQuaternionFromYaw(0.0); behavior_signal_info.desired_end_point.position = createPoint(70.0, 0.0, 0.0); @@ -369,7 +368,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(5.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -381,7 +380,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(29.9f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -393,7 +392,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(30.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -405,7 +404,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(33.9f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -417,7 +416,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(35.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -429,7 +428,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(44.9f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -441,7 +440,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(45.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -453,7 +452,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(49.9f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -465,7 +464,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(50.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, @@ -477,7 +476,7 @@ TEST(BehaviorPathPlanningTurnSignal, Condition3) { Pose current_pose = generateEgoSamplePose(65.0f, 0.0f, 0.0); const size_t current_seg_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( path.points, current_pose, 3.0, 1.0); const auto result_signal = turn_signal_decider.resolve_turn_signal( path, current_pose, current_seg_idx, intersection_signal_info, behavior_signal_info, diff --git a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_module.hpp b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_module.hpp index 9ef227783bd9c..e82c4fd287432 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_module.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_module.hpp @@ -31,14 +31,14 @@ #include "autoware/universe_utils/system/stop_watch.hpp" #include "autoware_bezier_sampler/bezier_sampling.hpp" #include "autoware_frenet_planner/frenet_planner.hpp" +#include "autoware_lanelet2_extension/utility/query.hpp" +#include "autoware_lanelet2_extension/utility/utilities.hpp" #include "autoware_sampler_common/constraints/footprint.hpp" #include "autoware_sampler_common/constraints/hard_constraint.hpp" #include "autoware_sampler_common/constraints/soft_constraint.hpp" #include "autoware_sampler_common/structures.hpp" #include "autoware_sampler_common/transform/spline_transform.hpp" #include "autoware_vehicle_info_utils/vehicle_info_utils.hpp" -#include "lanelet2_extension/utility/query.hpp" -#include "lanelet2_extension/utility/utilities.hpp" #include "rclcpp/rclcpp.hpp" #include "tier4_planning_msgs/msg/lateral_offset.hpp" @@ -75,8 +75,8 @@ struct SamplingPlannerDebugData { std::vector sampled_candidates{}; size_t previous_sampled_candidates_nb = 0UL; - std::vector obstacles{}; - std::vector footprints{}; + std::vector obstacles{}; + std::vector footprints{}; }; class SamplingPlannerModule : public SceneModuleInterface { @@ -204,10 +204,10 @@ class SamplingPlannerModule : public SceneModuleInterface if (length_to_goal < epsilon) return isReferencePathSafe(); const auto nearest_index = - autoware_motion_utils::findNearestIndex(prev_module_reference_path->points, ego_pose); + autoware::motion_utils::findNearestIndex(prev_module_reference_path->points, ego_pose); if (!nearest_index) return false; auto toYaw = [](const geometry_msgs::msg::Quaternion & quat) -> double { - const auto rpy = autoware_universe_utils::getRPY(quat); + const auto rpy = autoware::universe_utils::getRPY(quat); return rpy.z; }; const auto quat = prev_module_reference_path->points[*nearest_index].point.pose.orientation; diff --git a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_parameters.hpp b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_parameters.hpp index 15a9e585a7690..f778eef981a92 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_parameters.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/sampling_planner_parameters.hpp @@ -21,11 +21,11 @@ #include namespace autoware::behavior_path_planner { -using autoware_universe_utils::LinearRing2d; -using autoware_universe_utils::MultiPoint2d; -using autoware_universe_utils::MultiPolygon2d; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; +using autoware::universe_utils::LinearRing2d; +using autoware::universe_utils::MultiPoint2d; +using autoware::universe_utils::MultiPolygon2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; struct SamplingPlannerParameters { // constraints.hard diff --git a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/util.hpp b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/util.hpp index c43d1fe601b5f..4408645b26095 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/util.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/include/autoware/behavior_path_sampling_planner_module/util.hpp @@ -101,7 +101,7 @@ inline autoware::sampler_common::State getInitialState( { autoware::sampler_common::State initial_state; Point2d initial_state_pose{pose.position.x, pose.position.y}; - const auto rpy = autoware_universe_utils::getRPY(pose.orientation); + const auto rpy = autoware::universe_utils::getRPY(pose.orientation); initial_state.pose = initial_state_pose; initial_state.frenet = reference_spline.frenet({pose.position.x, pose.position.y}); initial_state.heading = rpy.z; diff --git a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/package.xml b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/package.xml index aab393f4bdb5a..9ede8342856a6 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/package.xml +++ b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/package.xml @@ -16,6 +16,7 @@ autoware_behavior_path_planner_common autoware_bezier_sampler autoware_frenet_planner + autoware_lanelet2_extension autoware_motion_utils autoware_path_sampler autoware_perception_msgs @@ -27,7 +28,6 @@ autoware_vehicle_msgs geometry_msgs interpolation - lanelet2_extension pluginlib rclcpp rclcpp_components diff --git a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/manager.cpp index 6ffd3ff116284..af8a538f894cc 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/manager.cpp @@ -77,7 +77,7 @@ void SamplingPlannerModuleManager::init(rclcpp::Node * node) void SamplingPlannerModuleManager::updateModuleParams( [[maybe_unused]] const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; auto & p = parameters_; diff --git a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/sampling_planner_module.cpp b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/sampling_planner_module.cpp index 0e8e56489d6d4..526a761e6957a 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/sampling_planner_module.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_sampling_planner_module/src/sampling_planner_module.cpp @@ -16,13 +16,13 @@ namespace autoware::behavior_path_planner { -using autoware_motion_utils::calcSignedArcLength; -using autoware_motion_utils::findNearestIndex; -using autoware_motion_utils::findNearestSegmentIndex; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::getPoint; -using autoware_universe_utils::Point2d; +using autoware::motion_utils::calcSignedArcLength; +using autoware::motion_utils::findNearestIndex; +using autoware::motion_utils::findNearestSegmentIndex; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::getPoint; +using autoware::universe_utils::Point2d; using geometry_msgs::msg::Point; namespace bg = boost::geometry; @@ -103,7 +103,7 @@ SamplingPlannerModule::SamplingPlannerModule( // [[maybe_unused]] const SoftConstraintsInputs & input_data) -> double { // if (path.points.empty()) return 0.0; // const auto & goal_pose_yaw = - // autoware_universe_utils::getRPY(input_data.goal_pose.orientation).z; const auto & + // autoware::universe_utils::getRPY(input_data.goal_pose.orientation).z; const auto & // last_point_yaw = path.yaws.back(); const double angle_difference = std::abs(last_point_yaw // - goal_pose_yaw); return angle_difference / (3.141519 / 4.0); // }); @@ -190,7 +190,7 @@ bool SamplingPlannerModule::isExecutionRequested() const return false; } - if (!autoware_motion_utils::isDrivingForward(getPreviousModuleOutput().reference_path.points)) { + if (!autoware::motion_utils::isDrivingForward(getPreviousModuleOutput().reference_path.points)) { RCLCPP_WARN(getLogger(), "Backward path is NOT supported. Just converting path to trajectory"); return false; } @@ -343,7 +343,7 @@ PathWithLaneId SamplingPlannerModule::convertFrenetPathToPathWithLaneID( point.lane_ids = path.points.at(i - 1).lane_ids; } if (reference_path_ptr) { - const auto idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const auto idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( reference_path_ptr->points, point.point.pose); const auto & closest_point = reference_path_ptr->points[idx]; point.point.longitudinal_velocity_mps = closest_point.point.longitudinal_velocity_mps; @@ -365,9 +365,9 @@ void SamplingPlannerModule::prepareConstraints( size_t i = 0; for (const auto & o : predicted_objects->objects) { if (o.kinematics.initial_twist_with_covariance.twist.linear.x < 0.5) { - const auto polygon = autoware_universe_utils::toPolygon2d(o); + const auto polygon = autoware::universe_utils::toPolygon2d(o); constraints.obstacle_polygons.push_back(polygon); - const auto box = boost::geometry::return_envelope(polygon); + const auto box = boost::geometry::return_envelope(polygon); constraints.rtree.insert(std::make_pair(box, i)); } i++; diff --git a/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/manager.cpp index ddc9c820a6667..2e8d7e98c11cf 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/manager.cpp @@ -48,7 +48,7 @@ void SideShiftModuleManager::init(rclcpp::Node * node) void SideShiftModuleManager::updateModuleParams( [[maybe_unused]] const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; [[maybe_unused]] auto p = parameters_; diff --git a/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/scene.cpp b/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/scene.cpp index 065d15fbc8935..929e890edc204 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/scene.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_side_shift_module/src/scene.cpp @@ -20,7 +20,7 @@ #include "autoware/behavior_path_planner_common/utils/utils.hpp" #include "autoware/behavior_path_side_shift_module/utils.hpp" -#include +#include #include #include @@ -28,11 +28,11 @@ namespace autoware::behavior_path_planner { -using autoware_motion_utils::calcSignedArcLength; -using autoware_motion_utils::findNearestIndex; -using autoware_motion_utils::findNearestSegmentIndex; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::getPoint; +using autoware::motion_utils::calcSignedArcLength; +using autoware::motion_utils::findNearestIndex; +using autoware::motion_utils::findNearestSegmentIndex; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::getPoint; using geometry_msgs::msg::Point; SideShiftModule::SideShiftModule( @@ -196,7 +196,7 @@ void SideShiftModule::updateData() double max_dist = 0.0; for (const auto & pnt : path_shifter_.getShiftLines()) { max_dist = - std::max(max_dist, autoware_universe_utils::calcDistance2d(getEgoPose(), pnt.start)); + std::max(max_dist, autoware::universe_utils::calcDistance2d(getEgoPose(), pnt.start)); } return max_dist; }(); @@ -373,7 +373,8 @@ double SideShiftModule::getClosestShiftLength() const } const auto ego_point = planner_data_->self_odometry->pose.pose.position; - const auto closest = autoware_motion_utils::findNearestIndex(prev_output_.path.points, ego_point); + const auto closest = + autoware::motion_utils::findNearestIndex(prev_output_.path.points, ego_point); return prev_output_.shift_length.at(closest); } @@ -396,7 +397,7 @@ BehaviorModuleOutput SideShiftModule::adjustDrivableArea(const ShiftedPath & pat auto output_path = path.path; const size_t current_seg_idx = planner_data_->findEgoSegmentIndex(output_path.points); const auto & current_pose = planner_data_->self_odometry->pose.pose; - output_path.points = autoware_motion_utils::cropPoints( + output_path.points = autoware::motion_utils::cropPoints( output_path.points, current_pose.position, current_seg_idx, p.forward_path_length, p.backward_path_length + p.input_path_interval); @@ -468,7 +469,7 @@ void SideShiftModule::setDebugMarkersVisualization() const debug_marker_.markers.clear(); const auto add = [this](const MarkerArray & added) { - autoware_universe_utils::appendMarkerArray(added, &debug_marker_); + autoware::universe_utils::appendMarkerArray(added, &debug_marker_); }; const auto add_shift_line_marker = [this, add]( diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/README.md b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/README.md index 066708891652a..dba4a0cfce5e7 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/README.md +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/README.md @@ -436,17 +436,18 @@ Parameters under `target_filtering` are related to filtering target objects for Parameters under `safety_check_params` define the configuration for safety check. -| Name | Unit | Type | Description | Default value | -| :--------------------------------------------- | :--- | :----- | :------------------------------------------ | :------------ | -| enable_safety_check | - | bool | Flag to enable safety check | true | -| check_all_predicted_path | - | bool | Flag to check all predicted paths | true | -| publish_debug_marker | - | bool | Flag to publish debug markers | false | -| rss_params.rear_vehicle_reaction_time | [s] | double | Reaction time for rear vehicles | 2.0 | -| rss_params.rear_vehicle_safety_time_margin | [s] | double | Safety time margin for rear vehicles | 1.0 | -| rss_params.lateral_distance_max_threshold | [m] | double | Maximum lateral distance threshold | 2.0 | -| rss_params.longitudinal_distance_min_threshold | [m] | double | Minimum longitudinal distance threshold | 3.0 | -| rss_params.longitudinal_velocity_delta_time | [s] | double | Delta time for longitudinal velocity | 0.8 | -| hysteresis_factor_expand_rate | - | double | Rate to expand/shrink the hysteresis factor | 1.0 | +| Name | Unit | Type | Description | Default value | +| :--------------------------------------------- | :--- | :----- | :---------------------------------------------------------------------------------------- | :------------ | +| enable_safety_check | - | bool | Flag to enable safety check | true | +| check_all_predicted_path | - | bool | Flag to check all predicted paths | true | +| publish_debug_marker | - | bool | Flag to publish debug markers | false | +| rss_params.rear_vehicle_reaction_time | [s] | double | Reaction time for rear vehicles | 2.0 | +| rss_params.rear_vehicle_safety_time_margin | [s] | double | Safety time margin for rear vehicles | 1.0 | +| rss_params.lateral_distance_max_threshold | [m] | double | Maximum lateral distance threshold | 2.0 | +| rss_params.longitudinal_distance_min_threshold | [m] | double | Minimum longitudinal distance threshold | 3.0 | +| rss_params.longitudinal_velocity_delta_time | [s] | double | Delta time for longitudinal velocity | 0.8 | +| hysteresis_factor_expand_rate | - | double | Rate to expand/shrink the hysteresis factor | 1.0 | +| collision_check_yaw_diff_threshold | - | double | Maximum yaw difference between ego and object when executing rss-based collision checking | 1.578 | ## **Path Generation** diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/config/start_planner.param.yaml b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/config/start_planner.param.yaml index ce7ead87b54c7..d39a320a19e14 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/config/start_planner.param.yaml +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/config/start_planner.param.yaml @@ -143,8 +143,10 @@ lateral_distance_max_threshold: 2.0 longitudinal_distance_min_threshold: 3.0 longitudinal_velocity_delta_time: 0.8 + extended_polygon_policy: "along_path" # [-] select "rectangle" or "along_path" # hysteresis factor to expand/shrink polygon hysteresis_factor_expand_rate: 1.0 + collision_check_yaw_diff_threshold: 1.578 # temporary backward_path_length: 30.0 forward_path_length: 100.0 diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/pull_out_planner_base.hpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/pull_out_planner_base.hpp index 52675653e7b32..7b30745057743 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/pull_out_planner_base.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/pull_out_planner_base.hpp @@ -30,7 +30,7 @@ namespace autoware::behavior_path_planner { -using autoware_universe_utils::LinearRing2d; +using autoware::universe_utils::LinearRing2d; using geometry_msgs::msg::Pose; using tier4_planning_msgs::msg::PathWithLaneId; diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/start_planner_module.hpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/start_planner_module.hpp index 7554098414442..b07d6497463ef 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/start_planner_module.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/include/autoware/behavior_path_start_planner_module/start_planner_module.hpp @@ -77,7 +77,7 @@ struct PullOutStatus // record if the ego has departed from the start point bool has_departed{false}; - PullOutStatus() {} + PullOutStatus() = default; }; class StartPlannerModule : public SceneModuleInterface @@ -90,7 +90,7 @@ class StartPlannerModule : public SceneModuleInterface std::unordered_map> & objects_of_interest_marker_interface_ptr_map); - ~StartPlannerModule() + ~StartPlannerModule() override { if (freespace_planner_timer_) { freespace_planner_timer_->cancel(); @@ -296,16 +296,16 @@ class StartPlannerModule : public SceneModuleInterface PathWithLaneId getCurrentPath() const; void planWithPriority( const std::vector & start_pose_candidates, const Pose & refined_start_pose, - const Pose & goal_pose, const std::string search_priority); + const Pose & goal_pose, const std::string & search_priority); PathWithLaneId generateStopPath() const; lanelet::ConstLanelets getPathRoadLanes(const PathWithLaneId & path) const; std::vector generateDrivableLanes(const PathWithLaneId & path) const; void updatePullOutStatus(); void updateStatusAfterBackwardDriving(); PredictedObjects filterStopObjectsInPullOutLanes( - const lanelet::ConstLanelets & pull_out_lanes, const geometry_msgs::msg::Point & current_pose, - const double velocity_threshold, const double object_check_backward_distance, - const double object_check_forward_distance) const; + const lanelet::ConstLanelets & pull_out_lanes, const geometry_msgs::msg::Point & current_point, + const double velocity_threshold, const double object_check_forward_distance, + const double object_check_backward_distance) const; bool needToPrepareBlinkerBeforeStartDrivingForward() const; bool hasReachedFreespaceEnd() const; bool hasReachedPullOutEnd() const; diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/freespace_pull_out.cpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/freespace_pull_out.cpp index 8be6bc911634a..9c9c084f823c4 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/freespace_pull_out.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/freespace_pull_out.cpp @@ -19,7 +19,7 @@ #include "autoware/behavior_path_planner_common/utils/utils.hpp" #include "autoware/behavior_path_start_planner_module/util.hpp" -#include +#include #include #include @@ -81,7 +81,7 @@ std::optional FreespacePullOut::plan( const size_t index = std::distance(last_path.points.begin(), it); if (index == 0) continue; const double distance = - autoware_universe_utils::calcDistance2d(end_pose.position, it->point.pose.position); + autoware::universe_utils::calcDistance2d(end_pose.position, it->point.pose.position); if (distance < th_end_distance) { last_path.points.erase(it, last_path.points.end()); break; diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/geometric_pull_out.cpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/geometric_pull_out.cpp index 6e4928e0fbb7f..4470026bc8dda 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/geometric_pull_out.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/geometric_pull_out.cpp @@ -20,11 +20,11 @@ #include "autoware/behavior_path_start_planner_module/util.hpp" #include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" -#include +#include -using autoware_motion_utils::findNearestIndex; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::calcOffsetPose; +using autoware::motion_utils::findNearestIndex; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::calcOffsetPose; using lanelet::utils::getArcCoordinates; namespace autoware::behavior_path_planner { @@ -92,14 +92,14 @@ std::optional GeometricPullOut::plan( // insert stop velocity to first arc path end output.partial_paths.front().points.back().point.longitudinal_velocity_mps = 0.0; const double arc_length_on_first_arc_path = - autoware_motion_utils::calcArcLength(output.partial_paths.front().points); + autoware::motion_utils::calcArcLength(output.partial_paths.front().points); const double time_to_center = arc_length_on_first_arc_path / (2 * velocity); const double average_velocity = arc_length_on_first_arc_path / (time_to_center * 2); const double average_acceleration = average_velocity / (time_to_center * 2); output.pairs_terminal_velocity_and_accel.push_back( std::make_pair(average_velocity, average_acceleration)); const double arc_length_on_second_arc_path = - autoware_motion_utils::calcArcLength(planner_.getArcPaths().at(1).points); + autoware::motion_utils::calcArcLength(planner_.getArcPaths().at(1).points); output.pairs_terminal_velocity_and_accel.push_back( std::make_pair(velocity, velocity * velocity / (2 * arc_length_on_second_arc_path))); } else { @@ -109,7 +109,7 @@ std::optional GeometricPullOut::plan( // Calculate the acceleration required to reach the forward parking velocity at the center of // the path, assuming constant acceleration and deceleration. - const double arc_length_on_path = autoware_motion_utils::calcArcLength(combined_path.points); + const double arc_length_on_path = autoware::motion_utils::calcArcLength(combined_path.points); output.pairs_terminal_velocity_and_accel.push_back( std::make_pair(velocity, velocity * velocity / 2 * arc_length_on_path)); } diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/manager.cpp index 0806978a7ef3f..873bab1043485 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/manager.cpp @@ -283,6 +283,8 @@ void StartPlannerModuleManager::init(rclcpp::Node * node) node->declare_parameter(safety_check_ns + "forward_path_length"); p.safety_check_params.publish_debug_marker = node->declare_parameter(safety_check_ns + "publish_debug_marker"); + p.safety_check_params.collision_check_yaw_diff_threshold = + node->declare_parameter(safety_check_ns + "collision_check_yaw_diff_threshold"); } // RSSparams @@ -298,6 +300,8 @@ void StartPlannerModuleManager::init(rclcpp::Node * node) node->declare_parameter(rss_ns + "longitudinal_distance_min_threshold"); p.safety_check_params.rss_params.longitudinal_velocity_delta_time = node->declare_parameter(rss_ns + "longitudinal_velocity_delta_time"); + p.safety_check_params.rss_params.extended_polygon_policy = + node->declare_parameter(rss_ns + "extended_polygon_policy"); } // surround moving obstacle check @@ -351,7 +355,7 @@ void StartPlannerModuleManager::init(rclcpp::Node * node) void StartPlannerModuleManager::updateModuleParams( [[maybe_unused]] const std::vector & parameters) { - using autoware_universe_utils::updateParam; + using autoware::universe_utils::updateParam; auto & p = parameters_; @@ -367,7 +371,6 @@ void StartPlannerModuleManager::updateModuleParams( updateParam( parameters, ns + "extra_width_margin_for_rear_obstacle", p->extra_width_margin_for_rear_obstacle); - updateParam>( parameters, ns + "collision_check_margins", p->collision_check_margins); updateParam( @@ -658,6 +661,9 @@ void StartPlannerModuleManager::updateModuleParams( updateParam( parameters, safety_check_ns + "publish_debug_marker", p->safety_check_params.publish_debug_marker); + updateParam( + parameters, safety_check_ns + "collision_check_yaw_diff_threshold", + p->safety_check_params.collision_check_yaw_diff_threshold); } const std::string rss_ns = safety_check_ns + "rss_params."; { @@ -676,6 +682,9 @@ void StartPlannerModuleManager::updateModuleParams( updateParam( parameters, rss_ns + "longitudinal_velocity_delta_time", p->safety_check_params.rss_params.longitudinal_velocity_delta_time); + updateParam( + parameters, rss_ns + "extended_polygon_policy", + p->safety_check_params.rss_params.extended_polygon_policy); } std::string surround_moving_obstacle_check_ns = ns + "surround_moving_obstacle_check."; { diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/shift_pull_out.cpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/shift_pull_out.cpp index c004596de6ff9..7c78f62192105 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/shift_pull_out.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/shift_pull_out.cpp @@ -22,14 +22,14 @@ #include "autoware/motion_utils/trajectory/path_with_lane_id.hpp" #include "autoware/universe_utils/geometry/boost_polygon_utils.hpp" -#include +#include #include #include -using autoware_motion_utils::findNearestIndex; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::calcOffsetPose; +using autoware::motion_utils::findNearestIndex; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::calcOffsetPose; using lanelet::utils::getArcCoordinates; namespace autoware::behavior_path_planner { @@ -108,7 +108,7 @@ std::optional ShiftPullOut::plan( // narrow place. const size_t start_segment_idx = - autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( shift_path.points, start_pose, common_parameters.ego_nearest_dist_threshold, common_parameters.ego_nearest_yaw_threshold); @@ -125,17 +125,18 @@ std::optional ShiftPullOut::plan( if (cropped_path.points.size() < 2) return false; const double max_long_offset = parameters_.maximum_longitudinal_deviation; const size_t start_segment_idx_after_crop = - autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( cropped_path.points, start_pose); // if the start segment id after crop is not 0, then the cropping is not excessive if (start_segment_idx_after_crop != 0) return true; const auto long_offset_to_closest_point = - autoware_motion_utils::calcLongitudinalOffsetToSegment( + autoware::motion_utils::calcLongitudinalOffsetToSegment( cropped_path.points, start_segment_idx_after_crop, start_pose.position); - const auto long_offset_to_next_point = autoware_motion_utils::calcLongitudinalOffsetToSegment( - cropped_path.points, start_segment_idx_after_crop + 1, start_pose.position); + const auto long_offset_to_next_point = + autoware::motion_utils::calcLongitudinalOffsetToSegment( + cropped_path.points, start_segment_idx_after_crop + 1, start_pose.position); return std::abs(long_offset_to_closest_point - long_offset_to_next_point) < max_long_offset; }; @@ -174,7 +175,7 @@ bool ShiftPullOut::refineShiftedPathToStartPose( size_t iteration = 0; while (iteration < MAX_ITERATION) { const double lateral_offset = - autoware_motion_utils::calcLateralOffset(shifted_path.path.points, start_pose.position); + autoware::motion_utils::calcLateralOffset(shifted_path.path.points, start_pose.position); PathShifter path_shifter; path_shifter.setPath(shifted_path.path); @@ -196,7 +197,7 @@ bool ShiftPullOut::refineShiftedPathToStartPose( if (is_within_tolerance( lateral_offset, - autoware_motion_utils::calcLateralOffset(shifted_path.path.points, start_pose.position), + autoware::motion_utils::calcLateralOffset(shifted_path.path.points, start_pose.position), TOLERANCE)) { return true; } @@ -423,7 +424,7 @@ double ShiftPullOut::calcBeforeShiftedArcLength( double after_arc_length{0.0}; for (const auto & [k, segment_length] : - autoware_motion_utils::calcCurvatureAndArcLength(path.points)) { + autoware::motion_utils::calcCurvatureAndArcLength(path.points)) { // after shifted segment length const double after_segment_length = k < 0 ? segment_length * (1 - k * dr) : segment_length / (1 + k * dr); diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/start_planner_module.cpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/start_planner_module.cpp index 7c5030a9c69d3..00b6649851f87 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/start_planner_module.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/start_planner_module.cpp @@ -22,10 +22,10 @@ #include "autoware/behavior_path_start_planner_module/util.hpp" #include "autoware/motion_utils/trajectory/trajectory.hpp" -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -34,16 +34,18 @@ #include #include +#include #include +#include #include #include #include using autoware::behavior_path_planner::utils::parking_departure::initializeCollisionCheckDebugMap; using autoware::behavior_path_planner::utils::path_safety_checker::ExtendedPredictedObject; -using autoware_motion_utils::calcLateralOffset; -using autoware_motion_utils::calcLongitudinalOffsetPose; -using autoware_universe_utils::calcOffsetPose; +using autoware::motion_utils::calcLateralOffset; +using autoware::motion_utils::calcLongitudinalOffsetPose; +using autoware::universe_utils::calcOffsetPose; // set as macro so that calling function name will be printed. // debug print is heavy. turn on only when debugging. @@ -65,7 +67,7 @@ StartPlannerModule::StartPlannerModule( { lane_departure_checker_ = std::make_shared(); lane_departure_checker_->setVehicleInfo(vehicle_info_); - autoware::lane_departure_checker::Param lane_departure_checker_params; + autoware::lane_departure_checker::Param lane_departure_checker_params{}; lane_departure_checker_params.footprint_extra_margin = parameters->lane_departure_check_expansion_margin; @@ -104,7 +106,7 @@ void StartPlannerModule::onFreespacePlannerTimer() std::optional current_status_opt{std::nullopt}; std::optional parameters_opt{std::nullopt}; std::optional pull_out_status_opt{std::nullopt}; - bool is_stopped; + bool is_stopped{false}; // making a local copy of thread sensitive data { @@ -274,7 +276,7 @@ bool StartPlannerModule::hasFinishedBackwardDriving() const // check ego car is close enough to pull out start pose and stopped const auto current_pose = planner_data_->self_odometry->pose.pose; const auto distance = - autoware_universe_utils::calcDistance2d(current_pose, status_.pull_out_start_pose); + autoware::universe_utils::calcDistance2d(current_pose, status_.pull_out_start_pose); const bool is_near = distance < parameters_->th_arrived_distance; const double ego_vel = utils::l2Norm(planner_data_->self_odometry->twist.twist.linear); @@ -383,7 +385,7 @@ bool StartPlannerModule::isPreventingRearVehicleFromPassingThrough() const boundary_line.begin(), boundary_line.end(), [&boundary_path](const auto & boundary_point) { const double x = boundary_point.x(); const double y = boundary_point.y(); - boundary_path.push_back(autoware_universe_utils::createPoint(x, y, 0.0)); + boundary_path.push_back(autoware::universe_utils::createPoint(x, y, 0.0)); }); return std::fabs(calcLateralOffset(boundary_path, search_pose.position)); @@ -393,12 +395,12 @@ bool StartPlannerModule::isPreventingRearVehicleFromPassingThrough() const const auto centerline_path = route_handler->getCenterLinePath(target_lanes, 0.0, std::numeric_limits::max()); const auto start_pose_nearest_segment_index = - autoware_motion_utils::findNearestSegmentIndex(centerline_path.points, start_pose); + autoware::motion_utils::findNearestSegmentIndex(centerline_path.points, start_pose); if (!start_pose_nearest_segment_index) return false; - const auto start_pose_point_msg = autoware_universe_utils::createPoint( + const auto start_pose_point_msg = autoware::universe_utils::createPoint( start_pose.position.x, start_pose.position.y, start_pose.position.z); - const auto starting_pose_lateral_offset = autoware_motion_utils::calcLateralOffset( + const auto starting_pose_lateral_offset = autoware::motion_utils::calcLateralOffset( centerline_path.points, start_pose_point_msg, start_pose_nearest_segment_index.value()); if (std::isnan(starting_pose_lateral_offset)) return false; @@ -413,7 +415,7 @@ bool StartPlannerModule::isPreventingRearVehicleFromPassingThrough() const const bool ego_is_merging_from_the_left) -> std::optional> { const auto local_vehicle_footprint = vehicle_info_.createFootprint(); const auto vehicle_footprint = transformVector( - local_vehicle_footprint, autoware_universe_utils::pose2transform(current_pose)); + local_vehicle_footprint, autoware::universe_utils::pose2transform(current_pose)); double smallest_lateral_gap_between_ego_and_border = std::numeric_limits::max(); double corresponding_lateral_gap_with_other_lane_bound = std::numeric_limits::max(); @@ -501,18 +503,17 @@ bool StartPlannerModule::isPreventingRearVehicleFromPassingThrough() const // Get the closest target obj width in the relevant lanes const auto closest_object_width = std::invoke([&]() -> std::optional { double arc_length_to_closet_object = std::numeric_limits::max(); - double closest_object_width = -1.0; + std::optional closest_object_width = std::nullopt; std::for_each( target_objects_on_lane.on_current_lane.begin(), target_objects_on_lane.on_current_lane.end(), [&](const auto & o) { - const auto arc_length = autoware_motion_utils::calcSignedArcLength( + const auto arc_length = autoware::motion_utils::calcSignedArcLength( centerline_path.points, current_pose.position, o.initial_pose.pose.position); if (arc_length > 0.0) return; if (std::abs(arc_length) >= std::abs(arc_length_to_closet_object)) return; arc_length_to_closet_object = arc_length; closest_object_width = o.shape.dimensions.y; }); - if (closest_object_width < 0.0) return std::nullopt; return closest_object_width; }); if (!closest_object_width) return false; @@ -524,7 +525,7 @@ bool StartPlannerModule::isPreventingRearVehicleFromPassingThrough() const bool StartPlannerModule::isCloseToOriginalStartPose() const { const Pose start_pose = planner_data_->route_handler->getOriginalStartPose(); - return autoware_universe_utils::calcDistance2d( + return autoware::universe_utils::calcDistance2d( start_pose.position, planner_data_->self_odometry->pose.pose.position) > parameters_->th_arrived_distance; } @@ -532,7 +533,7 @@ bool StartPlannerModule::isCloseToOriginalStartPose() const bool StartPlannerModule::hasArrivedAtGoal() const { const Pose goal_pose = planner_data_->route_handler->getGoalPose(); - return autoware_universe_utils::calcDistance2d( + return autoware::universe_utils::calcDistance2d( goal_pose.position, planner_data_->self_odometry->pose.pose.position) < parameters_->th_arrived_distance; } @@ -684,10 +685,10 @@ BehaviorModuleOutput StartPlannerModule::plan() const auto steering_factor_direction = getSteeringFactorDirection(output); if (status_.driving_forward) { - const double start_distance = autoware_motion_utils::calcSignedArcLength( + const double start_distance = autoware::motion_utils::calcSignedArcLength( path.points, planner_data_->self_odometry->pose.pose.position, status_.pull_out_path.start_pose.position); - const double finish_distance = autoware_motion_utils::calcSignedArcLength( + const double finish_distance = autoware::motion_utils::calcSignedArcLength( path.points, planner_data_->self_odometry->pose.pose.position, status_.pull_out_path.end_pose.position); updateRTCStatus(start_distance, finish_distance); @@ -698,7 +699,7 @@ BehaviorModuleOutput StartPlannerModule::plan() setDebugData(); return output; } - const double distance = autoware_motion_utils::calcSignedArcLength( + const double distance = autoware::motion_utils::calcSignedArcLength( path.points, planner_data_->self_odometry->pose.pose.position, status_.pull_out_path.start_pose.position); updateRTCStatus(0.0, distance); @@ -788,10 +789,10 @@ BehaviorModuleOutput StartPlannerModule::planWaitingApproval() const auto steering_factor_direction = getSteeringFactorDirection(output); if (status_.driving_forward) { - const double start_distance = autoware_motion_utils::calcSignedArcLength( + const double start_distance = autoware::motion_utils::calcSignedArcLength( stop_path.points, planner_data_->self_odometry->pose.pose.position, status_.pull_out_path.start_pose.position); - const double finish_distance = autoware_motion_utils::calcSignedArcLength( + const double finish_distance = autoware::motion_utils::calcSignedArcLength( stop_path.points, planner_data_->self_odometry->pose.pose.position, status_.pull_out_path.end_pose.position); updateRTCStatus(start_distance, finish_distance); @@ -803,7 +804,7 @@ BehaviorModuleOutput StartPlannerModule::planWaitingApproval() return output; } - const double distance = autoware_motion_utils::calcSignedArcLength( + const double distance = autoware::motion_utils::calcSignedArcLength( stop_path.points, planner_data_->self_odometry->pose.pose.position, status_.pull_out_path.start_pose.position); updateRTCStatus(0.0, distance); @@ -837,7 +838,7 @@ PathWithLaneId StartPlannerModule::getCurrentPath() const void StartPlannerModule::planWithPriority( const std::vector & start_pose_candidates, const Pose & refined_start_pose, - const Pose & goal_pose, const std::string search_priority) + const Pose & goal_pose, const std::string & search_priority) { if (start_pose_candidates.empty()) return; @@ -888,20 +889,16 @@ PriorityOrder StartPlannerModule::determinePriorityOrder( order_priority.emplace_back(i, planner); } } - return order_priority; - } - - if (search_priority == "short_back_distance") { + } else if (search_priority == "short_back_distance") { for (size_t i = 0; i < start_pose_candidates_num; i++) { for (const auto & planner : start_planners_) { order_priority.emplace_back(i, planner); } } - return order_priority; + } else { + RCLCPP_ERROR(getLogger(), "Invalid search_priority: %s", search_priority.c_str()); + throw std::domain_error("[start_planner] invalid search_priority"); } - - RCLCPP_ERROR(getLogger(), "Invalid search_priority: %s", search_priority.c_str()); - throw std::domain_error("[start_planner] invalid search_priority"); return order_priority; } @@ -913,7 +910,7 @@ bool StartPlannerModule::findPullOutPath( // if start_pose_candidate is far from refined_start_pose, backward driving is necessary constexpr double epsilon = 0.01; const double backwards_distance = - autoware_universe_utils::calcDistance2d(start_pose_candidate, refined_start_pose); + autoware::universe_utils::calcDistance2d(start_pose_candidate, refined_start_pose); const bool backward_is_unnecessary = backwards_distance < epsilon; planner->setCollisionCheckMargin(collision_check_margin); @@ -1116,8 +1113,8 @@ void StartPlannerModule::updateStatusAfterBackwardDriving() waitApproval(); // To enable approval of the forward path, the RTC status is removed. removeRTCStatus(); - for (auto itr = uuid_map_.begin(); itr != uuid_map_.end(); ++itr) { - itr->second = generateUUID(); + for (auto & itr : uuid_map_) { + itr.second = generateUUID(); } } @@ -1240,7 +1237,7 @@ PredictedObjects StartPlannerModule::filterStopObjectsInPullOutLanes( bool StartPlannerModule::hasReachedFreespaceEnd() const { const auto & current_pose = planner_data_->self_odometry->pose.pose; - return autoware_universe_utils::calcDistance2d(current_pose, status_.pull_out_path.end_pose) < + return autoware::universe_utils::calcDistance2d(current_pose, status_.pull_out_path.end_pose) < parameters_->th_arrived_distance; } @@ -1282,8 +1279,8 @@ bool StartPlannerModule::hasFinishedCurrentPath() const auto current_path = getCurrentPath(); const auto current_path_end = current_path.points.back(); const auto self_pose = planner_data_->self_odometry->pose.pose; - const bool is_near_target = autoware_universe_utils::calcDistance2d(current_path_end, self_pose) < - parameters_->th_arrived_distance; + const bool is_near_target = autoware::universe_utils::calcDistance2d( + current_path_end, self_pose) < parameters_->th_arrived_distance; return is_near_target && isStopped(); } @@ -1294,10 +1291,10 @@ TurnSignalInfo StartPlannerModule::calcTurnSignalInfo() if (path.points.empty()) return getPreviousModuleOutput().turn_signal_info; const Pose & current_pose = planner_data_->self_odometry->pose.pose; - const auto shift_start_idx = - autoware_motion_utils::findNearestIndex(path.points, status_.pull_out_path.start_pose.position); + const auto shift_start_idx = autoware::motion_utils::findNearestIndex( + path.points, status_.pull_out_path.start_pose.position); const auto shift_end_idx = - autoware_motion_utils::findNearestIndex(path.points, status_.pull_out_path.end_pose.position); + autoware::motion_utils::findNearestIndex(path.points, status_.pull_out_path.end_pose.position); const lanelet::ConstLanelets current_lanes = utils::getCurrentLanes(planner_data_); const auto is_ignore_signal = [this](const lanelet::Id & id) { @@ -1307,7 +1304,7 @@ TurnSignalInfo StartPlannerModule::calcTurnSignalInfo() return ignore_signal_.value() == id; }; - const auto update_ignore_signal = [this](const lanelet::Id & id, const bool is_ignore) { + const auto update_ignore_signal = [](const lanelet::Id & id, const bool is_ignore) { return is_ignore ? std::make_optional(id) : std::nullopt; }; @@ -1337,7 +1334,7 @@ TurnSignalInfo StartPlannerModule::calcTurnSignalInfo() constexpr double distance_threshold = 1.0; const auto stop_point = status_.pull_out_path.partial_paths.front().points.back(); const double distance_from_ego_to_stop_point = - std::abs(autoware_motion_utils::calcSignedArcLength( + std::abs(autoware::motion_utils::calcSignedArcLength( path.points, stop_point.point.pose.position, current_pose.position)); return distance_from_ego_to_stop_point < distance_threshold; }); @@ -1426,10 +1423,12 @@ bool StartPlannerModule::isSafePath() const merged_target_object.insert( merged_target_object.end(), target_objects_on_lane.on_shoulder_lane.begin(), target_objects_on_lane.on_shoulder_lane.end()); + return autoware::behavior_path_planner::utils::path_safety_checker::checkSafetyWithRSS( pull_out_path, ego_predicted_path, merged_target_object, debug_data_.collision_check, planner_data_->parameters, safety_check_params_->rss_params, - objects_filtering_params_->use_all_predicted_path, hysteresis_factor); + objects_filtering_params_->use_all_predicted_path, hysteresis_factor, + safety_check_params_->collision_check_yaw_diff_threshold); } bool StartPlannerModule::isGoalBehindOfEgoInSameRouteSegment() const @@ -1450,7 +1449,7 @@ bool StartPlannerModule::isGoalBehindOfEgoInSameRouteSegment() const // Return true when the goal is located behind of ego. const auto ego_lane_path = rh->getCenterLinePath( lanelet::ConstLanelets{ego_lanelet}, 0.0, std::numeric_limits::max()); - const auto dist_ego_to_goal = autoware_motion_utils::calcSignedArcLength( + const auto dist_ego_to_goal = autoware::motion_utils::calcSignedArcLength( ego_lane_path.points, getEgoPosition(), rh->getGoalPose().position); const bool is_goal_behind_of_ego = (dist_ego_to_goal < 0.0); @@ -1563,9 +1562,9 @@ void StartPlannerModule::setDrivableAreaInfo(BehaviorModuleOutput & output) cons void StartPlannerModule::setDebugData() { - using autoware_universe_utils::createDefaultMarker; - using autoware_universe_utils::createMarkerColor; - using autoware_universe_utils::createMarkerScale; + using autoware::universe_utils::createDefaultMarker; + using autoware::universe_utils::createMarkerColor; + using autoware::universe_utils::createMarkerScale; using lanelet::visualization::laneletsAsTriangleMarkerArray; using marker_utils::addFootprintMarker; using marker_utils::createFootprintMarkerArray; @@ -1589,7 +1588,7 @@ void StartPlannerModule::setDebugData() for (auto & marker : added.markers) { marker.lifetime = life_time; } - autoware_universe_utils::appendMarkerArray(added, &target_marker_array); + autoware::universe_utils::appendMarkerArray(added, &target_marker_array); }; debug_marker_.markers.clear(); @@ -1619,7 +1618,7 @@ void StartPlannerModule::setDebugData() {PlannerType::GEOMETRIC, parameters_->geometric_collision_check_distance_from_end}}; double collision_check_distance_from_end = collision_check_distances[status_.planner_type]; - const auto collision_check_end_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto collision_check_end_pose = autoware::motion_utils::calcLongitudinalOffsetPose( getFullPath().points, status_.pull_out_path.end_pose.position, collision_check_distance_from_end); if (collision_check_end_pose) { @@ -1673,9 +1672,9 @@ void StartPlannerModule::setDebugData() PathWithLaneId path_shift_start_to_end{}; const auto shift_path = status_.pull_out_path.partial_paths.front(); { - const size_t pull_out_start_idx = autoware_motion_utils::findNearestIndex( + const size_t pull_out_start_idx = autoware::motion_utils::findNearestIndex( shift_path.points, status_.pull_out_path.start_pose.position); - const size_t pull_out_end_idx = autoware_motion_utils::findNearestIndex( + const size_t pull_out_end_idx = autoware::motion_utils::findNearestIndex( shift_path.points, status_.pull_out_path.end_pose.position); path_shift_start_to_end.points.insert( @@ -1697,7 +1696,7 @@ void StartPlannerModule::setDebugData() // safety check if (parameters_->safety_check_params.enable_safety_check) { - if (debug_data_.ego_predicted_path.size() > 0) { + if (!debug_data_.ego_predicted_path.empty()) { const auto & ego_predicted_path = utils::path_safety_checker::convertToPredictedPath( debug_data_.ego_predicted_path, ego_predicted_path_params_->time_resolution); add( @@ -1706,7 +1705,7 @@ void StartPlannerModule::setDebugData() debug_marker_); } - if (debug_data_.filtered_objects.objects.size() > 0) { + if (!debug_data_.filtered_objects.objects.empty()) { add( createObjectsMarkerArray( debug_data_.filtered_objects, "filtered_objects", 0, 0.0, 0.5, 0.9), diff --git a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/util.cpp b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/util.cpp index 82eadd656ac30..0d4a4366b2714 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/util.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_start_planner_module/src/util.cpp @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include @@ -65,7 +65,7 @@ PathWithLaneId getBackwardPath( const double lateral_distance_to_shoulder_center = current_pose_arc_coords.distance; for (size_t i = 0; i < backward_path.points.size(); ++i) { auto & p = backward_path.points.at(i).point.pose; - p = autoware_universe_utils::calcOffsetPose(p, 0, lateral_distance_to_shoulder_center, 0); + p = autoware::universe_utils::calcOffsetPose(p, 0, lateral_distance_to_shoulder_center, 0); } } @@ -115,16 +115,16 @@ std::optional extractCollisionCheckSection( if (full_path.points.empty()) return std::nullopt; // Find the start index for collision check section based on the shift start pose const auto shift_start_idx = - autoware_motion_utils::findNearestIndex(full_path.points, path.start_pose.position); + autoware::motion_utils::findNearestIndex(full_path.points, path.start_pose.position); // Find the end index for collision check section based on the end pose and collision check // distance const auto collision_check_end_idx = [&]() -> size_t { - const auto end_pose_offset = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto end_pose_offset = autoware::motion_utils::calcLongitudinalOffsetPose( full_path.points, path.end_pose.position, collision_check_distance_from_end); return end_pose_offset - ? autoware_motion_utils::findNearestIndex(full_path.points, end_pose_offset->position) + ? autoware::motion_utils::findNearestIndex(full_path.points, end_pose_offset->position) : full_path.points.size() - 1; // Use the last point if offset pose is not calculable }(); diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/README.md b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/README.md index bc70c1fdd5c6a..40d36898b2309 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/README.md +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/README.md @@ -8,7 +8,7 @@ This is a rule-based avoidance module, which is running based on perception outp ![fig](./images/purpose/avoidance.png) -This module has [RTC interface](../autoware_rtc_interface/README.md), and user can select operation mode from MANUAL/AUTO depending on the vehicle sensor performance. If user selects MANUAL mode, this module outputs avoidance path as candidate and waits operator approval. In the case where the sensor/perception performance is not enough and false positive maybe occurs, we recommend to use this module with MANUAL mode in order to prevent unnecessary avoidance maneuver. +This module has [RTC interface](../../autoware_rtc_interface/README.md), and user can select operation mode from MANUAL/AUTO depending on the vehicle sensor performance. If user selects MANUAL mode, this module outputs avoidance path as candidate and waits operator approval. In the case where the sensor/perception performance is not enough and false positive maybe occurs, we recommend to use this module with MANUAL mode in order to prevent unnecessary avoidance maneuver. On the other hand, if user selects AUTO mode, this module modifies current following path without operator approval. If the sensor/perception performance is good enough, user can use this module with AUTO mode. @@ -83,7 +83,7 @@ partition fillEgoStatus() { note right This module has following status: - RUNNING: target object is still remaining. Or, the ego hasn't returned original lane. - - CANCEL: taget obejct has gone. And, the ego hasn't initiated avoidance maneuver. + - CANCEL: target object has gone. And, the ego hasn't initiated avoidance maneuver. - SUCCEEDED: the ego finishes avoiding all objects and returns original lane. end note @@ -122,7 +122,7 @@ if (Is there object that is potentially avoidable?) then (yes) :return true; note right Sometimes, we meet the situation where there is enough space to avoid - but ego speed is to high to avoid target obejct under lateral jerk constraints. + but ego speed is to high to avoid target object under lateral jerk constraints. This module keeps running in this case in order to decelerate ego speed. end note stop @@ -485,11 +485,6 @@ title Filtering flow for vehicle type objects start partition isSatisfiedWithVehicleCodition() { -if(object is force avoidance target ?) then (yes) -#FF006C :return true; -stop -else (\n no) - if(isNeverAvoidanceTarget()) then (yes) #00FFB1 :return false; stop @@ -537,7 +532,6 @@ endif endif endif endif -endif #00FFB1 :return false; stop } @@ -747,6 +741,59 @@ The longitudinal positions depends on envelope polygon, ego vehicle specificatio ![fig](./images/path_generation/margin.png) +### Lateral margin + +As mentioned above, user can adjust lateral margin by changing following two types parameter. The `soft_margin` is a soft constraint parameter for lateral margin. The `hard_margin` and `hard_margin_for_parked_vehicle` are hard constraint parameter. + +```yaml + car: + ... + lateral_margin: + soft_margin: 0.3 # [m] + hard_margin: 0.2 # [m] + hard_margin_for_parked_vehicle: 0.7 # [m] +``` + +Basically, this module tries to generate avoidance path in order to keep lateral distance, which is sum of `soft_margin` and `hard_margin`/`hard_margin_for_parked_vehicle`, from avoidance target object. + +![fig](./images/path_generation/soft_hard.png) + +But if there isn't enough space to keep `soft_margin` distance, this module shortens soft constraint lateral margin. The parameter `soft_margin` is a maximum value of soft constraint, and actual soft margin can be a value between 0.0 and `soft_margin`. On the other hand, this module definitely keeps `hard_margin` or `hard_margin_for_parked_vehicle` depending on the situation. Thus, the minimum value of total lateral margin is `hard_margin`/`hard_margin_for_parked_vehicle`, and the maximum value is the sum of `hard_margin`/`hard_margin_for_parked_vehicle` and `soft_margin`. + +Following figure shows the situation where this module shortens lateral soft constraint in order not to drive opposite direction lane when user set a parameter `use_lane_type` to `same_direction_lane`. + +![fig](./images/path_generation/adjust_margin.png) + +This module avoids not only parked vehicle but also non-parked vehicle which stops temporarily for some reason (e.g. waiting for traffic light to change red to green.). Additionally, this module has two types hard margin parameters, `hard_margin` and `hard_margin_for_parked_vehicle` and judges if it's a parked vehicle or not for each vehicles because it takes the risk of vehicle doors opening suddenly and people getting out from parked vehicle into consideration. + +Basically, user had better make `hard_margin_for_parked_vehicle` larger than `hard_margin` to prevent collision with doors or people who suddenly get out from vehicle. + +On the other hand, this module has only one parameter `soft_margin` for soft lateral margin constraint. + +![fig](./images/path_generation/hard_margin.png) + +As the hard margin parameters the distance which the user definitely want to keep, they are used in the logic to check whether the ego can pass side of the target object without avoidance maneuver as well. + +If the lateral distance is less than `hard_margin`/`hard_margin_for_parked_vehicle` when assuming that the ego follows current lane without avoidance maneuver, this module thinks the ego can not pass the side of the object safely and the ego must avoid it. In this case, this module inserts stop point until the avoidance maneuver is allowed to execute so that the ego can avoid the object after approval. (e.g. The ego keeps stopping in front of such a object until operator approves avoidance maneuver if user uses this module in MANUAL mode.) + +![fig](./images/path_generation/must_avoid.png) + +On the other hand, if the lateral distance is larger than `hard_margin`/`hard_margin_for_parked_vehicle`, this module doesn't insert stop point even when it's waiting approval because it thinks it's possible to pass the side of the object safely. + +![fig](./images/path_generation/pass_through.png) + +### When there is not enough space + +This module inserts stop point only when the ego can potentially avoid the object. So, if it is not able to keep distance more than `hard_margin`/`hard_margin_for_parked_vehicle`, this module does nothing. Following figure shows the situation where this module is not able to keep enough lateral distance when user set a parameter `use_lane_type` to `same_direction_lane`. + +![fig](./images/path_generation/do_nothing.png) + +!!! info + + In this situation, obstacle stop feature in [obstacle_cruise_planner](../../autoware_obstacle_cruise_planner/README.md) is responsible for ego vehicle safety. + +![fig](./images/path_generation/insufficient_drivable_space.png) + ### Shift length calculation The lateral shift length is sum of `overhang_distance`, lateral margin, whose value is set in config file, and the half of ego vehicle width defined in `vehicle_info.param.yaml`. On the other hand, the module limits the shift length depending on the space which the module can use for avoidance maneuver and the parameters `soft_drivable_bound_margin` `hard_drivable_bound_margin`. Basically, the shift length is limited so that the ego doesn't get closer than `soft_drivable_bound_margin` to drivable boundary. But it allows to relax the threshold `soft_drivable_bound_margin` to `hard_drivable_bound_margin` when the road is narrow. @@ -757,15 +804,19 @@ Usable lane for avoidance module can be selected by config file. ```yaml ... - use_adjacent_lane: true - use_opposite_lane: true + # drivable lane setting. this module is able to use not only current lane but also right/left lane + # if the current lane(=lanelt::Lanelet) and the rignt/left lane share the boundary(=lanelet::Linestring) in HDMap. + # "current_lane" : use only current lane. this module doesn't use adjacent lane to avoid object. + # "same_direction_lane" : this module uses same direction lane to avoid object if need. + # "opposite_direction_lane": this module uses both same direction and opposite direction lane. + use_lane_type: "opposite_direction_lane" ``` -When user set parameter both `use_adjacent_lane` and `use_opposite_lane` to `true`, it is possible to use opposite lane. +When user set parameter `use_lane_type` to `opposite_direction_lane`, it is possible to use opposite lane. ![fig](./images/path_generation/opposite_direction.png) -When user only set parameter `use_adjacent_lane` to `true`, the module doesn't create path that overlaps opposite lane. +When user set parameter `use_lane_type` to `same_direction_lane`, the module doesn't create path that overlaps opposite lane. ![fig](./images/path_generation/same_direction.png) @@ -804,6 +855,34 @@ The `prepare_length` is calculated as the product of ego speed and `max_prepare_ ![fig](./images/path_generation/shift_line.png) +## Planning at RED traffic light + +This module takes traffic light information into account so that the ego can behave properly. Sometimes, the ego straddles lane boundary but we want to prevent the ego from stopping in front of red traffic signal in such a situation. This is because the ego will block adjacent lane and it's inconvenient for other vehicles. + +![fig](./images/traffic_light/traffic_light.png) + +So, this module controls shift length and shift start/end point in order to prevent above situation. + +### Control shift length + +At first, if the ego hasn't initiated avoidance maneuver yet, this module limits maximum shift length and uses **ONLY** current lane during red traffic signal. This prevents the ego from blocking other vehicles even if this module executes avoidance maneuver and the ego is caught by red traffic signal. + +![fig](./images/traffic_light/limit_shift_length.png) + +### Control avoidance shift start point + +Additionally, if the target object is farther than stop line for traffic light, this module set avoidance shift start point on the stop line in order to prevent the ego from stopping by red traffic signal in middle of avoidance maneuver. + +![fig](./images/traffic_light/shift_from_current_pos.png) +![fig](./images/traffic_light/shift_from_stop_line.png) + +### Control return shift end point + +If the ego has already initiated avoidance maneuver, this module tries to set return shift end point on the stop line. + +![fig](./images/traffic_light/return_after_stop_line.png) +![fig](./images/traffic_light/return_before_stop_line.png) + ## Safety check This feature can be enable by setting following parameter to `true`. @@ -897,33 +976,28 @@ This module supports drivable area expansion for following polygons defined in H Please set the flags to `true` when user wants to make it possible to use those areas in avoidance maneuver. ```yaml +# drivable lane setting. this module is able to use not only current lane but also right/left lane +# if the current lane(=lanelt::Lanelet) and the rignt/left lane share the boundary(=lanelet::Linestring) in HDMap. +# "current_lane" : use only current lane. this module doesn't use adjacent lane to avoid object. +# "same_direction_lane" : this module uses same direction lane to avoid object if need. +# "opposite_direction_lane": this module uses both same direction and opposite direction lane. +use_lane_type: "opposite_direction_lane" # drivable area setting -use_adjacent_lane: true -use_opposite_lane: true use_intersection_areas: true use_hatched_road_markings: true use_freespace_areas: true ``` -| | | | -| --------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| adjacent lane | ![fig](./images/advanced/avoidance_same_direction.png) | | -| opposite lane | ![fig](./images/advanced/avoidance_opposite_direction.png) | | -| intersection area | ![fig](./images/advanced/avoidance_intersection.png) | The intersection area is defined on Lanelet map. See [here](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md) | -| hatched road markings | ![fig](./images/advanced/avoidance_zebra.png) | The hatched road marking is defined on Lanelet map. See [here](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md#hatched-road-markings-area) | -| freespace area | ![fig](./images/advanced/avoidance_freespace.png) | The freespace area is defined on Lanelet map. (unstable) | +| | | | +| -------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| use_lane_type: same_direction_lane | ![fig](./images/advanced/avoidance_same_direction.png) | | +| use_lane_type: opposite_direction_lane | ![fig](./images/advanced/avoidance_opposite_direction.png) | | +| intersection area | ![fig](./images/advanced/avoidance_intersection.png) | The intersection area is defined on Lanelet map. See [here](https://github.com/autowarefoundation/autoware_lanelet2_extension/blob/main/autoware_lanelet2_extension/docs/lanelet2_format_extension.md) | +| hatched road markings | ![fig](./images/advanced/avoidance_zebra.png) | The hatched road marking is defined on Lanelet map. See [here](https://github.com/autowarefoundation/autoware_lanelet2_extension/blob/main/autoware_lanelet2_extension/docs/lanelet2_format_extension.md#hatched-road-markings-area) | +| freespace area | ![fig](./images/advanced/avoidance_freespace.png) | The freespace area is defined on Lanelet map. (unstable) | ## Future extensions / Unimplemented parts -- **Planning on the intersection** - - If it is known that the ego vehicle is going to stop in the middle of avoidance execution (for example, at a red traffic light), sometimes the avoidance should not be executed until the vehicle is ready to move. This is because it is impossible to predict how the environment will change during the stop. This is especially important at intersections. - -![fig](./images/intersection_problem.drawio.svg) - -- **Safety Check** - - - In the current implementation, it is only the jerk limit that permits the avoidance execution. It is needed to consider the collision with other vehicles when change the path shape. - - **Consideration of the speed of the avoidance target** - In the current implementation, only stopped vehicle is targeted as an avoidance target. It is needed to support the overtaking function for low-speed vehicles, such as a bicycle. (It is actually possible to overtake the low-speed objects by changing the parameter, but the logic is not supported and thus the safety cannot be guaranteed.) @@ -1146,4 +1220,4 @@ The shift points are modified by a filtering process in order to get the expecte The avoidance specific parameter configuration file can be located at `src/autoware/launcher/planning_launch/config/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/static_obstacle_avoidance.param.yaml`. -{{ json_to_markdown("planning/autoware_behavior_path_static_obstacle_avoidance_module/schema/static_obstacle_avoidance.schema.json") }} +{{ json_to_markdown("planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/schema/static_obstacle_avoidance.schema.json") }} diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/config/static_obstacle_avoidance.param.yaml b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/config/static_obstacle_avoidance.param.yaml index 884812d0db716..3087ccc93934b 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/config/static_obstacle_avoidance.param.yaml +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/config/static_obstacle_avoidance.param.yaml @@ -5,13 +5,13 @@ resample_interval_for_planning: 0.3 # [m] FOR DEVELOPER resample_interval_for_output: 4.0 # [m] FOR DEVELOPER - # avoidance module common setting - enable_bound_clipping: false - disable_path_update: false - + # drivable lane setting. this module is able to use not only current lane but also right/left lane + # if the current lane(=lanelet::Lanelet) and the right/left lane share the boundary(=lanelet::Linestring) in HDMap. + # "current_lane" : use only current lane. this module doesn't use adjacent lane to avoid object. + # "same_direction_lane" : this module uses same direction lane to avoid object if need. + # "opposite_direction_lane": this module uses both same direction and opposite direction lane. + use_lane_type: "opposite_direction_lane" # drivable area setting - use_adjacent_lane: true - use_opposite_lane: true use_intersection_areas: true use_hatched_road_markings: true use_freespace_areas: true @@ -178,6 +178,7 @@ safety_check_backward_distance: 100.0 # [m] hysteresis_factor_expand_rate: 1.5 # [-] hysteresis_factor_safe_count: 3 # [-] + collision_check_yaw_diff_threshold: 3.1416 # [rad] # predicted path parameters min_velocity: 1.38 # [m/s] max_velocity: 50.0 # [m/s] @@ -284,6 +285,19 @@ max_acceleration: 0.5 # [m/ss] min_velocity_to_limit_max_acceleration: 2.78 # [m/ss] + # path generation method. select "shift_line_base" or "optimization_base" or "both". + # "shift_line_base" : Create avoidance path based on shift line. + # User can control avoidance maneuver execution via RTC. + # However, this method doesn't support complex avoidance scenario (e.g. S-shape maneuver). + # "optimization_base": This module selects avoidance target object + # and bpp module clips drivable area based on avoidance target object polygon shape. + # But this module doesn't modify the path shape. + # On the other hand, autoware_path_optimizer module optimizes path shape instead of this module + # so that the path can be within drivable area. This method is able to deal with complex avoidance scenario. + # However, user can't control avoidance manuever execution. + # "both" : Use both method. + path_generation_method: "shift_line_base" + shift_line_pipeline: trim: quantize_size: 0.1 diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/avoidance_design.fig.drawio.svg b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/avoidance_design.fig.drawio.svg deleted file mode 100644 index d0563e9f2f542..0000000000000 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/avoidance_design.fig.drawio.svg +++ /dev/null @@ -1,668 +0,0 @@ - - - - - - - - - - - - - -
-
-
- Calculate avoidance shift -
- from target obstacles -
-
-
-
- Calculate avoidance shift... -
-
- - - - - - - - - - - - - - - - - -
-
-
- shift length = avoid margin -
- + ego vehicle width / 2 -
-
-
-
- shift length = avoid marg... -
-
- - - - - - -
-
-
- The shift gets sharp -
- if it is close to ego -
- up to the maximum jerk. -
-
-
-
- The shift gets sharp... -
-
- - - - - - -
-
-
- The avoidance shift is basically calculated from nominal jerk ego vehicle speed. -
-
-
-
- The avoidance shift is ba... -
-
- - - - - - - -
-
-
- This is not a target vehicle -
- since it is on the center line. -
-
-
-
- This is not a target vehi... -
-
- - - - -
-
-
- The direction of avoidance is determined by the position of obstacles, whether it is on the left or right of the center line. -
-
-
-
- The direction of avoidanc... -
-
- - - - - - -
-
-
- Merge all shifts -
-
-
-
- Merge all shifts -
-
- - - - - - - - - - - - - - -
-
-
- For multiple avoidance shifts in the same direction, take the largest one. -
-
-
-
- For multiple avoidance sh... -
-
- - - - - -
-
-
- For multiple avoidance shifts in the different direction, take the sum of both. -
-
-
-
- For multiple avoidance... -
-
- - - - - - - - - - - - -
-
-
- Pick up the shift points where the gradient of the shift changes. -
-
-
-
- Pick up the shift points... -
-
- - - - - - - - - - - - - -
-
-
- Trim shift points -
-
-
-
- Trim shift points -
-
- - - - - - -
-
-
- Start avoiding as soon as getting back to the center line. Remove these points to avoid obstacles at the same shift. -
-
-
-
- Start avoiding as soon a... -
-
- - - - - - -
-
-
- Points that do not have a large effect on the overall shift will be deleted. -
-
-
-
- Points that do not have... -
-
- - - - - - - - - - - - - - - - - - - - - -
-
-
- Generate path -
-
-
-
- Generate path -
-
- - - - -
-
-
- Each shift points are connected by a Clothoid-like curve. -
-
-
-
- Each shift points... -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - Text is not SVG - cannot display - - -
diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/intersection_problem.drawio.svg b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/intersection_problem.drawio.svg deleted file mode 100644 index 67d21dfd78a09..0000000000000 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/intersection_problem.drawio.svg +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
Parked vehicle
-
-
-
- Parked vehicle -
-
- - - -
-
-
- Normal avoidance will block the opposite lane -
-
-
-
- Normal avoidance will block the opposite lane -
-
- - - -
-
-
- So, it should avoid inside the ego lane -
-
-
-
- So, it should avoid inside the ego lan... -
-
- - - -
-
-
- Or, wait behind the object -
- until the traffic light turns green. -
-
-
-
- Or, wait behind the object... -
-
-
- - - - Viewer does not support full SVG 1.1 - - -
diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/adjust_margin.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/adjust_margin.png new file mode 100644 index 0000000000000..ccb1f8c671234 Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/adjust_margin.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/do_nothing.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/do_nothing.png new file mode 100644 index 0000000000000..9301382dcd093 Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/do_nothing.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/hard_margin.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/hard_margin.png new file mode 100644 index 0000000000000..5578d8443044f Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/hard_margin.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/insufficient_drivable_space.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/insufficient_drivable_space.png new file mode 100644 index 0000000000000..18ac89f6dceef Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/insufficient_drivable_space.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/lateral.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/lateral.png index 8d8512f042922..4ca0627274ba6 100644 Binary files a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/lateral.png and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/lateral.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/margin.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/margin.png index 8920a7be56ff9..e5eba89ac7f8c 100644 Binary files a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/margin.png and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/margin.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/must_avoid.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/must_avoid.png new file mode 100644 index 0000000000000..95ba285fb449a Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/must_avoid.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/pass_through.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/pass_through.png new file mode 100644 index 0000000000000..19b5cfaa07626 Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/pass_through.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/soft_hard.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/soft_hard.png new file mode 100644 index 0000000000000..a92b819b94d1b Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/path_generation/soft_hard.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/target_vehicle_selection.svg b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/target_vehicle_selection.svg deleted file mode 100644 index 00802b074cdd7..0000000000000 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/target_vehicle_selection.svg +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- Ego -
-
-
-
- Ego -
-
- - - - -
-
-
- road shoulder -
-
-
-
- road shoulder -
-
- - - - - - -
-
-
- center line -
-
-
-
- center line -
-
- - - - - - - -
-
-
- threshold_distance_object_is_on_center -
-
-
-
- thresh... -
-
- - - - - - - -
-
-
- Object -
-
-
-
- Object -
-
- - - - -
-
-
- object -
- center -
-
-
-
- object... -
-
- - - - - - - -
-
-
- shiftable_length -
-
-
-
- shiftable_l... -
-
- - - - -
-
-
- shift_length -
-
-
-
- shift_length -
-
- - - - -
-
-
- ego lane -
-
-
-
- ego lane -
-
- - - - - - - -
-
-
- detection_area_left_expand_dist -
-
-
-
- detection_a... -
-
- - - - - - - - -
-
-
- object_check_forward_distance -
-
-
-
- object... -
-
- - - - -
-
-
- object_check_backward_distance -
-
-
-
- object... -
-
- - - - - - - - -
-
-
- detection area -
-
-
-
- detect... -
-
-
- - - - Text is not SVG - cannot display - - -
diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/limit_shift_length.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/limit_shift_length.png new file mode 100644 index 0000000000000..0cb9eb893943c Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/limit_shift_length.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/return_after_stop_line.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/return_after_stop_line.png new file mode 100644 index 0000000000000..1e2b0ea95d3b9 Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/return_after_stop_line.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/return_before_stop_line.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/return_before_stop_line.png new file mode 100644 index 0000000000000..7e0bdd704ce58 Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/return_before_stop_line.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/shift_from_current_pos.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/shift_from_current_pos.png new file mode 100644 index 0000000000000..bcc1298670eba Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/shift_from_current_pos.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/shift_from_stop_line.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/shift_from_stop_line.png new file mode 100644 index 0000000000000..0830f516afa7f Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/shift_from_stop_line.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/traffic_light.png b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/traffic_light.png new file mode 100644 index 0000000000000..ae566bf833484 Binary files /dev/null and b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/images/traffic_light/traffic_light.png differ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/data_structs.hpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/data_structs.hpp index 53e7c2f341926..d02b39047e71c 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/data_structs.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/data_structs.hpp @@ -101,12 +101,8 @@ struct AvoidanceParameters // computational cost for latter modules. double resample_interval_for_output = 3.0; - // enable avoidance to be perform only in lane with same direction - bool use_adjacent_lane{true}; - - // enable avoidance to be perform in opposite lane direction - // to use this, enable_avoidance_over_same_direction need to be set to true. - bool use_opposite_lane{true}; + // drivable lane config + std::string use_lane_type{"current_lane"}; // if this param is true, it reverts avoidance path when the path is no longer needed. bool enable_cancel_maneuver{false}; @@ -120,9 +116,6 @@ struct AvoidanceParameters // enable yield maneuver. bool enable_yield_maneuver_during_shifting{false}; - // disable path update - bool disable_path_update{false}; - // use hatched road markings for avoidance bool use_hatched_road_markings{false}; @@ -226,6 +219,8 @@ struct AvoidanceParameters size_t hysteresis_factor_safe_count; double hysteresis_factor_expand_rate{0.0}; + double collision_check_yaw_diff_threshold{3.1416}; + bool consider_front_overhang{true}; bool consider_rear_overhang{true}; @@ -313,6 +308,9 @@ struct AvoidanceParameters // policy std::string policy_lateral_margin{"best_effort"}; + // path generation method. + std::string path_generation_method{"shift_line_base"}; + // target velocity matrix std::vector velocity_map; @@ -334,9 +332,6 @@ struct AvoidanceParameters // rss parameters utils::path_safety_checker::RSSparams rss_params{}; - // clip left and right bounds for objects - bool enable_bound_clipping{false}; - // debug bool enable_other_objects_marker{false}; bool enable_other_objects_info{false}; @@ -438,6 +433,9 @@ struct ObjectData // avoidance target // is ambiguous stopped vehicle. bool is_ambiguous{false}; + // is clip targe. + bool is_clip_target{false}; + // object direction. Direction direction{Direction::NONE}; diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/helper.hpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/helper.hpp index 04870464c2777..8c46affbc64e3 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/helper.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/helper.hpp @@ -177,14 +177,14 @@ class AvoidanceHelper double getShift(const Point & p) const { validate(); - const auto idx = autoware_motion_utils::findNearestIndex(prev_reference_path_.points, p); + const auto idx = autoware::motion_utils::findNearestIndex(prev_reference_path_.points, p); return prev_spline_shift_path_.shift_length.at(idx); } double getLinearShift(const Point & p) const { validate(); - const auto idx = autoware_motion_utils::findNearestIndex(prev_reference_path_.points, p); + const auto idx = autoware::motion_utils::findNearestIndex(prev_reference_path_.points, p); return prev_linear_shift_path_.shift_length.at(idx); } @@ -278,7 +278,7 @@ class AvoidanceHelper } const auto start_idx = data_->findEgoIndex(path.points); - const auto distance = autoware_motion_utils::calcSignedArcLength( + const auto distance = autoware::motion_utils::calcSignedArcLength( path.points, start_idx, max_v_point_.value().first.position); return std::make_pair(distance, max_v_point_.value().second); } @@ -290,7 +290,7 @@ class AvoidanceHelper const auto & a_now = data_->self_acceleration->accel.accel.linear.x; const auto & a_lim = use_hard_constraints ? p->max_deceleration : p->nominal_deceleration; const auto & j_lim = use_hard_constraints ? p->max_jerk : p->nominal_jerk; - const auto ret = autoware_motion_utils::calcDecelDistWithJerkAndAccConstraints( + const auto ret = autoware::motion_utils::calcDecelDistWithJerkAndAccConstraints( getEgoSpeed(), target_velocity, a_now, a_lim, j_lim, -1.0 * j_lim); if (!!ret) { @@ -449,14 +449,14 @@ class AvoidanceHelper const auto x_max_accel = v_neg_jerk * t_max_accel + p->max_acceleration * std::pow(t_max_accel, 2.0) / 2.0; - const auto point = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto point = autoware::motion_utils::calcLongitudinalOffsetPose( path.points, getEgoPosition(), x_neg_jerk + x_max_accel); if (point.has_value()) { max_v_point_ = std::make_pair(point.value(), v_max); return; } - const auto x_end = autoware_motion_utils::calcSignedArcLength( + const auto x_end = autoware::motion_utils::calcSignedArcLength( path.points, getEgoPosition(), path.points.size() - 1); const auto t_end = (std::sqrt(v0 * v0 + 2.0 * p->max_acceleration * x_end) - v0) / p->max_acceleration; diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/parameter_helper.hpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/parameter_helper.hpp index 0000790a3adde..84cf7c4e33d26 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/parameter_helper.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/parameter_helper.hpp @@ -26,8 +26,8 @@ namespace autoware::behavior_path_planner { +using autoware::universe_utils::getOrDeclareParameter; using autoware_perception_msgs::msg::ObjectClassification; -using autoware_universe_utils::getOrDeclareParameter; AvoidanceParameters getParameter(rclcpp::Node * node) { @@ -39,15 +39,14 @@ AvoidanceParameters getParameter(rclcpp::Node * node) getOrDeclareParameter(*node, ns + "resample_interval_for_planning"); p.resample_interval_for_output = getOrDeclareParameter(*node, ns + "resample_interval_for_output"); - p.enable_bound_clipping = getOrDeclareParameter(*node, ns + "enable_bound_clipping"); - p.disable_path_update = getOrDeclareParameter(*node, ns + "disable_path_update"); + p.path_generation_method = + getOrDeclareParameter(*node, ns + "path_generation_method"); } // drivable area { const std::string ns = "avoidance."; - p.use_adjacent_lane = getOrDeclareParameter(*node, ns + "use_adjacent_lane"); - p.use_opposite_lane = getOrDeclareParameter(*node, ns + "use_opposite_lane"); + p.use_lane_type = getOrDeclareParameter(*node, ns + "use_lane_type"); p.use_intersection_areas = getOrDeclareParameter(*node, ns + "use_intersection_areas"); p.use_hatched_road_markings = getOrDeclareParameter(*node, ns + "use_hatched_road_markings"); @@ -199,6 +198,8 @@ AvoidanceParameters getParameter(rclcpp::Node * node) getOrDeclareParameter(*node, ns + "hysteresis_factor_expand_rate"); p.hysteresis_factor_safe_count = getOrDeclareParameter(*node, ns + "hysteresis_factor_safe_count"); + p.collision_check_yaw_diff_threshold = + getOrDeclareParameter(*node, ns + "collision_check_yaw_diff_threshold"); } // safety check predicted path params diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp index ecd83c31f32c8..635edb7c84f40 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/scene.hpp @@ -115,7 +115,7 @@ class StaticObstacleAvoidanceModule : public SceneModuleInterface const auto ego_idx = planner_data_->findEgoIndex(path.points); for (const auto & left_shift : left_shift_array_) { - const double start_distance = autoware_motion_utils::calcSignedArcLength( + const double start_distance = autoware::motion_utils::calcSignedArcLength( path.points, ego_idx, left_shift.start_pose.position); const double finish_distance = start_distance + left_shift.relative_longitudinal; rtc_interface_ptr_map_.at("left")->updateCooperateStatus( @@ -128,7 +128,7 @@ class StaticObstacleAvoidanceModule : public SceneModuleInterface } for (const auto & right_shift : right_shift_array_) { - const double start_distance = autoware_motion_utils::calcSignedArcLength( + const double start_distance = autoware::motion_utils::calcSignedArcLength( path.points, ego_idx, right_shift.start_pose.position); const double finish_distance = start_distance + right_shift.relative_longitudinal; rtc_interface_ptr_map_.at("right")->updateCooperateStatus( @@ -436,6 +436,8 @@ class StaticObstacleAvoidanceModule : public SceneModuleInterface UUID candidate_uuid_; + ObjectDataArray clip_objects_; + // TODO(Satoshi OTA) create detected object manager. ObjectDataArray registered_objects_; diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/type_alias.hpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/type_alias.hpp index 0ac860fc41882..cfbd3f89308ac 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/type_alias.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/type_alias.hpp @@ -53,22 +53,22 @@ using tier4_planning_msgs::msg::AvoidanceDebugMsgArray; using tier4_rtc_msgs::msg::State; // tier4 utils functions -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::calcDistance2d; -using autoware_universe_utils::calcLateralDeviation; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::calcYawDeviation; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::createQuaternionFromRPY; -using autoware_universe_utils::getPoint; -using autoware_universe_utils::getPose; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; -using autoware_universe_utils::pose2transform; -using autoware_universe_utils::toHexString; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::calcDistance2d; +using autoware::universe_utils::calcLateralDeviation; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::calcYawDeviation; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::createQuaternionFromRPY; +using autoware::universe_utils::getPoint; +using autoware::universe_utils::getPose; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; +using autoware::universe_utils::pose2transform; +using autoware::universe_utils::toHexString; } // namespace autoware::behavior_path_planner #endif // AUTOWARE__BEHAVIOR_PATH_STATIC_OBSTACLE_AVOIDANCE_MODULE__TYPE_ALIAS_HPP_ diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/utils.hpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/utils.hpp index 76f8b1e53955a..3797fe0d55147 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/utils.hpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/include/autoware/behavior_path_static_obstacle_avoidance_module/utils.hpp @@ -34,7 +34,8 @@ using autoware::behavior_path_planner::utils::path_safety_checker::PoseWithVeloc using autoware::behavior_path_planner::utils::path_safety_checker::PredictedPathWithPolygon; static constexpr const char * logger_namespace = - "planning.scenario_planning.lane_driving.behavior_planning.behavior_path_planner.avoidance.utils"; + "planning.scenario_planning.lane_driving.behavior_planning.behavior_path_planner.static_obstacle_" + "avoidance.utils"; bool isOnRight(const ObjectData & obj); @@ -121,6 +122,8 @@ void updateRegisteredObject( ObjectDataArray & registered_objects, const ObjectDataArray & now_objects, const std::shared_ptr & parameters); +void updateClipObject(ObjectDataArray & clip_objects, AvoidancePlanningData & data); + void compensateDetectionLost( const ObjectDataArray & registered_objects, ObjectDataArray & now_objects, ObjectDataArray & other_objects); diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/package.xml b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/package.xml index ea6d405f80f41..f997b30da9ffa 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/package.xml +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/package.xml @@ -23,6 +23,7 @@ autoware_behavior_path_planner autoware_behavior_path_planner_common + autoware_lanelet2_extension autoware_motion_utils autoware_objects_of_interest_marker_interface autoware_perception_msgs @@ -31,7 +32,6 @@ autoware_universe_utils autoware_vehicle_info_utils geometry_msgs - lanelet2_extension magic_enum pluginlib rclcpp diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/schema/static_obstacle_avoidance.schema.json b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/schema/static_obstacle_avoidance.schema.json index cb150514ac372..db3215fa8d238 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/schema/static_obstacle_avoidance.schema.json +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/schema/static_obstacle_avoidance.schema.json @@ -16,25 +16,17 @@ "description": "Path resample interval for output path. Too short interval increases computational cost for latter modules.", "default": "4.0" }, - "enable_bound_clipping": { - "type": "boolean", - "description": "Enable clipping left and right bound of drivable area when obstacles are in the drivable area.", - "default": "false" - }, - "disable_path_update": { - "type": "boolean", - "description": "Disable path update.", - "default": "false" - }, - "use_adjacent_lane": { - "type": "boolean", - "description": "Extend avoidance trajectory to adjacent lanes that has same direction. If false, avoidance only happen in current lane.", - "default": "true" + "path_generation_method": { + "type": "string", + "enum": ["shift_line_base", "optimization_base", "both"], + "description": "Path generation method.", + "default": "shift_line_base" }, - "use_opposite_lane": { - "type": "boolean", - "description": "Extend avoidance trajectory to opposite direction lane. `use_adjacent_lane` must be `true` to take effects.", - "default": "true" + "use_lane_type": { + "type": "string", + "enum": ["current_lane", "same_direction_lane", "opposite_direction_lane"], + "description": "Drivable lane configuration.", + "default": "opposite_direction_lane" }, "use_hatched_road_markings": { "type": "boolean", @@ -931,6 +923,11 @@ "description": "Hysteresis count that be used for chattering prevention.", "default": 10 }, + "collision_check_yaw_diff_threshold": { + "type": "number", + "description": "Max yaw difference between ego and object when doing collision check", + "default": 3.1416 + }, "min_velocity": { "type": "number", "description": "Minimum velocity of the ego vehicle's predicted path.", @@ -1445,9 +1442,8 @@ "required": [ "resample_interval_for_planning", "resample_interval_for_output", - "enable_bound_clipping", - "use_adjacent_lane", - "use_opposite_lane", + "path_generation_method", + "use_lane_type", "use_hatched_road_markings", "use_intersection_areas", "use_freespace_areas", diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/debug.cpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/debug.cpp index 6b28e33759b6a..9c771224e89eb 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/debug.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/debug.cpp @@ -17,7 +17,7 @@ #include "autoware/behavior_path_planner_common/marker_utils/utils.hpp" #include "autoware/behavior_path_planner_common/utils/utils.hpp" -#include +#include #include #include @@ -147,6 +147,7 @@ MarkerArray createObjectInfoMarkerArray( string_stream << std::fixed << std::setprecision(2) << std::boolalpha; string_stream << "ratio:" << object.shiftable_ratio << " [-]\n" << "lateral:" << object.to_centerline << " [m]\n" + << "clip:" << object.is_clip_target << " [-]\n" << "necessity:" << object.avoid_required << " [-]\n" << "stoppable:" << object.is_stoppable << " [-]\n" << "stop_factor:" << object.to_stop_factor_distance << " [m]\n" @@ -573,55 +574,45 @@ MarkerArray createDebugMarkerArray( addObjects(data.other_objects, ObjectInfo::AMBIGUOUS_STOPPED_VEHICLE); } - // shift line pre-process if (parameters->enable_shift_line_marker) { + // shift line pre-process addAvoidLine(debug.step1_registered_shift_line, "step1_registered_shift_line", 0.2, 0.2, 1.0); addAvoidLine(debug.step1_current_shift_line, "step1_current_shift_line", 0.2, 0.4, 0.8, 0.3); addAvoidLine(debug.step1_merged_shift_line, "step1_merged_shift_line", 0.2, 0.6, 0.6, 0.3); addAvoidLine(debug.step1_filled_shift_line, "step1_filled_shift_line", 0.2, 0.8, 0.4, 0.3); addAvoidLine(debug.step1_return_shift_line, "step1_return_shift_line", 0.2, 1.0, 0.2, 0.3); - } - // merge process - if (parameters->enable_shift_line_marker) { + // merge process addAvoidLine(debug.step2_merged_shift_line, "step2_merged_shift_line", 0.2, 1.0, 0.0, 0.3); - } - // trimming process - if (parameters->enable_shift_line_marker) { + // trimming process addAvoidLine(debug.step3_grad_filtered_1st, "step3_grad_filtered_1st", 0.2, 0.8, 0.0, 0.3); addAvoidLine(debug.step3_grad_filtered_2nd, "step3_grad_filtered_2nd", 0.4, 0.6, 0.0, 0.3); addAvoidLine(debug.step3_grad_filtered_3rd, "step3_grad_filtered_3rd", 0.6, 0.4, 0.0, 0.3); - } - // registering process - if (parameters->enable_shift_line_marker) { + // registering process addShiftLine(shifter.getShiftLines(), "step4_old_shift_line", 1.0, 1.0, 0.0, 0.3); addAvoidLine(data.new_shift_line, "step4_new_shift_line", 1.0, 0.0, 0.0, 0.3); - } - - // safety check - if (parameters->enable_safety_check_marker) { - add(showSafetyCheckInfo(debug.collision_check, "object_debug_info")); - add(showPredictedPath(debug.collision_check, "ego_predicted_path")); - add(showPolygon(debug.collision_check, "ego_and_target_polygon_relation")); - } - // shift length - if (parameters->enable_shift_line_marker) { + // shift length addShiftLength(debug.pos_shift, "merged_length_pos", 0.0, 0.7, 0.5); addShiftLength(debug.neg_shift, "merged_length_neg", 0.0, 0.5, 0.7); addShiftLength(debug.total_shift, "merged_length_total", 0.99, 0.4, 0.2); - } - // shift grad - if (parameters->enable_shift_line_marker) { + // shift grad addShiftGrad(debug.pos_shift_grad, debug.pos_shift, "merged_grad_pos", 0.0, 0.7, 0.5); addShiftGrad(debug.neg_shift_grad, debug.neg_shift, "merged_grad_neg", 0.0, 0.5, 0.7); addShiftGrad(debug.total_forward_grad, debug.total_shift, "grad_forward", 0.99, 0.4, 0.2); addShiftGrad(debug.total_backward_grad, debug.total_shift, "grad_backward", 0.4, 0.2, 0.9); } + // safety check + if (parameters->enable_safety_check_marker) { + add(showSafetyCheckInfo(debug.collision_check, "object_debug_info")); + add(showPredictedPath(debug.collision_check, "ego_predicted_path")); + add(showPolygon(debug.collision_check, "ego_and_target_polygon_relation")); + } + // detection area if (parameters->enable_detection_area_marker) { size_t i = 0; @@ -691,7 +682,7 @@ std::string toStrInfo(const autoware::behavior_path_planner::AvoidLineArray & ap } std::string toStrInfo(const autoware::behavior_path_planner::AvoidLine & ap) { - using autoware_universe_utils::toHexString; + using autoware::universe_utils::toHexString; std::stringstream pids; for (const auto pid : ap.parent_ids) { diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/manager.cpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/manager.cpp index 0ca2b9c4e0d21..2d02f33e19870 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/manager.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/manager.cpp @@ -28,8 +28,8 @@ namespace autoware::behavior_path_planner { void StaticObstacleAvoidanceModuleManager::init(rclcpp::Node * node) { + using autoware::universe_utils::getOrDeclareParameter; using autoware_perception_msgs::msg::ObjectClassification; - using autoware_universe_utils::getOrDeclareParameter; // init manager interface initInterface(node, {"left", "right"}); @@ -42,8 +42,8 @@ void StaticObstacleAvoidanceModuleManager::init(rclcpp::Node * node) void StaticObstacleAvoidanceModuleManager::updateModuleParams( const std::vector & parameters) { + using autoware::universe_utils::updateParam; using autoware_perception_msgs::msg::ObjectClassification; - using autoware_universe_utils::updateParam; auto p = parameters_; diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp index 6600846ce04a1..b0e7d68c75d44 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/scene.cpp @@ -24,8 +24,8 @@ #include "autoware/behavior_path_static_obstacle_avoidance_module/debug.hpp" #include "autoware/behavior_path_static_obstacle_avoidance_module/utils.hpp" -#include -#include +#include +#include #include #include @@ -278,7 +278,7 @@ void StaticObstacleAvoidanceModule::fillFundamentalData( // arclength from ego pose (used in many functions) data.arclength_from_ego = utils::calcPathArcLengthArray( data.reference_path, 0, data.reference_path.points.size(), - autoware_motion_utils::calcSignedArcLength(data.reference_path.points, getEgoPosition(), 0)); + autoware::motion_utils::calcSignedArcLength(data.reference_path.points, getEgoPosition(), 0)); data.to_return_point = utils::static_obstacle_avoidance::calcDistanceToReturnDeadLine( data.current_lanelets, data.reference_path_rough, planner_data_, parameters_); @@ -294,6 +294,7 @@ void StaticObstacleAvoidanceModule::fillFundamentalData( registered_objects_, data.target_objects, parameters_); utils::static_obstacle_avoidance::compensateDetectionLost( registered_objects_, data.target_objects, data.other_objects); + utils::static_obstacle_avoidance::updateClipObject(clip_objects_, data); // sort object order by longitudinal distance std::sort(data.target_objects.begin(), data.target_objects.end(), [](auto a, auto b) { @@ -378,7 +379,7 @@ ObjectData StaticObstacleAvoidanceModule::createObjectData( const auto & path_points = data.reference_path.points; const auto & object_pose = object.kinematics.initial_pose_with_covariance.pose; const auto object_closest_index = - autoware_motion_utils::findNearestIndex(path_points, object_pose.position); + autoware::motion_utils::findNearestIndex(path_points, object_pose.position); const auto object_closest_pose = path_points.at(object_closest_index).point.pose; const auto object_type = utils::getHighestProbLabel(object.classification); const auto object_parameter = parameters_->object_parameters.at(object_type); @@ -424,7 +425,7 @@ bool StaticObstacleAvoidanceModule::canYieldManeuver(const AvoidancePlanningData const auto registered_lines = path_shifter_.getShiftLines(); if (!registered_lines.empty()) { const size_t idx = planner_data_->findEgoIndex(path_shifter_.getReferencePath().points); - const auto prepare_distance = autoware_motion_utils::calcSignedArcLength( + const auto prepare_distance = autoware::motion_utils::calcSignedArcLength( path_shifter_.getReferencePath().points, idx, registered_lines.front().start_idx); if (!helper_->isEnoughPrepareDistance(prepare_distance)) { RCLCPP_DEBUG( @@ -642,7 +643,7 @@ void StaticObstacleAvoidanceModule::fillDebugData( const auto prepare_distance = helper_->getNominalPrepareDistance(); const auto total_avoid_distance = prepare_distance + avoidance_distance + constant_distance; - dead_pose_ = autoware_motion_utils::calcLongitudinalOffsetPose( + dead_pose_ = autoware::motion_utils::calcLongitudinalOffsetPose( data.reference_path.points, getEgoPosition(), o_front.longitudinal - total_avoid_distance); if (!dead_pose_) { @@ -653,7 +654,7 @@ void StaticObstacleAvoidanceModule::fillDebugData( void StaticObstacleAvoidanceModule::updateEgoBehavior( const AvoidancePlanningData & data, ShiftedPath & path) { - if (parameters_->disable_path_update) { + if (parameters_->path_generation_method == "optimization_base") { return; } @@ -755,7 +756,7 @@ bool StaticObstacleAvoidanceModule::isSafePath( auto current_debug_data = utils::path_safety_checker::createObjectDebug(object); const auto obj_polygon = - autoware_universe_utils::toPolygon2d(object.initial_pose.pose, object.shape); + autoware::universe_utils::toPolygon2d(object.initial_pose.pose, object.shape); const auto is_object_front = utils::path_safety_checker::isTargetObjectFront(getEgoPose(), obj_polygon, p.vehicle_info); @@ -780,7 +781,8 @@ bool StaticObstacleAvoidanceModule::isSafePath( for (const auto & obj_path : obj_predicted_paths) { if (!utils::path_safety_checker::checkCollision( shifted_path.path, ego_predicted_path, object, obj_path, p, parameters_->rss_params, - hysteresis_factor, current_debug_data.second)) { + hysteresis_factor, parameters_->collision_check_yaw_diff_threshold, + current_debug_data.second)) { utils::path_safety_checker::updateCollisionCheckDebugMap( debug.collision_check, current_debug_data, false); @@ -812,7 +814,7 @@ PathWithLaneId StaticObstacleAvoidanceModule::extendBackwardLength( return a.start_idx < b.start_idx; }); return std::max( - max_dist, autoware_motion_utils::calcSignedArcLength( + max_dist, autoware::motion_utils::calcSignedArcLength( previous_path.points, lines.front().start.position, getEgoPosition())); }(); @@ -821,7 +823,7 @@ PathWithLaneId StaticObstacleAvoidanceModule::extendBackwardLength( planner_data_->parameters.backward_path_length, longest_dist_to_shift_point + extra_margin); const size_t orig_ego_idx = planner_data_->findEgoIndex(original_path.points); - const auto prev_ego_idx = autoware_motion_utils::findNearestSegmentIndex( + const auto prev_ego_idx = autoware::motion_utils::findNearestSegmentIndex( previous_path.points, getPose(original_path.points.at(orig_ego_idx)), std::numeric_limits::max(), planner_data_->parameters.ego_nearest_yaw_threshold); if (!prev_ego_idx) { @@ -832,7 +834,7 @@ PathWithLaneId StaticObstacleAvoidanceModule::extendBackwardLength( for (size_t i = 0; i < prev_ego_idx; ++i) { if ( backward_length > - autoware_motion_utils::calcSignedArcLength(previous_path.points, clip_idx, *prev_ego_idx)) { + autoware::motion_utils::calcSignedArcLength(previous_path.points, clip_idx, *prev_ego_idx)) { break; } clip_idx = i; @@ -925,7 +927,7 @@ BehaviorModuleOutput StaticObstacleAvoidanceModule::plan() constexpr double threshold = 1.0; const auto current_seg_idx = planner_data_->findEgoSegmentIndex(path.points); const auto lateral_deviation = - autoware_motion_utils::calcLateralOffset(path.points, getEgoPosition(), current_seg_idx); + autoware::motion_utils::calcLateralOffset(path.points, getEgoPosition(), current_seg_idx); return std::abs(lateral_deviation) > threshold; }; @@ -998,19 +1000,14 @@ BehaviorModuleOutput StaticObstacleAvoidanceModule::plan() // expand freespace areas current_drivable_area_info.enable_expanding_freespace_areas = parameters_->use_freespace_areas; // generate obstacle polygons - if (parameters_->enable_bound_clipping) { - ObjectDataArray clip_objects; - // If avoidance is executed by both behavior and motion, only non-avoidable object will be - // extracted from the drivable area. - std::for_each( - data.target_objects.begin(), data.target_objects.end(), [&](const auto & object) { - if (!object.is_avoidable) clip_objects.push_back(object); - }); + current_drivable_area_info.obstacles.clear(); + + if ( + parameters_->path_generation_method == "optimization_base" || + parameters_->path_generation_method == "both") { current_drivable_area_info.obstacles = utils::static_obstacle_avoidance::generateObstaclePolygonsForDrivableArea( - clip_objects, parameters_, planner_data_->parameters.vehicle_width / 2.0); - } else { - current_drivable_area_info.obstacles.clear(); + clip_objects_, parameters_, planner_data_->parameters.vehicle_width / 2.0); } output.drivable_area_info = utils::combineDrivableAreaInfo( @@ -1077,7 +1074,7 @@ BehaviorModuleOutput StaticObstacleAvoidanceModule::planWaitingApproval() void StaticObstacleAvoidanceModule::updatePathShifter(const AvoidLineArray & shift_lines) { - if (parameters_->disable_path_update) { + if (parameters_->path_generation_method == "optimization_base") { return; } @@ -1471,7 +1468,7 @@ void StaticObstacleAvoidanceModule::insertReturnDeadLine( // Consider the difference in path length between the shifted path and original path (the path // that is shifted inward has a shorter distance to the end of the path than the other one.) const auto & to_reference_path_end = data.arclength_from_ego.back(); - const auto to_shifted_path_end = autoware_motion_utils::calcSignedArcLength( + const auto to_shifted_path_end = autoware::motion_utils::calcSignedArcLength( shifted_path.path.points, getEgoPosition(), shifted_path.path.points.size() - 1); const auto buffer = std::max(0.0, to_shifted_path_end - to_reference_path_end); @@ -1509,7 +1506,7 @@ void StaticObstacleAvoidanceModule::insertReturnDeadLine( const auto start_idx = planner_data_->findEgoIndex(shifted_path.path.points); for (size_t i = start_idx; i < shifted_path.path.points.size(); ++i) { const auto distance_from_ego = - autoware_motion_utils::calcSignedArcLength(shifted_path.path.points, start_idx, i); + autoware::motion_utils::calcSignedArcLength(shifted_path.path.points, start_idx, i); // slow down speed is inserted only in front of the object. const auto shift_longitudinal_distance = to_stop_line - distance_from_ego; @@ -1602,7 +1599,7 @@ void StaticObstacleAvoidanceModule::insertStopPoint( return shifted_path.path.points.size() - 1; }(); - const auto stop_distance = autoware_motion_utils::calcSignedArcLength( + const auto stop_distance = autoware::motion_utils::calcSignedArcLength( shifted_path.path.points, getEgoPosition(), stop_idx); // If we don't need to consider deceleration constraints, insert a deceleration point @@ -1715,7 +1712,7 @@ void StaticObstacleAvoidanceModule::insertPrepareVelocity(ShiftedPath & shifted_ const auto start_idx = planner_data_->findEgoIndex(shifted_path.path.points); for (size_t i = start_idx; i < shifted_path.path.points.size(); ++i) { const auto distance_from_ego = - autoware_motion_utils::calcSignedArcLength(shifted_path.path.points, start_idx, i); + autoware::motion_utils::calcSignedArcLength(shifted_path.path.points, start_idx, i); // slow down speed is inserted only in front of the object. const auto shift_longitudinal_distance = distance_to_object - distance_from_ego; @@ -1732,7 +1729,7 @@ void StaticObstacleAvoidanceModule::insertPrepareVelocity(ShiftedPath & shifted_ shifted_path.path.points.at(i).point.longitudinal_velocity_mps = std::min(v_original, v_insert); } - slow_pose_ = autoware_motion_utils::calcLongitudinalOffsetPose( + slow_pose_ = autoware::motion_utils::calcLongitudinalOffsetPose( shifted_path.path.points, start_idx, distance_to_object); } @@ -1759,7 +1756,7 @@ void StaticObstacleAvoidanceModule::insertAvoidanceVelocity(ShiftedPath & shifte const auto start_idx = planner_data_->findEgoIndex(shifted_path.path.points); for (size_t i = start_idx; i < shifted_path.path.points.size(); ++i) { const auto distance_from_ego = - autoware_motion_utils::calcSignedArcLength(shifted_path.path.points, start_idx, i); + autoware::motion_utils::calcSignedArcLength(shifted_path.path.points, start_idx, i); // slow down speed is inserted only in front of the object. const auto accel_distance = distance_to_accel_end_point - distance_from_ego; @@ -1779,7 +1776,7 @@ void StaticObstacleAvoidanceModule::insertAvoidanceVelocity(ShiftedPath & shifte shifted_path.path.points.at(i).point.longitudinal_velocity_mps = std::min(v_original, v_target); } - slow_pose_ = autoware_motion_utils::calcLongitudinalOffsetPose( + slow_pose_ = autoware::motion_utils::calcLongitudinalOffsetPose( shifted_path.path.points, start_idx, distance_to_accel_end_point); } diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/shift_line_generator.cpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/shift_line_generator.cpp index 7580623cff714..a171ae9161041 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/shift_line_generator.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/shift_line_generator.cpp @@ -355,7 +355,7 @@ AvoidOutlines ShiftLineGenerator::generateAvoidOutline( return false; } const auto goal_pose = data_->route_handler->getGoalPose(); - const double goal_longitudinal_distance = autoware_motion_utils::calcSignedArcLength( + const double goal_longitudinal_distance = autoware::motion_utils::calcSignedArcLength( data.reference_path.points, 0, goal_pose.position); const bool is_return_shift_to_goal = std::abs(al_return.end_longitudinal - goal_longitudinal_distance) < @@ -365,7 +365,7 @@ AvoidOutlines ShiftLineGenerator::generateAvoidOutline( } const auto & object_pos = o.object.kinematics.initial_pose_with_covariance.pose.position; const bool has_object_near_goal = - autoware_universe_utils::calcDistance2d(goal_pose.position, object_pos) < + autoware::universe_utils::calcDistance2d(goal_pose.position, object_pos) < parameters_->object_check_goal_distance; return has_object_near_goal; }(); @@ -1026,7 +1026,7 @@ AvoidLineArray ShiftLineGenerator::addReturnShiftLine( if (utils::isAllowedGoalModification(data_->route_handler)) { const auto has_object_near_goal = std::any_of(data.target_objects.begin(), data.target_objects.end(), [&](const auto & o) { - return autoware_universe_utils::calcDistance2d( + return autoware::universe_utils::calcDistance2d( data_->route_handler->getGoalPose().position, o.object.kinematics.initial_pose_with_covariance.pose.position) < parameters_->object_check_goal_distance; @@ -1097,7 +1097,7 @@ AvoidLineArray ShiftLineGenerator::addReturnShiftLine( if (utils::isAllowedGoalModification(data_->route_handler)) { const bool has_last_shift_near_goal = std::any_of(data.target_objects.begin(), data.target_objects.end(), [&](const auto & o) { - return autoware_universe_utils::calcDistance2d( + return autoware::universe_utils::calcDistance2d( last_sl.end.position, o.object.kinematics.initial_pose_with_covariance.pose.position) < parameters_->object_check_goal_distance; diff --git a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/utils.cpp b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/utils.cpp index 2704829ad6a11..03fe48c6ab441 100644 --- a/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/utils.cpp +++ b/planning/behavior_path_planner/autoware_behavior_path_static_obstacle_avoidance_module/src/utils.cpp @@ -21,7 +21,7 @@ #include "autoware/behavior_path_static_obstacle_avoidance_module/data_structs.hpp" #include "autoware/behavior_path_static_obstacle_avoidance_module/utils.hpp" -#include +#include #include #include @@ -56,7 +56,7 @@ geometry_msgs::msg::Point32 createPoint32(const double x, const double y, const } geometry_msgs::msg::Polygon toMsg( - const autoware_universe_utils::Polygon2d & polygon, const double z) + const autoware::universe_utils::Polygon2d & polygon, const double z) { geometry_msgs::msg::Polygon ret; for (const auto & p : polygon.outer()) { @@ -68,14 +68,14 @@ geometry_msgs::msg::Polygon toMsg( template size_t findFirstNearestIndex(const T & points, const geometry_msgs::msg::Point & point) { - autoware_motion_utils::validateNonEmpty(points); + autoware::motion_utils::validateNonEmpty(points); double min_dist = std::numeric_limits::max(); size_t min_idx = 0; bool decreasing = false; for (size_t i = 0; i < points.size(); ++i) { - const auto dist = autoware_universe_utils::calcSquaredDistance2d(points.at(i), point); + const auto dist = autoware::universe_utils::calcSquaredDistance2d(points.at(i), point); if (dist < min_dist) { decreasing = true; min_dist = dist; @@ -104,7 +104,7 @@ size_t findFirstNearestSegmentIndex(const T & points, const geometry_msgs::msg:: } const double signed_length = - autoware_motion_utils::calcLongitudinalOffsetToSegment(points, nearest_idx, point); + autoware::motion_utils::calcLongitudinalOffsetToSegment(points, nearest_idx, point); if (signed_length <= 0) { return nearest_idx - 1; @@ -119,7 +119,7 @@ double calcSignedArcLengthToFirstNearestPoint( const geometry_msgs::msg::Point & dst_point) { try { - autoware_motion_utils::validateNonEmpty(points); + autoware::motion_utils::validateNonEmpty(points); } catch (const std::exception & e) { std::cerr << e.what() << std::endl; return 0.0; @@ -129,11 +129,11 @@ double calcSignedArcLengthToFirstNearestPoint( const size_t dst_seg_idx = findFirstNearestSegmentIndex(points, dst_point); const double signed_length_on_traj = - autoware_motion_utils::calcSignedArcLength(points, src_seg_idx, dst_seg_idx); + autoware::motion_utils::calcSignedArcLength(points, src_seg_idx, dst_seg_idx); const double signed_length_src_offset = - autoware_motion_utils::calcLongitudinalOffsetToSegment(points, src_seg_idx, src_point); + autoware::motion_utils::calcLongitudinalOffsetToSegment(points, src_seg_idx, src_point); const double signed_length_dst_offset = - autoware_motion_utils::calcLongitudinalOffsetToSegment(points, dst_seg_idx, dst_point); + autoware::motion_utils::calcLongitudinalOffsetToSegment(points, dst_seg_idx, dst_point); return signed_length_on_traj - signed_length_src_offset + signed_length_dst_offset; } @@ -329,7 +329,7 @@ bool isWithinIntersection( return false; } - const auto object_polygon = autoware_universe_utils::toPolygon2d(object.object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object.object); const auto polygon = route_handler->getLaneletMapPtr()->polygonLayer.get(std::atoi(area_id.c_str())); @@ -646,7 +646,7 @@ bool isNeverAvoidanceTarget( return true; } - const auto object_polygon = autoware_universe_utils::toPolygon2d(object.object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object.object); const auto is_disjoint_right_lane = boost::geometry::disjoint(object_polygon, right_lane.value().polygon2d().basicPolygon()); if (is_disjoint_right_lane) { @@ -669,7 +669,7 @@ bool isNeverAvoidanceTarget( return true; } - const auto object_polygon = autoware_universe_utils::toPolygon2d(object.object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object.object); const auto is_disjoint_left_lane = boost::geometry::disjoint(object_polygon, left_lane.value().polygon2d().basicPolygon()); if (is_disjoint_left_lane) { @@ -759,7 +759,7 @@ bool isSatisfiedWithCommonCondition( const auto ego_idx = planner_data->findEgoIndex(data.reference_path_rough.points); const auto to_goal_distance = rh->isInGoalRouteSection(data.current_lanelets.back()) - ? autoware_motion_utils::calcSignedArcLength( + ? autoware::motion_utils::calcSignedArcLength( data.reference_path_rough.points, ego_idx, data.reference_path_rough.points.size() - 1) : std::numeric_limits::max(); @@ -941,12 +941,12 @@ double getRoadShoulderDistance( ObjectData & object, const AvoidancePlanningData & data, const std::shared_ptr & planner_data) { - using autoware_universe_utils::Point2d; + using autoware::universe_utils::Point2d; using lanelet::utils::to2D; const auto & object_pose = object.object.kinematics.initial_pose_with_covariance.pose; const auto object_closest_index = - autoware_motion_utils::findNearestIndex(data.reference_path.points, object_pose.position); + autoware::motion_utils::findNearestIndex(data.reference_path.points, object_pose.position); const auto object_closest_pose = data.reference_path.points.at(object_closest_index).point.pose; const auto rh = planner_data->route_handler; @@ -969,7 +969,7 @@ double getRoadShoulderDistance( const auto p2 = calcOffsetPose(p_tmp, 0.0, (isOnRight(object) ? 100.0 : -100.0), 0.0).position; const auto opt_intersect = - autoware_universe_utils::intersect(p1.second, p2, bound.at(i - 1), bound.at(i)); + autoware::universe_utils::intersect(p1.second, p2, bound.at(i - 1), bound.at(i)); if (opt_intersect.has_value()) { intersects.emplace_back( @@ -987,7 +987,7 @@ double getRoadShoulderDistance( calcOffsetPose(p_tmp, 0.0, (isOnRight(object) ? -0.5 : 0.5) * envelope_polygon_width, 0.0) .position; const auto opt_intersect = - autoware_universe_utils::intersect(p1.second, p2, bound.at(i - 1), bound.at(i)); + autoware::universe_utils::intersect(p1.second, p2, bound.at(i - 1), bound.at(i)); if (opt_intersect.has_value()) { intersects.emplace_back( @@ -1036,8 +1036,8 @@ bool isWithinLanes( { const auto & rh = planner_data->route_handler; const auto & ego_pose = planner_data->self_odometry->pose.pose; - const auto transform = autoware_universe_utils::pose2transform(ego_pose); - const auto footprint = autoware_universe_utils::transformVector( + const auto transform = autoware::universe_utils::pose2transform(ego_pose); + const auto footprint = autoware::universe_utils::transformVector( planner_data->parameters.vehicle_info.createFootprint(), transform); lanelet::ConstLanelet closest_lanelet{}; @@ -1193,10 +1193,10 @@ void fillLongitudinalAndLengthByClosestEnvelopeFootprint( double min_distance = std::numeric_limits::max(); double max_distance = std::numeric_limits::lowest(); for (const auto & p : obj.envelope_poly.outer()) { - const auto point = autoware_universe_utils::createPoint(p.x(), p.y(), 0.0); + const auto point = autoware::universe_utils::createPoint(p.x(), p.y(), 0.0); // TODO(someone): search around first position where the ego should avoid the object. const double arc_length = - autoware_motion_utils::calcSignedArcLength(path.points, ego_pos, point); + autoware::motion_utils::calcSignedArcLength(path.points, ego_pos, point); min_distance = std::min(min_distance, arc_length); max_distance = std::max(max_distance, arc_length); } @@ -1211,9 +1211,9 @@ std::vector> calcEnvelopeOverhangDistance( std::vector> overhang_points{}; for (const auto & p : object_data.envelope_poly.outer()) { - const auto point = autoware_universe_utils::createPoint(p.x(), p.y(), 0.0); + const auto point = autoware::universe_utils::createPoint(p.x(), p.y(), 0.0); // TODO(someone): search around first position where the ego should avoid the object. - const auto idx = autoware_motion_utils::findNearestIndex(path.points, point); + const auto idx = autoware::motion_utils::findNearestIndex(path.points, point); const auto lateral = calcLateralDeviation(getPose(path.points.at(idx)), point); overhang_points.emplace_back(lateral, point); } @@ -1247,9 +1247,9 @@ Polygon2d createEnvelopePolygon( const Polygon2d & object_polygon, const Pose & closest_pose, const double envelope_buffer) { namespace bg = boost::geometry; - using autoware_universe_utils::expandPolygon; - using autoware_universe_utils::Point2d; - using autoware_universe_utils::Polygon2d; + using autoware::universe_utils::expandPolygon; + using autoware::universe_utils::Point2d; + using autoware::universe_utils::Polygon2d; using Box = bg::model::box; const auto toPolygon2d = [](const geometry_msgs::msg::Polygon & polygon) { @@ -1293,7 +1293,7 @@ Polygon2d createEnvelopePolygon( Polygon2d createEnvelopePolygon( const ObjectData & object_data, const Pose & closest_pose, const double envelope_buffer) { - const auto object_polygon = autoware_universe_utils::toPolygon2d(object_data.object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object_data.object); return createEnvelopePolygon(object_polygon, closest_pose, envelope_buffer); } @@ -1325,7 +1325,7 @@ std::vector generateObstaclePolygonsForDrivableArea( const double diff_poly_buffer = object.avoid_margin.value() - object_parameter.envelope_buffer_margin - vehicle_width / 2.0; const auto obj_poly = - autoware_universe_utils::expandPolygon(object.envelope_poly, diff_poly_buffer); + autoware::universe_utils::expandPolygon(object.envelope_poly, diff_poly_buffer); obstacles_for_drivable_area.push_back( {object.object.kinematics.initial_pose_with_covariance.pose, obj_poly, !isOnRight(object)}); } @@ -1385,7 +1385,7 @@ void insertDecelPoint( std::optional & p_out) { const auto decel_point = - autoware_motion_utils::calcLongitudinalOffsetPoint(path.points, p_src, offset); + autoware::motion_utils::calcLongitudinalOffsetPoint(path.points, p_src, offset); if (!decel_point) { // TODO(Satoshi OTA) Think later the process in the case of no decel point found. @@ -1393,9 +1393,9 @@ void insertDecelPoint( } const auto seg_idx = - autoware_motion_utils::findNearestSegmentIndex(path.points, decel_point.value()); + autoware::motion_utils::findNearestSegmentIndex(path.points, decel_point.value()); const auto insert_idx = - autoware_motion_utils::insertTargetPoint(seg_idx, decel_point.value(), path.points); + autoware::motion_utils::insertTargetPoint(seg_idx, decel_point.value(), path.points); if (!insert_idx) { // TODO(Satoshi OTA) Think later the process in the case of no decel point found. @@ -1457,7 +1457,7 @@ void fillObjectEnvelopePolygon( const auto multi_step_envelope_poly = createEnvelopePolygon(unions.front(), closest_pose, 0.0); - const auto object_polygon = autoware_universe_utils::toPolygon2d(object_data.object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object_data.object); const auto object_polygon_area = boost::geometry::area(object_polygon); const auto envelope_polygon_area = boost::geometry::area(multi_step_envelope_poly); @@ -1690,6 +1690,59 @@ void compensateDetectionLost( } } +void updateClipObject(ObjectDataArray & clip_objects, AvoidancePlanningData & data) +{ + std::for_each(data.target_objects.begin(), data.target_objects.end(), [](auto & o) { + if (o.is_avoidable) { + o.is_clip_target = true; + } + }); + + const auto itr = + std::remove_if(clip_objects.begin(), clip_objects.end(), [&data](const auto & clip_object) { + const auto id = clip_object.object.object_id; + + // update target objects + { + const auto same_id_obj = std::find_if( + data.target_objects.begin(), data.target_objects.end(), + [&id](const auto & o) { return o.object.object_id == id; }); + if (same_id_obj != data.target_objects.end()) { + same_id_obj->is_clip_target = true; + return false; + } + } + + // update other objects + { + const auto same_id_obj = std::find_if( + data.other_objects.begin(), data.other_objects.end(), + [&id](const auto & o) { return o.object.object_id == id; }); + if (same_id_obj != data.other_objects.end()) { + same_id_obj->is_clip_target = true; + return false; + } + } + + return true; + }); + + clip_objects.erase(itr, clip_objects.end()); + + for (const auto & object : data.target_objects) { + const auto id = object.object.object_id; + const auto same_id_obj = std::find_if( + clip_objects.begin(), clip_objects.end(), + [&id](const auto & o) { return o.object.object_id == id; }); + + if (same_id_obj != clip_objects.end()) { + continue; + } + + clip_objects.push_back(object); + } +} + void updateRoadShoulderDistance( AvoidancePlanningData & data, const std::shared_ptr & planner_data, const std::shared_ptr & parameters) @@ -1817,9 +1870,9 @@ void fillAdditionalInfoFromPoint(const AvoidancePlanningData & data, AvoidLineAr // calc longitudinal for (auto & sl : lines) { - sl.start_idx = autoware_motion_utils::findNearestIndex(path.points, sl.start.position); + sl.start_idx = autoware::motion_utils::findNearestIndex(path.points, sl.start.position); sl.start_longitudinal = arc.at(sl.start_idx); - sl.end_idx = autoware_motion_utils::findNearestIndex(path.points, sl.end.position); + sl.end_idx = autoware::motion_utils::findNearestIndex(path.points, sl.end.position); sl.end_longitudinal = arc.at(sl.end_idx); } } @@ -1868,7 +1921,7 @@ AvoidLineArray combineRawShiftLinesWithUniqueCheck( { // TODO(Horibe) parametrize const auto isSimilar = [](const AvoidLine & a, const AvoidLine & b) { - using autoware_universe_utils::calcDistance2d; + using autoware::universe_utils::calcDistance2d; if (calcDistance2d(a.start, b.start) > 1.0) { return false; } @@ -2117,7 +2170,7 @@ std::pair separateObjectsByPath( double next_longitudinal_distance = parameters->resample_interval_for_output; for (size_t i = 0; i < points_size; ++i) { const auto distance_from_ego = - autoware_motion_utils::calcSignedArcLength(reference_path.points, ego_idx, i); + autoware::motion_utils::calcSignedArcLength(reference_path.points, ego_idx, i); if (distance_from_ego > object_check_forward_distance) { break; } @@ -2155,7 +2208,7 @@ std::pair separateObjectsByPath( const auto objects = planner_data->dynamic_object->objects; std::for_each(objects.begin(), objects.end(), [&](const auto & object) { - const auto obj_polygon = autoware_universe_utils::toPolygon2d(object); + const auto obj_polygon = autoware::universe_utils::toPolygon2d(object); if (!within_detection_area(obj_polygon)) { other_objects.objects.push_back(object); } else { @@ -2185,14 +2238,16 @@ DrivableLanes generateExpandedDrivableLanes( current_drivable_lanes.left_lane = lanelet; current_drivable_lanes.right_lane = lanelet; - if (!parameters->use_adjacent_lane) { + if (parameters->use_lane_type == "current_lane") { return current_drivable_lanes; } + const auto use_opposite_lane = parameters->use_lane_type == "opposite_direction_lane"; + // 1. get left/right side lanes const auto update_left_lanelets = [&](const lanelet::ConstLanelet & target_lane) { - const auto all_left_lanelets = route_handler->getAllLeftSharedLinestringLanelets( - target_lane, parameters->use_opposite_lane, true); + const auto all_left_lanelets = + route_handler->getAllLeftSharedLinestringLanelets(target_lane, use_opposite_lane, true); if (!all_left_lanelets.empty()) { current_drivable_lanes.left_lane = all_left_lanelets.back(); // leftmost lanelet pushUniqueVector( @@ -2201,8 +2256,8 @@ DrivableLanes generateExpandedDrivableLanes( } }; const auto update_right_lanelets = [&](const lanelet::ConstLanelet & target_lane) { - const auto all_right_lanelets = route_handler->getAllRightSharedLinestringLanelets( - target_lane, parameters->use_opposite_lane, true); + const auto all_right_lanelets = + route_handler->getAllRightSharedLinestringLanelets(target_lane, use_opposite_lane, true); if (!all_right_lanelets.empty()) { current_drivable_lanes.right_lane = all_right_lanelets.back(); // rightmost lanelet pushUniqueVector( @@ -2365,7 +2420,7 @@ double calcDistanceToReturnDeadLine( if (planner_data->route_handler->isInGoalRouteSection(lanelets.back())) { const auto & ego_pos = planner_data->self_odometry->pose.pose.position; const auto to_goal_distance = - autoware_motion_utils::calcSignedArcLength(path.points, ego_pos, path.points.size() - 1); + autoware::motion_utils::calcSignedArcLength(path.points, ego_pos, path.points.size() - 1); distance_to_return_dead_line = std::min( distance_to_return_dead_line, to_goal_distance - parameters->dead_line_buffer_for_goal); } diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/package.xml index dd4858dabe293..0b3959b7f77cd 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/package.xml @@ -17,13 +17,13 @@ autoware_cmake autoware_behavior_velocity_planner_common + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_planning_msgs autoware_route_handler autoware_universe_utils geometry_msgs - lanelet2_extension pluginlib rclcpp tf2 diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/debug.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/debug.cpp index 31d90a7d7d708..714280daad38e 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/debug.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/debug.cpp @@ -27,10 +27,10 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerOrientation; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerOrientation; +using autoware::universe_utils::createMarkerScale; namespace { @@ -73,12 +73,12 @@ visualization_msgs::msg::MarkerArray createLaneletPolygonsMarkerArray( } // namespace -autoware_motion_utils::VirtualWalls BlindSpotModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls BlindSpotModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWalls virtual_walls; if (debug_data_.virtual_wall_pose) { - autoware_motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWall wall; wall.text = "blind_spot"; wall.pose = debug_data_.virtual_wall_pose.value(); wall.ns = std::to_string(module_id_) + "_"; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/decisions.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/decisions.cpp index e4b3a341a9b91..da4582dd1643f 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/decisions.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/decisions.cpp @@ -88,7 +88,7 @@ void BlindSpotModule::setRTCStatusByDecision( { setSafe(false); const auto & current_pose = planner_data_->current_odometry->pose; - setDistance(autoware_motion_utils::calcSignedArcLength( + setDistance(autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, decision.stop_line_idx)); return; } @@ -124,7 +124,7 @@ void BlindSpotModule::setRTCStatusByDecision( { setSafe(true); const auto & current_pose = planner_data_->current_odometry->pose; - setDistance(autoware_motion_utils::calcSignedArcLength( + setDistance(autoware::motion_utils::calcSignedArcLength( path.points, current_pose.position, decision.stop_line_idx)); return; } diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.cpp index e51a55784b72c..1880adb045b42 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.cpp @@ -18,9 +18,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -91,7 +91,7 @@ BlindSpotDecision BlindSpotModule::modifyPathVelocityDetail( /* calc closest index */ const auto & current_pose = planner_data_->current_odometry->pose; - const auto closest_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const auto closest_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( input_path.points, current_pose, planner_data_->ego_nearest_dist_threshold, planner_data_->ego_nearest_yaw_threshold); const auto stop_line_idx = @@ -256,7 +256,7 @@ std::optional BlindSpotModule::getSiblingStraightLanelet( static std::optional getFirstPointIntersectsLineByFootprint( const lanelet::ConstLineString2d & line, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length) + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length) { const auto & path_ip = interpolated_path_info.path; const auto [lane_start, lane_end] = interpolated_path_info.lane_id_interval.value(); @@ -266,8 +266,8 @@ static std::optional getFirstPointIntersectsLineByFootprint( const auto line2d = line.basicLineString(); for (auto i = start; i <= lane_end; ++i) { const auto & base_pose = path_ip.points.at(i).point.pose; - const auto path_footprint = autoware_universe_utils::transformVector( - footprint, autoware_universe_utils::pose2transform(base_pose)); + const auto path_footprint = autoware::universe_utils::transformVector( + footprint, autoware::universe_utils::pose2transform(base_pose)); if (bg::intersects(path_footprint, line2d)) { return std::make_optional(i); } @@ -282,7 +282,7 @@ static std::optional getDuplicatedPointIdx( const auto & p = path.points.at(i).point.pose.position; constexpr double min_dist = 0.001; - if (autoware_universe_utils::calcDistance2d(p, point) < min_dist) { + if (autoware::universe_utils::calcDistance2d(p, point) < min_dist) { return i; } } @@ -299,7 +299,7 @@ static std::optional insertPointIndex( return duplicate_idx_opt.value(); } - const size_t closest_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const size_t closest_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( inout_path->points, in_pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); // vector.insert(i) inserts element on the left side of v[i] // the velocity need to be zero order hold(from prior point) @@ -361,12 +361,12 @@ std::optional> BlindSpotModule::generateStopLine( const geometry_msgs::msg::Point mid_point = geometry_msgs::build().x(mid_pt.x()).y(mid_pt.y()).z(mid_pt.z()); stop_idx_default_ip = stop_idx_critical_ip = - autoware_motion_utils::findNearestSegmentIndex(path_ip.points, mid_point); + autoware::motion_utils::findNearestSegmentIndex(path_ip.points, mid_point); /* // NOTE: it is not ambiguous when the curve starts on the left/right lanelet, so this module inserts stopline at the beginning of the lanelet for baselink stop_idx_default_ip = stop_idx_critical_ip = static_cast(std::max(0, - static_cast(autoware_motion_utils::findNearestSegmentIndex(path_ip.points, mid_point)) - + static_cast(autoware::motion_utils::findNearestSegmentIndex(path_ip.points, mid_point)) - baselink2front_dist)); */ } @@ -420,12 +420,12 @@ std::optional BlindSpotModule::isOverPassJudge( planner_data_->current_velocity->twist.linear.x, planner_data_->max_stop_acceleration_threshold, planner_data_->delay_response_time); const auto ego_segment_idx = - autoware_motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestSegmentIndexWithSoftConstraints( input_path.points, current_pose, planner_data_->ego_nearest_dist_threshold, planner_data_->ego_nearest_yaw_threshold); const size_t stop_point_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(input_path.points, stop_point_pose.position); - const auto distance_until_stop = autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::findNearestSegmentIndex(input_path.points, stop_point_pose.position); + const auto distance_until_stop = autoware::motion_utils::calcSignedArcLength( input_path.points, current_pose.position, ego_segment_idx, stop_point_pose.position, stop_point_segment_idx); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.hpp index 8c4cae6ba3993..7faf78cb2d979 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_blind_spot_module/src/scene.hpp @@ -117,7 +117,7 @@ class BlindSpotModule : public SceneModuleInterface bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) override; visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - std::vector createVirtualWalls() override; + std::vector createVirtualWalls() override; private: // (semi) const variables diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/README.md b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/README.md index 84d3e0f77a281..60601299daf8b 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/README.md +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/README.md @@ -183,7 +183,7 @@ In the `stuck_vehicle` namespace, the following parameters are defined. In the current autoware implementation, if no target object is detected around a crosswalk, the ego vehicle will not slow down for the crosswalk. However, it may be desirable to slow down in situations, for example, where there are blind spots. -Such a situation can be handled by setting some tags to the related crosswalk as instructed in the [lanelet2_format_extension.md](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md) +Such a situation can be handled by setting some tags to the related crosswalk as instructed in the [lanelet2_format_extension.md](https://github.com/autowarefoundation/autoware_lanelet2_extension/blob/main/autoware_lanelet2_extension/docs/lanelet2_format_extension.md) document. | Parameter | | Type | Description | diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/package.xml index 85a19411405a7..cd9c63fc0367f 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/package.xml @@ -23,6 +23,7 @@ autoware_behavior_velocity_planner_common autoware_grid_map_utils + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_planning_msgs @@ -34,7 +35,6 @@ grid_map_core grid_map_ros interpolation - lanelet2_extension libboost-dev nav_msgs pcl_conversions diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/debug.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/debug.cpp index 8e8686e984a40..d96256d2753ce 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/debug.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/debug.cpp @@ -24,14 +24,14 @@ namespace autoware::behavior_velocity_planner { -using autoware_motion_utils::createSlowDownVirtualWallMarker; -using autoware_motion_utils::createStopVirtualWallMarker; -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; +using autoware::motion_utils::createSlowDownVirtualWallMarker; +using autoware::motion_utils::createStopVirtualWallMarker; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; using visualization_msgs::msg::Marker; namespace @@ -177,19 +177,19 @@ visualization_msgs::msg::MarkerArray createCrosswalkMarkers( } } // namespace -autoware_motion_utils::VirtualWalls CrosswalkModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls CrosswalkModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; - autoware_motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWall wall; wall.text = "crosswalk"; wall.ns = std::to_string(module_id_) + "_"; - wall.style = autoware_motion_utils::VirtualWallType::stop; + wall.style = autoware::motion_utils::VirtualWallType::stop; for (const auto & p : debug_data_.stop_poses) { wall.pose = calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); virtual_walls.push_back(wall); } - wall.style = autoware_motion_utils::VirtualWallType::slowdown; + wall.style = autoware::motion_utils::VirtualWallType::slowdown; wall.text += debug_data_.virtual_wall_suffix; for (const auto & p : debug_data_.slow_poses) { wall.pose = calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.cpp index 398368ccd51e7..82cddc2c28f1e 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.cpp @@ -27,7 +27,7 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::getOrDeclareParameter; +using autoware::universe_utils::getOrDeclareParameter; using lanelet::autoware::Crosswalk; CrosswalkModuleManager::CrosswalkModuleManager(rclcpp::Node & node) diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.hpp index 8ce2adea56a4c..693f6c27a380d 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/manager.hpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/occluded_crosswalk.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/occluded_crosswalk.cpp index 444dd68767919..55aa4daed9f87 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/occluded_crosswalk.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/occluded_crosswalk.cpp @@ -118,7 +118,7 @@ void clear_occlusions_behind_objects( object.kinematics.initial_pose_with_covariance.pose.position.y}; if (lanelet::geometry::distance2d(grid_map_position, object_position) < range) { lanelet::BasicPoints2d edge_points; - const auto object_polygon = autoware_universe_utils::toPolygon2d(object); + const auto object_polygon = autoware::universe_utils::toPolygon2d(object); for (const auto & edge_point : object_polygon.outer()) edge_points.push_back(edge_point); std::sort(edge_points.begin(), edge_points.end(), angle_cmp); // points.push_back(interpolate_point({object_position, edge_point}, 10.0 * range)); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.cpp index 631f08ce8494e..786828d72dcb3 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.cpp @@ -41,22 +41,22 @@ namespace autoware::behavior_velocity_planner { namespace bg = boost::geometry; -using autoware_motion_utils::calcArcLength; -using autoware_motion_utils::calcDecelDistWithJerkAndAccConstraints; -using autoware_motion_utils::calcLateralOffset; -using autoware_motion_utils::calcLongitudinalOffsetPoint; -using autoware_motion_utils::calcLongitudinalOffsetPose; -using autoware_motion_utils::calcSignedArcLength; -using autoware_motion_utils::calcSignedArcLengthPartialSum; -using autoware_motion_utils::findNearestSegmentIndex; -using autoware_motion_utils::insertTargetPoint; -using autoware_motion_utils::resamplePath; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::getPose; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; -using autoware_universe_utils::pose2transform; -using autoware_universe_utils::toHexString; +using autoware::motion_utils::calcArcLength; +using autoware::motion_utils::calcDecelDistWithJerkAndAccConstraints; +using autoware::motion_utils::calcLateralOffset; +using autoware::motion_utils::calcLongitudinalOffsetPoint; +using autoware::motion_utils::calcLongitudinalOffsetPose; +using autoware::motion_utils::calcSignedArcLength; +using autoware::motion_utils::calcSignedArcLengthPartialSum; +using autoware::motion_utils::findNearestSegmentIndex; +using autoware::motion_utils::insertTargetPoint; +using autoware::motion_utils::resamplePath; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::getPose; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; +using autoware::universe_utils::pose2transform; +using autoware::universe_utils::toHexString; namespace { @@ -85,7 +85,7 @@ void offsetPolygon2d( { for (const auto & polygon_point : polygon.points) { const auto offset_pos = - autoware_universe_utils::calcOffsetPose(origin_point, polygon_point.x, polygon_point.y, 0.0) + autoware::universe_utils::calcOffsetPose(origin_point, polygon_point.x, polygon_point.y, 0.0) .position; offset_polygon.outer().push_back(Point2d(offset_pos.x, offset_pos.y)); } @@ -99,7 +99,7 @@ Polygon2d createMultiStepPolygon( Polygon2d multi_step_polygon{}; for (size_t i = start_idx; i <= end_idx; ++i) { offsetPolygon2d( - autoware_universe_utils::getPose(obj_path_points.at(i)), polygon, multi_step_polygon); + autoware::universe_utils::getPose(obj_path_points.at(i)), polygon, multi_step_polygon); } Polygon2d hull_multi_step_polygon{}; @@ -385,9 +385,10 @@ std::optional CrosswalkModule::checkStopForCrosswalkUsers( const double base_link2front = planner_data_->vehicle_info_.max_longitudinal_offset_m; const double dist_ego2crosswalk = calcSignedArcLength(ego_path.points, ego_pos, path_intersects.front()); - const auto braking_distance_opt = autoware_motion_utils::calcDecelDistWithJerkAndAccConstraints( - ego_vel, 0.0, ego_acc, p.min_acc_for_no_stop_decision, p.max_jerk_for_no_stop_decision, - p.min_jerk_for_no_stop_decision); + const auto braking_distance_opt = + autoware::motion_utils::calcDecelDistWithJerkAndAccConstraints( + ego_vel, 0.0, ego_acc, p.min_acc_for_no_stop_decision, p.max_jerk_for_no_stop_decision, + p.min_jerk_for_no_stop_decision); const double braking_distance = braking_distance_opt ? *braking_distance_opt : 0.0; if ( dist_ego2crosswalk - base_link2front - braking_distance < @@ -414,7 +415,7 @@ std::optional CrosswalkModule::checkStopForCrosswalkUsers( if ( isVehicleType(object.classification) && ego_crosswalk_passage_direction && collision_point.crosswalk_passage_direction) { - const double direction_diff = autoware_universe_utils::normalizeRadian( + const double direction_diff = autoware::universe_utils::normalizeRadian( collision_point.crosswalk_passage_direction.value() - ego_crosswalk_passage_direction.value()); if (std::fabs(direction_diff) < planner_param_.vehicle_object_cross_angle_threshold) { @@ -648,14 +649,14 @@ std::optional CrosswalkModule::findEgoPassageDirectionAlongPath( auto findIntersectPoint = [&](const lanelet::ConstLineString3d line) -> std::optional> { const auto line_start = - autoware_universe_utils::createPoint(line.front().x(), line.front().y(), line.front().z()); + autoware::universe_utils::createPoint(line.front().x(), line.front().y(), line.front().z()); const auto line_end = - autoware_universe_utils::createPoint(line.back().x(), line.back().y(), line.back().z()); + autoware::universe_utils::createPoint(line.back().x(), line.back().y(), line.back().z()); for (unsigned i = 0; i < path.points.size() - 1; ++i) { const auto & start = path.points.at(i).point.pose.position; const auto & end = path.points.at(i + 1).point.pose.position; if (const auto intersect = - autoware_universe_utils::intersect(line_start, line_end, start, end); + autoware::universe_utils::intersect(line_start, line_end, start, end); intersect.has_value()) { return std::make_optional(std::make_pair(i, intersect.value())); } @@ -677,19 +678,19 @@ std::optional CrosswalkModule::findEgoPassageDirectionAlongPath( std::optional CrosswalkModule::findObjectPassageDirectionAlongVehicleLane( const autoware_perception_msgs::msg::PredictedPath & path) const { - using autoware_universe_utils::Segment2d; + using autoware::universe_utils::Segment2d; auto findIntersectPoint = [&](const lanelet::ConstLineString3d line) -> std::optional> { const auto line_start = - autoware_universe_utils::createPoint(line.front().x(), line.front().y(), line.front().z()); + autoware::universe_utils::createPoint(line.front().x(), line.front().y(), line.front().z()); const auto line_end = - autoware_universe_utils::createPoint(line.back().x(), line.back().y(), line.back().z()); + autoware::universe_utils::createPoint(line.back().x(), line.back().y(), line.back().z()); for (unsigned i = 0; i < path.path.size() - 1; ++i) { const auto & start = path.path.at(i).position; const auto & end = path.path.at(i + 1).position; if (const auto intersect = - autoware_universe_utils::intersect(line_start, line_end, start, end); + autoware::universe_utils::intersect(line_start, line_end, start, end); intersect.has_value()) { return std::make_optional(std::make_pair(i, intersect.value())); } diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.hpp index 8d53b0a1fe4fd..b7dc2fea16794 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/scene_crosswalk.hpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include @@ -49,12 +49,12 @@ namespace autoware::behavior_velocity_planner { namespace bg = boost::geometry; +using autoware::universe_utils::Polygon2d; +using autoware::universe_utils::StopWatch; using autoware_perception_msgs::msg::ObjectClassification; using autoware_perception_msgs::msg::PredictedObject; using autoware_perception_msgs::msg::PredictedObjects; using autoware_perception_msgs::msg::TrafficLightElement; -using autoware_universe_utils::Polygon2d; -using autoware_universe_utils::StopWatch; using lanelet::autoware::Crosswalk; using tier4_api_msgs::msg::CrosswalkStatus; using tier4_planning_msgs::msg::PathWithLaneId; @@ -264,7 +264,7 @@ class CrosswalkModule : public SceneModuleInterface const bool is_object_away_from_path = !attention_area.outer().empty() && boost::geometry::distance( - autoware_universe_utils::fromMsg(position).to_2d(), attention_area) > 0.5; + autoware::universe_utils::fromMsg(position).to_2d(), attention_area) > 0.5; // add new object if (objects.count(uuid) == 0) { @@ -327,7 +327,7 @@ class CrosswalkModule : public SceneModuleInterface bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) override; visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - autoware_motion_utils::VirtualWalls createVirtualWalls() override; + autoware::motion_utils::VirtualWalls createVirtualWalls() override; private: // main functions diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/util.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/util.cpp index c2d9f8273cabe..6389637ca1526 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/util.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_crosswalk_module/src/util.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include @@ -40,7 +40,7 @@ #define EIGEN_MPL2_ONLY #include #include -#include +#include #include #include @@ -48,10 +48,10 @@ namespace autoware::behavior_velocity_planner { namespace bg = boost::geometry; -using autoware_motion_utils::calcSignedArcLength; -using autoware_universe_utils::createPoint; -using autoware_universe_utils::Line2d; -using autoware_universe_utils::Point2d; +using autoware::motion_utils::calcSignedArcLength; +using autoware::universe_utils::createPoint; +using autoware::universe_utils::Line2d; +using autoware::universe_utils::Point2d; std::vector> getCrosswalksOnPath( const geometry_msgs::msg::Pose & current_pose, @@ -152,7 +152,7 @@ std::vector getPolygonIntersects( std::sort(intersects.begin(), intersects.end(), compare); - // convert autoware_universe_utils::Point2d to geometry::msg::Point + // convert autoware::universe_utils::Point2d to geometry::msg::Point std::vector geometry_points; for (const auto & p : intersects) { geometry_points.push_back(createPoint(p.x(), p.y(), ego_pos.z)); @@ -201,7 +201,7 @@ std::vector getLinestringIntersects( std::sort(intersects.begin(), intersects.end(), compare); - // convert autoware_universe_utils::Point2d to geometry::msg::Point + // convert autoware::universe_utils::Point2d to geometry::msg::Point std::vector geometry_points; for (const auto & p : intersects) { geometry_points.push_back(createPoint(p.x(), p.y(), ego_pos.z)); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/package.xml index 5a15c78c9dee2..c707e2fbfdbde 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/package.xml @@ -18,13 +18,13 @@ eigen3_cmake_module autoware_behavior_velocity_planner_common + autoware_lanelet2_extension autoware_motion_utils autoware_planning_msgs autoware_route_handler autoware_universe_utils eigen geometry_msgs - lanelet2_extension libboost-dev pluginlib rclcpp diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/debug.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/debug.cpp index 4eff964f96c60..87df2a620f717 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/debug.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/debug.cpp @@ -31,10 +31,10 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; using std_msgs::msg::ColorRGBA; namespace @@ -171,21 +171,21 @@ visualization_msgs::msg::MarkerArray DetectionAreaModule::createDebugMarkerArray return wall_marker; } -autoware_motion_utils::VirtualWalls DetectionAreaModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls DetectionAreaModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; - autoware_motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWall wall; wall.text = "detection_area"; - wall.style = autoware_motion_utils::VirtualWallType::stop; + wall.style = autoware::motion_utils::VirtualWallType::stop; for (const auto & p : debug_data_.stop_poses) { - wall.pose = autoware_universe_utils::calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); + wall.pose = autoware::universe_utils::calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); virtual_walls.push_back(wall); } - wall.style = autoware_motion_utils::VirtualWallType::deadline; + wall.style = autoware::motion_utils::VirtualWallType::deadline; for (const auto & p : debug_data_.dead_line_poses) { - wall.pose = autoware_universe_utils::calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); + wall.pose = autoware::universe_utils::calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); virtual_walls.push_back(wall); } return virtual_walls; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/manager.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/manager.cpp index 6bd0d2c3b274a..6206bb5c2d25c 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/manager.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/manager.cpp @@ -16,7 +16,7 @@ #include #include -#include +#include #include @@ -30,7 +30,7 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::getOrDeclareParameter; +using autoware::universe_utils::getOrDeclareParameter; using lanelet::autoware::DetectionArea; DetectionAreaModuleManager::DetectionAreaModuleManager(rclcpp::Node & node) diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.cpp index 954bbc988b1c3..9cbe962e88cae 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.cpp @@ -33,8 +33,8 @@ namespace autoware::behavior_velocity_planner { namespace bg = boost::geometry; -using autoware_motion_utils::calcLongitudinalOffsetPose; -using autoware_motion_utils::calcSignedArcLength; +using autoware::motion_utils::calcLongitudinalOffsetPose; +using autoware::motion_utils::calcSignedArcLength; DetectionAreaModule::DetectionAreaModule( const int64_t module_id, const int64_t lane_id, @@ -83,7 +83,7 @@ bool DetectionAreaModule::modifyPathVelocity(PathWithLaneId * path, StopReason * // Get stop point const auto stop_point = arc_lane_utils::createTargetPoint( - original_path, stop_line, lane_id_, planner_param_.stop_margin, + original_path, stop_line, planner_param_.stop_margin, planner_data_->vehicle_info_.max_longitudinal_offset_m); if (!stop_point) { return true; @@ -128,7 +128,7 @@ bool DetectionAreaModule::modifyPathVelocity(PathWithLaneId * path, StopReason * if (planner_param_.use_dead_line) { // Use '-' for margin because it's the backward distance from stop line const auto dead_line_point = arc_lane_utils::createTargetPoint( - original_path, stop_line, lane_id_, -planner_param_.dead_line_margin, + original_path, stop_line, -planner_param_.dead_line_margin, planner_data_->vehicle_info_.max_longitudinal_offset_m); if (dead_line_point) { @@ -288,7 +288,7 @@ std::vector DetectionAreaModule::getObstaclePoints() (circle.first.y() - p.y) * (circle.first.y() - p.y); if (squared_dist <= circle.second) { if (bg::within(Point2d{p.x, p.y}, poly.basicPolygon())) { - obstacle_points.push_back(autoware_universe_utils::createPoint(p.x, p.y, p.z)); + obstacle_points.push_back(autoware::universe_utils::createPoint(p.x, p.y, p.z)); // get all obstacle point becomes high computation cost so skip if any point is found break; } diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.hpp index 595ab663f8b01..efc1c1809302a 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_detection_area_module/src/scene.hpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include @@ -73,7 +73,7 @@ class DetectionAreaModule : public SceneModuleInterface bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) override; visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - autoware_motion_utils::VirtualWalls createVirtualWalls() override; + autoware::motion_utils::VirtualWalls createVirtualWalls() override; private: LineString2d getStopLineGeometry2d() const; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/README.md b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/README.md index 4e13a1fa169de..6ba8f8b929146 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/README.md +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/README.md @@ -18,7 +18,7 @@ This module is activated when the path contains the lanes with turn_direction ta ## Requirements/Limitations -- The HDMap needs to have the information of turn_direction tag (which should be one of straight, left, right) for all the lanes in intersections and right_of_way tag for specific lanes (refer to [RightOfWay](#how-towhy-set-rightofway-tag) section for more details). See [lanelet2_extension document](https://github.com/autowarefoundation/autoware_common/blob/main/tmp/lanelet2_extension/docs/lanelet2_format_extension.md) for more detail. +- The HDMap needs to have the information of turn_direction tag (which should be one of straight, left, right) for all the lanes in intersections and right_of_way tag for specific lanes (refer to [RightOfWay](#how-towhy-set-rightofway-tag) section for more details). See [autoware_lanelet2_extension document](https://github.com/autowarefoundation/autoware_lanelet2_extension/blob/main/autoware_lanelet2_extension/docs/lanelet2_format_extension.md) for more detail. - WIP(perception requirements/limitations) - WIP(sensor visibility requirements/limitations) diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/package.xml index e240722e66a5b..7772235342266 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/package.xml @@ -19,6 +19,7 @@ autoware_cmake autoware_behavior_velocity_planner_common + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_planning_msgs @@ -29,7 +30,6 @@ fmt geometry_msgs interpolation - lanelet2_extension libopencv-dev magic_enum nav_msgs diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/debug.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/debug.cpp index 1543966e47276..a53b6e7cd7f92 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/debug.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/debug.cpp @@ -33,10 +33,10 @@ namespace { -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerOrientation; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerOrientation; +using autoware::universe_utils::createMarkerScale; visualization_msgs::msg::MarkerArray createLaneletPolygonsMarkerArray( const std::vector & polygons, const std::string & ns, @@ -226,10 +226,10 @@ constexpr std::tuple light_blue() namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerOrientation; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerOrientation; +using autoware::universe_utils::createMarkerScale; visualization_msgs::msg::MarkerArray IntersectionModule::createDebugMarkerArray() { @@ -424,27 +424,27 @@ visualization_msgs::msg::MarkerArray IntersectionModule::createDebugMarkerArray( return debug_marker_array; } -autoware_motion_utils::VirtualWalls IntersectionModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls IntersectionModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; - autoware_motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWall wall; if (debug_data_.collision_stop_wall_pose) { - wall.style = autoware_motion_utils::VirtualWallType::stop; + wall.style = autoware::motion_utils::VirtualWallType::stop; wall.text = "intersection"; wall.ns = "intersection" + std::to_string(module_id_) + "_"; wall.pose = debug_data_.collision_stop_wall_pose.value(); virtual_walls.push_back(wall); } if (debug_data_.occlusion_first_stop_wall_pose) { - wall.style = autoware_motion_utils::VirtualWallType::stop; + wall.style = autoware::motion_utils::VirtualWallType::stop; wall.text = "intersection"; wall.ns = "intersection_occlusion_first_stop" + std::to_string(module_id_) + "_"; wall.pose = debug_data_.occlusion_first_stop_wall_pose.value(); virtual_walls.push_back(wall); } if (debug_data_.occlusion_stop_wall_pose) { - wall.style = autoware_motion_utils::VirtualWallType::stop; + wall.style = autoware::motion_utils::VirtualWallType::stop; wall.text = "intersection_occlusion"; if (debug_data_.static_occlusion_with_traffic_light_timeout) { std::stringstream timeout; @@ -457,7 +457,7 @@ autoware_motion_utils::VirtualWalls IntersectionModule::createVirtualWalls() virtual_walls.push_back(wall); } if (debug_data_.absence_traffic_light_creep_wall) { - wall.style = autoware_motion_utils::VirtualWallType::slowdown; + wall.style = autoware::motion_utils::VirtualWallType::slowdown; wall.text = "intersection_occlusion"; wall.ns = "intersection_occlusion" + std::to_string(module_id_) + "_"; wall.pose = debug_data_.absence_traffic_light_creep_wall.value(); @@ -483,13 +483,13 @@ visualization_msgs::msg::MarkerArray MergeFromPrivateRoadModule::createDebugMark return debug_marker_array; } -autoware_motion_utils::VirtualWalls MergeFromPrivateRoadModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls MergeFromPrivateRoadModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWalls virtual_walls; const auto state = state_machine_.getState(); if (state == StateMachine::State::STOP) { - autoware_motion_utils::VirtualWall wall; - wall.style = autoware_motion_utils::VirtualWallType::stop; + autoware::motion_utils::VirtualWall wall; + wall.style = autoware::motion_utils::VirtualWallType::stop; wall.pose = debug_data_.virtual_wall_pose; wall.text = "merge_from_private_road"; virtual_walls.push_back(wall); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.cpp index 470464a6156b2..648fc611ac6b1 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.cpp @@ -26,7 +26,7 @@ namespace autoware::behavior_velocity_planner void IntersectionLanelets::update( const bool is_prioritized, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length, + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length, lanelet::routing::RoutingGraphPtr routing_graph_ptr) { is_prioritized_ = is_prioritized; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.hpp index af11033a454a7..f8110475e2782 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/intersection_lanelets.hpp @@ -41,7 +41,7 @@ struct IntersectionLanelets */ void update( const bool is_prioritized, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length, + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length, lanelet::routing::RoutingGraphPtr routing_graph_ptr); const lanelet::ConstLanelets & attention() const diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/manager.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/manager.cpp index 5ec002535f1a1..43df89b49b268 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/manager.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/manager.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include @@ -30,7 +30,7 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::getOrDeclareParameter; +using autoware::universe_utils::getOrDeclareParameter; IntersectionModuleManager::IntersectionModuleManager(rclcpp::Node & node) : SceneModuleManagerInterfaceWithRTC( diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/object_manager.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/object_manager.cpp index cc4b7cb0658be..6ead1df3eb2d1 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/object_manager.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/object_manager.cpp @@ -16,7 +16,7 @@ #include #include // for toPolygon2d -#include +#include #include #include @@ -38,15 +38,15 @@ std::string to_string(const unique_identifier_msgs::msg::UUID & uuid) return ss.str(); } -autoware_universe_utils::Polygon2d createOneStepPolygon( +autoware::universe_utils::Polygon2d createOneStepPolygon( const geometry_msgs::msg::Pose & prev_pose, const geometry_msgs::msg::Pose & next_pose, const autoware_perception_msgs::msg::Shape & shape) { namespace bg = boost::geometry; - const auto prev_poly = autoware_universe_utils::toPolygon2d(prev_pose, shape); - const auto next_poly = autoware_universe_utils::toPolygon2d(next_pose, shape); + const auto prev_poly = autoware::universe_utils::toPolygon2d(prev_pose, shape); + const auto next_poly = autoware::universe_utils::toPolygon2d(next_pose, shape); - autoware_universe_utils::Polygon2d one_step_poly; + autoware::universe_utils::Polygon2d one_step_poly; for (const auto & point : prev_poly.outer()) { one_step_poly.outer().push_back(point); } @@ -56,7 +56,7 @@ autoware_universe_utils::Polygon2d createOneStepPolygon( bg::correct(one_step_poly); - autoware_universe_utils::Polygon2d convex_one_step_poly; + autoware::universe_utils::Polygon2d convex_one_step_poly; bg::convex_hull(one_step_poly, convex_one_step_poly); return convex_one_step_poly; @@ -164,13 +164,13 @@ bool ObjectInfo::can_stop_before_ego_lane( const auto stopline = stopline_opt.value(); const auto stopline_p1 = stopline.front(); const auto stopline_p2 = stopline.back(); - const autoware_universe_utils::Point2d stopline_mid{ + const autoware::universe_utils::Point2d stopline_mid{ (stopline_p1.x() + stopline_p2.x()) / 2.0, (stopline_p1.y() + stopline_p2.y()) / 2.0}; const auto attention_lane_end = attention_lanelet.centerline().back(); - const autoware_universe_utils::LineString2d attention_lane_later_part( - {autoware_universe_utils::Point2d{stopline_mid.x(), stopline_mid.y()}, - autoware_universe_utils::Point2d{attention_lane_end.x(), attention_lane_end.y()}}); - std::vector ego_collision_points; + const autoware::universe_utils::LineString2d attention_lane_later_part( + {autoware::universe_utils::Point2d{stopline_mid.x(), stopline_mid.y()}, + autoware::universe_utils::Point2d{attention_lane_end.x(), attention_lane_end.y()}}); + std::vector ego_collision_points; bg::intersection( attention_lane_later_part, ego_lane.centerline2d().basicLineString(), ego_collision_points); if (ego_collision_points.empty()) { diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.cpp index 3a760d404c80b..ac157fb3ab6dc 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.cpp @@ -23,8 +23,8 @@ #include // for toPolygon2d #include #include -#include -#include +#include +#include #include @@ -42,7 +42,7 @@ namespace autoware::behavior_velocity_planner { namespace bg = boost::geometry; -using autoware_motion_utils::VelocityFactorInterface; +using autoware::motion_utils::VelocityFactorInterface; IntersectionModule::IntersectionModule( const int64_t module_id, const int64_t lane_id, @@ -56,7 +56,7 @@ IntersectionModule::IntersectionModule( associative_ids_(associative_ids), turn_direction_(turn_direction), has_traffic_light_(has_traffic_light), - occlusion_uuid_(autoware_universe_utils::generateUUID()) + occlusion_uuid_(autoware::universe_utils::generateUUID()) { velocity_factor_.init(PlanningBehavior::INTERSECTION); @@ -342,7 +342,7 @@ DecisionResult IntersectionModule::modifyPathVelocityDetail( // Occluded // utility functions auto fromEgoDist = [&](const size_t index) { - return autoware_motion_utils::calcSignedArcLength(path->points, closest_idx, index); + return autoware::motion_utils::calcSignedArcLength(path->points, closest_idx, index); }; auto stoppedForDuration = [&](const size_t pos, const double duration, StateMachine & state_machine) { @@ -528,12 +528,12 @@ void prepareRTCByDecisionResult( const auto stopline_idx = result.stuck_stopline_idx; *default_safety = false; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, stopline_idx); *occlusion_safety = true; if (result.occlusion_stopline_idx) { const auto occlusion_stopline_idx = result.occlusion_stopline_idx.value(); *occlusion_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); } return; } @@ -549,7 +549,7 @@ void prepareRTCByDecisionResult( const auto stopline_idx = result.stuck_stopline_idx; *default_safety = false; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, stopline_idx); *occlusion_safety = true; return; } @@ -565,11 +565,11 @@ void prepareRTCByDecisionResult( const auto collision_stopline_idx = result.collision_stopline_idx; *default_safety = false; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); const auto occlusion_stopline = result.occlusion_stopline_idx; *occlusion_safety = true; *occlusion_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline); return; } @@ -585,10 +585,10 @@ void prepareRTCByDecisionResult( const auto occlusion_stopline_idx = result.occlusion_stopline_idx; *default_safety = false; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, first_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, first_stopline_idx); *occlusion_safety = result.is_actually_occlusion_cleared; *occlusion_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); return; } @@ -604,10 +604,10 @@ void prepareRTCByDecisionResult( const auto occlusion_stopline_idx = result.occlusion_stopline_idx; *default_safety = true; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); *occlusion_safety = result.is_actually_occlusion_cleared; *occlusion_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); return; } @@ -622,7 +622,7 @@ void prepareRTCByDecisionResult( const auto collision_stopline_idx = result.closest_idx; *default_safety = !result.collision_detected; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); *occlusion_safety = result.is_actually_occlusion_cleared; *occlusion_distance = 0; return; @@ -640,10 +640,10 @@ void prepareRTCByDecisionResult( const auto occlusion_stopline_idx = result.occlusion_stopline_idx; *default_safety = false; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); *occlusion_safety = result.is_actually_occlusion_cleared; *occlusion_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); return; } @@ -658,10 +658,10 @@ void prepareRTCByDecisionResult( const auto occlusion_stopline_idx = result.occlusion_stopline_idx; *default_safety = true; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); *occlusion_safety = true; *occlusion_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); return; } @@ -677,10 +677,10 @@ void prepareRTCByDecisionResult( const auto occlusion_stopline_idx = result.occlusion_stopline_idx; *default_safety = !result.collision_detected; *default_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, collision_stopline_idx); *occlusion_safety = true; *occlusion_distance = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, occlusion_stopline_idx); return; } diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.hpp index 6aa81162bea25..ea2e1a7ae16d7 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection.hpp @@ -325,7 +325,7 @@ class IntersectionModule : public SceneModuleInterface /** @}*/ visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - autoware_motion_utils::VirtualWalls createVirtualWalls() override; + autoware::motion_utils::VirtualWalls createVirtualWalls() override; const std::set & getAssociativeIds() const { return associative_ids_; } diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_collision.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_collision.cpp index 041715b2dc1a9..ec6610048dc79 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_collision.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_collision.cpp @@ -20,7 +20,7 @@ #include #include // for toPolygon2d #include -#include +#include #include #include @@ -111,7 +111,7 @@ void IntersectionModule::updateObjectInfoManagerArea() return false; } return bg::within( - autoware_universe_utils::Point2d{obj_pos.x, obj_pos.y}, intersection_area.value()); + autoware::universe_utils::Point2d{obj_pos.x, obj_pos.y}, intersection_area.value()); }(); std::optional attention_lanelet{std::nullopt}; std::optional stopline{std::nullopt}; @@ -265,7 +265,9 @@ void IntersectionModule::updateObjectInfoManagerCollision( continue; } const auto & object_passage_interval = object_passage_interval_opt.value(); - const auto [object_enter_time, object_exit_time] = object_passage_interval.interval_time; + const auto object_enter_exit_time = object_passage_interval.interval_time; + const auto object_enter_time = std::get<0>(object_enter_exit_time); + const auto object_exit_time = std::get<1>(object_enter_exit_time); const auto ego_start_itr = std::lower_bound( time_distance_array.begin(), time_distance_array.end(), object_enter_time - collision_start_margin_time, @@ -311,7 +313,7 @@ void IntersectionModule::updateObjectInfoManagerCollision( for (auto i = begin; i <= end; ++i) { if (bg::intersects( polygon, - autoware_universe_utils::toPolygon2d(object_path.at(i), predicted_object.shape))) { + autoware::universe_utils::toPolygon2d(object_path.at(i), predicted_object.shape))) { collision_detected = true; break; } @@ -490,13 +492,13 @@ std::string IntersectionModule::generateDetectionBlameDiagnosis( "judge line({2} seconds before from now) given the estimated current velocity {3}[m/s]. " "ego was at x = {4}, y = {5} when it passed the 1st pass judge line so it is the fault " "of detection side that failed to detect around {6}[m] range at that time.\n", - past_position.x, // 0 - past_position.y, // 1 - time_diff, // 2 - object_info->observed_velocity(), // 3 - passed_1st_judge_line_pose.position.x, // 4 - passed_1st_judge_line_pose.position.y, // 5 - autoware_universe_utils::calcDistance2d(passed_1st_judge_line_pose, past_position) // 6 + past_position.x, // 0 + past_position.y, // 1 + time_diff, // 2 + object_info->observed_velocity(), // 3 + passed_1st_judge_line_pose.position.x, // 4 + passed_1st_judge_line_pose.position.y, // 5 + autoware::universe_utils::calcDistance2d(passed_1st_judge_line_pose, past_position) // 6 ); } } @@ -528,13 +530,13 @@ std::string IntersectionModule::generateDetectionBlameDiagnosis( "judge line({2} seconds before from now) given the estimated current velocity {3}[m/s]. " "ego was at x = {4}, y = {5} when it passed the 2nd pass judge line so it is the fault " "of detection side that failed to detect around {6}[m] range at that time.\n", - past_position.x, // 0 - past_position.y, // 1 - time_diff, // 2 - object_info->observed_velocity(), // 3 - passed_2nd_judge_line_pose.position.x, // 4 - passed_2nd_judge_line_pose.position.y, // 5 - autoware_universe_utils::calcDistance2d(passed_2nd_judge_line_pose, past_position) // 6 + past_position.x, // 0 + past_position.y, // 1 + time_diff, // 2 + object_info->observed_velocity(), // 3 + passed_2nd_judge_line_pose.position.x, // 4 + passed_2nd_judge_line_pose.position.y, // 5 + autoware::universe_utils::calcDistance2d(passed_2nd_judge_line_pose, past_position) // 6 ); } } @@ -614,10 +616,10 @@ std::string IntersectionModule::generateEgoRiskEvasiveDiagnosis( const auto [begin, end] = unsafe_interval.interval_position; const auto &p1 = unsafe_interval.path.at(begin).position, p2 = unsafe_interval.path.at(end).position; - const auto collision_pos = - autoware_universe_utils::createPoint((p1.x + p2.x) / 2, (p1.y + p2.y) / 2, (p1.z + p2.z) / 2); + const auto collision_pos = autoware::universe_utils::createPoint( + (p1.x + p2.x) / 2, (p1.y + p2.y) / 2, (p1.z + p2.z) / 2); const auto object_dist_to_margin_point = - autoware_universe_utils::calcDistance2d( + autoware::universe_utils::calcDistance2d( object_info->predicted_object().kinematics.initial_pose_with_covariance.pose.position, collision_pos) - planner_param_.collision_detection.avoid_collision_by_acceleration @@ -630,7 +632,7 @@ std::string IntersectionModule::generateEgoRiskEvasiveDiagnosis( object_dist_to_margin_point / std::max(min_vel, object_info->observed_velocity()); // ego side const double ego_dist_to_collision_pos = - autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, collision_pos); + autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, collision_pos); const auto ego_eta_to_collision_pos_it = std::lower_bound( ego_time_distance_array.begin(), ego_time_distance_array.end(), ego_dist_to_collision_pos, [](const auto & a, const double b) { return a.second < b; }); @@ -780,7 +782,7 @@ std::optional IntersectionModule::checkAngleForTargetLanelets( const double ll_angle = lanelet::utils::getLaneletAngle(ll, pose.position); const double pose_angle = tf2::getYaw(pose.orientation); const double angle_diff = - autoware_universe_utils::normalizeRadian(ll_angle - pose_angle, -M_PI); + autoware::universe_utils::normalizeRadian(ll_angle - pose_angle, -M_PI); if (consider_wrong_direction_vehicle) { if (std::fabs(angle_diff) > 1.57 || std::fabs(angle_diff) < detection_area_angle_thr) { return std::make_optional(i); @@ -898,7 +900,7 @@ IntersectionModule::TimeDistanceArray IntersectionModule::calcIntersectionPassin // NOTE: `reference_path` is resampled in `reference_smoothed_path`, so // `last_intersection_stopline_candidate_idx` makes no sense const auto smoothed_path_closest_idx = - autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( smoothed_reference_path.points, path.points.at(closest_idx).point.pose, planner_data_->ego_nearest_dist_threshold, planner_data_->ego_nearest_yaw_threshold); @@ -906,7 +908,7 @@ IntersectionModule::TimeDistanceArray IntersectionModule::calcIntersectionPassin if (upstream_stopline) { const auto upstream_stopline_point = reference_path.points.at(upstream_stopline.value()).point.pose; - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( smoothed_reference_path.points, upstream_stopline_point, planner_data_->ego_nearest_dist_threshold, planner_data_->ego_nearest_yaw_threshold); } else { @@ -918,7 +920,7 @@ IntersectionModule::TimeDistanceArray IntersectionModule::calcIntersectionPassin const auto & p1 = smoothed_reference_path.points.at(i); const auto & p2 = smoothed_reference_path.points.at(i + 1); - const double dist = autoware_universe_utils::calcDistance2d(p1, p2); + const double dist = autoware::universe_utils::calcDistance2d(p1, p2); dist_sum += dist; // use average velocity between p1 and p2 diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_occlusion.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_occlusion.cpp index f05b49a52b165..24e9a3b4a1793 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_occlusion.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_occlusion.cpp @@ -151,7 +151,7 @@ IntersectionModule::OcclusionType IntersectionModule::detectOcclusion( auto findCommonCvPolygons = [&](const auto & area2d, std::vector> & cv_polygons) -> void { - autoware_universe_utils::Polygon2d area2d_poly; + autoware::universe_utils::Polygon2d area2d_poly; for (const auto & p : area2d) { area2d_poly.outer().emplace_back(p.x(), p.y()); } @@ -240,7 +240,7 @@ IntersectionModule::OcclusionType IntersectionModule::detectOcclusion( std::vector> blocking_polygons; for (const auto & blocking_attention_object_info : blocking_attention_objects) { const Polygon2d obj_poly = - autoware_universe_utils::toPolygon2d(blocking_attention_object_info->predicted_object()); + autoware::universe_utils::toPolygon2d(blocking_attention_object_info->predicted_object()); findCommonCvPolygons(obj_poly.outer(), blocking_polygons); } for (const auto & blocking_polygon : blocking_polygons) { @@ -321,7 +321,8 @@ IntersectionModule::OcclusionType IntersectionModule::detectOcclusion( for (auto i = lane_start_idx + 1; i <= lane_end_idx; i++) { const auto path_linestring_point = path_ip.points.at(i).point.pose.position; if ( - autoware_universe_utils::calcDistance2d(prev_path_linestring_point, path_linestring_point) < + autoware::universe_utils::calcDistance2d( + prev_path_linestring_point, path_linestring_point) < 1.0 /* rough tick for computational cost */) { continue; } @@ -405,9 +406,9 @@ IntersectionModule::OcclusionType IntersectionModule::detectOcclusion( division_index, std::distance(division.begin(), point_it), acc_dist, - autoware_universe_utils::createPoint(point_it->x(), point_it->y(), origin.z), - autoware_universe_utils::createPoint(projection_it->x(), projection_it->y(), origin.z), - autoware_universe_utils::createPoint( + autoware::universe_utils::createPoint(point_it->x(), point_it->y(), origin.z), + autoware::universe_utils::createPoint(projection_it->x(), projection_it->y(), origin.z), + autoware::universe_utils::createPoint( projection_it->x(), projection_it->y(), origin.z) /* initialize with projection point at first*/}; found_min_dist_for_this_division = true; @@ -416,7 +417,7 @@ IntersectionModule::OcclusionType IntersectionModule::detectOcclusion( // division previously in this iteration, and the iterated cells are still OCCLUDED since // then nearest_occlusion_point.visible_end = - autoware_universe_utils::createPoint(point_it->x(), point_it->y(), origin.z); + autoware::universe_utils::createPoint(point_it->x(), point_it->y(), origin.z); } } is_prev_occluded = (pixel == OCCLUDED); @@ -440,7 +441,7 @@ IntersectionModule::OcclusionType IntersectionModule::detectOcclusion( bg::correct(ego_occlusion_triangle); for (const auto & attention_object_info : object_info_manager_.allObjects()) { const auto obj_poly = - autoware_universe_utils::toPolygon2d(attention_object_info->predicted_object()); + autoware::universe_utils::toPolygon2d(attention_object_info->predicted_object()); if (bg::intersects(obj_poly, ego_occlusion_triangle)) { debug_data_.static_occlusion = false; return DynamicallyOccluded{min_dist}; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_prepare_data.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_prepare_data.cpp index 42d91defe7569..a4c4e1b41688f 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_prepare_data.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_prepare_data.cpp @@ -18,10 +18,10 @@ #include // for to_bg2d #include // for planning_utils:: #include +#include // for lanelet::autoware::RoadMarking +#include +#include #include -#include // for lanelet::autoware::RoadMarking -#include -#include #include #include @@ -31,7 +31,7 @@ #include #include -namespace autoware_universe_utils +namespace autoware::universe_utils { template <> @@ -44,7 +44,7 @@ inline geometry_msgs::msg::Point getPoint(const lanelet::ConstPoint3d & p) return point; } -} // namespace autoware_universe_utils +} // namespace autoware::universe_utils namespace { @@ -74,7 +74,7 @@ lanelet::ConstLanelet generatePathLanelet( for (size_t i = start_idx; i <= end_idx; ++i) { const auto & p = path.points.at(i).point.pose; const auto & p_prev = path.points.at(prev_idx).point.pose; - if (i != start_idx && autoware_universe_utils::calcDistance2d(p_prev, p) < interval) { + if (i != start_idx && autoware::universe_utils::calcDistance2d(p_prev, p) < interval) { continue; } prev_idx = i; @@ -198,7 +198,7 @@ Result IntersectionModule::prepare const auto & path_ip = interpolated_path_info.path; const auto & path_ip_intersection_end = interpolated_path_info.lane_id_interval.value().second; - internal_debug_data_.distance = autoware_motion_utils::calcSignedArcLength( + internal_debug_data_.distance = autoware::motion_utils::calcSignedArcLength( path->points, current_pose.position, path_ip.points.at(path_ip_intersection_end).point.pose.position); @@ -275,9 +275,9 @@ Result IntersectionModule::prepare if (is_green_solid_on && !initial_green_light_observed_time_) { const auto assigned_lane_begin_point = assigned_lanelet.centerline().front(); const bool approached_assigned_lane = - autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::calcSignedArcLength( path->points, closest_idx, - autoware_universe_utils::createPoint( + autoware::universe_utils::createPoint( assigned_lane_begin_point.x(), assigned_lane_begin_point.y(), assigned_lane_begin_point.z())) < planner_param_.collision_detection.yield_on_green_traffic_light @@ -338,7 +338,7 @@ std::optional IntersectionModule::getStopLineIndexFromMap( stop_point_from_map.position.y = 0.5 * (p_start.y() + p_end.y()); stop_point_from_map.position.z = 0.5 * (p_start.z() + p_end.z()); - return autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + return autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( path.points, stop_point_from_map, planner_data_->ego_nearest_dist_threshold, planner_data_->ego_nearest_yaw_threshold); } @@ -381,8 +381,8 @@ std::optional IntersectionModule::generateIntersectionSto std::optional first_footprint_attention_centerline_ip_opt = std::nullopt; for (auto i = std::get<0>(lane_interval_ip); i < std::get<1>(lane_interval_ip); ++i) { const auto & base_pose = path_ip.points.at(i).point.pose; - const auto path_footprint = autoware_universe_utils::transformVector( - local_footprint, autoware_universe_utils::pose2transform(base_pose)); + const auto path_footprint = autoware::universe_utils::transformVector( + local_footprint, autoware::universe_utils::pose2transform(base_pose)); if (bg::intersects(path_footprint, first_attention_lane_centerline.basicLineString())) { // NOTE: maybe consideration of braking dist is necessary first_footprint_attention_centerline_ip_opt = i; @@ -413,7 +413,7 @@ std::optional IntersectionModule::generateIntersectionSto // (2) ego front stop line position on interpolated path const geometry_msgs::msg::Pose & current_pose = planner_data_->current_odometry->pose; - const auto closest_idx_ip = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const auto closest_idx_ip = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( path_ip.points, current_pose, planner_data_->ego_nearest_dist_threshold, planner_data_->ego_nearest_yaw_threshold); @@ -423,8 +423,8 @@ std::optional IntersectionModule::generateIntersectionSto // NOTE: if footprints[0] is already inside the attention area, invalid { const auto & base_pose0 = path_ip.points.at(default_stopline_ip).point.pose; - const auto path_footprint0 = autoware_universe_utils::transformVector( - local_footprint, autoware_universe_utils::pose2transform(base_pose0)); + const auto path_footprint0 = autoware::universe_utils::transformVector( + local_footprint, autoware::universe_utils::pose2transform(base_pose0)); if (bg::intersects( path_footprint0, lanelet::utils::to2D(first_attention_area).basicPolygon())) { occlusion_peeking_line_valid = false; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_stuck.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_stuck.cpp index 124f679e00a5d..78365bc5e500f 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_stuck.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_intersection_stuck.cpp @@ -17,7 +17,7 @@ #include // for toGeomPoly #include -#include +#include #include #include @@ -124,7 +124,7 @@ std::optional IntersectionModule::isStuckStatus( { const auto closest_idx = intersection_stoplines.closest_idx; auto fromEgoDist = [&](const size_t index) { - return autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, index); + return autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, index); }; const auto & intersection_lanelets = intersection_lanelets_.value(); // this is OK @@ -290,7 +290,7 @@ bool IntersectionModule::checkStuckVehicleInIntersection(const PathLanelets & pa } // check if the footprint is in the stuck detect area - const auto obj_footprint = autoware_universe_utils::toPolygon2d(object); + const auto obj_footprint = autoware::universe_utils::toPolygon2d(object); // NOTE: in order not to stop too much const bool is_in_stuck_area = bg::within( to_bg2d(object.kinematics.initial_pose_with_covariance.pose.position), @@ -310,7 +310,7 @@ std::optional IntersectionModule::isYieldStuckStatus( { const auto closest_idx = intersection_stoplines.closest_idx; auto fromEgoDist = [&](const size_t index) { - return autoware_motion_utils::calcSignedArcLength(path.points, closest_idx, index); + return autoware::motion_utils::calcSignedArcLength(path.points, closest_idx, index); }; const auto & intersection_lanelets = intersection_lanelets_.value(); const auto default_stopline_idx = intersection_stoplines.default_stopline.value(); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.cpp index dcbd41eccaec8..d5cd9ca587716 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.cpp @@ -19,8 +19,8 @@ #include #include #include -#include -#include +#include +#include #include #include @@ -53,7 +53,7 @@ MergeFromPrivateRoadModule::MergeFromPrivateRoadModule( static std::optional getFirstConflictingLanelet( const lanelet::ConstLanelets & conflicting_lanelets, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length) + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length) { const auto & path_ip = interpolated_path_info.path; const auto [lane_start, end] = interpolated_path_info.lane_id_interval.value(); @@ -63,8 +63,8 @@ static std::optional getFirstConflictingLanelet( for (size_t i = start; i <= end; ++i) { const auto & pose = path_ip.points.at(i).point.pose; - const auto path_footprint = autoware_universe_utils::transformVector( - footprint, autoware_universe_utils::pose2transform(pose)); + const auto path_footprint = autoware::universe_utils::transformVector( + footprint, autoware::universe_utils::pose2transform(pose)); for (const auto & conflicting_lanelet : conflicting_lanelets) { const auto polygon_2d = conflicting_lanelet.polygon2d().basicPolygon(); const bool intersects = bg::intersects(polygon_2d, path_footprint); @@ -159,7 +159,7 @@ bool MergeFromPrivateRoadModule::modifyPathVelocity(PathWithLaneId * path, StopR velocity_factor_.set( path->points, planner_data_->current_odometry->pose, stop_pose, VelocityFactor::UNKNOWN); - const double signed_arc_dist_to_stop_point = autoware_motion_utils::calcSignedArcLength( + const double signed_arc_dist_to_stop_point = autoware::motion_utils::calcSignedArcLength( path->points, current_pose.position, path->points.at(stopline_idx).point.pose.position); if ( diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.hpp index 4960c7ab9e8d5..a69297adea881 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/scene_merge_from_private_road.hpp @@ -70,7 +70,7 @@ class MergeFromPrivateRoadModule : public SceneModuleInterface bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) override; visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - autoware_motion_utils::VirtualWalls createVirtualWalls() override; + autoware::motion_utils::VirtualWalls createVirtualWalls() override; const std::set & getAssociativeIds() const { return associative_ids_; } lanelet::ConstLanelets getAttentionLanelets() const; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.cpp index e56b99486c93c..308483e5b0869 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.cpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include @@ -51,7 +51,7 @@ static std::optional getDuplicatedPointIdx( const auto & p = path.points.at(i).point.pose.position; constexpr double min_dist = 0.001; - if (autoware_universe_utils::calcDistance2d(p, point) < min_dist) { + if (autoware::universe_utils::calcDistance2d(p, point) < min_dist) { return i; } } @@ -68,7 +68,7 @@ std::optional insertPointIndex( return duplicate_idx_opt.value(); } - const size_t closest_idx = autoware_motion_utils::findFirstNearestIndexWithSoftConstraints( + const size_t closest_idx = autoware::motion_utils::findFirstNearestIndexWithSoftConstraints( inout_path->points, in_pose, ego_nearest_dist_threshold, ego_nearest_yaw_threshold); // vector.insert(i) inserts element on the left side of v[i] // the velocity need to be zero order hold(from prior point) @@ -130,7 +130,7 @@ std::optional> findLaneIdsInterval( std::optional getFirstPointInsidePolygonByFootprint( const lanelet::CompoundPolygon3d & polygon, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length) + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length) { const auto & path_ip = interpolated_path_info.path; const auto [lane_start, lane_end] = interpolated_path_info.lane_id_interval.value(); @@ -140,8 +140,8 @@ std::optional getFirstPointInsidePolygonByFootprint( const auto area_2d = lanelet::utils::to2D(polygon).basicPolygon(); for (auto i = start; i <= lane_end; ++i) { const auto & base_pose = path_ip.points.at(i).point.pose; - const auto path_footprint = autoware_universe_utils::transformVector( - footprint, autoware_universe_utils::pose2transform(base_pose)); + const auto path_footprint = autoware::universe_utils::transformVector( + footprint, autoware::universe_utils::pose2transform(base_pose)); if (bg::intersects(path_footprint, area_2d)) { return std::make_optional(i); } @@ -154,7 +154,7 @@ std::optional & polygons, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length) + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length) { const auto & path_ip = interpolated_path_info.path; const auto [lane_start, lane_end] = interpolated_path_info.lane_id_interval.value(); @@ -164,8 +164,8 @@ getFirstPointInsidePolygonsByFootprint( for (size_t i = start; i <= lane_end; ++i) { const auto & pose = path_ip.points.at(i).point.pose; - const auto path_footprint = autoware_universe_utils::transformVector( - footprint, autoware_universe_utils::pose2transform(pose)); + const auto path_footprint = autoware::universe_utils::transformVector( + footprint, autoware::universe_utils::pose2transform(pose)); for (size_t j = 0; j < polygons.size(); ++j) { const auto area_2d = lanelet::utils::to2D(polygons.at(j)).basicPolygon(); const bool is_in_polygon = bg::intersects(area_2d, path_footprint); @@ -332,7 +332,7 @@ bool isBeforeTargetIndex( return static_cast(target_idx > closest_idx); } -std::optional getIntersectionArea( +std::optional getIntersectionArea( lanelet::ConstLanelet assigned_lane, lanelet::LaneletMapConstPtr lanelet_map_ptr) { const std::string area_id_str = assigned_lane.attributeOr("intersection_area", "else"); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.hpp index 1907395b4baee..f89d6b0ea67ae 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_intersection_module/src/util.hpp @@ -87,7 +87,7 @@ bool isBeforeTargetIndex( const tier4_planning_msgs::msg::PathWithLaneId & path, const size_t closest_idx, const geometry_msgs::msg::Pose & current_pose, const size_t target_idx); -std::optional getIntersectionArea( +std::optional getIntersectionArea( lanelet::ConstLanelet assigned_lane, lanelet::LaneletMapConstPtr lanelet_map_ptr); /** @@ -125,7 +125,7 @@ mergeLaneletsByTopologicalSort( */ std::optional getFirstPointInsidePolygonByFootprint( const lanelet::CompoundPolygon3d & polygon, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length); + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length); /** * @brief find the index of the first point where vehicle footprint intersects with the given @@ -136,7 +136,7 @@ std::optional & polygons, const InterpolatedPathInfo & interpolated_path_info, - const autoware_universe_utils::LinearRing2d & footprint, const double vehicle_length); + const autoware::universe_utils::LinearRing2d & footprint, const double vehicle_length); std::vector getPolygon3dFromLanelets( const lanelet::ConstLanelets & ll_vec); diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/CMakeLists.txt b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/CMakeLists.txt similarity index 85% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/CMakeLists.txt rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/CMakeLists.txt index 265b5b637e7ce..cee9e8ca039c9 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/CMakeLists.txt +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.14) -project(behavior_velocity_no_drivable_lane_module) +project(autoware_behavior_velocity_no_drivable_lane_module) find_package(autoware_cmake REQUIRED) autoware_package() diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/README.md b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/README.md similarity index 100% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/README.md rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/README.md diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/config/no_drivable_lane.param.yaml b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/config/no_drivable_lane.param.yaml similarity index 100% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/config/no_drivable_lane.param.yaml rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/config/no_drivable_lane.param.yaml diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_design.svg b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_design.svg similarity index 100% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_design.svg rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_design.svg diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_scenarios.svg b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_scenarios.svg similarity index 100% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_scenarios.svg rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/docs/no_drivable_lane_scenarios.svg diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/package.xml similarity index 88% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/package.xml rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/package.xml index e03a05cfc57c7..b674478ffb228 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/package.xml @@ -1,9 +1,9 @@ - behavior_velocity_no_drivable_lane_module + autoware_behavior_velocity_no_drivable_lane_module 0.1.0 - The behavior_velocity_no_drivable_lane_module package + The autoware_behavior_velocity_no_drivable_lane_module package Ahmed Ebrahim Tomoya Kimura @@ -20,13 +20,13 @@ eigen3_cmake_module autoware_behavior_velocity_planner_common + autoware_lanelet2_extension autoware_motion_utils autoware_planning_msgs autoware_route_handler autoware_universe_utils eigen geometry_msgs - lanelet2_extension libboost-dev pluginlib rclcpp diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/plugins.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/plugins.xml similarity index 70% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/plugins.xml rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/plugins.xml index e3e9efb254fba..26635e8e24bc1 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/plugins.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/plugins.xml @@ -1,3 +1,3 @@ - + diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/debug.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/debug.cpp similarity index 86% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/debug.cpp rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/debug.cpp index 804d9109a7c1f..c0c04a0949ce8 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/debug.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/debug.cpp @@ -23,11 +23,11 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; -using autoware_universe_utils::createPoint; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; +using autoware::universe_utils::createPoint; using visualization_msgs::msg::Marker; namespace @@ -71,18 +71,18 @@ visualization_msgs::msg::MarkerArray createNoDrivableLaneMarkers( } } // namespace -autoware_motion_utils::VirtualWalls NoDrivableLaneModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls NoDrivableLaneModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWalls virtual_walls; const auto now = this->clock_->now(); if ( (state_ == State::APPROACHING) || (state_ == State::INSIDE_NO_DRIVABLE_LANE) || (state_ == State::STOPPED)) { - autoware_motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWall wall; wall.text = "no_drivable_lane"; - wall.style = autoware_motion_utils::VirtualWallType::stop; + wall.style = autoware::motion_utils::VirtualWallType::stop; wall.ns = std::to_string(module_id_) + "_"; wall.pose = debug_data_.stop_pose; virtual_walls.push_back(wall); diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/manager.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/manager.cpp similarity index 97% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/manager.cpp rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/manager.cpp index 99b9dcc366eb4..9c6f2f50925c6 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/manager.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/manager.cpp @@ -21,7 +21,7 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::getOrDeclareParameter; +using autoware::universe_utils::getOrDeclareParameter; NoDrivableLaneModuleManager::NoDrivableLaneModuleManager(rclcpp::Node & node) : SceneModuleManagerInterface(node, getModuleName()) diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/manager.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/manager.hpp similarity index 100% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/manager.hpp rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/manager.hpp diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/scene.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/scene.cpp similarity index 89% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/scene.cpp rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/scene.cpp index cf663d314a3c1..42d896fec8ab3 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/scene.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/scene.cpp @@ -23,7 +23,7 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::createPoint; +using autoware::universe_utils::createPoint; NoDrivableLaneModule::NoDrivableLaneModule( const int64_t module_id, const int64_t lane_id, const PlannerParam & planner_param, @@ -58,7 +58,7 @@ bool NoDrivableLaneModule::modifyPathVelocity(PathWithLaneId * path, StopReason if (path_no_drivable_lane_polygon_intersection.first_intersection_point) { first_intersection_point = path_no_drivable_lane_polygon_intersection.first_intersection_point.value(); - distance_ego_first_intersection = autoware_motion_utils::calcSignedArcLength( + distance_ego_first_intersection = autoware::motion_utils::calcSignedArcLength( path->points, planner_data_->current_odometry->pose.position, first_intersection_point); distance_ego_first_intersection -= planner_data_->vehicle_info_.max_longitudinal_offset_m; } @@ -135,7 +135,7 @@ void NoDrivableLaneModule::handle_approaching_state(PathWithLaneId * path, StopR const double longitudinal_offset = -1.0 * (planner_param_.stop_margin + planner_data_->vehicle_info_.max_longitudinal_offset_m); - const auto op_target_point = autoware_motion_utils::calcLongitudinalOffsetPoint( + const auto op_target_point = autoware::motion_utils::calcLongitudinalOffsetPoint( path->points, first_intersection_point, longitudinal_offset); geometry_msgs::msg::Point target_point; @@ -145,17 +145,17 @@ void NoDrivableLaneModule::handle_approaching_state(PathWithLaneId * path, StopR } const auto target_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(path->points, target_point); + autoware::motion_utils::findNearestSegmentIndex(path->points, target_point); const auto & op_target_point_idx = - autoware_motion_utils::insertTargetPoint(target_segment_idx, target_point, path->points, 5e-2); + autoware::motion_utils::insertTargetPoint(target_segment_idx, target_point, path->points, 5e-2); size_t target_point_idx; if (op_target_point_idx) { target_point_idx = op_target_point_idx.value(); } geometry_msgs::msg::Point stop_point = - autoware_universe_utils::getPoint(path->points.at(target_point_idx).point); + autoware::universe_utils::getPoint(path->points.at(target_point_idx).point); const auto & op_stop_pose = planning_utils::insertStopPoint(stop_point, target_segment_idx, *path); @@ -170,7 +170,7 @@ void NoDrivableLaneModule::handle_approaching_state(PathWithLaneId * path, StopR velocity_factor_.set( path->points, planner_data_->current_odometry->pose, stop_pose, VelocityFactor::APPROACHING); - const auto virtual_wall_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto virtual_wall_pose = autoware::motion_utils::calcLongitudinalOffsetPose( path->points, stop_pose.position, debug_data_.base_link2front); debug_data_.stop_pose = virtual_wall_pose.value(); @@ -178,9 +178,9 @@ void NoDrivableLaneModule::handle_approaching_state(PathWithLaneId * path, StopR const size_t current_seg_idx = findEgoSegmentIndex(path->points); const auto intersection_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(path->points, first_intersection_point); + autoware::motion_utils::findNearestSegmentIndex(path->points, first_intersection_point); const double signed_arc_dist_to_intersection_point = - autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::calcSignedArcLength( path->points, planner_data_->current_odometry->pose.position, current_seg_idx, first_intersection_point, intersection_segment_idx) - planner_data_->vehicle_info_.max_longitudinal_offset_m; @@ -216,14 +216,14 @@ void NoDrivableLaneModule::handle_inside_no_drivable_lane_state( // Get stop point and stop factor { tier4_planning_msgs::msg::StopFactor stop_factor; - const auto & stop_pose = autoware_universe_utils::getPose(path->points.at(0)); + const auto & stop_pose = autoware::universe_utils::getPose(path->points.at(0)); stop_factor.stop_pose = stop_pose; stop_factor.stop_factor_points.push_back(current_point); planning_utils::appendStopReason(stop_factor, stop_reason); velocity_factor_.set( path->points, planner_data_->current_odometry->pose, stop_pose, VelocityFactor::APPROACHING); - const auto & virtual_wall_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto & virtual_wall_pose = autoware::motion_utils::calcLongitudinalOffsetPose( path->points, stop_pose.position, debug_data_.base_link2front); debug_data_.stop_pose = virtual_wall_pose.value(); @@ -240,7 +240,7 @@ void NoDrivableLaneModule::handle_inside_no_drivable_lane_state( void NoDrivableLaneModule::handle_stopped_state(PathWithLaneId * path, StopReason * stop_reason) { - const auto & stopped_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto & stopped_pose = autoware::motion_utils::calcLongitudinalOffsetPose( path->points, planner_data_->current_odometry->pose.position, 0.0); if (!stopped_pose) { @@ -265,7 +265,7 @@ void NoDrivableLaneModule::handle_stopped_state(PathWithLaneId * path, StopReaso velocity_factor_.set( path->points, planner_data_->current_odometry->pose, stop_pose, VelocityFactor::STOPPED); - const auto virtual_wall_pose = autoware_motion_utils::calcLongitudinalOffsetPose( + const auto virtual_wall_pose = autoware::motion_utils::calcLongitudinalOffsetPose( path->points, stop_pose.position, debug_data_.base_link2front); debug_data_.stop_pose = virtual_wall_pose.value(); diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/scene.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/scene.hpp similarity index 97% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/scene.hpp rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/scene.hpp index d8425bdd2a292..1e8e93834f89e 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/scene.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/scene.hpp @@ -60,7 +60,7 @@ class NoDrivableLaneModule : public SceneModuleInterface bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) override; visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - autoware_motion_utils::VirtualWalls createVirtualWalls() override; + autoware::motion_utils::VirtualWalls createVirtualWalls() override; private: const int64_t lane_id_; diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/util.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/util.cpp similarity index 71% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/util.cpp rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/util.cpp index 7aede9a509c79..25315fd397aa4 100644 --- a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/util.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/util.cpp @@ -32,8 +32,8 @@ using Point = bg::model::d2::point_xy; using Polygon = bg::model::polygon; using Line = bg::model::linestring; -using autoware_motion_utils::calcSignedArcLength; -using autoware_universe_utils::createPoint; +using autoware::motion_utils::calcSignedArcLength; +using autoware::universe_utils::createPoint; PathWithNoDrivableLanePolygonIntersection getPathIntersectionWithNoDrivableLanePolygon( const PathWithLaneId & ego_path, const lanelet::BasicPolygon2d & polygon, @@ -85,29 +85,37 @@ PathWithNoDrivableLanePolygonIntersection getPathIntersectionWithNoDrivableLaneP bg::within(first_path_point, polygon); auto const & is_last_path_point_inside_polygon = bg::within(last_path_point, polygon); - if ( - intersects.empty() && - path_no_drivable_lane_polygon_intersection.is_first_path_point_inside_polygon && - is_last_path_point_inside_polygon) { - path_no_drivable_lane_polygon_intersection.is_path_inside_of_polygon = true; - } else { - // classify first and second intersection points - for (size_t i = 0; i < intersects.size(); ++i) { - const auto & p = intersects.at(i); - if ( - (intersects.size() == 2 && i == 0) || - (intersects.size() == 1 && is_last_path_point_inside_polygon)) { - path_no_drivable_lane_polygon_intersection.first_intersection_point = - createPoint(p.x(), p.y(), ego_pos.z); - } else if ( - (intersects.size() == 2 && i == 1) || - (intersects.size() == 1 && - path_no_drivable_lane_polygon_intersection.is_first_path_point_inside_polygon)) { - path_no_drivable_lane_polygon_intersection.second_intersection_point = - createPoint(p.x(), p.y(), ego_pos.z); - } + if (intersects.empty()) { + if ( + path_no_drivable_lane_polygon_intersection.is_first_path_point_inside_polygon && + is_last_path_point_inside_polygon) { + path_no_drivable_lane_polygon_intersection.is_path_inside_of_polygon = true; + } else { + // do nothing + } + } else if (intersects.size() == 1) { + const auto & p = intersects.at(0); + if (is_last_path_point_inside_polygon) { + path_no_drivable_lane_polygon_intersection.first_intersection_point = + createPoint(p.x(), p.y(), ego_pos.z); + } else if (path_no_drivable_lane_polygon_intersection.is_first_path_point_inside_polygon) { + path_no_drivable_lane_polygon_intersection.second_intersection_point = + createPoint(p.x(), p.y(), ego_pos.z); + } else { + // do nothing } + } else if (intersects.size() == 2) { + // classify first and second intersection points + const auto & p0 = intersects.at(0); + const auto & p1 = intersects.at(1); + path_no_drivable_lane_polygon_intersection.first_intersection_point = + createPoint(p0.x(), p0.y(), ego_pos.z); + path_no_drivable_lane_polygon_intersection.second_intersection_point = + createPoint(p1.x(), p1.y(), ego_pos.z); + } else { + // do nothing } + return path_no_drivable_lane_polygon_intersection; } } // namespace autoware::behavior_velocity_planner diff --git a/planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/util.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/util.hpp similarity index 100% rename from planning/behavior_velocity_planner/behavior_velocity_no_drivable_lane_module/src/util.hpp rename to planning/behavior_velocity_planner/autoware_behavior_velocity_no_drivable_lane_module/src/util.hpp diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/package.xml index eab1a13d7ebf1..b630f988af662 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/package.xml @@ -18,6 +18,7 @@ eigen3_cmake_module autoware_behavior_velocity_planner_common + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_planning_msgs @@ -27,7 +28,6 @@ eigen geometry_msgs interpolation - lanelet2_extension libboost-dev pluginlib rclcpp diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/debug.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/debug.cpp index b587036d9027a..09f1908b107d5 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/debug.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/debug.cpp @@ -34,10 +34,10 @@ namespace { const double marker_lifetime = 0.2; using DebugData = NoStoppingAreaModule::DebugData; -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::createDefaultMarker; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::createDefaultMarker; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerScale; lanelet::BasicPoint3d getCentroidPoint(const lanelet::BasicPolygon3d & poly) { @@ -162,15 +162,15 @@ visualization_msgs::msg::MarkerArray NoStoppingAreaModule::createDebugMarkerArra return debug_marker_array; } -autoware_motion_utils::VirtualWalls NoStoppingAreaModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls NoStoppingAreaModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; - autoware_motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWall wall; wall.ns = std::to_string(module_id_) + "_"; wall.text = "no_stopping_area"; - wall.style = autoware_motion_utils::VirtualWallType::stop; + wall.style = autoware::motion_utils::VirtualWallType::stop; for (const auto & p : debug_data_.stop_poses) { - wall.pose = autoware_universe_utils::calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); + wall.pose = autoware::universe_utils::calcOffsetPose(p, debug_data_.base_link2front, 0.0, 0.0); virtual_walls.push_back(wall); } return virtual_walls; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/manager.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/manager.cpp index 773ec5f44411e..14a79d64339d6 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/manager.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/manager.cpp @@ -16,7 +16,7 @@ #include #include -#include +#include #include @@ -30,7 +30,7 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::getOrDeclareParameter; +using autoware::universe_utils::getOrDeclareParameter; using lanelet::autoware::NoStoppingArea; NoStoppingAreaModuleManager::NoStoppingAreaModuleManager(rclcpp::Node & node) diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.cpp index 18169dfa1ba70..0478aea34a44f 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.cpp @@ -87,7 +87,7 @@ boost::optional NoStoppingAreaModule::getStopLineGeometry2d( std::vector collision_points; bg::intersection(area_poly, line, collision_points); if (!collision_points.empty()) { - const double yaw = autoware_universe_utils::calcAzimuthAngle(p0, p1); + const double yaw = autoware::universe_utils::calcAzimuthAngle(p0, p1); const double w = planner_data_->vehicle_info_.vehicle_width_m; const double l = stop_line_margin; stop_line.emplace_back( @@ -125,14 +125,14 @@ bool NoStoppingAreaModule::modifyPathVelocity(PathWithLaneId * path, StopReason return true; } const auto stop_point = arc_lane_utils::createTargetPoint( - original_path, stop_line.value(), lane_id_, planner_param_.stop_margin, + original_path, stop_line.value(), planner_param_.stop_margin, planner_data_->vehicle_info_.max_longitudinal_offset_m); if (!stop_point) { setSafe(true); return true; } const auto & stop_pose = stop_point->second; - setDistance(autoware_motion_utils::calcSignedArcLength( + setDistance(autoware::motion_utils::calcSignedArcLength( original_path.points, current_pose->pose.position, stop_pose.position)); if (planning_utils::isOverLine( original_path, current_pose->pose, stop_pose, planner_param_.dead_line_margin)) { @@ -229,7 +229,7 @@ bool NoStoppingAreaModule::checkStuckVehiclesInNoStoppingArea( continue; // not stop vehicle } // check if the footprint is in the stuck detect area - const Polygon2d obj_footprint = autoware_universe_utils::toPolygon2d(object); + const Polygon2d obj_footprint = autoware::universe_utils::toPolygon2d(object); const bool is_in_stuck_area = !bg::disjoint(obj_footprint, poly); if (is_in_stuck_area) { RCLCPP_DEBUG(logger_, "stuck vehicle found."); @@ -266,7 +266,7 @@ bool NoStoppingAreaModule::checkStopLinesInNoStoppingArea( } // judge if stop point p0 is near goal, by its distance to the path end. const double dist_to_path_end = - autoware_motion_utils::calcSignedArcLength(path.points, i, path.points.size() - 1); + autoware::motion_utils::calcSignedArcLength(path.points, i, path.points.size() - 1); if (dist_to_path_end < close_to_goal_distance) { // exit with false, cause position is near goal. return false; @@ -302,10 +302,10 @@ Polygon2d NoStoppingAreaModule::generateEgoNoStoppingAreaLanePolygon( auto & pp = interpolated_path.points; /* calc closest index */ const auto closest_idx_opt = - autoware_motion_utils::findNearestIndex(interpolated_path.points, ego_pose, 3.0, M_PI_4); + autoware::motion_utils::findNearestIndex(interpolated_path.points, ego_pose, 3.0, M_PI_4); if (!closest_idx_opt) { RCLCPP_WARN_SKIPFIRST_THROTTLE( - logger_, *clock_, 1000 /* ms */, "autoware_motion_utils::findNearestIndex fail"); + logger_, *clock_, 1000 /* ms */, "autoware::motion_utils::findNearestIndex fail"); return ego_area; } const size_t closest_idx = closest_idx_opt.value(); @@ -318,7 +318,7 @@ Polygon2d NoStoppingAreaModule::generateEgoNoStoppingAreaLanePolygon( } const auto no_stopping_area = no_stopping_area_reg_elem_.noStoppingAreas().front(); for (size_t i = closest_idx + num_ignore_nearest; i < pp.size() - 1; ++i) { - dist_from_start_sum += autoware_universe_utils::calcDistance2d(pp.at(i), pp.at(i - 1)); + dist_from_start_sum += autoware::universe_utils::calcDistance2d(pp.at(i), pp.at(i - 1)); const auto & p = pp.at(i).point.pose.position; if (bg::within(Point2d{p.x, p.y}, lanelet::utils::to2D(no_stopping_area).basicPolygon())) { is_in_area = true; @@ -339,10 +339,10 @@ Polygon2d NoStoppingAreaModule::generateEgoNoStoppingAreaLanePolygon( // decide end idx with extract distance size_t ego_area_end_idx = ego_area_start_idx; for (size_t i = ego_area_start_idx; i < pp.size() - 1; ++i) { - dist_from_start_sum += autoware_universe_utils::calcDistance2d(pp.at(i), pp.at(i - 1)); + dist_from_start_sum += autoware::universe_utils::calcDistance2d(pp.at(i), pp.at(i - 1)); const auto & p = pp.at(i).point.pose.position; if (!bg::within(Point2d{p.x, p.y}, lanelet::utils::to2D(no_stopping_area).basicPolygon())) { - dist_from_area_sum += autoware_universe_utils::calcDistance2d(pp.at(i), pp.at(i - 1)); + dist_from_area_sum += autoware::universe_utils::calcDistance2d(pp.at(i), pp.at(i - 1)); } if (dist_from_start_sum > extra_dist || dist_from_area_sum > margin) { break; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.hpp index eead30b11f531..2c553ac457ef0 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_no_stopping_area_module/src/scene_no_stopping_area.hpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include @@ -86,7 +86,7 @@ class NoStoppingAreaModule : public SceneModuleInterface bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) override; visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - autoware_motion_utils::VirtualWalls createVirtualWalls() override; + autoware::motion_utils::VirtualWalls createVirtualWalls() override; private: const int64_t lane_id_; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/package.xml index 34fd712d2229c..22da467ba9fac 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/package.xml @@ -18,6 +18,7 @@ autoware_behavior_velocity_planner_common autoware_grid_map_utils + autoware_lanelet2_extension autoware_motion_utils autoware_perception_msgs autoware_planning_msgs @@ -27,7 +28,6 @@ geometry_msgs grid_map_ros interpolation - lanelet2_extension libboost-dev libopencv-dev nav_msgs diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/debug.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/debug.cpp index dff8ce1da9098..a32cb4018cda9 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/debug.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/debug.cpp @@ -30,12 +30,12 @@ namespace { using builtin_interfaces::msg::Time; using BasicPolygons = std::vector; -using autoware_universe_utils::appendMarkerArray; -using autoware_universe_utils::calcOffsetPose; -using autoware_universe_utils::createMarkerColor; -using autoware_universe_utils::createMarkerOrientation; -using autoware_universe_utils::createMarkerPosition; -using autoware_universe_utils::createMarkerScale; +using autoware::universe_utils::appendMarkerArray; +using autoware::universe_utils::calcOffsetPose; +using autoware::universe_utils::createMarkerColor; +using autoware::universe_utils::createMarkerOrientation; +using autoware::universe_utils::createMarkerPosition; +using autoware::universe_utils::createMarkerScale; using occlusion_spot_utils::PossibleCollisionInfo; using visualization_msgs::msg::Marker; using visualization_msgs::msg::MarkerArray; @@ -214,12 +214,12 @@ MarkerArray OcclusionSpotModule::createDebugMarkerArray() return debug_marker_array; } -autoware_motion_utils::VirtualWalls OcclusionSpotModule::createVirtualWalls() +autoware::motion_utils::VirtualWalls OcclusionSpotModule::createVirtualWalls() { - autoware_motion_utils::VirtualWalls virtual_walls; - autoware_motion_utils::VirtualWall wall; + autoware::motion_utils::VirtualWalls virtual_walls; + autoware::motion_utils::VirtualWall wall; wall.text = "occlusion_spot"; - wall.style = autoware_motion_utils::VirtualWallType::slowdown; + wall.style = autoware::motion_utils::VirtualWallType::slowdown; for (size_t id = 0; id < debug_data_.debug_poses.size(); id++) { wall.pose = calcOffsetPose(debug_data_.debug_poses.at(id), debug_data_.baselink_to_front, 0.0, 0.0); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.cpp index 03124a0b81b43..783970c701262 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.cpp @@ -95,7 +95,7 @@ std::optional generateOcclusionPolygon( const Polygon2d & occupancy_poly, const Point2d & origin, const Point2d & min_theta_pos, const Point2d & max_theta_pos, const double ray_max_length = 100.0) { - using autoware_universe_utils::normalizeRadian; + using autoware::universe_utils::normalizeRadian; const double origin_x = origin.x(); const double origin_y = origin.y(); const double min_theta = @@ -134,7 +134,7 @@ std::optional generateOcclusionPolygon( Polygon2d generateOccupancyPolygon(const nav_msgs::msg::MapMetaData & info, const double r = 100) { - using autoware_universe_utils::calcOffsetPose; + using autoware::universe_utils::calcOffsetPose; // generate occupancy polygon from grid origin Polygon2d poly; // create counter clockwise poly poly.outer().emplace_back(to_bg2d(calcOffsetPose(info.origin, 0, 0, 0).position)); @@ -155,7 +155,7 @@ std::pair calcEdgePoint(const Polygon2d & foot_print, const Poin for (size_t i = 0; i < foot_print.outer().size(); i++) { const auto & f = foot_print.outer().at(i); PolarCoordinates polar = toPolarCoordinates(origin, f); - const double theta_norm = autoware_universe_utils::normalizeRadian(polar.theta, 0.0); + const double theta_norm = autoware::universe_utils::normalizeRadian(polar.theta, 0.0); if (theta_norm < min_theta) { min_theta = theta_norm; min_idx = i; @@ -183,7 +183,7 @@ std::optional generateOccupiedPolygon( Point transformFromMap2Grid(const TransformStamped & geom_tf_map2grid, const Point2d & p) { - Point geom_pt = autoware_universe_utils::createPoint(p.x(), p.y(), 0); + Point geom_pt = autoware::universe_utils::createPoint(p.x(), p.y(), 0); Point transformed_geom_pt; // from map coordinate to occupancy grid coordinate tf2::doTransform(geom_pt, transformed_geom_pt, geom_tf_map2grid); diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.hpp index 60ef9c629d830..d716f17751dc0 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/grid_utils.hpp @@ -55,11 +55,11 @@ using geometry_msgs::msg::Pose; using geometry_msgs::msg::PoseStamped; namespace grid_utils { +using autoware::universe_utils::LineString2d; +using autoware::universe_utils::Point2d; +using autoware::universe_utils::Polygon2d; using autoware_perception_msgs::msg::PredictedObject; using autoware_perception_msgs::msg::PredictedObjects; -using autoware_universe_utils::LineString2d; -using autoware_universe_utils::Point2d; -using autoware_universe_utils::Polygon2d; using geometry_msgs::msg::Point; using geometry_msgs::msg::TransformStamped; using nav_msgs::msg::MapMetaData; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/manager.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/manager.cpp index f21d2bf6a743b..5e686cf648c50 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/manager.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/manager.cpp @@ -27,7 +27,7 @@ namespace autoware::behavior_velocity_planner { -using autoware_universe_utils::getOrDeclareParameter; +using autoware::universe_utils::getOrDeclareParameter; using occlusion_spot_utils::DETECTION_METHOD; using occlusion_spot_utils::PASS_JUDGE; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.cpp index cade9f0614dc0..911842ddd57ed 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.cpp @@ -41,7 +41,7 @@ namespace occlusion_spot_utils Polygon2d toFootprintPolygon(const PredictedObject & object, const double scale = 1.0) { const Pose & obj_pose = object.kinematics.initial_pose_with_covariance.pose; - Polygon2d obj_footprint = autoware_universe_utils::toPolygon2d(object); + Polygon2d obj_footprint = autoware::universe_utils::toPolygon2d(object); // upscale foot print for noise obj_footprint = upScalePolygon(obj_pose.position, obj_footprint, scale); return obj_footprint; @@ -126,7 +126,7 @@ void calcSlowDownPointsForPossibleCollision( const double dist_to_col = possible_collisions.at(collision_index).arc_lane_dist_at_collision.length; dist_along_next_path_point += - autoware_universe_utils::calcDistance2d(p_prev.pose.position, p_next.pose.position); + autoware::universe_utils::calcDistance2d(p_prev.pose.position, p_next.pose.position); // process if nearest possible collision is between current and next path point if (dist_along_path_point < dist_to_col) { for (; collision_index < possible_collisions.size(); collision_index++) { @@ -173,7 +173,8 @@ void clipPathByLength( double length_sum = 0; clipped.points.emplace_back(path.points.front()); for (int i = 1; i < static_cast(path.points.size()); i++) { - length_sum += autoware_universe_utils::calcDistance2d(path.points.at(i - 1), path.points.at(i)); + length_sum += + autoware::universe_utils::calcDistance2d(path.points.at(i - 1), path.points.at(i)); if (length_sum > max_length) return; clipped.points.emplace_back(path.points.at(i)); } @@ -248,7 +249,7 @@ void categorizeVehicles( lanelet::ArcCoordinates getOcclusionPoint( const PredictedObject & obj, const lanelet::ConstLineString2d & ll_string) { - const auto poly = autoware_universe_utils::toPolygon2d(obj); + const auto poly = autoware::universe_utils::toPolygon2d(obj); std::deque arcs; for (const auto & p : poly.outer()) { lanelet::BasicPoint2d obj_p = {p.x(), p.y()}; @@ -374,7 +375,7 @@ std::vector filterVehiclesByDetectionArea( // stuck points by predicted objects for (const auto & object : objs) { // check if the footprint is in the stuck detect area - const auto obj_footprint = autoware_universe_utils::toPolygon2d(object); + const auto obj_footprint = autoware::universe_utils::toPolygon2d(object); for (const auto & p : polys) { if (!bg::disjoint(obj_footprint, p)) { filtered_obj.emplace_back(object); @@ -402,7 +403,7 @@ bool generatePossibleCollisionsFromGridMap( param.detection_area.min_occlusion_spot_size); if (param.is_show_occlusion) { for (const auto & op : occlusion_spot_positions) { - Point p = autoware_universe_utils::createPoint( + Point p = autoware::universe_utils::createPoint( op[0], op[1], path.points.at(0).point.pose.position.z); debug_data.occlusion_points.emplace_back(p); } diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.hpp index 189a5be5abe95..992cc5787bf58 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/occlusion_spot_utils.hpp @@ -19,9 +19,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include #include diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.cpp index 27e3452832b59..24b9d10e09830 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.cpp @@ -21,8 +21,8 @@ #include #include #include -#include -#include +#include +#include #include @@ -110,12 +110,12 @@ bool OcclusionSpotModule::modifyPathVelocity( //! never change this interpolation interval(will affect module accuracy) splineInterpolate(clipped_path, 1.0, path_interpolated, logger_); const geometry_msgs::msg::Point start_point = path_interpolated.points.at(0).point.pose.position; - const auto ego_segment_idx = autoware_motion_utils::findNearestSegmentIndex( + const auto ego_segment_idx = autoware::motion_utils::findNearestSegmentIndex( path_interpolated.points, ego_pose, param_.dist_thr, param_.angle_thr); if (!ego_segment_idx) return true; const size_t start_point_segment_idx = - autoware_motion_utils::findNearestSegmentIndex(path_interpolated.points, start_point); - const auto offset = autoware_motion_utils::calcSignedArcLength( + autoware::motion_utils::findNearestSegmentIndex(path_interpolated.points, start_point); + const auto offset = autoware::motion_utils::calcSignedArcLength( path_interpolated.points, ego_pose.position, *ego_segment_idx, start_point, start_point_segment_idx); const double offset_from_start_to_ego = -offset; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.hpp index 4df653c26fcef..b83051fb6b6ec 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/src/scene_occlusion_spot.hpp @@ -56,12 +56,12 @@ class OcclusionSpotModule : public SceneModuleInterface bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) override; visualization_msgs::msg::MarkerArray createDebugMarkerArray() override; - autoware_motion_utils::VirtualWalls createVirtualWalls() override; + autoware::motion_utils::VirtualWalls createVirtualWalls() override; private: // Parameter PlannerParam param_; - autoware_universe_utils::StopWatch stop_watch_; + autoware::universe_utils::StopWatch stop_watch_; std::vector partition_lanelets_; protected: diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/test_grid_utils.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/test_grid_utils.cpp index b0f4a48b9dbdc..6bc9423b6dc96 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/test_grid_utils.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/test_grid_utils.cpp @@ -85,7 +85,7 @@ TEST(compareTime, polygon_vs_line_iterator) } } const grid_map::Matrix & grid_data = grid["layer"]; - autoware_universe_utils::StopWatch stop_watch; + autoware::universe_utils::StopWatch stop_watch; stop_watch.tic("processing_time"); size_t count = 0; [[maybe_unused]] double time = 0; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/utils.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/utils.hpp index 4b8a7ae3b2f3f..39a887ab16476 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/utils.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_occlusion_spot_module/test/src/utils.hpp @@ -86,7 +86,7 @@ inline void generatePossibleCollisions( // intersection geometry_msgs::msg::Pose intersection_pose{}; intersection_pose.position.x = x0 + x_step * i + lon; - intersection_pose.position.x = y0 + y_step * i; + intersection_pose.position.y = y0 + y_step * i; // collision path point autoware_planning_msgs::msg::PathPoint collision_with_margin{}; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/README.md b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/README.md index f688318ed051e..041e0b86e0d06 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/README.md +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/README.md @@ -19,7 +19,7 @@ It loads modules as plugins. Please refer to the links listed below for detail o - [Occlusion Spot](../autoware_behavior_velocity_occlusion_spot_module/README.md) - [No Stopping Area](../autoware_behavior_velocity_no_stopping_area_module/README.md) - [Run Out](../autoware_behavior_velocity_run_out_module/README.md) -- [Speed Bump](../behavior_velocity_speed_bump_module/README.md) +- [Speed Bump](../autoware_behavior_velocity_speed_bump_module/README.md) When each module plans velocity, it considers based on `base_link`(center of rear-wheel axis) pose. So for example, in order to stop at a stop line with the vehicles' front on the stop line, it calculates `base_link` position from the distance between `base_link` to front and modifies path velocity from the `base_link` position. diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/package.xml b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/package.xml index 0c5088d7c4e1d..49946766ef55c 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/package.xml +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/package.xml @@ -35,6 +35,7 @@ rosidl_default_generators autoware_behavior_velocity_planner_common + autoware_lanelet2_extension autoware_map_msgs autoware_motion_utils autoware_perception_msgs @@ -45,7 +46,6 @@ diagnostic_msgs eigen geometry_msgs - lanelet2_extension libboost-dev pcl_conversions pluginlib @@ -66,20 +66,19 @@ ament_cmake_ros ament_lint_auto autoware_behavior_velocity_blind_spot_module - autoware_behavior_velocity_blind_spot_module autoware_behavior_velocity_crosswalk_module autoware_behavior_velocity_detection_area_module autoware_behavior_velocity_intersection_module + autoware_behavior_velocity_no_drivable_lane_module autoware_behavior_velocity_no_stopping_area_module autoware_behavior_velocity_occlusion_spot_module autoware_behavior_velocity_run_out_module + autoware_behavior_velocity_speed_bump_module autoware_behavior_velocity_stop_line_module autoware_behavior_velocity_traffic_light_module autoware_behavior_velocity_virtual_traffic_light_module autoware_behavior_velocity_walkway_module autoware_lint_common - behavior_velocity_no_drivable_lane_module - behavior_velocity_speed_bump_module rosidl_interface_packages diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.cpp index 4ca0736ce8d7c..704059a9d7ed0 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.cpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include @@ -130,9 +130,9 @@ BehaviorVelocityPlannerNode::BehaviorVelocityPlannerNode(const rclcpp::NodeOptio planner_manager_.launchScenePlugin(*this, name); } - logger_configure_ = std::make_unique(this); + logger_configure_ = std::make_unique(this); published_time_publisher_ = - std::make_unique(this); + std::make_unique(this); } void BehaviorVelocityPlannerNode::onLoadPlugin( @@ -194,7 +194,7 @@ void BehaviorVelocityPlannerNode::processNoGroundPointCloud( Eigen::Affine3f affine = tf2::transformToEigen(transform.transform).cast(); pcl::PointCloud::Ptr pc_transformed(new pcl::PointCloud); if (!pc.empty()) { - autoware_universe_utils::transformPointCloud(pc, *pc_transformed, affine); + autoware::universe_utils::transformPointCloud(pc, *pc_transformed, affine); } planner_data_.no_ground_pointcloud = pc_transformed; @@ -379,7 +379,7 @@ autoware_planning_msgs::msg::Path BehaviorVelocityPlannerNode::generatePath( autoware_planning_msgs::msg::Path output_path_msg; // TODO(someone): support backward path - const auto is_driving_forward = autoware_motion_utils::isDrivingForward(input_path_msg->points); + const auto is_driving_forward = autoware::motion_utils::isDrivingForward(input_path_msg->points); is_driving_forward_ = is_driving_forward ? is_driving_forward.value() : is_driving_forward_; if (!is_driving_forward_) { RCLCPP_WARN_THROTTLE( diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.hpp index 1db2766fdf686..fab047029e29c 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/src/node.hpp @@ -69,30 +69,30 @@ class BehaviorVelocityPlannerNode : public rclcpp::Node rclcpp::Subscription::SharedPtr sub_external_velocity_limit_; // polling subscribers - autoware_universe_utils::InterProcessPollingSubscriber< + autoware::universe_utils::InterProcessPollingSubscriber< autoware_perception_msgs::msg::PredictedObjects> sub_predicted_objects_{this, "~/input/dynamic_objects"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_no_ground_pointcloud_{ - this, "~/input/no_ground_pointcloud", autoware_universe_utils::SingleDepthSensorQoS()}; + this, "~/input/no_ground_pointcloud", autoware::universe_utils::SingleDepthSensorQoS()}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_vehicle_odometry_{this, "~/input/vehicle_odometry"}; - autoware_universe_utils::InterProcessPollingSubscriber< + autoware::universe_utils::InterProcessPollingSubscriber< geometry_msgs::msg::AccelWithCovarianceStamped> sub_acceleration_{this, "~/input/accel"}; - autoware_universe_utils::InterProcessPollingSubscriber< + autoware::universe_utils::InterProcessPollingSubscriber< autoware_perception_msgs::msg::TrafficLightGroupArray> sub_traffic_signals_{this, "~/input/traffic_signals"}; - autoware_universe_utils::InterProcessPollingSubscriber< + autoware::universe_utils::InterProcessPollingSubscriber< tier4_v2x_msgs::msg::VirtualTrafficLightStateArray> sub_virtual_traffic_light_states_{this, "~/input/virtual_traffic_light_states"}; - autoware_universe_utils::InterProcessPollingSubscriber + autoware::universe_utils::InterProcessPollingSubscriber sub_occupancy_grid_{this, "~/input/occupancy_grid"}; void onTrigger(const tier4_planning_msgs::msg::PathWithLaneId::ConstSharedPtr input_path_msg); @@ -143,9 +143,9 @@ class BehaviorVelocityPlannerNode : public rclcpp::Node const tier4_planning_msgs::msg::PathWithLaneId::ConstSharedPtr input_path_msg, const PlannerData & planner_data); - std::unique_ptr logger_configure_; + std::unique_ptr logger_configure_; - std::unique_ptr published_time_publisher_; + std::unique_ptr published_time_publisher_; static constexpr int logger_throttle_interval = 3000; }; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/test/src/test_node_interface.cpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/test/src/test_node_interface.cpp index a6cff987e30f0..3482d7be8ec48 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/test/src/test_node_interface.cpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner/test/src/test_node_interface.cpp @@ -55,12 +55,6 @@ std::shared_ptr generateNode() ament_index_cpp::get_package_share_directory("autoware_velocity_smoother"); // TODO(esteve): delete when all the modules are migrated to autoware_behavior_velocity_* - const auto get_behavior_velocity_module_config_no_prefix = [](const std::string & module) { - const auto package_name = "behavior_velocity_" + module + "_module"; - const auto package_path = ament_index_cpp::get_package_share_directory(package_name); - return package_path + "/config/" + module + ".param.yaml"; - }; - const auto get_behavior_velocity_module_config = [](const std::string & module) { const auto package_name = "autoware_behavior_velocity_" + module + "_module"; const auto package_path = ament_index_cpp::get_package_share_directory(package_name); @@ -103,11 +97,11 @@ std::shared_ptr generateNode() get_behavior_velocity_module_config("no_stopping_area"), get_behavior_velocity_module_config("occlusion_spot"), get_behavior_velocity_module_config("run_out"), - get_behavior_velocity_module_config_no_prefix("speed_bump"), + get_behavior_velocity_module_config("speed_bump"), get_behavior_velocity_module_config("stop_line"), get_behavior_velocity_module_config("traffic_light"), get_behavior_velocity_module_config("virtual_traffic_light"), - get_behavior_velocity_module_config_no_prefix("no_drivable_lane")}); + get_behavior_velocity_module_config("no_drivable_lane")}); // TODO(Takagi, Isamu): set launch_modules // TODO(Kyoichi Sugahara) set to true launch_virtual_traffic_light diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/scene_module_interface.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/scene_module_interface.hpp index e6300a2889a01..b09f00ce367dc 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/scene_module_interface.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/scene_module_interface.hpp @@ -48,13 +48,13 @@ namespace autoware::behavior_velocity_planner { +using autoware::motion_utils::PlanningBehavior; +using autoware::motion_utils::VelocityFactor; using autoware::objects_of_interest_marker_interface::ColorName; using autoware::objects_of_interest_marker_interface::ObjectsOfInterestMarkerInterface; using autoware::rtc_interface::RTCInterface; -using autoware_motion_utils::PlanningBehavior; -using autoware_motion_utils::VelocityFactor; -using autoware_universe_utils::DebugPublisher; -using autoware_universe_utils::getOrDeclareParameter; +using autoware::universe_utils::DebugPublisher; +using autoware::universe_utils::getOrDeclareParameter; using builtin_interfaces::msg::Time; using tier4_debug_msgs::msg::Float64Stamped; using tier4_planning_msgs::msg::PathWithLaneId; @@ -87,7 +87,7 @@ class SceneModuleInterface virtual bool modifyPathVelocity(PathWithLaneId * path, StopReason * stop_reason) = 0; virtual visualization_msgs::msg::MarkerArray createDebugMarkerArray() = 0; - virtual std::vector createVirtualWalls() = 0; + virtual std::vector createVirtualWalls() = 0; int64_t getModuleId() const { return module_id_; } void setPlannerData(const std::shared_ptr & planner_data) @@ -130,7 +130,7 @@ class SceneModuleInterface std::shared_ptr planner_data_; std::optional infrastructure_command_; std::optional first_stop_path_point_index_; - autoware_motion_utils::VelocityFactorInterface velocity_factor_; + autoware::motion_utils::VelocityFactorInterface velocity_factor_; std::vector objects_of_interest_; void setSafe(const bool safe) @@ -197,7 +197,7 @@ class SceneModuleManagerInterface std::set registered_module_id_set_; std::shared_ptr planner_data_; - autoware_motion_utils::VirtualWallMarkerCreator virtual_wall_marker_creator_; + autoware::motion_utils::VirtualWallMarkerCreator virtual_wall_marker_creator_; std::optional first_stop_path_point_index_; rclcpp::Node & node_; diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/arc_lane_util.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/arc_lane_util.hpp index 09a9125ef0eac..769932259e3e6 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/arc_lane_util.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/arc_lane_util.hpp @@ -31,7 +31,7 @@ namespace autoware::behavior_velocity_planner { namespace { -geometry_msgs::msg::Point convertToGeomPoint(const autoware_universe_utils::Point2d & p) +geometry_msgs::msg::Point convertToGeomPoint(const autoware::universe_utils::Point2d & p) { geometry_msgs::msg::Point geom_p; geom_p.x = p.x(); @@ -46,7 +46,7 @@ namespace arc_lane_utils { using PathIndexWithPose = std::pair; // front index, pose using PathIndexWithPoint2d = - std::pair; // front index, point2d + std::pair; // front index, point2d using PathIndexWithPoint = std::pair; // front index, point2d using PathIndexWithOffset = std::pair; // front index, offset @@ -61,24 +61,13 @@ std::optional checkCollision( template std::optional findCollisionSegment( const T & path, const geometry_msgs::msg::Point & stop_line_p1, - const geometry_msgs::msg::Point & stop_line_p2, const size_t target_lane_id) + const geometry_msgs::msg::Point & stop_line_p2) { for (size_t i = 0; i < path.points.size() - 1; ++i) { - const auto & prev_lane_ids = path.points.at(i).lane_ids; - const auto & next_lane_ids = path.points.at(i + 1).lane_ids; - - const bool is_target_lane_in_prev_lane = - std::find(prev_lane_ids.begin(), prev_lane_ids.end(), target_lane_id) != prev_lane_ids.end(); - const bool is_target_lane_in_next_lane = - std::find(next_lane_ids.begin(), next_lane_ids.end(), target_lane_id) != next_lane_ids.end(); - if (!is_target_lane_in_prev_lane && !is_target_lane_in_next_lane) { - continue; - } - const auto & p1 = - autoware_universe_utils::getPoint(path.points.at(i)); // Point before collision point + autoware::universe_utils::getPoint(path.points.at(i)); // Point before collision point const auto & p2 = - autoware_universe_utils::getPoint(path.points.at(i + 1)); // Point after collision point + autoware::universe_utils::getPoint(path.points.at(i + 1)); // Point after collision point const auto collision_point = checkCollision(p1, p2, stop_line_p1, stop_line_p2); @@ -92,12 +81,12 @@ std::optional findCollisionSegment( template std::optional findCollisionSegment( - const T & path, const LineString2d & stop_line, const size_t target_lane_id) + const T & path, const LineString2d & stop_line) { const auto stop_line_p1 = convertToGeomPoint(stop_line.at(0)); const auto stop_line_p2 = convertToGeomPoint(stop_line.at(1)); - return findCollisionSegment(path, stop_line_p1, stop_line_p2, target_lane_id); + return findCollisionSegment(path, stop_line_p1, stop_line_p2); } template @@ -106,7 +95,8 @@ std::optional findForwardOffsetSegment( { double sum_length = 0.0; for (size_t i = base_idx; i < path.points.size() - 1; ++i) { - sum_length += autoware_universe_utils::calcDistance2d(path.points.at(i), path.points.at(i + 1)); + sum_length += + autoware::universe_utils::calcDistance2d(path.points.at(i), path.points.at(i + 1)); // If it's over offset point, return front index and remain offset length if (sum_length >= offset_length) { @@ -125,7 +115,8 @@ std::optional findBackwardOffsetSegment( double sum_length = 0.0; const auto start = static_cast(base_idx) - 1; for (std::int32_t i = start; i >= 0; --i) { - sum_length += autoware_universe_utils::calcDistance2d(path.points.at(i), path.points.at(i + 1)); + sum_length += + autoware::universe_utils::calcDistance2d(path.points.at(i), path.points.at(i + 1)); // If it's over offset point, return front index and remain offset length if (sum_length >= offset_length) { @@ -149,13 +140,13 @@ std::optional findOffsetSegment( return findForwardOffsetSegment( path, collision_idx, offset_length + - autoware_universe_utils::calcDistance2d(path.points.at(collision_idx), collision_point)); + autoware::universe_utils::calcDistance2d(path.points.at(collision_idx), collision_point)); } return findBackwardOffsetSegment( path, collision_idx + 1, -offset_length + - autoware_universe_utils::calcDistance2d(path.points.at(collision_idx + 1), collision_point)); + autoware::universe_utils::calcDistance2d(path.points.at(collision_idx + 1), collision_point)); } std::optional findOffsetSegment( @@ -185,14 +176,14 @@ geometry_msgs::msg::Pose calcTargetPose(const T & path, const PathIndexWithOffse target_pose.position.x = target_point_2d.x(); target_pose.position.y = target_point_2d.y(); target_pose.position.z = interpolated_z; - const double yaw = autoware_universe_utils::calcAzimuthAngle(p_front, p_back); - target_pose.orientation = autoware_universe_utils::createQuaternionFromYaw(yaw); + const double yaw = autoware::universe_utils::calcAzimuthAngle(p_front, p_back); + target_pose.orientation = autoware::universe_utils::createQuaternionFromYaw(yaw); return target_pose; } std::optional createTargetPoint( const tier4_planning_msgs::msg::PathWithLaneId & path, const LineString2d & stop_line, - const size_t lane_id, const double margin, const double vehicle_offset); + const double margin, const double vehicle_offset); } // namespace arc_lane_utils } // namespace autoware::behavior_velocity_planner diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/boost_geometry_helper.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/boost_geometry_helper.hpp index 608d136a418bb..696d4a41b7673 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/boost_geometry_helper.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/boost_geometry_helper.hpp @@ -50,9 +50,9 @@ namespace autoware::behavior_velocity_planner { namespace bg = boost::geometry; -using Point2d = autoware_universe_utils::Point2d; -using LineString2d = autoware_universe_utils::LineString2d; -using Polygon2d = autoware_universe_utils::Polygon2d; +using Point2d = autoware::universe_utils::Point2d; +using LineString2d = autoware::universe_utils::LineString2d; +using Polygon2d = autoware::universe_utils::Polygon2d; template Point2d to_bg2d(const T & p) diff --git a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/util.hpp b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/util.hpp index 9dd3792e2799a..5f1c17ea1b815 100644 --- a/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/util.hpp +++ b/planning/behavior_velocity_planner/autoware_behavior_velocity_planner_common/include/autoware/behavior_velocity_planner_common/utilization/util.hpp @@ -57,9 +57,9 @@ struct TrafficSignalStamped }; using Pose = geometry_msgs::msg::Pose; -using Point2d = autoware_universe_utils::Point2d; -using LineString2d = autoware_universe_utils::LineString2d; -using Polygon2d = autoware_universe_utils::Polygon2d; +using Point2d = autoware::universe_utils::Point2d; +using LineString2d = autoware::universe_utils::LineString2d; +using Polygon2d = autoware::universe_utils::Polygon2d; using BasicPolygons2d = std::vector; using Polygons2d = std::vector; using autoware_perception_msgs::msg::PredictedObjects; @@ -228,17 +228,8 @@ std::set getAssociativeIntersectionLanelets( lanelet::ConstLanelet lane, const lanelet::LaneletMapPtr lanelet_map, const lanelet::routing::RoutingGraphPtr routing_graph); -template